日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

使用Python從頭開(kāi)始構(gòu)建決策樹(shù)算法

來(lái)源: 責(zé)編: 時(shí)間:2023-08-14 22:01:22 446觀看
導(dǎo)讀決策樹(shù)(Decision Tree)是一種常見(jiàn)的機(jī)器學(xué)習(xí)算法,被廣泛應(yīng)用于分類和回歸任務(wù)中。并且再其之上的隨機(jī)森林和提升樹(shù)等算法一直是表格領(lǐng)域的最佳模型,所以本文將介紹理解其數(shù)學(xué)概念,并在Python中動(dòng)手實(shí)現(xiàn),這可以作為了解這

決策樹(shù)(Decision Tree)是一種常見(jiàn)的機(jī)器學(xué)習(xí)算法,被廣泛應(yīng)用于分類和回歸任務(wù)中。并且再其之上的隨機(jī)森林和提升樹(shù)等算法一直是表格領(lǐng)域的最佳模型,所以本文將介紹理解其數(shù)學(xué)概念,并在Python中動(dòng)手實(shí)現(xiàn),這可以作為了解這類算法的基礎(chǔ)知識(shí)。fV428資訊網(wǎng)——每日最新資訊28at.com

fV428資訊網(wǎng)——每日最新資訊28at.com

在深入研究代碼之前,我們先要了解支撐決策樹(shù)的數(shù)學(xué)概念:熵和信息增益fV428資訊網(wǎng)——每日最新資訊28at.com

熵:雜質(zhì)的量度

熵作為度量來(lái)量化數(shù)據(jù)集中的雜質(zhì)或無(wú)序。特別是對(duì)于決策樹(shù),熵有助于衡量與一組標(biāo)簽相關(guān)的不確定性。數(shù)學(xué)上,數(shù)據(jù)集S的熵用以下公式計(jì)算:fV428資訊網(wǎng)——每日最新資訊28at.com

Entropy(S) = -p_pos * log2(p_pos) - p_neg * log2(p_neg)

P_pos表示數(shù)據(jù)集中正標(biāo)簽的比例,P_neg表示數(shù)據(jù)集中負(fù)標(biāo)簽的比例。fV428資訊網(wǎng)——每日最新資訊28at.com

更高的熵意味著更大的不確定性或雜質(zhì),而更低的熵意味著更均勻的數(shù)據(jù)集。fV428資訊網(wǎng)——每日最新資訊28at.com

信息增益:通過(guò)拆分提升知識(shí)

信息增益是評(píng)估通過(guò)基于特定屬性劃分?jǐn)?shù)據(jù)集所獲得的熵的減少。也就是說(shuō)它衡量的是執(zhí)行分割后標(biāo)簽確定性的增加。fV428資訊網(wǎng)——每日最新資訊28at.com

數(shù)學(xué)上,對(duì)數(shù)據(jù)集S中屬性a進(jìn)行分割的信息增益計(jì)算如下:fV428資訊網(wǎng)——每日最新資訊28at.com

Information Gain(S, A) = Entropy(S) - ∑ (|S_v| / |S|) * Entropy(S_v)

S 表示原始數(shù)據(jù)集,A表示要拆分的屬性。S_v表示屬性A保存值v的S的子集。fV428資訊網(wǎng)——每日最新資訊28at.com

目標(biāo)是通過(guò)選擇使信息增益最大化的屬性,在決策樹(shù)中創(chuàng)建信息量最大的分割。fV428資訊網(wǎng)——每日最新資訊28at.com

在Python中實(shí)現(xiàn)決策樹(shù)算法

有了以上的基礎(chǔ),就可以使用Python從頭開(kāi)始編寫(xiě)Decision Tree算法。fV428資訊網(wǎng)——每日最新資訊28at.com

首先導(dǎo)入基本的numpy庫(kù),它將有助于我們的算法實(shí)現(xiàn)。fV428資訊網(wǎng)——每日最新資訊28at.com

import numpy as np

創(chuàng)建DecisionTree類fV428資訊網(wǎng)——每日最新資訊28at.com

class DecisionTree:    def __init__(self, max_depth=None):        self.max_depth = max_depth

定義了DecisionTree類來(lái)封裝決策樹(shù)。max_depth參數(shù)是樹(shù)的最大深度,以防止過(guò)擬合。fV428資訊網(wǎng)——每日最新資訊28at.com

def fit(self, X, y, depth=0):        n_samples, n_features = X.shape        unique_classes = np.unique(y)                 # Base cases        if (self.max_depth is not None and depth >= self.max_depth) or len(unique_classes) == 1:            self.label = unique_classes[np.argmax(np.bincount(y))]            return

擬合方法是決策樹(shù)算法的核心。它需要訓(xùn)練數(shù)據(jù)X和相應(yīng)的標(biāo)簽,以及一個(gè)可選的深度參數(shù)來(lái)跟蹤樹(shù)的深度。我們以最簡(jiǎn)單的方式處理樹(shù)的生長(zhǎng):達(dá)到最大深度或者遇到純類。fV428資訊網(wǎng)——每日最新資訊28at.com

確定最佳分割屬性,循環(huán)遍歷所有屬性以找到信息增益最大化的屬性。_information_gain方法(稍后解釋)幫助計(jì)算每個(gè)屬性的信息增益。fV428資訊網(wǎng)——每日最新資訊28at.com

best_attribute = None best_info_gain = -1 for feature in range(n_features):            info_gain = self._information_gain(X, y, feature)            if info_gain > best_info_gain:                best_info_gain = info_gain                best_attribute = feature

處理不分割屬性,如果沒(méi)有屬性產(chǎn)生正的信息增益,則將類標(biāo)簽分配為節(jié)點(diǎn)的標(biāo)簽。fV428資訊網(wǎng)——每日最新資訊28at.com

if best_attribute is None:            self.label = unique_classes[np.argmax(np.bincount(y))]            return

分割和遞歸調(diào)用,下面代碼確定了分割的最佳屬性,并創(chuàng)建兩個(gè)子節(jié)點(diǎn)。根據(jù)屬性的閾值將數(shù)據(jù)集劃分為左右兩個(gè)子集。fV428資訊網(wǎng)——每日最新資訊28at.com

self.attribute = best_attribute self.threshold = np.median(X[:, best_attribute])  left_indices = X[:, best_attribute] <= self.threshold    right_indices = ~left_indices     self.left = DecisionTree(max_depth=self.max_depth)    self.right = DecisionTree(max_depth=self.max_depth)     self.left.fit(X[left_indices], y[left_indices], depth + 1)    self.right.fit(X[right_indices], y[right_indices], depth + 1)

并且通過(guò)遞歸調(diào)用左子集和右子集的fit方法來(lái)構(gòu)建子樹(shù)。fV428資訊網(wǎng)——每日最新資訊28at.com

預(yù)測(cè)方法使用訓(xùn)練好的決策樹(shù)進(jìn)行預(yù)測(cè)。如果到達(dá)一個(gè)葉節(jié)點(diǎn)(帶有標(biāo)簽的節(jié)點(diǎn)),它將葉節(jié)點(diǎn)的標(biāo)簽分配給X中的所有數(shù)據(jù)點(diǎn)。fV428資訊網(wǎng)——每日最新資訊28at.com

def predict(self, X):        if hasattr(self, 'label'):            return np.array([self.label] * X.shape[0])

當(dāng)遇到非葉節(jié)點(diǎn)時(shí),predict方法根據(jù)屬性閾值遞歸遍歷樹(shù)的左子樹(shù)和右子樹(shù)。來(lái)自雙方的預(yù)測(cè)被連接起來(lái)形成最終的預(yù)測(cè)數(shù)組。fV428資訊網(wǎng)——每日最新資訊28at.com

is_left = X[:, self.attribute] <= self.threshold        left_predictions = self.left.predict(X[is_left])        right_predictions = self.right.predict(X[~is_left])                 return np.concatenate((left_predictions, right_predictions))

下面兩個(gè)方法是決策樹(shù)的核心代碼,并且可以使用不同的算法來(lái)進(jìn)行計(jì)算,比如ID3 算法使用信息增益作為特征選擇的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)度量了將某特征用于劃分?jǐn)?shù)據(jù)后,對(duì)分類結(jié)果的不確定性減少的程度。算法通過(guò)遞歸地選擇信息增益最大的特征來(lái)構(gòu)建決策樹(shù),也就是我們現(xiàn)在要演示的算法。fV428資訊網(wǎng)——每日最新資訊28at.com

_information_gain方法計(jì)算給定屬性的信息增益。它計(jì)算分裂后子熵的加權(quán)平均值,并從父熵中減去它。fV428資訊網(wǎng)——每日最新資訊28at.com

def _information_gain(self, X, y, feature):        parent_entropy = self._entropy(y)                 unique_values = np.unique(X[:, feature])        weighted_child_entropy = 0                 for value in unique_values:            is_value = X[:, feature] == value            child_entropy = self._entropy(y[is_value])            weighted_child_entropy += (np.sum(is_value) / len(y)) * child_entropy                 return parent_entropy - weighted_child_entropy

熵的計(jì)算fV428資訊網(wǎng)——每日最新資訊28at.com

def _entropy(self, y):        _, counts = np.unique(y, return_counts=True)        probabilities = counts / len(y)        return -np.sum(probabilities * np.log2(probabilities))

_entropy方法計(jì)算數(shù)據(jù)集y的熵,它計(jì)算每個(gè)類的概率,然后使用前面提到的公式計(jì)算熵。fV428資訊網(wǎng)——每日最新資訊28at.com

常見(jiàn)的算法還有:fV428資訊網(wǎng)——每日最新資訊28at.com

C4.5 是 ID3 的改進(jìn)版本,C4.5 算法在特征選擇時(shí)使用信息增益比,這是對(duì)信息增益的一種歸一化,用于解決信息增益在選擇特征時(shí)偏向于取值較多的特征的問(wèn)題。fV428資訊網(wǎng)——每日最新資訊28at.com

CART 與 ID3 和 C4.5 算法不同,CART(Classification And Regression Tree)又被稱為分類回歸樹(shù),算法采用基尼不純度(Gini impurity)來(lái)度量節(jié)點(diǎn)的不確定性,該不純度度量了從節(jié)點(diǎn)中隨機(jī)選取兩個(gè)樣本,它們屬于不同類別的概率。fV428資訊網(wǎng)——每日最新資訊28at.com

ID3、C4.5 和 CART 算法都是基于決策樹(shù)的經(jīng)典算法,像Xgboost就是使用的CART 作為基礎(chǔ)模型。fV428資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

以上就是使用Python中構(gòu)造了一個(gè)完整的決策樹(shù)算法的全部。決策樹(shù)的核心思想是根據(jù)數(shù)據(jù)的特征逐步進(jìn)行劃分,使得每個(gè)子集內(nèi)的數(shù)據(jù)盡量屬于同一類別或具有相似的數(shù)值。在構(gòu)建決策樹(shù)時(shí),通常會(huì)使用一些算法來(lái)選擇最佳的特征和分割點(diǎn),以達(dá)到更好的分類或預(yù)測(cè)效果。fV428資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-5736-0.html使用Python從頭開(kāi)始構(gòu)建決策樹(shù)算法

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 九個(gè)實(shí)用的 JavaScript 技巧

下一篇: 五個(gè) AI API 可自動(dòng)解決你的日常問(wèn)題

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
激情成人中文字幕| 欧美区在线播放| 亚洲一区二区三区乱码aⅴ| 亚洲视频一区在线观看| 性色av一区二区三区| 久久精品夜夜夜夜久久| 欧美成人性生活| 欧美午夜精品久久久久久人妖| 国产精品一级在线| 亚洲大片在线| 亚洲午夜国产成人av电影男同| 欧美一区二区在线| 欧美1区免费| 国产精品国码视频| 红桃视频欧美| 在线视频你懂得一区二区三区| 欧美一区二区三区婷婷月色 | 激情文学综合丁香| 亚洲精品日韩一| 久久超碰97人人做人人爱| 欧美成人一品| 国产日韩欧美亚洲一区| 亚洲激情电影中文字幕| 亚洲欧美日韩中文播放| 欧美va亚洲va香蕉在线| 国产精品欧美久久久久无广告| 精品88久久久久88久久久| 在线亚洲成人| 久久亚洲一区二区三区四区| 欧美视频免费看| 在线成人国产| 午夜精品久久久久久久男人的天堂| 麻豆91精品| 欧美三级精品| 亚洲国产欧美久久| 香蕉尹人综合在线观看| 欧美精品尤物在线| 影视先锋久久| 香蕉免费一区二区三区在线观看| 欧美大片网址| 狠狠色伊人亚洲综合成人| 亚洲色在线视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久久久久夜| 国产精品久久久久久亚洲调教| 亚洲国产91色在线| 久久久国产一区二区| 欧美亚日韩国产aⅴ精品中极品| 亚洲第一区在线观看| 午夜视频一区在线观看| 欧美日韩国产一区二区三区| 一区二区三区自拍| 欧美伊人久久| 国产精品亚洲综合久久| 一二三四社区欧美黄| 老司机成人网| 国内精品视频在线观看| 亚洲欧美日韩国产综合| 欧美日韩午夜视频在线观看| 亚洲国产清纯| 美女福利精品视频| 激情综合电影网| 久久精品动漫| 国产亚洲欧美一区二区三区| 亚洲欧美日韩第一区| 欧美午夜精品伦理| 9人人澡人人爽人人精品| 欧美丰满少妇xxxbbb| 在线观看视频一区二区欧美日韩 | 欧美日韩国产片| 亚洲精品一区二区三区不| 免费人成网站在线观看欧美高清| 黄色成人在线免费| 久久精品一二三区| 国产亚洲欧美日韩一区二区| 欧美亚洲色图校园春色| 国产精品亚洲欧美| 午夜精品视频| 国产区日韩欧美| 欧美尤物巨大精品爽| 国产免费成人| 欧美亚洲在线观看| 国产日韩免费| 久久精品一区二区三区中文字幕| 国产一区二区三区在线观看免费视频| 欧美一区二区在线| 国产一区二区三区黄| 久久精品系列| 一区二区视频免费完整版观看| 久久男人av资源网站| 精品96久久久久久中文字幕无| 久久久av毛片精品| 极品av少妇一区二区| 久久一区精品| 亚洲国产一区二区三区高清 | 欧美精品一区二区在线播放| 亚洲免费大片| 国产精品a级| 午夜在线电影亚洲一区| 国产一区二区三区四区| 久久综合福利| 亚洲麻豆国产自偷在线| 欧美视频一区二区三区…| 亚洲在线视频网站| 国产日韩欧美一区在线| 另类av导航| 日韩视频中午一区| 国产精品久久久久91| 欧美一区不卡| 亚洲大片精品永久免费| 欧美日韩国产丝袜另类| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲欧美高清| 国产一区久久久| 美女日韩欧美| 一区二区日韩伦理片| 国产乱码精品一区二区三区忘忧草| 久久精品国产亚洲高清剧情介绍| 韩国v欧美v日本v亚洲v | 黄色成人av在线| 欧美精品入口| 性18欧美另类| 亚洲第一网站| 国产精品高清网站| 久久久久在线观看| 国内精品美女av在线播放| 亚洲电影自拍| 欧美高清视频一区二区| 欧美中文字幕在线| 欧美国产视频在线| 国产精品福利网| 欧美日韩国产亚洲一区| 欧美另类亚洲| 欧美日韩在线直播| 国产精品a级| 国产精品毛片高清在线完整版 | 午夜精品短视频| 欧美日韩成人综合| 亚洲国产精品视频| 老司机免费视频久久| 国产三级欧美三级日产三级99| 99国产精品| 欧美日韩综合不卡| 日韩视频在线一区二区| 久久成人综合视频| 欧美激情aⅴ一区二区三区| 欧美日韩在线影院| 国产精品久久久久永久免费观看| 国产视频一区欧美| 亚洲精品四区| 鲁大师成人一区二区三区| 母乳一区在线观看| 激情小说亚洲一区| 欧美综合第一页| 国产午夜久久| 欧美大片免费观看| 亚洲精品美女久久7777777| 午夜精品一区二区三区在线播放| 久久国产精品久久久久久| 国产精品盗摄久久久| 国产欧美另类| 亚洲最快最全在线视频| 欧美另类视频在线| 亚洲国产精品悠悠久久琪琪| 欧美~级网站不卡| 亚洲激情啪啪| 欧美日韩一区在线| 一区二区毛片| 欧美国产日韩精品| 国产精品都在这里| 中文亚洲字幕| 欧美日韩色婷婷| 精品999网站| 欧美人与性动交a欧美精品| 亚洲社区在线观看| 激情综合色综合久久| 国产日韩亚洲欧美综合| 欧美日韩国产成人| 久久久之久亚州精品露出| 91久久久一线二线三线品牌| 欧美揉bbbbb揉bbbbb| 欧美精品在线播放| 久久国产精品一区二区三区| 日韩午夜av电影| 亚洲黄一区二区三区| 国产一区二区成人| 国产伦一区二区三区色一情| 欧美视频免费| 欧美日韩亚洲在线| 欧美激情综合色| 看片网站欧美日韩| 久久精品国产欧美激情| 欧美在线观看一区| 亚洲欧美日韩另类| 亚洲字幕一区二区| 亚洲一区在线播放| 亚洲午夜三级在线| 亚洲视频在线观看一区| 一区二区三区成人精品| 一区二区三区高清不卡| 一本大道久久精品懂色aⅴ| 日韩一区二区精品葵司在线| 日韩一级黄色片| 一本久久综合亚洲鲁鲁|