學了本文你能學到什麼?僅供學習,如有疑問,請留言。。。
# -*- coding: utf-8 -*-
# Author : szy
# Create Date : 2019/10/30
#總共3種線性迴歸
#第一種:Ridge嶺迴歸
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.linear_model import SGDRegressor
X = 2*np.random.rand(100, 1)
y = 4 + 3*X + np.random.randn(100, 1)
ridge_reg = Ridge(alpha=0.4, solver='sag')
ridge_reg.fit(X, y)
print(ridge_reg.predict([[1.5]]))
print(ridge_reg.intercept_)
print(ridge_reg.coef_)
print("---"*20)
sgd_reg = SGDRegressor(penalty='l2', max_iter=10000)
sgd_reg.fit(X, y.reshape(-1,))
print(sgd_reg.predict([[1.5]]))
print(sgd_reg.intercept_)
print(sgd_reg.coef_)
"----------------------------------------------------------------------------------------"
#第二種,Lasso迴歸
# import numpy as np
# from sklearn.linear_model import Lasso
# from sklearn.linear_model import SGDRegressor
#
# X = 2*np.random.rand(100, 1)
# y = 4 + 3*X + np.random.randn(100, 1)
#
# lasso_reg = Lasso(alpha=0.01, max_iter=30000)
# lasso_reg.fit(X, y)
#
# print(lasso_reg.predict([[1.5]]))
# print(lasso_reg.intercept_)
# print(lasso_reg.coef_)
# print("-----------------------------")
# sgd_reg = SGDRegressor(penalty='l1', max_iter=10000)
# sgd_reg.fit(X, y.ravel())
# print(sgd_reg.predict([[1.5]]))
# print(sgd_reg.intercept_)
# print(sgd_reg.coef_)
"-----------------------------------------------------------------"
#第三種,ElasticNet迴歸
# import numpy as np
# from sklearn.linear_model import ElasticNet
# from sklearn.linear_model import SGDRegressor
#
# X = 2*np.random.randn(100, 1)
# y = 4 + 3 * X + np.random.randn(100, 1)
#
# elastic_reg = ElasticNet(alpha=0.04, l1_ratio=0.15)
# elastic_reg.fit(X, y)
# print(elastic_reg.predict([[1.5]]))
# print("----------------------")
# sgd_reg = SGDRegressor(penalty='elasticnet', max_iter=1000)
# sgd_reg.fit(X, y.ravel())
# print(sgd_reg.predict([[1.5]]))
#總結多元線性迴歸用第一個比較合適