@Override RandomForestModelInfo getModelInfo(final RandomForestRegressionModel sparkRfModel, final DataFrame df) { final RandomForestModelInfo modelInfo = new RandomForestModelInfo(); modelInfo.setNumFeatures(sparkRfModel.numFeatures()); modelInfo.setRegression(true); //true for regression final List<Double> treeWeights = new ArrayList<Double>(); for (double w : sparkRfModel.treeWeights()) { treeWeights.add(w); } modelInfo.setTreeWeights(treeWeights); final List<DecisionTreeModelInfo> decisionTrees = new ArrayList<>(); for (DecisionTreeModel decisionTreeModel : sparkRfModel.trees()) { decisionTrees.add(DECISION_TREE_ADAPTER.getModelInfo((DecisionTreeRegressionModel) decisionTreeModel, df)); } modelInfo.setTrees(decisionTrees); final Set<String> inputKeys = new LinkedHashSet<String>(); inputKeys.add(sparkRfModel.getFeaturesCol()); inputKeys.add(sparkRfModel.getLabelCol()); modelInfo.setInputKeys(inputKeys); final Set<String> outputKeys = new LinkedHashSet<String>(); outputKeys.add(sparkRfModel.getPredictionCol()); modelInfo.setOutputKeys(outputKeys); return modelInfo; } }
model.transform(dataFrame); model.totalNumNodes(); model.toDebugString(); model.trees(); model.treeWeights(); Vector importances = model.featureImportances();
model.transform(dataFrame); model.totalNumNodes(); model.toDebugString(); model.trees(); model.treeWeights(); Vector importances = model.featureImportances();
model.transform(dataFrame); model.totalNumNodes(); model.toDebugString(); model.trees(); model.treeWeights(); Vector importances = model.featureImportances();