这在机器学习中是一个非常常见的过程。我有一个数据集,我把它分成训练集和测试集。因为我对训练集应用了一些标准化和标准化,所以我想使用训练集的相同信息(每个特征的均值/标准差/最小/最大值),对测试集也应用标准化和标准化。你知道做这件事的最佳方式吗?
我知道MinMaxScaler,StandardScaler等的功能。
发布于 2016-03-05 00:30:16
您可以通过训练和测试集上的几行代码来实现这一点。
在training方面,有两种方法:
MultivariateStatisticalSummary
http://spark.apache.org/docs/latest/mllib-statistics.html
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的
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
val normalized = testData.map{ m =>
(m - trainMean) / trainingSampleStddev
}功能扩展
val normalized = testData.map{ m =>
(m - trainMean) / (trainMax - trainMin)
}还有其他的:看看https://en.wikipedia.org/wiki/Normalization_(statistics)
https://stackoverflow.com/questions/35796788
复制相似问题