Python3入门机器学习 - 集成学习

简介: 集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。#准备数据X,y = datasets.

集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。

#准备数据
X,y = datasets.make_moons(noise=0.3,n_samples=500,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=666)

#逻辑回归预测
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 = SVC()
svc.fit(X_train,y_train)
svc.score(X_test,y_test)

#决策树预测
from sklearn.tree import DecisionTreeClassifier
dec_clf = DecisionTreeClassifier()
dec_clf.fit(X_train,y_train)
dec_clf.score(X_test,y_test)

y1_predict = log_reg.predict(X_test)
y2_predict = svc.predict(X_test)
y3_predict = dec_clf.predict(X_test)

#使用集成学习的方法决定最终预测结果
y_predict = np.array((y1_predict+y2_predict+y3_predict)>=2,dtype='int')

img_ee49e00d9bbea95db7c5641d7f7d05b7.png


使用sklearn中的VotingClassifier
from sklearn.ensemble import VotingClassifier

voting_clf = VotingClassifier(estimators=[
    ('log_clf',LogisticRegression()),
    ('SVM',SVC()),
    ('dec_clf',DecisionTreeClassifier())
],voting='hard')    #hard为少数服从多数的集成学习方式
voting_clf.fit(X_train,y_train)
voting_clf.score(X_test,y_test)


Soft Voting
img_2e116d8f3d9e7e8128e016ed478df0d9.png
Soft Voting这种方式必须要模型具有预测概率的能力,例如逻辑回归算法本身就是基于概率做分类的,而knn算法一类的非参数学习方法,也可以根据样本数据预测概率,SVM算法可以将probablity属性设置为True以支持概率预测。
voting_clf2 = VotingClassifier(estimators=[
    ('log_clf',LogisticRegression()),
    ('SVM',SVC(probability=True)),
    ('dec_clf',DecisionTreeClassifier(random_state=666))
],voting='soft')

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


使用Bagging产生大量子模型的集成学习方法

让每个子模型只看数据的一部分,用放回取样的方式来训练大量的子模型,作为集成学习的方法。

from sklearn.ensemble import BaggingClassifier

#创建Bagging集成学习的参数
#使用DecisionTreeClassifier()作为子模型,决策树作为子模型更容易创建子模型间的差异性,对于Bagging这种方式的集成学习来说,决策树是相对较好的子模型选择
#max_samples决定每个子模型最多参考样本数据量
#n_estimators决定生成多少个子模型
#bootstrap决定采用放回抽样还是不放回抽样,True为放回抽样
bagging_clf = BaggingClassifier(DecisionTreeClassifier(),max_samples=100,n_estimators=500,bootstrap=True)

上例为对样本进行随机采样,但对于Bagging,其实有更多的方法可以进行采样来创建子模型


img_a1d0ddc6d98638cd2390a9c1d0bcc410.png
Random Subspaces

#max_features设置随机取的最大样本特征数量
#bootstrap_features设置对特征进行放回或不放回取样
#oob_score设置对所有样本进行采样,不分离训练和测试数据集,而在随机采样中所有没有被采样的数据作为测试集使用
random_subspaces_clf = BaggingClassifier(DecisionTreeClassifier(),max_samples=500,n_estimators=500,bootstrap=True,
                                        max_features=1,bootstrap_features=True,n_jobs=-1,oob_score=True)
random_subspaces_clf.fit(X,y)
random_subspaces_clf.oob_score_
Random Patches

random_patches_clf = BaggingClassifier(DecisionTreeClassifier(),max_samples=100,n_estimators=500,bootstrap=True,
                                        max_features=1,bootstrap_features=True,n_jobs=-1)
random_patches_clf.fit(X,y)
random_patches_clf.oob_score


随机森林

from sklearn.ensemble import RandomForestClassifier

rf_clf = RandomForestClassifier(n_estimators=500,oob_score=True)
rf_clf.fit(X,y)
rf_clf.oob_score_
Extra Trees
from sklearn.ensemble import ExtraTreesClassifier

et_clf = ExtraTreesClassifier(n_estimators=500,oob_score=True,n_jobs=-1,bootstrap=True)
et_clf.fit(X,y)


Boosting


img_62004ae9eba5479ebb89b0004c85c695.png
Ada Boosting思路,对每次学习后,无法较好拟合的数据点,在下次拟合过程中,增加这些数据点的权重,依次循环生成子模型
from sklearn.ensemble import AdaBoostClassifier

ada_clf = AdaBoostClassifier(DecisionTreeClassifier(),n_estimators=500)
ada_clf.fit(X_train,y_train)
ada_clf.score(X_test,y_test)
img_de2ae0923175018bc24766ceea5e9d2c.png
Gradient Boosting思路,对于上次拟合错误的数据点,给与下一个模型专门训练,依次循环
#GradientBoostingClassifier本身基于决策树进行,因此不需要设置best_estamitor
from sklearn.ensemble import GradientBoostingClassifier
ada_clf = GradientBoostingClassifier(n_estimators=500)
ada_clf.fit(X_train,y_train)
目录
相关文章
|
2天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
11 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
10天前
|
监控 Devops 测试技术
DevOps实践: 持续集成和持续部署(CI/CD)的入门指南
【9月更文挑战第10天】在快速迭代的软件开发世界中,DevOps已经成为加速产品交付、提升软件质量和团队协作的关键策略。本文将深入浅出地介绍DevOps的核心组成部分——持续集成(Continuous Integration, CI)与持续部署(Continuous Deployment, CD)的基本概念、实施步骤以及它们如何革新传统的软件开发流程。你将学习到如何通过自动化工具简化开发流程,并理解为什么CI/CD是现代软件开发不可或缺的一环。
|
8天前
|
机器学习/深度学习 人工智能 算法
探索AI的奥秘:机器学习入门之旅
【8月更文挑战第43天】本文将带领读者开启一段奇妙的学习之旅,探索人工智能背后的神秘世界。我们将通过简单易懂的语言和生动的例子,了解机器学习的基本概念、算法和应用。无论你是初学者还是有一定基础的学习者,都能从中获得启发和收获。让我们一起踏上这段激动人心的学习之旅吧!
|
14天前
|
机器学习/深度学习 数据采集 人工智能
使用Python实现简单的机器学习分类器
【8月更文挑战第37天】本文将引导读者了解如何利用Python编程语言构建一个简单的机器学习分类器。我们将从基础概念出发,通过代码示例逐步深入,探索数据预处理、模型选择、训练和评估过程。文章旨在为初学者提供一条清晰的学习路径,帮助他们理解并实现基本的机器学习任务。
|
12天前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【9月更文挑战第9天】在数据科学领域,机器学习如同璀璨明珠,吸引无数探索者。尤其对于新手而言,纷繁复杂的算法常让人感到迷茫。本文将以决策树为切入点,带您从Python机器学习的新手逐步成长为高手。决策树以其直观易懂的特点成为入门利器。通过构建决策树分类器并应用到鸢尾花数据集上,我们展示了其基本用法及效果。掌握决策树后,还需深入理解其工作原理,调整参数,并探索集成学习方法,最终将所学应用于实际问题解决中,不断提升技能。愿这棵智慧之树助您成为独当一面的大师。
20 3
|
14天前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
25 1
|
19天前
|
机器学习/深度学习 算法 数据挖掘
|
2天前
|
机器学习/深度学习 数据采集 算法
机器学习新纪元:用Scikit-learn驾驭Python,精准模型选择全攻略!
在数据爆炸时代,机器学习成为挖掘数据价值的关键技术,而Scikit-learn作为Python中最受欢迎的机器学习库之一,凭借其丰富的算法集、简洁的API和高效性能,引领着机器学习的新纪元。本文通过一个实际案例——识别垃圾邮件,展示了如何使用Scikit-learn进行精准模型选择。从数据预处理、模型训练到交叉验证和性能比较,最后选择最优模型进行部署,详细介绍了每一步的操作方法。通过这个过程,我们不仅可以看到如何利用Scikit-learn的强大功能,还能了解到模型选择与优化的重要性。希望本文能为你的机器学习之旅提供有价值的参考。
7 0
|
11天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络入门到精通:Python带你搭建AI思维,解锁机器学习的无限可能
【9月更文挑战第10天】神经网络是开启人工智能大门的钥匙,不仅是一种技术,更是模仿人脑思考的奇迹。本文从基础概念入手,通过Python和TensorFlow搭建手写数字识别的神经网络,逐步解析数据加载、模型定义、训练及评估的全过程。随着学习深入,我们将探索深度神经网络、卷积神经网络等高级话题,并掌握优化模型性能的方法。通过不断实践,你将能构建自己的AI系统,解锁机器学习的无限潜能。
12 0
|
13天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。