集成学习和随机森林——自学第十二篇

1、集成学习

在面临选择的时候需要作出决策,这时候你就会去询问不同的人该做怎样的决断,最后将询问后的决策进行投票,选择投票个数最多的那个。对同一个问题,可以有不同的算法,也会给出不同的结果,在这种情况下,可以集成不同的算法,少数服从多数,选择结果数最多的那类算法。
下面是用逻辑回归、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)
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

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)
print(log_clf.score(x_test,y_test))

#使用SVM
from sklearn.svm import SVC
svm_clf=SVC()
svm_clf.fit(x_train,y_train)
print(svm_clf.score(x_test,y_test))

#使用决策树
from sklearn.tree import DecisionTreeClassifier
dt_tree=DecisionTreeClassifier()
dt_tree.fit(x_train,y_train)
print(dt_tree.score(x_test,y_test))
#进行投票
y_predict1=log_clf.predict(x_test)
y_predict2=svm_clf.predict(x_test)
y_predict3=dt_tree.predict(x_test)
#如果三个值相加大于等于2,说明至少有两个模型的结果是1,那就定为1
y_predict=np.array((y_predict1+y_predict2+y_predict3)>=2,dtype='int')
print(y_predict[:10])

from sklearn.metrics import accuracy_score
print(accuracy_score(y_test,y_predict))
0.864
0.888
0.872
[1 0 0 1 1 1 0 0 0 0]
0.896

可以看出通过集成学习得到的准确度是大于其中任意一个算法的。
(1)Hard Voting,少数服从多数
当然也可以使用sklearn中的集成算法VotingClassifier

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)
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.show()

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666)

#载入三种算法
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier

#传入多个估计器(算法),元祖形式
from sklearn.ensemble import VotingClassifier
voting_clf=VotingClassifier(estimators=[
    ("log_clf",LogisticRegression()),
    ("svm_clf",SVC()),
    ("dt_clf",DecisionTreeClassifier())
],voting='hard')
voting_clf.fit(x_train,y_tra
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值