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]

设计思路

(0)

相关推荐