scikit-learn中的多标签编码

3

我试图对我的DataFrame的目标列进行编码。该列包含的变量类型为object。

我有一个包含所有代码 - icd10DataFrame。使用这些代码,我试图将我的infoDF DataFrame的标签二元化。

我的代码如下:

from sklearn import preprocessing

lb = preprocessing.LabelBinarizer()
#fit all the possible label codes
lb.fit(icd10['ICD10'])
temp = lb.transform(infoDF['Target'])
for i,x in enumerate(lb.classes_):
    infoDF[x] = temp[ : , i]

当我运行它时,出现以下回溯信息:
  File "<ipython-input-42-2b1db450b16e>", line 3, in <module>
    lb.fit(icd10['ICD10'])

  File "C:\Users\as\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\preprocessing\label.py", line 413, in fit
    self.classes_ = unique_labels(y)

  File "C:\Users\as\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\utils\multiclass.py", line 96, in unique_labels
    raise ValueError("Unknown label type: %s" % repr(ys))

ValueError: Unknown label type: (0              1
1              2
2              3
3              4
4              5
5              6
6              7
7              8
8              9
9             10
10            11
11            12
12            13
13            14
14            15
15            16
16            17
17            18
18            19
19            20
20            21
21            22
22           A00
23          A000
24          A001
25          A009
26       A00–A09
27           A01
28          A010
29          A011

19433       Z960
19434       Z961
19435       Z962
19436       Z963
19437       Z964
19438       Z965
19439       Z966
19440       Z967
19441       Z968
19442       Z969
19443        Z97
19444       Z970
19445       Z971
19446       Z972
19447       Z973
19448       Z974
19449       Z975
19450       Z978
19451        Z98
19452       Z980
19453       Z981
19454       Z982
19455       Z988
19456        Z99
19457       Z990
19458       Z991
19459       Z992
19460       Z993
19461       Z998
19462       Z999
Name: ICD10, Length: 19463, dtype: object,)

我不确定我做错了什么...

1个回答

4
尽管我们没有您的数据集的确切格式,但看起来最初的整数是问题的原因。
sklearn的LabelBinarizer调用sklearn.utils.multiclass.unique_labels,根据文档,它不允许“字符串和整数标签的混合”。
尝试删除前21行,看看错误是否仍然存在。
import pandas as pd
from sklearn import preprocessing

lb = preprocessing.LabelBinarizer()

icd11 = pd.DataFrame({'ICD11': [0, '6C51', '6C50.Z']})

# crashes
lb.fit(icd11['ICD11'])

# does not crash
lb.fit(icd11['ICD11'][1:])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接