二手车价格预测——Task5

本文探讨了二手车价格预测的Task5,涉及bagging、boosting、stacking和blending等模型融合技术。通过数据预览、特征工程和模型训练,使用xgb和lgb进行五折交叉验证,最后进行模型结果的加权融合。
摘要由CSDN通过智能技术生成

一、bagging/boosting

(一)bagging

	1.从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
	2.对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
	3.对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)

(二)boosting

	1.对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。
	2.进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。
	(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)

(三)区别

bagginng boosting
样本选择 随机有放回抽样 每一轮的训练集是不变的,改变的只是每一个样本的权重
样本权重 均匀取样,每个样本权重相等 根据错误率调整样本权重,错误率越大的样本权重越大
预测函数 所有的预测函数的权重相等 误差越小的预测函数其权重越大
并行运算 各个预测函数可以并行生成 各个预测函数必须按顺序迭代生成

二、stacking/blending

(一)stacking

	1.stacking是一种分层模型集成框架。
	2.以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集
	进行再训练,从而得到完整的stacking模型。

在这里插入图片描述
在这里插入图片描述

(二)blending

Blending相较于Stacking来说要简单一些,其流程大致分为以下几步:

	1.	将数据划分为训练集和测试集(test_set),其中训练集需要再次划分为训练集(train_set)和验证集(val_set);
	2.	创建第一层的多个模型,这些模型可以使同质的也可以是异质的;
	3.	使用train_set训练步骤2中的多个模型,然后用训练好的模型预测val_set和test_set得到val_predict, test_predict1;
	4.	创建第二层的模型,使用val_predict作为训练集训练第二层的模型;
	5.	使用第二层训练好的模型对第二层测试集test_predict1进行预测,该结果为整个测试集的结果

在这里插入图片描述

三、预览数据

	## 基础工具
import numpy as np
import pandas as pd
import warnings
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.special import jn
from IPython.display import display, clear_output
import time

warnings.filterwarnings('ignore')
%matplotlib inline

## 模型预测的
from sklearn import linear_model
from sklearn import preprocessing
from sklearn.svm import SVR
from sklearn.ensemble import RandomForestRegressor,GradientBoostingRegressor

## 数据降维处理的
from sklearn.decomposition import PCA,FastICA,FactorAnalysis,SparsePCA

import lightgbm as lgb
import xgboost as xgb

## 参数搜索和评价的
from sklearn.model_selection import GridSearchCV,cross_val_score,StratifiedKFold,train_test_split
from sklearn.metrics import mean_squared_error, mean_absolute_error

数据读取

## 通过Pandas对于数据进行读取 (pandas是一个很友好的数据读取函数库)
path = './datacsv/'
Train_data = pd.read_csv(path+'used_car_train_20200313.csv', sep=' ')
TestA_data = pd.read_csv(path+'used_car_testA_20200313.csv', sep=' ')

## 输出数据的大小信息
print('Train data shape:',Train_data.shape)
print('TestA data shape:',TestA_data.shape
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值