kaggle小白入门——房价预测top2%~top1%

入门第二战,达到了top1%的分数,有点小兴奋,不过也有可能为公分的提高使模型过拟合了,但入门赛貌似也只能追求公分的提高。

言归正传,开战。

一、导包

# 数据处理及可视化
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 算法
from xgboost.sklearn import XGBRegressor
from sklearn.linear_model import LinearRegression, Lasso, Ridge, ElasticNet
from sklearn.svm import SVR
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.tree import DecisionTreeRegressor
# 训练
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import cross_val_score

二、获取数据

train = pd.read_csv("all/train.csv")
test = pd.read_csv("all/test.csv")
sample_submission = pd.read_csv("all/sample_submission.csv")

三、数据分析

1、SalePrice分布

sns.distplot(train.SalePrice)

可以看到SalePrice偏离了正态分布,需要调整,将SalePrice对数化。

sns.distplot(np.log(train.SalePrice + 1))

2、缺失值

(缺失值的处理参考https://www.kaggle.com/laurenstc/top-2-of-leaderboard-advanced-fe

拼接数据并将缺失值数量可视化

all_data = pd.concat((train.drop(["SalePrice"], axis=1), test))
all_data_na = (all_data.isnull().sum() / len(all_data)) * 100
all_data_na = all_data_na.drop(all_data_na[all_data_na == 0].index).sort_values(ascending=False)
plt.figure(figsize=(12, 6))
plt.xticks(rotation="90")
sns.barplot(x=all_data_na.index, y=all_data_na)

PoolQC:PoolQC的缺失值太多,按照文件的意思就是没有游泳池,可以用None来填充缺失值。理论上来说与PoolQC缺失值对应的PoolArea应该为0,但观察为数不多的有值PoolArea后,发现在测试集中960,1043,1139很特别,这三个例子不能用None填充。13个数据中,Ex出现4次,Gd出现4次,Fa出现2次。根据平均分布的思想,有两个缺失值需要填充Fa

all_data[all_data.PoolArea != 0][["PoolArea", "PoolQC"]]

MiscFeature直接删除。按照文件的意思可填充None。我也探索过MiscFeature与其对应的MiscVal以及GarageType之间的关系,试过一些填充办法,甚至确定了测试集中1089这个例子应该填充Gar2,但最终删除该特征对我的模型效果最好。

all_data[all_data.MiscVal > 10000][["MiscFeature", "MiscVal"]]

Alley:按照文件的意思可填充None。

Fence:同MiscFeature,直接删除。

FireplaceQu:按照文件的意思可填充None。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值