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)