【问题标题】:How to encode 20+ columns with categorical data using sklearn in python如何在 python 中使用 sklearn 用分类数据对 20 多列进行编码
【发布时间】:2017-11-21 11:37:31
【问题描述】:

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

【问题讨论】:

标签: python


【解决方案1】:

LabelBinarizerLabelEncoder 无法应用于 numpy 数组的多个列。但是您可以使用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)

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 2018-06-14
    • 2020-09-05
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2022-01-20
    • 2016-05-09
    相关资源
    最近更新 更多