【发布时间】:2017-05-06 08:03:03
【问题描述】:
我对使用 Spark 2.0.0 进行二进制分类训练的 SVM 模型有疑问。 我使用 scikit-learn 和 MLlib 遵循相同的逻辑,使用完全相同的数据集。 对于 scikit 学习,我有以下代码:
svc_model = SVC()
svc_model.fit(X_train, y_train)
print "supposed to be 1"
print svc_model.predict([15 ,15,0,15,15,4,12,8,0,7])
print svc_model.predict([15.0,15.0,15.0,7.0,7.0,15.0,15.0,0.0,12.0,15.0])
print svc_model.predict([15.0,15.0,7.0,0.0,7.0,0.0,15.0,15.0,15.0,15.0])
print svc_model.predict([7.0,0.0,15.0,15.0,15.0,15.0,7.0,7.0,15.0,15.0])
print "supposed to be 0"
print svc_model.predict([18.0, 15.0, 7.0, 7.0, 15.0, 0.0, 15.0, 15.0, 15.0, 15.0])
print svc_model.predict([ 11.0,13.0,7.0,10.0,7.0,13.0,7.0,19.0,7.0,7.0])
print svc_model.predict([ 15.0, 15.0, 18.0, 7.0, 15.0, 15.0, 15.0, 18.0, 7.0, 15.0])
print svc_model.predict([ 15.0, 15.0, 8.0, 0.0, 0.0, 8.0, 15.0, 15.0, 15.0, 7.0])
然后它返回:
supposed to be 1
[0]
[1]
[1]
[1]
supposed to be 0
[0]
[0]
[0]
[0]
火花正在做:
model_svm = SVMWithSGD.train(trainingData, iterations=100)
print "supposed to be 1"
print model_svm.predict(Vectors.dense(15.0,15.0,0.0,15.0,15.0,4.0,12.0,8.0,0.0,7.0))
print model_svm.predict(Vectors.dense(15.0,15.0,15.0,7.0,7.0,15.0,15.0,0.0,12.0,15.0))
print model_svm.predict(Vectors.dense(15.0,15.0,7.0,0.0,7.0,0.0,15.0,15.0,15.0,15.0))
print model_svm.predict(Vectors.dense(7.0,0.0,15.0,15.0,15.0,15.0,7.0,7.0,15.0,15.0))
print "supposed to be 0"
print model_svm.predict(Vectors.dense(18.0, 15.0, 7.0, 7.0, 15.0, 0.0, 15.0, 15.0, 15.0, 15.0))
print model_svm.predict(Vectors.dense(11.0,13.0,7.0,10.0,7.0,13.0,7.0,19.0,7.0,7.0))
print model_svm.predict(Vectors.dense(15.0, 15.0, 18.0, 7.0, 15.0, 15.0, 15.0, 18.0, 7.0, 15.0))
print model_svm.predict(Vectors.dense(15.0, 15.0, 8.0, 0.0, 0.0, 8.0, 15.0, 15.0, 15.0, 7.0))
返回:
supposed to be 1
1
1
1
1
supposed to be 0
1
1
1
1
试图保持我的正负类平衡我的测试数据包含 3521 条记录和我的训练数据 8356 条记录。对于评估,在 scikit-learn 模型上应用的交叉验证给出了 98% 的准确率,对于 spark,ROC 下的面积为 0.5,PR 下的面积为 0.74, 0.47 训练误差。
我也尝试清除阈值并将其设置回 0.5,但这并没有返回任何更好的结果。有时,当我更改训练测试拆分时,我可能会得到,即除了一个正确的预测之外的所有零或除了一个正确的零预测之外的所有零。 有谁知道如何解决这个问题?
正如我所说,我已多次检查我的数据集在两种情况下完全相同。
【问题讨论】:
标签: python apache-spark scikit-learn apache-spark-mllib prediction