python - 如何更改 LabeledPoint RDD 中的标签
问题描述
我有大量数据作为分配给七个不同整数标签的 LabeledPoint RDD。
[LabeledPoint(5.0,[2590.0,56.0,2.0,212.0,-6.0,390.0,220.0,235.0,151.0,6225.0]),
LabeledPoint(2.0, [2804.0,139.0,9.0,268.0,65.0,3180.0,234.0,238.0,135.0,6121.0])....
我需要将此问题二进制化以通过 MLLib 中的 BoostedGradientTrees,因此我希望标签为 2.0 的所有功能都为 1.0,否则为 0.0。我是使用 RDD 的新手,我一生都无法弄清楚如何在不遇到 OutOfMemory 错误的情况下更改标签。我尝试了几种不同的方法,我认为这样的方法最简单:
def to_binary(Data):
Datazero = Data.filter(lambda x: (x != 2.0, y))
Data = Data.subtract(Datazero)
Datazero = Datazero.map(lambda x:(0.0,y))
Data = Data.map(lambda x: (1.0, y))
Data = Datazero.union(Data)
return Data
但显然这会返回一个错误,因为我不知道如何使用 LabeledPoint 对象。
解决方案
不需要定义辅助函数,也不需要分别过滤这两种情况。函数式 lambda 环境支持内部 if-else 环境:
Data = Data.map(lambda point : LabeledPoint(1, point.features) if point.label == 2.0 \
else LabeledPoint(0, point.features))
推荐阅读
- sql - SQL 查询 (UPDATE) 错误 - 错误 varchar
- javascript - ReactJS - 单元测试不模拟点击
- php - 为什么不能在 __construct 中初始化 UserPasswordEncoderInterface?
- docker - Spring Batch 是否可以使用外部应用程序启动容器?
- node.js - 使用 Handlebars 访问数组中所有对象的特定元素时出现问题
- java - Log4j 编程配置为仅保存在文件中
- c# - Xamarin.Forms 在 xaml 中嵌入原生视图
- wordpress - Wordpress 页面和帖子不会更新
- amazon-s3 - 在 hive 中创建一个视图的 csv 文件并将其放入 s3 中,标题不包括表名
- cypher - Cypher:节点创建问题