ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)
ML之FE:利用【數據分析+數據處理】算法對國內某平臺上海2020年6月份房價數據集【12+1】進行特征工程處理(史上最完整,建議收藏)
?
?
目錄
利用【數據分析+數據處理】算法對鏈家房價數據集【12+1】進行特征工程處理
1、數據集信息輸出
1.3、數據集基本信息
1.4、數據集類型分類
1.5、缺失值處理
2、特征工程
2.1、數據分析之單變量統計可視化分析:
2.1.1、統計每個字段
2.1.2、對指定特征單變量統計可視化
2.2、關聯分析
2.3、分析之Num
2.3.1、Num變量之間皮爾森相關性可視化
2.3.2、Num變量之間MIC可視化
2.3.3、Num尋找異常點
2.3.4、Num PCP圖可視化
2.4、處理之Num
2.4.1、刪除指定成對列的異常值點
2.4.2、修正目標特征的數據分布
2.5、處理之Cat
2.5.1、單獨分析兩個特征的分布
2.5.2、數值化
設計思路
?
?
?
相關文章
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、數據集基本信息
(3000, 13) 13 3000total_price object unit_price object roomtype object height object direction object decorate object area object age float64 garden object district object total_price_Num float64 unit_price_Num int64 area_Num float64 dtype: objectIndex(['total_price', 'unit_price', 'roomtype', 'height', 'direction','decorate', 'area', 'age', 'garden', 'district', 'total_price_Num','unit_price_Num', 'area_Num'],dtype='object')total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 0 290萬 46186元/平米 2室1廳 ... 290.0 46186 62.79 1 599萬 76924元/平米 2室1廳 ... 599.0 76924 77.87 2 420萬 51458元/平米 2室1廳 ... 420.0 51458 81.62 3 269.9萬 34831元/平米 2室2廳 ... 269.9 34831 77.49 4 383萬 79051元/平米 1室1廳 ... 383.0 79051 48.45[5 rows x 13 columns]total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 2995 230萬 43144元/平米 1室1廳 ... 230.0 43144 53.31 2996 372萬 75016元/平米 1室1廳 ... 372.0 75016 49.59 2997 366萬 49973元/平米 2室1廳 ... 366.0 49973 73.24 2998 365萬 69103元/平米 2室1廳 ... 365.0 69103 52.82 2999 420萬 49412元/平米 2室2廳 ... 420.0 49412 85.00[5 rows x 13 columns] <class 'pandas.core.frame.DataFrame'> RangeIndex: 3000 entries, 0 to 2999 Data columns (total 13 columns):# Column Non-Null Count Dtype --- ------ -------------- ----- 0 total_price 3000 non-null object 1 unit_price 3000 non-null object 2 roomtype 3000 non-null object 3 height 3000 non-null object 4 direction 3000 non-null object 5 decorate 3000 non-null object 6 area 3000 non-null object 7 age 2888 non-null float648 garden 3000 non-null object 9 district 3000 non-null object 10 total_price_Num 3000 non-null float6411 unit_price_Num 3000 non-null int64 12 area_Num 3000 non-null float64 dtypes: float64(3), int64(1), object(9) memory usage: 304.8+ KBage total_price_Num unit_price_Num area_Num count 2888.000000 3000.000000 3000.000000 3000.000000 mean 2001.453601 631.953450 58939.028333 102.180667 std 9.112425 631.308855 25867.208297 62.211662 min 1911.000000 90.000000 11443.000000 17.050000 25% 1996.000000 300.000000 40267.500000 67.285000 50% 2003.000000 437.000000 54946.000000 89.230000 75% 2008.000000 738.000000 73681.250000 119.035000 max 2018.000000 9800.000000 250813.000000 801.1400001.4、數據集類型分類
完整詳看:ML之FE:利用【數據分析+數據處理】算法對國內某平臺2020年6月份房價數據集【12+1】進行特征工程處理(史上最完整,建議收藏)——附錄
依次返回數值型、類別型字段、 ['age', 'area_Num', 'unit_price_Num', 'total_price_Num'] ['total_price', 'unit_price', 'roomtype', 'height', 'direction', 'decorate', 'area', 'garden', 'district']Categ_cols_Unique 依次查看訓練集、測試集中,類別型字段的細分類 total_price ['1000萬', '100萬', '1010萬', '1019萬', '1020萬', '1025萬', '1030萬', '1035萬', '1038萬', '1040萬', '1050萬', '1057萬', '1058萬', '105萬', '1060萬', '1065萬', '1070^……米', '99904元/平米', '99927元/平米', '99974元/平米'] 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廳'] height ['上疊別墅/共4層', '下疊別墅/共3層', '下疊別墅/共4層', '下疊別墅/共5層', '下疊別墅/共6層', '中樓層/共10層', '中樓層/共11層', '中樓層/共12層', '中樓層/共13層', '中樓層/共14層', '中 樓層/共15層', '中樓層/共16層', '中樓層/共17層', '中樓層/共18層', '中樓層/共19層', '中樓層/共20……村', '首創旭輝城', '首創禧悅(一期)', '首創錦悅', '香山新村東北街坊', '香山新村東南街坊', '香山新村西北街坊', '香山新村西南街坊', '香樹麗舍', '香梅花園(二期)', '香楠小區', '香榭苑', '香樟公寓', '香樟苑(普陀)', '香水灣', '香溢花城(住宅)', '馨佳園(菊泉街1280弄)', '馨佳園(菊泉街1281弄)', '馨佳園(菊泉街1398弄)', '馨佳園(菊盛路851弄)', '馨佳園(韶山路419弄)', '馨寧公寓', '馬陸清水灣', '駿豪國際', '高境一村', '高境二村', '高安公寓', '高海家苑', '高行綠洲(六期)', '高行綠洲(四期)', '高行馨苑', '鴻凱灣綠苑', '鴻吉苑', '鴻基公寓', '鴻寶一村(北區)', '鴻寶一村(南區)', '鴻寶二村', '鴻寶新村', '鵬豐苑', '鵬宏苑', '鵬海小區', '鵬潤伊頓公館', '鶴北新村', '黃山始信苑', '黃山新村', '黃山新苑', '黃浦新苑(公寓)', '黎安三村', '黎安二村', '黎明花園', '鼎信公寓', '鼎鑫名流世家', '齊七小區', '龍華小區', '龍庭公寓', '龍柏七村', '龍柏三村', '龍柏二村', '龍柏四村', '龍柏香榭苑', '龍澤園', '龍湖蔚瀾香醍', '龍湖酈城', '龔家宅'] district ['嘉定', '奉賢', '寶山', '徐匯', '普陀', '楊浦', '松江', '浦東', '虹口', '金山', '長寧', '閔行', '青浦', '靜安', '黃浦']Num_cols_Plot total_price_Num [290 599 420 ... 366 365 420] unit_price_Num [46186 76924 51458 ... 49973 69103 49412] age [1993 2005 1995 ... 1995 1990 2011] area_Num [62 77 81 ... 73 52 85]?
1.5、缺失值處理
該數據集中包含缺失數據!輸出缺失數據所在坐標(表格形式輸出) data_Frame_null_count.csv 已經成功保存到當前文件夾! 依次判斷每列是否含有缺失數據: False 12 True 1 dtype: int64 依次計算每列缺失值元素個數: 13 [0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0] 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}) Missing_data_Per_dict_Not0: (1, 0.0769, {'age': 0.037333}) Missing_data_Per_dict_Over05: (0, 0.0, {}) Missing_data_Per_dict_1: (0, 0.0, {}) Missing_data_Per_dict_09: (0, 0.0, {}) Missing_data_Per_dict_08: (0, 0.0, {}) Missing_data_Per_dict_under01: (1, 0.0769, {'age': 0.037333}) 依次計算每列缺失值元素占比: {'age': 0.037333} 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、統計每個字段
統計字段名及其對應長度: roomtype 22 ['2室1廳' '2室2廳' '1室1廳' '3室2廳' '1室0廳' '3室1廳' '2室0廳' '1室2廳' '4室3廳' '5室2廳''4室2廳' '5室3廳' '3室0廳' '5室1廳' '5室4廳' '6室4廳' '6室2廳' '6室3廳' '7室2廳' '9室6廳''3室3廳' '4室1廳'] roomtype字段下所有類別 對應數量 2室2廳 751 3室2廳 706 2室1廳 622 1室1廳 323 4室2廳 192 3室1廳 174 1室0廳 47 2室0廳 37 1室2廳 37 5室2廳 35 4室3廳 25 5室3廳 17 6室2廳 9 6室3廳 5 5室1廳 5 3室3廳 4 3室0廳 3 5室4廳 3 4室1廳 2 7室2廳 1 6室4廳 1 9室6廳 1 Name: roomtype, dtype: int64 統計字段名及其對應長度: height 138 ['高樓層/共6層' '低樓層/共6層' '中樓層/共6層' '高樓層/共18層' '低樓層/共9層' '中樓層/共5層' '高樓層/共11層''高樓層/共4層' '高樓層/共32層' '中樓層/共7層' '高樓層/共30層' '中樓層/共12層' '中樓層/共24層' '低樓層/共4層''低樓層/共5層' '中樓層/共13層' '中樓層/共11層' '低樓層/共7層' '高樓層/共8層' '中樓層/共18層' '中樓層/共14層''低樓層/共17層' '中樓層/共30層' '低樓層/共18層' '高樓層/共13層' '中樓層/共31層' '中樓層/共29層''獨棟/共2層' '高樓層/共29層' '低樓層/共30層' '低樓層/共15層' '高樓層/共28層' '聯排/共3層' '中樓層/共8層''中樓層/共56層' '低樓層/共16層' '低樓層/共56層' '低樓層/共32層' '高樓層/共7層' '高樓層/共5層' '中樓層/共9層''高樓層/共33層' '高樓層/共22層' '低樓層/共26層' '中樓層/共35層' '低樓層/共23層' '低樓層/共35層''中樓層/共19層' '中樓層/共17層' '高樓層/共31層' '低樓層/共38層' '低樓層/共28層' '低樓層/共22層''低樓層/共24層' '中樓層/共16層' '高樓層/共25層' '低樓層/共14層' '雙拼/共2層' '中樓層/共4層' '高樓層/共17層''低樓層/共34層' '中樓層/共28層' '高樓層/共24層' '中樓層/共20層' '低樓層/共12層' '高樓層/共16層''中樓層/共25層' '聯排/共1層' '中樓層/共15層' '高樓層/共34層' '低樓層/共49層' '中樓層/共10層''低樓層/共11層' '高樓層/共14層' '中樓層/共21層' '中樓層/共32層' '共3層' '中樓層/共38層' '共1層''低樓層/共19層' '中樓層/共22層' '中樓層/共33層' '低樓層/共13層' '低樓層/共20層' '高樓層/共12層''中樓層/共37層' '高樓層/共15層' '低樓層/共25層' '低樓層/共31層' '高樓層/共26層' '高樓層/共9層' '雙拼/共3層''低樓層/共33層' '高樓層/共20層' '高樓層/共40層' '低樓層/共21層' '低樓層/共10層' '上疊別墅/共4層''低樓層/共2層' '低樓層/共8層' '低樓層/共61層' '中樓層/共59層' '高樓層/共36層' '中樓層/共27層''下疊別墅/共6層' '高樓層/共10層' '高樓層/共27層' '高樓層/共21層' '低樓層/共3層' '高樓層/共37層''高樓層/共49層' '低樓層/共27層' '高樓層/共19層' '中樓層/共34層' '低樓層/共1層' '高樓層/共35層''低樓層/共43層' '低樓層/共51層' '中樓層/共39層' '低樓層/共29層' '中樓層/共36層' '高樓層/共43層''聯排/共2層' '中樓層/共23層' '獨棟/共3層' '高樓層/共23層' '高樓層/共39層' '共2層' '高樓層/共38層''高樓層/共45層' '中樓層/共63層' '中樓層/共26層' '下疊別墅/共5層' '下疊別墅/共3層' '下疊別墅/共4層''低樓層/共37層' '低樓層/共41層' '高樓層/共58層'] height字段下所有類別 對應數量 高樓層/共6層 557 中樓層/共6層 335 低樓層/共6層 260 中樓層/共5層 90 低樓層/共18層 84... 下疊別墅/共3層 1 中樓層/共59層 1 低樓層/共41層 1 高樓層/共58層 1 高樓層/共43層 1 Name: height, Length: 138, dtype: int64 統計字段名及其對應長度: direction 34 ['南' '南 北' '東南' '東 南' '北 西北' '東北' '西' '西南' '東南 南' '南 西南' '東' '南 西 北' '西 東''東 東南' '北' '南 西' '東 西' '北 南' '西南 西北' '暫無數據' '東 北' '東南 西北' '西北' '東南 西''東北 南 北' '東 南 北' '西 東北' '南 東南' '南 北 東 東南' '南 東' '南 北 西' '西 北 南' '西 北''東南 南 西北 北'] direction字段下所有類別 對應數量 南 2131 南 北 653 東南 50 西南 46 西 19 東 13 北 12 南 西 8 北 南 7 東南 南 7 南 西南 6 東北 5 暫無數據 5 東 南 5 南 西 北 4 西 東 3 東 西 3 西北 3 東 東南 3 東 北 2 北 西北 2 西 北 南 1 東 南 北 1 南 北 東 東南 1 西南 西北 1 西 北 1 東北 南 北 1 東南 南 西北 北 1 南 北 西 1 南 東 1 東南 西北 1 西 東北 1 南 東南 1 東南 西 1 Name: direction, dtype: int64 統計字段名及其對應長度: decorate 18 ['平層/簡裝' '平層/精裝' '簡裝' '平層/毛坯' '精裝' '復式/精裝' '平層/其他' '躍層/精裝' '錯層/精裝' '復式/簡裝''復式/其他' '錯層/其他' '錯層/簡裝' '復式/毛坯' '躍層/簡裝' '毛坯' '錯層/毛坯' '躍層/毛坯'] decorate字段下所有類別 對應數量 平層/精裝 1428 平層/簡裝 997 平層/毛坯 247 復式/精裝 166 平層/其他 57 復式/簡裝 39 復式/毛坯 17 錯層/精裝 16 精裝 9 簡裝 5 復式/其他 5 躍層/精裝 5 錯層/簡裝 2 躍層/簡裝 2 躍層/毛坯 2 錯層/毛坯 1 毛坯 1 錯層/其他 1 Name: decorate, dtype: int64 統計字段名及其對應長度: garden 1859 ['國和一村' '虹康花苑(三期)' '紀念小區' ... '南新東園' '遵義西大樓' '象嶼名城'] garden字段下所有類別 對應數量 新南家園 15 世茂濱江花園 13 田林十二村 10 萬馨佳園 9 文怡花園 9.. 中海萬錦城(三期) 1 天山華庭 1 靜安晶華園 1 檀香花苑(公寓) 1 陸家嘴花園(一期) 1 Name: garden, Length: 1859, dtype: int64 統計字段名及其對應長度: district 15 ['楊浦' '長寧' '虹口' '松江' '閔行' '寶山' '靜安' '徐匯' '浦東' '黃浦' '普陀' '嘉定' '奉賢' '金山''青浦'] district字段下所有類別 對應數量 浦東 794 閔行 400 徐匯 268 靜安 228 寶山 208 普陀 169 嘉定 155 松江 146 楊浦 141 長寧 135 奉賢 95 黃浦 89 青浦 63 金山 55 虹口 54 Name: district, dtype: int64 Name: district, dtype: int64 {'浦東': 794, '閔行': 400, '徐匯': 268, '靜安': 228, '寶山': 208, '普陀': 169, '嘉定': 155, '松江': 146, '楊浦': 141, '長寧': 135, '奉賢': 95, '黃浦': 89, '青浦': 63, '金山': 55, '虹口': 54}?
?
2.1.2、對指定特征單變量統計可視化
(1)、常用于R預測對標簽特征分析
count 3000.000000 mean 631.953450 std 631.308855 min 90.000000 25% 300.000000 50% 437.000000 75% 738.000000 max 9800.000000 Name: total_price_Num, dtype: float64?
(2)、常用于C預測對標簽特征分析
T1、各個特征內統計類別柱狀圖可視化?
?
?
2.2、關聯分析
?
?
2.3、分析之Num
2.3.1、Num變量之間PCC可視化
total_price_Num unit_price_Num age area_Num total_price_Num 1.000000 0.638882 -0.101234 0.787404 unit_price_Num 0.638882 1.000000 -0.037053 0.184717 age -0.101234 -0.037053 1.000000 -0.075594 area_Num 0.787404 0.184717 -0.075594 1.000000 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操作
(4)、再次觀察所有特征分布
skewness: Skew area_Num 3.448604 unit_price_Num 1.121800 total_price_Num NaN age -4.876660 總共有 4 數值型的特征做變換 dataset.head: total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 0 290萬 46186元/平米 2室1廳 ... 2.195911 26.721049 5.767642 1 599萬 76924元/平米 2室1廳 ... 2.333830 29.376162 6.169801 2 420萬 51458元/平米 2室1廳 ... 2.267808 27.266778 6.259553 3 269.9萬 34831元/平米 2室2廳 ... 2.181588 25.337425 6.160505 4 383萬 79051元/平米 1室1廳 ... 2.250204 29.523924 5.301667[5 rows x 13 columns] age [14 14 14 ... 14 14 14] area_Num [5 6 6 ... 6 5 6] unit_price_Num [26 29 27 ... 27 28 27] total_price_Num [2 2 2 ... 2 2 2]?
?
2.5、處理之Cat
2.5.1、單獨分析兩個特征的分布
?
?
2.5.2、數值化
T1法、T2法
DF_types: total_price object unit_price object roomtype object height object direction object decorate object area object age float64 garden object district object total_price_Num float64 unit_price_Num float64 area_Num float64 dtype: object Col_dtypes_objects: Index(['total_price', 'unit_price', 'roomtype', 'height', 'direction','decorate', 'area', 'garden', 'district'],dtype='object')total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num 0 316 1125 4 ... 2.195911 26.721049 5.767642 1 560 2258 4 ... 2.333830 29.376162 6.169801 2 445 1350 4 ... 2.267808 27.266778 6.259553 3 287 634 5 ... 2.181588 25.337425 6.160505 4 410 2315 1 ... 2.250204 29.523924 5.301667[5 rows x 13 columns] 非樹類算法,正在進行啞變量化 DF_types: total_price int64 unit_price int64 roomtype int64 height int64 direction int64 decorate int64 area int64 age float64 garden int64 district int64 total_price_Num float64 unit_price_Num float64 area_Num float64 dtype: object Col_dtypes_int64s: Index(['total_price', 'unit_price', 'roomtype', 'height', 'direction','decorate', 'area', 'garden', 'district'],dtype='object') Col_dtypes_float64s: Index(['age', 'total_price_Num', 'unit_price_Num', 'area_Num'], dtype='object')age total_price_Num ... district_8 district_9 0 14.171884 2.195911 ... 0 0 1 14.190647 2.333830 ... 0 0 2 14.175018 2.267808 ... 1 0 3 14.196881 2.181588 ... 0 0 4 14.176584 2.250204 ... 0 0[5 rows x 7784 columns] dataset age total_price_Num ... district_8 district_9 0 14.171884 2.195911 ... 0 0 1 14.190647 2.333830 ... 0 0 2 14.175018 2.267808 ... 1 0 3 14.196881 2.181588 ... 0 0 4 14.176584 2.250204 ... 0 0 ... ... ... ... ... ... 2995 14.198437 2.149222 ... 0 0 2996 14.192207 2.244601 ... 0 0 2997 14.175018 2.241467 ... 0 0 2998 14.167178 2.240939 ... 0 0 2999 14.199993 2.267808 ... 0 0[3000 rows x 7784 columns]?
設計思路
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dataset:机器学习和深度学习中对数
- 下一篇: ML之回归预测:利用多个算法模型(Las