Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sklearn对同一单元格中有多个类的列进行编码_Python_Pandas_Scikit Learn_One Hot Encoding - Fatal编程技术网

Python Sklearn对同一单元格中有多个类的列进行编码

Python Sklearn对同一单元格中有多个类的列进行编码,python,pandas,scikit-learn,one-hot-encoding,Python,Pandas,Scikit Learn,One Hot Encoding,假设我有以下数据帧: Column 0 A - B - C 1 A - B 2 A - C 3 A 4 B 5 C 我想对“列”进行编码,但我在同一个单元格中有多个类。使用pandas,我可以执行以下操作以获得正确的编码输出: df['Column'].str.get_dummies(sep='-') 如何使用Sklearn进行相同的转换?另一种方法是使用MultiLabelBinarizer类,因为它支持将it

假设我有以下数据帧:

   Column
0  A - B - C
1      A - B
2      A - C
3          A
4          B
5          C
我想对“列”进行编码,但我在同一个单元格中有多个类。使用pandas,我可以执行以下操作以获得正确的编码输出:

df['Column'].str.get_dummies(sep='-')


如何使用Sklearn进行相同的转换?

另一种方法是使用MultiLabelBinarizer类,因为它支持将iterable作为输入

df['Column'] = df['Column'].str.split(' - ')
enc = MultiLabelBinarizer()
enc.fit_transform(df['Column'])

另一种方法是使用MultiLabelBinarizer类,因为它支持iterable作为输入

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


看起来您可以使用
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'])


一个hot,顾名思义,意味着您只希望打开一个位,而其余的位为零。你的情况并不完全是这样(行可以在多个功能中占用空间)@ALollz:我理解,谢谢。你知道我还可以用什么方法来学习Sklearn来获得同样的结果吗?@ALollz:我找到了一种方法,用解决方案更新帖子。非常感谢。一个hot,顾名思义,意味着您只希望打开一个位,而其余的位为零。你的情况并不完全是这样(行可以在多个功能中占用空间)@ALollz:我理解,谢谢。你知道我还可以用什么方法来学习Sklearn来获得同样的结果吗?@ALollz:我找到了一种方法,用解决方案更新帖子。非常感谢。