我有一个包含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)
答案 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)