exercise5
来源:互联网 发布:webrtc 源码介绍 编辑:程序博客网 时间:2024/06/05 23:50
这次习题的目的在最一开始并没有搞清楚。根据ex5这个函数对所有函数的调用,走一步看一步,
首先就是对只有一维的简单的X进行建模。在这次建模过程中,又复习了损失函数和梯度的计算式。一切直接拿一个式子就可以计算出来。以后会遇到很多很多不同维度的计算,在计算的时候想一下式子的物理意义就比较容易计算出来了。
theta_temp = [zeros(size(theta,2));theta(2:end)];J = sum(sum((X*theta - y).^2)) / (2*m) + lambda / (2*m) * sum(sum(theta_temp.^2));grad = X'* (X*theta - y) / m + lambda / m * theta_temp;
initial_theta=zeros(size(X,2),1);costFunction = @(t) linearRegCostFunction(X,y,t,lambda);options = optimet('MaxIter',200,'GradObj','on');theta = fmincg(costFunction, initial_theta, options);首先初始化theta,然后定义costfunction函数,进行损失和梯度的具体计算。之后设定使用fmincg的具体选项。最大迭代次数为200,需要自己选定参数。最后将之前设定的三个类似于参数的参数传入到fmincg函数中进行具体的建模过程。
part5是learningCurve函数,意思就是表示出样本的个数对训练效果的影响。很显然,样本越多,训练效果越好。
在一开始使用线性回归的时候,效果并不是很好,所以接下来选择多项式回归进行拟合。
首先需要对数据X进行处理。分别变成平方,三次方,……。
之后对得到的值进行正规化。就是减去平均数,然后除以标准差。
代码是值得学习一下的。
mu = mean(X);%求X的各列均值X_norm = bsxfun(@minus, X, mu);%X和mu的二值操作,minus代表的意思是减法sigma = std(X_norm);%计算标准差X_norm = bsxfun(@rdivide, X_norm, sigma);%X和mu的二值操作,rdivide代表的意思是左除
具体里面的参数代表的含义:点击打开链接
之后就没什么了,就是用处理过的X矩阵重新构建模型,流程一样,所以忽略。
OK,练习结束。
源代码链接地址:http://download.csdn.net/detail/yinyanting1/9910170
阅读全文
0 0
- exercise5
- SSD1的exercise5答案
- 分支选择结构Exercise5
- 【UFLDL-exercise5-Softmax Regression】
- Programming Exercise5:Regularized Linera Regression and Bias v.s Variance
- 采用牛顿方法的逻辑回归实现-NG的ML课程exercise5
- 文章标题
- 需求调研问卷的编写(2)
- sql server 的T-SQL 学习笔记(九)
- android中的无线通信蓝牙
- C/C++中的static关键字的易错点
- exercise5
- C# ASP.NET 解决方案开发微信公众号
- Discuz手机触屏版的帖子中图片无法放大查看
- spring mvc 给Controller添加事务
- Tomcat启动时加载数据到缓存--Web.xml里listener的加载顺序,优先初始化Spring IOC容器
- 关于android webview 的那些坑
- ArrayDeque
- 面向对象中的原型链
- 1133: 单词个数统计