from pandas import read_csv
from sklearn.model_selection import kfold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import baggingclassifier
from sklearn.tree import decisiontreeclassifier
from sklearn.ensemble import randomforestclassifier
from sklearn.ensemble import extratreesclassifier
from sklearn.ensemble import votingclassifier
from sklearn.ensemble import adaboostclassifier
from sklearn.ensemble import gradientboostingclassifier
from sklearn.svm import svc
from sklearn.linear_model import logisticregression
#裝袋演算法
'''先將訓練集分成多個子集,然後通過各個子集訓練多個模型,選擇精度最高的那乙個'''
filename = 'pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names = names)
array = data.values
x = array[:,0:8]
y = array[:,8]
num_folds = 10
seed = 7
kfold = kfold(n_splits=num_folds,random_state=seed)
#裝袋決策樹
'''資料方差大的時候,效果好'''
# cart = decisiontreeclassifier()
# num_tree = 100
# model = baggingclassifier(base_estimator=cart,n_estimators=num_tree,random_state=seed)
# result = cross_val_score(model,x,y,cv=kfold)
# print(result.mean())
#隨機森林
'''構建森林,森林有許多決策樹組成,訓練資料,選擇決策結果最多的那一類'''
# num_tree = 100
# max_features = 3
# model = randomforestclassifier(n_estimators=num_tree,random_state=seed,max_features=max_features)
# result = cross_val_score(model,x,y,cv=kfold)
# print(result.mean())
#極端隨機數
'''每棵決策樹使用的相同的全部訓練樣本'''
# num_tree = 100
# max_features = 7
# model = extratreesclassifier(n_estimators=num_tree,random_state=seed,max_features=max_features)
# result = cross_val_score(model,x,y,cv=kfold)
# print(result.mean())
#投票演算法
'''將多個機器學習的演算法整合的演算法。通過建立兩個或多個演算法模型,
利用投票演算法將這些演算法包裝起來,計算各個子模型的平均**情況,
可以對子模型的演算法進行加權'''
# cart = decisiontreeclassifier()
# models =
# model_log = logisticregression()
# model_cart = decisiontreeclassifier()
# model_svc = svc()
# ensemble_model = votingclassifier(estimators=models)
# result = cross_val_score(ensemble_model,x,y,cv=kfold)
# print(result.mean())
#提公升演算法
'''訓練多個模型並組成乙個序列,序列中的每乙個模型都會修正前乙個模型的錯誤'''
#adaboost
'''通過改變資料分布實現,可以排除一些不必要的訓練資料特徵'''
# num_tree = 30
# model = adaboostclassifier(n_estimators=num_tree,random_state=seed)
# result = cross_val_score(model,x,y,cv=kfold)
# print(result.mean())
#隨機梯度演算法
# num_tree = 100
# model = gradientboostingclassifier(n_estimators=num_tree,random_state=seed)
# result =cross_val_score(model,x,y,cv=kfold)
# print(result.mean())
機器學習 整合演算法
整合演算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體 整合演算法的主要難點在於究竟整合哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的演算法,同時也非常流行。是構建多個學習器,然後通過一定策略結合把它們來完成學習任務的,常常可以獲得比單一學習...
機器學習之整合演算法
目的 讓機器學習效果更好,單個機器學習演算法不行,就用多個機器演算法整合。bagging模型 訓練多個分類器取結果的平均 boosting模型 從弱學習器開始加強,通過加權來進行訓練 加入一棵樹,要比原來強 stacking模型 聚合多個分類或回歸模型 可以分階段來做 全稱 bootstrap ag...
機器學習 整合演算法 GBDT
gbdt gradient boosting decison tree 梯度提公升決策樹 gbdt 的弱學習器通常使用 cart 回歸樹 gbdt 的核心在於,每棵樹學的是之前所有樹的結論和的殘差,比如 a 的年齡 18 歲,第一棵樹依據特徵值 12 歲,差 6 歲,即殘差為 6 歲,那麼第二棵樹把...