May*_*ain 4 python pandas scikit-learn
我想MultiLabelBinarizer在sklearn中使用.我有一个熊猫系列,我想把这个系列作为MultiLabelBinarizer适合函数的输入.但是,我发现MultiLabelBinarizer适合需要输入表单iterable of iterables.我不知道如何将熊猫系列转换为所需类型.
import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer
data = pd.read_csv("somecsvFile")
y = pd.DataFrame(data['class'])
mlb = MultiLabelBinarizer()
y = mlb.fit(???)
Run Code Online (Sandbox Code Playgroud)
我尝试将它转换为numpy数组,尝试使用pandas的iter功能,但似乎没有任何工作.
请给我一些建议.
谢谢
Edit1:输出print(data['class'].head(10))是:
0 func
1 func
2 func
3 non func
4 func
5 func
6 non func
7 non func
8 non func
9 func
Name: status_group, dtype: object
Run Code Online (Sandbox Code Playgroud)
如何解决以下事实MultiLabelBinarizer's fit needs an input of form iterable of iterables:
In [8]: df
Out[8]:
class
0 func
1 func
2 func
3 non func
4 func
5 func
6 non func
7 non func
8 non func
9 func
In [10]: import pandas as pd
...: from sklearn.preprocessing import MultiLabelBinarizer
In [11]: y = df['class'].str.split(expand=False) # <--- NOTE !!!
In [12]: mlb = MultiLabelBinarizer()
...: y = mlb.fit_transform(y)
...:
In [13]: y
Out[13]:
array([[1, 0],
[1, 0],
[1, 0],
[1, 1],
[1, 0],
[1, 0],
[1, 1],
[1, 1],
[1, 1],
[1, 0]])
Run Code Online (Sandbox Code Playgroud)
更新: 由@unutbu提议,您可以使用pd.get_dummies()
In [21]: pd.get_dummies(df['class'])
Out[21]:
func non func
0 1 0
1 1 0
2 1 0
3 0 1
4 1 0
5 1 0
6 0 1
7 0 1
8 0 1
9 1 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
806 次 |
| 最近记录: |