exercise1
来源:互联网 发布:淘宝极有家质量怎么样 编辑:程序博客网 时间:2024/06/06 10:01
一个最简单的线性拟合
1.单位矩阵,使用eye函数实现
2.绘制曲线,使用plot函数,颜色线条及其使用案例在点击打开链接,点击打开链接。
3.实现线性分类器。
原理:y = w * x+b。
现在所有的元素都是矩阵,将x增加常数列为1,表示常数项b
将等式缩减为 y = w * x
所取得的变量中,x为97*2,y为97*1。
调参过程:
参数调整的目的是使得建模更加效果好,就是预测值和实际值的差别越小越好。在线性分类器中,这个是用损失进行衡量的。如何找到最小的损失,就是要使用求导方法。将损失变成一个函数式,求导过程中不断调整参数。
用这个式子进行调整,含义是在每一次递归过程中,每一次参数都下降a倍现在导数的平均。在实际实现的过程中需要注意的是,在每次循环中使用的计算量是上次的不是刚刚得到的。
具体实现如下:
function thetaNew = gradientDescent(X, y, theta, alpha, iterations)%GRADIENTDESCENT Summary of this function goes here% Detailed explanation goes herem=size(X,1);thetaOld=theta;thetaNew=theta;for i=1:iterations for j=1:size(theta,1) thetaNew(j,1)=thetaOld(j,1)-alpha/m*sum((X*thetaOld-y).*X(:,j)); end if (abs(thetaNew-thetaOld)<0.01*thetaOld) break; end thetaOld=thetaNew;endend
在其他的参考资料里面,theta不是用循环处理的,是展开一个个处理的。我认为用循环要简单一些,所以采用的是循环。退出的判断条件可以改成其他的。
这样对于一个属性的计算就结束了。之后我们解决多个属性的变量建模。
首先接触一个概念就是“归一化”。
归一化用于属性的数值相差非常大的一种情况。比如,在这里房子的单价就是面积的成千或者成万倍,这时候在建模的过程中,面积很可能会被忽略。所以这个时候将所有的数据变成0-1范围内的值。
使用repmat函数进行简化运算。函数的含义就是将第一个参数矩阵重复第二个参数行,第三个参数列。这样就避免了使用循环。
之后进行梯度下降优化参数,并且在每次迭代的过程中打印cost。
最后使用normalEqu方法直接求得导数为0的地方,也可以得到最优参数。这适用于矩阵规模比较小,容易计算的情况。
剩下的没有技术含量的就略去不提了。
源代码地址:http://download.csdn.net/detail/yinyanting1/9905369
- exercise1
- SSD3-exercise1
- SSD5 exercise1
- exercise1-17
- exercise1-19
- exercise1-16
- exercise1-18
- Exercise1.1.22
- python exercise1
- 卡耐基 ssd6 exercise1
- Icarnegie SSD4 Exercise1 Answer
- 分支选择结构Exercise1
- SSD6 exercise1 解题思路
- SSD6 Exercise1 深入分析
- Exercise1.1.29 等值键
- 【UFLDL-exercise1-Sparse Autoencoder】
- Exercise1:第一个Python程序
- MIT-JOS-lab1-exercise1&&2
- 震撼!这群人已经先富了,到底发生了什么?
- httpclient https请求跳过验证
- 零基础搭建 spring mvc 4 项目(本文基于 Servlet 3.0)
- tornado入门教程
- Vulkan Tutorial 29 Loading models
- exercise1
- Scala 学习笔记(三)------定义具有可变参数的函数
- FastJSON,将对象或数组和JSON串互转
- 前端在线编程题1
- #include<bits/stdc++.h>包含C++的所有头文件
- Precision T7910 图形工作站win7和linux双系统安装
- hbase行键设计
- 【python学习笔记】16:numpy数组四则运算
- 字体