/**离线优化
* @param wekaModel 模型
* @param valuesList 3个Double数组:第1个-正值为条件变量,负值为优化变量;第2个-下限;第3个-上限
* @param findMax true为求最大值;false为求最小值
* @param values
* @return 优化后的值
*/
public double[] optimize(WekaModel wekaModel, List<Double[]> valuesList, boolean findMax){
//最优参数
Double[] optResult = null;
//待优化参数
Double[] values4Opt = valuesList.get(0);
//参数下限
Double[] valuesMin = valuesList.get(1);
//参数上限
Double[] valuesMax = valuesList.get(2);
//最优值
Double optValue = 0.0;
//存放每个位号累计的次数
int[] addnums = new int[values4Opt.length];
//每次累加后的值
double[] newvalues = new double[values4Opt.length];
//是否继续遍历
boolean isGoing = true;
//addnums[0]为第一个参数累计次数
for(addnums[0]=0; addnums[0]<=grading; ){
//n为参数的个数,每个位号累计times次,下个位号+1,本位号清零
for(int n=0; n<addnums.length-1; n++){
//本参数的累积次数
int addnum = addnums[n];
//判断累加是否完毕
if(addnum >= grading){
//判断是否为最后一列
if(n==addnums.length-2){
//优化结束
isGoing = false;
}else{
//下个位号+1,本位号清零
addnums[n] -= grading;
//如果该位号为自变量,使用已给值,不枚举
if(values4Opt[n+1] != null){
addnums[n+1] += grading;
}else{
addnums[n+1] ++;
}
}
}
}
if(isGoing==false){
break; //优化结束
}
//用值替换位号
for(int i=0; i<values4Opt.length-1; i++){
//根据位号获取配置的上下限信息
Double minValue = valuesMin[i];
Double maxValue = valuesMax[i];
//替换位号sql
if(values4Opt[i] != null){
newvalues[i] = values4Opt[i];
}else{
newvalues[i] = minValue
+(maxValue-minValue)/(grading-1)*addnums[i];
}
}
//计算优化公式
newvalues[newvalues.length-1] = this.predict(newvalues);
//最优结果处理
if(newvalues[newvalues.length-1] > optValue){
optValue = newvalues[newvalues.length-1];
}
//如果该位号为自变量,使用已给值,不枚举
if(values4Opt[0] != null){
addnums[0] += grading;
}else{
addnums[0] ++;
}
}
return null;
}
分享到:
相关推荐
**基于Weka的数据分类分析实验报告** 在信息技术领域,数据挖掘是至关重要的组成部分,它从海量数据中提取有价值的信息和知识。Weka是一款强大的、开源的机器学习和数据挖掘工具,广泛应用于教育和研究领域。本实验...
通过基于Weka和Matlab的实验操作,学习者不仅能够掌握多层感知机模型的构建和优化过程,而且能够了解MLP在医学、生物学等多个领域的应用价值。Weka通过简单的图形界面为学习者提供了直观的模型操作方式,而Matlab...
同时,通过阅读源码,还可以学习到如何优化算法性能、处理大数据集以及并行计算等方面的知识。 总的来说,这个压缩包是一份宝贵的教育资源,可以帮助开发者深入理解Weka中的各种机器学习算法,提升他们在数据科学...
"基于weka对银行客户信息的关联分析及apriori算法实现"这一标题揭示了本文档的核心内容。首先,"weka"是新西兰怀卡托大学开发的一个开源数据挖掘工具,它提供了丰富的机器学习算法和数据预处理功能。在这里,weka被...
本文专注于基于WEKA平台的数据挖掘研究与二次开发,特别是针对K-Means聚类算法的优化。 WEKA是一个强大的开源数据挖掘软件,包含了多种机器学习算法、数据预处理、分类、聚类、关联规则挖掘和可视化工具。它由...
在Weka中,我们有多种选择,如IBk()实现k最近邻算法,LBR()实现了朴素贝叶斯分类,J48()则基于C4.5决策树。M5P()结合了树结构和线性回归,适用于连续数据的回归。对于单层决策树,有DecisionStump();SMO()支持向量...
Weka的核心是Java编程语言,其算法库是基于Java类实现的。新算法的添加意味着你需要编写一个新的Java类,该类需要遵循Weka规定的接口和约定。在Weka中,分类、聚类、关联规则等不同类型的算法都有对应的基类,比如`...
WEKA(Waikato Environment for Knowledge Analysis)是一个强大的数据挖掘工具,由新西兰怀卡托大学开发,...在实践中,不断学习和优化算法,有助于提升数据挖掘的效果和效率,为各种业务场景提供更精准的预测和洞察。
本文主要围绕基于Weka平台的J48决策树算法进行实验研究,并与其他常见决策树算法进行比较。 首先,J48算法是在ID3算法基础上的改进。ID3算法以信息熵为基础,选择最优属性来划分数据集,但其对连续属性处理能力有限...
在探讨网格环境下基于Weka4WS的分布式聚类算法时,我们首先要了解几个核心概念。首先,“网格”是一种分布式计算基础设施,它将分散在不同地理位置的计算资源(例如处理器、存储器、数据、仪器等)有机地整合起来,...
综上所述,基于Weka平台的乳腺癌诊断分类研究,利用了数据挖掘和决策树算法,通过对各种临床特征的分析,构建了有效的诊断模型。这种方法不仅有助于提高乳腺癌的早期诊断率,也为其他疾病的预测提供了有价值的参考。...
DBSCAN 算法是一种基于密度的空间聚类算法。它通过查找高密度区域并连接它们来形成簇。在 WEKA 中,我们设定 DBSCAN 的参数为:Eps=0.5,MinPts=5。Eps 是两个对象之间的最大距离,MinPts 是一个对象成为核心对象所...
### 基于Weka的数据挖掘技术深度解析 #### 一、Weka系统与数据挖掘算法的融合 《基于Weka的相关数据挖掘介绍》是一本深入探讨如何利用Weka系统进行数据挖掘的专著,由多位领域内的专家共同编写,包括Remco R. ...
2. 随机搜索:随机搜索是一种基于概率的参数优化方法,它通过随机选择参数来搜索最优的参数。 WEKA是一个功能强大且灵活的机器学习工具,提供了大量的机器学习算法和数据预处理方法。合适地选择算法和参数设置是...
基于WEKA的高校学生综合测评数据挖掘 数据挖掘技术是指从大量的数据中提取或“挖掘知识”,通过数据挖掘,人们可以从大量不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含其中、事先不知道但又具有潜在...