机器学习(1)-- Rosenblatt感知器Java代码实现

机器学习(1)-- Rosenblatt感知器Java代码实现

在代码实现过程中,首先是初始样本点,然后再对这些样本点进行各种操作!(直接上代码吧)
##豆豆样本的生成
首先对这些豆豆进行一下简单说明:x代表豆豆的大小,y代表豆豆的毒性;其中豆豆大小与毒性成正相关
生成豆豆代码:

public class Bean {

double xs;  //豆豆大小
double ys;  //豆豆毒性
static double w = 0.5; //初始认知

static double maxOffset = 1.1;
static double minOffset = 0.9;

public Bean() {
}

public Bean(double xs, double ys) {
    this.xs = xs;
    this.ys = ys;
}

public double getXs() {
    return xs;
}

public double getYs() {
    return ys;
}


@Override
public String toString() {
    return "Bean{" +
            "xs=" + xs +
            ", ys=" + ys +
            ", w=" + w +
            '}';
}

}

豆豆服务类
这块代码就是生成豆豆以及计算豆豆误差。
public class BeanServe {

static Random random = new Random();
/**
 * 造豆豆
 */
public static ArrayList<Bean> creatBeans(int num) {

    ArrayList<Bean> list = new ArrayList<>();
    for (int i = 0; i < num; i++) {
        double xs = random.nextDouble();
        double ys = xs * (Bean.minOffset + (Bean.maxOffset - Bean.minOffset) * xs * random.nextDouble());
        Bean bean = new Bean(xs, ys);
        list.add(bean);
    }
    return list;
}

/**
 * 计算一个豆豆的误差
 */
public static void opdateSingleError(Bean bean) {

    double y_pre = Bean.w * bean.xs;
    double e = bean.ys - y_pre;
    double alpha = 0.05;
    Bean.w = Bean.w + alpha * e * bean.xs;
}

/**
 * 更新一群豆豆的误差
 */
public static void opdateArrError(ArrayList<Bean> list) {

    Iterator<Bean> it = list.iterator();
    while (it.hasNext()) {
        BeanServe.opdateSingleError(it.next());
    }
}

}
程序入口
目的就是更新豆豆的认知,即斜率。
public class Main {

public static void main(String[] args) {

    //豆豆初始化
    ArrayList<Bean> beans = BeanServe.creatBeans(100);
    System.out.println(beans);

    //豆豆认知更新
    for (int i = 0; i < 100; i++) {
        BeanServe.opdateArrError(beans);
    }

    //打印最终豆豆
    System.out.println(beans);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值