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个值的阵列。你需要在这里重新思考你的代码。