首页 文章

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

提问于
浏览
-1

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

我在我的数据上运行支持向量机分类器(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吗?只是FYI:我的目标数据列是二值化的(值为0和1) .

如果我的方法有误,请告诉我最好的方法 .

谢谢!

2 回答

  • 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))
    
  • 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
    

相关问题