如何使用 StandardScaler 标准化 Spark 中的一列?

2024-02-19

我正在尝试标准化(平均值= 0,标准= 1)我的数据框中的一列(“年龄”)。下面是我在 Spark (Python) 中的代码:

from pyspark.ml.feature import StandardScaler
from pyspark.ml.feature import VectorAssembler
from pyspark.ml import Pipeline

# Make my 'age' column an assembler type:
age_assembler = VectorAssembler(inputCols= ['age'], outputCol = "age_feature")

# Create a scaler that takes 'age_feature' as an input column:
scaler = StandardScaler(inputCol="age_feature", outputCol="age_scaled",
                        withStd=True, withMean=True)

# Creating a mini-pipeline for those 2 steps:
age_pipeline = Pipeline(stages=[age_assembler, scaler])
scaled = age_pipeline.fit(sample17)
sample17_scaled = scaled.transform(sample17)
type(sample17_scaled)

看起来运行得很好。最后一行生成:“sample17_scaled:pyspark.sql.dataframe.DataFrame”

但是当我运行下面的行时,它显示新列age_scaled的类型为“向量”:|--age_scaled:向量(nullable = true)

sample17_scaled.printSchema()

如何使用这个新列计算任何内容?例如,我无法计算平均值。当我尝试时,它说它应该是“长”而不是 udt。

非常感谢!


只需使用简单的聚合:

from pyspark.sql.functions import stddev, mean, col

sample17 = spark.createDataFrame([(1, ), (2, ), (3, )]).toDF("age")

(sample17
  .select(mean("age").alias("mean_age"), stddev("age").alias("stddev_age"))
  .crossJoin(sample17)
  .withColumn("age_scaled" , (col("age") - col("mean_age")) / col("stddev_age")))

# +--------+----------+---+----------+
# |mean_age|stddev_age|age|age_scaled|
# +--------+----------+---+----------+
# |     2.0|       1.0|  1|      -1.0|
# |     2.0|       1.0|  2|       0.0|
# |     2.0|       1.0|  3|       1.0|
# +--------+----------+---+----------+

or

mean_age, sttdev_age = sample17.select(mean("age"), stddev("age")).first()
sample17.withColumn("age_scaled", (col("age") - mean_age) / sttdev_age)

# +---+----------+
# |age|age_scaled|
# +---+----------+
# |  1|      -1.0|
# |  2|       0.0|
# |  3|       1.0|
# +---+----------+

如果你想Transformer你可以将向量分割成列 https://stackoverflow.com/q/38384347/8371915.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 StandardScaler 标准化 Spark 中的一列? 的相关文章

随机推荐

  • 在delphi 2009中创建gif动画文件?

    gif TgifImage Create gif Width 100 gif Height 100 gif AnimationSpeed 500 gif Animate true gif add image1 Picture Bitmap
  • Laravel:PDO异常,即使安装并测试了驱动程序也找不到驱动程序[重复]

    这个问题在这里已经有答案了 我正在开发一个 Laravel 5 1 项目 该项目必须连接到现有的 MS SQL Server 数据库 我的项目当前位于使用 Apache 2 4 18 的 Ubuntu 16 04 LTS 服务器上 我已在计
  • 什么时候发送HTTP状态码?

    目前 在我的 PHP 脚本中 当用户尝试访问不存在或不属于该用户的内容时 我会将用户重定向到自定义 404 未找到错误页面 就像这样 header Location http www mydomain com error notfound
  • 文件引用与文件?

    我想制作一个 Flash 应用程序 用户可以在其中从本地硬盘驱动器加载文件并将文件保存到本地硬盘驱动器 虽然我经常在 AIR 应用程序中使用File and FileStream类 我以前没有在 SWF 中这样做过 据我所知FileRefe
  • 使用“get”来访问地图有什么好处

    从这个问题跟进 按关键字进行惯用的 clojure 映射查找 https stackoverflow com questions 7034803 idiomatic clojure map lookup by keyword 使用 cloj
  • Spring Rest 和 jQuery Ajax 文件下载

    我目前正在使用 jQuery 和 Spring Rest jQuery 用于向服务器上传和下载文件 上传过程工作正常 但下载文件时没有什么问题 所以场景是 在视图中 用户将选择n个要下载的文件并单击下载按钮 一旦用户单击该按钮 文件就会被下
  • angular.js 选择输入框的过滤类型

    我使用 angular js 的时间很短 有时我有一种感觉 我对 html 和 javascript 一无所知 因为 Angular 在遇到我想象中应该的东西时 可能非常简单 这是我头痛的地方 我的电流控制器scope persons是工厂
  • 为动态加载的新元素添加tinymce

    我的页面包含 5 个 div 可以通过 Tinymce 内联编辑器进行编辑 我可以通过单击按钮 如此动态 来轻松地使用 Jquery 加载 5 个新的 但当然 新的 div 不会受到 Tinymce 的影响 因为 init 已经加载了 我怎
  • 如何在 wpf 中将 List 转换为 ObservableCollection

    我在 wpf 中 有一个通用列表 List 现在我希望将其转换为通用的可观察集合 ObservableCollection 我知道我可以迭代列表并将每个单独的项目添加到 Observable 集合中 然而 在我看来 必须有一种内置的方法来做
  • 如何自定义 JAXB 生成复数方法名称的方式?

    我们使用 JAXB 生成 Java 类 遇到了一些生成的复数方法名称不正确的情况 例如 我们期望的地方getPhysicians我们正在得到getPhysicien 我们如何自定义 JAXB 复数特定方法的方式 架构
  • 如何在SQL Server 2012中解析json数据?

    我正在使用 SQL Server 2012 我被分配了一项任务 其中我的专栏之一 JsonText 的表Sample包含 json 数据 我想通过解析该数据并将其插入到另一个表的列中 Test 我在网上搜索 openjson 在 SQL S
  • Google 地图 API 多个标记

    我正在使用以下代码来显示谷歌地图 并在地图上创建一个标记 它运作良好 我只需要在同一张地图上放置多个标记即可
  • Onclick 事件删除文本输入字段中的默认值

    我有一个输入字段
  • 强制客户端或服务器重新启动 SSL 握手(或使 SSL 会话过期)

    我有一个客户端 用 Java 编写 连接到 HTTPS 服务器 该服务器也是用 Java 编写的 客户端证书和可信证书存储在 PKI 令牌中 客户端不断地向服务器发送一些HTTP请求 一切都很好 现在我想强制客户端 或服务器 重新启动握手
  • Sublime Text 2控制台输入[重复]

    这个问题在这里已经有答案了 我使用 Sublime Text 2 但当我的代码要求用户输入时 它不会让我输入任何值 换句话说 input 在Python和gets在 Ruby 中无法正确提示我输入 Python 抛出一个EOFError错误
  • 实现Python异常

    我在程序中实现异常系统时遇到一些问题 我在某处发现了以下一段代码 我试图将其用于我的程序 class InvalidProgramStateException Exception def init self expr msg self ex
  • 在 AS3 中加载嵌入图像

    好吧 我觉得问这个问题很愚蠢 但我花了整个下午试图弄清楚 但没有成功 在 AS3 中 我想向库添加一个图像 我们称之为 image png 并仅使用代码实例化它 我以这种方式成功实例化了外部图像 var pLoad Loader new L
  • 清除 Web 浏览器控制所有站点的 cookie,而不清除 IE 本身

    编辑 据我所知 这个问题没有解决方案 这又证明了一个事实 不应该使用 C 的 WebBrowser 我们最终在程序开始时出现了一个警告标志 通知用户将为 IE 清除 cookie 我想做的事情的简短版本就在标题中 这是长版本 我有一个复杂的
  • 在greasemonkey中使用javascript创建一个cookie

    我正在尝试用greasemonkey创建一个cookie 以阻止窗口弹出 在窗口弹出后 创建cookie后 窗口不会弹出多次 这是代码 function setCookie c name value expiredays var exdat
  • 如何使用 StandardScaler 标准化 Spark 中的一列?

    我正在尝试标准化 平均值 0 标准 1 我的数据框中的一列 年龄 下面是我在 Spark Python 中的代码 from pyspark ml feature import StandardScaler from pyspark ml f