集成回归模型的构建和预测入门思路与方法

更新时间:2023-05-15 09:10:01 阅读: 评论:0

Stacked Regression Model
总体介绍:通过对房价的预测展示集成回归模型构建的入门思路和方法。文中所用到的原始训练数据train和测试数据test可在本账号下免费下载。其中,目标变量为定量数据,即房屋价格;特征变量为分类数据和定量数据相混合。
步骤及注意:
1.本过程分为两步,第一步是原始数据的整理,处理缺失值,对数据类型及数据分布类型进行转换,便于下一步的模型训练。五四运动图片
职工带薪年休假2.若已有现成面板数据,可以直接越过第一步,从第二步开始直接建模。但直接建模前还是要注意数据的分布类型(正态分布还是其他分布)以及是定量数据还是分类数据,例如在本例的特征变量中,将分类数据或者看似分类数据的定量数据(例如MSSubClass变量)进行了编码赋值处理。
总之,在模型训练之前,一定先要把数据整理好,否则最终效果会受一定影响。
#  数据整理需要的库
1.import numpy as np 
2.import pandas as pd 
3.import matplotlib.pyplot as plt 
4.import aborn as sns 
5.color =&lor_palette() 
6.sns.t_style('darkgrid'
7.from scipy.stats import norm, skew 
掀盖头8.from sklearn.preprocessing import LabelEncoder 
9.from scipy.special import boxcox1p 
ceeport10.pd.t_option('display.float_format'lambda x: '{:.3f}'.format(x))  =
#  模型构建需要的库
1.from sklearn.linear_model import ElasticNet, Lasso 
2.from&ble import GradientBoostingRegressor 
3.from sklearn.kernel_ridge import KernelRidge 
4.from sklearn.pipeline import make_pipeline 
5.from sklearn.preprocessing import RobustScaler 
6.from sklearn.ba import BaEstimator, TransformerMixin, RegressorMixin, clone 
7.from&del_lection import KFold, cross_val_score 
8.import xgboost as xgb 
9.import lightgbm as lgb 
第一步:数据整理和处理
# 首先保留数据集中的Id项,然后删除
1.train_ID = train['Id']   
2.test_ID = test['Id']   
3.train.drop("Id", axis=1, inplace=True)   
4.test.drop("Id", axis=1, inplace=True) 
#查看异常值
1.fig, ax = plt.subplots()   
2.ax.scatter(x=train['GrLivArea'], y=train['SalePrice'])   
3.plt.ylabel('saleprice', fontsize=14)   
4.plt.xlabel('grlivarea', fontsize=14)   
5.plt.show()   
上图中我们可以看出,右下方存在极大的GrLivArea值,但SalePrice值却很低,属于异常值(极大的房屋面积但售价却极低,不符合逻辑)。
train = train.drop(train[(train['GrLivArea']>4000)&(train['SalePrice']<300000)].index)   # 删除上述异常值 
1.sns.distplot(train['SalePrice'], fit=norm)  # 对房价SalePrice做直方图与核密度曲线,并拟合正态分布曲线   
2.plt.show()   
上图中可以看出变量为右偏曲线,不服从正态分布,但模型尤其是线性模型偏爱正态分布数据,因此我们利用log(1+x)函数将数据类型转换为正态分布。
1.train['SalePrice'] = np.log1p(train['SalePrice'])  # 数据类型转换 
2.sns.distplot(train['SalePrice'], fit=norm)  # 查看转换后的数据分布 
3.plt.show()  # 由图可以看出转换后效果不错,趋向于正态分布 
1.n_train = train.shape[0]  # 保存原始训练数据的行数 
2.n_test = test.shape[0]  # 保存原始测试数据的行数 
3.y_train = train.SalePrice.values  # 训练数据的目标变量y 
4.all_data =&at((train, test)).ret_index(drop=True)  # 先将训练数据和测试数据合并在一个数据框中 
5.all_data.drop(['SalePrice'], axis=1, inplace=True)  # 删除目标变量SalePrice,总数据框中仅剩下特征变量 
6.all_data_na = (all_data.isnull().sum() / len(all_data)) * 100  # 计算每一列缺失值的比例 
7.all_data_na = all_data_na.drop(all_data_na[all_data_na==0].index).sort_values(ascending=Fal)  # 仅查看有缺失值的特征变量 
8.missing_data = pd.DataFrame({'missing ratio': all_data_na}) 
9.print(missing_data.head(10))  # 查看缺失值占比排前10位的特征变量
1.figure, ax = plt.subplots(figsize=(10, 6)) 
2.sns.barplot(x=all_data_na.index, y=all_data_na) 
3.icks(rotation='90'
4.plt.xlabel('特征变量', fontsize=15) 
5.plt.ylabel('缺失值比例(%)', fontsize=15) 
6.plt.title('特征变量缺失值构成', fontsize=15) 
7.Params['font.sans-rif'女生群聊名称] = ['SimHei'
8.plt.show()  # 绘制所有特征变量的缺失值占比条图
1.cor =&()  # 查看训练集中各特征变量与SalePrice变量的相关性 
2.plt.subplots(figsize=(10, 8)) 
3.sns.heatmap(cor, vmax=0.9, square=True) 
4.plt.show()  # 绘制相关性热图 
#  下面对缺失值进行处理
1.all_data["LotFrontage"]=upby("Neighborhood")["LotFrontage"].transform(lambda x: x.dian()))  # 在不同Neighborhood组别中,利用LotFrontage变量中非缺失值的中位数对缺失值进行插值替代 
2.for col in (美羊羊图片'PoolQC''MiscFeature''Alley''Fence''FireplaceQu''GarageType''GarageFinish''GarageQual''GarageCond''BsmtQual''BsmtCond''BsmtExposure''BsmtFinType1''BsmtFinType2''MasVnrType''MSSubClass'): 
3.    all_data[col] = all_data[col].fillna('None'# 将以上含有缺失值的变量,全部替换为‘None’表示,例如PoolQC变量为NA,表示该房子没有游泳池,因此用‘None’代替NA 
4.for col in ('GarageYrBlt''GarageArea''GarageCars''BsmtFinSF1''BsmtFinSF2''BsmtUnfSF''TotalBsmtSF''BsmtFullBath''BsmtHalfBath''MasVnrArea'):   
5.    all_data[col] = all_data[col].fillna(0)  # 将此类变量用0代替NA,例如,没有车库就意味着车库中没有汽车,为0 
6.all_data['MSZoning'长沙高考] = all_data['MSZoning'].fillna(all_data['MSZoning'].mode()[0])  # MSZoning变量中取值最多的为'RL',因此用'RL'填充缺失值 
7.all_data = all_data.drop(['Utilities'], axis=1)  # 去掉对模型预测无帮助的变量Utilities 
8.all_data["Functional"] = all_data["Functional"].fillna("Typ"
9.all_data['Electrical'] = all_data['Electrical'].fillna(all_data['Electrical'].mode()[0]) 
10.all_data['KitchenQual'仙人走兽]=all_data['KitchenQual'].fillna(all_data['KitchenQual'].mode()[0]) 

本文发布于:2023-05-15 09:10:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/898915.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   变量   缺失   特征   模型
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图