#pandas #machine-learning #scikit-learn #typeerror #multiclass-classification
#pandas #машинное обучение #scikit-learn #ошибка типа #мультикласс-классификация
Вопрос:
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)
Ответ №1:
Вы пытаетесь получить длину из матрицы, которая неоднозначна:
len(y_pred)
Ваша матрица y_pred имеет размерность (25,5), как показано на y_pred.shape
.
Таким образом, вместо len(y_pred)
вы могли бы использовать y_pred.shape[0]
, который вернул бы 25.
Но тогда вы столкнетесь с проблемой при использовании y_pred.reshape(y_pred.shape[0],1)
Ошибка значения: не удается преобразовать массив размером 125 в форму (25, 1)
(ранее: y_pred.reshape(len(y_pred),1)
)
Эта ошибка имеет смысл, потому что вы пытаетесь преобразовать матрицу со 125 значениями в матрицу всего с 25 значениями. Здесь вам нужно переосмыслить свой код.