日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

【scikit-learn基础】--『监督学习』之 决策树回归

發(fā)布時(shí)間:2024/1/2 windows 31 coder
生活随笔 收集整理的這篇文章主要介紹了 【scikit-learn基础】--『监督学习』之 决策树回归 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

決策樹算法是一種既可以用于分類,也可以用于回歸的算法。

決策樹回歸是通過(guò)對(duì)輸入特征的不斷劃分來(lái)建立一棵決策樹,每一步劃分都基于當(dāng)前數(shù)據(jù)集的最優(yōu)劃分特征。
它的目標(biāo)是最小化總體誤差或最大化預(yù)測(cè)精度,其構(gòu)建通常采用自上而下的貪心搜索方式,通過(guò)比較不同劃分標(biāo)準(zhǔn)來(lái)選擇最優(yōu)劃分。

決策樹回歸廣泛應(yīng)用于各種回歸問(wèn)題,如預(yù)測(cè)房?jī)r(jià)、股票價(jià)格、客戶流失等。

1. 算法概述

決策樹相關(guān)的諸多算法之中,有一種CART算法,全稱是 classification and regression tree(分類與回歸樹)。
顧名思義,這個(gè)算法既可以用來(lái)分類,也可以用來(lái)回歸,本篇主要介紹其在回歸問(wèn)題上的應(yīng)用。

決策樹算法的核心在于生成一棵決策樹過(guò)程中,如何劃分各個(gè)特征到樹的不同分支上去。
CART算法是根據(jù)基尼系數(shù)(Gini)來(lái)劃分特征的,每次選擇基尼系數(shù)最小的特征作為最優(yōu)切分點(diǎn)。

其中基尼系數(shù)的計(jì)算方法:\(gini(p) = \sum_{i=1}^n p_i(1-p_i)=1-\sum_{i=1}^n p_i^2\)

2. 創(chuàng)建樣本數(shù)據(jù)

這次的回歸樣本數(shù)據(jù),我們用 scikit-learn 自帶的玩具數(shù)據(jù)集中的糖尿病數(shù)據(jù)集。
關(guān)于玩具數(shù)據(jù)集的內(nèi)容,可以參考:TODO

from sklearn.datasets import load_diabetes

# 糖尿病數(shù)據(jù)集
diabetes = load_diabetes()
X = diabetes.data
y = diabetes.target

這個(gè)數(shù)據(jù)集中大約有400多條數(shù)據(jù)。

3. 模型訓(xùn)練

訓(xùn)練之前,為了減少算法誤差,先對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。

from sklearn import preprocessing as pp

# 數(shù)據(jù)標(biāo)準(zhǔn)化
X = pp.scale(X)
y = pp.scale(y)

接下來(lái)分割訓(xùn)練集測(cè)試集。

from sklearn.model_selection import train_test_split

# 分割訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)

然后用scikit-learn中的DecisionTreeRegressor模型來(lái)訓(xùn)練:

from sklearn.tree import DecisionTreeRegressor

# 定義決策樹回歸模型
reg = DecisionTreeRegressor(max_depth=2)

# 訓(xùn)練模型
reg.fit(X_train, y_train)

# 在測(cè)試集上進(jìn)行預(yù)測(cè)
y_pred = reg.predict(X_test)

DecisionTreeRegressor的主要參數(shù)包括:

  1. criterion:用于衡量節(jié)點(diǎn)劃分質(zhì)量的指標(biāo)。可以選擇的值有'mse'(均方誤差)或'mae'(平均絕對(duì)誤差)。默認(rèn)值為'mse',適用于大多數(shù)情況。
  2. splitter:用于決定節(jié)點(diǎn)如何進(jìn)行劃分的策略??梢赃x擇的值有'best'(選擇最佳劃分)或'random'(隨機(jī)劃分)。默認(rèn)值為'best'。
  3. max_depth:決策樹的最大深度。默認(rèn)值為None,表示不限制最大深度。增加最大深度有助于更好地?cái)M合訓(xùn)練數(shù)據(jù),但可能導(dǎo)致過(guò)擬合。
  4. random_state:用于設(shè)置隨機(jī)數(shù)生成器的種子。默認(rèn)值為None,表示使用隨機(jī)數(shù)生成器。
  5. ccp_alpha:用于控制正則化強(qiáng)度的參數(shù)。默認(rèn)值為None,表示不進(jìn)行正則化。
  6. max_samples:用于控制每個(gè)節(jié)點(diǎn)最少需要多少樣本才能進(jìn)行分裂。默認(rèn)值為None,表示使用整個(gè)數(shù)據(jù)集。
  7. min_samples_split:用于控制每個(gè)節(jié)點(diǎn)最少需要多少樣本才能進(jìn)行分裂。默認(rèn)值為2,表示每個(gè)節(jié)點(diǎn)至少需要2個(gè)樣本才能進(jìn)行分裂。
  8. min_samples_leaf:用于控制每個(gè)葉子節(jié)點(diǎn)最少需要多少樣本才能停止分裂。默認(rèn)值為1,表示每個(gè)葉子節(jié)點(diǎn)至少需要1個(gè)樣本才能停止分裂。
  9. min_weight_fraction_leaf:用于控制每個(gè)葉子節(jié)點(diǎn)最少需要多少樣本的權(quán)重才能停止分裂。默認(rèn)值為0.0,表示每個(gè)葉子節(jié)點(diǎn)至少需要0個(gè)樣本的權(quán)重才能停止分裂。
  10. max_features:用于控制每個(gè)節(jié)點(diǎn)最多需要考慮多少個(gè)特征進(jìn)行分裂。默認(rèn)值為None,表示使用所有特征。
  11. max_leaf_nodes:用于控制決策樹最多有多少個(gè)葉子節(jié)點(diǎn)。默認(rèn)值為None,表示不限制葉子節(jié)點(diǎn)的數(shù)量。
  12. min_impurity_decrease:用于控制每個(gè)節(jié)點(diǎn)最少需要減少多少不純度才能進(jìn)行分裂。默認(rèn)值為0.0,表示每個(gè)節(jié)點(diǎn)至少需要減少0個(gè)不純度才能進(jìn)行分裂。
  13. min_impurity_split:用于控制每個(gè)葉子節(jié)點(diǎn)最少需要減少多少不純度才能停止分裂。默認(rèn)值為None,表示使用min_impurity_decrease參數(shù)。
  14. class_weight:用于設(shè)置類別權(quán)重的字典或方法。默認(rèn)值為None,表示使用均勻權(quán)重。

最后驗(yàn)證模型的訓(xùn)練效果:

from sklearn import metrics

# 在測(cè)試集上進(jìn)行預(yù)測(cè)
y_pred = reg.predict(X_test)

mse, r2, m_error = 0.0, 0.0, 0.0
y_pred = reg.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
r2 = metrics.r2_score(y_test, y_pred)
m_error = metrics.median_absolute_error(y_test, y_pred)

print("均方誤差:{}".format(mse))
print("復(fù)相關(guān)系數(shù):{}".format(r2))
print("中位數(shù)絕對(duì)誤差:{}".format(m_error))

# 運(yùn)行結(jié)果
均方誤差:0.5973573097746598
復(fù)相關(guān)系數(shù):0.5153160857515913
中位數(shù)絕對(duì)誤差:0.5496418600646286

從預(yù)測(cè)的誤差來(lái)看,訓(xùn)練的效果還不錯(cuò)。
這里用DecisionTreeRegressor訓(xùn)練模型時(shí)使用了參數(shù)max_depth=2,
我從max_depth=1逐個(gè)嘗試到了max_depth=10,發(fā)現(xiàn)max_depth=2時(shí)誤差最小。

4. 總結(jié)

決策樹回歸具有直觀、易于理解、易于實(shí)現(xiàn)等優(yōu)點(diǎn)。
生成的決策樹可以直觀地展示出輸入特征與輸出結(jié)果之間的關(guān)系,因此對(duì)于非專業(yè)人士來(lái)說(shuō)也易于理解。
此外,決策樹回歸算法相對(duì)簡(jiǎn)單,易于實(shí)現(xiàn),且對(duì)數(shù)據(jù)的預(yù)處理要求較低。

然而,決策樹回歸也存在一些缺點(diǎn)。
首先,它容易過(guò)擬合訓(xùn)練數(shù)據(jù),特別是當(dāng)訓(xùn)練數(shù)據(jù)量較小時(shí);
其次,決策樹的性能受劃分標(biāo)準(zhǔn)選擇的影響較大,不同的劃分標(biāo)準(zhǔn)可能會(huì)導(dǎo)致生成的決策樹性能差異較大;
此外,決策樹回歸在處理大規(guī)模數(shù)據(jù)時(shí)可能會(huì)比較耗時(shí),因?yàn)樾枰闅v整個(gè)數(shù)據(jù)集進(jìn)行訓(xùn)練和預(yù)測(cè)。

總結(jié)

以上是生活随笔為你收集整理的【scikit-learn基础】--『监督学习』之 决策树回归的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。