二手车交易价格5模型融合

今天是关于模型融合的打卡。
首先学习了一下模型融合有哪些方法。
比较简单常规的回归方法比如算术平均融合、几何平均融合;
stacking 构建多层模型,再利用预测结果来拟合预测;
还有就是boosting 多树的提升方法,之前打卡的时候已经学习过了,这次就不再赘述。
所谓stacking,类似于通过堆叠多个基学习器,在这几个学习器的预测结果上再加模型,得到次级学习器,再训练,最终完成预测。
我们先试一试简单的加权融合。

test_pre1 = [1.2, 3.2, 2.1, 6.2]
test_pre2 = [0.9, 3.1, 2.0, 5.9]
test_pre3 = [1.1, 2.9, 2.2, 6.0]
y_test_true = [1, 3, 2, 6] 

定义一个加权平均的函数

def Weighted_method(test_pre1,test_pre2,test_pre3,w=[1/3,1/3,1/3]):
    Weighted_result = w[0]*pd.Series(test_pre1)+w[1]*pd.Series(test_pre2)+w[2]*pd.Series(test_pre3)
    return Weighted_result

然后计算MSE

print('Pred1 MAE:',metrics.mean_absolute_error(y_test_true, test_pre1))
print('Pred2 MAE:',metrics.mean_absolute_error(y_test_true, test_pre2))
print('Pred3 MAE:',metrics.mean_absolute_error(y_test_true, test_pre3))

此时的结果是:
Pred1 MAE: 0.1750000000000001
Pred2 MAE: 0.07499999999999993
Pred3 MAE: 0.10000000000000009

做一个加权,根据加权来重新计算MSE:

w = [0.3,0.4,0.3] 
Weighted_pre = Weighted_method(test_pre1,test_pre2,test_pre3,w)
print('Weighted_pre MAE:',metrics.mean_absolute_error(y_test_true, Weighted_pre))

会发现结果:
Weighted_pre MAE: 0.05750000000000027
其实有所提升。
我们还可以考虑比如mean平均median平均等等,这里就不展开了。

接下来,我们可以尝试一下stacking融合,生成一些简单的数据,会发现模型结果比起之前有进一步的提升。
Stacking_pre MAE: 0.04213483146067476

在这时候,我遇到了一个问题。当我输入如下代码时:

from sklearn.datasets import make_blobs
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier

显示的结果是:
DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.
表明numpy.core.umath_tests是一个内部NumPy模块,不应该被导入。它将在将来的NumPy版本中被移除。
此时不要慌,我们可以输入:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

就可以解决这个问题啦。
那我们今日就讲到这里啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值