В моих 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
параметр, так как это мультиклассовая проблема.
Может кто-нибудь помочь мне, где я делаю неправильно?