【问题标题】:How to transform the categorical feature [duplicate]如何转换分类特征[重复]
【发布时间】:2018-05-03 07:41:03
【问题描述】:

我是机器学习的新手,我正在研究分类/回归问题。

在数据集中,有一个天气特征需要几个分类值,如:晴天、雨天、风雨天、阴天等。

有两种可选的方式来转换这个特性,

1.给每个类别一个数字索引,如

date           weather        indexedWeather
2017-11-01      Sunny              0
2017-11-02      Cloudy             1
2017-11-03      Snow               3
2017-11-04      Cloudy             1
2017-11-05      Windy              2
2017-11-06      Sunny              0
2017-11-07      Snow               3
2017-11-08      Cloudy             1

Spark MLLib 有一个 VectorIndexer 变压器来完成这项任务

2.将此特征转化为二值向量:

date           weather         indexedWeather
2017-11-01      Sunny              1 0 0 0
2017-11-02      Cloudy             0 1 0 0
2017-11-03      Snow               0 0 1 0
2017-11-04      Cloudy             0 1 0 0
2017-11-05      Windy              0 0 0 1
2017-11-06      Sunny              1 0 0 0
2017-11-07      Snow               0 0 1 0
2017-11-08      Cloudy             0 1 0 0

Spark MLLib 没有为此类任务提供转换器。

哪一个更受欢迎?看起来这两个选项在实践中都有使用,但我认为我更喜欢第二个选项,但我想听听你们的理解。

【问题讨论】:

    标签: apache-spark machine-learning linear-regression apache-spark-mllib logistic-regression


    【解决方案1】:

    对于第二种方法,Spark 中实际上有一个转换器可以为您完成:OneHotEncoder。在这种情况下,它应该与StringIndexer 一起使用,请参阅here 的文档。

    至于哪一个更合适,因为天气是严格分类的,你不能对它们进行排序,所以使用二元向量更合适。在算法需要连续特征并根据值(例如逻辑回归)拆分数据的情况下,这是正确的。如果您希望算法考虑没有明确的排名或可排序的顺序,则应使用 one-hot 编码器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多