ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)
目录
利用【数据分析+数据处理】算法对链家房价数据集【12+1】进行特征工程处理
2.2、根据某列Column_others的不同类别进行分组,统计组内Column_target平均结果
相关文章
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.1、输出基本信息
(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.2、单独统计目标变量差异
单独统计字段差异
Min 90.0
Avg 631.95345
Max 9800.0
loc函数: 0 290万
1 599万
2 420万
3 269.9万
4 383万
...
2995 230万
2996 372万
2997 366万
2998 365万
2999 420万
Name: total_price, Length: 3000, dtype: object
iloc函数: total_price unit_price roomtype height direction
0 290万 46186元/平米 2室1厅 高楼层/共6层 南
1 599万 76924元/平米 2室1厅 低楼层/共6层 南
2 420万 51458元/平米 2室1厅 低楼层/共6层 南 北
3 269.9万 34831元/平米 2室2厅 低楼层/共6层 南
1.3、分析缺失数据
依次判断每列是否含有缺失数据:
total_price False
unit_price False
roomtype False
height False
direction False
decorate False
area False
age True
garden False
district False
total_price_Num False
unit_price_Num False
area_Num False
dtype: bool
依次计算每列缺失值元素个数: total_price 0
unit_price 0
roomtype 0
height 0
direction 0
decorate 0
area 0
age 112
garden 0
district 0
total_price_Num 0
unit_price_Num 0
area_Num 0
dtype: int64
该数据集中包含缺失数据!输出缺失数据所在坐标(表格形式输出)
total_price unit_price roomtype ... total_price_Num unit_price_Num area_Num
61 710万 57724元/平米 3室2厅 ... 710.0 57724 123.00
85 1250万 92109元/平米 2室2厅 ... 1250.0 92109 135.71
100 555万 92655元/平米 1室1厅 ... 555.0 92655 59.90
101 1950万 80333元/平米 3室2厅 ... 1950.0 80333 242.74
137 218万 39978元/平米 2室1厅 ... 218.0 39978 54.53
... ... ... ... ... ... ... ...
2881 235万 27977元/平米 3室2厅 ... 235.0 27977 84.00
2891 468万 52585元/平米 2室2厅 ... 468.0 52585 89.00
2898 229万 26474元/平米 3室1厅 ... 229.0 26474 86.50
2919 235万 26705元/平米 3室2厅 ... 235.0 26705 88.00
2949 540万 53974元/平米 3室2厅 ... 540.0 53974 100.05
[112 rows x 13 columns]
缺失数据所在的行索引: Int64Index([ 61, 85, 100, 101, 137, 160, 175, 189, 245, 263,
...
2814, 2835, 2839, 2841, 2871, 2881, 2891, 2898, 2919, 2949],
dtype='int64', length=112)
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']
依次查看训练集、测试集中,类别型字段的细分类
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 ['嘉定', '奉贤', '宝山', '徐汇', '普陀', '杨浦', '松江', '浦东', '虹口', '金山', '长宁', '闵行', '青浦', '静安', '黄浦']
age [1993 2005 1995 ... 1995 1990 2011]
area_Num [62 77 81 ... 73 52 85]
unit_price_Num [46186 76924 51458 ... 49973 69103 49412]
total_price_Num [290 599 420 ... 366 365 420]
2、特征工程
2.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.2、根据某列Column_others的不同类别进行分组,统计组内Column_target平均结果
2.3、散点图
2.4、变量之间相关性分析
age total_price_Num unit_price_Num area_Num
age 1.000000 -0.101234 -0.037053 -0.075594
total_price_Num -0.101234 1.000000 0.638882 0.787404
unit_price_Num -0.037053 0.638882 1.000000 0.184717
area_Num -0.075594 0.787404 0.184717 1.000000
2.5、分析特征分布
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
再次观察所有特征分布
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.6、采用LabelEncoder、dummies处理
采用LabelEncoder,对部分【类别型】特征进行编号,转为【数值型】
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]