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;
}
}

lpa标签传播算法解说及代码实现的更多相关文章

  1. Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现

    转载请注明出处:http://www.cnblogs.com/bethansy/p/6953625.html LPA算法的思路: 首先每个节点有一个自己特有的标签,节点会选择自己邻居中出现次数最多的标 ...

  2. 标签传播算法(Label Propagation Algorithm, LPA)初探

    0. 社区划分简介 0x1:非重叠社区划分方法 在一个网络里面,每一个样本只能是属于一个社区的,那么这样的问题就称为非重叠社区划分. 在非重叠社区划分算法里面,有很多的方法: 1. 基于模块度优化的社 ...

  3. 标签传播算法(Label Propagation)及Python实现

    众所周知,机器学习可以大体分为三大类:监督学习.非监督学习和半监督学习.监督学习可以认为是我们有非常多的labeled标注数据来train一个模型,期待这个模型能学习到数据的分布,以期对未来没有见到的 ...

  4. 标签传播算法(llgc 或 lgc)

    动手实践标签传播算法 复现论文:Learning with Local and Global Consistency1 lgc 算法可以参考:DecodePaper/notebook/lgc 初始化算 ...

  5. 深度学习之反向传播算法(BP)代码实现

    反向传播算法实战 本文仅仅是反向传播算法的实现,不涉及公式推导,如果对反向传播算法公式推导不熟悉,强烈建议查看另一篇文章神经网络之反向传播算法(BP)公式推导(超详细) 我们将实现一个 4 层的全连接 ...

  6. (3)Deep Learning之神经网络和反向传播算法

    往期回顾 在上一篇文章中,我们已经掌握了机器学习的基本套路,对模型.目标函数.优化算法这些概念有了一定程度的理解,而且已经会训练单个的感知器或者线性单元了.在这篇文章中,我们将把这些单独的单元按照一定 ...

  7. [2] TensorFlow 向前传播算法(forward-propagation)与反向传播算法(back-propagation)

    TensorFlow Playground http://playground.tensorflow.org 帮助更好的理解,游乐场Playground可以实现可视化训练过程的工具 TensorFlo ...

  8. LabelRank非重叠社区发现算法介绍及代码实现(A Stabilized Label Propagation Algorithm for Community Detection in Networks)

    最近在研究基于标签传播的社区分类,LabelRank算法基于标签传播和马尔科夫随机游走思路上改装的算法,引用率较高,打算将代码实现,便于加深理解. 这个算法和Label Propagation 算法不 ...

  9. 小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)

    小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码) Python 被称为是最接近 AI 的语言.最近一位名叫Anna-Lena Popkes的小姐姐在GitHub上分享了自己如何使用P ...

随机推荐

  1. Django 介绍、安装配置、基本使用、Django 用户注冊样例

    Django介绍         Django 是由 Python 开发的一个免费的开源站点框架.能够用于高速搭建高性能.优雅的站点.              DjangoMTV 的思想项目架构图 ...

  2. guice 整合ninja framework(七)

    ninja是一个优秀的,轻量级的mvc框架,它与google guice整合比较好.下面看一下例子: 我们在web.xml 配置一下: <listener> <listener-cl ...

  3. css要点

    1.对inline-block设置overflow: hidden会造成baseline移动,因此需要设置vertical-align才不会出现样式问题. 2.使用flex时,需要对设置flex: 1 ...

  4. 决策实验(2)分水岭&哄骗实验

    转载请注明http://www.cnblogs.com/igoslly/p/6824544.html 史密斯实验II PART I 分水岭实验 两种选项 A 50%没钱,50% 45元 B 获取固定数 ...

  5. java是值传递,还是引用传递?

    原文地址:http://blog.csdn.net/zxmzfbdc/article/details/5401960  java到底是值传递,还是引用传递?以前国内的java开发者有过很多争论,由于& ...

  6. Ruby. Vs . Python

    前言:从语言的本质上来分析,我对Ruby持反对态度,毕竟语言是为了交流,在表达的效率层面为了正确性必须适当放弃复杂性.且有句老话说的好,Ruby In Rails 才是语言,而Ruby只是这个语言的工 ...

  7. getopt_long 函数

    getopt_long, getopt_long_only -- 命令行解析函数,支持长选项解析   [说明]getopt_long/getopt_long_only是getopt的泛集,getopt ...

  8. Day 08 字符编码

    字符编码 计算机基础 启动应用程序 1.双击QQ 2.操作系统接受指定然后把该操作转化为0和1发送给CPU 3.CPU接受指令然后把指令发给内存 4.内存接受指令把指令发送给硬盘获取数据 5.QQ在内 ...

  9. google spanner

    REF 论文 google spanner spanner 介绍 http://blog.jobbole.com/110262/

  10. 【UOJ139】【UER #4】被删除的黑白树

    题意: 很久很久以前,有一棵树加入了 UOJ 群. 这天,在它讨论“一棵树应该怎么旋转”的时候一不小心被删除了,变成了被删除的树. 突然间,它突然发现它失去了颜色,变成了一棵纯白的树.这让它感觉很焦躁 ...