Мультиклассовая классификация cross_val_score для точности и отзыва дает мне тот же результат - PullRequest
0 голосов
/ 09 ноября 2018

В моих Y значениях у меня есть 4 классы.Итак, ясно, что это проблема мультиклассовой классификации.

Я использую MultinomialNB в качестве модели.И я делаю 10-кратную перекрестную проверку, но я получаю одинаковое значение для Precision, Recall и F1.

Вот мой код:

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.naive_bayes import MultinomialNB
from sklearn.multiclass import OneVsRestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import LabelEncoder

scaler = MinMaxScaler()
X_train, X_test, y_train, y_test = train_test_split(yelp_joined_data, Y_label_encoded)


X_train=scaler.fit_transform(X_train)
X_test = scaler.fit_transform(X_test)

# fix random seed
seed = 7
numpy.random.seed(seed)

kfold = KFold(n_splits=10, shuffle=True, random_state=seed)

clf = OneVsRestClassifier(MultinomialNB(alpha=0.01))

prec_res_test=cross_val_score(clf, X_train, y_train.values.ravel(), cv=kfold, n_jobs=1,scoring='precision_micro')
prec_res_test.mean() ## value coming as 0.5090949570838452

recall_res_test=cross_val_score(clf, X_train, y_train.values.ravel(), cv=kfold, n_jobs=1,scoring='recall_micro')
recall_res_test.mean() # value coming as 0.5090949570838452

rf1_res_test=cross_val_score(clf, X_train, y_train.values.ravel(), cv=kfold, n_jobs=1,scoring='f1_micro')
rf1_res_test.mean() # value coming as 0.5090949570838452

Я не могу использовать обычную точностьздесь как scoring параметр, так как это мультиклассовая проблема.

Может кто-нибудь помочь мне, где я делаю неправильно?

...