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

在处理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类型的。

MSSubClass
180     88500
30      99900
45     107500
190    128250
50     132000
90     135980
85     140750
40     142500
160    146000
70     156000
20     159250
75     163500
80     166500
120    192000
60     215200
Name: SalePrice, dtype: int64

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

tmp = tmp.to_dict()

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值