Kaggle竞赛入门实战——机器学习预测房屋价格.docx
《Kaggle竞赛入门实战——机器学习预测房屋价格.docx》由会员分享,可在线阅读,更多相关《Kaggle竞赛入门实战——机器学习预测房屋价格.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Kaggle竞赛入门实战机器学习预测房屋价格这篇文章是介绍一个完好的机器学习小工程预测房屋价格它是Kaggle竞赛中入门级的题目以及我们比拟熟悉的泰坦尼克号生存预测处于同一等级。在之前介绍KNN算法时曾用过这个数据集但只是通过简单的建模帮助理解KNN的思想本文会更加全面地介绍完成一个小工程的流程怎样在科学分析的辅助下预测出我们需要的目的值。在分析之前我们应该提早明确我们的目的中途可能需要处理的问题可以归纳成以下几点解析标签变量可以通过目的变量大致分析出解决问题是需要分类算法还是回归算法。粗略解析特征因为特征标签都为英文所以理解标签含义是最根本的观察每个特征的特点是数值型的、还是字符型的是离散的
2、、还是连续的粗略联想一下各个特征与目的变量间的联络。数据预处理针对性处理数据集中的缺失数据以及异常数据。研究主要特征数据集中可能只有一局部特征与目的变量间相关性极强重点分析这些特征与目的变量间的联络。选择性处理其他特征除主要特征外可能主观上认为某些特征也会影响目的变量可以以选择性分析一下。建模工作选出最合适该问题的模型进展建模、调参等操作。由于每个人的习惯不同所以处理问题时的先后顺序、选择的方法自然也不同比方讲处理缺失值的方法就有很多种本文提及的流程、方法只是个人的一点小思路祈望给伙伴们参考但绝不局限于此不管算法还是模型不都应该向更优处开展嘛。首先一定要大致解析一下测试数据集上图只是数据集的一
3、小局部共80个特征一个目的变量“SalePrice共有1460个样本。很明显这个问题是需要通过房子的一些特征预测出相应的价格所以建模可以选择回归类算法。缺失值处理这个数据集许多特征都或者多或者少的含有一些缺失值针对缺失值个数的多少采取的处理方式也不同像一些特征的缺失值占样本个数超过三分之二那么这些特征的意义也不大所以选择舍去这些特征#很多特征还不及数据个数的三分之一所以选择舍去data.drop(columnsAlley,FireplaceQu,PoolQC,Fence,MiscFeature,axis1,inplaceTrue)而对于缺失值较少的数值型特征根据情况可以选择填充众数、中位数以及
4、平均数#填补数值型缺失值dataLotFrontage.fillna(dataLotFrontage.median(),inplaceTrue)dataMasVnrArea.fillna(dataMasVnrArea.mean(),inplaceTrue)而数据集中本身含有很多字符型特征而对于这类特征的缺失值是没有中位数以及平均数一讲的可以随机填充或填充出现频率最多的元素这里我选择了后者#获得含有缺失值的字符型特征标签miss_index_listdata.isnull().any()data.isnull().any().valuesTrue.index.tolist()miss_list#
5、存元素foriinmiss_index_list:#注意需要reshape规格miss_list.append(datai.values.reshape(-1,1)这里填充缺失值的方式可以用上述方式但前提是需要另写一个函数计算特征的众数另一种方式就是利用sklearn中自带的API进展填充fromsklearn.imputeimportSimpleImputer#用众数填补数值型变量foriinrange(len(miss_list):imp_mostSimpleImputer(strategymost_frequent)#实例化参数选择众数imp_mostimp_most.fit_trans
6、form(miss_listi)#训练data.loc:,miss_index_listiimp_most#交换原来的一列当然这种方式也适用于数值型其中参数strategy也是可选的像均值、中位数、众数以及自定义这几种代码中most_frequent就代表众数。对于填充缺失值的方式numpy以及pandas应用较多但这种利用API填充也比拟便利可以当成一次拓展自己解析一下。处理字符型特征对于某些回归类算法比方线性回归是通过计算继而预测出最后的目的变量所以训练时传入字符型元素是不合法的。但假如利用随机森林可以防止因为由决策树构成的随机森林只注重样本特征的分布但如今我们并不知道哪一种模型更合适该问
7、题因为最后我们要从中挑选出一个最优的那么我们在处理数据时就要兼顾我们将要选择的所有模型。这里选择利用哑变量也称独热编码处理字符型数据可能有的人比拟生疏但介于篇幅问题不在太多阐述可以自行查询一下或过段时间也会写一篇文章单独讲一下变量处理的相关知识。我们只针对字符型特征进展哑变量转化所以需要索引出字符型类的特征data_data.copy()#在一个新的数据集上操作ob_featuresdata_.select_dtypes(includeobject).columns.tolist()然后就可以通过sklearn中自带的API对字符型特征进展哑变量转换#哑变量/独热编码fromsklearn.p
8、reprocessingimportOneHotEncoderOneHotOneHotEncoder(categoriesauto)#实例化resultOneHot.fit_transform(data_.loc:,ob_features).toarray()#训练打印一下result输出如下这个矩阵中的每一列可以看成一个新的特征而每个特征只包含0以及1两个元素其中1代表有、0代表没有。比方Street特征中包含两个元素Grvl以及Pave而这两个元素就可以通过哑变量转化形成两个新的特征。Street特征中为Grvl的样本在Gral新一列中就为1在Pave新一列中就为0其他特征也是如此。#获取
9、特征名OneHotnamesOneHot.get_feature_names().tolist()OneHotDfpd.DataFrame(result,columnsOneHotnames)利用get_feature_names方法可以获取特征的标签将上述矩阵转化为一个DataFrame过滤方差因为转化为哑变量之后许多特征都是由0以及1组成的仍然用Street举例会不会有种可能就是所有样本的Street中的元素都为Grvl呢假如这样哑变量转化后的Grvl一列皆为1而Pave一列皆为0那么这两个新的特征对于最后的目的变量的预测是没有一点用途的是可以直接删去的所以利用方差过滤掉类似的情况将阈值设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kaggle 竞赛 入门 实战 机器 学习 预测 房屋 价格
限制150内