机器学习知识点(二)各类型平均数Java实现
2017-01-06 11:20
357 查看
代码如下:
package sk.ann; import java.text.DecimalFormat; import java.util.Random; /* * 功能:计算并比较各类型平均数,调和<=几何<=算术<=平方 * 作者:Jason.F * 时间:2017年1月6日 */ public class Average { private final static double dmax=999;//Double.MAX_VALUE;//Double类型的最大值,太大的double值,相乘会达到无穷大 private final static double dmin=Double.MIN_VALUE;//Double类型的最小值 private final static int n=100;//假设求取100个doubl数的各类平均值 public static void main(String[] args){ Random random = new Random(); double[] x=new double ; for(int i=0;i<n;i++){//随机生成n个double数 x[i]=Double.valueOf(Math.floor(random.nextDouble()*(dmax-dmin))); } //设置doubl字符串输出格式,不以科学计数法输出 DecimalFormat df=new DecimalFormat("#,##0.00");//格式化设置 //计算调和平均数 double dHM=HarmonicMean(x); System.out.println("调和平均数="+df.format(dHM)); //计算几何平均数 double dGM=GeometricMean(x); System.out.println("几何平均数="+df.format(dGM)); //计算算术平均数 double dAM=ArithmeticMean(x); System.out.println("算术平均数="+df.format(dAM)); //计算平方平均数 double dMS=MeanSquare(x); System.out.println("平方平均数="+df.format(dMS)); //计算中位数,用冒泡排序 double dMN=MedianNumber(x); System.out.println("中位数="+df.format(dMN)); } //中位数,排序后去中间值,用冒泡排序 public static double MedianNumber(double[] x) { double temp; // 记录临时中间值 int m = x.length; // 数组大小 for (int i = 0; i < m - 1; i++) { for (int j = i + 1; j < m; j++) { if (x[i] < x[j]) { // 交换两数的位置 temp = x[i]; x[i] = x[j]; x[j] = temp; } } } if(m%2==0) //偶数 return (x[m/2]+x[m/2+1])/2;//偶数 else //奇数 return x[m/2+1]/2; } //算术平均数:是一组数据的代数和除以数据的项数所得的平均数 public static double ArithmeticMean(double[] x){ int m=x.length; double sum=0; for(int i=0;i<m;i++){//计算x值的倒数 sum+=x[i]; } return sum/m; } //平方平均数:是一组数据的平方和除以数据的项数的开方 public static double MeanSquare(double[] x){ int m=x.length; double sum=0; for(int i=0;i<m;i++){//计算x值的倒数 sum+=x[i]*x[i]; } return Math.sqrt(sum/m); } //几何平均数:是n个数据的连乘积的开n次方根。 public static double GeometricMean(double[] x){ int m=x.length; double sum=1; for(int i=0;i<m;i++){//计算x值的倒数 sum*=x[i]; } return Math.pow(sum,1.0/m);//返回sum的m次方根 } //调和平均数:一组数据的倒数和除数据的项数的倒数。 public static double HarmonicMean(double[] x){ int m=x.length; double sum=0; for(int i=0;i<m;i++){//计算x值的倒数 sum+=1/x[i]; } return m/sum; } }
随机执行的一次结果:各类型平均数排序调和<=几何<=算术<=中位<=平方
调和平均数=218.12 几何平均数=407.75 算术平均数=534.11 平方平均数=610.11 中位数=535.00
相关文章推荐
- 机器学习知识点(五)梯度下降法Java实现
- 机器学习知识点(十六)集成学习AdaBoost算法Java实现
- 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现
- 机器学习知识点(八)感知机模型Java实现
- 机器学习知识点(十九)矩阵特征值分解基础知识及Java实现
- 机器学习知识点(三)方差和标准差Java实现
- 机器学习知识点(九)BP神经网络Java实现
- 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库
- 机器学习知识点(三十)LDA话题模型Java实现
- 机器学习知识点(二十)矩阵奇异值分解基础知识及Java实现
- 机器学习知识点(十八)密度聚类DBSCAN算法Java实现
- 机器学习知识点(七)决策树学习算法Java实现
- 机器学习知识点(四)最小二乘法Java实现
- 机器学习知识点(一)文本字符信息熵Java实现
- 在java中实现日期类型和字符串类型的转换大全(Date String Timestamp Datetime)
- java接口类型变量能调用已经被实现的这个接口的方法吗
- java 实现 c#中的Uint32类型
- 2.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端实现类
- java国际化实现(java开发实战经典 知识点4)
- java之基本类型问题知识点