特征工程就是将原始数据空间变换到新的特征空间,在新的特征空间中,模型能够更好地学习数据中的规律。特征的选择和构造,就是人为地帮助模型学习到原本很难学好的东西,从而使模型达到更好的效果。
1. 根据现实情况构造特征
1.1 各点与特定点的距离
1 | df['x_dis'] = (df['x'] - 6165599).abs() |
1.2 将时间划分为白天与黑夜
1 | df['day_night'] = 0 |
1.3 将月份划分为季度
1 | df['quarter'] = 0 |
1.4 特征变化量之间的相似性
①统计每个ship的对应速度等级的个数.
②对方位进行16均分.
③统计速度为0的个数,以及速度不为0的统计量.
④加入x,v,d,y的中位数和各种位数,并删去count\mean\min\max\std等多余统计特征.
⑤以shift为主键,求相邻差异值(偏移量).
2. 构造分箱特征
2.1 经纬度和速度的分箱特征
1 | df['v_bin'] = pd.qcut(df['v'], 200, duplicates='drop') # 速度进行 200分位数分箱 |
2.2 经纬度分箱后并构造区域
1 | traj.sort_values(by='x', inplace=True) |
3. 构造DataFramte特征
3.1 count计数值
1 | def find_save_unique_visit_count_table(traj_data_df=None, bin_to_coord_df=None): |
3.2 shift偏移量
1 | for f in ['x', 'y']: |
3.3 统计特征
1 | def group_feature(df, key, target, aggs,flag): |
4.构造Embedding特征
word embedding就是将词映射到另外一个空间,相同类型的词在投影之后的向量空间距离更近,倾向于归到一起.
4.1 Word2vec构造词向量
1 | for i in tqdm(range(num_runs)): |
4.2 NMF提取文本的主题分布
TF-IDF是衡量字词的出现频率来定义其重要性的加权技术.
1 | # 使用tfidf对元素进行处理 |