如何在R编程中规范化数据集?

时间:2017-07-08 20:10:51

标签: r machine-learning

我实现了以下代码来规范化R中的数据框。但是我得到了以下错误

for(i in 1:56){
  clean_data[(clean_data[,i]),i] <-(clean_data[,i] - min(clean_data[,i])) / (max(clean_data[,i]) - min(clean_data[,i]))
}

错误

Error: cannot allocate vector of size 9.9 Gb

还有其他方法可以实现规范化吗?谁能帮我?

2 个答案:

答案 0 :(得分:1)

您可以使用此代码段作为代码的改进

max_col <- apply(clean_data[,-1], 2, max)
min_col <- apply(clean_data[,-1], 2, min)
clean_data_scaled <- as.data.frame(scale(clean_data[,-1], center = min_col, scale = max_col - min_col))

clean_data_scaled <- scale(clean_data[, -1])

答案 1 :(得分:0)

如果我理解你的解释权,你会如何要求它去做你想做的事情,这有点令人讨厌:

您要求循环保存到每列的每一行中,该行和列的值减去整列(i)的最小值,除以该列的最小值和最大值之间的差值。 / p>

要执行此操作,您应该让它查看所有行,在每个row(j)中处理每个column(i),然后再继续下一列。

这不是我个人规范化数据的方式,而是建立在你正在做的事情的基础上,这将是添加第二个循环和迭代器的方式:

for(i in 1:56){
  for(j in 1:nrow(clean_data)){
  clean_data[j ,i] <-(clean_data[j,i] - min(clean_data[,i])) / (max(clean_data[,i]) - min(clean_data[,i]))
  }
 }

这将从当前行,列组合中获取值,并使用您的完整列公式对其进行调整。