Date 日期的循环变换
我想在机器学习模型中使用一年中的某一天。由于一年中的某一天不是连续的(2019年的第365天之后是2020年的第1天),因此我想在此之后执行循环(正弦或余弦)变换 然而,在每一年中,新转换变量没有唯一的值;例如,同一年0.5的两个值,见下图。 我需要能够在模型训练和预测中使用一年中的某一天。对于正弦变换中的0.5值,它可能在2019年1月31日或2019年5月31日,那么使用0.5值可能会使模型混淆 是否可以使模型在同一年内区分0.5的两个值 我正在用Maxent软件模拟一个物种的分布。物种数据在20年内每天都是连续的。我需要一个模型来捕捉当天或季节的信号,而不需要将它们明确地用作分类变量 谢谢 EDIT1Date 日期的循环变换,date,time,maxent,machine-learning-model,Date,Time,Maxent,Machine Learning Model,我想在机器学习模型中使用一年中的某一天。由于一年中的某一天不是连续的(2019年的第365天之后是2020年的第1天),因此我想在此之后执行循环(正弦或余弦)变换 然而,在每一年中,新转换变量没有唯一的值;例如,同一年0.5的两个值,见下图。 我需要能够在模型训练和预测中使用一年中的某一天。对于正弦变换中的0.5值,它可能在2019年1月31日或2019年5月31日,那么使用0.5值可能会使模型混淆 是否可以使模型在同一年内区分0.5的两个值 我正在用Maxent软件模拟一个物种的分布。物种数据
根据furcifer下面的评论。但是,我发现增量建模方法对我的应用程序没有用处。它解决了后续日期之间一致差异的问题;e、 g.2018年12月30日、2018年12月31日和2019年1月1日。但它与计算某一参考日的天数(权重=1)没有区别。2019年同一天的价值比2014年高得多,这在生态上没有意义。我希望从所使用的日常环境条件(解释变量)中捕捉年际变化。我之所以需要在模型中使用day,是为了捕捉迁徙物种分布的季节趋势,而无需明确使用月份或季节作为分类变量。为了预测适合今天的栖息地,我需要做出这样的预测,这不仅取决于今天的环境条件,还取决于一年中的哪一天。根据您的需要,这可能不是正确的选择,我想到了两个选择
import numpy as np
date_features = []
for d in list(df['date_time']):
date_features.append(date2num(d))
date_features = np.array(date_features)
date_features_normalized = (date_features - np.min(date_features))/(np.max(date_features) - np.min(date_features))
由于有许多日期需要转换为数字表示,首先要确保输出列表的顺序与Lukas提到的相同。最简单的方法是将重量添加到每个单位(重量年>重量月>重量日)
现在,规范化数值很重要
import numpy as np
date_features = []
for d in list(df['date_time']):
date_features.append(date2num(d))
date_features = np.array(date_features)
date_features_normalized = (date_features - np.min(date_features))/(np.max(date_features) - np.min(date_features))
这是一个常见的问题,但我不确定是否有一个完美的解决方案。我要注意的一点是,有两件事可能需要使用日期变量建模:
- 季节效应
- 季节独立趋势和自相关
y = dYear + dAbsolute + otherPredictors
如果您有足够的数据,一个经过良好调优的ML模型应该能够完成剩下的工作,并提供通常的警告