このようなLIBSVM形式のデータをSciPy疎行列に入力します。私が尋ねたこの質問で説明されているように、トレーニングセットはマルチラベルおよびマルチクラスです: scikit-learnでのデータの形式を理解する
from sklearn.datasets import load_svmlight_file
X,Y = load_svmlight_file("train-subset100.csv.csv", multilabel = True, zero_based = True)
次に with を使用OneVsRestClassifier
しLinearSVC
てデータをトレーニングします。
clf = OneVsRestClassifier(LinearSVC())
clf.fit(X, Y)
データをテストしたいときは、次のようにします。
X_, Y_ = load_svmlight_file("train-subset10.csv", multilabel = True, zero_based = False)
predicted = clf.predict(X_)
ここでエラーが発生します。トレースバックをそのままここにダンプします。
トレースバック (最新の呼び出しが最後):
ファイル「test.py」の 36 行目
予測 = clf.predict(X_)
ファイル「/usr/lib/pymodules/python2.7/sklearn/multiclass.py」、151行目、予測
return predict_ovr(self.estimators_, self.label_binarizer_, X)
ファイル "/usr/lib/pymodules/python2.7/sklearn/multiclass.py"、67 行目、predict_ovr 内
Y = np.array([_predict_binary(e, X) for e in estimators])
ファイル「/usr/lib/pymodules/python2.7/sklearn/multiclass.py」、40行目、_predict_binary
return np.ravel(estimator.decision_function(X))
ファイル "/usr/lib/pymodules/python2.7/sklearn/svm/base.py"、728 行目、decision_function 内
self._check_n_features(X)
ファイル "/usr/lib/pymodules/python2.7/sklearn/svm/base.py"、748 行目、_check_n_features 内
X.shape[1]))
ValueError: X.shape[1] は 690 ではなく 3421 である必要があります。
入力形式が疎行列の場合に、なぜより多くの機能を探しているのかわかりません。テストラベルを正しく予測するにはどうすればよいですか?