Python 일반 최소 이승 법(OLS)여러 가지 적합 방법
python 해법:
import numpy as np
import pandas as pd
#import statsmodels.api as sm #
import statsmodels.formula.api as smf #
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
df = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0)
X = df[['TV', 'radio']]
y = df['sales']
#est = sm.OLS(y, sm.add_constant(X)).fit() #
est = smf.ols(formula='sales ~ TV + radio', data=df).fit() #
y_pred = est.predict(X)
df['sales_pred'] = y_pred
print(df)
print(est.summary()) #
print(est.params) #
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d') #ax = Axes3D(fig)
ax.scatter(X['TV'], X['radio'], y, c='b', marker='o')
ax.scatter(X['TV'], X['radio'], y_pred, c='r', marker='+')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
적합 한 각 평가 결과 와 매개 변 수 는 모두 인쇄 되 었 습 니 다.그 중에서 결과 함 수 는 다음 과 같 습 니 다.
f(sales) = β0 + β1*[TV] + β2*[radio]
f(sales) = 2.9211 + 0.0458 * [TV] + 0.188 * [radio]
그림 에서 sales 방향 에서 파란색 점 은 원래 sales 의 실제 값 이 고 빨간색 점 은 의합 함수 로 계 산 된 값 이다.사실 오차 가 크 지 않 고 일부 데 이 터 는 다음 과 같다.
마찬가지 로 일원 함 수 를 의합 할 수 있다.
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
df = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0)
X = df['TV']
y = df['sales']
est = smf.ols(formula='sales ~ TV ', data=df).fit()
y_pred = est.predict(X)
print(est.summary())
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(X, y, c='b')
ax.plot(X, y_pred, c='r')
plt.show()
Ridge Regression:(재 회귀 교차 검증)
재 회귀(ridge regression,Tikhonov regularization)는 공 선형 데이터 분석 에 사용 되 는 편향 평가 회귀 방법 으로 실질 적 으로 개량 된 최소 이승 평가 법 으로 최소 이승 법의 무 편향 성 을 포기 하고 일부 정 보 를 손실 하고 정 도 를 낮 추 는 대가 로 회귀 계 수 를 얻 는 것 이 실제 에 더욱 부합 되 고 신뢰성 있 는 회귀 방법 이다.병적 데이터 에 대한 의합 은 최소 이승 법 보다 낫다.통상 영 회귀 방정식 의 R 제곱 값 은 일반 회귀 분석 보다 약간 낮 지만 회귀 계수 의 현저 성 은 일반 회귀 보다 현저히 높 아 공선 성 문제 와 병적 데이터 가 많은 연구 에서 비교적 큰 실 용 가치 가 있다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import linear_model
from mpl_toolkits.mplot3d import Axes3D
df = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0)
X = np.asarray(df[['TV', 'radio']])
y = np.asarray(df['sales'])
clf = linear_model.RidgeCV(alphas=[i+1 for i in np.arange(200.0)]).fit(X, y)
y_pred = clf.predict(X)
df['sales_pred'] = y_pred
print(df)
print("alpha=%s, =%.2f, =%s" % (clf.alpha_ ,clf.intercept_,clf.coef_))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(df['TV'], df['radio'], y, c='b', marker='o')
ax.scatter(df['TV'], df['radio'], y_pred, c='r', marker='+')
ax.set_xlabel('TV')
ax.set_ylabel('radio')
ax.set_zlabel('sales')
plt.show()
출력 결과:alpha=150.0,상수=2.94,계수=[0.04575621 0.18735312]이 파 이 썬 의 일반적인 최소 이승 법(OLS)을 여러 가지 로 적합 하 게 만 드 는 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.