Machine Learning Notes-Linear Regression-Udacity
Regression 就是想找到因变量和自变量之间的关系,用一个函数来表示,并且可用这个函数来预测任意一个新的 x 会有怎样的 y 。
那么怎么找最好的那条线来表示 x 与 y 之间的关系呢?
用积分的方式。
怎么确定拟合线的阶数?
判断的标准,就是最小的 mean squared error,最好是为0.
下面这条线虽然把每个点都 fit 了,但是在某两个点之间却急剧上升或者下降。
从 Training Error 的曲线上看,也是当 order=8 时,error几乎没有,但是曲线却非常地 crazy。
接下来用矩阵来表示多项式。
求解系数矩阵W的公式:
用来 Training 的数据其实是有 Error 的,产生的原因如下几条,
所以要让我们的拟合函数尽量避开这些error,从而达到更准的效果。
用 Training 和 Testing 数据训练出来的模型,我们需要相信它们是可以代表未来要被应用的系统的,
用 Cross Validation 去调 Polynomial 的参数,
取最小的 Error 相应的参数。
Cross Validation 的 Error 一开始要比 Training Error 要高,因为:Training 用了所有的数据,而 Cross Validation 用的是一部分数据,还有一部分数据用来 test,
随着阶数的增加,Cross Validation 的 Error 渐渐接近 Training Error,但超过某个值后,又剧增,因为:随着级数越来越大,虽然会更好的拟合数据,但是会 Over Fitting,那么在未来的数据上就会不太适用。
我们想要找到的是 fit 的这个点。
在 sklearn 里有很多线性回归模型: http://scikit-learn.org/stable/modules/linear_model.html
怎样评价你的线性回归模型
一个是画出来,一个是看Error, error 就是实际值-预测值,注意符号。
回归之后,测试数据和训练数据同时显示在这个图里。
对于回归模型,想要 Error 达到最小,合适的评价模型有两个,一个是绝对值,一个是平方。
目标就是想要这个 Error 达到最小,SSE 越大,拟合的效果越不好。
r squared 是评价回归模型的一种很重要的方法,
这个值越大越好,最大为1。越小说明没有很好地捕捉到数据的趋势,越大说明很好地描述了输入输出的关系。 这个值要用 test data 去检验,也可以看出是否 Over fitting。
多元回归
Classification 和 Regression 比较:
Regression 方法列表:
1. Parametric Regression
可以用 polyfit 直接得到多项式的系数:
import numpy as np
# The rank of the coefficient matrix in the least-squares fit is deficient.
# The warning is only raised if full = False.
# The warnings can be turned off by
import warnings
warnings.simplefilter('ignore', np.RankWarning)
sleep = [5,6,7,8,10,12,16]
scores = [65,51,75,75,86,80,0]
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(sleep, scores)
coeffs=np.polyfit(sleep, scores, 2)
coeffs
2. K Nearest Neighbor
取 k 个值的平均值作为拟合后的点,最后可以得到一条沿着点的光滑的曲线。
3. Kernel Regression
和 KNN 类似,只是不同的点,根据距离来加权,而 KNN 的每个点作用都是一样的。
- Hadoop离线数据分析平台实战——370外链信息分析Hadoop离线数据分析平台实战——370外链信息分析
- POJ 1067 取石子游戏
- 【一起学Python】STEAM游戏评测爬虫
- Open Judge 2750 鸡兔同笼
- POJ 1017 Packets
- Hadoop离线数据分析平台实战——380MapReduce程序优化Hadoop离线数据分析平台实战——380MapReduce程序优化
- 配置远程访问Jupyter+腾讯云超划算活动上车
- HDU 4256 The Famous Clock
- ZOJ 1403&&HDU 1015 Safecracker【暴力】
- Torch7搭建卷积神经网络详细教程
- 爬虫入门到精通-HTTP协议的讲解
- 批量替换文件名和文本文件内容mac
- 抓取手机app的数据(摩拜单车)
- Hadoop离线数据分析平台实战——520项目总结Hadoop离线数据分析平台实战——520项目总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP单例模式实例分析【防继承,防克隆操作】
- Python基于network模块制作电影人物关系图
- tp5(thinkPHP5框架)使用DB实现批量删除功能示例
- 统计PHP目录中的文件数方法
- python json.dumps() json.dump()的区别详解
- Win10下用Anaconda安装TensorFlow(图文教程)
- TP5(thinkPHP框架)实现后台清除缓存功能示例
- PHP递归的三种常用方式
- python实现xlwt xlrd 指定条件给excel行添加颜色
- PHP解析url并得到url参数方法总结
- TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
- PHP实现微信小程序用户授权的工具类示例
- thinkphp5.0整合phpsocketio完整攻略(绕坑)
- Yii2框架自定义类统一处理url操作示例
- tp5(thinkPHP5框架)captcha验证码配置及验证操作示例