Python ValueError:pos#u label=1不是有效的标签:数组([';neg';,';pos';],dtype=';lt;U3';)
我在尝试获取回忆分数时收到此错误Python ValueError:pos#u label=1不是有效的标签:数组([';neg';,';pos';],dtype=';lt;U3';),python,machine-learning,precision,precision-recall,Python,Machine Learning,Precision,Precision Recall,我在尝试获取回忆分数时收到此错误 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\A
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')
但这给了我另一个错误:
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)
C:\Users\anca\u elena.moisa\AppData\Local\Programs\Python\Python36\lib\site packages\sklearn\metrics\classification.py:181:FutureWarning:elementwise比较失败;而是返回标量,但将来将执行元素级比较
分数=y_真==y_预测
回溯(最近一次呼叫最后一次):
文件“G:/PyCharmProjects/NB/accurity/script.py”,第812行,在
main()
文件“G:/PyCharmProjects/NB/accurity/script.py”,第91行,主目录
评估模型(模型、训练正向量、训练负向量、测试正向量、测试负向量、假)
文件“G:/PyCharmProjects/NB/accurity/script.py”,第648行,在评估模型中
回忆平均值=回忆得分(Y_测试,Y_预测,平均值=“二进制”)
文件“C:\Users\anca\u elena.moisa\AppData\Local\Programs\Python\36\lib\site packages\sklearn\metrics\classification.py”,第1359行,在召回评分中
样品重量=样品重量)
文件“C:\Users\anca\u elena.moisa\AppData\Local\Programs\Python\36\lib\site packages\sklearn\metrics\classification.py”,第1026行,在precision\u recall\u fscore\u支持中
当前标签=唯一标签(y_true,y_pred)
文件“C:\Users\anca\u elena.moisa\AppData\Local\Programs\Python\Python36\lib\site packages\sklearn\utils\multiclass.py”,第103行,使用唯一标签
raise VALUERROR(“标签输入类型(字符串和数字)的混合)”
ValueError:标签输入类型(字符串和数字)的混合
我想做的是获得指标:准确度、精密度、召回率、f_度量。使用average='weighted'
,我得到了相同的结果:准确率=召回率。我想这是不正确的,所以我更改了average='binary'
,但是我有这些错误。有什么想法吗
recall_average = recall_score(Y_test, y_predict, average="binary", pos_label="neg")
使用
“neg”
或“pos”
作为pos\u标签
,此错误将不会再次出现。用(pos\u标签=pos)指示您的积极等级
因此,请使用:
Recall=recall_score(Y_test, Y_predict, pos_label='pos')
当您遇到此错误时,这意味着您的
目标变量的值不是召回分数()
的预期值,默认情况下,正面情况下为1,负面情况下为0。[这也适用于精度分数()
]
根据您提到的错误:
pos_label=1 is not a valid label: array(['neg', 'pos']
很明显,积极情景的值是pos
而不是1
,消极情景的值是neg
而不是0
然后,您必须选择以下选项来修复此不匹配:
在 RealLySCORE()/CUT>中更改值默认值,以考虑“<代码> POS < /代码>出现时的积极场景:
- 将数据集中目标变量的值更改为
1
或0
你能发布你的recall\u average
方法吗?recall\u average
只是一个变量名称。对不起,我发布此方法时,将变量recall\u average
重命名为recall
。现在我编辑了这篇文章。它们来自python import和sklearn。metrics import roc\u曲线、auc、f1\u分数、召回分数、精度分数
@MihaiAlexandru Ionut召回分数()
是来自sklearn
的函数。由于OP正在进行二进制分类,只需在调用recall\u score()中设置pos\u label='neg'
。由于召回率和精度有两个分数i)关于-ve值ii)关于+ve值,因此您需要在pos_标签中传递其中一个值,以便函数可以返回该pos标签的分数。此注释确实增加了答案有效的原因。我现在得到了这个错误ValueError:pos_label='neg'是无效的标签:数组(['0','1',dtype=”它不应该是“pos_label='pos'”,在“pos”周围有连字符吗?@Moritz是的!发现得很好
pos_label=1 is not a valid label: array(['neg', 'pos']
recall_average = recall_score(Y_test, y_predict, average="binary", pos_label='pos')
Y_test = Y_test.map({'pos': 1, 'neg': 0}).astype(int)