【python机器学习】集成学习

目录

1、什么是集成学习

2、Soft Voting Classifier

3、Bagging 和 Pasting



1、什么是集成学习

集成学习是一种将多个单独的学习模型组合成一个更强大的模型的技术。其目的是将多个模型(KNN、逻辑回归、SVM等)的预测结果,通过投票(少数服从多数)来提高整体预测的准确性和稳定性。 

代码示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

X, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42)

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

from sklearn.linear_model import LogisticRegression

log_clf = LogisticRegression()  #逻辑回归
log_clf.fit(X_train, y_train)
log_clf.score(X_test, y_test)
#0.864

from sklearn.svm import SVC  

svm_clf = SVC()  #SVM分类器
svm_clf.fit(X_train, y_train)
svm_clf.score(X_test, y_test)
#0.896

from sklearn.tree import DecisionTreeClassifier

dt_clf = DecisionTreeClassifier(random_state=666)  #决策树分类器
dt_clf.fit(X_train, y_train)
dt_clf.score(X_test, y_test)
#0.864

# 3个分类器的预测结果
y_predict1 = log_clf.predict(X_test)
y_predict2 = svm_clf.predict(X_test)
y_predict3 = dt_clf.predict(X_test)

#手动完成集成学习
y_predict = np.array((y_predict1 + y_predict2 + y_predict3) >= 2, dtype='int')  
                      # >= 2 代表至少有2个模型,至多有3个模型认为预测结果等于1,此时,y_predict的结果就为1,否则为0(少数服从多数)

from sklearn.metrics import accuracy_score

accuracy_score(y_test, y_predict)  #查看预测准确度
#0.904

#由此可见,使用集成学习提升了我们机器算法的准确度

#使用sklearn中的集成学习Voting Classifier 接口
from sklearn.ensemble import VotingClassifier

voting_clf = VotingClassifier(estimators=[
    ('log_clf', LogisticRegression()),  
    ('svm_clf', SVC()),    
    ('dt_clf', DecisionTreeClassifier(random_state=666))],
                             voting='hard')  #传入参数hard,即少数服从多数


voting_clf.fit(X_train, y_train)
voting_clf.score(X_test, y_test)
#0.904

2、Soft Voting Classifier

在某些情况下,少数服从多数是不合理的,比如在一个选拔比赛中,专业评委票的权重和普通人票的权重是不一样的,因此更加合理的投票方式应该占有一定的权值。

voting_clf2 = VotingClassifier(estimators=[
    ('log_clf', LogisticRegression()), 
    ('svm_clf', SVC(probability=True)),
    ('dt_clf', DecisionTreeClassifier(random_state=666))],
                             voting='soft')  #参数改成soft

voting_clf2.fit(X_train, y_train)
voting_clf2.score(X_test, y_test)

3、Bagging 和 Pasting

在集成学习中,从投票的角度看,即使有很多机器学习方法,但是仍然不够多。因此,我们可以创建更多的子模型,及集成更多子模型的意见,并且子模型之间要具备差异性,即是每个子模型只看样本数据的一部分。而这也分成两种方式:

  1. 放回取样(Bagging):每个子模型从m个样本中看抽取n个样本后又放回去,下一个子模型又从m个样本中抽取n个样本;
  2. 不放回样本(Pasting):每个子模型从m个样本中取样的样本是不会重复的。

一般来说,放回取样(Bagging)是更常用的,因为可以每次训练较多的样本,并且具有随机性。

代码示例:

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier

bagging_clf = BaggingClassifier(DecisionTreeClassifier(),
                           n_estimators=500, max_samples=100,  
# n_estimators参数表示集成几个子模型,max_samples参数表示每个子模型抽取多少样本数据
                           bootstrap=True)  #bootstrap参数表示BaggingClassifier是放回取样(True)还是不放回取样(False)
bagging_clf.fit(X_train, y_train)
bagging_clf.score(X_test, y_test)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值