将nominial类型自变量根据因变量大小排列

来源:互联网 发布:olga软件 编辑:程序博客网 时间:2024/04/29 04:56

在处理kaggle的house prices数据时产生的一个想法。
有一个nominial型的自变量MSSubClass可能会对因变量sale price产生影响。现在如何评估影响的大小。如果直接用数据中给出的MSSubClass的值和sale price的值算correlation会有问题。因为nominial类型变量的值不代表真实的大小,因此当时的想法是将nominial类型各个值对应的sale price计算中位数,然后根据中位数来将nominial变量重新排列,让其值反应sale price的大小,也即是把nominial转成ordinal类型。(注意:这种方法是有问题的,不能使用这种方法转成ordinal类型然后进行回归。因为即使转为ordinal类型后,比如转为1,2,3,4,5…2类并不代表真的是1类的两倍。这里只是记录一下转的方法)。
比如我们已经将数据存入dataframe: raw_data中。

grouped = raw_data.groupby('MSSubClass')tmp = grouped['SalePrice'].median()tmp = tmp.sort_values()

此时tmp中存的就是排序好的值了。需要注意的是tmp是series类型的。

MSSubClass180     8850030      9990045     107500190    12825050     13200090     13598085     14075040     142500160    14600070     15600020     15925075     16350080     166500120    19200060     215200Name: SalePrice, dtype: int64

然后我们可以将tmp中的右侧的数字给替换成0-14的值。再将tmp转成dict类型,方便处理。

tmp = tmp.to_dict()

最后将原始数据中的值替换为tmp的序数。

原创粉丝点击