apache-spark - Spark 随机森林分类器 numClasses

标签 apache-spark

像这样训练一个 RandomForest (Spark 1.6.0)

val numClasses = 4 // 0-2
val categoricalFeaturesInfo = Map[Int, Int]()
val numTrees = 9
val featureSubsetStrategy = "auto" // Let the algorithm choose.
val impurity = "gini"
val maxDepth = 6
val maxBins = 32

val model = RandomForest.trainClassifier(trainRDD, numClasses, 
                                         categoricalFeaturesInfo, numTrees, 
                                         featureSubsetStrategy, impurity, 
                                         maxDepth, maxBins)

输入标签:

labels = labeledRDD.map(lambda lp: lp.label).distinct().collect()
for label in sorted(labels):
    print label

0.0
1.0
2.0

但输出只包含两个类:

metrics = MulticlassMetrics(labelsAndPredictions)
df_confusion = metrics.confusionMatrix()
display_cm(df_confusion)

输出:

83017.0  81.0    0.0
8703.0   2609.0  0.0
10232.0  255.0   0.0

当我在 pyspark 中加载相同模型并针对其他数据(上述部分)运行它时的输出

DenseMatrix([[  1.75280000e+04,   3.26000000e+02],
            [  3.00000000e+00,   1.27400000e+03]])

最佳答案

它变得更好了...我使用 pearson correlation 来找出哪些列没有任何相关性。删除十个最低相关列,现在我得到了好的结果:

enter image description here

Test Error = 0.0401823
precision = 0.959818
Recall = 0.959818

ConfusionMatrix([[ 17323.,      0.,    359.],
                 [     0.,   1430.,     92.],
                 [   208.,    170.,   1049.]])

enter image description here

关于apache-spark - Spark 随机森林分类器 numClasses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483140/

相关文章:

apache-spark - Pyspark 数据框中的重复行

python - PySpark 将 DataFrame 保存到实际的 JSON 文件

python - 在pyspark中将数据帧转换为字符串

scala - 如何将 StructType 从 Spark 中的 json 数据帧分解为行而不是列

java - 将类对象转换为 Java RDD

apache-spark - Spark AFTSurvivalRegression 参数

python - 我如何在飞艇中使用 pyspark?

java - Spark 历史日志手动解压

java - 在 ubuntu 上安装配置单元(derby 有问题?)

json - 解析json时由于输入结束而没有要映射的内容