首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark:使用训练集统计对测试集进行标准化/标准化

Spark:使用训练集统计对测试集进行标准化/标准化
EN

Stack Overflow用户
提问于 2016-03-04 21:02:16
回答 1查看 399关注 0票数 0

这在机器学习中是一个非常常见的过程。我有一个数据集,我把它分成训练集和测试集。因为我对训练集应用了一些标准化和标准化,所以我想使用训练集的相同信息(每个特征的均值/标准差/最小/最大值),对测试集也应用标准化和标准化。你知道做这件事的最佳方式吗?

我知道MinMaxScaler,StandardScaler等的功能。

EN

回答 1

Stack Overflow用户

发布于 2016-03-05 00:30:16

您可以通过训练和测试集上的几行代码来实现这一点。

training方面,有两种方法:

MultivariateStatisticalSummary

http://spark.apache.org/docs/latest/mllib-statistics.html

代码语言:javascript
复制
val summary: MultivariateStatisticalSummary = Statistics.colStats(observations)
println(summary.mean) // a dense vector containing the mean value for each column
println(summary.variance) // column-wise variance
println(summary.numNonzeros) // number of nonzeros in each 

使用SQL的

代码语言:javascript
复制
from pyspark.sql.functions import mean, min, max
In [6]: df.select([mean('uniform'), min('uniform'), max('uniform')]).show()
+------------------+-------------------+------------------+
|      AVG(uniform)|       MIN(uniform)|      MAX(uniform)|
+------------------+-------------------+------------------+
|0.5215336029384192|0.19657711634539565|0.9970412477032209|
+------------------+-------------------+------------------+

在测试数据上-然后您可以使用上面从训练数据中获得的统计数据手动对数据进行归一化。

学生的T

代码语言:javascript
复制
     val normalized = testData.map{ m =>
            (m - trainMean) / trainingSampleStddev
      }

功能扩展

代码语言:javascript
复制
     val normalized = testData.map{ m =>
            (m - trainMean) / (trainMax - trainMin)
      }

还有其他的:看看https://en.wikipedia.org/wiki/Normalization_(statistics)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35796788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档