「作者主頁」:士別三日wyx
「作者簡介」:CSDN top100、阿里云博客專家、華為云享專家、網(wǎng)絡安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者
「推薦專欄」:小白零基礎(chǔ)《Python入門到精通》
決策樹是一種 「二叉樹形式」的預測模型,每個 「節(jié)點」對應一個 「判斷條件」, 「滿足」上一個條件才能 「進入下一個」判斷條件。
就比如找對象,第一個條件肯定是長得帥,長得帥的才考慮下一個條件;長得不帥就直接pass,不往下考慮了。
決策樹的「核心」在于:如何找到「最高效」的「決策順序」。
1、決策樹API
sklearn.tree.DecisionTreeClassifier() 是決策樹分類算法的API
參數(shù)
- criterion:(可選)衡量分裂的質(zhì)量,可選值有
gini
、entropy
、log_loss
,默認值gini
- splitter:(可選)給每個節(jié)點選擇分割的策略,可選值有
best
、random
,默認值best
- max_depth:(可選)樹的最大深度,默認值
None
- min_samples_split:(可選)分割節(jié)點所需要的的最小樣本數(shù),默認值 2
- min_samples_leaf:(可選)葉節(jié)點上所需要的的最小樣本數(shù),默認值 1
- min_weight_fraction_leaf:(可選)葉節(jié)點的權(quán)重總和的最小加權(quán)分數(shù),默認值 0.0
- max_features:(可選)尋找最佳分割時要考慮的特征數(shù)量,默認值
None
- random_state:(可選)控制分裂特征的隨機數(shù),默認值
None
- max_leaf_nodes:(可選)最大葉子節(jié)點數(shù),默認值
None
- min_impurity_decrease:(可選)如果分裂指標的減少量大于該值,就進行分裂,默認值 0.0
- class_weight:(可選)每個類的權(quán)重,默認值
None
- ccp_alpha:(可選)將選擇成本復雜度最大且小于ccp_alpha的子樹。默認情況下,不執(zhí)行修剪。
函數(shù)
- fit( x_train, y_train ):接收訓練集特征 和 訓練集目標
- predict( x_test ):接收測試集特征,返回數(shù)據(jù)的類標簽。
- score( x_test, y_test ):接收測試集特征 和 測試集目標,返回準確率。
- predict_log_proba():預測樣本的類對數(shù)概率
屬性
- classes_:類標簽
- feature_importances_:特征的重要性
- max_features_:最大特征推斷值
- n_classes_:類的數(shù)量
- n_features_in_:特征數(shù)
- feature_names_in_:特征名稱
- n_outputs_:輸出的數(shù)量
- tree_:底層的tree對象
2、決策時實際應用
2.1、獲取數(shù)據(jù)集
這里使用sklearn自帶的鳶尾花數(shù)據(jù)集進行演示。
from sklearn import datasets
# 1、獲取數(shù)據(jù)集
iris = datasets.load_iris()
2.2、劃分數(shù)據(jù)集
傳入數(shù)據(jù)集的特征值和目標值,按照默認的比例劃分數(shù)據(jù)集。
from sklearn import datasets
from sklearn import model_selection
# 1、獲取數(shù)據(jù)集
iris = datasets.load_iris()
# # 2、劃分數(shù)據(jù)集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
2.3、決策樹處理
實例化對象,傳入訓練集特征值和目標值,開始訓練。
from sklearn import datasets
from sklearn import model_selection
from sklearn import tree
# 1、獲取數(shù)據(jù)集
iris = datasets.load_iris()
# # 2、劃分數(shù)據(jù)集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
# # 3、決策樹處理
estimator = tree.DecisionTreeClassifier()
estimator.fit(x_train, y_train)
2.4、模型評估
對比測試集,驗證準確率。
from sklearn import datasets
from sklearn import model_selection
from sklearn import tree
# 1、獲取數(shù)據(jù)集
iris = datasets.load_iris()
# # 2、劃分數(shù)據(jù)集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
# # 3、決策樹處理
estimator = tree.DecisionTreeClassifier()
estimator.fit(x_train, y_train)
# # 4、模型評估
y_predict = estimator.predict(x_test)
print('對比真實值和預測值', y_test == y_predict)
score = estimator.score(x_test, y_test)
print('準確率:', score)
輸出:文章來源:http://www.zghlxwxcb.cn/news/detail-677302.html
對比真實值和預測值 [ True True True True True False True True True True True True
False True True True True True True True True True True True
True True True True True True True True True True True True
True True]
準確率: 0.9473684210526315
從結(jié)果可以看到,準確率達到了94%文章來源地址http://www.zghlxwxcb.cn/news/detail-677302.html
到了這里,關(guān)于《機器學習核心技術(shù)》分類算法 - 決策樹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!