Я написал функцию, которая запускает модель множественной классификации и обеспечивает оценку Жакара и потери Хэмминга. Код выглядит следующим образом -
def avg_jacard(y_true,y_pred):
jacard = np.minimum(y_true,y_pred).sum(axis=1) / np.maximum(y_true,y_pred).sum(axis=1)
return jacard.mean()*100
def print_score(y_pred, clf):
print("Clf: ", clf.__class__.__name__)
print("Jacard score: {}".format(avg_jacard(y_test, y_pred)))
print("Hamming loss: {}".format(hamming_loss(y_pred, y_test)*100))
print("---")
dummy = DummyClassifier()
sgd = linear_model.SGDClassifier()
lr = LogisticRegression()
mn = MultinomialNB()
svc = LinearSVC()
perceptron = Perceptron()
pac = PassiveAggressiveClassifier()
mlpc = MLPClassifier()
rfc = RandomForestClassifier()
for classifier in [dummy, sgd, lr, mn, svc, perceptron, pac,mlpc,rfc]:
clf = OneVsRestClassifier(classifier)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print_score(y_pred, classifier)
Я получаю следующую ошибку при вызове функции
Файл "C: \ Users \ lalitha.sundar \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pandas \ core \ generi c .py ", строка 361, в _get_axis_number .format (ось, тип (cls)))
ValueError: Нет оси с именем 1 для тип объекта