2017-12-12 8 views
0

선형 회귀에 대한 가격 데이터를 준비 중입니다. 내 기능은 요일로만 구성됩니다. 내 목표는 가격이다. 나는 예를 들어 sklearn 4.2.1의 예와 같이 내 데이터의 사전 목록을 만들었습니다. 그래서 데이터 구조는 [{'day': 'friday', 'price': 59}, {'day': 'saturday', 'price': 65}입니다.Sklearn을 사용하여 요일에 더미 변수 만들기 DictVectorizer

위의 링크마다 sklearn의 DictVectorizer를 사용하여 요일을 더미 코드로 만들고 데이터 구조를 sklearn LinearRegression에 적합한 목록 목록으로 변환했습니다.

vec = DictVectorizer() 
vec_fit = vec.fit_transform(my_data).toarray() 

데이터를보기 위해 vec_fit를 인쇄하면 아래 출력이 표시됩니다.

[[ 0. 0. 0. ..., 0. 1. 59.] 
[ 0. 0. 0. ..., 0. 0. 92.] 
[ 1. 0. 0. ..., 0. 0. 92.] 
..., 
[ 0. 0. 1. ..., 0. 0. 181.] 
[ 0. 0. 0. ..., 0. 0. 181.] 
[ 0. 1. 0. ..., 0. 0. 181.]] 

사람이 설명 할 수 (가) ...,와 (b) 왜 7 더미 변수는주의 일이 있습니까? 내 예에서는 ...,이 일요일과 목요일을 처리하는 것으로 보입니다.

내 기능 (sklearn 4.2.1)을 확인하려면 get_feature_names 기능을 사용했습니다.

vec.get_feature_names() 

[u'day=Friday', u'day=Monday', u'day=Saturday', u'day=Sunday', 
u'day=Thursday', u'day=Tuesday', u'day=Wednesday', 'price'] 

출력에서 ​​볼 수 있듯이, 모든 요일이 적절하게 표현 된 것 같습니다. 나는 아직도 위의 (a)와 (b)를 혼동하고있다. FYI, 내가 할 때 LinearRegression 나는 단지 6 계수를 얻는다 (나는 7를 기대하고있다, 주마다의 매일 1) 고마워.

답변

3

인쇄물이있는 경우 vec_fit을 인쇄 할 때 표시되지 않습니다. 큰 배열을 인쇄 할 때 numpy의 기본 동작입니다. 데이터의 처음 3 및 마지막 3 열만 처음 3 및 마지막 3 행과 함께 표시됩니다.

[[ 0. 0. 0. ..., 0. 1. 59.] 
[ 0. 0. 0. ..., 0. 0. 92.] 
[ 1. 0. 0. ..., 0. 0. 92.] 
..., <=== This is for all intermediate data values present. Just not printed 
[ 0. 0. 1. ..., 0. 0. 181.] 
[ 0. 0. 0. ..., 0. 0. 181.] 
[ 0. 1. 0. ..., 0. 0. 181.]] 

배열의 모양을 확인하여 모든 데이터가 존재하는지 확인할 수 있습니다.

print(vec_fit.shape) 

(n_rows, 8)이어야합니다. 첫 번째 값 (n_rows)은 모든 샘플을 포함합니다. 두 번째 값 (8)은 7 개의 더미 변수와 1 개의 대상 변수를 포함합니다. 당신은 전체 배열을 인쇄하려면

, 다음이 질문을 참조하십시오

+0

좋은 대답 비벡 : –

+0

감사합니다! 게시 후, 그 생각이 내 마음에 터졌다. 하지만 10 개의 기능을 가진 테스트 파일을 만들었고 출력 할 때'..., '없이 10 개 모두에 대해 0 또는 1을 얻었습니다. – vintagedeek

+0

@vintagedeek 테스트 용리스트 또는 numpy 배열을 작성 했습니까 –