感知器的scala实现

其实感知器学习算法,就是利用第一节介绍的单层感知器。首先利用给的正确数据,计算得到输出值,将输出值和正确的值相比,由此来调整每一个输出端上的权值。
这里写图片描述

公式便是用来调整权值,首先 是一个“学习参数”,一般我将它设置成小于1的正数。T便是训练数据中的正确结果, 便是第i个输入端的输入值,便是第i个输入端上面的权值。
关于感知器的scala代码实现如下:

object Perceptron{
    val sourceX = Array(Array(3,3),Array(4,3),Array(1,1))
    val resulty = Array(1,1,-1)
    def perceptronSGD(X:Array[Array[Int]],y:Array[Int],learnRate:Double = 0.001,iterNum:Int = 1000):(Array[Double],Double)={
            var theta:Array[Double] = new Array(X(0).length)
            var b = 0.0
            for(i<- 0 to iterNum){
                    val row = i % X.length
                    var rowSum = 0.0
                    for(col <- 0 until X(0).length){
                            rowSum += X(row)(col) * theta(col)
                    }
                    rowSum = (rowSum + b) * y(row)
                    if(!(rowSum > 0)){
                            for(col <- 0 until X(0).length){
                                    theta(col) = theta(col) + learnRate * y(row) * X(row)(col)
                            }
                            b = b + learnRate * y(row) 
                    }
            }
            (theta,b)
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值