Я хочу вычислить и напечатать многие метрики (вспомните, f-оценка, точность), используя sickit learn в python. Я делаю nlp, в основном y_pred и y_test - это список слов, я векторизую их с помощью pipe_vect.transform
и использую sklearn.metrics для печати метрик.
Мой код:
from sklearn.metrics import precision_recall_fscore_support as score
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.15, random_state=42)
x_train, x_valid, y_train, y_valid = train_test_split(x_train,y_train, test_size=0.1, random_state=42)
x_train = np.array(x_train)
y_train = np.array(y_train)
x_valid = np.array(x_valid)
y_valid = np.array(y_valid)
y_test = np.array(y_test)
x_test = np.array(x_test)
x_train = np.concatenate((x_train, x_valid))
y_train = np.concatenate((y_train, y_valid))
model = RandomForestClassifier(n_estimators=int(clf_params['n_estimators']),
max_features=clf_params['max_features'])
model.fit(pipe_vect.transform(x_train), y_train)
x_test_vect = pipe_vect.transform(x_test)
y_pred = model.predict_proba(x_test_vect)
#y_pred.shape # (417,1)
y_pred = y_pred.flatten()
y_pred.shape # (417,)
print('y_pred', y_pred)
print('y_pred dimension: ', y_pred.shape) #y_pred dimension: (417,)
print('y_test dimension: ', y_test.shape) #y_test dimension: (417,)
precision, recall, fscore, support = score(y_test, y_pred)
print('precision: {}'.format(precision))
print('recall: {}'.format(recall))
print('fscore: {}'.format(fscore))
print('support: {}'.format(support))
печать:
y_pred dimension: (417,)
y_test dimension: (417,)
precision: [0. 0.]
recall: [0. 0.]
fscore: [0. 0.]
support: [ 0. 417.]
Я не понимаю, почему мои отпечатки равны 0.