梯度下降算法、随机梯度下降算法scala实现
来源:互联网 发布:淘宝卖家设置流量包 编辑:程序博客网 时间:2024/04/26 06:21
梯度下降和随机梯度下降是机器学习中最常用的算法之一。关于其具体的原理这里不多做介绍,网络上可以很方便的找到。例如可以参考博客:http://blog.csdn.net/woxincd/article/details/7040944
scala代码实现如下:
object SGD{ /*X:输入变量 y:输入结果 learnRate:学习步长 iterNum:迭代次数 thres:损失函数阈值 */ def gradientDescent(X:Array[Array[Int]],y:Array[Int],learnRate:Double = 0.001,iterNum:Int = 1000,thres :Double = 0.0001):Array[Double]={ val theta:Array[Double] = new Array(X(0).length) var loss = 10000.0 for(i<- 0 to iterNum if loss > thres){ var errorSum = 0.0 for(row<-0 until X.length){ var rowSum = 0.0 for(col <- 0 until X(0).length){ rowSum += X(row)(col)*theta(col) } errorSum += y(row)-rowSum for(col <- 0 until X(0).length){ theta(col) += learnRate*errorSum*X(row)(col) } } loss = 0.0 for(row <- 0 until X.length){ var rowSum= 0.0 for(col <- 0 until X(0).length){ rowSum += X(row)(col)*theta(col) } loss += (rowSum - result(row))*(rowSum - result(row)) } } theta } def stochasticGradientDescent(X:Array[Array[Int]],y:Array[Int],learnRate:Double = 0.001,iterNum:Int = 1000,thres :Double = 0.0001):Array[Double]={ var theta:Array[Double] = new Array(X(0).length) var loss = 10000.0 for(i<- 0 to iterNum if loss > thres){ var errorSum = 0.0 val row = i % X.length var rowSum = 0.0 for(col <- 0 until X(0).length){ rowSum += X(row)(col)*theta(col) } errorSum += y(row)-rowSum for(col <- 0 until X(0).length){ theta(col) += learnRate*errorSum*X(row)(col) } loss = 0.0 for(row <- 0 until X.length){ var rowSum = 0.0 for(col <- 0 until X(0).length){ rowSum += X(row)(col)*theta(col) } loss += (rowSum - result(row))*(rowSum - result(row)) } } theta }}
1 0
- 梯度下降算法、随机梯度下降算法scala实现
- 随机梯度下降算法
- 随机梯度下降算法
- 随机梯度下降算法
- 随机梯度下降算法
- 梯度下降算法与随机梯度下降
- 梯度下降算法实现
- 随机梯度下降算法 matlab
- 随机梯度下降算法学习心得
- 梯度算法之批量梯度下降,随机梯度下降和小批量梯度下降
- 神经网络算法学习---梯度下降和随机梯度下降
- 批量梯度下降算法和随机梯度下降算法的代码实现
- java实现梯度下降算法
- 梯度下降算法 Python实现
- matlab实现梯度下降算法
- 感知机随机梯度下降与批量梯度下降算法matlab实现
- 【scala】简单线性回归的随机梯度下降算法实现:Linear Regression - SGD
- 并行随机梯度下降算法 PSGD
- 支付宝开发流程
- Opencv得到图像(IplImage)中的像素
- afasdf
- JSONP实例
- MySQL中函数CONCAT及GROUP_CONCAT
- 梯度下降算法、随机梯度下降算法scala实现
- cocoa pod项目管理中的问题
- Python数组定义
- 生信 Fastq 文件讲解
- git合并分支,并且删除本地和远程分支
- Html中代码换行造成空格间距的问题解析
- afas
- 免费馅饼
- Ubuntu程序员编程利器