JAVA一元线性回归法_一元线性回归的java实现
我们有两组数据,比如连续5年的pv与uv。
我们想预测一下,uv达到500k那么pv会是多少。当然更有意思可能是,如果销售额是500w的话,pv会是多少。
机器学习里的一元线性回归方法是比较简单的方法,就是我们猜是满足y=wx+b的。
那么,按求均方误差的偏导后,可得到如下两公式:
下面是求b的公式,要用到w:
用java代码来实现一下这两公式:
package net.highersoft.svm;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.List;
public class TestLineXY {
public static void main(String[] args) {
DecimalFormat df=new DecimalFormat("0.##");
//x pv
//y uv
List x=Arrays.asList(5,9,15,19,19,45);
List y=Arrays.asList(4,6,12,15,15,37);
/*
List x=Arrays.asList(4,6,8,10,12);
List y=Arrays.asList(7.8d,9.3d,9.9d,11.2d,11.9d);
*/
System.out.println(x+""+y);
if(x.size()!=y.size()) {
System.out.println("分子分母数量不一致。");
return;
}
long sum=0;
for(Integer xi:x) {
sum+=xi;
}
double avgx=sum*1.0/y.size();
System.out.println("avg_x:"+avgx);
//w的分子
double w_molecule=0;
for(int i=0;i
w_molecule+=y.get(i)*(x.get(i)-avgx);
//System.out.print(y.get(i)+"*("+x.get(i)+"-"+avgx+") +");
}
System.out.println();
//System.out.println("w_molecule:"+w_molecule);
//w的分母
double w_denominator=0;
int w_denominator_xi=0;
for(int i=0;i
w_denominator+=Math.pow(x.get(i),2);
w_denominator_xi+=x.get(i);
}
w_denominator=w_denominator-(1.0/x.size())*(Math.pow(w_denominator_xi,2));
//System.out.println("w_denominator:"+w_denominator+" w_denominator_xi:"+w_denominator_xi);
double w=w_molecule/w_denominator;
System.out.println("w:"+w);
double b=1.0/x.size();
double sum_y_wx=0;
for(int i=0;i
sum_y_wx+=(y.get(i)-w*x.get(i));
}
b=b*sum_y_wx;
System.out.println("b:"+b);
String symbol="+";
if(b<0) {
symbol="";
}
System.out.println("y="+df.format(w)+"x"+symbol+df.format(b));
System.out.println(w*15+b);
}
}
评论:
提交
JAVA一元线性回归法_一元线性回归的java实现相关推荐
- java 基础 笔试题_非常全面的java基础笔试题
1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...
- java list e 查找_源码(04) -- java.util.ListE
java.util.List 源码分析(JDK1.7) ------------------------------------------------------------------------ ...
- java我的世界_我的世界Java版
我的世界Java迎来了新玩法新版本,更加自由好玩的沙盒世界,一场非对称性的竞技战斗环节,玩家可以自由发挥,在这里玩家就是世界的主宰.在偌大的沙盒世界里,玩家可以根据自己的需求进行建造.体验建造.守卫和 ...
- 李兴华java视频在线观看_李兴华Java开发实战经典视频教程_IT教程网
资源名称:李兴华Java开发实战经典视频教程 资源目录: [IT教程网]010201_[第2章:简单Java程序]_简单Java程序 [IT教程网]010301_[第3章:Java基础程序设计]_Ja ...
- 李兴华java实战经典视频_李兴华Java开发实战经典视频教程
资源名称:李兴华Java开发实战经典视频教程 资源目录:[一品资源网]010201_[第2章:简单Java程序]_简单Java程序[一品资源网]010301_[第3章:Java基础程序设计]_Java ...
- java中char类型_【考点】JAVA中的char类型
写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...
- java面试32问_学员分享:JAVA面试32问(11-20)
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;有错,s1是shor ...
- java下拉菜单_薪资对比:Java开发和web前端薪资哪个好
Web前端开发和Java开发哪个薪资更高,Web前端开发和Java开发发展前景更好? 互联网行业飞速发展,因此有很多小伙伴想要进入IT行业分一杯羹,但是学什么技术更好,哪一个语言的就业薪资更高,就成了 ...
- java为什么被开发者_为什么开发者对Java 9如此的兴奋
随着标准 Java 的版本更新,开发者总是可以从升级后的版本中获取想要的功能.那么 Java 9 的发布为什么会让开发者如此的兴奋?下面列出了一些主要原因: 1.模块化的源代码 JDK 源代码将以模块 ...
- java主要内存区域_可能是把Java内存区域讲的最清楚的一篇文章
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄 ...
最新文章
- java 静态内部类
- python整型为空的情况_深度剖析凭什么python中整型不会溢出
- c语言memset函数作用,详解C语言中的memset()函数
- 前端验证的Ajax框架——myAjax.js
- android 自定义输入法布局,Android 输入法详解
- AI嘻哈写歌词软件总结
- 双向链表、双向循环链表
- ObjectARX动态添加AutoCAD传统下拉菜单入门篇(一)
- 希尔密码(原理+代码)
- 计算机职称英浯单词背记 app,8款经典背单词软件 帮你轻松过英语6级
- Win10 删除 微软输入法
- [VN2020 公开赛]simpleHeap-记录一次gef调试过程
- 精挑细选的良心APP,每款都非常惊艳
- 计算数据的经验分布函数与MATLAB作图
- 【项目】问答系统-代码-后台
- 利用python进行身份证号码大全_2分钟就能学会的3个函数,快速从身份证中提取出生日期、年龄...
- 2020年机械员-岗位技能(机械员)考试及机械员-岗位技能(机械员)考试资料
- CentOS7安装guacamole
- ip68能达到什么程度防水_运动达到什么程度才能达到减肥健身的效果?
- Python 入门指南第二节 | 使用 Python 解释器