首页 文章

SciPy稀疏矩阵中的测试数据预测误差

提问于
浏览
0

我将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)

然后我使用 OneVsRestClassifierLinearSVC 来训练数据 .

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行,在predict = 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])文件“/usr/lib/pymodules/python2.7/sklearn/multiclass.py”,第40行,在_predict_binary中返回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]应为3421,而不是690 .

我不明白为什么当输入格式是稀疏矩阵时它会寻找更多功能?如何才能正确预测测试标签?

1 回答

  • 1

    我自己解决了这个问题 . 问题是使用SVMLIGHT / LIBSVM格式逐个加载数据集需要训练矩阵具有相同大小的特征集 . 所以有两种解决方法 . 一种是使用 load_svmlight_files 命令一次输入所有数据 .

    X,Y,X_,Y_ = load_svmlight_files("train-subset100.csv", "train-subset10.csv",... 
    
    multilabel = True, zero_based = False)
    

    其次,您可以明确提及功能的数量 .

    X,Y=load_svmlight_file("train-subset100.csv",multilabel=True, zero_based = False)
    X_,Y_ = load_svmlight_file("train-subset10.csv", n_features = X.shape[1],... 
    multilabel = True, zero_based = False, )
    

相关问题