首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Apache Spark中的RFormula/RFormulaModel中获取因子来索引映射?

如何从Apache Spark中的RFormula/RFormulaModel中获取因子来索引映射?
EN

Stack Overflow用户
提问于 2018-06-08 01:14:50
回答 2查看 179关注 0票数 2

全,

我有一个简单的数据框架,如下所示

我正在使用RFormula接口制作一个模型矩阵,如下所示

代码语言:javascript
复制
val formula = "dep ~ indep"
val rF = new RFormula().setFormula(formula).setFeaturesCol("features").setLabelCol("label")
val rfModel = rF.fit(df)

其中,rfModel的类型为RFormulaModel。根据docs here

类别变量"indep“的映射应该可以作为pipelineModel从这个对象访问,但这似乎是一个私有成员。

我的问题是如何从RFormulaModel对象中获取标签和相应的索引?我知道我可以使用转换后的dataframe的元数据并进行字符串操作,但是有没有一种简单的方法可以做到这一点呢?

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-22 07:01:32

我想出了一个技巧,我必须将RFormulaModel写入磁盘,然后以PipelineModel的形式读回pipelineModel部分。从那里我可以访问StringIndexerModel阶段,如下所示

代码语言:javascript
复制
import org.apache.spark.ml.PipelineModel
import org.apache.spark.ml.feature.StringIndexerModel

rfModel.write.overwrite.save("/rfModel")
val pModel = PipelineModel.read.load("/rfModel/pipelineModel")

val strIndexers = pModel.stages.filter(stage => stage.isInstanceOf[StringIndexerModel])
val labelMaps = strIndexers.map(e  => { val i = e.asInstanceOf[StringIndexerModel]; (i.getInputCol, i.labels)})
票数 1
EN

Stack Overflow用户

发布于 2019-01-22 19:06:26

在pyspark中,可以从目标dataframe提取元数据,如下所示

代码语言:javascript
复制
for attr in df.schema["X"].metadata["ml_attr"]["attrs"]["numeric"]:
    print(f"idx: {attr['idx']}, name: {attr['name']}")

希望这也适用于scala!

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

https://stackoverflow.com/questions/50746831

复制
相关文章

相似问题

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