python - scikit-learn 中的多标签编码

标签 python scikit-learn

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

我有一个包含所有代码的 DataFrame - icd10。使用这些,我试图将我的 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,)

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

最佳答案

虽然我们没有您的数据集的确切格式,但看起来问题是由初始整数引起的。

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:])

关于python - scikit-learn 中的多标签编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56773250/

相关文章:

machine-learning - 在sklearn中,具有线性内核的SVM模型和具有loss=hinge的SGD分类器之间有什么区别

python - 为什么在 C 和 Python 中使用 OpenSSL API 时会得到不同的签名?

python - 如何跳过 Airflow 运算符(operator)中的任务?

python - 失败循环 : asking the user if they wish to continue (Python)

python - 使用多处理过滤 Pandas 中的大型数据框

python - 如何使用 scikit learn/pandas/python 打印任意一个集群的样本/观察结果/行?

python-3.x - 如何知道哪些特征对预测目标类别影响更大?

python - 如何在复合实体中使用从其他实体产生的字典?

python - 使用 MinMaxScaler 转换测试集时会发生什么

python - 如何获取 pandas 数据框,其中列是另一个列数据框的后续 n 元素?