我使用Spark的MlLib中的Naive Bayes来训练模型并对数据进行测试(以RDD的形式)。结果令人困惑。
数据和结果如下:
问题是二元分类问题。 结果应该是带有' 0'的标签。或者' 1'。
带有' 0'的标签总数在测试数据集中 - 11774
带有' 1'的标签总数在测试数据集中 - 246
参考代码:
from pyspark.mllib.classification import LogisticRegressionWithLBFGS, LogisticRegressionModel
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.util import MLUtils
from pyspark.mllib.evaluation import MulticlassMetrics
def parsePoint(line):
values = [float(x) for x in line]
return LabeledPoint(values[-1], values[0:-1])
data = myRDD.map(parsePoint)
# Split data aproximately into training (60%) and test (40%)
training, test = data.randomSplit([0.6, 0.4], seed=0)
# Train a naive Bayes model.
model = LogisticRegressionWithLBFGS.train(training, 1.0)
#labelsAndPreds = test.map(lambda p: (p.label, model.predict(p.features)))
predictionAndLabels = test.map(lambda lp: (float(model.predict(lp.features)), lp.label))
accuracy =1.0 * predictionAndLabels.filter(lambda (v, p): v == p).count() / test.count()
accuracy
应用模型并获得预测后:
真实的积极因素 - 11774
误报 - 0
假阴性 - 246
真正的否定 - 0
我所有的' 0'标签正确分类和 而所有的' 1'标签错误分类!
现在,这是我项目的一部分,我不确定结果是否可以提交。
我使用Spark的Python API编写的代码执行此操作:它从文件中获取数据并构建RDD。我刚刚将这个RDD提供给网站上提供的Spark MlLib的Naive Bayes文档,结果如上所述。
有人可以告诉我这个结果是否正常吗?