[AI]/python.sklearn
sklearn.linear regression.다차원(wine)등급 예상하기(정규화)
givemebro
2020. 4. 10. 15:19
반응형
# 와인의 속성을 사용해서 점수 예측
import numpy as np
import matplotlib.pyplot as plt
wine=np.loadtxt('winequality-red.csv',skiprows=1,delimiter=';')
# x=전체 속성값
X=wine[:,:-1]
# y=와인 등급
y=wine[:,-1]
# lienar regression
from sklearn.linear_model import LinearRegression
model=LinearRegression()
model.fit(X,y)
#result
w=model.coef_
b=model.intercept_
print('w=',w)
print('b=',b)
'''
w= [ 2.49905527e-02 -1.08359026e+00 -1.82563948e-01 1.63312698e-02
-1.87422516e+00 4.36133331e-03 -3.26457970e-03 -1.78811638e+01
-4.13653144e-01 9.16334413e-01 2.76197699e-01]
b= 21.965208449448404
'''
plt.boxplot(wine)
pass
pred_y=model.predict(X)
plt.scatter(y,pred_y,c=y)
plt.plot([y.min(),y.max()],[pred_y.min(),pred_y.max()])
# 정규화를 하지 않아서 오류가 있음
# 정규화
X_norm=(X-X.mean(axis=0))/X.std(axis=0)
plt.boxplot(X_norm)
pass
model=LinearRegression()
model.fit(X_norm,y)
#result
w=model.coef_
b=model.intercept_
print(w,b)
'''
[ 0.04349735 -0.19396667 -0.03555254 0.02301871 -0.08818339 0.04560596
-0.10735582 -0.03373717 -0.06384247 0.1552765 0.29424288]
5.636022514071305
'''
plt.scatter(y,pred_y,c=wine[:,-1])
plt.plot([y.min(),y.max()],[pred_y.min(),pred_y.max()])
plt.bar(range(11),w)
반응형