机器学习:4训练模型(线性模型)

ipynb文件见:https://github.com/824024445/Machine-learning-notes/blob/master/4训练模型.ipynb
《Sklearn与TensorFlow机器学习实用指南》学习笔记

本章内容

> 第一步
将以一个简单的线性回归模型为例,讨论两种不同的训练方法来得到模型的最优解

  • 1.直接在封闭方程上求根
  • 2.迭代,梯度下降(GD)的方法

> 第二步
研究更复杂的模型:多项式回归,可以拟合非线性数据集。由于参数多,多以容易出现过拟合,所以本章还会介绍如何判断是否过拟合,并介绍几种正则化方法减少过拟合。

> 第三步
介绍两种常用的分类模型:Logistic回归和Softmax回归

一、线性回归模型为例

> 写在前面,不管是以封闭方程求解,还是通过梯度下降求解。都只是求解的方式而已。不全部封闭方程求解只是为了节省资源加快速度。
LinearRegression预测器使用封闭求解。SCDRegressor预测器使用梯度下降求解。

1.1 在封闭方程上求根

1.1.1 自己实现

import numpy as np
import matplotlib.pyplot as plt

X = 2*np.random.rand(100, 1) # rand是生成平均分布的浮点数
y = 4 + 3*X + np.random.randn(100, 1) # randn是生成正态分布的浮点数

plt.scatter(X, y)
plt.show()

在这里插入图片描述

> f(x) = w1x1 + w2x2 + w3x3 + … + wdxd + b
向量w* = (w1, w2, w3, … , wd, b)
线性模型就是求均方差最小的那条线的w*
省略西瓜书上的推导过程,结果为:w* = (XTX)-1XTy
通过Numpy 的线性代数模块(np.linalg)中的inv()函数来计算矩阵的逆,以及dot()方法来计算矩阵的乘法。

X_b = np.c_[np.ones((100, 1)), X]
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
theta_best
array([[4.50080561],
       [2.66101173]])

求得的参数,第一个是截距的,第二个是参数w。 取决于X的组成,如果1在第一列,那么截距就是第一个参数,如果1在最后一列,那么截距就是最后一个。

进行预测

X_new = np.array([[0], [2]])
# X_new_b = np.c_[X_new, np.ones((2, 1))]
X_new_b = np.c_[np.ones((2, 1)), X_new]

y_predict = X_new_b.dot(theta_best)
y_predict

array([[4.50080561],
       [9.82282906]])

画出图形

plt.plot(X_new, y_predict, "r-")
plt.plot(X, y, "b.")
plt.axis([0,2,0,15])
plt.
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值