【问题标题】:Why K-Cross validation need to fit first?为什么需要先拟合 K-Cross 验证?
【发布时间】:2017-03-10 22:51:01
【问题描述】:

除非我适合 SVC,否则我会在以下代码中收到错误:

此 SVC 实例尚未安装。用适当的方式调用“适合” 使用此方法之前的参数。

除非我这样做:

 clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)

为什么我需要在进行交叉验证之前进行拟合?

import numpy as np
from sklearn import cross_validation
from sklearn import datasets
from sklearn import svm

iris = datasets.load_iris()

# Split the iris data into train/test data sets with 40% reserved for testing
X_train, X_test, y_train, y_test = cross_validation.train_test_split(iris.data, iris.target,
                                                                     test_size=0.4, random_state=0)

# Build an SVC model for predicting iris classifications using training data
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)

# Now measure its performance with the test data
clf.score(X_test, y_test)   

# We give cross_val_score a model, the entire data set and its "real" values, and the number of folds:
scores = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)

【问题讨论】:

    标签: python scikit-learn cross-validation


    【解决方案1】:

    你没有。您的 cross_val_score 在不合适的情况下运行良好。

    跑分前你确实需要适合。

    【讨论】:

      【解决方案2】:

      您看到该错误的原因是您要求估算器 (clf) 在它真正知道如何做分类。要教 clf 如何进行分类,您必须通过调用 fit 方法对其进行训练。这就是错误消息试图告诉您的内容。

      score 在上述意义上与交叉验证无关,只与准确性有关。您使用的cross_val_score 辅助方法可以采用未经训练的估计器并为您的数据计算交叉验证的分数。此助手为您训练估算器,这就是您在使用此助手之前不必致电fit 的原因。

      请参阅documentation for cross-validation 了解更多信息。

      【讨论】:

        猜你喜欢
        • 2020-05-05
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 2011-11-20
        • 2018-11-28
        • 2020-10-11
        • 2013-12-24
        • 2017-02-02
        相关资源
        最近更新 更多