- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像下面这样的矩阵
i j value
[1,] 3 6 0.194201129
[2,] 3 5 0.164547043
[3,] 3 4 0.107149279
[4,] 4 3 0.004927017
[5,] 3 1 0.080454448
[6,] 1 2 0.003220612
[7,] 2 6 0.162313646
[8,] 3 3 0.114992628
[9,] 4 1 0.015337253
[10,] 1 6 0.026550051
[11,] 3 2 0.057004116
[12,] 4 2 0.006441224
[13,] 4 5 0.025641026
[14,] 2 4 0.004885993
[15,] 1 1 0.036552785
[16,] 1 5 0.048249186
[17,] 1 4 0.006053565
[18,] 1 3 0.004970296
i, j
对有一个逆对。例如
i = 3, j = 1
,有一对
i = 1, j = 3
.
i, j
对减去其倒数并获得减法的绝对值。对于那些没有逆对的对,从它们中减去 0。
i = 3, j = 5
没有逆对 (i = 5, j = 3),因此计算变为:
abs(0.164547043 - 0)
i = 3, j = 1
矩阵上有一对逆矩阵
i = 1, j = 3
因此计算将是:
abs(0.004970296 - 0.080454448)
dput()
memMatrix <- structure(c(3, 3, 3, 4, 3, 1, 2, 3, 4, 1, 3, 4, 4, 2, 1, 1, 1,
1, 6, 5, 4, 3, 1, 2, 6, 3, 1, 6, 2, 2, 5, 4, 1, 5, 4, 3, 0.194201128983738,
0.164547043451226, 0.107149278958536, 0.00492701677834917, 0.0804544476798398,
0.00322061191626409, 0.162313646044361, 0.114992627755601, 0.0153372534398016,
0.0265500506171091, 0.0570041160347523, 0.00644122383252818,
0.0256410256410256, 0.00488599348534202, 0.0365527853282693,
0.0482491856677524, 0.0060535654765406, 0.00497029586494912), .Dim = c(18L,
3L), .Dimnames = list(NULL, c("i", "j", "value")))
memMatrix
是帖子顶部给出的矩阵。在这里你可以看到一些不同之处,我将绝对值与一个名为
probability_distribution
的变量相乘。 ,但这并不重要。我从最初的帖子中删除了(乘法)以使其更简单。
subFunc <- function( memMatrix , probability_distribution )
{
# Node specific edge relevance matrix
node_edgeRelm <- matrix(ncol = 3)
colnames(node_edgeRelm) <- c("i","j","rel")
node_edgeRelm <- na.omit(node_edgeRelm)
for ( row in 1:nrow( memMatrix ) )
{
pair_i <- memMatrix[row,"i"]
pair_j <- memMatrix[row,"j"]
# If already this pair of i and j has been calculated continue with the next pair
# At the end of a new calculation, we store the i,j (verse) values in order from lower to higher
# and then we check here for the inverse j,i values (if exists).
if( pair_i < pair_j )
if( any(node_edgeRelm[,"i"] == pair_i & node_edgeRelm[,"j"] == pair_j) ) next
if( pair_j < pair_i )
if( any(node_edgeRelm[,"i"] == pair_j & node_edgeRelm[,"j"] == pair_i) ) next
# Verse i,j
mepm_ij <- as.numeric( memMatrix[which( memMatrix[,"i"] == pair_i & memMatrix[,"j"] == pair_j ), "mep"] )
if( length(mepm_ij) == 0 )
mepm_ij <- 0
# Inverse j,i
mepm_ji <- as.numeric( memMatrix[which( memMatrix[,"i"] == pair_j & memMatrix[,"j"] == pair_i ), "mep"] )
if( length(mepm_ji) == 0 )
mepm_ji <- 0
# Calculate the edge relevance for that specific initial node x and pair i,j
edge_relevance <- probability_distribution * abs( mepm_ij - mepm_ji )
# Store that specific edge relevance with an order from lower to higher node
if ( pair_i < pair_j)
node_edgeRelm <- rbind( node_edgeRelm, c( as.numeric(pair_i), as.numeric(pair_j), as.numeric(edge_relevance) ) )
else
node_edgeRelm <- rbind( node_edgeRelm, c( as.numeric(pair_j), as.numeric(pair_i), as.numeric(edge_relevance) ) )
}
na.omit(node_edgeRelm)
}
subFunc(memMatrix, 1/3)
运行
最佳答案
假设输入是矩阵m
群value
由具有相同 i, j 或 j, i 的元素组成。将有 1 或 2 value
每个这样的组中的元素,因此对于任何特定组,将零附加到该 1 或 2 长度向量并取前 2 个元素,对结果 2 元素向量的元素进行差分并取绝对值。此过程不会更改行顺序。它提供了一个数据框,但如果需要使用 as.matrix
可以将其转换回矩阵.不使用任何包。
absdiff <- function(x) abs(diff(c(x, 0)[1:2]))
transform(m, value = ave(value, pmin(i, j), pmax(i, j), FUN = absdiff))
i j value
1 3 6 0.194201129
2 3 5 0.164547043
3 3 4 0.102222262
4 4 3 0.102222262
5 3 1 0.075484152
6 1 2 0.003220612
7 2 6 0.162313646
8 3 3 0.114992628
9 4 1 0.009283688
10 1 6 0.026550051
11 3 2 0.057004116
12 4 2 0.001555230
13 4 5 0.025641026
14 2 4 0.001555230
15 1 1 0.036552785
16 1 5 0.048249186
17 1 4 0.009283688
18 1 3 0.075484152
关于r - 如何获得矩阵中两列值之间的绝对差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48951931/
我的应用程序上有一个抽屉式菜单,它在桌面上运行良好,但在任何移动设备上我都看到一个丑陋的卡顿。 在 header 中,我有一个 bool 值,在单击汉堡包时将其设置为 true/false,这会将 o
在CLRS书中,自上而下的heapify构建堆的复杂度为O(n)。也可以通过反复调用插入来建立堆,其最坏情况下的复杂度为nlg(n)。 我的问题是:对于后一种方法性能较差的原因,是否有任何见解? 我问
我在所有层和输出上使用 sigmoid,得到的最终错误率为 0.00012,但是当我使用理论上更好的 Relu 时,我得到了最差的结果。谁能解释为什么会发生这种情况?我正在使用一个非常简单的 2 层实
我想计算有多少人(百分比)在我的测试中表现比我差。 这是我想要的结果: student | vak | resultaat | percentielscore ---------+-------
令人惊讶的是,使用 PLINQ 并没有在我创建的一个小测试用例上产生好处;事实上,它比通常的 LINQ 还要糟糕。 测试代码如下: int repeatedCount = 10000000;
我正在开发一个高度基于 map 的应用程序,并且我正在使用 MBXMapKit 框架(基于 MapKit 构建)以便在我的 MapView 中显示自定义 Mapbox map 图 block 而不是默
这个问题在这里已经有了答案: Is it always better to use 'DbContext' instead of 'ObjectContext'? (1 个回答) 关闭 9 年前。
我正在尝试使用 FFmpeg 进行一些复杂的视频转码(例如连接多个文件)。为此,我一直在尝试使用 filter_complex,但我注意到我之前使用普通视频过滤器看到的质量略有下降。 为了仔细检查,我
我是 R 中并行计算的新手,想使用并行包来加速我的计算(这比下面的示例更复杂)。但是,与通常的 lapply 函数相比,使用 mclapply 函数的计算时间更长。 我在我的笔记本电脑上安装了一个全新
我正在尝试使用 BERT 解决文档排名问题。我的任务很简单。我必须对输入文档进行相似度排名。这里唯一的问题是我没有标签——所以它更像是一个定性分析。 我正在尝试一系列文档表示技术——主要是 word2
如何计算两点的差?例如:(5,7) - (2,3) = (3,4) using point = boost::geometry::model::point point p1 (2, 3); point
我是 ARKit 的新手,在检查了一些示例代码后,如 https://developer.apple.com/sample-code/wwdc/2017/PlacingObjects.zip我想知道是
社区。 我正在编写一些机器学习代码,将一些数据分类。 我尝试了不同的方法,但是当我使用SVM时,我遇到了这个问题。 我有一组简单的数据(3 个类别,6 个特征),当我使用具有固定参数(C=10、gam
我只是在查看不同问题的答案以了解更多信息。我看到一个answer这表示在 php 中编写 是不好的做法 for($i=0;$i
我正在编写一个界面,我必须在其中启动 4 个 http 请求才能获取一些信息。 我用两种方式实现了接口(interface): 使用顺序 file_get_contents。 使用多 curl 。 我
我想用随机数来愚弄一下,如果 haskell 中的随机生成器是否均匀分布,因此我在几次尝试后写了下面的程序(生成的列表导致堆栈溢出)。 module Main where import System.
我在 Tensorflow 中构建了一个 LSTM 分类器(使用 Python),现在我正在做一系列基准测试来衡量执行性能。基准测试代码加载在训练期间保存的模型并针对大量输入执行它。我有一个 Pyth
不久前,我重构了单元格渲染器组件以实现性能提升(我有一个巨大的表格)。我从功能性无状态组件重构为 PureComponent。例如: import React from 'react'; import
当我改变缓冲区的大小时,我得到了无法从 BufferedReader 解释的奇怪结果。 我曾强烈期望性能会随着缓冲区大小的增加而逐渐增加, yield 递减设置相当快,此后性能或多或少会持平。但看起来
我正在尝试为 1000 个正面+负面标签的 IMDB 评论 (txt_sentoken) 和 Java 的 weka API 构建一个基于朴素贝叶斯的分类器。 由于我不知道 StringToWordV
我是一名优秀的程序员,十分优秀!