欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kaggle 房价预测

程序员文章站 2022-06-26 20:02:25
...

1.检视源数据集,记得打开data_description.text看一下每组数据分别是什么含义。

2.合并数据(把training data 和 test data合并,一起处理)//也可以以相同方式进行两次处理····(泰坦尼克)

合并数据要写成如下形式:

train_df=pd.read_csv("E:/machine learning/houseprices/train.csv",index_col=0)
test_df=pd.read_csv("E:/machine learning/houseprices/test.csv",index_col=0)

2.1 %matplotlib inline是一个魔法函数(Magic Functions)。官方给出的定义是:IPython有一组预先定义好的所谓的魔法函数(Magic Functions),你可以通过命令行的语法形式来访问它们。可见“%matplotlib inline”就是模仿命令行来访问magic函数的在IPython中独有的形式。

2.2 DataFrame提供的是一个类似表的结构,由多个Series组成,而Series在DataFrame中叫columns

2.3 log1p = log(x+1)尽量变成正态分布的形式,使其结果不会偏

log1p函数有它存在的意义,即保证了x数据的有效性,当x很小时(如 两个数值相减后得到),由于太小超过数值有效性,用计算得到结果为0,换作log1p则计算得到一个很小却不为0的结果,这便是它的意义(好像是用泰勒公式来展开运算的,不确定)。同样的道理对于expm1,当x特别小,就会急剧下降出现如上问题,甚至出现错误值。

2.4 .hist() 用来创建直方图的函数

2.5 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

2.6 pd.concat()  #横向索引取并集,纵向索引取交集,注意该方法对对象表中有重复索引时失效  axis axis = 0, 表示在水平方向(row)进行连接 axis = 1, 表示在垂直方向(column)进行连接 

 

3.特征转化:填补缺失的数据,把特殊含义数据分类,注意由数字表示其他含义而非单纯数字

3.1 把特殊含义数据分类

单个数据:

all_price['MSSubClass'].dtypes
all_price['MSSubClass']=all_price['MSSubClass'].astype[str]
all_price['MSSubClass'].value_counts()
pd.get_dummies(all_price['MSSubClass'],prefix='MSSubClass').head()

 全部数据:

all_dummy_df=pd.get_dummies(all_price)
all_dummy_df.head()

3.2 填补缺失数据之填充平均数

mean_cols=all_dummy_df.mean()
all_dummy_df=all_dummy_df.fillna(mean_cols)

3.3  std函数是用来计算标准偏差的一个函数

3.4 让numerical的数据更平滑,更便于计算

法一:(源数据-均值)/标准偏差

numeric_col_means = all_dummy_df.loc[:, numeric_cols].mean()
numeric_col_std = all_dummy_df.loc[:, numeric_cols].std()
all_dummy_df.loc[:, numeric_cols] = (all_dummy_df.loc[:, numeric_cols] - numeric_col_means) / numeric_col_std

 

4.建立模型

4.1 把数据重新分回数据集与测试集

前提:

train_df=pd.read_csv("E:/machine learning/houseprices/train.csv",index_col=0)
test_df=pd.read_csv("E:/machine learning/houseprices/test.csv",index_col=0)

分回:

dummy_train_df = all_dummy_df.loc[train_df.index]
dummy_test_df = all_dummy_df.loc[test_df.index]

验证是否分回:

dummy_train_df.shape, dummy_test_df.shape

 4.2 用Ridge Regression模型来跑一遍看看,并用Sklearn自带的cross validation方法来测试模型(对于多因子的数据集,这种模型可以方便的把所有的var都无脑的放进去)

交叉验证只验证训练集

4.3 用Random Forest模型来跑一遍看看

5 Ensemble集成

用一个Stacking的思维来汲取两种或者多种模型的优点

 

模型融合知识点:

  • Adaboost 做得对的地方权重减少,偏离的地方权重增大,继续进行分类,给到第二棵树直到第n棵树,起到一个减少过拟合的作用,再做
  • Stacking 多个结果取线性或者别的模型进行总结提升,汲取多种模型优点
  • Bagging 多个结果求平均/投票

 

6 提交结果