目录
基于BigMartSales数据集利用Featuretools工具实现自动特征工程
基于BigMartSales数据集利用Featuretools工具实现自动特征工程
设计思路
更新……
输出结果
1. train.shape: (500, 12) 2. test.shape: (200, 11) 3. after drop, train.shape: (500, 11) 4. data_all.shape: (700, 11) 5. -------------------data_all_CountNull: Item_Identifier 0 6. Item_Weight 136 7. Item_Fat_Content 0 8. Item_Visibility 0 9. Item_Type 0 10. Item_MRP 0 11. Outlet_Identifier 0 12. Outlet_Establishment_Year 0 13. Outlet_Size 202 14. Outlet_Location_Type 0 15. Outlet_Type 0 16. dtype: int64 17. -------------------after fillna,data_all_CountNull: 18. Item_Identifier 0 19. Item_Weight 0 20. Item_Fat_Content 0 21. Item_Visibility 0 22. Item_Type 0 23. Item_MRP 0 24. Outlet_Identifier 0 25. Outlet_Establishment_Year 0 26. Outlet_Size 0 27. Outlet_Location_Type 0 28. Outlet_Type 0 29. dtype: int64 30. -------------------Item_Fat_Content feature value_count: 31. Low Fat 436 32. Regular 221 33. LF 23 34. low fat 12 35. reg 8 36. Name: Item_Fat_Content, dtype: int64 37. ----------data_all.shape: (700, 11) 38. Entityset: sales 39. Entities: 40. bigmart [Rows: 700, Columns: 7] 41. outlet [Rows: 10, Columns: 5] 42. Relationships: 43. bigmart.Outlet_Identifier -> outlet.Outlet_Identifier
核心代码
1. #2、利用Featuretools工具实现自动特征工程 2. #(1)、创建一个实体集EntitySet:实体集是一种包含多个数据帧及其之间关系的结构。 3. es = ft.EntitySet(id = 'sales') 4. es.entity_from_dataframe(entity_id = 'bigmart', dataframe = data_all, index = 'id') # adding a dataframe 5. 6. 7. #(2)、规范化实体集:数据中包含两个级别的信息,即 item商品级别和 outlet门店级别。 8. #Featuretools能把一个数据集拆分成多个表格。我们根据outlet ID Outlet_Identifier从BigMart表中创建一个新表“outlet”。 9. es.normalize_entity(base_entity_id='bigmart', 10. new_entity_id='outlet', 11. index = 'Outlet_Identifier', 12. additional_variables = 13. ['Outlet_Establishment_Year', 'Outlet_Size', 14. 'Outlet_Location_Type', 'Outlet_Type']) 15. print(es) 16. ''' 17. 输出实体集EntitySet的组成 18. 它包含两个实体,为bigmart和outlet。这两个表之间也形成了一种关系,用Outlet_Identifier连接。 19. 这种关系将在生成新特征中发挥关键作用。 20. ''' 21. 22. 23. #(3)、使用DFS来自动创建新特征:DFS使用特征基元和实体集中给出的多个表来创建特征。 24. ''' 25. target_entity只是创建新特征的实体ID,这种情况下为实体“bigmart”。 26. 参数max_depth控制着通过堆叠基元生成的要素复杂性。 27. 参数n_jobs通过使用多个内核来辅助并行特征计算。 28. 这就是使用Featuretools的过程,它已经产生了许多新特征。 29. ''' 30. feature_matrix, feature_names = ft.dfs(entityset=es,target_entity = 'bigmart', 31. max_depth = 2,verbose = 1, n_jobs = -1) 32. print(feature_matrix.columns) 33. print(feature_matrix.head())