python - 将 Pandas 系列转换为可迭代对象的可迭代对象

标签 python pandas scikit-learn

我正在尝试在 sklearn 中使用 MultiLabelBinarizer。我有一个 pandas 系列,我想将该系列作为 MultiLabelBinarizer 的拟合函数的输入。但是,我看到 MultiLabelBinarizer 的拟合需要形式为 iterable of iterables 的输入。我不确定如何将 pandas 系列转换为所需的类型。

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

data = pd.read_csv("somecsvFile")
y = pd.DataFrame(data['class'])

mlb = MultiLabelBinarizer()
y = mlb.fit(???)

我尝试将它转换为 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

最佳答案

如何解决 MultiLabelBinarizer 的拟合需要可迭代的可迭代形式的输入:

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

更新: as proposed by @unutbu you can use 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

关于python - 将 Pandas 系列转换为可迭代对象的可迭代对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289631/

相关文章:

python - 从 django 应用程序下载一个文本/csv 文件,该文件从数据库查询中填充 HTML 表

python - 在联邦学习中将数据拆分为训练和测试

scikit-learn - PyCaret:分类分数与标签不一致

python - 如何使用 GridSearchCV 输出进行 scikit 预测?

python - 合并2个数据框

python - 为什么不能 unpickled 这个 set 子类的实例?

python - Pandas:基于分钟的列,需要在每行添加 15 秒

python - 根据多个条件计算列

python - 两种不同的可视化结果

python - 使用 Pandas DataFrame 列的 Sklearn GridSearchCV