同一单元格上具有多个 类 的列的 Sklearn 编码
Sklearn encoding on columns with multiple classes on same cell
假设我有以下 DataFrame:
Column
0 A - B - C
1 A - B
2 A - C
3 A
4 B
5 C
我想对“列”进行编码,但我在同一个单元格中有多个 类。使用 pandas 我可以执行以下操作以获得正确的编码输出:
df['Column'].str.get_dummies(sep=' - ')
A B C
0 1 1 1
1 1 1 0
2 1 0 1
3 1 0 0
4 0 1 0
5 0 0 1
如何使用 Sklearn 进行相同的转换?
另一种方法是使用 MultiLabelBinarizer class,因为它支持将可迭代对象作为输入。
df['Column'] = df['Column'].str.split(' - ')
enc = MultiLabelBinarizer()
enc.fit_transform(df['Column'])
看起来你可以通过 CountVectorizer
指定你想要如何识别边界来做到这一点。
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
df = pd.DataFrame({'Column': ['A - B - C', 'A - B', 'A - C', 'A', 'B', 'C']})
vectorizer = CountVectorizer(analyzer=lambda x: x.split(' - '))
X = vectorizer.fit_transform(df['Column'])
X.toarray()
array([[1, 1, 1],
[1, 1, 0],
[1, 0, 1],
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
vectorizer.get_feature_names()
['A', 'B', 'C']
假设我有以下 DataFrame:
Column
0 A - B - C
1 A - B
2 A - C
3 A
4 B
5 C
我想对“列”进行编码,但我在同一个单元格中有多个 类。使用 pandas 我可以执行以下操作以获得正确的编码输出:
df['Column'].str.get_dummies(sep=' - ')
A B C
0 1 1 1
1 1 1 0
2 1 0 1
3 1 0 0
4 0 1 0
5 0 0 1
如何使用 Sklearn 进行相同的转换?
另一种方法是使用 MultiLabelBinarizer class,因为它支持将可迭代对象作为输入。
df['Column'] = df['Column'].str.split(' - ')
enc = MultiLabelBinarizer()
enc.fit_transform(df['Column'])
看起来你可以通过 CountVectorizer
指定你想要如何识别边界来做到这一点。
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
df = pd.DataFrame({'Column': ['A - B - C', 'A - B', 'A - C', 'A', 'B', 'C']})
vectorizer = CountVectorizer(analyzer=lambda x: x.split(' - '))
X = vectorizer.fit_transform(df['Column'])
X.toarray()
array([[1, 1, 1],
[1, 1, 0],
[1, 0, 1],
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
vectorizer.get_feature_names()
['A', 'B', 'C']