Kaggle房价预测

比赛链接为:https://www.kaggle.com/c/house-prices-advanced-regression-techniques。

练习的技能为:

  1. Creative feature engineering(特征工程)
  2. Advanced regression techniques like random forest and gradient boosting(高级回归技术,例如随机森林和梯度提升树)

1. 数据描述

  下载数据的方式如下:
在这里插入图片描述
在这里插入图片描述

3. 解决问题的思路

  1. 数据中是否包括字符串或者缺失值?如何把它们变成数值类型?
  2. 特征工程(为什么要进行特征选择,参数太多,一来计算量增加,二来容易造成过拟合现象。
  3. 算法的选择。

3.1 pandas_profiling

  安装方法为:pip install pandas_profiling。
  但在import pandas_profiling后,可能会出现ImportError: cannot import name ‘register_matplotlib_converters’。此时pip install --upgrade pandas就会消除该错误。

import pandas_profiling as ppf
import pandas as pd
import numpy as np

ppf.ProfileReport(train)

但可能会出现IOPub data rate exceeded的错误,如下所示:
在这里插入图片描述
  解决方法可参考:https://www.cnblogs.com/mehome/p/10567674.html,需要注意的是设置以后不光需要重启kernel,需要把jupyter notebook的启动程序关闭再进行重启。

3.2 facets

  Facets分为两个组件,分别是overview和driver。前者可以对比训练集和测试集的特征分布比较。

4. 数据清洗

  数据清洗指的是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。
  数据清洗具体包括:

  1. 解决缺失值:平均值、众数、最大值、最小值或更为复杂的概率估计代替缺失值。
  2. 去重:相同的记录合并为一条记录。
  3. 解决错误值:用统计分析的方法识别可能的错误或异常值,如偏差分析、识别不遵守分布或者回归的值,也可以用简单规则库(常识性规则、业务特定规则等)。检查数据值,或使用不同属性间的约束、外部的数据来检测和清理数据。
  4. 解决数据的不一致性:比如数据是类别型或者次序型(这不是数字化嘛,解释感觉有点牵强啊)。

4.1 显示缺失值的情况

import pandas as pd

train = pd.read_csv(r'train.csv')
test = pd.read_csv(r'test.csv')

miss = full.isnull().sum() #得到Series
miss[miss > 0].sort_values(ascending = False) #Seires中进行条件选择

5.代码

train.drop(train[(train["GrLivArea"]>4000)&(train["SalePrice"]<300000)].index,inplace=True)#pandas 里面的条件索引

full = pd.concat([train,test],ignore_index=True)

猜你喜欢

转载自blog.csdn.net/weixin_47532216/article/details/121637289