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()
Python 普通最小二乘法(OLS)进行多项式拟合
적합 한 각 평가 결과 와 매개 변 수 는 모두 인쇄 되 었 습 니 다.그 중에서 결과 함 수 는 다음 과 같 습 니 다.
f(sales) = β0 + β1*[TV] + β2*[radio]
f(sales) = 2.9211 + 0.0458 * [TV] + 0.188 * [radio]
Python 普通最小二乘法(OLS)进行多项式拟合
그림 에서 sales 방향 에서 파란색 점 은 원래 sales 의 실제 값 이 고 빨간색 점 은 의합 함수 로 계 산 된 값 이다.사실 오차 가 크 지 않 고 일부 데 이 터 는 다음 과 같다.
Python 普通最小二乘法(OLS)进行多项式拟合
마찬가지 로 일원 함 수 를 의합 할 수 있다.

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()
Python 普通最小二乘法(OLS)进行多项式拟合
Python 普通最小二乘法(OLS)进行多项式拟合
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)을 여러 가지 로 적합 하 게 만 드 는 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기