Xiongchao 2018-12-12
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。
又是一年年底啦,租房的小伙伴也有合同到期的吧,想要知道周边的房租究竟是涨呢还是将呢,咱们可以用Python分析预测一下,如果会涨房租的话,咱们可以早点看好下一个地点,如果是将房租的话,也好和房东好好说一下。
版本:Python3
系统:Windows
相关模块:pandas、numpy
一. 数据分析
1. 下载并加载数据
2. 了解每列数据的含义,数据的格式等,观察每个变量特征的意义以及对于问题的重要程度
3. 数据初步分析,通过绘图:初步了解数据之间的相关性,为构造特征工程以及模型建立做准备
二. 特征工程
将特征转换为模型可以辨别的类型(如处理缺失值,异常值处理,处理文本进行等)
三. 模型选择
1.根据目标函数确定学习类型,是无监督学习还是监督学习,是分类问题还是回归问题等选择合适的模型.
2.然后比较各个模型的分数,取效果较好的模型作为基础模型.
四. 模型融合
1. 最开始使用模型融合的方法来输出结果,最终的效果并不是特别好,所以自己还是选择了单模型。
2.看到了第一名开源的代码以后发现他们使用了多个模型的融合。
五. 修改特征和模型参数
1.可以通过添加或者修改特征,提高模型的上限.
2.通过修改模型的参数,使模型逼近上限
数据集导入
首先使用pandas加载数据,使用pandas提供的head方法查看数据。
train.info()
使用train.info()可以看出训练集共有196539个样本,算是一个比较小的数据集了,同样可以看出这个数据集中是存在缺失值的。使用describe()方法查看数据集的详细信息。
pandas给出了数值类型特征的数值信息,std是标准差,表示数据集的分布广度;三个百分数25、50、75是四分位点。
经过上面的分析数据集中存在中文,对接下来的操作会存在一定的影响,为了方便操作自己做了一个简单的替换并且删除无用的特征和自己暂时不方便处理的数据。
特征提取
经过这次比赛自己感觉特征工程可能比选择哪种算法更加重要。接下来,我们就来研究一下哪些特征可能对模型训练有用。
所有特征相关度分析
# 画出相关性热力图 a = plt.subplots(figsize=(20, 12))#调整画布大小 a = sns.heatmap(train_corr, vmax=.8, square=True)#画热力图 annot=True 显示系数
price 相关度特征排序
# 寻找K个最相关的特征信息 k = 10 cols = train_corr.nlargest(k, 'price')['price'].index cm = np.corrcoef(train[cols].values.T) sns.set(font_scale=1.5) hm = plt.subplots(figsize=(20, 12))#调整画布大小 hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values) plt.show()
这个图好像有点尴尬,竟然残缺了这么多数据,一直没有去查这是什么原因造成的,有知道的小伙伴可以在留言区交流哦,虽然有残缺不过没有关系至少大致能够知道影响价格的几个重要特征。人们对于数值或许不够敏感,从上面的图看不出数据的特点,那么我们可以通过绘制直方图的形式将特征的数值分布展示出来。
Price 和相关变量之间的散点图
sns.set() cols = [ 'price','sqft_living','bedrooms','bathrooms', 'halls'] sns.pairplot(train[cols], size = 2.5) plt.show();
最后小声逼逼,个人觉着这些分析其实用处不是特别大,不知道小伙伴们有什么独特的见解,欢迎在留言区留言。
------------------------------- 隆重推荐 ------------------------------