2016-11-07 4 views
3

25 개의 열을 포함하는 CSV 파일이 있습니다. 일부는 숫자이고 일부는 범주 형이고 일부는 배우, 감독의 이름과 같습니다. 이 데이터에 회귀 모델을 사용하고 싶습니다. 이렇게하려면 scikit 패키지의 LabelBinarizer를 사용하여 범주형 열 문자열 유형을 숫자 값으로 변환해야합니다. 여러 범주 데이터가있는이 데이터 프레임에서 LabelBinarize를 어떻게 사용할 수 있습니까?데이터 프레임의 여러 열에 대한 LabelBinarizer

SampleData

는 기본적으로 내가 레이블을 치화하고 dataframe에 추가 할 수 있습니다.

아래의 코드에서 필자는 이진화하려는 열의 목록을 검색하여 df에 새 열을 다시 추가하는 방법을 알 수 없었습니다. 다음 단계에서

categorylist = ['color', 'language', 'country', 'content_rating'] 
for col in categorylist: 
    tempdf = label_binarizer.fit_transform(df[col]) 

는 I은 tempdf df 추가 원래 열 DF [COL]를 드롭 할.

+0

팬더 데이터 프레임에'df'가 삽입되어 있습니까? 'sklearn' 메쏘드의 출력 (코드에서'fit_transform'과 같은)이 numpy 배열임을 주목하십시오! 따라서 코드에서'tempdf'는'팬더'데이터 프레임이 아닙니다! 먼저 데이터 프레임 (예 :'newdf = pd.DataFrame (tempdf)')으로 변환 한 다음'df'에 연결해야합니다. 또한'del df [ 'column_name']'을 사용하여 열을 삭제할 수 있습니다. 마지막 코멘트는'LableBinarizer' 또는'MultiLabelBinarizer'가 필요한지 확인하는 것입니다. – MhFarahani

답변

3

당신은 pd.get_dummies으로 한 줄이 작업을 수행 할 수 있습니다

tempdf = pd.get_dummies(df, columns=categorylist) 

그렇지 않으면 당신은 sklearn pipeline - how to apply different transformations on different columns

편집에 대한 답변과 같이 FunctionTransformerFeatureUnion를 사용할 수 있습니다를 @dukebody 추가로 덧글에서 sklearn-pandas 패키지를 사용하면 각 데이터 프레임 열에 다른 변형을 적용 할 수 있습니다.

+1

sklearn-pandas 패키지를 사용하면 각 데이터 프레임 열에 다른 변형을 적용 할 수 있습니다. – dukebody

+0

@dukebody 이것은 매우 편리해 보입니다! – maxymoo