机器学习知识点(二)各类型平均数Java实现

来源:互联网 发布:mac桌面不见 编辑:程序博客网 时间:2024/05/18 03:16





代码如下:

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[n];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



0 0
原创粉丝点击