def saveDetails(meta, predictions, importances, fold, featureByIndex=None, reclassify=False): if featureByIndex == None: featureByIndex = result.getFeaturesByIndex(meta) if predictions != None: for index in predictions: if fold == "hidden": example = result.getExampleFromSet(meta, index, "hidden") else: example = result.getExampleFromSet(meta, index, "train") if reclassify and ("classification" in example): del example["classification"] if "classification" in example: raise Exception("Example " + str(index) + " has already been classified " + str([fold, str(example)])) result.setValue(example, "prediction", predictions[index], "classification") result.setValue(example, "fold", fold, "classification") if importances != None: for i in range(len(importances)): if importances[i] != 0: feature = result.getFeature(meta, i, featureByIndex) if fold != "hidden": result.setValue(feature, fold, importances[i], "importances") #if "sort" not in feature: # result.setValue(feature, "sort", 0) else: result.setValue(feature, "hidden-importance", importances[i]) result.setValue(feature, "sort", importances[i])
def saveResults(meta, resultPath, perfs, selected): if not os.path.exists(os.path.dirname(resultPath)): os.makedirs(os.path.dirname(resultPath)) meta = result.getMeta(meta) featureByIndex = result.getFeaturesByIndex(meta) for foldIndex in range(len(selected)): ranks = selected[foldIndex] for featureRank in range(len(ranks)): featureIndex = ranks[featureRank] feature = result.getFeature(meta, featureIndex, featureByIndex) result.setValue(feature, foldIndex, featureRank, "ranks") result.setValue(feature, "sort", -sum(feature["ranks"].values()) / len(feature["ranks"])) result.saveMeta(meta, resultPath)