Пример #1
0
GBMRESULT CLaplace::InitF
(
    double *adY,
    double *adMisc,
    double *adOffset,
    double *adWeight,
    double &dInitF,
    unsigned long cLength
)
{
    GBMRESULT hr = GBM_OK;

    double dOffset = 0.0;
    unsigned long ii = 0;
    int nLength = int(cLength);

    std::vector<double> adArr(cLength);

    for (ii = 0; ii < cLength; ii++)
    {
        dOffset = (adOffset==NULL) ? 0.0 : adOffset[ii];
        adArr[ii] = adY[ii] - dOffset;
    }

    dInitF = mpLocM.weightedQuantile(nLength, &adArr[0], adWeight, 0.5); // median

Cleanup:
    return hr;
Error:
    goto Cleanup;
}
Пример #2
0
GBMRESULT CTDist::InitF
(
    double *adY,
    double *adMisc,
    double *adOffset,
    double *adWeight,
    double &dInitF,
    unsigned long cLength
)
{

	// Local variables
	int ii;

	// Get objects to pass into the LocM function
	int iN = int(cLength);
	std::vector<double> adArr(cLength);

	for (ii = 0; ii < iN; ii++)
	{
		double dOffset = (adOffset==NULL) ? 0.0 : adOffset[ii];
		adArr[ii] = adY[ii] - dOffset;
	}

	dInitF = mpLocM.LocationM(iN, &adArr[0], adWeight);


    return GBM_OK;
}
Пример #3
0
// DEBUG: needs weighted median
GBMRESULT CLaplace::FitBestConstant
(
    double *adY,
    double *adMisc,
    double *adOffset,
    double *adW,
    double *adF,
    double *adZ,
    const std::vector<unsigned long>& aiNodeAssign,
    unsigned long nTrain,
    VEC_P_NODETERMINAL vecpTermNodes,
    unsigned long cTermNodes,
    unsigned long cMinObsInNode,
    bool *afInBag,
    double *adFadj,
    int cIdxOff
)
{
    GBMRESULT hr = GBM_OK;

    unsigned long iNode = 0;
    unsigned long iObs = 0;
    unsigned long iVecd = 0;
    double dOffset;

//    vecd.resize(nTrain); // should already be this size from InitF

    std::vector<double> adArr(nTrain);
    std::vector<double> adW2(nTrain);

    for(iNode=0; iNode<cTermNodes; iNode++)
    {
        if(vecpTermNodes[iNode]->cN >= cMinObsInNode)
        {
            iVecd = 0;
            for(iObs=0; iObs<nTrain; iObs++)
            {
                if(afInBag[iObs] && (aiNodeAssign[iObs] == iNode))
                {
                    dOffset = (adOffset==NULL) ? 0.0 : adOffset[iObs];
                    adArr[iVecd] = adY[iObs] - dOffset - adF[iObs];
                    adW2[iVecd] = adW[iObs];
                    iVecd++;
                }


            }

            vecpTermNodes[iNode]->dPrediction = mpLocM.weightedQuantile(iVecd, &adArr[0], &adW2[0], 0.5); // median

        }
    }

    return hr;
}