- 不知道为什么pop_size要取36
- 不知道为什么要reframed.drop column index在18*8之后的七个
- 梳理一下函数的顺序就是:
- 一共有16个函数
# Initialize random population
def get_first_pop(pop_size, param_num, encode_length)
# Decoding parameter
def encode(individual_code)
# Decoding parameter combination
def get_param(individual_code,param_num, encode_length)
# Decoding population
def pop2param(pop) 没用
# Initialization parameter population
def get_first_param(pop_size, param_num, encode_length)
# Get random index
def get_cross_seg_id(param_num)
# Crossover
def cross_over(individual_1,individual_2)
# variation
def variation(individual_code)
# Population grouping
def pop2group(pop,group_num)
# Conversion of parameter sequences to key values
def c_pop2str(c_pop)
# select
def select(pop,n_selected,step)
# Population reconstruction
def pop_reconstruct(pop_selected,target_num)
# preprocessing
def series_to_supervised(data, n_in = 1, n_out = 1, dropnan = True)
# produce attention weights
def get_attenton_rate_df(param,df,n_feature,time_step)
# Get the training error of the attention weight on the validation set
def get_rmse(param,reframed)
def search_best_attention_rate(max_step)
-
.csv数据输入部分,对PM2.5数值所在的列values[:,4]作编码(encoder)
把整个values当中的数值统一在(0,1)之间->存入sclaed -
sliding window部分:
```
series_to_supervised(scaled, 18, 1)
```
这里18和1不知道是怎么来的!!??!?!?
函数的作用:把整个表格向下移动i行,(移动18次,从18开始移,然后17,16....)这样前面肯定会有空出来的行,就写nan;这样每一次移动完的表格(dataframe格式)存入cols这个list当中。因为shift这个操作做了18次,所以最后cols的列数就是18*属性个数,列的名称分别是var1(t-18) var2(t-18)... var11(t-18)...var1(t) var2(t)... var11(t)
search_best_attention_rate部分 调用get_first_param(36,18,6)和 select(pop,6,step) 和 pop_reconstruct(selected[0],36)
进行epoch:20
-
get_first_param
-
get_first_param(36,18,6)调用get_first_pop(36,18,6) 和 get_param(基因,18,6)
返回一个维度为2的list,前一半(维度为36)是基因,后一半(36)是小数,前一半存入pop - get_first_pop独立:返回了一个维度为36的list。每个维度代表一条基因,是18*6位的(0,1,1,0,1,0........)每一位数都是随机产生的,这也过于随机了吧。。
- get_param:调用encode( )18次。对每条基因操作,返回[0.38, 0.13, 0.59, 0.7, 0.32, 0.76, 0.29, 0.62, 0.94, 0.54, 0.13, 0.01, 1.0, 0.83, 0.73, 0.21, 0.43, 0.17]里面有18个小数。长度为18*6的基因,六个单位算一次。
- encode:return一个小数。[0,0,1,1,0,1]六位对应一个小数。
-
get_first_param(36,18,6)调用get_first_pop(36,18,6) 和 get_param(基因,18,6)
-
select
- select(pop,6,step)调用pop2group(pop,6)和c_pop2str(each)和 get_rmse
- pop2group(pop,6)独立:最后返回的len(group_pop)=6,len(group_pop[0])=6,len(group_pop[0][0])=108,也就是随机六条基因一组,一共六组。
- d
网友评论