国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

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

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

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

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

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

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

熵:雜質(zhì)的量度

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

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

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

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

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

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

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

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

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

import numpy as np

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

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

定義了DecisionTree類(lèi)來(lái)封裝決策樹(shù)。max_depth參數(shù)是樹(shù)的最大深度,以防止過(guò)擬合。M2S28資訊網(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á)到最大深度或者遇到純類(lèi)。M2S28資訊網(wǎng)——每日最新資訊28at.com

確定最佳分割屬性,循環(huán)遍歷所有屬性以找到信息增益最大化的屬性。_information_gain方法(稍后解釋)幫助計(jì)算每個(gè)屬性的信息增益。M2S28資訊網(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)生正的信息增益,則將類(lèi)標(biāo)簽分配為節(jié)點(diǎn)的標(biāo)簽。M2S28資訊網(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è)子集。M2S28資訊網(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ù)。M2S28資訊網(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)。M2S28資訊網(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ù)組。M2S28資訊網(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ì)分類(lèi)結(jié)果的不確定性減少的程度。算法通過(guò)遞歸地選擇信息增益最大的特征來(lái)構(gòu)建決策樹(shù),也就是我們現(xiàn)在要演示的算法。M2S28資訊網(wǎng)——每日最新資訊28at.com

_information_gain方法計(jì)算給定屬性的信息增益。它計(jì)算分裂后子熵的加權(quán)平均值,并從父熵中減去它。M2S28資訊網(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ì)算M2S28資訊網(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è)類(lèi)的概率,然后使用前面提到的公式計(jì)算熵。M2S28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

總結(jié)

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

本文鏈接:http://m.rrqrq.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)簽:
  • 熱門(mén)焦點(diǎn)
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
亚洲成精国产精品女| 日韩影视精彩在线| 日韩精品中午字幕| 欧美高清一级片在线| 日本道精品一区二区三区| 色88888久久久久久影院野外| 美女日韩在线中文字幕| 99精品热视频| 亚洲人精品一区| 一本大道av伊人久久综合| 国产麻豆欧美日韩一区| 国产色91在线| 免费在线播放第一区高清av| 激情另类小说区图片区视频区| 精品精品欲导航| 最新亚洲视频| 九九九久久久精品| 久久久久国色av免费看影院| 一本色道久久综合| 国产尤物一区二区| 中文字幕国产精品一区二区| 免费亚洲视频| 一区二区三区成人精品| 欧美理论在线| 久久久综合香蕉尹人综合网| 欧美久久久影院| 国产精品久久久久三级| 亚洲综合丝袜美腿| 国产资源精品在线观看| 色综合天天视频在线观看| 亚洲久色影视| 欧美日韩成人在线| 久色成人在线| 欧美日韩视频一区二区三区| 免费观看在线色综合| 欧美精彩视频一区二区三区| 91久久精品午夜一区二区| 欧美人与禽猛交乱配| 免费三级欧美电影| 中文字幕一区三区| 91精品麻豆日日躁夜夜躁| 亚洲巨乳在线| av亚洲精华国产精华精华 | 日韩三区在线观看| 香蕉成人久久| 欧美+日本+国产+在线a∨观看| 奇米色一区二区| 国产精品高潮呻吟| 欧美一级黄色录像| 色噜噜狠狠成人网p站| 91影院在线免费观看| 日韩在线一二三区| 国产精品久久777777| 51久久夜色精品国产麻豆| 在线一区欧美| 91视频xxxx| 国产麻豆午夜三级精品| 亚洲一区二区视频在线观看| 精品第一国产综合精品aⅴ| 在线中文字幕一区| 999在线观看精品免费不卡网站| 国产精品一区一区三区| 午夜久久久久久久久久一区二区| 亚洲国产精品99久久久久久久久| 欧美日韩不卡视频| 狂野欧美一区| 成人免费视频国产在线观看| 国产精品久久久久久久免费软件| 精品福利在线导航| 国产一区二区中文字幕| 久久激情婷婷| 亚洲精品国产品国语在线app| 不卡的av电影| 91精品国产欧美一区二区18| 亚洲第一精品在线| 日韩午夜高潮| 亚洲欧美影音先锋| 久久久久久一二三区| 久久久久国产一区二区| 国产精品久久国产三级国电话系列| 成人中文字幕电影| 国产精品性做久久久久久| 欧美a一区二区| 午夜精品久久久久久久| 亚洲一区二区四区蜜桃| 亚洲日本免费电影| 国产精品美女一区二区三区 | 久久精品久久久精品美女| av一本久道久久综合久久鬼色| 欧美精品在线观看一区二区| 日韩电影在线一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲天堂精品在线观看| 国产一区美女| 中文字幕一区av| 韩日精品在线| 一区精品在线播放| 在线观看日韩av电影| 中文字幕一区二区在线播放| 国产精品久久7| 亚洲欧美一区二区三区国产精品| 国自产拍偷拍福利精品免费一 | 在线视频你懂得一区| 免费成人在线播放| 欧美午夜不卡视频| 国产传媒久久文化传媒| 日韩三级av在线播放| jlzzjlzz国产精品久久| 久久综合狠狠综合久久综合88| 99久久精品一区二区| 欧美极品xxx| 一区二区三区国产盗摄| 亚洲电影一级黄| 91久久精品一区二区二区| 麻豆精品一区二区三区| 欧美一区日本一区韩国一区| 成人aa视频在线观看| 国产日产欧美一区| 一本久久综合| 美女在线视频一区| 欧美一区二区高清| 欧美大片专区| 一个色综合网站| 欧美蜜桃一区二区三区| aaa国产一区| 亚洲视频一区二区在线观看| 久久久久久9| 国产成人在线色| 国产精品久久久久久亚洲毛片 | 欧美日韩精选| 亚洲成av人片一区二区梦乃| 欧美日韩一卡二卡| 午夜国产精品视频| 视频一区二区国产| 精品三级av在线| 一区二区黄色| 国产成人啪免费观看软件| 国产色91在线| 在线免费观看日韩欧美| av亚洲精华国产精华精华| 伊人一区二区三区| 91精品国产欧美日韩| 亚洲欧洲日本mm| 国产麻豆精品在线观看| 亚洲欧美日韩人成在线播放| 欧美三日本三级三级在线播放| 91影视在线播放| 免费在线成人网| 国产精品久久久久影院亚瑟| 欧美色中文字幕| 亚洲欧洲精品一区| 成人免费视频视频在线观看免费 | 国内精品久久久久影院薰衣草| 国产精品国产三级国产普通话99| 欧美少妇一区二区| 在线日韩电影| 成人av电影免费观看| 奇米一区二区三区av| 中文字幕在线不卡一区| 日韩一级大片在线观看| 亚洲一区二区在| 欧美日韩国产色综合一二三四| 激情六月婷婷久久| 亚洲五码中文字幕| 中文字幕乱码一区二区免费| 欧美高清dvd| 久久精品国产清高在天天线| 91亚洲国产成人精品一区二区三| 免费观看日韩电影| 亚洲综合成人在线| 亚洲免费高清| 日韩亚洲欧美在线| 午夜影视日本亚洲欧洲精品| 国产日韩亚洲| 欧美日本在线视频| 亚洲欧美日韩中文字幕一区二区三区 | 国产亚洲综合在线| 六月婷婷色综合| 18成人免费观看视频| 亚洲色欲色欲www在线观看| 欧美日韩视频第一区| 亚洲神马久久| 亚洲国产第一| 亚洲欧美日韩成人高清在线一区| 午夜成人免费视频| 国产精品hd| 欧美成人官网二区| 久久超级碰视频| 男人的天堂亚洲| 夜色激情一区二区| 中文字幕成人av| 欧美经典一区二区| 国产偷国产偷亚洲高清人白洁 | 香蕉加勒比综合久久| 国产精品免费区二区三区观看| 国产精品s色| 99久久综合色| 成人av网站在线观看免费| 国产成人在线看| 国产成人激情av|