Sklearn,使用稀疏矩阵的样本数量不一致

时间:2017-04-24 18:06:32

标签: python numpy scipy scikit-learn sparse-matrix

我正在使用sklearn SVC实现多类SVM。

我的模型应该有多个输出,所以我在我的标签上使用One-Hot-Enconding(MultiLabelBinarizer)。

mlb = MultiLabelBinarizer(classes=classes, sparse_output=True)
y_train = mlb.transform(y_train)
mlb.fit(y_train)

这给了我一个每个样本的标签向量,y_train是一个形状的csr_matrix(n_samples,n_classes)(18171,17)。

我的训练集的形状为csc_matrix形状(n_samples,n_feature)(18171,1001)。

m_o_SVC = MultiOutputClassifier(SVC(C=0.1, kernel='linear', probability=True), n_jobs=-1)
m_o_SVC.fit(X_train, y_train)

这会训练几个分类器,每个分类器都有一片标签。

但是我得到了这个警告:

"DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel()."

这个错误:

"Found input variables with inconsistent numbers of samples: [18171, 1]"

如果我没有为标签使用稀疏矩阵,一切正常,但我不确定使用密集标签表示是否会导致算法使用密集矩阵(性能下降)。

另外,由于形状一致,我不明白这个问题。

这是sklearn的问题吗?

0 个答案:

没有答案