2017-08-22 5 views
2

でなければなりませんが、ここで私はこれは問題がでエンコードされたダミー変数パンダ:例外:データは1次元

1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 4.400000000000000000e+01 7.200000000000000000e+04 
0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 2.700000000000000000e+01 4.800000000000000000e+04 
0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 3.000000000000000000e+01 5.400000000000000000e+04 
0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 3.800000000000000000e+01 6.100000000000000000e+04 
0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 4.000000000000000000e+01 6.377777777777778101e+04 
1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.500000000000000000e+01 5.800000000000000000e+04 
0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 3.877777777777777857e+01 5.200000000000000000e+04 
1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 4.800000000000000000e+01 7.900000000000000000e+04 
0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 5.000000000000000000e+01 8.300000000000000000e+04 
1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 3.700000000000000000e+01 6.700000000000000000e+04 

とXの行列であるチュートリアル

# Data Preprocessing 

# Importing the libraries 
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

# Importing the dataset 
dataset = pd.read_csv('Data.csv') 
X = dataset.iloc[:, :-1].values 
y = dataset.iloc[:, 3].values 

# Taking care of missing data 
from sklearn.preprocessing import Imputer 
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0) 
imputer = imputer.fit(X[:, 1:3]) 
X[:, 1:3] = imputer.transform(X[:, 1:3]) 

# Encoding categorical data 
# Encoding the Independent Variable 
from sklearn.preprocessing import LabelEncoder, OneHotEncoder 
labelencoder_X = LabelEncoder() 
X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) 
onehotencoder = OneHotEncoder(categorical_features = [0]) 
X = onehotencoder.fit_transform(X).toarray() 
# Encoding the Dependent Variable 
labelencoder_y = LabelEncoder() 
y = labelencoder_y.fit_transform(y) 

から得たものです列ラベルはありません。私は

something = pd.get_dummies(X) 

を試してみました。しかし、私は、彼らが実装MLアルゴリズムの背後にある数学を主としているよう

Exception: Data must be 1-dimensional 

答えて

3

ほとんどsklearn方法は、列名を気にしない、次の例外を取得します。あらかじめラベルのエンコーディングを把握できる場合は、の後にOneHotEncoderの出力に列名を戻すことができます。

まず、(私たちはLabelEncoderのために予約)最初のものを除く、元datasetからあなたの予測因子の列名をつかむ:

X_cols = dataset.columns[1:-1] 
X_cols 
# Index(['Age', 'Salary'], dtype='object') 

今すぐエンコードされたラベルの順序を取得します。

labels = labelencoder_X.fit(X[:, 0]).classes_ 
labels 
# ['France' 'Germany' 'Spain'] 

は、これらの列名を結合した後、あなたがDataFrameに変換するときXに追加します:

# X gets re-used, so make sure to define encoded_cols after this line 
X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) 
encoded_cols = np.append(labels, X_cols) 
# ... 
X = onehotencoder.fit_transform(X).toarray() 
encoded_df = pd.DataFrame(X, columns=encoded_cols) 

encoded_df 
    France Germany Spain  Age  Salary 
0  1.0  0.0 0.0 44.000000 72000.000000 
1  0.0  0.0 1.0 27.000000 48000.000000 
2  0.0  1.0 0.0 30.000000 54000.000000 
3  0.0  0.0 1.0 38.000000 61000.000000 
4  0.0  1.0 0.0 40.000000 63777.777778 
5  1.0  0.0 0.0 35.000000 58000.000000 
6  0.0  0.0 1.0 38.777778 52000.000000 
7  1.0  0.0 0.0 48.000000 79000.000000 
8  0.0  1.0 0.0 50.000000 83000.000000 
9  1.0  0.0 0.0 37.000000 67000.000000 

NB:LabelEncoder()はアルファベット順にその整数マッピングを整理するように、この特定のケースでは、それが見えます私はthis datasetを使用しているデータの例として、OPで使用されているものと非常に似ているか同一であるようです。出力がOPのXマトリックスとどのように一致するかに注意してください。

関連する問題