首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTime列的特征工程

DateTime列的特征工程
EN

Data Science用户
提问于 2022-07-03 14:42:49
回答 1查看 88关注 0票数 0

我正在尝试训练一个模型来预测我屋顶的太阳能发电。这是我当前的数据集:https://pastebin.com/gtZcGi2m。它是利用一些气象api和实际产生的电力建造的。

我在ML.NET中使用了这个,让它自动找到最好的模型。问题是,如果太阳辐射是0,但是时间大约是下午2点,它仍然可以预测2000-3000年的产生。基本上,它的表现很差。我认为分裂datetime列可能是有意义的。时间是最重要的组成部分,但也对月/日有影响。我怎样才能为自己的价值观做好准备,才能得到更好的榜样?

EN

回答 1

Data Science用户

发布于 2022-11-21 10:41:03

如果使用Python,则可以利用库特征引擎从时间戳中自动提取日期和时间组件。

如果时间戳在索引中,可以执行如下操作:

创建玩具数据集:

代码语言:javascript
复制
import pandas as pd

X = {"ambient_temp": [31.31, 31.51, 32.15, 32.39, 32.62, 32.5, 32.52, 32.68],
     "module_temp": [49.18, 49.84, 52.35, 50.63, 49.61, 47.01, 46.67, 47.52],
     "irradiation": [0.51, 0.79, 0.65, 0.76, 0.42, 0.49, 0.57, 0.56],
     "color": ["green"] * 4 + ["blue"] * 4,
     }

X = pd.DataFrame(X)
X.index = pd.date_range("2020-05-15 12:00:00", periods=8, freq="15min")

自动提取特征:

代码语言:javascript
复制
from feature_engine.datetime import DatetimeFeatures

dtf = DatetimeFeatures(variables="index")

Xtr = dtf.fit_transform(X)

Xtr

生成的dataframe:

代码语言:javascript
复制
                     ambient_temp  module_temp  irradiation  color  month  \
2020-05-15 12:00:00         31.31        49.18         0.51  green      5
2020-05-15 12:15:00         31.51        49.84         0.79  green      5
2020-05-15 12:30:00         32.15        52.35         0.65  green      5
2020-05-15 12:45:00         32.39        50.63         0.76  green      5
2020-05-15 13:00:00         32.62        49.61         0.42   blue      5
2020-05-15 13:15:00         32.50        47.01         0.49   blue      5
2020-05-15 13:30:00         32.52        46.67         0.57   blue      5
2020-05-15 13:45:00         32.68        47.52         0.56   blue      5

                     year  day_of_week  day_of_month  hour  minute  second
2020-05-15 12:00:00  2020            4            15    12       0       0
2020-05-15 12:15:00  2020            4            15    12      15       0
2020-05-15 12:30:00  2020            4            15    12      30       0
2020-05-15 12:45:00  2020            4            15    12      45       0
2020-05-15 13:00:00  2020            4            15    13       0       0
2020-05-15 13:15:00  2020            4            15    13      15       0
2020-05-15 13:30:00  2020            4            15    13      30       0
2020-05-15 13:45:00  2020            4            15    13      45       0

如果datetime特性位于一个或多个列中,而不是索引中,则可以指示在variables参数中使用哪些列:

代码语言:javascript
复制
dtf = DatetimeFeatures(variables=["var_1", "var_2"])

DatetimeFeatures默认创建许多特性,您可以通过初始化转换器时设置参数features_to_extract="all"来创建所有可能的特性。或者,传递一个包含您想要创建的功能的列表。

DatetimeFeatures 文档中的更多细节。

DatetimeFeatures运行在熊猫dt模块的顶部。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/112357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档