sklearn調用多元線性回歸算法


#向量化運算
import matplotlib as mpl
mpl.rcParams['agg.path.chunksize'] = 1000000
import numpy as np
import matplotlib.pyplot as plt
m=100
x=np.random.random(size=m)
y=x*2.0+3.0+np.random.normal(size=m) #帶有噪聲數據的線性相關數據
plt.scatter(x,y,color="red")
plt.show()
#波士頓房產數據集合
from sklearn import datasets
b=datasets.load_boston()
print(b.DESCR)
print(b.feature_names)
x=b.data[:,5] #取第五列的數據,房屋的數目與房價的關系
y=b.target
#輸出y目標值小於50時的樣本數據
x=x[y<50.0]
y=y[y<50.0]
plt.scatter(x,y)
plt.show()
#將數據進行分為測試數據集和訓練數據集
from sklearn.model_selection import train_test_split
#x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)
#回歸算法中的評價指標輸出MAE和MSE以及R2(開方為RMSE)
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
#多元線性回歸不需要進行數據統一化

#sklearn中調用多元線性回歸算法LinearRegression
#1-1調用各個庫
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
#1-2加載數據
boston=datasets.load_boston()
X=boston.data
y=boston.target
x=X[y<50.0]
y=y[y<50.0]
#1-3進行數據的分割訓練數據集與測試數據集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)
#1-4建立線性回歸模型進行模型訓練
from sklearn.linear_model import LinearRegression
L=LinearRegression()
L.fit(x_train,y_train)
#1-5輸出模型的各個特征系數與截距
print(L.coef_) #輸出多元線性回歸算法的各個特征系數
print(L.intercept_) #線性回歸輸出截距值
y_predict=L.predict(x_test)
#1-6輸出回歸算法的各個評價指標
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error,max_error
from sklearn.metrics import r2_score
#輸出RMSE均方根誤差
print(np.sqrt(mean_squared_error(y_test,y_predict)))
#輸出MAE平均絕對誤差
print(mean_absolute_error(y_test,y_predict))
#輸出最大殘余誤差絕對
print(max_error(y_test,y_predict))
#輸出R2的值,即模型不犯錯誤的程度,准確擬合度
print(r2_score(y_test,y_predict))
print(L.score(x_test,y_test))
#1-7可視化輸出預測曲線與真實值的曲線
plt.plot(y_test)
plt.plot(y_predict)
plt.show()
#1-8輸出各個特征的系數權重大小排序
L1=LinearRegression()
L1.fit(x,y)
print(L1.coef_)
print(np.argsort(L1.coef_))#得到從小到大排序的線性回歸算法模型
print(boston.feature_names[np.argsort(L1.coef_)]) #輸出影響從小到大的特征名稱



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM