2012-11-04 3 views
7

OLS (multiple linear regression)를 사용하여 모델을 계산했습니다. 나는 훈련하고 테스트하기 위해 데이터를 나눈 다음 (절반 씩) 레이블의 두 번째 절반에 대한 값을 예측하고 싶습니다. 파일 "/usr/local/lib/python2.7/dist-packages/statsmodels-0.5.0-py2.7-linux-i686.egg/ :통계 모델을 사용하여 OLS 모델을 사용하여 값 예측

model = OLS(labels[:half], data[:half]) 
predictions = model.predict(data[half:]) 

문제는 내가 얻을 오류이다 statsmodels/회귀/linear_model.py ", 라인 281, 반환 np.dot (exog, PARAMS)을 예측에 에 ValueError : 행렬

을 정렬되지 않은 I가 다음과 같은 배열 모양 : data.shape : (426, 215) labels.shape : (426,)

입력을 model.predict로 바꾸면 얻을 수 있습니다. 결과 만 (426,213)의 모양, 그래서 나뿐만 아니라 (내가 레이블 예측으로 213 개 번호 중 하나 개 벡터 예상)의 잘못을한다고 가정

model.predict(data[half:].T) 

가 작동하도록하는 방법을 어떤 생각을? statsmodels> = 0.4의 경우

답변

11

, 내가 정확히 기억한다면 model.predict이 매개 변수에 대해 알고 귀하의 경우에 작동합니다 어떤

http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.OLS.predict.html를 참조 호출을 필요로하지 않습니다

이 맞게하는 것입니다

모델을 만든 다음 결과 인스턴스의 예측 방법을 사용합니다.

model = OLS(labels[:half], data[:half]) 
results = model.fit() 
predictions = results.predict(data[half:]) 

또는 문서화 문자열을

참고 누락 된

results = OLS(labels[:half], data[:half]).fit() 
predictions = results.predict(data[half:]) 

http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.RegressionResults.predict.html 짧은 :이 개발 버전 (호환) 예측에, 즉 "공식"정보를 활용할 수 있습니다 변경되었습니다 http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults.predict.html

+0

모델 피팅 및 데이터 분할에 관한 질문 BIG WARNING에 대한 정답입니다. 테스트/예측을 위해서는 교육/맞춤에 80 % (또는 그 이상), 나머지는 20 %를 사용해야합니다. 데이터를 50:50으로 나누는 것은 Schrodingers cat과 같습니다. 우리는 데이터가 모두 좋거나 잘못되었음을 확신하지 못합니다. 따라서 모델의 신뢰도는 중간에 있습니다. 모델에 대한 신뢰를 높이기 위해 더 많은 데이터를 준비해야합니다. – lukassos

관련 문제