【问题标题】:Aggregated one hot encoding聚合一热编码
【发布时间】:2019-12-03 02:15:09
【问题描述】:

我收集了有关天气预报的每小时数据。我收集的特征是数字的——“温度”、“降水”以及分类的——“天气预测”(例如“晴天”、“晴天”、“多云”、“雨天”、“大雨”等)。 我需要创建每日天气预报统计数据。虽然对于数值特征很容易(最小值、最大值、平均值、标准等),但我正在为如何处理分类数据而苦苦挣扎。 我正在考虑每小时对“weather_forecast”功能进行一次热编码,然后将这些值相加。

例如,对于以下数据:

hour      weather_forecast
8:00         sunny
9:00         sunny
10:00        sunny
11:00        cloudy
12:00        rain
13:00        cloudy

在一个热编码中

       sunny     cloudy     rain
8:00      1         0         0
9:00      1         0         0
10:00     1         0         0
11:00     0         1         0
12:00     0         0         1
13:00     0         1         0

我会得到类似的统计数据

sunny: 3
cloudy: 2
rain: 1

这可能会让我获得关于一天中天气的汇总统计数据。

我想知道这种方法是否存在任何陷阱/问题或需要注意的事项。这个编码有名字吗(我在网上找不到)。

【问题讨论】:

  • 我不确定您所说的“编码”是什么意思:您还没有对数据进行编码,而是对其进行了总结。您只需计算weather_forecast 列中的出现次数即可轻松完成此操作。
  • 我所说的编码是指我将分类值编码为特征,然后对它们进行汇总。如果我只是按照您的建议计算weather_forecast 列中的发生次数,我将不得不以某种方式将此信息转换(编码)为特征以获得我的天气预报每日统计信息。

标签: machine-learning feature-engineering


【解决方案1】:

假设您的数据框是 pandas DF,那么试试这个

df.sum()

这应该给出数据集所有列的总和,这应该会给你你期望的结果。

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sum.html

希望这对您有所帮助以及您正在寻找的内容。告诉我

【讨论】:

    【解决方案2】:

    是的,这有一个问题,称为虚拟变量陷阱,因为您必须删除 1 个虚拟变量列,例如在这种情况下,您必须删除 Sunny 列以避免自己进入虚拟变量陷阱

    #creating dummies of independent variables
    onehotencoder = OneHotEncoder(categorical_features = [3])
    X = onehotencoder.fit_transform(X).toarray()
    
    #avoiding dummy variable trap
    #to avoid redundant data but the python libraries are taking care of it but sometimes 
    you have to manually remove it
    X = X[:, 1:] 
    

    【讨论】:

      【解决方案3】:

      当您将 one-hot 编码应用于 weather_forecast 时,您的编码已完成。总和只显示天气晴朗、多云等时的小时数。

      如果您将统计信息除以总小时数,您将收到某个时间段(例如一天)内天气类型的百分比。我认为没什么特别的问题。

      【讨论】:

        猜你喜欢
        • 2020-05-13
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 2016-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多