自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:梯度提升樹(shù)!

發(fā)布于 2025-2-10 14:37
瀏覽
0收藏

一、算法介紹

 梯度提升樹(shù)(Gradient Boosting Trees, GBT)是一種強(qiáng)大的集成學(xué)習(xí)方法,它通過(guò)迭代地添加弱預(yù)測(cè)模型來(lái)構(gòu)建一個(gè)強(qiáng)預(yù)測(cè)模型。在每一輪迭代中,新的模型會(huì)試圖糾正前序模型產(chǎn)生的錯(cuò)誤。GBT可以用于回歸和分類(lèi)問(wèn)題,并且在許多實(shí)際應(yīng)用中表現(xiàn)優(yōu)異。

二、算法原理

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:梯度提升樹(shù)!-AI.x社區(qū)

三、 案例分析

  為了展示梯度提升樹(shù)的實(shí)際應(yīng)用,我們將使用提供的數(shù)據(jù)集來(lái)預(yù)測(cè)機(jī)器是否會(huì)發(fā)生故障。首先加載數(shù)據(jù),并進(jìn)行必要的預(yù)處理。

3.1 數(shù)據(jù)預(yù)處理與模型建立

import pandas as pd
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score, roc_auc_score, roc_curve
import seaborn as sns
import matplotlib.pyplot as plt

# 加載數(shù)據(jù)
data = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 數(shù)據(jù)清洗
data.drop_duplicates(inplace=True)
X = data.drop(columns=['機(jī)器編號(hào)', '是否發(fā)生故障', '具體故障類(lèi)別'])
y = data['是否發(fā)生故障']

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

# 創(chuàng)建并訓(xùn)練模型
gbt_model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)
gbt_model.fit(X_train, y_train)

# 預(yù)測(cè)
y_pred = gbt_model.predict(X_test)
y_pred_proba = gbt_model.predict_proba(X_test)[:, 1]  # 獲取正類(lèi)的概率

# 評(píng)估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

# 打印分類(lèi)報(bào)告
print(classification_report(y_test, y_pred))

# 繪制混淆矩陣
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", cbar=False,
            xticklabels=['No Failure', 'Failure'],
            yticklabels=['No Failure', 'Failure'])
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()

# 計(jì)算ROC曲線(xiàn)
fpr, tpr, _ = roc_curve(y_test, y_pred_proba)
roc_auc = roc_auc_score(y_test, y_pred_proba)

# 繪制ROC曲線(xiàn)
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (area = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC)')
plt.legend(loc="lower right")
plt.show()

3.2 結(jié)果分析

  通過(guò)上述代碼,我們得到了模型在測(cè)試集上的準(zhǔn)確率,并打印了詳細(xì)的分類(lèi)報(bào)告,其中包括精確度(Precision)、召回率(Recall)以及F1分?jǐn)?shù)(F1-score)。

Accuracy: 0.99
              precision    recall  f1-score   support

           0       0.99      1.00      0.99      1753
           1       0.91      0.64      0.75        47

    accuracy                           0.99      1800
   macro avg       0.95      0.82      0.87      1800
weighted avg       0.99      0.99      0.99      1800

此外,我們還繪制了混淆矩陣圖,以便更直觀地了解模型的表現(xiàn)情況。

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:梯度提升樹(shù)!-AI.x社區(qū)

  • 準(zhǔn)確率 (Accuracy):表示模型正確預(yù)測(cè)的比例。
  • 精確度 (Precision):表示被模型預(yù)測(cè)為正類(lèi)的樣本中實(shí)際為正類(lèi)的比例。
  • 召回率 (Recall):表示所有實(shí)際為正類(lèi)的樣本中,被模型正確識(shí)別出來(lái)的比例。
  • F1分?jǐn)?shù) (F1-score):是精確度和召回率的調(diào)和平均數(shù),用于綜合評(píng)價(jià)模型的性能。

除了這些指標(biāo)外,我們還繪制了ROC曲線(xiàn),這可以幫助我們理解模型區(qū)分正負(fù)樣本的能力。

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:梯度提升樹(shù)!-AI.x社區(qū)

  ROC曲線(xiàn)下的面積(AUC)是一個(gè)重要的性能指標(biāo),它反映了模型的整體表現(xiàn)。一個(gè)理想的模型應(yīng)該具有接近1.0的AUC值,這意味著模型能夠很好地將正負(fù)樣本區(qū)分開(kāi)來(lái)。

四、結(jié)語(yǔ)

  梯度提升樹(shù)是一種非常有效的方法,尤其適用于處理復(fù)雜的數(shù)據(jù)模式。通過(guò)本文的介紹與案例分析,希望能幫助讀者更好地理解這一算法,并能夠在實(shí)踐中加以運(yùn)用。在未來(lái)的工作中,嘗試不同的參數(shù)設(shè)置以及結(jié)合其他技術(shù)可能會(huì)帶來(lái)更好的結(jié)果。    

本文轉(zhuǎn)載自 ??寶寶數(shù)模AI??,作者: BBSM


收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦