Как определить oneHotEncoder для титанового набора данных - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь работать с набором титановых данных.Данные имеют категориальные значения, поэтому я использовал labelEncoder, чтобы изменить данные на числа, а не на текст.До:

     PassengerId  Survived  Pclass     Sex    Age  SibSp  Parch      Fare Embarked
0              1         0       3    male  22.00      1      0    7.2500        S
1              2         1       1  female  38.00      1      0   71.2833        C
2              3         1       3  female  26.00      0      0    7.9250        S

После:

     PassengerId  Survived  Pclass  Sex    Age  SibSp  Parch      Fare  Embarked
0              1         0       3    1  22.00      1      0    7.2500         2
1              2         1       1    0  38.00      1      0   71.2833         0
2              3         1       3    0  26.00      0      0    7.9250         2

Это код:

from sklearn.preprocessing import LabelEncoder

labelencoder_X = LabelEncoder()    
data['Embarked'] = labelencoder_X.fit_transform(data['Embarked'])
data['Sex'] = labelencoder_X.fit_transform(data['Sex'])

Теперь, поскольку пол пассажира имеет то же значение,Я хочу использовать oneHotEncoder.Как я понимаю, данные должны выглядеть следующим образом:

     PassengerId  Survived  Pclass  Male Female    Age  SibSp  Parch      Fare  Embarked
0              1         0       3    1     0     22.00  1      0    7.2500         2
1              2         1       1    0     1     38.00  1      0   71.2833         0
2              3         1       3    0     1     26.00  0      0    7.9250         2  

Как я могу написать код для этого?Я пытался работать с подобным методом для oneHotEncoder:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

labelencoder_X = LabelEncoder()    
data['Embarked'] = labelencoder_X.fit_transform(data['Embarked'])
data['Sex'] = labelencoder_X.fit_transform(data['Sex'])

onehotencoder = OneHotEncoder()
data['Embarked'] = onehotencoder.fit_transform(data['Embarked'].values.reshape(-1,1))

Но он просто возвращает тот же результат.Как я могу это исправить?Я новичок в Scikit и ML, надеюсь, я все делаю правильно.

1 Ответ

1 голос
/ 30 мая 2019

Вот как вы можете это сделать.

import pandas as pd
from sklearn.preprocessing import OneHotEncoder

# Sample data
   Sex
0    1
1    0
2    0
3    1

# OneHotEncoder
result = OneHotEncoder().fit_transform(df['Sex'].reshape(-1, 1)).toarray()

# Appending columns
df[['Female', 'Male']] = pd.DataFrame(result, index = df.index)

# Resulting dataframe
df
   Sex  Female  Male
0    1     0.0   1.0
1    0     1.0   0.0
2    0     1.0   0.0
3    1     0.0   1.0
...