ValueError: pos_label=1 is not a valid label: array(['neg', 'pos'], dtype='<U3')
ValueError: pos_label=1 is not a valid label: array(['neg', 'pos'], dtype='<U3')
我在尝试获取召回分数时收到此错误。
X_test = test_pos_vec + test_neg_vec
Y_test = ["pos"] * len(test_pos_vec) + ["neg"] * len(test_neg_vec)
recall_average = recall_score(Y_test, y_predict, average="binary")
print(recall_average)
这会给我:
C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py:1030: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
if pos_label not in present_labels:
Traceback (most recent call last):
File "G:/PyCharmProjects/NB/accuracy/script.py", line 812, in <module>
main()
File "G:/PyCharmProjects/NB/accuracy/script.py", line 91, in main
evaluate_model(model, train_pos_vec, train_neg_vec, test_pos_vec, test_neg_vec, False)
File "G:/PyCharmProjects/NB/accuracy/script.py", line 648, in evaluate_model
recall_average = recall_score(Y_test, y_predict, average="binary")
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1359, in recall_score
sample_weight=sample_weight)
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1036, in precision_recall_fscore_support
(pos_label, present_labels))
ValueError: pos_label=1 is not a valid label: array(['neg', 'pos'],
dtype='<U3')
我尝试以这种方式在 1 中转换 'pos' 并在 0 中转换 'neg':
for i in range(len(Y_test)):
if 'neg' in Y_test[i]:
Y_test[i] = 0
else:
Y_test[i] = 1
但这给了我另一个错误:
C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py:181: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
score = y_true == y_pred
Traceback (most recent call last):
File "G:/PyCharmProjects/NB/accuracy/script.py", line 812, in <module>
main()
File "G:/PyCharmProjects/NB/accuracy/script.py", line 91, in main
evaluate_model(model, train_pos_vec, train_neg_vec, test_pos_vec, test_neg_vec, False)
File "G:/PyCharmProjects/NB/accuracy/script.py", line 648, in evaluate_model
recall_average = recall_score(Y_test, y_predict, average="binary")
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1359, in recall_score
sample_weight=sample_weight)
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1026, in precision_recall_fscore_support
present_labels = unique_labels(y_true, y_pred)
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\multiclass.py", line 103, in unique_labels
raise ValueError("Mix of label input types (string and number)")
ValueError: Mix of label input types (string and number)
我想做的是获取指标:准确性、精确度、召回率,f_measure。使用 average='weighted'
,我得到相同的结果:accuracy=recall。我猜这是不正确的,所以我更改了 average='binary'
,但我有这些错误。有什么想法吗?
recall_average = recall_score(Y_test, y_predict, average="binary", pos_label="neg")
将 "neg"
或 "pos"
用作 pos_label
,此错误将不会再次出现。
用(pos_label=pos)
表明你的积极class
所以使用:
Recall=recall_score(Y_test, Y_predict, pos_label='pos')
当您遇到此错误时,这意味着您的 target
变量的值不是 recall_score()
的预期值,对于正例 [=40],默认情况下为 1 =] 和 0 用于否定案例 [这也适用于 precision_score()
]
根据您提到的错误:
pos_label=1 is not a valid label: array(['neg', 'pos']
很明显,您的积极情景的价值是 pos
而不是 1
和消极的 neg
而不是 0
。
那么你有两种选择来解决这个不匹配问题:
- 更改
recall_score()
中的默认值以考虑 pos
出现时的积极情况:
recall_average = recall_score(Y_test, y_predict, average="binary", pos_label='pos')
- 将数据集中目标变量的值更改为
1
或 0
Y_test = Y_test.map({'pos': 1, 'neg': 0}).astype(int)
recall_average = recall_score(Y_test, y_predict, pos_label="no")
pos_label 的数组只有 ["yes","no"]
我在尝试获取召回分数时收到此错误。
X_test = test_pos_vec + test_neg_vec
Y_test = ["pos"] * len(test_pos_vec) + ["neg"] * len(test_neg_vec)
recall_average = recall_score(Y_test, y_predict, average="binary")
print(recall_average)
这会给我:
C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py:1030: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
if pos_label not in present_labels:
Traceback (most recent call last):
File "G:/PyCharmProjects/NB/accuracy/script.py", line 812, in <module>
main()
File "G:/PyCharmProjects/NB/accuracy/script.py", line 91, in main
evaluate_model(model, train_pos_vec, train_neg_vec, test_pos_vec, test_neg_vec, False)
File "G:/PyCharmProjects/NB/accuracy/script.py", line 648, in evaluate_model
recall_average = recall_score(Y_test, y_predict, average="binary")
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1359, in recall_score
sample_weight=sample_weight)
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1036, in precision_recall_fscore_support
(pos_label, present_labels))
ValueError: pos_label=1 is not a valid label: array(['neg', 'pos'],
dtype='<U3')
我尝试以这种方式在 1 中转换 'pos' 并在 0 中转换 'neg':
for i in range(len(Y_test)):
if 'neg' in Y_test[i]:
Y_test[i] = 0
else:
Y_test[i] = 1
但这给了我另一个错误:
C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py:181: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
score = y_true == y_pred
Traceback (most recent call last):
File "G:/PyCharmProjects/NB/accuracy/script.py", line 812, in <module>
main()
File "G:/PyCharmProjects/NB/accuracy/script.py", line 91, in main
evaluate_model(model, train_pos_vec, train_neg_vec, test_pos_vec, test_neg_vec, False)
File "G:/PyCharmProjects/NB/accuracy/script.py", line 648, in evaluate_model
recall_average = recall_score(Y_test, y_predict, average="binary")
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1359, in recall_score
sample_weight=sample_weight)
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\metrics\classification.py", line 1026, in precision_recall_fscore_support
present_labels = unique_labels(y_true, y_pred)
File "C:\Users\anca_elena.moisa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\multiclass.py", line 103, in unique_labels
raise ValueError("Mix of label input types (string and number)")
ValueError: Mix of label input types (string and number)
我想做的是获取指标:准确性、精确度、召回率,f_measure。使用 average='weighted'
,我得到相同的结果:accuracy=recall。我猜这是不正确的,所以我更改了 average='binary'
,但我有这些错误。有什么想法吗?
recall_average = recall_score(Y_test, y_predict, average="binary", pos_label="neg")
将 "neg"
或 "pos"
用作 pos_label
,此错误将不会再次出现。
用(pos_label=pos)
所以使用:
Recall=recall_score(Y_test, Y_predict, pos_label='pos')
当您遇到此错误时,这意味着您的 target
变量的值不是 recall_score()
的预期值,对于正例 [=40],默认情况下为 1 =] 和 0 用于否定案例 [这也适用于 precision_score()
]
根据您提到的错误:
pos_label=1 is not a valid label: array(['neg', 'pos']
很明显,您的积极情景的价值是 pos
而不是 1
和消极的 neg
而不是 0
。
那么你有两种选择来解决这个不匹配问题:
- 更改
recall_score()
中的默认值以考虑pos
出现时的积极情况:
recall_average = recall_score(Y_test, y_predict, average="binary", pos_label='pos')
- 将数据集中目标变量的值更改为
1
或0
Y_test = Y_test.map({'pos': 1, 'neg': 0}).astype(int)
recall_average = recall_score(Y_test, y_predict, pos_label="no")
pos_label 的数组只有 ["yes","no"]