2017-02-01 3 views
1

13 개의 열을 포함하는 데이터 프레임이 있습니다. 13 개의 열에는 문자열이 있습니다. 한 문자열 열은Scikitlearn randomforest 분류기에서 이름 열을 처리하는 방법. python 3

pd.get_dummies()

2 열을 사용하여 I 1과 0으로 변환 간단한 남성과 여성 모두

from sklearn.feature_extraction.text import CountVectorizer

없음 문제 사용하여 너무 쉽게 배열로 변환 문자열의 세 가지 유형이 포함입니다. 문제는 세 번째이고 마지막 열에 많은 수의 이름이 포함되어 있습니다. Countvectorizer를 사용하여 변환하려고하면 이름을 읽을 수없는 긴 문자열로 변환합니다.

df['name']=Countvectorizer.fit_transform(df.name)

나는이 경우에 유래 페이지에서 다른 예와 같이이 dataframe 다시 변환하려고하면 나는이

245376 (0, 14297)\t1\n (1, 5843)\t1\n (1, 13365)... 245377 (0, 14297)\t1\n (1, 5843)\t1\n (1, 13365)...

이름 얻을 : supplier_name, DTYPE : 객체

를이 다음 코드 결과 메모리 오류

df['name'] =pd.DataFrame(CV.fit_transform(df.name).toarray(),columns=CV.get_feature_names())

나는이 문제점을 또한 보았다. 질문 : 위에서 언급 한 것을 제외하고는이 이름 열을 숫자 형식으로 사용하는 것이 가장 좋습니다. 또는 데이터를 완벽하게 맞추기 위해이를 개선하는 방법에 대한 다른 아이디어 랜덤 포리스트 분류 자 ​​. 마찬가지로 Dataframe은 큰 숫자로 끝나며 123790 행을 포함합니다. 사전에 도움이나 제안을 해주셔서 감사합니다.

+0

어떤 유형의 문제를 해결하고 있습니까 (분류, 회귀, 기타 ...)? 먼저 모델에서'name' 기능을 원한다면 해석해야합니다. 몇 가지 견본과 당신이 그들과 함께하고 싶은 것을 보여주십시오. –

+0

scikitlearn random forest를 사용하여 간단한 예측 모델을 만들고 싶습니다. 그것의 실제로 분류 문제. 13 열 마지막 열에는 ID가 있습니다. 12 개의 열을 기반으로 모델을 학습 한 후 ID를 예측하려고합니다. 이 이름 열은 null이 아닙니다. 그것은 가장 중요한 칼럼입니다. 나는 그것을 제거 할 수 없습니다. –

+0

각 행의 고유 한 이름입니까? 그렇지 않은 경우 작은 세트에서 가져온 것이므로 하나의 핫 인코딩을 수행 할 수 있습니다. –

답변

0

우물 이름은 독창적 인 것으로, 별도의 목록에 원본을 저장 한 후 sklearn.preprocessing.LabelEncoder이라는 ID 종류를 사용합니다. 이름을 일련 번호로 자동 변환합니다.

또한 고유 한 것이라면 예측 중에 이름을 제거해야합니다.