我对机器学习比较陌生,希望在以下方面提供一些帮助:
我在我的数据上运行支持向量机分类器(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)。
如果我的方法有误,请告诉我最好的方法。
谢谢!
答案 0 :(得分:3)
您只需要拆分X和y。不要拆分火车并进行测试。
然后,您可以将案例svm中的分类器传递给698
函数,以获取每个实验的准确性。
仅3行代码:
cross_val_score
答案 1 :(得分:0)
你快到了:
# Build your classifier
classifier = svm.SVC()
# Train it on the entire training data set
classifier.fit(X_train, y_train)
# Get predictions on the test set
y_pred = classifier.predict(X_test)
此时,您可以使用sklearn.metrics
模块中的任何指标来确定您的效果。例如:
from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, y_pred))