Getting TypeError:稀疏矩阵长度不明确;在进行多类分类时,请使用getnnz()或shape[0]


from sklearn.naive_bayes import CategoricalNB
from sklearn.datasets import make_multilabel_classification
X, y = make_multilabel_classification(sparse = True, n_labels = 15,
return_indicator = 'sparse', allow_unlabeled = False)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

我尝试使用X.todense((,但仍然出现错误。

X_train = X_train.todense()
X_test = X_test.todense()

数据集上的训练

from skmultilearn.adapt import MLkNN
from sklearn.metrics import accuracy_score
classifier = MLkNN(k=20)
classifier.fit(X_train, y_train)

预测训练数据集的输出。

y_pred = classifier.predict(X_test)
accuracy_score(y_test,y_pred)
np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1)

您正试图从矩阵中获取长度,这是令人震惊的:

len(y_pred)

您的矩阵y_pred具有维度(25,5(,如y_pred.shape所示。

因此,您可以使用y_pred.shape[0]来代替len(y_pred),它将返回25。

但是当你使用y_pred.reshape(y_pred.shape[0],1)时,你会遇到一个问题

ValueError:无法将125大小的数组整形为(25,1(

(上一页:y_pred.reshape(len(y_pred),1)(

这个错误是有道理的,因为你试图将一个有125个值的矩阵重塑为一个只有25个值的阵列。你需要在这里重新思考你的代码。

相关内容

  • 没有找到相关文章

最新更新