欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

皮尔逊相关系数的java实现,皮尔系数java,相关系数的值介于–1与+

来源: javaer 分享于  点击 41880 次 点评:233

皮尔逊相关系数的java实现,皮尔系数java,相关系数的值介于–1与+


相关系数的值介于–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为高度线性相关。代码来源:http://blog.csdn.net/larrylgq/article/details/7350842

[Java]代码

package cn.outofmemory;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()){            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()){                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;    }}
相关栏目:

用户点评