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 python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- java 判断类型_如何快速入门Java编程学习(干货)
一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...
- 支持java虚拟主机_为何缺乏支持Java的虚拟主机
现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...
- 做Java头发少_这35个Java代码优化细节,你用了吗
链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...
- 我的世java途径错误_我的世界JAVA路径错误的解决方法分享
我的世界JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?第一手游网必须 ...
- java编程赋值运算符_跟我学java编程—简单赋值运算符“=”
赋值运算符是双目运算符,用在赋值表达式中.赋值运算符将值存储在运算符左边操作数指定的变量中.有两种赋值操作,简单赋值和复合赋值,简单赋值把运算符右边的操作数的值存储在运算符左边操作数指定的变量中:复合 ...
- java session使用_使用Neo4j和Java进行大数据分析 第2部分
本文的第一部分介绍了Neo4j及其Cypher查询语言.如果您已经阅读了第1部分,那么您已经了解了为什么Neo4j和其他图形数据库特别受社交图形或网络中用户之间关系建模的影响.您还在开发环境中安装了N ...
- java 异常信息_优雅的异常处理 -- Java中的异常
处理异常自己处理 try-catch抛出让别人处理 throws 获得异常信息 直接打印异常对象 通过异常对象调用getMessage()方法获得 通过异常对象调用printStackTrace()方 ...
- java基础知识点_零基础学习Java语言,各个阶段需要掌握的知识点
随社会的脚步的不断发展,Java技术在不断的与时俱进,这也是Java一直长盛不衰的原因之一.Java技术的学习,永远没有早晚之分,技不压身,对于21世纪的我们80后,90后,甚至00后,尤其适用! 那 ...
- java类加载过程_面试官:java类的加载过程
Java 类加载机制 类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段. 其中类加载过程包括加载.验证.准备.解析和初始化五个阶段. 类的加载 ...
最新文章
- mysql四维数组_MySQL如何实现数组功能
- 操作系统机制学习总结
- SpringMvc 03 非注解形式下的映射器与适配器
- 文本框中只能输入小于等于100的正整数
- 安全系列之一:如何利用IPSec保证远程桌面的安全性!(上)
- Java的IO操作(五) - PrintStream类、字符流、Reader和Writer、带缓冲的字符流BufferedReader和BufferedWriter...
- html 忽略标签属性,限制文本一定数目的字符忽略HTML标签/属性
- 如何利用FL Studio进行听湿录干的声音录制
- 线性判别用于提取词向量_各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)?...
- 世界500强面试题(趣味智力测试题)
- Win11修改用户名(超详细图文)
- 一个免费ss网站的数据爬取过程
- Oracle学习——第五讲(约束)
- 虚拟的云xx经济越热闹,现实的自己就越孤独
- 806管理学原理考研复习资料
- yigo基础学习笔记1
- 搭建Ubuntu14.04编译环境并下载源代码(一)
- 黑马SQL入门到精通笔记 —— 进阶篇
- 推荐一个GitHub上牛b的Java学习项目已整理成了文档版本
- ClassLayout ,JOL Maven地址及锁64位状态图
热门文章
- java中CardLayout的使用方法
- Android SDK Manager 在win8.1上的闪退问题【转载】
- asp.net 下载文件
- 利用div的定位制作复杂的页面布局
- POJ 2533 Longest Ordered Subsequence 动态规划
- resin php extensions sockets,linux 有关笔记
- html5网页自动滚动,Html5 滚动穿透的方法
- python权重初始值设置_pytorch自定义初始化权重的方法
- Oracle杀事务数据库崩溃,关于pl/sql dev窗口崩溃导致锁表
- spring security:自定义认证成功处理器