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之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 3000
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 int64
area_Num float64
dtype: object
Index(['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 float64
8 garden 3000 non-null object
9 district 3000 non-null object
10 total_price_Num 3000 non-null float64
11 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+ KB
age 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.140000
1.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操作
mu = 631.95 and sigma = 631.20
绘制Q-Q分位数图:看是否与理论的一致
skewness:
Skew
area_Num 3.448604
unit_price_Num 1.121800
total_price_Num 0.639867
age -4.876660
(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]