波士顿房价预测是一个较为简单的数据回归问题,通过对已有数据的模拟,从而预测其他房子的房价。
我对项目的处理流程如下所示:
1 收集数据
2 分析目标并了解其重要特征
3 查找缺少的值
4 特征工程
5 将其他特征进行数据化
6 建模
import pandas as pd
import seaborn as sns
#Seaborn是基于matplotlib的图形可视化python包
from scipy.stats import norm, skew
#scipy.stats.norm函数 可以实现正态分布(也就是高斯分布)
#skew函数计算数据集的偏度。
import numpy as np
import matplotlib.pyplot as plt
#读取数据
train = pd.read_csv("house-prices-advanced-regression-techniques/train.csv")
test = pd.read_csv("house-prices-advanced-regression-techniques/test.csv")
#显示数据的基本内容
train.shape, test.shape
train.head()
查看数据是否有缺失
#1
train.isnull().sum()
#2
train.isnull().any()
#3
train.info()
了解数据的一些信息并进行分析
print(train['SalePrice'].describe())
sns.distplot(train['SalePrice'])
print("Skewness: %f" % train['SalePrice'].skew()) #偏度
print("Kurtosis: %f" % train['SalePrice'].kurt()) #峰度
# 数据平滑处理 -- log1p( ) 和 exmp1( )
# 1. 数据预处理时首先可以对偏度比较大的数据用log1p函数进行转化,使其更加服从高斯分布,此步处理可能会使我们后续的分类结果得到一个好的结果。
# 2. 平滑问题很容易处理掉,导致模型的结果达不到一定的标准,log1p( )能够避免复值的问题 — 复值指一个自变量对应多个因变量
# log1p( ) 的使用就像是一个数据压缩到了一个区间,与数据的标准类似。其逆运算就是expm1的函数
# 由于使用的log1p()对数据进行了压缩,最后需要将预测出的平滑数据进行一个还原,而还原过程就是log1p的逆运算expm1.
# log1p = log(x+1)
# 当x较大时直接计算,当x较小时用泰勒展开式计算
train['SalePr