gpt4 book ai didi

r - R中的归一化函数

转载 作者:行者123 更新时间:2023-12-04 22:20:11 24 4
gpt4 key购买 nike

我有一个要转换的矩阵,这样转换后的数据集中的每个特征的均值为 0,方差为 1。

我尝试使用以下代码:

scale <- function(train, test) 
{
trainmean <- mean(train)
trainstd <- sd(train)
xout <- test
for (i in 1:length(train[1,])) {
xout[,i] = xout[,i] - trainmean(i)
}
for (i in 1:lenght(train[1,])) {
xout[,i] = xout[,i]/trainstd[i]
}

}
invisible(xout)

normalized <- scale(train, test)

然而,这对我不起作用。我在正确的轨道上吗?

编辑:我对语法很陌生!

最佳答案

您可以为此使用内置的 scale 函数。

这是一个例子,我们用 0 到 1 和中心之间的随机均匀变量填充矩阵,并将它们缩放为具有 0 均值和单位标准差:

m <- matrix(runif(1000), ncol=4)    
m_scl <- scale(m)

确认列均值为 0(在容差范围内)且其标准差为 1:
colMeans(m_scl)
# [1] -1.549004e-16 -2.490889e-17 -6.369905e-18 -1.706621e-17

apply(m_scl, 2, sd)
# [1] 1 1 1 1

有关更多详细信息,请参阅 ?scale

要编写自己的规范化函数,您可以使用:
my_scale <- function(x) {
apply(m, 2, function(x) {
(x - mean(x))/sd(x)
})
}

m_scl <- my_scale(m)

或以下,在较大的矩阵上可能更快
my_scale <- function(x) sweep(sweep(x, 2, colMeans(x)), 2, apply(x, 2, sd), '/')

关于r - R中的归一化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28563783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com