利用机器学习进行分类(梯度算法)
2013-03-29 17:29
197 查看
到这里,公式就推导完毕了。
看个例子明白点:
希望可以将带星号和带加号区分开来
下面是主要代码:
function [th,ll] = plotdots(x,y,z) % rows of X are training samples % rows of Y are corresponding 0/1 values hold on; %% 画原始点的图 for i = 1:size(x,1) if(z(i)==0) plot(x(i),y(i),'*'); elseif (z(i)==1) plot(x(i),y(i),'+'); end end xy = [x,y]; [th,ll] = logistic_grad_ascent(xy,z); t = x; X = [ones(size(xy,1),1), x]; thx = th(1:2); thy = -th(3); y1 = X*thx./thy; plot(t,y1,'r-'); end
logistic_grad_ascent函数:
这个函数的for循环就是上面推导公式的应用,也就是算法的核心:
(1)hx的得到sigmoid的值,就是公式(1),
(2)theta是不断迭代siyata(不想贴图片了,囧),就是公式(8)
(3)ll(k)就是公式(5)
function [theta, ll] = logistic_grad_ascent(X,y) % rows of X are training samples % rows of Y are corresponding 0/1 values % output ll: vector of log-likelihood values at each iteration % ouptut theta: parameters alpha = 0.01; %步长 [m,n] = size(X); max_iters = 50000; %迭代次数 X = [ones(size(X,1),1), X]; % append col of ones for intercept term theta = zeros(n+1, 1); % initialize theta for k = 1:max_iters hx = sigmoid(X*theta); theta = theta + alpha * X' * (y-hx); ll(k) = sum( y .* log(hx) + (1 - y) .* log(1 - hx) ); end
最后得到的结果.
可以拓展成三维四维的情况,不过四维以后就不是那么好直观看了。
相关文章推荐
- 【译文】如何利用机器学习和分布式计算来对用户事件进行分类
- 机器学习实战第七章 - 利用AdaBoost元算法提高分类性能
- [Java][机器学习]用决策树分类算法对Iris花数据集进行处理
- 机器学习实战(7) ——利用AdaBoost元算法提高分类性能(python实现)
- 利用贝叶斯算法对垃圾邮件进行分类处理
- 利用机器学习进行恶意代码分类
- [机器学习]利用KNN算法进行验证码识别
- 机器学习实战笔记-利用AdaBoost元算法提高分类性能
- 机器学习分类之结合实际应用介绍KNN算法原理以及利用sklearn进行分类预测
- 机器学习笔记-利用线性模型进行分类
- 机器学习之利用AdaBoost元算法提高分类性能
- 利用TFIDF策略和朴素贝叶斯算法进行中文文本分类
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
- 机器学习实验报告:利用3层神经网络对CIFAR-10图像数据库进行分类
- 利用sklearn包中的k-近邻算法进行分类
- 机器学习——分类算法4:Logistic回归 梯度上升 思想 和 代码解释
- 利用机器学习进行恶意代码分类
- 实习生的监控算法: 利用机器学习方法进行曲线分类
- 机器学习:利用核函数进行非线性分类
- 利用机器学习进行恶意代码分类