[英]precision_recall_fscore_support return the same value precision recall
[英]how can i print precision, recall, fscore using python?
我想在 python 中使用 sklearn.metrics 計算和打印精度、召回率、fscore 和支持。 我是 doig NLP,所以我的 y_test 和 y_pred 基本上是向量化步驟之前的單詞。
下面是一些可以幫助您的信息:
y_test: [0 0 0 1 1 0 1 1 1 0]
y_pred [0.86 0.14 1. 0. 1. 0. 0.04 0.96 0.01 0.99 1. 0. 0.01 0.99
0.41 0.59 0.02 0.98 1. 0. ]
x_train 50
y_train 50
x_test 10
y_test 10
x_valid 6
y_valid 6
y_pred dimension: (20,)
y_test dimension: (10,)
完整的引用錯誤:
Traceback (most recent call last):
File "C:\Users\iduboc\Documents\asd-dev\train.py", line 324, in <module>
precision, recall, fscore, support = score(y_test, y_pred)
File "C:\Users\iduboc\Python1\envs\asd-v3-1\lib\site-packages\sklearn\metrics\classification.py", line 1415, in precision_recall_fscore_support
pos_label)
File "C:\Users\iduboc\Python1\envs\asd-v3-1\lib\site-packages\sklearn\metrics\classification.py", line 1239, in _check_set_wise_labels
y_type, y_true, y_pred = _check_targets(y_true, y_pred)
File "C:\Users\iduboc\Python1\envs\asd-v3-1\lib\site-packages\sklearn\metrics\classification.py", line 71, in _check_targets
check_consistent_length(y_true, y_pred)
File "C:\Users\iduboc\Python1\envs\asd-v3-1\lib\site-packages\sklearn\utils\validation.py", line 205, in check_consistent_length
" samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [10, 20]
我的代碼:
from sklearn.metrics import precision_recall_fscore_support as score
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))
我的代碼來預測值:
elif clf == 'rndforest':
# No validation data in rnd forest
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)
datetoday = datetime.today().strftime('%d-%b-%Y-%H_%M')
model_name_save = abspath(os.path.join("models", dataset, name_file + '-' +
vect + reduction + '-rndforest'\
+ datetoday + '.pickle'))
print("Model d'enregistrement : ", model_name_save)
x_test_vect = pipe_vect.transform(x_test)
y_pred = model.predict_proba(x_test_vect)
錯誤是由於預測向量和地面實況向量的大小不同造成的。 函數precision_recall_fscore_support
僅在這些大小相同時才有效。
查看文檔:
此外,上述函數期望接收非連續值,否則。 如果您將浮點數介於 0 和 1 之間的列表( y_pred
列表)作為參數傳遞,則會出現下一個錯誤:
ValueError: Classification metrics can't handle a mix of binary and continuous targets
產生錯誤的示例代碼是這樣的:
y_test = [0., 0., 0., 1., 1.]
y_pred = [0.86, 0.14, 1., 0., 1.]
from sklearn.metrics import precision_recall_fscore_support as score
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))
因此,如果您想計算這些指標,您必須以某種方式決定預測向量的哪些值為 1(正預測),哪些值為 0(負預測)。 例如,您可以使用一個閾值(例如 0.5)或多個閾值,然后選擇最佳閾值或繪制具有不同閾值級別(例如 0.1、0.2、0.3 等)的不同指標的曲線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.