分类数据Onehot编码

2024-03-29 05:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一大串弦。每个字符串是训练数据集中的不同示例,包含一个类别列表,其中每个类别用逗号分隔。例如

mesh = ['aligator, dog, cat', 'cat, mouse, aligator', '']

有些示例可能不属于任何类别,因此将用空字符串表示。在

我希望使用一个热编码来编码这些类别,以便在机器学习中使用。在

我该怎么做?我没有一个完整的类别列表,大约有5000个可能的类别。在


Tags: 数据字符串机器示例编码列表类别cat
2条回答

对于机器学习,有许多不同的编码分类变量的方法,我们在scikit learn contrib包中实现了其中的一些(包括一个Hot):category_encoders:

https://github.com/scikit-learn-contrib/categorical-encoding

如果您已经在使用scikit learn和/或pandas,这可能是一个简单的解决方案。像你提到的高维性,以及你不一定事先知道所有类别的情况下,使用HashingEncoder这样的东西可能会有更好的运气。在

演示:

In [64]: from sklearn.feature_extraction.text import CountVectorizer

In [65]: cv = CountVectorizer()

In [66]: X = cv.fit_transform(mesh)

In [67]: X.A
Out[67]:
array([[1, 1, 1, 0],
       [1, 1, 0, 1]], dtype=int64)

列名:

^{pr2}$

我们可以用熊猫。Sparsetalaframe公司名称:

In [135]: import pandas as pd

In [136]: pd.SparseDataFrame(X, columns=cv.get_feature_names(), default_fill_value=0)
Out[136]:
   aligator  cat  dog  mouse
0         1    1    1      0
1         1    1    0      1

相关问题 更多 >