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

歡迎訪問 生活随笔!

生活随笔

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

windows

【scikit-learn基础】--『监督学习』之 随机森林分类

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

隨機(jī)森林分類算法是一種基于集成學(xué)習(xí)(ensemble learning)的機(jī)器學(xué)習(xí)算法,
它的基本原理是通過對(duì)多個(gè)決策樹的預(yù)測(cè)結(jié)果進(jìn)行平均或投票,以產(chǎn)生最終的分類結(jié)果。

隨機(jī)森林算法可用于回歸分類問題。
關(guān)于隨機(jī)森林算法在回歸問題上的應(yīng)用可參考:TODO

隨機(jī)森林分類算法可以應(yīng)用于各種需要進(jìn)行分類或預(yù)測(cè)的問題,如垃圾郵件識(shí)別信用卡欺詐檢測(cè)疾病預(yù)測(cè)等,
它也可以與其他機(jī)器學(xué)習(xí)算法進(jìn)行結(jié)合,以進(jìn)一步提高預(yù)測(cè)準(zhǔn)確率。

1. 算法概述

隨機(jī)森林的基本原理是構(gòu)建多棵決策樹,每棵樹都是基于原始訓(xùn)練數(shù)據(jù)的一個(gè)隨機(jī)子集進(jìn)行訓(xùn)練。在構(gòu)建每棵樹時(shí),算法會(huì)隨機(jī)選擇一部分特征進(jìn)行考慮,而不是考慮所有的特征。

然后,對(duì)于一個(gè)新的輸入樣本,每棵樹都會(huì)進(jìn)行分類預(yù)測(cè),并將預(yù)測(cè)結(jié)果提交給“森林”進(jìn)行最終的分類決策。
一般來說,森林會(huì)選擇出現(xiàn)次數(shù)最多的類別作為最終的分類結(jié)果。

理論上來看,隨機(jī)森林分類應(yīng)該比決策樹分類有更加好的準(zhǔn)確度,特別是在高維度的數(shù)據(jù)情況下。

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

為了后面比較隨機(jī)森林分類算法和決策樹算法的準(zhǔn)確性,創(chuàng)建分類多一些(8個(gè)分類標(biāo)簽)的樣本數(shù)據(jù)。

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification

# 分類數(shù)據(jù)的樣本生成器
X, y = make_classification(
    n_samples=1000, n_classes=8, n_clusters_per_class=2, n_informative=6
)
plt.scatter(X[:, 0], X[:, 1], marker="o", c=y, s=25)

plt.show()

3. 模型訓(xùn)練

首先,分割訓(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)

這次按照9:1的比例來劃分訓(xùn)練集和測(cè)試集。

決策樹分類模型來訓(xùn)練數(shù)據(jù):

from sklearn.tree import DecisionTreeClassifier

reg_names = [
    "ID3算法",
    "C4.5算法",
    "CART算法",
]

# 定義
regs = [
    DecisionTreeClassifier(criterion="entropy"),
    DecisionTreeClassifier(criterion="log_loss"),
    DecisionTreeClassifier(criterion="gini"),
]

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

# 在測(cè)試集上進(jìn)行預(yù)測(cè)
y_preds = []
for reg in regs:
    y_pred = reg.predict(X_test)
    y_preds.append(y_pred)

for i in range(len(y_preds)):
    correct_pred = np.sum(y_preds[i] == y_test)
    print("決策樹【{}】 預(yù)測(cè)正確率:{:.2f}%".format(reg_names[i], correct_pred / len(y_pred) * 100))

# 運(yùn)行結(jié)果
決策樹【ID3算法】 預(yù)測(cè)正確率:43.00%
決策樹【C4.5算法】 預(yù)測(cè)正確率:42.00%
決策樹【CART算法】 預(yù)測(cè)正確率:42.00%

隨機(jī)森林分類模型來訓(xùn)練數(shù)據(jù):

from sklearn.ensemble import RandomForestClassifier

reg_names = [
    "ID3算法",
    "C4.5算法",
    "CART算法",
]

# 定義
regs = [
    RandomForestClassifier(criterion="entropy"),
    RandomForestClassifier(criterion="log_loss"),
    RandomForestClassifier(criterion="gini"),
]

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

# 在測(cè)試集上進(jìn)行預(yù)測(cè)
y_preds = []
for reg in regs:
    y_pred = reg.predict(X_test)
    y_preds.append(y_pred)

for i in range(len(y_preds)):
    correct_pred = np.sum(y_preds[i] == y_test)
    print("隨機(jī)森林【{}】 預(yù)測(cè)正確率:{:.2f}%".format(reg_names[i], correct_pred / len(y_pred) * 100))

# 運(yùn)行結(jié)果
隨機(jī)森林【ID3算法】 預(yù)測(cè)正確率:64.00%
隨機(jī)森林【C4.5算法】 預(yù)測(cè)正確率:63.00%
隨機(jī)森林【CART算法】 預(yù)測(cè)正確率:69.00%

可以看出,隨機(jī)森林分類的準(zhǔn)確性確實(shí)比決策樹分類提高了。
不過,運(yùn)行過程中也可以發(fā)現(xiàn),隨機(jī)森林的訓(xùn)練時(shí)間會(huì)比決策樹長(zhǎng)一些。

4. 總結(jié)

隨機(jī)森林分類算法的優(yōu)勢(shì)在于:

  1. 抗過擬合能力強(qiáng):由于采用隨機(jī)選擇特征的方式,可以有效地避免過擬合問題。
  2. 泛化能力強(qiáng):通過對(duì)多個(gè)決策樹的結(jié)果進(jìn)行投票或平均,可以獲得更好的泛化性能。
  3. 對(duì)數(shù)據(jù)特征的選取具有指導(dǎo)性:在構(gòu)建決策樹時(shí)會(huì)對(duì)特征進(jìn)行選擇,這可以為后續(xù)的特征選擇提供指導(dǎo)。
  4. 適用于大規(guī)模數(shù)據(jù)集:可以有效地處理大規(guī)模數(shù)據(jù)集,并且訓(xùn)練速度相對(duì)較快。

當(dāng)然,隨機(jī)森林分類算法也存在一些劣勢(shì):

  1. 需要大量的內(nèi)存和計(jì)算資源:由于需要構(gòu)建多個(gè)決策樹,因此需要更多的內(nèi)存和計(jì)算資源。
  2. 需要調(diào)整參數(shù):性能很大程度上取決于參數(shù)的設(shè)置,如樹的數(shù)量、每個(gè)節(jié)點(diǎn)的最小樣本數(shù)等,這些參數(shù)的設(shè)置需要一定的經(jīng)驗(yàn)和實(shí)驗(yàn)。
  3. 對(duì)新樣本的預(yù)測(cè)性能不穩(wěn)定:由于是通過投票或平均多個(gè)決策樹的結(jié)果來進(jìn)行預(yù)測(cè),因此對(duì)新樣本的預(yù)測(cè)性能可能會(huì)受到影響。

總結(jié)

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

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