如何使用python中的sklearn对带有分类数据的20多列进行编码

时间:2017-11-21 02:02:13

标签: python

我有一个包含20多列的数据集,每列都有分类数据。如何在python中使用sklearn编码那些。我尝试过LabelBinarizer,LabelEncoder,Onehotencoder但它不起作用。

其中一个错误:

ValueError:标签二值化不支持多输出目标数据

我正在使用kaggle数据集

datasets = pd.read_csv('mushrooms.csv')
x = datasets.iloc[:, 1:23].values
y = datasets.iloc[:,0].values

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)

from sklearn.preprocessing import LabelBinarizer
encoder = LabelBinarizer()
datasets_cat_hot = encoder.fit_transform(x_train)

1 个答案:

答案 0 :(得分:0)

LabelBinarizer以及LabelEncoder无法应用于numpy数组的多个列。但您可以使用apply数据框的pandas方法来完成这项工作。这是一个完整的解决方案:

import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

df = pd.read_csv('mushrooms.csv')
X_df = df.iloc[:, 1:]
y_df = df.iloc[:, 0]

X_df = X_df.apply(LabelEncoder().fit_transform)

X = OneHotEncoder(sparse=False).fit_transform(X_df.values)
y = LabelEncoder().fit_transform(y_df.values)