python - 在sklearn中运行10倍交叉验证后如何运行SVC分类器?

标签 python machine-learning svm cross-validation

我对机器学习比较陌生,希望在以下方面获得一些帮助:

我对数据运行了支持向量机分类器 (SVC),并进行了 10 倍交叉验证,并计算了准确度分数(约为 89%)。我正在使用 Python 和 scikit-learn 来执行该任务。这是一个代码片段:

def get_scores(features,target,classifier):
  X_train, X_test, y_train, y_test =train_test_split(features, target , 
    test_size=0.3)
    scores = cross_val_score(
    classifier,
    X_train,
    y_train,
    cv=10,
    scoring='accuracy',
    n_jobs=-1)
 return(scores)

get_scores(features_from_df,target_from_df,svm.SVC())

现在,我如何使用我的分类器(运行 10 倍 cv 后)在 X_test 上进行测试并将预测结果与 y_test 进行比较?您可能已经注意到,我在交叉验证过程中仅使用了 X_train 和 y_train。

我注意到 sklearn 有 cross_val_predict: http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html我应该用 cross_val_predict 替换 cross_val_score 吗?仅供引用:我的目标数据列已二值化(值为 0 和 1)。

如果我的方法是错误的,请告诉我最好的继续方法。

谢谢!

最佳答案

你只需要将 X 和 y 分开即可。不要分开训练和测试。

然后,您可以将案例 svm 中的分类器传递给 cross_val_score 函数,以获得每个实验的准确性。

只需 3 行代码:

clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, X, y, cv=10)
print scores

关于python - 在sklearn中运行10倍交叉验证后如何运行SVC分类器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663694/

相关文章:

machine-learning - 关于神经网络权重向量的一般查询

java - 如何用java构建贝叶斯信念网络?有图书馆吗? API?

c++ - 在 SVM opencv c++ 中标记数据

python - 如何通过复制值进行插值?

python - 对大素数求和需要时间!我怎样才能让它更有效率?

python - Pandas str.contains() 在某些情况下不起作用

python - 我如何计算输入字符串的平均长度

machine-learning - 神经网络,最小神经元数量

python - Libsvm:工具/easy.py

machine-learning - 如何在之前的模型的基础上继续训练SVM