【发布时间】:2017-04-06 02:33:28
【问题描述】:
我正在使用 PySpark 生成和验证预测。我有一个包含正确列的数据框,我将它传递给 MulticlassMetrics 以获取混淆矩阵。但是当我检查混淆矩阵时,它缺少大部分值(数据框有超过 120.000 行,混淆矩阵只有 8 个左右的值)。为什么会丢失其余部分?
编辑:澄清一下,我不希望混淆矩阵与数据集具有相同的大小,我的数据中有两个类,并且我希望矩阵实例的总和与数字相同我的数据中的行数。问题是我的数据中有大约 120.000 行,混淆矩阵类似于[[ 0, 3 ],
[ 1, 0 ]]
代码:我不能在这里发布整个代码,但这是重要的部分
training_data = load_training_data() # Spark DataFrame
training_data, testing_data = training_data.randomSplit([0.7, 0.3])
asm = VectorAssembler(inputCols=selected_columns, outputCol='features')
final_training_data = asm.transform(training_data)
rf = RandomForestClassifier(labelCol="label", impurity="entropy")
rfModel = rf.fit(final_training_data)
test_predictions = rfModel.transform(testing_data)
predictionAndLabels = test_predictions.select(['prediction', 'label'])
tp = predictionAndLabels.rdd.map(tuple)
metrics = MulticlassMetrics(tp)
【问题讨论】:
-
我不确定我是否遵循。您是否希望您的混淆矩阵与您的数据集大小相同?
-
仅供参考,混淆矩阵将是一个方阵,其维度将等于数据中的类数。因此,如果您有 3 个类,则矩阵将为 3x3
-
我编辑了问题以澄清我的疑问
-
那么 120k 行是您的测试集吗?否则你是如何拆分数据的?
-
是的,我随机分配了 30% 用于测试,70% 用于训练。所以 120k 是测试集。
标签: python pyspark confusion-matrix