package lpa;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map; public class LPA { public static float sigma = 1;
public static int tag_num = 2; public static void main(String[] args) { float[][] data = {
{1,1},
{1,2},
{2,1},
{2,2},
{4,4},
{6,6},
{6,7},
{7,6},
{7,7}
}; Map<Integer, Integer> tag_map = new HashMap<Integer, Integer>();
tag_map.put(1, 1);
tag_map.put(6, 0); float[][] weight = new float[data.length][data.length]; for(int i = 0; i < weight.length; i++) {
float sum = 0f;
for(int j = 0; j < weight[i].length; j++) {
weight[i][j] = (float) Math.exp( - distance(data[i], data[j]) / Math.pow(sigma, 2));
sum += weight[i][j];
}
for(int j = 0; j < weight[i].length; j++) {
weight[i][j] /= sum;
}
} System.out.println("=============");
for(int i = 0; i < weight.length; i++) {
System.out.println(Arrays.toString(weight[i]));
}
System.out.println("============="); float[][] tag_matrix = new float[data.length][tag_num];
for(int i = 0; i < tag_matrix.length; i++) {
if(tag_map.get(i) != null) {
tag_matrix[i][tag_map.get(i)] = 1;
} else {
float sum = 0;
for(int j = 0; j < tag_matrix[i].length; j++) {
tag_matrix[i][j] = (float) Math.random();
sum += tag_matrix[i][j];
}
for(int j = 0; j < tag_matrix[i].length; j++) {
tag_matrix[i][j] /= sum;
}
}
} for(int it = 0; it < 100; it++) {
for(int i = 0; i < tag_matrix.length; i++) {
if(tag_map.get(i) != null) {
continue;
}
float all_sum = 0;
for(int j = 0; j < tag_matrix[i].length; j++) {
float sum = 0;
for(int k = 0; k < weight.length; k++) {
sum += weight[i][k] * tag_matrix[k][j];
}
tag_matrix[i][j] = sum;
all_sum += sum;
}
for(int j = 0; j < tag_matrix[i].length; j++) {
tag_matrix[i][j] /= all_sum;
}
}
System.out.println("=============");
for(int i = 0; i < tag_matrix.length; i++) {
System.out.println(Arrays.toString(tag_matrix[i]));
}
System.out.println("=============");
}
} public static float distance(float[] a, float[] b) { float dis = 0;
for(int i = 0; i < a.length; i++) {
dis = (float) Math.pow(b[i] - a[i], 2);
}
return dis;
}
}

最新文章

  1. &amp;nbsp;空格用法
  2. 从service弹出系统级自定义提示框,可在任意页面弹出
  3. Android Toast效果
  4. 通过实验分析system_call中断处理过程
  5. 数学概念——H 最美素数
  6. JavaScript中的this引用
  7. Java中的Lock锁
  8. git/gerrit的简介
  9. 【洛谷P2860】冗余路径
  10. 免费API接口
  11. ASP.NET MVC下使用AngularJs语言(四):$window.alert
  12. kafka TimeoutException 超时问题解决
  13. Orchard Core 版本冲突 The type &#39;FormTagHelper&#39; exists in both &#39;Microsoft.AspNetCore.Mvc.TagHelpers, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60&#39; and...
  14. 查看oracle数据库允许的最大连接数和当前连接数
  15. TP3.2校验微信公众号||小程序 服务器地址
  16. 使用FlashPaper在线转换.doc为.swf_实用技巧
  17. C#如何获取枚举(Enum)变量的值
  18. shell 数组【了解一下】
  19. shell编程基础-01
  20. springboot 常用依赖

热门文章

  1. 框架-Java:Spring Cloud
  2. [转载]Windows&amp;nbsp;Server&amp;nbsp;2008&amp;nbsp;R2&amp;nbsp;之二十五AD&amp;nbsp;RMS信任策略
  3. [JavaEE] 20141228_Java类文章搜集
  4. Xposed那些事儿 — xposed框架的检测和反制
  5. Hashmap 详解和迭代器问题
  6. Mac OS X10.9安装的Python2.7升级Python3.4步骤详解
  7. html/css常用合集
  8. Linux下实现视频读取
  9. 关于HTTPS通信机制的笔记
  10. 关于用户禁用Cookie的解决办法和Session的图片验证码应用