整合學習是使用一系列學習器進行學習,並使用某種規則把各個學習結果進行整合從而獲得比單個學習器更好的學習效果的一種機器學習方法。一般情況下,整合學習中的多個學習器都是同質的"弱學習器"。
少數服從多數,假定有5個分類器,有3個分類為正樣本,2個分類為負樣本,按照hardvoting的思想就是投票,你的正樣本多就是你了,與之思想不太一樣的就是soft voting,也就是每個人投票的權重不一樣,在基於概率的分類模型中,如果乙個模型有90%的概率判定為正樣本,另乙個模型有40%的概率判定為正樣本,這2個模型的加權投票概率就是65%(也就是求個平均)。
1、首先,寫入資料集,然後看下資料的大致分布
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)
2、,然後,先用邏輯回歸嘗試下
from sklearn.linear_model import logisticregression
#這裡使用預設的引數
log_clf = logisticregression()
log_clf.fit(x_train,y_train)
log_clf.score(x_test,y_test)
結果:0.824
3、再用svm跑下
from sklearn.svm import svc
svm_clf = svc()
svm_clf.fit(x_train,y_train)
svm_clf.score(x_test,y_test)
結果是:0.88
4、再用決策樹跑下
from sklearn.tree import decisiontreeclassifier
dt_clf = decisiontreeclassifier()
dt_clf.fit(x_train,y_train)
dt_clf.score(x_test,y_test)
結果:0.832
5、我們把3個結果彙總起來,取2個相同的
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')
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_predict)
結果是:0.88
6、這裡的結果有一點提公升(雖然並不是很明顯)
然後我們用sklearn封裝好的模組來跑一下,這裡的voting='hard'就對應了整合的方式
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_train)
voting_clf.score(x_test,y_test)
這裡我的結果是:0.88,和自己計算的結果是一樣的,這個結果不是太好
前提:分類器都可以計算分類概率
對於svm也可以計算概率,(這點我是不太懂),具體使用是調整下面這個引數為true
probablility:boolean,optional(default=false)
下面我們使用soft voting
from sklearn.ensemble import votingclassifier
#決策樹這裡加個隨機種子是為了每次跑的結果保持一致
voting_clf2 = votingclassifier(estimators=[
('log_clf',logisticregression()),
('svm_clf',svc(probability=true)),
('dt_clf',decisiontreeclassifier(random_state=666))
],voting='soft')
voting_clf2.fit(x_train, y_train)
voting_clf2.score(x_test,y_test)
結果是:0.856
這就是voting的大致過程。
voting設計模式
voting 模式1.語境 這個設計模式是從多人投票的模型中抽象出來的,其中參與者 voter 是乙個個投票者,每個投票者都維護乙個狀態 count vote 操作可以改變 count 的狀態,counter 是計票器,每個投票者可以通過 attach 和detach 操作與counter 聯絡起來...
機器學習 整合學習
1.理解什麼是整合學習 所謂 整合 是指同時構建多個學習器,這裡的學習器主要針對弱學習器。2.弱學習器主要是指泛化能力略優於隨機猜測的學習器,弱的相結合會得到更好的泛化能力。三個臭皮匠嘛!3那麼這些弱的摻雜起來為什麼會得到好的呢?主要思想就是投票法。所以呀我們要得到好的整合效果,必須要求個體學習器要...
機器學習 整合學習
一。概括 整合學習 ensemble learning 本身不是乙個單獨的機器學習演算法,而是通過構建並結合多個機器學習器來完成學習任務。可以用於分類問題整合 回歸問題整合 特徵選取整合 異常點檢測整合等等,可以說所有的機器學習領域都可以看到整合學習的身影。整合學習思想 對於訓練集資料,通過訓練若干...