2017-01-18 5 views
0

私はSVCのフィットを行う場合を除き、私は次のコードでエラーが発生します。なぜKクロスの検証が最初に適合する必要があるのですか?

このSVCインスタンスがまだ取り付けられていません。このメソッドを使用する前に、適切な 引数で 'fit'を呼び出します。

私はこれを行う場合を除き:

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) 

答えて

0

あなたはしません。あなたのcross_val_scoreはフィットなしでうまく動作します。

スコアを実行する前に適合する必要があります。あなたはそれが実際にの分類を行う方法をを知る前(clf.score方法で)その分類の精度を計算するために、あなたの推定(clf)を求めているので、

0

あなたがそのエラーを見ている理由があります。 clf分類を行う方法を教えるには、fitメソッドを呼び出すことによってそれを訓練する必要があります。これは、エラーメッセージがあなたに伝えようとしているものです。

scoreは、上記の意味では、交差検証とは関係がなく、正確さのみです。 cross_val_scoreヘルパーメソッドを使用すると、トレーニングを受けていないエスカレータを使用して、データのクロスバリデートスコアを計算できます。このヘルパーはあなたのために見積もりを訓練します。そのため、このヘルパーを使用する前にfitに電話する必要はありません。

詳細については、documentation for cross-validationを参照してください。

関連する問題