Я пытаюсь работать с набором титановых данных.Данные имеют категориальные значения, поэтому я использовал 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, надеюсь, я все делаю правильно.