本文章接上一篇来实现预测算法,首先是简易平均法。请看代码:
package cn.netjava.simpleaverage;
import java.util.ArrayList;
import java.util.List;
public class SimpleTest {
/**
* 简易平均法
* 1.算术平均
* 2.几何平均
* 3.加权平均
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Float> ls=new ArrayList<Float>();//用来存入用户输入的原始数据
for(int i=0;i<6;i++){ //赋初值,以方便测试
float a=i;
ls.add(a);
}
List<Float> ls1=new ArrayList<Float>();//求加权平均时用来存入对应的权值
for(int j=0;j<6;j++){
float b=(float) (j*0.1);
ls1.add(b);
}
SimpleTest wp=new SimpleTest();
float ma= wp.mathAve(ls);
double ge=wp.geoAve(ls);
float we=wp.weightAve(ls, ls1);
System.out.println("算术平均值为"+ma);
System.out.println("几何平均值为"+ge);
System.out.println("加权平均值为"+we);
}
//算术平均值,把输入的数据存入一个队列中然后调用,返回这个队列中所有数据的平均值
private float mathAve(List<Float> ls){
float num=0; //求和
for(int i=0;i<ls.size();i++){
float a=ls.get(i);
num=num+a;
}
float ave=num/ls.size();
return ave;
}
//几何平均值,返回double型的值
private double geoAve(List<Float> ls){
float num=1; //求各个数据的积
for(int i=0;i<ls.size();i++){
float a=ls.get(i);
num=num*a;
}
System.out.println("num"+num);
double y=java.lang.StrictMath.pow(num,1.0/ls.size());//给积开n次方
return y;
}
//加权平均,用到了两个队列,一个用来存放原始数据,另一个用来存入对应的权值
private float weightAve(List<Float> ls,List<Float> ls1){
float a=0,w=0,num=0;//a为原始数据,w为权值
for(int i=0;i<ls.size();i++){
a=ls.get(i); //得到原始数据
}
for(int j=0;j<ls1.size();j++){
w=ls.get(j); //得到原始数据
}
num=num+a*w;
float Ave=num/ls.size();
return Ave;
}
}
这段代码运行结果如下:
算术平均值为2.5
几何平均值为0.0
加权平均值为4.1666665
,几何平均值怎么会是0呢?不要着急,先喝一杯
,由于几何平均是先得到这组数据的积,再开n次方,而我们赋初值的时候第一个数是0,所以它们的积为0了,开方当然也就是0了。
由于下午有其它事要干,所以不能继续写下去了,不过我会尽快把后面的补上去,其实大家也看到了并没有我们想象中的那么难,我始终坚信,只有想不到,没有做不到,后面的算法相对来说实现起来相对复杂,不过没关系,我还是相信我都能搞出来并尽快和大家一起分享。
分享到:
相关推荐
总的来说,这个BP神经网络Java实现为理解和实践预测算法提供了一个基础平台,对于学习和研究神经网络算法的开发者来说,是一个有价值的资源。通过深入研究源代码,我们可以更深入地理解BP算法的工作原理,以及如何在...
- Slope One是一种简单的协同过滤预测算法,它通过计算用户对物品的平均评分差来预测未知评分。具体来说,对于两个物品i和j,slope one会计算已知评分的平均差异,并用这个差异来预测用户对物品j的评分。 - 在Java...
java代码实现指数平滑算法,其中包括一次,二次,三次
总结来说,ARIMA模型是一种强大的工具,能够处理各种类型的时间序列数据,而Java实现则提供了在实际业务场景中应用此模型的可能性。理解并掌握ARIMA模型的原理和实现细节,对于进行数据趋势预测分析具有重要意义。
本篇文章将深入探讨时间序列预测的基本原理,Java实现的关键步骤,以及如何通过实际的代码示例进行实践。 时间序列数据是按特定时间顺序收集的数值序列,例如股票价格、销售数据或天气温度。这些数据具有内在的时间...
这个Java实现的DEMO将帮助我们理解如何在编程环境中构建和应用ARIMA模型进行时间序列预测。以下是关于ARIMA模型和Java实现的相关知识点: 1. **ARIMA模型介绍**: - **自回归项(AR)**:ARIMA模型基于历史观测值...
总之,ARIMA模型是时间序列预测的重要工具,通过Java实现可以将这种统计方法集成到数据分析系统中。理解模型背后的理论,结合适当的库和编程技巧,可以在各种领域,如金融、气象预报、销售预测等,应用ARIMA模型进行...
在Java中实现随机森林算法通常需要使用机器学习库,比如Weka或者Apache Spark的MLlib。下面我将展示一个使用Weka库的简单示例,来说明如何使用随机森林算法对数据进行分类。 首先,你需要在项目中引入Weka库。如果...
总的来说,ID3算法是理解和实现机器学习基础的重要步骤,它的Java实现可以帮助开发者更深入地掌握数据分类和决策树的构建原理。通过分析和调试这个代码,可以提高对决策树算法的理解,为进一步探索更复杂的算法如C...
这篇博客“预测系统的设计与实现(附预测算法源码)”提供了一种深入理解如何构建预测模型和实现系统的途径,并且附带了实际的源代码,这对于学习者和开发者来说是一份宝贵的资源。 预测系统的核心是预测算法,它们...
5. **JAVA实现**:在JAVA环境下实现ARIMA模型,开发者通常会使用统计计算库如JFreeChart、Apache Commons Math或者专用的预测库如Openforecast。这些库提供了方便的API接口,用于构建和训练ARIMA模型,并进行预测。 ...
总之,Java实现kNN算法涉及数据预处理、距离计算、最近邻搜索和预测等多个环节。在设计和优化算法时,需要考虑到性能、准确性和适用场景,确保算法在实际应用中的有效性。同时,理解kNN算法背后的理论基础,可以帮助...
综上所述,Java实现Logistic回归涉及了数据处理、模型构建、优化算法等多个方面,需要对机器学习基础理论和Java编程有一定了解。在实际项目中,我们通常会结合现有的库来简化开发过程,并注重模型的评估和调优。
支持向量机(Support Vector Machine,简称SVM)是一种广泛应用于分类和回归分析的机器学习算法。...总的来说,Encog为Java开发者提供了一个强大且易用的SVM实现工具,使得在Java环境中应用SVM算法变得简单而高效。
在这个Java实现中,MRP系统可能包括以下几个关键部分: 1. **物料数据库**:系统会维护一个包含所有物料信息的数据库,如物料编码、描述、库存量、安全库存、预测需求等。在本案例中,数据存储在MySQL数据库中,...
描述中提到的博客文章提供了SMO算法的Java实现,这对于学习和理解算法的内部工作原理非常有帮助。通常,一个完整的Java SMO实现会包含以下几个关键步骤: 1. 初始化:设置参数,如惩罚参数C,选择初始的拉格朗日...
总的来说,kriging插值算法在Java中的实现提供了一种强大工具,用于处理空间数据的预测和分析,尤其在环境科学、地质学、气象学等领域有着广泛的应用。通过理解和掌握kriging方法,开发者可以更好地处理和理解复杂的...
总结来说,Java实现朴素贝叶斯算法涉及到数据预处理、概率计算、模型建立、预测以及模型评估等多个环节。通过理解算法原理并结合Java编程技巧,我们可以创建一个高效、可扩展的分类系统。在实际应用中,还需要考虑...
4. JAVA实现带界面的页面置换算法: 在这个项目中,开发者使用Java编程语言实现了上述三种页面置换算法,并提供了一个图形用户界面(GUI)。用户可以设定页面数量,生成随机页面序列,并在指定的物理块中观察页面...
朴素贝叶斯分类算法是一种基于概率的机器学习方法,它基于贝叶斯定理和特征...通过以上步骤,我们可以用Java实现一个完整的朴素贝叶斯分类算法。在实践中,还需要根据具体问题进行调整和优化,以达到最佳的分类效果。