【问题标题】:Scala: Class that is similar to QuantileTransformer in pythonScala:类似于python中的QuantileTransformer的类
【发布时间】:2018-05-22 08:28:22
【问题描述】:

我正在寻找 Python 的 sklearn.preprocessing.QuantileTransformer 类的 Scala 实现。似乎没有一个类可以在 scala 中实现全部功能。

Python 实现有 3 个主要部分:

1) 使用 numpy.percentile() 计算给定数据和百分位数数组的分位数。如果分位数位于两个输入数据点之间,则使用线性插值。我在 Scala 中能找到的最接近的是微风,它具有 percentile() 函数(观察:DataFrame.stats.approxQuantile() 不执行线性插值,因此不能在这里使用)。

2) 使用 numpy.interp() 将值的输入范围转换为给定范围。例如,如果输入数据范围是 1-100,则可以将其转换为任何给定范围,例如 0-1。当输入数据存在于 2 个分位数之间时,这再次使用线性插值。我在 Scala 中能找到的最接近的类是breeze.interpolation 类。

3) 使用 numpy.ppf() 计算逆 CDF。我相信,为此我可以使用 NormalDistribution 类作为下面的一个答案或 StandardScaler 类。

有什么更好的方法可以让编码更简短更简单?

【问题讨论】:

    标签: python scala scikit-learn normal-distribution quantile


    【解决方案1】:

    Apache Commons Math 库有一个NormalDistribution 类,它有一个inverseCumulativeProbability 方法来计算指定的分位数值。这应该适合您的目的。

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 2011-04-30
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多