kaggle--House Price(房价预测)--线性回归模型

关于kaggle–House Price(房价预测)的入门级解答
本文只涉及入门级的完成,所以对于数据的处理和模型较为粗略,并不涉及详细优化,所以kaggle的提交测试了一下应该是处于中间水平,后续优化请按照个人参考修改。

数据集的读取与导入

import numpy as np
import pandas as pd
train = pd.read_csv("路径/train.csv")
test = pd.read_csv("路径/test.csv")

探索性可视化(ExploratoryVisualization)

查看分布:
首先查看预测值分布如何,在此处预测值为‘’SalePrice‘’

import seaborn as sns
sns.distplot(train["SalePrice"])  
plt.show()

观察发现图像不服从标准的正态分布,一般希望特征分布最好符合正态分布。是否符合则是检测数据的偏度skewness。如果skew()值大于0.75, 则需要进行分布变换。

具体可参考特征工程的特征分布

1

 train["SalePrice"].skew()
 1.8828757597682129

这里skewness明显大于0.75,是显著的左偏分布,故使用对数进行变换:

y = np.log(train["SalePrice"])

查看各个指标与目标值的关联程度:
各个数值属性与Y值的关联程度,去除关联程度非常低的属性
corr()返回相关系数矩阵,绝对值越接近1,线性相关越强烈

data = train.corr()
sns.heatmap(data)
plt.show()

在这里插入图片描述
热力图如果显示的不明显,尤其属性特别多的时候,可以选择直接查看。

data = train.corr()
data["SalePrice"].sort_values()

1
可以按照线性相关性对于部分项目进行剔除

数据清洗预处理及特征工程

数据清洗包括检查数据一致性,寻找异常值处理缺失值,而特征工程是指对数据特征值做进一步的提取处理。
特征工程决定了机器学习模型的上限,因为本篇是入门级只做了最基础的量纲消除特征工程,也就决定了这个模型的上限不会很高

寻找异常值:

sns.lmplot(x="GrLivArea", y="SalePrice", 
data=train,fit_reg=False,scatter=True)
plt.show()

在这里插入图片描述
根据异常值删除数据:

train = train[-((train.SalePrice < 200000) &  (train.GrLivArea > 4000))]

填补缺失值:
看各属性里面的空值情况,根据该属性的分布,对空值进行处理。在竞赛中提供了说明文档,用以说明各个属性代表的信息,例如泳池质量代表有无,此处可以用None值填充,而关于面积等则用0填充,对于像LotFrontage这样的特殊属性,是与LotAreaCut和Neighborhood有比较大的关系,所以这里可以用这两个属性分组后的中位数进行插补。
查看训练集下的属性空值个数:

aa = train.isnull().sum()
aa[aa>0].sort_values(ascending=False)

在这里插入图片描述
因为本例中的属性很多,以上填充都是较为繁琐的填充方法,所以我们采取一种更直接的方法(但会影响精确度)
这里有个地方需要注意:不止train的数据里面有空值,test数据里面也会有空值。而且可能分布在不同属性里面。所以,需要一开始对train和test的数据进行汇总,根据二者的总体分布来处理空值。
如果某个属性空值过多,直接从数据中删除该属性。
如果空值占比不大,如果是数字类型,就填写均值。如果是字符串类型,就填写出现次数最多的字符串。

#一半是删除过多空值的属性,一半是删除无关联的属性 
 train = train.drop(["MiscFeature", "Id", "PoolQC", "Alley", "Fence","GarageFinish", "KitchenAbvGr", "EnclosedPorch", "MSSubClass", "OverallCond", "YrSold", "LowQualFinSF", "MiscVal", "BsmtHalfBath", "BsmtFinSF2", "3SsnPorch"
Kaggle House Price是一个在Kaggle平台上的房价预测比赛。在这个比赛中,参赛者需要根据给定的房屋特征(比如卧室数、浴室数、房屋面积等)来预测房屋的销售价格。 为了解决这个问题,参赛者可以进行以下步骤: 1. 数据探索和预处理:参赛者需要对提供的训练数据进行探索和预处理。这包括了理解数据的特点,查看数据的分布情况,处理缺失值和异常值。 2. 特征工程:参赛者可以根据对房屋销售价格的理解和领域知识,对原始数据进行特征工程。这可能涉及特征的组合、变量的转换、特征的选择等。 3. 模型选择和训练:参赛者可以选择适当的机器学习模型来进行训练和预测。常见的模型包括线性回归、决策树、随机森林、梯度提升树等。参赛者可以使用交叉验证来评估模型的性能,并调整模型的超参数。 4. 模型集成:为了提高预测准确性,参赛者可以尝试模型集成的方法,比如平均模型、堆叠模型等。这可以进一步降低模型的泛化误差,并提高模型在未知数据上的性能。 5. 模型评估和优化:参赛者需要使用给定的测试数据对模型进行评估,并根据评估指标对模型进行优化。常见的评估指标包括均方根误差(RMSE)、平均绝对误差(MAE)等。 最终,参赛者提交他们训练好的模型,并使用该模型对测试数据集中的房屋进行预测,得到的预测结果将用于最终的评估和排名。通过这个比赛,参赛者能够学习和应用机器学习方法,提高对房价预测问题的理解和分析能力。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值