데이터 집합에 다 변수 선형 회귀 분석을 적용하여 모델에서 데이터를 얼마나 잘 설명하는지 알아보기 위해 노력하고 있습니다. 내 예측은 120 치수를하고 난 177 개 샘플이 = (177120)statsmodels와 scikit-learn에 의한 서로 다른 모델 성능 평가
X.shape을 y.shape = (177) statsmodels를 사용
, 나는 R-제곱으로 0.76의 아주 좋은 얻을 Prob (F- 통계량)는 0.06으로 유의성에 대한 추세이며 데이터에 대한 좋은 모델을 나타냅니다.
scikit-learn의 선형 회귀 분석을 사용하여 5 배 교차 유효성 검정 r2 점수를 계산할 때 평균 r2 점수가 -5.06으로 매우 낮은 일반화 성능을 나타냅니다.
두 모델은 열차 r2 점수와 정확히 같아야합니다. 그렇다면이 라이브러리의 성능 평가가 왜 너무 다른가요? 어느 것을 사용해야합니까? 이것에 대한 여러분의 의견에 진심으로 감사드립니다. 때문에 훈련 샘플 및 왼쪽으로 교차 검증 시료 사이의 차이 rsquared에서
# using statsmodel:
import statsmodels.api as sm
X = sm.add_constant(X)
est = sm.OLS(y, X)
est2 = est.fit()
print(est2.summary())
# using scikitlearn:
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)
print 'train r2 score:',lin_reg.score(X, y)
cv_results = cross_val_score(lin_reg, X, y, cv = 5, scoring = 'r2')
msg = "%s: %f (%f)" % ('r2 score', cv_results.mean(),cv_results.std())
print(msg)
감사합니다. 사용자 333700. 나는 열차와 시험 점수의 차이를 알고 있지만, prob (F- 통계)는 무엇을 의미합니까? 통계적으로 유의미하거나 그 경향이 우리가 좋은 모델을 가지고 있다는 것을 의미합니까? – Behrouz
이 모델은 r 통계 및 f- 통계의 측면에서 상당히 잘 맞지만 샘플 밖의 예측이라는 측면에서 볼 때 적합합니다. rsquared도 f- 테스트도 overfitting에 대한 벌칙. 더 나은 수표는 AIC 또는 BIC입니다 (예 : 가장 중요한 설명 변수를 삭제 한 후 문제는 모델이 훈련 데이터에 적합하지만 매개 변수 추정치가 설명 변수 당 관측치의 수가 적다면 정확하지 않고 정확하지 않습니다. 나는 당신의 표준 오류와 매개 변수에 대한 신뢰 구간이 대부분 꽤 클 것 같아요. – user333700