如何编码20+;在python中使用sklearn使用分类数据的列
我有一个数据集,有20多列,每列都有分类数据。如何在python中使用sklearn对这些代码进行编码。我试过LabelBinarizer、LabelEncoder和Onehotencoder,但都不起作用 错误之一: ValueError:标签二值化不支持多输出目标数据 我使用的是kaggle数据集如何编码20+;在python中使用sklearn使用分类数据的列,python,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].v
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)
无法在
numpy
数组的多个列上应用LabelBinarizer
以及LabelEncoder
。但是,您可以使用pandas
数据帧的apply
方法来实现这一技巧。以下是一个完整的解决方案:
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)
同样的问题