2017-12-09 4 views
2

인 Kaggle (https://www.kaggle.com/c/titanic/data)의 Titanic 데이터 세트를 가지고 놀고 있었고 sklearn.preprocessing의 LabelEncoder를 사용하여 원래 'male'또는 'female'이라는 라벨이 붙은 Sex를 ' 0 '또는'1 '. 나는LabelEncoder.fit_transform()이 (가)

import pandas as pd 
from sklearn.preprocessing import LabelEncoder 
df = pd.read_csv('titanic.csv') 
df['Sex'] = LabelEncoder.fit_transform(df['Sex']) 

코드 다음 네 줄을했다하지만 난 그것을 실행했을 때 나는 다음과 같은 오류 메시지를 수신 : 오류, 즉 라인 4에서 온다

TypeError: fit_transform() missing 1 required positional argument: 'y' 

,

df['Sex'] = LabelEncoder.fit_transform(df['Sex']) 

나는 무엇이 잘못되었는지 궁금합니다. 지도를 사용하여 변환 작업을 수행 할 수 있다는 것도 알고 있지만,이 작업은 훨씬 간단 할 수도 있지만 LabelEncoder를 어떻게 사용하는지에 대해 알고 싶습니다.

답변

2

link to sklearn을 사용해보세요. LabelEncoder는 유틸리티 클래스이며, LabelEncoder()와 객체 생성 할 필요가 예와

le = LabelEncoder() 
df['Sex'] = le.fit_transform(df['Sex']) 

테스트 :

# create test series 
gender = pd.Series(['male', 'female', 'male']) 

le = LabelEncoder() 
transformed_val = le.fit_transform(gender) 

# checking result after using label encoder 
print(transformed_val) 

결과 :

[1 0 1] 
+1

문제가 무엇인지 확인합니다. le = LabelEncoder()를 설정 한 후 LabelEncoder(). fit_transform (df [ 'Sex']) 또는 le.fit_transform (df [ 'Sex'])을 사용해야합니다. 내 코드에서 LabelEncoder 다음에()가 누락되었습니다. 그 점을 지적 해 주셔서 감사합니다! –

+0

좋아요! '해피 코딩 '. – 0p3n5ourcE

0

당신은 초기화 ()를 놓치고 a LabelEncoder 인스턴스.

이 작동합니다 : LabelEncoder().fit_transform(df['Sex'])

이 0p3n5ourcE의 예는보다 전통적인, 또한 깨끗한 방법으로 개체를 처리 할 수있다,라고 말했다 가졌어요.

+0

예, 이제 문제가 발생했습니다. 고맙습니다! –