日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线性回归模型-最小二乘法Ordinary Least Squares

發布時間:2023/12/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性回归模型-最小二乘法Ordinary Least Squares 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 線性回歸模型

下面是一系列的回歸方法, 目標值是輸入變量的線性組合, 定義y^\hat {y}y^?表示要預測的值.
y^(w,x)=w0+w1x1+...+wpxp\hat {y}(w, x) = w_{0} + w_{1}x_{1} + ... + w_{p}x_{p}y^?(w,x)=w0?+w1?x1?+...+wp?xp?
在這類模型中, 我們設向量w=(w1,...,wp)w = ( w_{1}, ..., w_{p})w=(w1?,...,wp?)為coef_ (coefficient)并且 w0w_{0}w0?為intercept_(bias).

1.1.1 最小二乘法(Ordinary Least Squares)

線性回歸通過最小化觀察值和線性模型的預測值之間的殘差平方和來訓練一組模型的參數w=(w1,...,wp)w = ( w_{1}, ..., w_{p})w=(w1?,...,wp?). 數學上需要解決如下問題:
min?w∥Xw?y∥22\min \limits_{w}\left \| Xw - y \right \|_{2}^2wmin?Xw?y22?
LinearRegression 將會調用fit方法, 數據X, y并且把參數值w存在coef_中, w0w_0w0?存在模型的intercept_中.

>>> from sklearn import linear_model >>> reg = linear_model.LinearRegression() >>> reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) ... LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,normalize=False) >>> reg.coef_ array([0.5, 0.5])

然而, 最小二乘法的參數估計依賴模型特征之間的線性無關性. 當各特征之間存在相關性并且X的各列數據之間是線性相關時, X矩陣就會接近奇異值并且產生一個較大的方差, 最小二乘估計對收集觀察數據時產生的隨機誤差十分敏感. 當收集數據是沒有進行有針對性的設計避免隨機誤差, 將會產生多重共線性multicollinearity問題.

實例

這一實例只使用一維數據集的第一個特征數據, 目的是在二維平面圖中能夠說明這一算法.圖中的直線, 代表線性回歸模型嘗試畫出一條直線, 這條線能夠最小化所有觀察值與預測值之間殘差平方和, 其中觀察值在數據集中, 預測值是線性模型預測出來的.

代碼

import matplotlib.pyplot as pltimport numpy as npfrom sklearn import datasets, linear_modelfrom sklearn.metrics import mean_squared_error, r2_score# Load the diabetes datasetdiabetes = datasets.load_diabetes()print(type(diabetes.data))print(diabetes.data.shape)# Use only one featurediabetes_x = diabetes.data[:, np.newaxis, 2]print(type(diabetes_x))print(diabetes_x.shape)# Split the data into training/testing setsdiabetes_x_train = diabetes_x[:-20]diabetes_x_test = diabetes_x[-20:]print(diabetes_x_train.shape)print(diabetes_x_test.shape)# Split the targets into training/testing setsdiabetes_y_train = diabetes.target[:-20]diabetes_y_test = diabetes.target[-20:]# Create linear regression objectregr = linear_model.LinearRegression()# Train the model using the training setsregr.fit(diabetes_x_train, diabetes_y_train)# Make predictions using the testing setdiabetes_y_pred = regr.predict(diabetes_x_test)# The coefficientsprint('Coefficients: \n', regr.coef_)# The mean squared errorprint('Mean squared error: %.2f' % mean_squared_error(diabetes_y_test, diabetes_y_pred))# Explained variance score: 1 is perfect predictionprint('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))# Plot outputsplt.scatter(diabetes_x_test, diabetes_y_test, color = 'black')plt.plot(diabetes_x_test, diabetes_y_pred, color = 'blue', linewidth = 3)plt.xticks(())plt.yticks(())plt.show()

運行結果

n ordinary_least_squares.py <class 'numpy.ndarray'> (442, 10) <class 'numpy.ndarray'> (442, 1) (422, 1) (20, 1) Coefficients: [938.23786125] Intercept: 152.91886182616167 Mean squared error: 2548.07 Variance score: 0.47

知識

  • np.newaxis的使用
  • sklearn.metrics.r2_score
  • 總結

    以上是生活随笔為你收集整理的线性回归模型-最小二乘法Ordinary Least Squares的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。