Coursera_Stanford_ML_ex2_Logistic Regression 作业记录
来源:互联网 发布:mac连wifi时断时续 编辑:程序博客网 时间:2024/05/29 17:06
ProgrammingExercise 2: Logistic Regression
这周总结一下Week3的作业,使用Logstic回归对数据集中的两个类别进行分类并画出决策边界。总体来说并没有太大的难度,但是要在细节上面多留心。首先看一下作业要求:
除了打星号的以外,我还建议大家再看一下不带星号的文件,可以更好的帮助我们更好的理解Logstic算法的实现,现在先开始主要部分的实现。
一.Ex2
plotData.m目的是将不同类别的数据找出来,用plot进行数据可视化。让我们先观察一下数据,类别已经给出,所以直接找到对应的Score就行。
Exam1_Score
Exam2_Score
Class
35.84740876993872
72.90219802708364
0
60.1825993862097
86.30855209546826
1
pos = find(y==1); neg = find(y == 0);% Find Indices of Positive and Negative Examplesplot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, 'MarkerSize', 7);plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7);
效果如下:
Sigmoid.m要求给出Sigmoid函数:
g=1./(1+exp(-z));
现在的我只能理解用这个函数目的在于把通过拟合得到的方程的值控制在[0,1]这个范围内,可能还有别的含义我没有领悟,让我们看一下函数图像:
CostFunction.m要求写出误差函数和梯度函数
误差函数:
用矩阵运算实现:
J=(-log(sigmoid(theta'*X'))*y-log(1-sigmoid(theta'*X'))*(1-y))/m;
梯度函数
grad=X'*(sigmoid(theta'*X')'-y)/m;
效果如下(误差0.693147):
二.Ex2_reg
数据可视化
可以看到无法用线性的决策边界将两类别完全分开,所以我们尝试加入更多的多项式项。mapFeature.m中使用了x1,x2构成的六次多项式 :
为了避免过拟合,需要在误差函数和梯度函数中加入正则化项:
利用矩阵运算实现时注意不要引入正则化项,原因视频中有讲:
J=(-log(sigmoid(theta'*X'))*y-log(1-sigmoid(theta'*X'))*(1-y))/m+...lambda*(theta(2:size(theta,1),1)'*theta(2:size(theta,1),1))/2/m; grad(1,1)=X(:,1)'*(sigmoid(theta'*X')'-y)/m; grad(2:size(theta,1),1)=X(:,2:size(theta,1))'*(sigmoid(theta'*X')'-y)/m+theta(2:size(theta,1),1)*lambda/m;
效果如下(误差0.693147,)
决策边界是Sigmoid函数值为0时对应x1,x2形成的曲线。
- Coursera_Stanford_ML_ex2_Logistic Regression 作业记录
- Linear Regression WEEK2编程作业
- Logistic Regression WEEK3编程作业
- ML编程作业: Linear Regression
- ML编程作业: Logistic Regression
- Stanford 机器学习 Week2 作业: Linear Regression
- Stanford 机器学习 Week3 作业 Logistic Regression
- [机器学习]week2编程作业:Linear Regression
- [机器学习]week3编程作业:Logistic Regression
- 算法作业记录
- html作业记录
- Scala 作业记录 00
- Scala 作业记录 01
- Scala 作业记录 03
- Coursera_Stanford_ML_ex1 作业记录
- UFLDL作业记录
- 偶尔记录的作业
- regression
- CoreData 实体 条件 上下文
- Bootstrap小练习---布局组件
- iOS_覆盖uitabbarcontroller全屏的view
- Swift学习笔记4——集合类型
- iOS——图片下载
- Coursera_Stanford_ML_ex2_Logistic Regression 作业记录
- CoreData版本升级和数据迁移
- MapReduce中的Shuffle和Sort分析
- Spring MVC 日期自动注入
- Linux-挂载mount指令详解
- CocoaPods 的使用
- 面向对象的抽象思想和模式设计如何连接
- 11536 - Smallest Sub-Array
- Android Material Design Snackbar Example