sklearn中调用集成学习算法

1、集成学习是指对于同一个基础数据集使用不同的机器学习算法进行训练,最后结合不同的算法给出的意见进行决策,这个方法兼顾了许多算法的"意见",比较全面,因此在机器学习领域也使用地非常广泛。生活中其实也普遍存在集成学习的方法,比如买东西找不同的人进行推荐,病情诊断进行多专家会诊等,考虑各方面的意见进行最终的综合的决策,这样得到的结果可能会更加的全面和准确。另外,sklearn中也提供了集成学习的接口voting classifier。

sklearn中具体调用集成学习方法的具体代码如下:

#使用集成学习的方法进行数据训练和预测#1-1导入原始基础数据集并且进行数据的预处理import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsx,y=datasets.make_moons(n_samples=500,noise=0.3,random_state=42)  #生成数据默认为100个数据样本print(x.shape)print(y.shape)plt.figure()plt.scatter(x[y==0,0],x[y==0,1],color="r")plt.scatter(x[y==1,0],x[y==1,1],color="g")plt.show()from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(x,y,random_state=42)#导入sklearn中的不同机器学习算法#1逻辑回归算法from sklearn.linear_model import LogisticRegressionlog_reg=LogisticRegression()log_reg.fit(x_train,y_train)print(log_reg.score(x_test,y_test))#2支撑向量机SVM算法from sklearn.svm import SVCsvc_reg=SVC()svc_reg.fit(x_train,y_train)print(svc_reg.score(x_test,y_test))#KNN算法from sklearn.neighbors import KNeighborsClassifierknn_reg=KNeighborsClassifier(n_neighbors=3)knn_reg.fit(x_train,y_train)print(knn_reg.score(x_test,y_test))#决策树算法from sklearn.tree import DecisionTreeClassifiertree_reg=DecisionTreeClassifier()tree_reg.fit(x_train ,y_train)print(tree_reg.score(x_test,y_test))y_predict1=log_reg.predict(x_test)y_predict2=knn_reg.predict(x_test)y_predict3=svc_reg.predict(x_test)y_predict4=tree_reg.predict(x_test)y_predict=np.array(y_predict1+y_predict2+y_predict3+y_predict4>=3,dtype="int")  #自己简单采用集成学习的方法来进行相应的预测from sklearn.metrics import accuracy_scorescore=accuracy_score(y_predict,y_test)print(score)#使用sklearn中的集成学习接口进行相应的训练和预测—hard voting是投票时少数服从多数的原则(可以先把每个算法调到最好的结果,然后再用集成学习的算法进行预测)from sklearn.ensemble import VotingClassifiervote_reg=VotingClassifier(estimators=[    ("log_cla",LogisticRegression()),    ("svm_cla",SVC()),    ("knn",KNeighborsClassifier()),    ("tree",DecisionTreeClassifier(random_state=666))],voting="hard")vote_reg.fit(x_train,y_train)print(vote_reg.score(x_test,y_test))#使用sklearn中的集成学习接口进行相应的训练和预测—soft voting是投票时不同算法不同权重的原则(可以先把每个算法调到最好的结果,然后再用集成学习的算法进行预测)from sklearn.ensemble import VotingClassifiervote_reg1=VotingClassifier(estimators=[    ("log_cla",LogisticRegression()),    ("svm_cla",SVC(probability=True)),  #SVC算法本来是计算不了概率的,但是经过一定的改进便可以计算概率,需要使得probability=true    ("knn",KNeighborsClassifier()),    ("tree",DecisionTreeClassifier(random_state=666))],voting="soft")vote_reg1.fit(x_train,y_train)print(vote_reg1.score(x_test,y_test))#采用有放回bagging和无放回pasting两种不同的方式来进行集成学习的训练(bootstrap决定有无放回,true代表有放回)import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsx,y=datasets.make_moons(n_samples=500,noise=0.3,random_state=42)  #生成数据默认为100个数据样本print(x.shape)print(y.shape)plt.figure()plt.scatter(x[y==0,0],x[y==0,1],color="r")plt.scatter(x[y==1,0],x[y==1,1],color="g")plt.show()from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(x,y,random_state=42)#使用bagging的方式进行集成学习from sklearn.tree import DecisionTreeClassifierfrom sklearn.ensemble import BaggingClassifierbag_reg=BaggingClassifier(DecisionTreeClassifier(),n_estimators=500,max_samples=100,bootstrap=True)bag_reg.fit(x_train,y_train)print(bag_reg.score(x_test,y_test))#采用oob的方式对于训练模型进行数据的测试验证oob_score=truebag_reg1=BaggingClassifier(DecisionTreeClassifier(),n_estimators=500,max_samples=100,bootstrap=True,oob_score=True,n_jobs=-1)bag_reg1.fit(x_train,y_train)print(bag_reg1.score(x_test,y_test))print(bag_reg1.oob_score_)#采用随机特征数目的方式对于训练模型进行数据的测试验证 max_features=样本随机特征数(主要用于图像识别领域数据样本特征比较多的数据集)bag_reg2=BaggingClassifier(DecisionTreeClassifier(),n_estimators=500,max_samples=100,bootstrap=True,oob_score=True,n_jobs=-1,max_features=1,bootstrap_features=True)bag_reg2.fit(x_train,y_train)print(bag_reg1.score(x_test,y_test))print(bag_reg1.oob_score_)#使用随机森林的算法进行集成学习的训练和预测import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsx,y=datasets.make_moons(n_samples=500,noise=0.3,random_state=42)  #生成数据默认为100个数据样本print(x.shape)print(y.shape)plt.figure()plt.scatter(x[y==0,0],x[y==0,1],color="r")plt.scatter(x[y==1,0],x[y==1,1],color="g")plt.show()from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(x,y,random_state=42)from sklearn.ensemble import RandomForestClassifierrf1=RandomForestClassifier(n_estimators=500,random_state=666,oob_score=True,n_jobs=-1) #利用随机森林的方法用取不到的数据进行相应的训练rf1.fit(x,y)print(rf1.oob_score_)rf1=RandomForestClassifier(n_estimators=500,random_state=666,max_leaf_nodes=16,oob_score=True,n_jobs=-1)rf1.fit(x,y)print(rf1.oob_score_)#使用极其随机森林的算法进行集成学习的训练和预测(extra tree是指特征随机,并且节点阈值也随机,使得决策树之间差异更大,增加了随机性,降低了过拟合,不过也增加了一定的偏差)from sklearn.ensemble import ExtraTreesClassifieret=ExtraTreesClassifier(n_estimators=500,n_jobs=-1,bootstrap=True,oob_score=True)et.fit(x,y)print(et.oob_score_)###利用集成学习解决回归问题from sklearn.ensemble import RandomForestRegressorfrom sklearn.ensemble import ExtraTreesRegressorfrom sklearn.ensemble import BaggingRegressor#回归问题和分类问题是一致的,超参数也是统一的,使用参照以上分类算法,只不过其输出结果是一个数值而非类别

#集成学习的第二种类:Boosting集成多个模型,模型之间是用关系的,它们均在增强整体的效果,主要有Ada Boosting 和Gradient Boosting#第一种boosting的方式Ada Boosting方式import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsx,y=datasets.make_moons(n_samples=500,noise=0.3,random_state=666)  #生成数据默认为100个数据样本print(x.shape)print(y.shape)plt.figure()plt.scatter(x[y==0,0],x[y==0,1],color="r")plt.scatter(x[y==1,0],x[y==1,1],color="g")plt.show()from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666)from sklearn.ensemble import AdaBoostClassifierfrom sklearn.tree import DecisionTreeClassifierada_boost=AdaBoostClassifier(DecisionTreeClassifier(max_depth=2,min_samples_leaf=10,max_leaf_nodes=20),n_estimators=1000,random_state=666)ada_boost.fit(x_train,y_train)print(ada_boost.score(x_test,y_test))#第二种boosting方式:Gradient Boosting,利用特定的机器学习算法对于数据进行训练和预测,然后将模型误差再进行训练,然后再对误差的误差训练,依次叠加,最终得到的训练结果就是最终的结果from sklearn.ensemble import GradientBoostingClassifiergb_boost=GradientBoostingClassifier(max_depth=5,n_estimators=3000)gb_boost.fit(x_train,y_train)print(gb_boost.score(x_test,y_test))#第三种集成学习的思路stacking集成学习的方法:多模型多层次的模型融合集成学习方法

最终的运行结果如下所示:



原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/11386320.html

时间: 2024-10-07 13:42:42

sklearn中调用集成学习算法的相关文章

集成学习算法

集成学习算法 在统计学和机器学习中,集成方法使用多种学习算法来获得比单独从任何组成学习算法获得更好的预测性能.Ensemble methods(组合方法)的效果往往是最好的,当然需要消耗的训练时间也会拉长. 所谓Ensemble methods,就是把几种机器学习的算法组合到一起,或者把一种算法的不同参数组合到一起. 一 Blending and Bagging Motivation of Aggregation Uniform Blending Linear and Any Blending

Ensemble_learning 集成学习算法 stacking 算法

原文:https://herbertmj.wikispaces.com/stacking%E7%AE%97%E6%B3%95 stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学习器的概念,但是使用的相对于bagging和boosting较少,它不像bagging和boosting,而是组合不同的模型,具体的过程如下:1.划分训练数据集为两个不相交的集合.2. 在第一个集合上训练多个学习器.3. 在第二个集合上测试这几个学习器4. 把第三步得到的预测结果作为输入,把正确的回

集成学习算法总结----Boosting和Bagging(转)

1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost.GBDT.XGBOOST.后者的代表算法主要是随机森林. 1.2 集成学习的主要思想 集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测.核心思想就是如何训练处多个弱分类器以及如何将这些

集成学习算法总结----Boosting和Bagging

1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost.GBDT.XGBOOST.后者的代表算法主要是随机森林. 1.2 集成学习的主要思想 集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测.核心思想就是如何训练处多个弱分类器以及如何将这些

scikitlearn库中调用K近邻算法的操作步骤

1.k近邻算法可以说是唯一一个没有训练过程的机器学习算法,它含有训练基础数据集,但是是一种没有模型的算法,为了将其和其他算法进行统一,我们把它的训练数据集当做它的模型本身.2.在scikitlearn中调用KNN算法的操作步骤如下(利用实际例子举例如下):#1导入相应的数据可视化模块import numpy as npimport matplotlib.pyplot as plt #2输入训练的数据集x_train.y_trainraw_data_X=[[3.393533211,2.331273

sklearn库调用k近邻算法

python实现KNN算法的全体流程代码#1-1KNN算法的原理底层代码import numpy as npimport matplotlib.pyplot as plt #导入相应的数据可视化模块raw_data_X=[[3.393533211,2.331273381], [3.110073483,1.781539638], [1.343808831,3.368360954], [3.582294042,4.679179110], [2.280362439,2.866990263], [7.4

[转]使用sklearn进行集成学习——理论

转:http://www.cnblogs.com/jasonfreak/p/5657196.html 目录 1 前言2 集成学习是什么?3 偏差和方差 3.1 模型的偏差和方差是什么? 3.2 bagging的偏差和方差 3.3 boosting的偏差和方差 3.4 模型的独立性 3.5 小结4 Gradient Boosting 4.1 拟合残差 4.2 拟合反向梯度 4.2.1 契机:引入损失函数 4.2.2 难题一:任意损失函数的最优化 4.2.3 难题二:无法对测试样本计算反向梯度 4.

机器学习算法总结(三)——集成学习(Adaboost、RandomForest)

1.集成学习概述 集成学习算法可以说是现在最火爆的机器学习算法,参加过Kaggle比赛的同学应该都领略过集成算法的强大.集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个学习器并集成到一起.集成算法可以分为同质集成和异质集成,同质集成是值集成算法中的个体学习器都是同一类型的学习器,比如都是决策树:异质集成是集成算法中的个体学习器由不同类型的学习器组成的.(目前比较流行的集成算法都是同质算法,而且基本都是基于决策树或者神经网络的) 集成算法是由多个弱学习器组成的算法,

Ensemble learning(集成学习)

定义 集成学习是一种机器学习范式,其中多个学习器被训练来解决相同的问题. 这与试图从训练数据中学习一个假设的普通机器学习方法相反,集成方法尝试构造一组假设并将它们结合使用. 一个集合包含一些通常被称为基础学习器的学习器. 一个集合的泛化能力通常比单个基础学习器的泛化能力强得多. 实际上,集成学习具有极大吸引力,因为它可以将弱于随机猜测的弱学习器提升为能够做出非常准确预测的强大学习器. 所以,"基础学习器"也被称为"弱学习器". 然而,值得注意的是,尽管大多数理论分析