marchine learning 余弦相似度计算

来源:互联网 发布:淘宝客佣金在哪里设置 编辑:程序博客网 时间:2024/06/13 03:01

直接上代码

import com.javaPractice.MachineLearning.core.Instance;/** * 计算余弦相似度 */public class CosineSimilarity {    public double calCosinDistance(Instance ins1, Instance ins2) {        if (ins1.noAttributes() != ins2.noAttributes()) {            throw new RuntimeException("数据实例的数目不一致");        }        double xy = 0;        double xx = 0;        double yy = 0;        for (int i = 0; i < ins1.noAttributes(); i++) {            xy += ins1.value(i) * ins2.value(i);            xx += ins1.value(i) * ins1.value(i);            yy += ins2.value(i) * ins2.value(i);        }        double cosSim = xy / (Math.sqrt(xx) * Math.sqrt(yy));        if (cosSim < 0) {            cosSim = 0;        }        return 0;    }    public double distance(Instance ins1, Instance ins2) {        if (ins1.noAttributes() != ins2.noAttributes()) {            throw new RuntimeException("两个数据实例的属性个数不一致");        }        return 1 - calCosinDistance(ins1, ins2);    }}
0 0
原创粉丝点击