• 皮尔逊相关系数的java实现


    相关系数的值介于–1与+1之间,即–1≤r≤+1。其性质如下:
    当r>0时,表示两变量正相关,r<0时,两变量为负相关。
    当|r|=1时,表示两变量为完全线性相关,即为函数关系。
    当r=0时,表示两变量间无线性相关关系。
    当0<|r|<1时,表示两变量存在一定程度的线性相关。
    且|r|越接近1,两变量间线性关系越密切;
    |r|越接近于0,表示两变量的线性相关越弱。
    一般可按三级划分:|r|<0.4为低度线性相关;
    0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关。
    1. [代码][Java]代码    
    package com.Social.cbra.praron2;
     
     
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.logging.Logger;
     
    /**
     * 
     * @author larry
     * 
     */
    public class Similarity {
        static Logger logger = Logger.getLogger(Similarity.class.getName());
        Map<String, Double> rating_map = new HashMap<String, Double>();
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            Similarity similarity1 = new Similarity();
            similarity1.rating_map.put("1", 434d);
            similarity1.rating_map.put("2", 7d);
            similarity1.rating_map.put("3", 23d);
            Similarity similarity2 = new Similarity();
            similarity2.rating_map.put("1", 6d);
            similarity2.rating_map.put("2", 2d);
            similarity2.rating_map.put("3", 6d);
            logger.info("" + similarity1.getsimilarity_bydim(similarity2));
        }
     
        public double getsimilarity_bydim(Similarity u) {
            double sim = 0d;
            double common_items_len = 0;
            double this_sum = 0d;
            double u_sum = 0d;
            double this_sum_sq = 0d;
            double u_sum_sq = 0d;
            double p_sum = 0d;
             
            Iterator<String> rating_map_iterator = this.rating_map.keySet().iterator();
            while(rating_map_iterator.hasNext()){http://www.huiyi8.com/flashjc/
                String rating_map_iterator_key = rating_map_iterator.next();
                Iterator<String> u_rating_map_iterator = u.rating_map.keySet().iterator();
                while(u_rating_map_iterator.hasNext()){flash教程
                    String u_rating_map_iterator_key = u_rating_map_iterator.next();
                    if(rating_map_iterator_key.equals(u_rating_map_iterator_key)){
                        double this_grade = this.rating_map.get(rating_map_iterator_key);
                        double u_grade = u.rating_map.get(u_rating_map_iterator_key);
                        //评分求和
                        //平方和
                        //乘积和
                        this_sum += this_grade;
                        u_sum += u_grade;
                        this_sum_sq += Math.pow(this_grade, 2);
                        u_sum_sq += Math.pow(u_grade, 2);
                        p_sum += this_grade * u_grade;  
                        common_items_len++;
                    }
                }
            }
            //如果等于零则无相同条目,返回sim=0即可
            if(common_items_len > 0){
                logger.info("common_items_len:"+common_items_len);
                logger.info("p_sum:"+p_sum);
                logger.info("this_sum:"+this_sum);
                logger.info("u_sum:"+u_sum);
                double num = common_items_len * p_sum - this_sum * u_sum;
                double den = Math.sqrt((common_items_len * this_sum_sq - Math.pow(this_sum, 2)) * (common_items_len * u_sum_sq - Math.pow(u_sum, 2)));
                logger.info("" + num + ":" + den);
                sim = (den == 0) ? 1 : num / den;
            }
             
            //如果等于零则无相同条目,返回sim=0即可
            return sim;
        }
     
    }

  • 相关阅读:
    【单调栈】求一个数组第一个比他小的数的位置
    【双向bfs】2017多校训练十 HDU 6171 Admiral
    【归并排序求逆序对个数】【树状数组求逆序对个数】
    【单调队列优化dp】uestc 594 我要长高
    【单调队列优化dp】HDU 3401 Trade
    【单调队列+尺取】HDU 3530 Subsequence
    linux下备份目录文件及目录
    浅谈 Python 的 with 语句
    SQLAlchemy中scoped_session
    pycharm自定义代码片段
  • 原文地址:https://www.cnblogs.com/xkzy/p/3895205.html
Copyright © 2020-2023  润新知