将项目列表编码为循环
cyclical的Python项目详细描述
周期性
将项目列表编码为“周期性”
安装
pip install cyclical
# or
git clone https://github.com/jojoee/cyclical
cd cyclical
python setup.py install
使用
^{pr2}$真实用例
TLTR:将周期性数据(例如月数[0-11]、小时数[0,23])映射到1-半径圆的正弦和余弦中,使之规范化
两年前,我在做“海流预测模型”。从其性质的背景知识来看,海流与风速有很强的关系,风速也是基于季节的。所以,我试着给出一个“月数”,从0开始到11结束。在
对于深度学习模型,我必须将数据规范化为[0,1],其中1表示最大值。有很多方法可以对数据进行标准化,比如最小值/最大值、平均值/标准差和其他标准化,但它不能适用于这种“月数”数据。在
“月数”有周期性的特点,所以11号月不能和0号月进行比较,所以我只能用其他的规范化方法来表示“月数”,而不是本模块中的“周期性”。在
importpandasaspdfromcyclicalimportcyclicalimportmathimportmatplotlib.pyplotasplt%matplotlibinlinen_rows=1000n_hrs=24hrs=[item%n_hrsforiteminlist(range(0,n_rows,1))]encoded_hrs=cyclical.encode(hrs,n_hrs)# print(encoded_hrs)n_months=12months=[item%n_monthsforiteminlist(range(0,n_rows,1))]encoded_months=cyclical.encode(months,n_months)# datframedf=pd.DataFrame({# hr'hr_sin':encoded_hrs[0],'hr_cos':encoded_hrs[1],# month'month_sin':encoded_months[0],'month_cos':encoded_months[1],})display(df)# plotn_samples=math.floor(n_rows*0.1)df.sample(n_samples).plot.scatter('hr_sin','hr_cos').set_aspect('equal')plt.show()# plotdf.sample(n_samples).plot.scatter('month_sin','month_cos').set_aspect('equal')plt.show()
参考文献
- 项目
标签: