sklearn.linear_모델의 선형 회귀 분석에 몇몇 곡선을 적용할 때 계수의 변화를 결정한다
선형 회귀분석은 제시된 데이터가 가장 가까운 직선 공식과 제시된 공식의 데이터가 얼마나 가까운지 계산할 수 있다.(해석이 복잡하지만...) 이번에는 다음 원천에서 y-y7과 같은 곡선에 대해 선형 회귀분석을 실시하여 결정 계수의 차이를 확인했다.y는 직선 자체이고 y1-y7은 곡선이다.
출처 import pandas as pd
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
#データ準備
dt={
"x" :[1100 , 1200 , 1300 , 1400 , 1500 , 1600 , 1700 ] ,
"y" :[1100 , 1200 , 1300 , 1400 , 1500 , 1600 , 1700 ] ,
"y1" :[1100 , 1100 , 1100 , 1100 , 1100 , 1700 , 1700 ] ,
"y2" :[1100 , 1100 , 1700 , 1700 , 1700 , 1700 , 1700 ] ,
"y3" :[1100 , 1150 , 1350 , 1350 , 1550 , 1550 , 1700 ] ,
"y4" :[1100 , 1200 , 2300 , 1400 , 1500 , 1600 , 1700 ] ,
"y5" :[1100 , 1200 , 500 , 1400 , 1500 , 1600 , 1700 ] ,
"y6" :[1100 , 1700 , 1100 , 1700 , 1100 , 1700 , 1700 ] ,
"y7" :[1100 , 1100 , 1200 , 1300 , 1450 , 1520 , 1700 ] ,
}
#描画位置
pos={
"y" :[0,0] ,
"y1":[0,1] ,
"y2":[1,0] ,
"y3":[1,1] ,
"y4":[2,0] ,
"y5":[2,1] ,
"y6":[3,0] ,
"y7":[3,1] ,
}
yset=list(dt.keys())
yset.remove("x")
yset.sort()
x=pd.DataFrame(dt["x"])
#描画関連初期化
len_yset=len(yset)
fig, ax = plt.subplots(int(len_yset/2),2 , figsize=(13,8),constrained_layout=True ) # Create a figure and an axes.
for y_val in yset :
y=pd.DataFrame(dt[y_val])
#線形回帰モデルの実行
#model = LinearRegression(fit_intercept=False) #線形回帰モデルの呼び出し(切片は計算に使用しない)
model = LinearRegression() #線形回帰モデルの呼び出し
model.fit(x , y) #モデルの訓練
coef=round(model.coef_[0][0] ,2) #回帰変数
intercept=round(model.intercept_[0] ,2) #回帰直線の切片
score=round(model.score(x,y) ,2) #決定係数
#text出力
print("{} : y={}x {:+} 決定係数 {} ".format(y_val , coef ,intercept ,score))
#描画
ax[pos[y_val][0] , pos[y_val][1] ].plot(dt["x"] , dt[y_val] , label= y_val)
ax[pos[y_val][0] , pos[y_val][1] ].set_title("y={}x {:+} 決定係数 {} ".format(coef ,intercept ,score) , fontname="MS Gothic") # Add a title to the axes.
ax[pos[y_val][0] , pos[y_val][1] ].legend() # Add a legend.
plt.show()
결실
y
공식.
확정 계수
y
y=1.0x -0.0
1.0
y1
y=1.07x -228.57
0.63
y2
y=1.07x +28.57
0.63
y3
y=1.0x -7.14
0.96
y4
y=0.64x +642.86
0.12
y5
y=1.29x -514.29
0.47
y6
y=0.64x +542.86
0.19
y7
y=1.03x -106.43
0.96
직선의 y=1, 직선에 가까운 (y3, y7)의 확정 계수는 1에 가깝고 그 외에 0.6 이하이다.역시'결정 계수'라는 말이 있다.
회귀 분석에 관해서는 제 개인적인 문외한 해석입니다. 잘못이 있으면 지적해 주십시오.
참고 자료
Linter Regression 클래스에 대한 노트
sklearn.linear_model.LinearRegression
Reference
이 문제에 관하여(sklearn.linear_모델의 선형 회귀 분석에 몇몇 곡선을 적용할 때 계수의 변화를 결정한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirayama_yuuichi/items/d271c97deb93f2e78ff8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import pandas as pd
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
#データ準備
dt={
"x" :[1100 , 1200 , 1300 , 1400 , 1500 , 1600 , 1700 ] ,
"y" :[1100 , 1200 , 1300 , 1400 , 1500 , 1600 , 1700 ] ,
"y1" :[1100 , 1100 , 1100 , 1100 , 1100 , 1700 , 1700 ] ,
"y2" :[1100 , 1100 , 1700 , 1700 , 1700 , 1700 , 1700 ] ,
"y3" :[1100 , 1150 , 1350 , 1350 , 1550 , 1550 , 1700 ] ,
"y4" :[1100 , 1200 , 2300 , 1400 , 1500 , 1600 , 1700 ] ,
"y5" :[1100 , 1200 , 500 , 1400 , 1500 , 1600 , 1700 ] ,
"y6" :[1100 , 1700 , 1100 , 1700 , 1100 , 1700 , 1700 ] ,
"y7" :[1100 , 1100 , 1200 , 1300 , 1450 , 1520 , 1700 ] ,
}
#描画位置
pos={
"y" :[0,0] ,
"y1":[0,1] ,
"y2":[1,0] ,
"y3":[1,1] ,
"y4":[2,0] ,
"y5":[2,1] ,
"y6":[3,0] ,
"y7":[3,1] ,
}
yset=list(dt.keys())
yset.remove("x")
yset.sort()
x=pd.DataFrame(dt["x"])
#描画関連初期化
len_yset=len(yset)
fig, ax = plt.subplots(int(len_yset/2),2 , figsize=(13,8),constrained_layout=True ) # Create a figure and an axes.
for y_val in yset :
y=pd.DataFrame(dt[y_val])
#線形回帰モデルの実行
#model = LinearRegression(fit_intercept=False) #線形回帰モデルの呼び出し(切片は計算に使用しない)
model = LinearRegression() #線形回帰モデルの呼び出し
model.fit(x , y) #モデルの訓練
coef=round(model.coef_[0][0] ,2) #回帰変数
intercept=round(model.intercept_[0] ,2) #回帰直線の切片
score=round(model.score(x,y) ,2) #決定係数
#text出力
print("{} : y={}x {:+} 決定係数 {} ".format(y_val , coef ,intercept ,score))
#描画
ax[pos[y_val][0] , pos[y_val][1] ].plot(dt["x"] , dt[y_val] , label= y_val)
ax[pos[y_val][0] , pos[y_val][1] ].set_title("y={}x {:+} 決定係数 {} ".format(coef ,intercept ,score) , fontname="MS Gothic") # Add a title to the axes.
ax[pos[y_val][0] , pos[y_val][1] ].legend() # Add a legend.
plt.show()
결실
y
공식.
확정 계수
y
y=1.0x -0.0
1.0
y1
y=1.07x -228.57
0.63
y2
y=1.07x +28.57
0.63
y3
y=1.0x -7.14
0.96
y4
y=0.64x +642.86
0.12
y5
y=1.29x -514.29
0.47
y6
y=0.64x +542.86
0.19
y7
y=1.03x -106.43
0.96
직선의 y=1, 직선에 가까운 (y3, y7)의 확정 계수는 1에 가깝고 그 외에 0.6 이하이다.역시'결정 계수'라는 말이 있다.
회귀 분석에 관해서는 제 개인적인 문외한 해석입니다. 잘못이 있으면 지적해 주십시오.
참고 자료
Linter Regression 클래스에 대한 노트
sklearn.linear_model.LinearRegression
Reference
이 문제에 관하여(sklearn.linear_모델의 선형 회귀 분석에 몇몇 곡선을 적용할 때 계수의 변화를 결정한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirayama_yuuichi/items/d271c97deb93f2e78ff8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
회귀 분석에 관해서는 제 개인적인 문외한 해석입니다. 잘못이 있으면 지적해 주십시오.
참고 자료
Linter Regression 클래스에 대한 노트
sklearn.linear_model.LinearRegression
Reference
이 문제에 관하여(sklearn.linear_모델의 선형 회귀 분석에 몇몇 곡선을 적용할 때 계수의 변화를 결정한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirayama_yuuichi/items/d271c97deb93f2e78ff8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(sklearn.linear_모델의 선형 회귀 분석에 몇몇 곡선을 적용할 때 계수의 변화를 결정한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hirayama_yuuichi/items/d271c97deb93f2e78ff8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)