java线性规划_线性规划的代码实现
1 importjava.io.BufferedReader;2 importjava.io.File;3 importjava.io.FileReader;4 importjava.io.IOException;5
6 /**
7 * 线性回归8 *@authorCassieRyu9 *批量梯度下降法10 */
11 public classLinear {12
13 private double[][] trainData;//训练数据集
14 private int row; //训练集的行(样本数目)
15 private int column; //训练集的列(特征数目+2)第一行是人为添加的x0, 最后一列为y值
16
17 private double[] theta; //参数theta向量
18 private double alpha; //步长
19 private int iteration; //迭代次数20
21 //构造函数
22 public Linear(String fileName, double alpha, intite){23 int rowF=getRowFromFile(fileName);24 int columnF =getColumnFromFile(fileName);25
26 row =rowF;27 column = columnF+1; //为了计算方便,加上x0那行
28
29 trainData = new double[row][column];30 loadTrainData(fileName);31
32 this.alpha =alpha;33 this.iteration =ite;34
35 theta = new double[column-1];//减去y对应的那行
36 initializeTheta();//theta的初始化
37
38 trainedTheta();//训练后的theta值
39 }40
41 //返回训练集的样本数目row
42 public intgetRowFromFile(String fileName){43
44 int count=0;45 File file = newFile(fileName);46 BufferedReader br = null;47 try{48 br = new BufferedReader(newFileReader(file));49 String temp = null;50 while((temp = br.readLine())!=null){ //循环读取下一行
51 count++;52 }53 }catch(IOException e){54 e.printStackTrace();55 }finally{56 if(br!=null)57 try{58 br.close();59 }catch(IOException e1){60
61 }62 }63
64 returncount;65 }66
67 //返回训练集列数,不包含x0
68 public intgetColumnFromFile(String fileName){69
70 int count=0;71 File file = newFile(fileName);72 BufferedReader br = null;73 try{74 br = new BufferedReader(newFileReader(file));75 String temp = null;76 if((temp = br.readLine())!=null){77 String [] tempStr = temp.split(" ");//用空格将列分开
78 count = tempStr.length;//数组长度为列的数目
79 }80 }catch(IOException e){81 e.printStackTrace();82 }finally{83 if(br!=null)84 try{85 br.close();86 }catch(IOException e1){87
88 }89 }90
91 returncount;92 }93
94 //返回训练集
95 public voidloadTrainData(String fileName){96
97 //初始化x0为1
98 for(int i=0;i
101 File file = newFile(fileName);102 BufferedReader br = null;103 try{104 br = new BufferedReader(newFileReader(file));105 String temp = null;106 int count=0;107 while((temp = br.readLine())!=null){ //行循环
108 String [] tempStr = temp.split(" ");//用空格将列分开
109
110 for(int i=1;i
111 trainData[count][i] = Double.parseDouble(tempStr[i-1]);112 count++; //行号加1
113 }114 }catch(IOException e){115 e.printStackTrace();116 }finally{117 if(br!=null)118 try{119 br.close();120 }catch(IOException e1){121
122 }123 }124 }125
126 //初始化theta的值
127 public voidinitializeTheta(){128
129 for(int i=0;i
133 //训练theta的值
134 public voidtrainedTheta(){135
136 while((iteration--)>0){//迭代次数137
138 //每迭代一次需带入新的theta值重新计算一次h(xi)-y(i)
139 double[] temp = new double[row];140 temp=getDerivation(); //h(xi)-y(i)
141
142 for(int j=0;j
143 double []tep = new double[row];144 double result=0.0;145 for(int i=0;i
147 result+=tep[i];148 }149 theta[j]-= alpha*result;150 }151 }152 }153
154 //得到(theta(k)*X(ik)-Y(i))即(h(xj)-yj)
155 public double[] getDerivation(){156
157 double [] deff = new double[row];158
159 for(int i=0;i
166 //得到theta(k)*X(ik)
167 public double getHypothesisFunc(int i){ //i为具体的某一行
168
169 double result=0;170 for(int k=0;k
176 //打印训练集
177 public voidprintTrainData(){178
179 System.out.printf("\n训练集:\n");180
181 for(int i=0;i
184 for(int j=0;j
191 }192
193 //打印theta值
194 public voidprintTheta(){195
196 System.out.printf("Theta集:\n");197 for(int j=0;j
203 //预测过程,即将theta带入h函数
204 public double predict(double[] newData){205
206 double h=0.0;207 for(int i=0;i
java线性规划_线性规划的代码实现相关推荐
- java 整数规划_线性规划与整数规划求解速度对比
文章发表于微信公众号[数据魔术师]:线性规划&整数规划求解速度PK线性规划&整数规划求解速度PKmp.weixin.qq.com 相信大家对线性规划和整数规划应该不陌生,在开始今天的 ...
- python混合整数线性规划_【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现...
相关知识点 LP线性规划问题 Linear Problem [百度百科]:研究线性约束条件下线性目标函数的极值问题的数学理论和方法. 学过运筹学的小伙伴,可以看这个LP问题的标准型来回顾一下: 不太熟 ...
- 堆排序java实例_堆排序(示例代码)
前言:网上有很多堆排序的案例,我只想写自己堆排序. 一:堆结构 即:一个父节点最多只能有两个子节点(可以没有),如下图 图1 图2 图3 图4 二: 数组 ...
- dw java 编码_不写代码 用Dreamweaver轻松插入Java特效
利用 Java 技术制作网页特效,可以使网页升动美观,然而, Java 命令并不是那么容易掌握的,很多读者看到编程语句就头晕.本实例将为读者介绍一个好东西 --Anfy Java ,有了它,可以不用编 ...
- cloc JAVA文件_工具-cloc代码行数统计工具
cloc 代码行统计工具 计算代码行.注释行.空行量的工具.支持多种语言. 例如统计一下vue项目里的src文件夹下的代码: 安装方式 npm install -g cloc # https://ww ...
- java整人_整人“病毒”代码(一)
前段时间看到大家对这种整人的代码兴趣还挺浓厚的,我最近就收集了一些和大家分享. PS:由于精力问题没有对代码的可用性进行一一验证,所以不保证全部可用,大家如果发现有不可用的或者需要改进的地方请提出来, ...
- java 静态代码块_关于Java你不知道的那些事之代码块
前言 普通代码块:在方法或语句中出现的{},就被称为代码块 静态代码块:静态代码块有且仅加载一次,也就是在这个类被加载至内存的时候 普通代码块和一般语句执行顺序由他们在代码中出现的次序决定,先出现先执 ...
- 单纯形法只有两个约束条件_线性规划之单纯形法【超详解+图解】
使用单纯型法来求解线性规划,输入单纯型法的松弛形式,是一个大矩阵,第一行为目标函数的系数,且最后一个数字为当前轴值下的 z 值.下面每一行代表一个约束,数字代表系数每行最后一个数字代表 b 值. 算法 ...
- 区块链 java 开源_详细介绍Java区块链开源代码背后的内容
什么是Java区块链开源代码?它是一种分布式分类帐技术,将所有不同的属性放在一起.那么Java区块链开源代码就可以通过不同的共识机制,使所有添加的数据不变.2015年之前,估计大家都知道的区块链的申请 ...
- java bitset用途_浅谈Java BitSet使用场景和代码示例
搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...
最新文章
- 别太把图神经网络当回事儿
- opentracing
- 创新时代的管理:《创新赢天下》
- PostgreSQL 并行vacuum patch - 暨为什么需要并行vacuum或分区表
- SAP内存和ABAP内存的简单介绍说明
- CIKM 2021 | Google出品:将对比学习用于解决推荐系统长尾问题
- 中国男人何时回归家庭?(转)
- 为Lucene选择快速唯一标识符(UUID)
- linux内核cpu负载计算,CPU 负载 — The Linux Kernel documentation
- 第五课 机器学习中的特征工程
- 学生信息管理系统问题集锦(一)
- 0010-伪类选择器-前端学习笔记
- 190526每日一句,自律克制,告别懒惰
- 控制系统状态空间表达式的解(1)——求解线性定常系统零输入响应
- cie色度图matlab,带你解读 CIE1931色度图
- DM8 数据库连接Alibaba druid 提示:dbType not support
- 2022年考研计算机组成原理_4 指令系统
- random_state = 42
- Apache ECharts数据可视化(连接数据库)
- emacs 基本配置