目录
利用【数据分析+数据处理】算法对链家房价数据集【12+1】进行特征工程处理
相关文章
ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)
ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理实现
ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)——附录
ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理实现
ML之回归预测:利用多个算法模型(LassoR、KernelRidgeR、ElasticNetR、GBR、LGBMR、XGBR)对国内某平台上海2020年6月份房价数据集【12+1】进行回归预测
ML之回归预测:利用多个算法模型(LassoR、KernelRidgeR、ElasticNetR、GBR、LGBMR、XGBR)对国内某平台上海2020年6月份房价数据集【12+1】进行回归预测实现
利用【数据分析+数据处理】算法对链家房价数据集【12+1】进行特征工程处理
1、数据集信息输出
1.3、数据集基本信息
1. (3000, 13) 13 3000 2. 3. total_price object 4. unit_price object 5. roomtype object 6. height object 7. direction object 8. decorate object 9. area object 10. age float64 11. garden object 12. district object 13. total_price_Num float64 14. unit_price_Num int64 15. area_Num float64 16. dtype: object 17. 18. Index(['total_price', 'unit_price', 'roomtype', 'height', 'direction', 19. 'decorate', 'area', 'age', 'garden', 'district', 'total_price_Num', 20. 'unit_price_Num', 'area_Num'], 21. dtype='object') 22. 23. total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 24. 0 290万 46186元/平米 2室1厅 ... 290.0 46186 62.79 25. 1 599万 76924元/平米 2室1厅 ... 599.0 76924 77.87 26. 2 420万 51458元/平米 2室1厅 ... 420.0 51458 81.62 27. 3 269.9万 34831元/平米 2室2厅 ... 269.9 34831 77.49 28. 4 383万 79051元/平米 1室1厅 ... 383.0 79051 48.45 29. 30. [5 rows x 13 columns] 31. 32. total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 33. 2995 230万 43144元/平米 1室1厅 ... 230.0 43144 53.31 34. 2996 372万 75016元/平米 1室1厅 ... 372.0 75016 49.59 35. 2997 366万 49973元/平米 2室1厅 ... 366.0 49973 73.24 36. 2998 365万 69103元/平米 2室1厅 ... 365.0 69103 52.82 37. 2999 420万 49412元/平米 2室2厅 ... 420.0 49412 85.00 38. 39. [5 rows x 13 columns] 40. <class 'pandas.core.frame.DataFrame'> 41. RangeIndex: 3000 entries, 0 to 2999 42. Data columns (total 13 columns): 43. # Column Non-Null Count Dtype 44. --- ------ -------------- ----- 45. 0 total_price 3000 non-null object 46. 1 unit_price 3000 non-null object 47. 2 roomtype 3000 non-null object 48. 3 height 3000 non-null object 49. 4 direction 3000 non-null object 50. 5 decorate 3000 non-null object 51. 6 area 3000 non-null object 52. 7 age 2888 non-null float64 53. 8 garden 3000 non-null object 54. 9 district 3000 non-null object 55. 10 total_price_Num 3000 non-null float64 56. 11 unit_price_Num 3000 non-null int64 57. 12 area_Num 3000 non-null float64 58. dtypes: float64(3), int64(1), object(9) 59. memory usage: 304.8+ KB 60. 61. age total_price_Num unit_price_Num area_Num 62. count 2888.000000 3000.000000 3000.000000 3000.000000 63. mean 2001.453601 631.953450 58939.028333 102.180667 64. std 9.112425 631.308855 25867.208297 62.211662 65. min 1911.000000 90.000000 11443.000000 17.050000 66. 25% 1996.000000 300.000000 40267.500000 67.285000 67. 50% 2003.000000 437.000000 54946.000000 89.230000 68. 75% 2008.000000 738.000000 73681.250000 119.035000 69. max 2018.000000 9800.000000 250813.000000 801.140000
1.4、数据集类型分类
完整详看:ML之FE:利用【数据分析+数据处理】算法对国内某平台2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)——附录
1. 依次返回数值型、类别型字段、 2. ['age', 'area_Num', 'unit_price_Num', 'total_price_Num'] 3. ['total_price', 'unit_price', 'roomtype', 'height', 'direction', 'decorate', 'area', 'garden', 'district'] 4. 5. Categ_cols_Unique 6. 依次查看训练集、测试集中,类别型字段的细分类 7. total_price ['1000万', '100万', '1010万', '1019万', '1020万', '1025万', '1030万', '1035万', '1038万', '1040万', '1050万', '1057万', '1058万', '105万', '1060万', '1065万', '1070^…… 8. 9. 米', '99904元/平米', '99927元/平米', '99974元/平米'] 10. roomtype ['1室0厅', '1室1厅', '1室2厅', '2室0厅', '2室1厅', '2室2厅', '3室0厅', '3室1厅', '3室2厅', '3室3厅', '4室1厅', '4室2厅', '4室3厅', '5室1厅', '5室2厅', '5室3厅', '5室4厅', '6室2厅', '6室3厅', '6室4厅', '7室2厅', '9室6厅'] 11. height ['上叠别墅/共4层', '下叠别墅/共3层', '下叠别墅/共4层', '下叠别墅/共5层', '下叠别墅/共6层', '中楼层/共10层', '中楼层/共11层', '中楼层/共12层', '中楼层/共13层', '中楼层/共14层', '中 12. 楼层/共15层', '中楼层/共16层', '中楼层/共17层', '中楼层/共18层', '中楼层/共19层', '中楼层/共20 13. 14. …… 15. 16. 村', '首创旭辉城', '首创禧悦(一期)', '首创锦悦', '香山新村东北街坊', '香山新村东南街坊', '香山新村西北街坊', '香山新村西南街坊', '香树丽舍', '香梅花园(二期)', '香楠小区', '香榭苑', '香樟公寓', '香樟苑(普陀)', '香水湾', '香溢花城(住宅)', '馨佳园(菊泉街1280弄)', '馨佳园(菊泉街1281弄)', '馨佳园(菊泉街1398弄)', '馨佳园(菊盛路851弄)', '馨佳园(韶山路419弄)', '馨宁公寓', '马陆清水湾', '骏豪国际', '高境一村', '高境二村', '高安公寓', '高海家苑', '高行绿洲(六期)', '高行绿洲(四期)', '高行馨苑', '鸿凯湾绿苑', '鸿吉苑', '鸿基公寓', '鸿宝一村(北区)', '鸿宝一村(南区)', '鸿宝二村', '鸿宝新村', '鹏丰苑', '鹏宏苑', '鹏海小区', '鹏润伊顿公馆', '鹤北新村', '黄山始信苑', '黄山新村', '黄山新苑', '黄浦新苑(公寓)', '黎安三村', '黎安二村', '黎明花园', '鼎信公寓', '鼎鑫名流世家', '齐七小区', '龙华小区', '龙庭公寓', '龙柏七村', '龙柏三村', '龙柏二村', '龙柏四村', '龙柏香榭苑', '龙泽园', '龙湖蔚澜香醍', '龙湖郦城', '龚家宅'] 17. district ['嘉定', '奉贤', '宝山', '徐汇', '普陀', '杨浦', '松江', '浦东', '虹口', '金山', '长宁', '闵行', '青浦', '静安', '黄浦'] 18. 19. 20. Num_cols_Plot 21. total_price_Num [290 599 420 ... 366 365 420] 22. unit_price_Num [46186 76924 51458 ... 49973 69103 49412] 23. age [1993 2005 1995 ... 1995 1990 2011] 24. area_Num [62 77 81 ... 73 52 85]
1.5、缺失值处理
1. 该数据集中包含缺失数据!输出缺失数据所在坐标(表格形式输出) 2. data_Frame_null_count.csv 已经成功保存到当前文件夹! 3. 依次判断每列是否含有缺失数据: 4. False 12 5. True 1 6. dtype: int64 7. 依次计算每列缺失值元素个数: 8. 13 [0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0] 9. Missing_data_Per_dict_0: (12, 0.9231, {'total_price': 0.0, 'unit_price': 0.0, 'roomtype': 0.0, 'height': 0.0, 'direction': 0.0, 'decorate': 0.0, 'area': 0.0, 'garden': 0.0, 'district': 0.0, 'total_price_Num': 0.0, 'unit_price_Num': 0.0, 'area_Num': 0.0}) 10. Missing_data_Per_dict_Not0: (1, 0.0769, {'age': 0.037333}) 11. Missing_data_Per_dict_Over05: (0, 0.0, {}) 12. Missing_data_Per_dict_1: (0, 0.0, {}) 13. Missing_data_Per_dict_09: (0, 0.0, {}) 14. Missing_data_Per_dict_08: (0, 0.0, {}) 15. Missing_data_Per_dict_under01: (1, 0.0769, {'age': 0.037333}) 16. 依次计算每列缺失值元素占比: {'age': 0.037333} 17. data_Missing_dict {'total_price': 0.0, 'unit_price': 0.0, 'roomtype': 0.0, 'height': 0.0, 'direction': 0.0, 'decorate': 0.0, 'area': 0.0, 'age': 0.037333333333333336, 'garden': 0.0, 'district': 0.0, 'total_price_Num': 0.0, 'unit_price_Num': 0.0, 'area_Num': 0.0}
2、特征工程
2.1、数据分析之单变量统计可视化分析:
2.1.1、统计每个字段
1. 统计字段名及其对应长度: roomtype 22 2. ['2室1厅' '2室2厅' '1室1厅' '3室2厅' '1室0厅' '3室1厅' '2室0厅' '1室2厅' '4室3厅' '5室2厅' 3. '4室2厅' '5室3厅' '3室0厅' '5室1厅' '5室4厅' '6室4厅' '6室2厅' '6室3厅' '7室2厅' '9室6厅' 4. '3室3厅' '4室1厅'] 5. roomtype字段下所有类别 对应数量 6. 2室2厅 751 7. 3室2厅 706 8. 2室1厅 622 9. 1室1厅 323 10. 4室2厅 192 11. 3室1厅 174 12. 1室0厅 47 13. 2室0厅 37 14. 1室2厅 37 15. 5室2厅 35 16. 4室3厅 25 17. 5室3厅 17 18. 6室2厅 9 19. 6室3厅 5 20. 5室1厅 5 21. 3室3厅 4 22. 3室0厅 3 23. 5室4厅 3 24. 4室1厅 2 25. 7室2厅 1 26. 6室4厅 1 27. 9室6厅 1 28. Name: roomtype, dtype: int64 29. 统计字段名及其对应长度: height 138 30. ['高楼层/共6层' '低楼层/共6层' '中楼层/共6层' '高楼层/共18层' '低楼层/共9层' '中楼层/共5层' '高楼层/共11层' 31. '高楼层/共4层' '高楼层/共32层' '中楼层/共7层' '高楼层/共30层' '中楼层/共12层' '中楼层/共24层' '低楼层/共4层' 32. '低楼层/共5层' '中楼层/共13层' '中楼层/共11层' '低楼层/共7层' '高楼层/共8层' '中楼层/共18层' '中楼层/共14层' 33. '低楼层/共17层' '中楼层/共30层' '低楼层/共18层' '高楼层/共13层' '中楼层/共31层' '中楼层/共29层' 34. '独栋/共2层' '高楼层/共29层' '低楼层/共30层' '低楼层/共15层' '高楼层/共28层' '联排/共3层' '中楼层/共8层' 35. '中楼层/共56层' '低楼层/共16层' '低楼层/共56层' '低楼层/共32层' '高楼层/共7层' '高楼层/共5层' '中楼层/共9层' 36. '高楼层/共33层' '高楼层/共22层' '低楼层/共26层' '中楼层/共35层' '低楼层/共23层' '低楼层/共35层' 37. '中楼层/共19层' '中楼层/共17层' '高楼层/共31层' '低楼层/共38层' '低楼层/共28层' '低楼层/共22层' 38. '低楼层/共24层' '中楼层/共16层' '高楼层/共25层' '低楼层/共14层' '双拼/共2层' '中楼层/共4层' '高楼层/共17层' 39. '低楼层/共34层' '中楼层/共28层' '高楼层/共24层' '中楼层/共20层' '低楼层/共12层' '高楼层/共16层' 40. '中楼层/共25层' '联排/共1层' '中楼层/共15层' '高楼层/共34层' '低楼层/共49层' '中楼层/共10层' 41. '低楼层/共11层' '高楼层/共14层' '中楼层/共21层' '中楼层/共32层' '共3层' '中楼层/共38层' '共1层' 42. '低楼层/共19层' '中楼层/共22层' '中楼层/共33层' '低楼层/共13层' '低楼层/共20层' '高楼层/共12层' 43. '中楼层/共37层' '高楼层/共15层' '低楼层/共25层' '低楼层/共31层' '高楼层/共26层' '高楼层/共9层' '双拼/共3层' 44. '低楼层/共33层' '高楼层/共20层' '高楼层/共40层' '低楼层/共21层' '低楼层/共10层' '上叠别墅/共4层' 45. '低楼层/共2层' '低楼层/共8层' '低楼层/共61层' '中楼层/共59层' '高楼层/共36层' '中楼层/共27层' 46. '下叠别墅/共6层' '高楼层/共10层' '高楼层/共27层' '高楼层/共21层' '低楼层/共3层' '高楼层/共37层' 47. '高楼层/共49层' '低楼层/共27层' '高楼层/共19层' '中楼层/共34层' '低楼层/共1层' '高楼层/共35层' 48. '低楼层/共43层' '低楼层/共51层' '中楼层/共39层' '低楼层/共29层' '中楼层/共36层' '高楼层/共43层' 49. '联排/共2层' '中楼层/共23层' '独栋/共3层' '高楼层/共23层' '高楼层/共39层' '共2层' '高楼层/共38层' 50. '高楼层/共45层' '中楼层/共63层' '中楼层/共26层' '下叠别墅/共5层' '下叠别墅/共3层' '下叠别墅/共4层' 51. '低楼层/共37层' '低楼层/共41层' '高楼层/共58层'] 52. height字段下所有类别 对应数量 53. 高楼层/共6层 557 54. 中楼层/共6层 335 55. 低楼层/共6层 260 56. 中楼层/共5层 90 57. 低楼层/共18层 84 58. ... 59. 下叠别墅/共3层 1 60. 中楼层/共59层 1 61. 低楼层/共41层 1 62. 高楼层/共58层 1 63. 高楼层/共43层 1 64. Name: height, Length: 138, dtype: int64 65. 统计字段名及其对应长度: direction 34 66. ['南' '南 北' '东南' '东 南' '北 西北' '东北' '西' '西南' '东南 南' '南 西南' '东' '南 西 北' '西 东' 67. '东 东南' '北' '南 西' '东 西' '北 南' '西南 西北' '暂无数据' '东 北' '东南 西北' '西北' '东南 西' 68. '东北 南 北' '东 南 北' '西 东北' '南 东南' '南 北 东 东南' '南 东' '南 北 西' '西 北 南' '西 北' 69. '东南 南 西北 北'] 70. direction字段下所有类别 对应数量 71. 南 2131 72. 南 北 653 73. 东南 50 74. 西南 46 75. 西 19 76. 东 13 77. 北 12 78. 南 西 8 79. 北 南 7 80. 东南 南 7 81. 南 西南 6 82. 东北 5 83. 暂无数据 5 84. 东 南 5 85. 南 西 北 4 86. 西 东 3 87. 东 西 3 88. 西北 3 89. 东 东南 3 90. 东 北 2 91. 北 西北 2 92. 西 北 南 1 93. 东 南 北 1 94. 南 北 东 东南 1 95. 西南 西北 1 96. 西 北 1 97. 东北 南 北 1 98. 东南 南 西北 北 1 99. 南 北 西 1 100. 南 东 1 101. 东南 西北 1 102. 西 东北 1 103. 南 东南 1 104. 东南 西 1 105. Name: direction, dtype: int64 106. 统计字段名及其对应长度: decorate 18 107. ['平层/简装' '平层/精装' '简装' '平层/毛坯' '精装' '复式/精装' '平层/其他' '跃层/精装' '错层/精装' '复式/简装' 108. '复式/其他' '错层/其他' '错层/简装' '复式/毛坯' '跃层/简装' '毛坯' '错层/毛坯' '跃层/毛坯'] 109. decorate字段下所有类别 对应数量 110. 平层/精装 1428 111. 平层/简装 997 112. 平层/毛坯 247 113. 复式/精装 166 114. 平层/其他 57 115. 复式/简装 39 116. 复式/毛坯 17 117. 错层/精装 16 118. 精装 9 119. 简装 5 120. 复式/其他 5 121. 跃层/精装 5 122. 错层/简装 2 123. 跃层/简装 2 124. 跃层/毛坯 2 125. 错层/毛坯 1 126. 毛坯 1 127. 错层/其他 1 128. Name: decorate, dtype: int64 129. 统计字段名及其对应长度: garden 1859 130. ['国和一村' '虹康花苑(三期)' '纪念小区' ... '南新东园' '遵义西大楼' '象屿名城'] 131. garden字段下所有类别 对应数量 132. 新南家园 15 133. 世茂滨江花园 13 134. 田林十二村 10 135. 万馨佳园 9 136. 文怡花园 9 137. .. 138. 中海万锦城(三期) 1 139. 天山华庭 1 140. 静安晶华园 1 141. 檀香花苑(公寓) 1 142. 陆家嘴花园(一期) 1 143. Name: garden, Length: 1859, dtype: int64 144. 统计字段名及其对应长度: district 15 145. ['杨浦' '长宁' '虹口' '松江' '闵行' '宝山' '静安' '徐汇' '浦东' '黄浦' '普陀' '嘉定' '奉贤' '金山' 146. '青浦'] 147. district字段下所有类别 对应数量 148. 浦东 794 149. 闵行 400 150. 徐汇 268 151. 静安 228 152. 宝山 208 153. 普陀 169 154. 嘉定 155 155. 松江 146 156. 杨浦 141 157. 长宁 135 158. 奉贤 95 159. 黄浦 89 160. 青浦 63 161. 金山 55 162. 虹口 54 163. Name: district, dtype: int64 164. Name: district, dtype: int64 165. {'浦东': 794, '闵行': 400, '徐汇': 268, '静安': 228, '宝山': 208, '普陀': 169, '嘉定': 155, '松江': 146, '杨浦': 141, '长宁': 135, '奉贤': 95, '黄浦': 89, '青浦': 63, '金山': 55, '虹口': 54}
2.1.2、对指定特征单变量统计可视化
(1)、常用于R预测对标签特征分析
1. count 3000.000000 2. mean 631.953450 3. std 631.308855 4. min 90.000000 5. 25% 300.000000 6. 50% 437.000000 7. 75% 738.000000 8. max 9800.000000 9. Name: total_price_Num, dtype: float64
(2)、常用于C预测对标签特征分析
T1、各个特征内统计类别柱状图可视化
2.2、关联分析
2.3、分析之Num
2.3.1、Num变量之间PCC可视化
1. total_price_Num unit_price_Num age area_Num 2. total_price_Num 1.000000 0.638882 -0.101234 0.787404 3. unit_price_Num 0.638882 1.000000 -0.037053 0.184717 4. age -0.101234 -0.037053 1.000000 -0.075594 5. area_Num 0.787404 0.184717 -0.075594 1.000000 6. data_Frame_corr_df.csv已经成功保存到当前文件夹!
2.3.2、Num变量之间MIC可视化
2.3.3、Num寻找异常点
T1、利用散点图scatter寻找异常点
T2、利用BP寻找异常点
2.3.4、Num PCP图可视化
2.4、处理之Num
2.4.1、删除指定成对列的异常值点
2.4.2、修正目标特征的数据分布
(1)、标签特征数据分布曲线、散点图可视化
(2)、符合正态分布的特征进行log操作
(3)、非正态分布特征进行box-cox操作
1. mu = 631.95 and sigma = 631.20 2. 3. 绘制Q-Q分位数图:看是否与理论的一致 4. skewness: 5. Skew 6. area_Num 3.448604 7. unit_price_Num 1.121800 8. total_price_Num 0.639867 9. age -4.876660
(4)、再次观察所有特征分布
1. skewness: Skew 2. area_Num 3.448604 3. unit_price_Num 1.121800 4. total_price_Num NaN 5. age -4.876660 6. 总共有 4 数值型的特征做变换 7. dataset.head: 8. total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 9. 0 290万 46186元/平米 2室1厅 ... 2.195911 26.721049 5.767642 10. 1 599万 76924元/平米 2室1厅 ... 2.333830 29.376162 6.169801 11. 2 420万 51458元/平米 2室1厅 ... 2.267808 27.266778 6.259553 12. 3 269.9万 34831元/平米 2室2厅 ... 2.181588 25.337425 6.160505 13. 4 383万 79051元/平米 1室1厅 ... 2.250204 29.523924 5.301667 14. 15. [5 rows x 13 columns] 16. age [14 14 14 ... 14 14 14] 17. area_Num [5 6 6 ... 6 5 6] 18. unit_price_Num [26 29 27 ... 27 28 27] 19. total_price_Num [2 2 2 ... 2 2 2]
2.5、处理之Cat
2.5.1、单独分析两个特征的分布
2.5.2、数值化
T1法、T2法
1. DF_types: 2. total_price object 3. unit_price object 4. roomtype object 5. height object 6. direction object 7. decorate object 8. area object 9. age float64 10. garden object 11. district object 12. total_price_Num float64 13. unit_price_Num float64 14. area_Num float64 15. dtype: object 16. Col_dtypes_objects: 17. Index(['total_price', 'unit_price', 'roomtype', 'height', 'direction', 18. 'decorate', 'area', 'garden', 'district'], 19. dtype='object') 20. total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 21. 0 316 1125 4 ... 2.195911 26.721049 5.767642 22. 1 560 2258 4 ... 2.333830 29.376162 6.169801 23. 2 445 1350 4 ... 2.267808 27.266778 6.259553 24. 3 287 634 5 ... 2.181588 25.337425 6.160505 25. 4 410 2315 1 ... 2.250204 29.523924 5.301667 26. 27. [5 rows x 13 columns] 28. 非树类算法,正在进行哑变量化 29. DF_types: 30. total_price int64 31. unit_price int64 32. roomtype int64 33. height int64 34. direction int64 35. decorate int64 36. area int64 37. age float64 38. garden int64 39. district int64 40. total_price_Num float64 41. unit_price_Num float64 42. area_Num float64 43. dtype: object 44. Col_dtypes_int64s: 45. Index(['total_price', 'unit_price', 'roomtype', 'height', 'direction', 46. 'decorate', 'area', 'garden', 'district'], 47. dtype='object') 48. Col_dtypes_float64s: 49. Index(['age', 'total_price_Num', 'unit_price_Num', 'area_Num'], dtype='object') 50. age total_price_Num ... district_8 district_9 51. 0 14.171884 2.195911 ... 0 0 52. 1 14.190647 2.333830 ... 0 0 53. 2 14.175018 2.267808 ... 1 0 54. 3 14.196881 2.181588 ... 0 0 55. 4 14.176584 2.250204 ... 0 0 56. 57. [5 rows x 7784 columns] 58. dataset age total_price_Num ... district_8 district_9 59. 0 14.171884 2.195911 ... 0 0 60. 1 14.190647 2.333830 ... 0 0 61. 2 14.175018 2.267808 ... 1 0 62. 3 14.196881 2.181588 ... 0 0 63. 4 14.176584 2.250204 ... 0 0 64. ... ... ... ... ... ... 65. 2995 14.198437 2.149222 ... 0 0 66. 2996 14.192207 2.244601 ... 0 0 67. 2997 14.175018 2.241467 ... 0 0 68. 2998 14.167178 2.240939 ... 0 0 69. 2999 14.199993 2.267808 ... 0 0 70. 71. [3000 rows x 7784 columns]
设计思路