zoukankan      html  css  js  c++  java
  • 相对熵(relative entropy或 KullbackLeibler divergence,KL距离)的java实现(三)

    代码下载

    https://files.cnblogs.com/finallyliuyu/KL.rar

    主函数代码

    主函数代码
    public static void main(String[] args) throws  FileNotFoundException,IOException
        {
            
            
            
    // TODO Auto-generated method stub;
            ArrayList<Entity> enList1=new ArrayList<Entity>();
            enList1
    =CalcuP("C:/Users/liuyu/workspace/KL/KL/zhangailing.txt");
            ArrayList
    <Entity> enList2=new ArrayList<Entity>();
            enList2
    =CalcuP("C:/Users/liuyu/workspace/KL/KL/zhangailing2.txt");
            ArrayList
    <Entity>enList3=new ArrayList<Entity>();
            enList3
    =CalcuP("C:/Users/liuyu/workspace/KL/KL/maozedong.txt");
         double f1=CalKL(enList1,enList2);
            double f2=CalKL(enList2,enList1);
            double f3=CalKL(enList1,enList3);
        
        double f4=CalKL(enList3,enList1);
            
    double f5=CalKL(enList2,enList3);
            
    double f6=CalKL(enList3,enList2);
            System.out.println(
    "《《小团圆》究竟泄了张爱玲什么“秘密”?》与《《小团圆》:张爱玲的一个梦》的KL距离: "+f1);
            System.out.println(
    "《《小团圆》:张爱玲的一个梦》与《《小团圆》究竟泄了张爱玲什么“秘密”?》的KL距离"+f2);
            System.out.println(
    "《《小团圆》究竟泄了张爱玲什么“秘密”?》与《1945年毛和蒋介石在重庆谈判前的秘密情报战》的KL距离 "+f3);
            System.out.println(
    "《1945年毛和蒋介石在重庆谈判前的秘密情报战》与《《小团圆》究竟泄了张爱玲什么“秘密”?》的KL距离 "+f4);
            System.out.println(
    "《“小团圆”张爱玲的一个梦》与《1945年毛和蒋介石在重庆谈判前的秘密情报战》的KL距离"+f5);
            System.out.println(
    "《1945年毛和蒋介石在重庆谈判前的秘密情报战》与《“小团圆”张爱玲的一个梦》的KL距离"+f6);

    a.以字符为单位的计算结果如下:

    《《小团圆》究竟泄了张爱玲什么“秘密”?》与《《小团圆》:张爱玲的一个梦》的KL距离: 2.269998592E9
    《《小团圆》:张爱玲的一个梦》与《《小团圆》究竟泄了张爱玲什么“秘密”?》的KL距离4.099975168E9
    《《小团圆》究竟泄了张爱玲什么“秘密”?》与《1945年毛和蒋介石在重庆谈判前的秘密情报战》的KL距离 3.029988864E9
    《1945年毛和蒋介石在重庆谈判前的秘密情报战》与《《小团圆》究竟泄了张爱玲什么“秘密”?》的KL距离 4.289972736E9
    《“小团圆”张爱玲的一个梦》与《1945年毛和蒋介石在重庆谈判前的秘密情报战》的KL距离4.10997504E9
    《1945年东和蒋介石在重庆谈判前的秘密情报战》与《“小团圆”张爱玲的一个梦》的KL距离3.539982336E9

    b.以词为单位计算结果如下

    《《小团圆》究竟泄了张爱玲什么“秘密”?》与《《小团圆》:张爱玲的一个梦》的KL距离: 5.629955584E9
    《《小团圆》:张爱玲的一个梦》与《《小团圆》究竟泄了张爱玲什么“秘密”?》的KL距离8.62991872E9
    《《小团圆》究竟泄了张爱玲什么“秘密”?》与《1945年毛和蒋介石在重庆谈判前的秘密情报战》的KL距离 6.50994432E9
    《1945年毛和蒋介石在重庆谈判前的秘密情报战》与《《小团圆》究竟泄了张爱玲什么“秘密”?》的KL距离 8.029924864E9
    《“小团圆”张爱玲的一个梦》与《1945年毛和蒋介石在重庆谈判前的秘密情报战》的KL距离9.219941376E9
    《1945年毛和蒋介石在重庆谈判前的秘密情报战》与《“小团圆”张爱玲的一个梦》的KL距离7.739928576E9

    从上面结果可以看出:《张秘密》与《张梦》之间距离最近,《毛》与《张梦》直接的概率分布距离近于《毛》与《张秘密》之间的概率分布。

    另外补充一点java传参的方式:对于简单类型采用值传递的方法;对于复杂类型采用的是引用传递的机制。这有点类似于matlab.所以,

     double f1=CalKL(enList1,enList2);
      double f2=CalKL(enList2,enList1);
      double f3=CalKL(enList1,enList3);

    CalKL函数中如果改变了enlist1,enlist2的值就会使结果不正确。

  • 相关阅读:
    mysql日期默认值格式('0000-00-00')错误解决
    休闲一下-精华-IMDB评分8分左右影片400多部!
    开机动画流程
    SystemServer启动服务
    理解Android进程创建流程
    android开机动画启动流程
    Android系统的启动优化
    Android 系统启动(init,zygote)
    Zygote
    init
  • 原文地址:https://www.cnblogs.com/finallyliuyu/p/1684043.html
Copyright © 2011-2022 走看看