【问题标题】:How to shift labels in Python using Apache Spark如何使用 Apache Spark 在 Python 中移动标签
【发布时间】:2015-07-14 20:26:02
【问题描述】:

我正在尝试移动 LabeledPoint 的标签,以便它们从 0 开始。现在 parsedDataInit.take(1) 在底部的代码之前看起来像这样:

[LabeledPoint(2001.0,[0.884123733793,0.610454259079,0.600498416968,0.474669212493,0.247232680947,0.357306088914,0.344136412234,0.339641227335,0.600858840135,0.425704689024,0.60491501652,0.419193351817])]

标签是年份,例如,2001.0 是最大年份,1922.0 是最小年份。区别是 89.0,我想做的是移动标签,使它们从 0 开始,使新的 minYear 0 和新的 maxYear 89,同时仍然保持相同的功能。我是 apache spark 的新手,不胜感激。提前致谢!这是我的代码:

parsedData = parsedDataInit.map(lambda lp: lp.label) # This is where I'm having trouble
print type(parsedData.take(1)[0])
print '\n{0}'.format(parsedData.take(1))

【问题讨论】:

  • "请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。" What topics can I ask about here?
  • 这是来自 Edx Scalable 机器学习 MOOC 实验室的作业!!有广场可以询问有关您的家庭作业的问题。
  • @eliasah,感谢您的评论。我今天刚刚坚持另一个 apache spark 课程。在阅读了您的评论后,我现在明白了,这门课程(我不能在这里命名)只是从 edx 复制粘贴)))

标签: python apache-spark ipython


【解决方案1】:

您只需从每年中减去最小值。

def normalize(data):
  labels = data.map(lambda lp: lp.label)
  minLabel = labels.min()
  return data.map(
    lambda lp: LabeledPoint(lp.label - minLabel, lp.features))

【讨论】:

    【解决方案2】:

    基于@Daniel 对问题的单行解决方案(不创建任何新功能):

    parsedData = parsedDataInit.map(lambda lp:LabeledPoint(lp.label - minYear, lp.features))

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 2015-07-28
      • 2012-01-12
      • 2015-09-12
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      相关资源
      最近更新 更多