机器学习----集成学习和随机森林详解(未完)

集成学习是一种通过结合多个学习器的预测来提高整体性能的机器学习方法。通常采用同质的弱学习器,如逻辑回归、SVM和决策树,通过投票或加权平均等方式进行结果整合。集成学习在生活中有许多应用,如听取多人意见做决策。文中通过实例展示了集成学习的优越性,如Voting Classifier实现的硬投票和软投票策略,以及它们在不同场景下的适用性。
摘要由CSDN通过智能技术生成

什么是集成学习?

集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个学习器都是同质的"弱学习器"。

我们生活中也有很多集成学习的思想,比如买手机找别人推荐,几个人推荐几部手机,看他们综合意见。看电影,10个人7个说好,3个说不好,综合他们决定去看。。。

比如利用:逻辑回归,svn,决策树进行分类====》投票,少数服从多数,以达到更精准的预测。

代码简单实例实现:

#生成半月数据集,500个数据点,噪音0.3
X,y=datasets.make_moons(n_samples=500,noise=0.3,random_state=44)
plot.scatter(X[y==0,0],X[y==0,1])
plot.scatter(X[y==1,0],X[y==1,1])

#将数据分成训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=22)

#逻辑回归模型分类
from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression()
log_reg.fit(X_train,y_train)
log_reg.score(X_test,y_test)


#SVM模型分类
from sklearn.svm import SVC
svc_cls = SVC()
svc_cls.fit(X_train,y_train)
svc_cls.score(X_test,y_test)

#决策树分类
from sklearn.tree import DecisionTreeClassifier
dt_cls = DecisionTreeClassifier()
dt_cls.fit(X_train,y_train)
dt_cls.score(X_test,y_test)

#y123是三个模型预测的结果
y_predict1 = log_reg.predict(X_test)
y_predict2 = svc_cls.predict(X_test)
y_predict3 = dt_cls.predict(X_test)
#将三个结果集成起来,如果两个 以上都是1的话最终集成决策为1,否则为0,
#np.array是将布尔转成int
y_predict4 = np.array((y_predict1+y_predict2+y_predict3) >=2,dtype='int')

#将集成预测结果 和真实结果对比
from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_predict4)

其中三个模型单独分类得分:0.896,0.952,0.928

集成后分类得分:0.952

使用sklearn接口完成:Voting Cla's'sifier

#使用sklearn中的VotingClassifier进行集成
from sklearn.ensemble import VotingClassifier
voting_cls = VotingClassifier(estimators=[
    ('log_reg',LogisticRegression()),
    ('svm_cls',SVC()),
    ('dt_cls',DecisionTreeClassifier())
],voting = 'hard')#集成方式:hard即少数服从多数

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

结果:0.952

soft voting :

很多情况下少数服从多数的情况下并不是最好的,更合理的投票应该是有权值的。比如钢琴比赛,专家的权值应该高一些。

对于模型1和4几乎可以确定是A类型了,且2,3对AB类型判断没有明显的差距,这个时候投票仍然得到结果为B。

不仅看多少票投给AB,还有看每一票有多大的概率确认样本应该分哪一类,这样投票计算的形式就叫做soft voting。

用代码进行简单使用:

#使用sklearn中的VotingClassifier进行集成
from sklearn.ensemble import VotingClassifier
voting_cls2 = VotingClassifier(estimators=[
    ('log_reg',LogisticRegression()),
    ('svm_cls',SVC(probability=True)),#传入参数使svc支持概率,即分成某个类的概率
    ('dt_cls',DecisionTreeClassifier(random_state =666))
],voting = 'soft')#集成方式:soft

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值