我将这样的 LIBSVM 格式的数据输入到 SciPy 稀疏矩阵中。训练集是多标签和多类的,如我问的这个问题中所述: Understanding format of data in scikit-learn
from sklearn.datasets import load_svmlight_file
X,Y = load_svmlight_file("train-subset100.csv.csv", multilabel = True, zero_based = True)
然后我使用OneVsRestClassifier
withLinearSVC
来训练数据。
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 行,在预测中
返回 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])
_predict_binary 中的文件“/usr/lib/pymodules/python2.7/sklearn/multiclass.py”,第 40 行
返回 np.ravel(estimator.decision_function(X))
文件“/usr/lib/pymodules/python2.7/sklearn/svm/base.py”,第 728 行,在决策函数中
self._check_n_features(X)
_check_n_features 中的文件“/usr/lib/pymodules/python2.7/sklearn/svm/base.py”,第 748 行
X.shape[1]))
ValueError: X.shape[1] 应该是 3421,而不是 690。
我不明白为什么当输入格式是稀疏矩阵时它会寻找更多特征?我怎样才能让它正确预测测试标签?