聚合一热编码

Aggregated one hot encoding

我收集了有关天气预报的每小时数据。我收集的特征是数值特征 - 'temperature'、'precipitation' 以及分类特征 - 'weather_forecast'(例如 'sunny'、'fair'、'cloudy'、'rain'、'heavy rain' 等)。 我需要创建每日天气预报统计数据。虽然对于数值特征来说很容易(最小值、最大值、平均值、标准差等),但我在处理分类数据时遇到了一些困难。 我正在考虑每小时对 '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

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

我想知道这种方法是否有任何pitfalls/issues或需要注意的事项。这个编码有名字吗(网上没找到)

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

如果您将统计数据除以总小时数,您将获得某个时间段(例如一天)内天气类型的百分比。我觉得没什么特别的问题。

是的,这里有一个问题,称为虚拟变量陷阱,因为您必须删除 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:] 

假设您的数据框是 pandas DF,然后试试这个

df.sum()

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

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

希望这对您有所帮助,是您正在寻找的。让我知道