共計 1513 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章給大家分享的是有關 Python 如何實現普通最小二乘法的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
廣義線性回歸模型:
把作為系數向量(coef_);把作為截距(intercept_)
1. 普通最小二乘法(Ordinary Least Squares)
線性回歸的目的就是是的預測值與實際值的殘差平方和最小:
import matplotlib.pyplot as plt
import numpy as np#載入數據集“datasets”from sklearn import datasets, linear_model#獲取糖尿病的數據集 diabetes = datasets.load_diabetes()#使用其中的一個特征,np.newaxis 的作用是增加維度 diabetes_X = diabetes.data[:, np.newaxis, 2]# 將 X 變量數據集分割成訓練集和測試集 diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]# 將 Y 目標變量分割成訓練集和測試集 diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]#創建線性回歸對象 regr = linear_model.LinearRegression()#使用訓練數據來訓練模型 regr.fit(diabetes_X_train, diabetes_y_train)# 查看相關系數 print(Coefficients: \n , regr.coef_)# 查看殘差平方的均值 (mean square error,MSE)print( Residual sum of squares: %.2f #% 是格式化
% np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2))# Explained variance score: 1 is perfect prediction# 解釋方差得分 (R^2),最好的得分是 1: # 系數 R^2=1 - u/v, u 是殘差平方,u=(y_true - y_pred) ** 2).sum()# v 是離差平方和,v=(y_true - y_true.mean()) ** 2).sum()print( Variance score: %.2f % regr.score(diabetes_X_test, diabetes_y_test))# 畫出測試的點 plt.scatter(diabetes_X_test, diabetes_y_test, color= black)# 畫出預測的點 plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color= blue ,
linewidth=3)#刪除 X 軸的標度 plt.xticks(())# 刪除 Y 軸的標度 plt.yticks(())
plt.show()
普通最小二乘法計算復雜度
這種方法通過對 X 奇異值分解(singular value decomposition,SVD)來計算最小二乘的解,如果 X 是(n,p)的矩陣(n 大于 p),則代價為
感謝各位的閱讀!關于“Python 如何實現普通最小二乘法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
正文完