成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析 原創(chuàng)

發(fā)布于 2024-9-11 08:24
瀏覽
0收藏

本文將給出有關(guān)機(jī)器學(xué)習(xí)重要基礎(chǔ)工具——決策樹(shù)分類器的深度解析,并提供一個(gè)生成一棵簡(jiǎn)化型決策樹(shù)的完整案例。

簡(jiǎn)介

決策樹(shù)在機(jī)器學(xué)習(xí)中無(wú)處不在,因其直觀的輸出而備受喜愛(ài)。誰(shuí)不喜歡簡(jiǎn)單的“if-then”流程圖?盡管它們很受歡迎,但令人驚訝的是,要找到一個(gè)清晰、循序漸進(jìn)的解釋來(lái)分析決策樹(shù)是如何工作的,還是一項(xiàng)具有相當(dāng)挑戰(zhàn)性的任務(wù)。(實(shí)際上,我也很尷尬,我也不知道花了多長(zhǎng)時(shí)間才真正理解決策樹(shù)算法的工作原理。)

所以,在本文中,我將重點(diǎn)介紹決策樹(shù)構(gòu)建的要點(diǎn)。我們將按照從根到最后一個(gè)葉子節(jié)點(diǎn)(當(dāng)然還有可視化效果)的順序來(lái)準(zhǔn)確解析每個(gè)節(jié)點(diǎn)中發(fā)生的事情及其原因。

【注意】本文中所有圖片均由作者本人使用Canva Pro創(chuàng)建。

決策樹(shù)分類器定義

決策樹(shù)分類器通過(guò)創(chuàng)建一棵倒置的樹(shù)來(lái)進(jìn)行預(yù)測(cè)。具體地講,這種算法從樹(shù)的頂部開(kāi)始,提出一個(gè)關(guān)于數(shù)據(jù)中重要特征的問(wèn)題,然后根據(jù)答案進(jìn)行分支生成。當(dāng)你沿著這些分支往下走時(shí),每一個(gè)節(jié)點(diǎn)都會(huì)提出另一個(gè)問(wèn)題,從而縮小可能性。這個(gè)問(wèn)答游戲一直持續(xù)到你到達(dá)樹(shù)的底部——一個(gè)葉子節(jié)點(diǎn)——在那里你將得到最終的預(yù)測(cè)或分類結(jié)果。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

決策樹(shù)是最重要的機(jī)器學(xué)習(xí)算法之一——它反映了一系列是或否的問(wèn)題

示例數(shù)據(jù)集

在本文中,我們將使用人工高爾夫數(shù)據(jù)集(受【參考文獻(xiàn)1】啟發(fā))作為示例數(shù)據(jù)集。該數(shù)據(jù)集能夠根據(jù)天氣狀況預(yù)測(cè)一個(gè)人是否會(huì)去打高爾夫。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

上圖表格中,主要的數(shù)據(jù)列含義分別是:

  • “Outlook(天氣狀況)”:編碼為“晴天(sunny)”、“陰天(overcast)”或者“雨天(rainy)”
  • “Temperature(溫度)”:對(duì)應(yīng)華氏溫度
  • “Humidity(濕度)”:用百分?jǐn)?shù)%表示
  • “Wind(風(fēng))”:是/否有風(fēng)
  • “Play(是否去打高爾夫)”:目標(biāo)特征

#導(dǎo)入庫(kù)
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
import numpy as np

#加載數(shù)據(jù)
dataset_dict = {
    'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 'sunny', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'rainy', 'sunny', 'overcast', 'rainy', 'sunny', 'sunny', 'rainy', 'overcast', 'rainy', 'sunny', 'overcast', 'sunny', 'overcast', 'rainy', 'overcast'],
    'Temperature': [85.0, 80.0, 83.0, 70.0, 68.0, 65.0, 64.0, 72.0, 69.0, 75.0, 75.0, 72.0, 81.0, 71.0, 81.0, 74.0, 76.0, 78.0, 82.0, 67.0, 85.0, 73.0, 88.0, 77.0, 79.0, 80.0, 66.0, 84.0],
    'Humidity': [85.0, 90.0, 78.0, 96.0, 80.0, 70.0, 65.0, 95.0, 70.0, 80.0, 70.0, 90.0, 75.0, 80.0, 88.0, 92.0, 85.0, 75.0, 92.0, 90.0, 85.0, 88.0, 65.0, 70.0, 60.0, 95.0, 70.0, 78.0],
    'Wind': [False, True, False, False, False, True, True, False, False, False, True, True, False, True, True, False, False, True, False, True, True, False, True, False, False, True, False, False],
    'Play': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes']
}
df = pd.DataFrame(dataset_dict)

#預(yù)處理數(shù)據(jù)集
df = pd.get_dummies(df, columns=['Outlook'],  prefix='', prefix_sep='', dtype=int)
df['Wind'] = df['Wind'].astype(int)
df['Play'] = (df['Play'] == 'Yes').astype(int)

#重新排列各數(shù)據(jù)列
df = df[['sunny', 'overcast', 'rainy', 'Temperature', 'Humidity', 'Wind', 'Play']]

# 是否出玩和目標(biāo)確定
X, y = df.drop(columns='Play'), df['Play']

# 分割數(shù)據(jù)
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.5, shuffle=False)

# 顯示結(jié)果
print(pd.concat([X_train, y_train], axis=1), '\n')
print(pd.concat([X_test, y_test], axis=1))

主要原理

決策樹(shù)分類器基于信息量最大的特征遞歸分割數(shù)據(jù)來(lái)進(jìn)行操作。其工作原理如下:

  • 從根節(jié)點(diǎn)處的整個(gè)數(shù)據(jù)集開(kāi)始。
  • 選擇最佳特征來(lái)分割數(shù)據(jù)(基于基尼不純度(Gini impurity)等指標(biāo))。
  • 為選定特征的每個(gè)可能值創(chuàng)建子節(jié)點(diǎn)。
  • 對(duì)每個(gè)子節(jié)點(diǎn)重復(fù)步驟2-3,直到滿足停止條件(例如,達(dá)到最大深度、每個(gè)葉子的最小樣本或純?nèi)~子節(jié)點(diǎn))。
  • 將主要的類型結(jié)果值分配給每個(gè)葉子節(jié)點(diǎn)。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

訓(xùn)練步驟

在scikit-learn開(kāi)源庫(kù)中,決策樹(shù)算法被稱為CART(分類和回歸樹(shù))。它可以用于構(gòu)建一棵二叉樹(shù),通常遵循以下步驟:

1. 從根節(jié)點(diǎn)中的所有訓(xùn)練樣本開(kāi)始。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

從包含所有14個(gè)訓(xùn)練樣本的根節(jié)點(diǎn)開(kāi)始,我們將找出最佳方式特征和分割數(shù)據(jù)的最佳點(diǎn),以開(kāi)始構(gòu)建樹(shù)

2.對(duì)于每個(gè)特征,執(zhí)行如下操作:

a.對(duì)特征值進(jìn)行排序。

b.將相鄰值之間的所有可能閾值視為潛在的分割點(diǎn)。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

在這個(gè)根節(jié)點(diǎn)中,有23個(gè)分割點(diǎn)需要檢查。其中,二進(jìn)制列只有一個(gè)分割點(diǎn)。

def potential_split_points(attr_name, attr_values):
    sorted_attr = np.sort(attr_values)
    unique_values = np.unique(sorted_attr)
    split_points = [(unique_values[i] + unique_values[i+1]) / 2 for i in range(len(unique_values) - 1)]
    return {attr_name: split_points}

# Calculate and display potential split points for all columns
for column in X_train.columns:
    splits = potential_split_points(column, X_train[column])
    for attr, points in splits.items():
        print(f"{attr:11}: {points}")

3.對(duì)于每個(gè)潛在的分割點(diǎn),執(zhí)行如下操作:

a.計(jì)算當(dāng)前節(jié)點(diǎn)的基尼不純度。

b.計(jì)算不純度的加權(quán)平均值。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

例如,對(duì)于分割點(diǎn)為0.5的特征“sunny(晴天)”,計(jì)算數(shù)據(jù)集兩部分的不純度(也就是基尼不純度)

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

另一個(gè)例子是,同樣的過(guò)程也可以對(duì)“Temperature(溫度)”等連續(xù)特征進(jìn)行處理。

def gini_impurity(y):
    p = np.bincount(y) / len(y)
    return 1 - np.sum(p**2)

def weighted_average_impurity(y, split_index):
    n = len(y)
    left_impurity = gini_impurity(y[:split_index])
    right_impurity = gini_impurity(y[split_index:])
    return (split_index * left_impurity + (n - split_index) * right_impurity) / n

# 排序“sunny”特征和相應(yīng)的標(biāo)簽
sunny = X_train['sunny']
sorted_indices = np.argsort(sunny)
sorted_sunny = sunny.iloc[sorted_indices]
sorted_labels = y_train.iloc[sorted_indices]

#查找0.5的分割索引
split_index = np.searchsorted(sorted_sunny, 0.5, side='right')

#計(jì)算不純度
impurity = weighted_average_impurity(sorted_labels, split_index)

print(f"Weighted average impurity for 'sunny' at split point 0.5: {impurity:.3f}")

4.計(jì)算完所有特征和分割點(diǎn)的所有不純度后,選擇最低的那一個(gè)。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

分割點(diǎn)為0.5的“overcast(陰天)”特征給出了最低的不純度。這意味著,該分割將是所有其他分割點(diǎn)中最純粹的一個(gè)!

def calculate_split_impurities(X, y):
    split_data = []

    for feature in X.columns:
        sorted_indices = np.argsort(X[feature])
        sorted_feature = X[feature].iloc[sorted_indices]
        sorted_y = y.iloc[sorted_indices]

        unique_values = sorted_feature.unique()
        split_points = (unique_values[1:] + unique_values[:-1]) / 2

        for split in split_points:
            split_index = np.searchsorted(sorted_feature, split, side='right')
            impurity = weighted_average_impurity(sorted_y, split_index)
            split_data.append({
                'feature': feature,
                'split_point': split,
                'weighted_avg_impurity': impurity
            })

    return pd.DataFrame(split_data)

# 計(jì)算所有特征的分割不純度
calculate_split_impurities(X_train, y_train).round(3)

5.根據(jù)所選特征和分割點(diǎn)創(chuàng)建兩個(gè)子節(jié)點(diǎn):

  • 左子對(duì)象:特征值<=分割點(diǎn)的樣本
  • 右側(cè)子對(duì)象:具有特征值>分割點(diǎn)的樣本

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

選定的分割點(diǎn)將數(shù)據(jù)分割成兩部分。由于一部分已經(jīng)是純的(右側(cè)!這就是為什么它的不純度很低!),我們只需要在左側(cè)節(jié)點(diǎn)上繼續(xù)迭代樹(shù)。

6.對(duì)每個(gè)子節(jié)點(diǎn)遞歸重復(fù)上述步驟2-5。您還可以停止,直到滿足停止條件(例如,達(dá)到最大深度、每個(gè)葉節(jié)點(diǎn)的最小樣本數(shù)或最小不純度減少)。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)


#計(jì)算選定指標(biāo)中的分割不純度
selected_index = [4,8,3,13,7,9,10] # 根據(jù)您要檢查的索引來(lái)更改它
calculate_split_impurities(X_train.iloc[selected_index], y_train.iloc[selected_index]).round(3)

from sklearn.tree import DecisionTreeClassifier

#上面的整個(gè)訓(xùn)練階段都是像這樣在sklearn中完成的
dt_clf = DecisionTreeClassifier()
dt_clf.fit(X_train, y_train)

算法結(jié)束時(shí)的輸出樹(shù)形式

葉子節(jié)點(diǎn)的類型標(biāo)簽對(duì)應(yīng)于到達(dá)該節(jié)點(diǎn)的訓(xùn)練樣本的多數(shù)類型。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

上圖中右側(cè)的樹(shù)表示用于分類的最后那棵樹(shù)。此時(shí),我們不再需要訓(xùn)練樣本了。

import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
#打印決策樹(shù)
plt.figure(figsize=(20, 10))
plot_tree(dt_clf, filled=True, feature_names=X.columns, class_names=['Not Play', 'Play'])
plt.show()

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

在這個(gè)scikit-learn輸出中,還存儲(chǔ)了非葉子節(jié)點(diǎn)的信息,如樣本數(shù)量和節(jié)點(diǎn)中每個(gè)類型的數(shù)量(值)

分類步驟

接下來(lái),我們來(lái)了解訓(xùn)練決策樹(shù)生成后,預(yù)測(cè)過(guò)程的工作原理,共分4步:

  • 從訓(xùn)練好的決策樹(shù)的根節(jié)點(diǎn)開(kāi)始。
  • 評(píng)估當(dāng)前節(jié)點(diǎn)的特征和分割條件。
  • 在每個(gè)后續(xù)節(jié)點(diǎn)上重復(fù)步驟2,直到到達(dá)葉子節(jié)點(diǎn)。
  • 葉子節(jié)點(diǎn)的類型標(biāo)簽成為新實(shí)例的預(yù)測(cè)結(jié)果。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

算法中,我們只需要樹(shù)運(yùn)算中所使用的列指標(biāo)。除了“overcast(陰天)”和“Temperature(溫度)”這兩個(gè)之外,其他值在預(yù)測(cè)中并不重要

# 開(kāi)始預(yù)測(cè)
y_pred = dt_clf.predict(X_test)
print(y_pred)

評(píng)估步驟

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

決策樹(shù)描述了足夠的準(zhǔn)確性信息。由于我們的樹(shù)只檢查兩個(gè)特征,因此這棵樹(shù)可能無(wú)法很好地捕獲測(cè)試集特征。

# 評(píng)估分類器
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")

關(guān)鍵參數(shù)分析

上面決策樹(shù)算法中,使用了好幾個(gè)控制其增長(zhǎng)和復(fù)雜性的重要參數(shù):

  • 最大深度(Max Depth):這個(gè)參數(shù)用于設(shè)置樹(shù)的最大深度,這個(gè)參數(shù)可以成為防止訓(xùn)練過(guò)擬合的一個(gè)很有價(jià)值的工具。

友好提示:讀者不妨考慮從一棵淺樹(shù)(可能3-5層深)開(kāi)始,然后逐漸增加深度。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

從一棵淺樹(shù)開(kāi)始(例如,深度為3-5),逐漸增加,直到找到模型復(fù)雜性和驗(yàn)證數(shù)據(jù)性能之間的最佳平衡。

  • 最小樣本分割(Min Samples Split):此參數(shù)確定分割內(nèi)部節(jié)點(diǎn)所需的最小樣本數(shù)。

友好提示:讀者不妨將其設(shè)置為更高一些的值(約占訓(xùn)練數(shù)據(jù)的5-10%),這可以幫助防止樹(shù)創(chuàng)建太多小而特定的分割,從而可能導(dǎo)致無(wú)法很好地推廣到新數(shù)據(jù)。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

  • 最小樣本葉節(jié)點(diǎn)(Min Samples Leaf):這個(gè)參數(shù)指定葉子節(jié)點(diǎn)所需的最小樣本數(shù)。

友好提示:選擇一個(gè)值,確保每個(gè)葉子代表數(shù)據(jù)的一個(gè)有意義的子集(大約占訓(xùn)練數(shù)據(jù)的1-5%)。這種方法有助于避免過(guò)于具體的預(yù)測(cè)。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

  • 標(biāo)準(zhǔn)(Criterion):這是一個(gè)函數(shù)參數(shù)指標(biāo),用于衡量一次分割的質(zhì)量(通常為代表基尼不純度的“gini(基尼)”或信息增益的“entropy(熵)”)。

友好提示:雖然基尼不純度的計(jì)算通常更簡(jiǎn)單、更快,但熵在多類型算法問(wèn)題方面往往表現(xiàn)得更好。也就是說(shuō),這兩種技術(shù)經(jīng)常給出類似的運(yùn)算結(jié)果。

機(jī)器學(xué)習(xí)利器——決策樹(shù)分類器深度解析-AI.x社區(qū)

分割點(diǎn)為0.5的“sunny(晴天)”的熵計(jì)算示例

算法優(yōu)、缺點(diǎn)分析

與機(jī)器學(xué)習(xí)中的任何算法一樣,決策樹(shù)也有其優(yōu)勢(shì)和局限性。

優(yōu)點(diǎn):

  • 可解釋性:易于理解,決策過(guò)程能夠可視化。
  • 無(wú)特征縮放:可以在不進(jìn)行規(guī)范化的情況下處理數(shù)值和分類數(shù)據(jù)。
  • 處理非線性關(guān)系:可以捕獲數(shù)據(jù)中的復(fù)雜模式。
  • 特征重要性:能夠明確指出哪些特征對(duì)預(yù)測(cè)最重要。

缺點(diǎn):

  • 過(guò)擬合:容易創(chuàng)建過(guò)于復(fù)雜的樹(shù),這些樹(shù)往往不能很好地泛化,尤其是在小數(shù)據(jù)集的情況下。
  • 不穩(wěn)定性:數(shù)據(jù)中的微小變化可能會(huì)導(dǎo)致生成完全不同的樹(shù)。
  • 帶有不平衡數(shù)據(jù)集的偏見(jiàn):可能偏向于主導(dǎo)類型。
  • 無(wú)法推斷:無(wú)法在訓(xùn)練數(shù)據(jù)范圍之外進(jìn)行預(yù)測(cè)。

在我們本文提供的高爾夫示例中,決策樹(shù)可能會(huì)根據(jù)天氣條件創(chuàng)建非常準(zhǔn)確和可解釋的規(guī)則,以決定是否打高爾夫。然而,如果沒(méi)有正確修剪或數(shù)據(jù)集很小的話,它可能會(huì)過(guò)度擬合特定的條件組合。

結(jié)論

無(wú)論如何,決策樹(shù)分類器還是解決機(jī)器學(xué)習(xí)中許多類型問(wèn)題的好工具。它們易于理解,可以處理復(fù)雜的數(shù)據(jù),并向我們展示它們是如何做出決策的。這使得它們廣泛應(yīng)用于從商業(yè)到醫(yī)學(xué)的許多領(lǐng)域。雖然決策樹(shù)功能強(qiáng)大且可解釋,但它們通常被用作更高級(jí)集成方法的構(gòu)建塊,如隨機(jī)森林或梯度增強(qiáng)機(jī)等算法中。

簡(jiǎn)化型決策樹(shù)分類器算法

下面給出本文示例工程對(duì)應(yīng)的一棵簡(jiǎn)化型決策樹(shù)的分類器算法的完整代碼。

#導(dǎo)入庫(kù)
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.tree import plot_tree, DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加載數(shù)據(jù)
dataset_dict = {
    'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 'sunny', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'rainy', 'sunny', 'overcast', 'rainy', 'sunny', 'sunny', 'rainy', 'overcast', 'rainy', 'sunny', 'overcast', 'sunny', 'overcast', 'rainy', 'overcast'],
    'Temperature': [85.0, 80.0, 83.0, 70.0, 68.0, 65.0, 64.0, 72.0, 69.0, 75.0, 75.0, 72.0, 81.0, 71.0, 81.0, 74.0, 76.0, 78.0, 82.0, 67.0, 85.0, 73.0, 88.0, 77.0, 79.0, 80.0, 66.0, 84.0],
    'Humidity': [85.0, 90.0, 78.0, 96.0, 80.0, 70.0, 65.0, 95.0, 70.0, 80.0, 70.0, 90.0, 75.0, 80.0, 88.0, 92.0, 85.0, 75.0, 92.0, 90.0, 85.0, 88.0, 65.0, 70.0, 60.0, 95.0, 70.0, 78.0],
    'Wind': [False, True, False, False, False, True, True, False, False, False, True, True, False, True, True, False, False, True, False, True, True, False, True, False, False, True, False, False],
    'Play': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes']
}
df = pd.DataFrame(dataset_dict)

#準(zhǔn)備數(shù)據(jù)
df = pd.get_dummies(df, columns=['Outlook'],  prefix='', prefix_sep='', dtype=int)
df['Wind'] = df['Wind'].astype(int)
df['Play'] = (df['Play'] == 'Yes').astype(int)

# 分割數(shù)據(jù)
X, y = df.drop(columns='Play'), df['Play']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.5, shuffle=False)

# 訓(xùn)練模型
dt_clf = DecisionTreeClassifier(
    max_depth=None,           # 樹(shù)的最大深度
    min_samples_split=2,      # 分割內(nèi)部節(jié)點(diǎn)所需的最小樣本數(shù)
    min_samples_leaf=1,       # 在一個(gè)葉節(jié)點(diǎn)上所需的最小樣本數(shù)
    criterion='gini'          # 測(cè)試分割質(zhì)量的函數(shù)
)
dt_clf.fit(X_train, y_train)

# 開(kāi)始預(yù)測(cè)
y_pred = dt_clf.predict(X_test)

#評(píng)估模型
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")

#繪制樹(shù)
plt.figure(figsize=(20, 10))
plot_tree(dt_clf, filled=True, feature_names=X.columns,
          class_names=['Not Play', 'Play'], impurity=False)
plt.show()

相關(guān)閱讀

有關(guān)決策樹(shù)分類器及其在scikit-learn中的實(shí)現(xiàn)的詳細(xì)說(shuō)明,讀者可以參考官方文檔(參考2),其中提供了有關(guān)其使用和參數(shù)的更為全面的信息。

技術(shù)環(huán)境

本文示例項(xiàng)目使用了Python 3.7和scikit-learn 1.5開(kāi)源庫(kù)。雖然所討論的概念普遍適用,但具體的代碼實(shí)現(xiàn)可能因版本不同而略有不同。

關(guān)于插圖

除非另有說(shuō)明;否則,文中所有圖片均由作者創(chuàng)建,并包含經(jīng)Canva Pro許可的設(shè)計(jì)元素。

參考資料

  1. T. M. Mitchell,Machine Learning(機(jī)器學(xué)習(xí)) (1997),McGraw-Hill Science/Engineering/Math,第59頁(yè)。
  2. F. Pedregosa等人,《Scikit-learn: Machine Learning in Python》,Journal of Machine Learning Research(機(jī)器學(xué)習(xí)研究雜志) 2011年,第12卷,第2825-2830頁(yè)。在線可訪問(wèn)地址:??https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html。??

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:??Decision Tree Classifier, Explained: A Visual Guide with Code Examples for Beginners??,作者:Samy Baladram

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
已于2024-9-11 08:28:20修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 国产毛片毛片 | 夜夜爽夜夜操 | av一级久久 | 亚洲精品麻豆 | 国产在线一区二区三区 | 97天天干 | 久久精品久久精品 | 二区三区视频 | 国产三级| 久久se精品一区精品二区 | 国产精品成人免费 | 欧美精品1区2区3区 免费黄篇 | 五月激情婷婷网 | 免费国产一区二区 | 激情毛片 | 日韩在线观看中文字幕 | 乳色吐息在线观看 | 日韩一区二区三区在线视频 | 久久国内 | 日韩视频精品 | 欧美精品一二三 | 天天视频成人 | 国产一区视频在线 | 孕妇一级毛片 | 国产精品99久久久久久动医院 | 中国免费黄色片 | 伊人伊成久久人综合网站 | 亚洲精品日韩视频 | 中文在线观看视频 | 日韩精品成人网 | 一级欧美日韩 | 国产免费av在线 | 亚洲欧洲日韩精品 中文字幕 | 黄 色 毛片免费 | 欧美三级在线 | 自拍偷拍中文字幕 | 亚洲狠狠 | 亚洲va国产日韩欧美精品色婷婷 | 久久久精品一区 | 国产亚洲一区二区精品 | 久久久一区二区三区 |