gpt4 book ai didi

apache-spark - 将模型分数应用于 Spark DataFrame - Python

转载 作者:行者123 更新时间:2023-11-30 09:11:26 24 4
gpt4 key购买 nike

我正在尝试使用 PySpark 将分数应用于 Spark DataFrame。假设我在 Spark 外部构建了一个简单的回归模型,并且希望将模型中创建的系数值映射到 DataFrame 中的各个列,以创建一个新列,该新列是每个不同源列乘以各个源列的总和系数。我知道 Spark mllib 中有许多用于建模的实用程序,但我想了解如何完成这种“强力”方法。我还知道 DataFrames/RDD 是不可变的,因此必须创建一个新的 DataFrame。

这里有一些伪代码供引用:

#load example data
df = sqlContext.createDataFrame(data)
df.show(5)
dfmappd.select("age", "parch", "pclass").show(5)
+----+-----+------+
| age|parch|pclass|
+----+-----+------+
|22.0| 0| 3|
|38.0| 0| 1|
|26.0| 0| 3|
|35.0| 0| 1|
|35.0| 0| 3|
+----+-----+------+
only showing top 5 rows

在 Spark 外部创建的模型是基于二元响应的逻辑回归模型。所以本质上我想将 logit 函数映射到这三列以生成第四个评分列。以下是模型的系数:

拦截:3.435222

年龄:-0.039841

parch:0.176439

pclass:-1.239452

下面是logit函数的说明,供引用: https://en.wikipedia.org/wiki/Logistic_regression

为了进行比较,以下是我如何使用 tidyr 和 dplyr 在 R 中执行相同的操作

library(dplyr)
library(tidyr)

#Example data
Age <- c(22, 38, 26, 35, 35)
Parch <- c(0,0,0,0,0)
Pclass <- c(3, 1, 3, 1, 3)

#Wrapped in a dataframe
mydf <- data.frame(Age, Parch, Pclass)

#Using dplyr to create a new dataframe with mutated column
scoredf = mydf %>%
mutate(score = round(1/(1 + exp(-(3.435 + -0.040 * Age + 0.176 * Parch + -1.239 * Pclass))),2))
scoredf

最佳答案

如果我正确解释你的问题,你想计算每个样本的类条件概率给定你离线计算的系数并“手动”进行。

类似这样的工作:

def myLogisticFunc(age, parch, pclass):
intercept = 3.435222
betaAge = -0.039841
betaParch = 0.176439
betaPclass = -1.239452
z = intercept + betaAge * age + betaParch * parch + betaPclass * pclass
return 1.0 / (1.0 + math.exp(-z))

myLogisticFuncUDF = udf(myLogisticFunc)
df.withColumn("score", myLogisticFuncUDF(col("age"), col("parch"), col("pclass"))).show()

关于apache-spark - 将模型分数应用于 Spark DataFrame - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35731140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com