我的数据集范围是1到30,000

我想对其进行归一化,使其变为0.1到10

最好的方法/功能是什么?

如果您能提供一些示例代码,将不胜感激!

最佳答案

这是一个代码段,假设您要进行线性归一化。这是一个非常简单的版本(只是简单的代码,没有方法),因此您可以看到“它是如何工作的”并将其应用于任何事物。

xmin = 1.0
xmax = 30000.0
ymin = 0.1
ymax = 10.0

xrange = xmax-xmin
yrange = ymax-ymin

y = ymin + (x-xmin) * (yrange / xrange)

在这里,它是作为一个函数来完成的:
def normalise(x, xmin, xmax, ymin, ymax)
  xrange = xmax - xmin
  yrange = ymax - ymin
  ymin + (x - xmin) * (yrange.to_f / xrange)
end

puts normalise(2000, 1, 30000, 0.1, 10)

(注意:to_f确保我们不会陷入整数除法的黑洞中)

关于ruby - 用ruby规范化数据集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1507804/

10-11 17:40