矩阵乘法后的百分比值
Percentage values after matrix multiplication
通过矩阵乘法,我得到以下矩阵,比方说,它显示了有多少客户购买了产品 A,迟早也会购买产品 B、产品 C 等。显然,对角线值代表特定产品所有购买量的 100%。我正在寻找一种将所有值转换为百分比值的方法。有任何想法吗?我确实看过 apply(),但没有找到实现对角线值的方法。
> # Create a matrix with zeros and ones
> r <- 500
> c <- 10
> t1 <- matrix(rbinom(r*c,1,0.5),r,c)
> colnames(t1) <- letters[1:10]
> head(t1)
a b c d e f g h i j
[1,] 1 1 1 0 0 1 1 1 1 0
[2,] 0 0 0 1 1 0 0 0 1 1
[3,] 0 1 1 1 0 1 1 1 1 0
[4,] 1 0 1 1 1 0 0 1 0 1
[5,] 0 1 0 1 0 0 0 0 0 0
[6,] 1 0 1 0 1 0 1 0 1 1
> # Matrix multiplication
> t2 <- t(t1)%*%t1
> t2
a b c d e f g h i j
a 242 130 121 114 133 117 119 126 123 112
b 130 248 121 115 128 121 113 127 114 119
c 121 121 236 108 115 117 115 117 112 117
d 114 115 108 228 116 117 114 110 118 99
e 133 128 115 116 258 129 124 132 122 130
f 117 121 117 117 129 251 123 115 128 125
g 119 113 115 114 124 123 245 128 130 116
h 126 127 117 110 132 115 128 248 123 113
i 123 114 112 118 122 128 130 123 251 116
j 112 119 117 99 130 125 116 113 116 246
t3 <- apply(t2, 2, function(v) v/max(v))
或
for (i in 1:ncol(t2)) t2[,i] <- t2[,i]/t2[i,i]
我假设您需要非对称矩阵,即购买产品 X 的人同时购买产品 Y 的百分比(不同于购买产品 Y 的人同时购买产品 X 的百分比)。
通过矩阵乘法,我得到以下矩阵,比方说,它显示了有多少客户购买了产品 A,迟早也会购买产品 B、产品 C 等。显然,对角线值代表特定产品所有购买量的 100%。我正在寻找一种将所有值转换为百分比值的方法。有任何想法吗?我确实看过 apply(),但没有找到实现对角线值的方法。
> # Create a matrix with zeros and ones
> r <- 500
> c <- 10
> t1 <- matrix(rbinom(r*c,1,0.5),r,c)
> colnames(t1) <- letters[1:10]
> head(t1)
a b c d e f g h i j
[1,] 1 1 1 0 0 1 1 1 1 0
[2,] 0 0 0 1 1 0 0 0 1 1
[3,] 0 1 1 1 0 1 1 1 1 0
[4,] 1 0 1 1 1 0 0 1 0 1
[5,] 0 1 0 1 0 0 0 0 0 0
[6,] 1 0 1 0 1 0 1 0 1 1
> # Matrix multiplication
> t2 <- t(t1)%*%t1
> t2
a b c d e f g h i j
a 242 130 121 114 133 117 119 126 123 112
b 130 248 121 115 128 121 113 127 114 119
c 121 121 236 108 115 117 115 117 112 117
d 114 115 108 228 116 117 114 110 118 99
e 133 128 115 116 258 129 124 132 122 130
f 117 121 117 117 129 251 123 115 128 125
g 119 113 115 114 124 123 245 128 130 116
h 126 127 117 110 132 115 128 248 123 113
i 123 114 112 118 122 128 130 123 251 116
j 112 119 117 99 130 125 116 113 116 246
t3 <- apply(t2, 2, function(v) v/max(v))
或
for (i in 1:ncol(t2)) t2[,i] <- t2[,i]/t2[i,i]
我假设您需要非对称矩阵,即购买产品 X 的人同时购买产品 Y 的百分比(不同于购买产品 Y 的人同时购买产品 X 的百分比)。