import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.sql.SparkSession
import org.apache.spark.ml.feature.Normalizer
import org.apache.spark.ml.feature.StandardScaler
import org.apache.spark.ml.feature.MinMaxScaler
import org.apache.spark.ml.feature.MaxAbsScaler
/**
* @author XiaoTangBao
* @date 2019/3/4 16:21
* @version 1.0
*/
object Normalized {
def main(args: Array[String]): Unit = {
Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
val sparkSession = SparkSession.builder().master("local[4]").appName("NOrmalize").getOrCreate()
val df = sparkSession.createDataFrame(Seq((1, Vectors.dense(1.0, 12.5, -108.0)),
(2, Vectors.dense(2.5, 36.0, 198.0)),(3, Vectors.dense(6.8, 24.0, 459.0))))
.toDF("id","features")
//Normalizer的作用范围是每一行,使每一个行向量的范数变换为一个单位范数
val normalizer1 = new Normalizer()
.setInputCol("features")
.setOutputCol("normalfeatures")
.setP(1.0)
val L1 = normalizer1.transform(df)
L1.show(false)
+---+-----------------+------------------------------------------------------------+
|id |features |normalfeatures |
+---+-----------------+------------------------------------------------------------+
|1 |[1.0,12.5,-108.0]|[0.00823045267489712,0.102880658436214,-0.8888888888888888] |
|2 |[2.5,36.0,198.0] |[0.010570824524312896,0.1522198731501057,0.8372093023255814]|
|3 |[6.8,24.0,459.0] |[0.013883217639853,0.04899959167006941,0.9371171906900776] |
+---+-----------------+------------------------------------------------------------+
//StandardScaler处理的对象是每一列,也就是每一维特征,将特征标准化为单位标准差或是0均值,或是0均值单位标准差。
val scaler_1 = new StandardScaler()
.setInputCol("features")
.setOutputCol("scaledFeatures")
.setWithStd(true)
.setWithMean(false)
val scalerMode_l = scaler_1.fit(df)
val scalaerdData_1 = scalerMode_l.transform(df)
scalaerdData_1.show(false)
+---+-----------------+------------------------------------------------------------+
|id |features |scaledFeatures |
+---+-----------------+------------------------------------------------------------+
|1 |[1.0,12.5,-108.0]|[0.3321666477362439,1.0637495315070804,-0.38055308480157485]|
|2 |[2.5,36.0,198.0] |[0.8304166193406097,3.063598650740391,0.6976806554695538] |
|3 |[6.8,24.0,459.0] |[2.2587332046064583,2.0423991004935944,1.617350610406693] |
+---+-----------------+------------------------------------------------------------+
//MinMaxScaler作用同样是每一列,即每一维特征。将每一维特征线性地映射到指定的区间,通常是[0, 1]
val scaler_2 = new MinMaxScaler()
.setInputCol("features")
.setOutputCol("scaledFeatures")
val scalerModel_2 = scaler_2.fit(df)
val scalaerdData_2 = scalerModel_2.transform(df)
scalaerdData_2.show(false)
+---+-----------------+--------------------------------------------+
|id |features |scaledFeatures |
+---+-----------------+--------------------------------------------+
|1 |[1.0,12.5,-108.0]|[0.0,0.0,0.0] |
|2 |[2.5,36.0,198.0] |[0.25862068965517243,1.0,0.5396825396825397]|
|3 |[6.8,24.0,459.0] |[1.0,0.48936170212765956,1.0] |
+---+-----------------+--------------------------------------------+
//MaxAbsScaler将每一维的特征变换到[-1, 1]闭区间上,通过除以每一维特征上的最大的绝对值,它不会平移整个分布,也不会破坏原来每一个特征向量的稀疏性。
val scaler_3 = new MaxAbsScaler()
.setInputCol("features")
.setOutputCol("scaledFeatures")
val scalerModel_3 = scaler_3.fit(df)
val scalaerdData_3 = scalerModel_3.transform(df)
scalaerdData_3.show(false)
+---+-----------------+-------------------------------------------------------------+
|id |features |scaledFeatures |
+---+-----------------+-------------------------------------------------------------+
|1 |[1.0,12.5,-108.0]|[0.14705882352941177,0.3472222222222222,-0.23529411764705882]|
|2 |[2.5,36.0,198.0] |[0.36764705882352944,1.0,0.43137254901960786] |
|3 |[6.8,24.0,459.0] |[1.0,0.6666666666666666,1.0] |
+---+-----------------+-------------------------------------------------------------+
}
}
相关推荐
Sparkml实战
精确讲述SparkML里面算法调用以及算法之间串行以及并行
Spark 归一化方法总结Normalizer、StandardScaler、MinMaxScaler
org.apache.spark.ml.feature包中包含了4种不同的归一化方法: Normalizer StandardScaler MinMaxScaler MaxAbsScaler 数据准备 注意函数对于要处理的数据格式要求是 val dataFrame = data.na.fill(0).rdd.map(a=>(a.getString(0),Vectors.dense(a.getLong(1),a.getLong(2),a.getLong(3),a.getLong(4)))).toDF("
【机械臂算法】基于最小惯性参数集的动力学辨识仿真实践
本文深入探讨了机械臂动力学参数辨识的核心挑战与解决方案,重点阐述了基于最小惯性参数集的理论与方法。通过分析PUMA560实例,详细介绍了利用QR分解法或符号推导法获取可辨识参数集,并系统讲解了从激励轨迹设计、仿真数据采集、线性系统求解到模型验证的完整实践流程,为高精度动力学建模与控制奠定了坚实基础。
Spark特征工程-归一化 和 分桶
归一化 分桶
Cass三角网法土方计算优化技巧:如何根据地形特点调整边界采样间距
本文深入探讨了Cass软件中三角网法(DTM法)土方计算的优化技巧,核心在于如何根据地形的复杂程度动态调整边界采样间距。针对平坦、复杂及人工构造物等不同地形特征,提供了具体的间距调整策略与精度验证方法,旨在帮助工程师在计算精度与效率间找到最佳平衡,实现精细化土方计算。
分类模型AUC低于0.5?5个常见坑点排查指南(附代码示例)
本文针对分类模型AUC低于0.5的常见问题,提供了5个关键排查点及代码示例。从样本分布失衡、特征与标签脱节到量纲差异、模型初始化和数据泄露,详细解析了可能导致AUC异常的原因,并给出实用的诊断方法和解决方案,帮助开发者快速提升模型性能。
Spark机器学习--四种归一化方法总结及图文解释
目录: 一、描述 二、数据准备 三、 Normalizer 四、 StandardScaler 五、 MinMaxScaler 六、MaxAbsScaler 七、总结 一、描述 org.apache.spark.ml.feature包中包含了4种不同的归一化方法: Normalizer StandardScaler MinMaxScaler MaxAbsScaler &nbs...
Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?
本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。
大数据基础之算法——Spark ML归一化方法 MinMaxScaler
归一化是一种简化计算的方式,即通过某种算法将原始数据集限制在你需要的一定范围内,一方面是数据处理的方便,另一方面是为了后面放入模型计算的方便,使得运行时的收敛性更快。 Spark ML机器学习库中包含了4种归一化的方法: Normalizer StandardScaler MinMaxScaler MaxAbsScaler 在我的项目中只用到了MinMaxScaler方法,在这里我就着重分享该方法的用法。 MinMaxScaler作用是将每一维度的特征向量映射到指定的区间内,通常是[0,1]。他一般有两
AI办公Agent技术:文档与表格智能处理实践
办公自动化技术正从规则驱动转向语义理解,大语言模型(LLM)为办公Agent赋予了智能决策能力。这类系统通过五层架构整合自然语言处理、工具API调用和任务规划引擎,能自动完成文档分类、表格分析等高重复性工作。关键技术包括基于TF-IDF和BERT的特征提取、Excel公式自动生成等,在财务报告、法律审查等场景可实现90%以上的效率提升。随着多模态能力和领域专业化发展,办公Agent正在重塑企业文档处理流程,成为数字化转型的核心基础设施。
保姆级教程:用Wokwi玩转ESP32 MicroPython仿真(含库文件配置指南)
本教程详细介绍了如何使用Wokwi平台进行ESP32 MicroPython仿真开发,包括库文件配置、传感器数据模拟和REPL调试技巧。通过Wokwi的仿真调试系统,开发者可以在浏览器中快速验证代码逻辑,提高开发效率,特别适合物联网项目的快速迭代。
Spark2 数据处理和实时分析(三)
原文:zh.annas-archive.org/md5/16D84784AD68D8BF20A18AC23C62DD82。
从码农到生态建造者:我的一人公司运作方案
华哥·OPC 运营方案 v1.0 - 第一次迭代 🚀,搭建闭环生态系统,赋能 AI 时代的超级个体,更好的做自己,同时照亮别人。
Spark 2.x 机器学习秘籍(三)
在从运行小型企业到创建和管理关键任务应用的各行业中,都有一些常见的任务需要作为几乎每个工作流程的一部分包含在内。即使是构建强大的机器学习系统也是如此。在 Spark 机器学习中,这些任务包括从拆分数据进行模型开发(训练、测试、验证)到归一化输入特征向量数据以通过 Spark API 创建 ML 管道。本章提供了一组配方,以使读者思考实际上需要实施端到端机器学习系统的内容。本章试图演示任何强大的 Spark 机器学习系统实现中存在的一些常见任务。
详解AXI4-Lite接口(3)--AXI4-Lite接口IP源码仿真及分析(Master接口)
通过本文您会学到:1、了解AXI4-Lite_Master接口的逻辑实现;2、加深Xilinx IP、仿真工具的使用;3、提高阅读时序图的能力。
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
java 数据归一化,sparkMLlib数据归一化方法
0 数据准备import org.apache.spark.ml.linalg.Vectorsval dataFrame = spark.createDataFrame(Seq((0, Vectors.dense(1.0, 0.5, -1.0)),(1, Vectors.dense(2.0, 1.0, 1.0)),(2, Vectors.dense(4.0, 10.0, 2.0)))).toDF(...
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
spark 数据处理中的,正则化标准化和归一化
A.正则化1.正则化的目的是什么?正则化是为了防止过拟合,加入正则项和的参数估计是符合我们之前的预定目标的,即用尽量少的变量去拟合数据。正则化符合奥卡姆剃刀原理,在所有可能选择的模型中,能够很好的解释已知数据,并且十分简单的才是最好的模型,也就是要选择的模型。2.机器学习中的范数L0范数是指向量中非零元素的个数,如果用L0规则化一个参数矩...
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
spark数据清洗教程
在未来,我们可以期待Spark在数据清洗和预处理方面的进一步发展,例如支持更多的算法和特征工程,提供更高效的性能和更好的用户体验。在这个例子中,我们首先创建了一个数据集,然后使用fillna方法处理缺失值,接着使用StandardScaler和MinMaxScaler方法进行数据归一化和数据标准化,然后使用StandardScaler方法进行数据缩放,最后使用OneHotEncoder方法进行数据转换。在实际应用场景中,我们可以使用Spark进行数据清洗和预处理,以便于后续的数据分析和机器学习任务。
优快云社群十问十答(大数据第一期)
过去的一周,我们从优快云 大数据社群中,整理了小伙伴们提问较多的问题,并请技术达人对这些问题进行了回答,现整理如下。欢迎大家在社群中积极提问哦,积极提问的小伙伴还将获得优快云提供的神秘纪念礼品哦! 问题1、Spark可以完全替代hadoop吗? 不可以,spark 只是分布式计算平台,而hadoop已经是分布式计算、存储、管理的生态系统。 与Spark相对应的是Hadoop Mapre...
Spark-MLlib 学习入门到掌握-StandardScaler归一化[24]
归一化后加快了梯度下降求最优解的速度; 归一化有可能提高精度; def StandardScalerTest(): Unit ={ import org.apache.spark.ml.feature.StandardScaler val spark: SparkSession = SparkSession.builder().appName("implicits").master("local[2]").getOrCreate() val dataFrame = ..
Spark MLlib分布式机器学习源码分析:特征提取与转换
Spark是一个极为优秀的大数据框架,在大数据批处理上基本无人能敌,流处理上也有一席之地,机器学习则是当前正火热AI人工智能的驱动引擎,在大数据场景下如何发挥AI技术成为优秀的大数据挖掘工程师必备技能。本文结合机器学习思想与Spark框架代码结构来实现分布式机器学习过程,希望与大家一起学习进步~ 本文采用的组件版本为:Ubuntu 19.10、Jdk 1.8.0_241、Scala...
Photon-ML 特征工程指南:标准化、归一化与特征摘要
Photon-ML 是一个基于 Apache Spark 的可扩展机器学习库,提供了强大的特征工程功能,包括标准化、归一化和特征摘要统计。本文将详细介绍如何在 Photon-ML 中应用这些关键技术,帮助新手用户快速掌握特征预处理的核心方法。 ## 为什么特征工程对机器学习至关重要? 在机器学习流程中,特征工程是提升模型性能的关键步骤。原始数据往往存在量纲不一致、分布差异大等问题,直接用于训练
SparkMllib关于数值型特征的基本处理实践
黑马程序员视频库播妞微信号:boniu236传智播客旗下互联网资讯、学习资源免费分享平台在SparkMllib中主要分为特征抽取、特征转化、特征选择,特别是在特征转化方面...
数据读取与归一化:机器学习数据预处理核心技巧
数据预处理是机器学习项目中的关键环节,其中数据读取与归一化直接影响模型效果。数据读取涉及从CSV、数据库等不同源获取数据,需注意内存管理、异常处理和性能优化。归一化则通过Min-Max、Z-Score等方法将数据转换到统一尺度,提升模型收敛速度与精度。在工程实践中,pandas和scikit-learn是常用工具,而分块读取、自动化流水线等技巧能显著提升效率。这些技术在金融风控、推荐系统等场景广泛应用,是每位数据科学家必须掌握的基本功。
特征的转换_03-标准化,归一化,正则化
1.标准化StandardScaler1.1 概述我们知道,在训练模型的时候,要输入features,即因子,也叫特征。对于同一个特征,不同的样本中的取值可能会相差非常大,一些异常小或异常大的数据会误导模型的正确训练;另外,如果数据的分布很分散也会影响训练结果。以上两种方式都体现在方差会非常大。此时,我们可以将特征中的值进行标准差标准化,即转换为均值为0,方差为1的正态分布。所以在训练模型之前,一定
2840



被折叠的 条评论
为什么被折叠?



