Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编码20+;在python中使用sklearn使用分类数据的列_Python - Fatal编程技术网

如何编码20+;在python中使用sklearn使用分类数据的列

如何编码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

我有一个数据集,有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)

无法在
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)
同样的问题