机器学习-02 基于sklearn 广义线性模型-普通最小二乘法

机器学习 基于sklearn-02 从sklearn说起

  • 线性回归
  • 普通最小二乘法
  • 案例分析
  • 重要代码解释

线性回归

回归分析的主要工作,是根据统计获得的数据点来训练出一个函数表达式,根据这个函数表达式来对新的数据点进行预测。
线性是指线性方程。线性方程也就是一次函数,一元一次函数的定义式如下所以。
y = k ∗ x + b y=k*x+b y=kx+b
在做回归分析时,数据的影响因素不止一个因此需要使用多元一次函数来拟合。预测出的值为预测值,用 y ^ \hat{y} y^来表示。真实值用 y {y} y来表示。
y ^ ( ω , x ) = ω 0 + ω 1 x 1 + ⋯ + ω n x n \hat{y}(\omega ,x)={{\omega }_{0}}+{{\omega }_{1}}{{x}_{1}}+\cdots +{{\omega }_{n}}{{x}_{n}} y^(ω,x)=ω0+ω1x1++ωnxn
其中 ω = ( ω 0 , ω 1 , ⋯   , ω n ) \omega =({{\omega }_{0}},{{\omega }_{1}},\cdots ,{{\omega }_{n}}) ω=(ω0,ω1,,ωn)为函数的系数。线性回归的工作就是确定这些系数的值,来使 y ^ \hat{y} y^尽量接近 y {y} y

普通最小二乘法

普通最小二乘法就是求系数值的最简单的一种方法。我们的目的是使 y ^ \hat{y} y^尽量接近 y {y} y。用数学来表示就是 min ⁡ ω   ∑ i = 1 n ( X ω − y i ) 2 \underset{\omega }{\mathop{\min }}\,\sum\limits_{i=1}^{n}{{{\left( X\omega -{{y}_{i}} \right)}^{2}}} ωmini=1n(Xωyi)2
接下来分别对 ω = ( ω 0 , ω 1 , ⋯   , ω n ) \omega =({{\omega }_{0}},{{\omega }_{1}},\cdots ,{{\omega }_{n}}) ω=(ω0,ω1,,ωn)求偏导数,当偏导数等于0时可以求到极值。
∂ f ∂ ω 0 = 0 \frac{\partial f}{\partial {{\omega }_{0}}}=0 ω0f=0, ∂ f ∂ ω 1 = 0 \frac{\partial f}{\partial {{\omega }_{1}}}=0 ω1f=0,……, ∂ f ∂ ω n = 0 \frac{\partial f}{\partial {{\omega }_{n}}}=0 ωnf=0
从而可以求出参数的值。

案例分析

在sklearn官方手册中有这么一个示例我们可以来对普通最小二乘法进行验证。点击。
现将代码摘录如下

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score

# Load the diabetes dataset
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)

# Use only one feature
diabetes_X = diabetes_X[:, np.newaxis, 2]

# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# Split the targets into training/testing sets
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]

# Create linear regression object
regr = linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)

# The coefficients
print('Coefficients: \n', regr.coef_)
# The mean squared error
print('Mean squared error: %.2f'
      % mean_squared_error(diabetes_y_test, diabetes_y_pred))
# The coefficient of determination: 1 is perfect prediction
print('Coefficient of determination: %.2f'
      % r2_score(diabetes_y_test, diabetes_y_pred))

# Plot outputs
plt.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()

机器学习-02 基于sklearn 广义线性模型-普通最小二乘法_第1张图片

重要代码解释

真正用来构建模型和进行预测的代码只要三行。

# Create linear regression object
regr = linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)
  • 创建线性回归模型
  • fit()函数用来模型的构建,输入数据是训练数据集。
  • predict()函数用来做预测,输入数据是测试数据集。

你可能感兴趣的:(sklearn,机器学习,python)