如何解决Spark MLlib中每个分类变量的类别系数
我知道这已经被问到了很多,但我已经完成了所有的问题,没有一个是特别针对这个的。我正在 Pyspark 中这样做。
我知道在 Spark 中,为了为机器学习准备分类变量,您必须使用 StringIndexer,然后是 OneHotEncoder,然后是 VectorAssembler。我也知道 VectorIndexer 是如何工作的。 但是,当您想从机器学习模型的每个变量中获取系数、p 值、分数或其他度量时,它会为您提供整个分类变量的度量,而不是其 (n-1) 个类别的度量。
假设我们有一个名为“Invoice_status”的变量,其值为“已付款、未付款、待处理”,其中包含以下行:
Invoice_status |
---|
未付款 |
付费 |
待定 |
付费 |
它应该像这样在数据框中声明:
未付款 | 付费 |
---|---|
1 | 0 |
0 | 1 |
0 | 0 |
0 | 1 |
类别“待定”已被排除以避免完美的多重共线性,并用作参考变量。我知道 OneHotEncoder 默认情况下会执行此操作,而忽略了最后一个类别。 然而,“参考类别”部分很重要:模型应该返回“已付款”和“未付款”相对于“待处理”发票的系数,而不是“发票状态”的系数(假设我们已经离开“待处理”)从模型中作为参考变量)。但是,只要我看到问题、做教程、将步骤放在管道中或单独执行阶段,我总是得到“invoice_status”的系数而不是其不同类别的系数,当类别没有时,这是必不可少的它们之间的逻辑顺序。
我创建了一个函数来手动创建每个分类变量的那些类别(留下一个),这确实允许模型给我变量的每个类别的系数,但它的计算效率非常低,并且使我的整个过程好久不见。
有人能告诉我是否有任何有效的方法来获得每个类别的系数而不是整个类别变量的系数吗? 非常感谢您提前“
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。