[AI]/python.sklearn
sklearn.linear regression.꽃종류 별 회귀 선 그리기
givemebro
2020. 4. 10. 12:12
반응형
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# data 수집
iris=load_iris()
# column 컨트롤
col1=2
col2=3
# 전체 data에 대한 scatterplot graph
plt.scatter(iris.data[:,col1],iris.data[:,col2],c=iris.target,alpha=0.7)
X=iris.data[:,[col1]]
# 주의 : col1->[col1]
y=iris.data[:,col2]
# LinearRegression
model = LinearRegression()
# train
model.fit(X,y)
#predict
pred_y=model.predict(X)
# 선에 대한 x 범위 산출
xxx=np.array([X.min()-0.5,X.max()+0.5])
# 1차 방정식
yyy=model.coef_*xxx+model.intercept_
# 기울기 : w(weight)=coef_ ,절편 : b(ax+b)=intercept_
# 1차 방정식 graph
plt.plot(xxx,yyy,'b:',label='all')
#전체 데이터에 대한 평가지표
MSE=((y-pred_y)**2).mean()
RMSE=np.sqrt(MSE)
MAE=np.abs(y-pred_y).mean()
print(MSE,RMSE,MAE,model.score(X,y))
# 0.04228994631948424 0.20564519522586527 0.1572565947049201 0.9269012279220037
for i in range(3):
X=iris.data[50*i:50*(i+1),[col1]]
y=iris.data[50*i:50*(i+1),col2]
# print([50*i,50*(i+1)])
# [0, 50]
# [50, 100]
# [100, 150]
model = LinearRegression()
model.fit(X,y)
xxx=np.array([X.min()-0.5,X.max()+0.5])
yyy=model.coef_*xxx+model.intercept_
# 기울기 : w(weight)=coef_ ,절편 : b(ax+b)=intercept_
plt.plot(xxx,yyy,':',label=iris.target_names[i])
plt.legend()

반응형