东北大学大数据班机器学习大作业——印度房价预测

目录

1、项目背景. 3

2、实验描述. 3

3、实验目的. 3

4、实验环境. 3

5、实验原理. 4

5.1 决策树. 4

5.2 随机森林. 4

5.3 数据预处理与特征工程. 4

5.4 主成分分析. 4

5.5 逻辑回归. 4

5.6 SVM支持向量机. 5

6、实验分析. 5

7、数据的初步探索. 5

7.1 数据集说明. 5

7.2 数据的读取和相关库. 7

7.3 异常值处理:. 8

7.3.1 经纬度异常. 8

7.3.2 房间数量异常. 9

7.3.3 处理字符串型特征. 9

7.3.4 相关性分析. 9

7.3.5 属性名空格与点处理. 9

7.3.6 重复值处理. 10

7.3.7 缺失值处理. 10

7.3.8 异常值处理. 10

7.4 数据的可视化分析. 11

7.4.1 POSTED_BY分析. 11

7.4.2 UNDER_CONSTRUCTION分析. 11

7.4.3 RERA是否批准分析. 12

7.4.4 BHK_NO房间数量分析. 13

7.4.5 BHK_OR_RK财产类型分析. 13

7.4.6 SQUARE_FT房子大小(英寸)分析. 14

7.4.7 READY_TO_MOVE是否准备移动分析. 14

7.4.8 RESALE是否转售分析. 15

7.4.9 LONGITUDE(原译为经度)纬度分析. 15

7.4.10 LATITUDE(原译为纬度)经度分析. 16

8、模型的构建与求解. 18

8.1 数据预处理与特征工程. 18

8.1.1 编码与哑变量. 18

8.1.2  特征选择. 18

8.2 主成分分析. 20

8.3 决策树模型. 22

8.3.1 划分数据集. 22

8.3.2 十折交叉验证. 22

8.3.3 构建学习曲线调节参数. 22

8.3.4 网格搜索调节参数. 24

8.4 随机森林模型. 24

8.4.1 划分数据集. 24

8.4.2 十折交叉验证. 25

8.4.3 构建学习曲线调节参数. 25

8.5 逻辑回归. 27

8.5.1 划分数据集. 27

8.5.2 模型建立. 27

8.5.3 构建学习曲线. 28

8.6 SVR支持向量机回归. 29

8.6.1 划分数据集. 29

8.6.2 模型构建. 29

9、总结与收获. 29

1、项目背景

准确预测房价是一项艰巨的任务。买家不只是关心房子的大小(平方英尺),还有其他各种因素(例如房子的地理位置,是否为二手房等等)在决定房子/房产的价格中起着关键作用。要找出有助于理解买方行为的正确属性集是极其困难的。我将通过设计算法来测试回归技能,以准确预测印度的房价。数据集已在印度各地的各种房地产聚合器中收集,该数据集一共12个影响因素,我将尽可能准确地预测价格。

此外,在本次挑战中,我将空间进行特征工程,并掌握高级回归技术,如随机森林以及各种其他集成技术。

2、实验描述

对完整的数据集进行获取、导入、数据清洗、数据可视化分析、数据预处理、数据标准化、特征选择、模型训练和数据降维、特征工程、主成分分析PCA探索。在处理过程中利用图表、图线等方式对样本分布、模型结果等进行分析与评估。

在本实验中,根据在kaggle竞赛网站上下载的Train.csv数据集,对数据集中的列名空格、数据空值、数据重复值、分类型特征的编码与哑变量处理、数据内容以及数据异常值进行检测和处理。接着进行数据可视化探索。随后对数据进行预处理,包括对数据进行归一化、标签、独热编码等。

通过相关性分析等初步筛选特征,随后通过RFE递归特征消除法,根据模型分数变化图来决定特征选择后的特征维度。

然后训练决策树模型,通过构建学习曲线调节参数、使用网格搜索调节参数等方法,找出模型的最优参数,得出模型准确率、方差等指标。

3、实验目的

使用python数据分析的技术和机器学习的技术探究印度房价与各类因素的关联性,使用数据处理与回归分析完成美国房价的预测模型,并进行调参,努力获取最佳的模型。

学习数据分析的基本步骤和方法,根据分析结果进行数据处理等操作,让数据能够更好适应训练模型,提高预测的准确性和普适性。了解并掌握各类机器学习算法的原理、适用范围和使用方法等,能够根据给定的数据集进行模型训练和参数调优,并分析模型预测结果的准确性。学会探索数据降维等处理方法对模型的适用性。

4、实验环境

操作系统: Windows 10

编译环境:Jupyter Notebook 6.3.0

Python:3.8.8

Numpy:1.91.2

Pandas:1.1.3

Matplotlib:3.1.1

5、实验原理

5.1 决策树

决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各 种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。

5.2 随机森林

集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成所有模型的建模结果。基本上所有的机器学习领域都可以看到集成学习的身影,在现实中集成学习也有相当大的作用,它可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。在现在的各种算法竞赛中,随机森林,梯度提升树(GBDT),Xgboost等集成算法的身影也随处可见,可见其效果之好,应用之广。

5.3 数据预处理与特征工程

    数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断。也可能,数据的质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太 大或太小数据预处理的目的:让数据适应模型,匹配模型的需求

特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。 可能面对的问题有:特征之间有相关性,特征和标签无关,特征太多或太小,或者干脆就无法表现出应有的数 据现象或无法展示数据的真实面貌 特征工程的目的:1) 降低计算成本,2) 提升模型上限

5.4 主成分分析

在降维过程中,我们会减少特征的数量,这意味着删除数据,数据量变少则表示模型可以获取的信息会变少,模型的表现可能会因此受影响。同时,在高维数据中,必然有一些特征是不带有有效的信息的(比如噪音),或者有一 些特征带有的信息和其他一些特征是重复的(比如一些特征可能会线性相关)。我们希望能够找出一种办法来帮助 我们衡量特征上所带的信息量,让我们在降维的过程中,能够即减少特征的数量,又保留大部分有效信息——将那 些带有重复信息的特征合并,并删除那些带无效信息的特征等等——逐渐创造出能够代表原特征矩阵大部分信息的,特征更少的,新特征矩阵。

5.5 逻辑回归

线性回归对数据的要求很严格,比如标签必须满足正态分布,特征之间的多重共线性需要消除等等,而现实中很多真实情景的数据无法满足这些要求,因此线性回归在很多现实情境的应用效果有限。逻辑回归是由线性回归变化而 来,因此它对数据也有一些要求,而我们之前已经学过了强大的分类模型决策树和随机森林,它们的分类效力很强,并且不需要对数据做任何预处理

5.6 SVM支持向量机

从实际应用来看,SVM在各种实际问题中都表现非常优秀。它在手写识别数字和人脸识别中应用广泛,在文本和超文本的分类中举足轻重,因为SVM可以大量减少标准归纳(standard inductive)和转换设置(transductive settings)中对标记训练实例的需求。

6、实验分析

本实验共包括两个部分,第一部分为数据的初步探索,第二部分为各类机器学习算法的应用,具体内容如下:

  1. 数据的初步探索
  1. 数据的读取
  2. 数据的预处理
  3. 数据的可视化分析
  1. 各类机器学习算法的应用
  1. 数据的特征工程
  2. 主成分分析PCA
  3. 决策树
  4. 随机森林
  5. 逻辑回归
  6. SVM
  7. 建立初步模型
  8. 绘制学习曲线调节模型
  9. 使用网格搜索调节模型

7、数据的初步探索

7.1 数据集说明

  • 11
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
作业一(Matlab) 假设x=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20),y=( 2.94, 4.53, 5.96, 7.88, 9.02, 10.94, 12.14, 13.96, 14.74, 16.68, 17.79, 19.67, 21.20, 22.07, 23.75, 25.22, 27.17, 28.84, 29.84, 31.78).请写出拟合的直线方程,并画图(包括原数据点及拟合的直线),请打印出来。 请使用线性回归模型来拟合bodyfat数据。数据集介绍可阅读:https://www.mathworks.com/help/nnet/examples/body-fat-estimation.html 在matlab中,在命令行中输入[X,Y] = bodyfat_dataset; 即可获得一个拥有13个属性,252个样本的数据集。使用前200个样本来获得模型,并写出你所获得的模型。使用后52个样本做测试,汇报你所获得的泛化误差。 编程实现对数回归,并给出教材89页上的西瓜数据集3.0上的结果。要求采用4折交叉验证法来评估结果。因为此处一共17个样本,你可以去掉最后一个样本,也可以用所有数据,然后测试用5个样本。在汇报结果时,请说明你的选择。请在二维图上画出你的结果(用两种不同颜色或者形状来标注类别),同时打印出完整的代码。 作业二 采用信息增益准则,基于表4.2中编号为1、2、3、6、7、9、10、14、15、16、17的11个样本的色泽、根蒂、敲声、文理属性构建决策树。(本次作业可以用笔算,鼓励编程实现,但都需要列出主要步骤,其中log2(3)=1.585,log2(5)=2.322,log2(6)=2.585,log2(7)=2.807,log2(9)=3.17,log2(10)=3.322,log2(11)=3.459) 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对上题的训练数据采用预剪枝策略构建决策树,并汇报验证集精度。 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对题1所构建的决策树进行后剪枝,并汇报验证集精度。 作业三(Matlab) 试编程实现累积BP算法,在西瓜数据集2.0上(用训练数据)训练一个单隐层网络,用验证集计算出均方误差。要自己实现,不能直接调用现成的库函数。 作业四 下载并安装libsvm,http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ,在西瓜数据集3.0a上分别用线性核训练一个SVM。用正类1-6和负类9-14作为训练集,其余作为测试集。C取不同的值,其它参数设为默认值。作出测试正确率随C取值变化的图,C=[1 100 10000 10^6 10^8]。 换成高斯核(宽度设为1),重复上题的步骤。 作业五 以西瓜数据集2.0(见教材76页表4.1)中样本1--16为训练集训练一个朴素贝叶斯分类器,对测试样本17进行分类。请写出详细的计算过程。 假设x_k是一个上学生的分数,对应的分数及其分布是 x_1=30, P1=0.5,一共有14个学生; x_2=18, P2=mu,有6个学生; x_3=20, P3=2mu,有9个学生; x_4=23, P4=0.5-3mu,有10个学生; 通过最大对数似然法求出mu的值。 作业六(Python) 1 使用PCA对Yale人脸数据集进行降维,并分别观察前20、前100个特征向量所对应的图像。请随机选取3张照片来对比效果。数据集http://vision.ucsd.edu/content/yale-face-database

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值