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

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:隨機(jī)森林

發(fā)布于 2025-1-26 14:47
瀏覽
0收藏

一、算法介紹

        隨機(jī)森林屬于集成學(xué)習(xí)(Ensemble Learning)中的一種,它是通過構(gòu)建多個(gè)決策樹,并綜合這些決策樹的預(yù)測結(jié)果來進(jìn)行最終的預(yù)測。就好比一群經(jīng)驗(yàn)豐富的專家(各個(gè)決策樹)共同商討一件事,然后匯總大家的意見(預(yù)測結(jié)果)得出最終結(jié)論,往往這樣綜合考量后的結(jié)果會更加準(zhǔn)確可靠。

        隨機(jī)森林可以用于解決分類問題,比如判斷一封郵件是垃圾郵件還是正常郵件;也能處理回歸問題,例如預(yù)測某地區(qū)的房價(jià)走勢等。它具有以下優(yōu)點(diǎn):

  • 準(zhǔn)確性高:通過集成多個(gè)決策樹,減少了單個(gè)模型的偏差和方差,通常能獲得比單一決策樹更好的預(yù)測性能。
  • 魯棒性強(qiáng):對數(shù)據(jù)中的噪聲和異常值有較好的容忍度,不太容易因?yàn)閭€(gè)別“搗亂”的數(shù)據(jù)而導(dǎo)致整體預(yù)測結(jié)果偏差過大。
  • 可處理高維數(shù)據(jù):在面對具有眾多特征的數(shù)據(jù)時(shí),依然能夠較好地發(fā)揮作用,篩選出重要特征并進(jìn)行有效預(yù)測。

二、算法原理

1. 決策樹基礎(chǔ)

        隨機(jī)森林的基本組成單元是決策樹。決策樹是一種基于樹結(jié)構(gòu)進(jìn)行決策的模型,它通過對數(shù)據(jù)集特征的不斷劃分來構(gòu)建樹形結(jié)構(gòu)。

例如,我們有一個(gè)簡單的數(shù)據(jù)集,特征包括天氣(晴天、多云、下雨)、溫度(高、中、低),要預(yù)測是否適合外出活動(dòng)。決策樹可能會先根據(jù)天氣特征進(jìn)行劃分,如果是晴天,再看溫度情況等,逐步構(gòu)建出一個(gè)類似樹狀的決策流程,最終每個(gè)葉子節(jié)點(diǎn)對應(yīng)一個(gè)預(yù)測結(jié)果(適合外出或者不適合外出)。

       

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:隨機(jī)森林-AI.x社區(qū)

2. 隨機(jī)森林的構(gòu)建

隨機(jī)森林在構(gòu)建決策樹時(shí)有兩個(gè)關(guān)鍵的隨機(jī)化步驟:

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:隨機(jī)森林-AI.x社區(qū)

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:隨機(jī)森林-AI.x社區(qū)

        當(dāng)構(gòu)建好眾多的決策樹(假設(shè)構(gòu)建了T棵決策樹)后,對于分類問題,隨機(jī)森林的預(yù)測結(jié)果通常采用投票法,即統(tǒng)計(jì)每棵樹預(yù)測的類別,選擇出現(xiàn)次數(shù)最多的類別作為最終預(yù)測類別;對于回歸問題,則是將每棵樹的預(yù)測值進(jìn)行平均,得到最終的預(yù)測值。

三、案例分析——基于隨機(jī)森林的機(jī)器故障預(yù)測

1. 數(shù)據(jù)集介紹

  • 該數(shù)據(jù)集包含了機(jī)器運(yùn)行的相關(guān)信息,共有8998條記錄,10個(gè)字段。其中主要字段包括:

機(jī)器編號:用于唯一標(biāo)識每臺機(jī)器。

統(tǒng)一規(guī)范代碼:可能與機(jī)器的類型或規(guī)格相關(guān)。

機(jī)器質(zhì)量等級:反映機(jī)器的質(zhì)量層次,可能影響其運(yùn)行穩(wěn)定性和故障概率。

工廠溫度:機(jī)器運(yùn)行環(huán)境的溫度情況。

機(jī)器溫度:機(jī)器自身運(yùn)行時(shí)的溫度。

轉(zhuǎn)速(rpm):機(jī)器運(yùn)行的轉(zhuǎn)速。

扭矩(Nm):機(jī)器工作時(shí)產(chǎn)生的扭矩。

使用時(shí)長(min):機(jī)器已經(jīng)運(yùn)行的累計(jì)時(shí)長。

是否發(fā)生故障:目標(biāo)變量,表示機(jī)器是否出現(xiàn)故障,1表示發(fā)生故障,0表示未發(fā)生故障。

具體故障類別:進(jìn)一步細(xì)分故障的類型。

2. 完整代碼

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

# 定義excel文件路徑
file_path = '/mnt/data.xlsx'

# 加載數(shù)據(jù)
data = pd.read_excel(file_path)

# 定義特征列名列表
feature_cols = ['機(jī)器質(zhì)量等級', '工廠溫度', '機(jī)器溫度', '轉(zhuǎn)速(rpm)', '扭矩(Nm)', '使用時(shí)長(min)']

# 選取特征列作為特征變量X
X = data.loc[:, feature_cols]

# 選取目標(biāo)列作為目標(biāo)變量y
y = data['是否發(fā)生故障']

# 劃分訓(xùn)練集和測試集,測試集大小為30%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 創(chuàng)建隨機(jī)森林分類器,設(shè)置決策樹數(shù)量為100
rf = RandomForestClassifier(n_estimators=100, random_state=42)

# 使用訓(xùn)練集訓(xùn)練模型
rf.fit(X_train, y_train)

# 使用訓(xùn)練好的模型對測試集進(jìn)行預(yù)測
y_pred = rf.predict(X_test)

# 輸出分類報(bào)告
print(classification_report(y_test, y_pred))

# 計(jì)算混淆矩陣
cm = confusion_matrix(y_test, y_pred)

# 繪制混淆矩陣熱力圖
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

# 計(jì)算ROC曲線相關(guān)數(shù)據(jù)
y_pred_proba = rf.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)
roc_auc = auc(fpr, tpr)

# 繪制ROC曲線
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
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')
plt.legend(loc="lower right")
plt.show()

3. 結(jié)果分析

  • 分類報(bào)告:

precision    recall  f1-score   support

          0       0.99      1.00      0.99      2624
          1       0.88      0.58      0.70        76

   accuracy                           0.99      2700
  macro avg       0.93      0.79      0.85      2700
weighted avg       0.98      0.99      0.98      2700

其中,精確率表示預(yù)測為正例的樣本中真正為正例的比例;召回率表示實(shí)際為正例的樣本中被正確預(yù)測為正例的比例;F1 值是精確率和召回率的調(diào)和平均數(shù),綜合反映模型的性能;支持度表示每個(gè)類別的樣本數(shù)量。

  • 混淆矩陣熱力圖:

一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:隨機(jī)森林-AI.x社區(qū)

混淆矩陣中,對角線元素表示正確分類的樣本數(shù)量,非對角線元素表示錯(cuò)誤分類的樣本數(shù)量。

  • ROC曲線:一個(gè)強(qiáng)大的集成學(xué)習(xí)算法:隨機(jī)森林-AI.x社區(qū)

四、結(jié)論

        隨機(jī)森林模型在這個(gè)機(jī)器故障預(yù)測任務(wù)中表現(xiàn)優(yōu)秀,能夠有效地根據(jù)機(jī)器的運(yùn)行參數(shù)預(yù)測是否會發(fā)生故障,可用于實(shí)際生產(chǎn)中的機(jī)器故障預(yù)警和維護(hù)決策等場景。

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

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