2017-11-21 1 views
0

カテゴリデータを持つ20個以上の列のデータセットがあります。 Pythonでsklearnを使用しているものをどのようにエンコードしますか?私はLabelBinarizer、LabelEncoder、Onehotencoderを試しましたが、動作しません。エラーのpythonでsklearnを使用して20個以上の列をカテゴリデータでエンコードする方法

ワン:

と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

同じ質問ここhttps://stackoverflow.com/questions/24458645/label-encoding-across-multiple-columns-in-scikit-learn – sera

答えて

0

LabelBinarizerだけでなく、LabelEncoderを使用しています配列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) 
関連する問題