예제 #1
0
def createLeaveOneOutJobs(
    srcRoot,
    jobDir,
    jobNameFmt,
    finalJobName,
    outputDir,
    numObservations,
    dataLoader,
    lambdas,
    shouldRegBias,
    matlabDeclarations,
):

    jobNamePart = jobNameFmt.format("NA", "NA")

    foldIndices = range(1, numObservations + 1)

    if matlabDeclarations is None:
        matlabDeclarations = list()

    logRegRoot = os.path.join(srcRoot, "shared", "logisticRegression")
    addpathFmt = "addpath(genpath('{0}'));"

    matlabDeclarations.append(addpathFmt.format(logRegRoot))

    if shouldRegBias:
        shouldRegBiasStr = "true"
    else:
        shouldRegBiasStr = "false"

    cvFuncFmt = "LogRegSingleLambdaSingleFoldCVFromLoader({0}, {1}, {2}, {3}, {4})".format(
        dataLoader, "{0}", numObservations, "{1}", shouldRegBiasStr
    )

    looJobDictionary = QSubHelpers.createGridJobs(
        jobDir, outputDir, jobNameFmt, cvFuncFmt, matlabDeclarations, [lambdas, foldIndices], 50
    )

    mergeJobDictionary = QSubHelpers.createMergeAllJobOutputsJob(
        jobDir, outputDir, outputDir, jobNameFmt, "loo_mrg_" + jobNamePart, [lambdas, foldIndices]
    )

    finalizeFunc = "LogRegChooseLambdaAndTrainAll({0}, {1}, '{2}')".format(
        dataLoader, shouldRegBiasStr, os.path.join(outputDir, "output_loo_mrg_" + jobNamePart + ".mat")
    )

    finalizeJobDictionary = QSubHelpers.createGridJobs(
        jobDir, outputDir, finalJobName, finalizeFunc, matlabDeclarations, ()
    )

    finalJobManifestName = "looLogRegFinalJobManifest_" + jobNamePart + ".txt"
    return [looJobDictionary, mergeJobDictionary, finalizeJobDictionary]
예제 #2
0
def writeDataSizes(srcRoot, jobDir, outputDir, jobNameSuffixFmt, dataLoaderFmt, matlabDeclarations, parameters):

    if matlabDeclarations is None:
        matlabDeclarations = list()

    logRegRoot = os.path.join(srcRoot, "shared", "logisticRegression")
    addpathFmt = "addpath(genpath('{0}'));"

    matlabDeclarations.append(addpathFmt.format(logRegRoot))

    jobNameFmt = "plllogreg_getsz_" + jobNameSuffixFmt

    writeSizeFuncFmt = "WriteSize( {0}, '{1}' );".format(
        dataLoaderFmt, os.path.join(outputDir, "output_" + jobNameFmt + ".txt")
    )

    writeDataSizeJobDict = QSubHelpers.createGridJobs(
        jobDir, outputDir, jobNameFmt, writeSizeFuncFmt, matlabDeclarations, parameters
    )

    QSubHelpers.runScripts(jobDir, outputDir, writeDataSizeJobDict, 100, None, None)

    return os.path.join(outputDir, "output_" + jobNameFmt + ".txt")