房价预测是kaggle网站上一个较初级的入门竞赛,涉及的变量共79组,包括数值特征组和类别特征。数据可在kaggle官网下载 。
一 导入数据
下载的数据集共包括train和test两部分,其中train部分用来训练数据集,test部分用来计算提交结果。
导入数据集
import pandas as pd
train=pd.read_csv(r'C:\Users\Administrator\Downloads\train.csv')
test=pd.read_csv(r'C:\Users\Administrator\Downloads\test.csv')
二 数据预处理
这部分主要包括缺失值处理,重复值处理,和特征处理等。
1 缺失值处理
首先总体查看缺失列,可以看到缺失列一共有34列,我们需要对其进行缺失值补充。
cols=[col for col in alldata.columns if alldata[col].isnull().any()]
len(cols)
输出:34
在进行缺失值补充之前,先去掉缺失值超过1/4的列。找出缺失值过多的列。
cols_to_use=[col for col in cols if (alldata[col].isnull().sum()/len(alldata))<0.25]
cols_drop=[col for col in cols if col not in cols_to_use]
print(cols_drop)
输出缺失列: [‘Alley’, ‘FireplaceQu’, ‘PoolQC’, ‘Fence’, ‘MiscFeature’]
去掉缺失列。
alldata=alldata.drop(cols_drop,axis=1)
在进行缺失值补充之前,先将特征进行分类。将数值特征采用中位数进行补充,类别特征采用众数进行补充。
#找出数值特征和类别特征
numerical_cols_missing=[col for col in cols_to_use if alldata[col].dtype!='object']
object_cols_missing=[col for col in cols_to_use if alldata[col].dtype=='object']
#进行缺失值处理
for col in object_cols_missing:
alldata[col]=alldata[col].fillna(alldata[col].dropna().mode()[0]) #填充去掉NAN值的众数
for col in numerical_cols_missing:
alldata[col]=alldata[col].fillna(