在本文中,我們將討論如何使用在線真實數(shù)據(jù)集實現(xiàn)隨機森林算法。我們還將提供詳細的代碼解釋和每個步驟的描述,以及對模型性能和可視化的評估。
隨著機器學習模型在預測和分析數(shù)據(jù)方面變得越來越流行,隨機森林算法的使用正在獲得動力。隨機森林是一種監(jiān)督學習算法,用于機器學習領域的回歸和分類任務。它的工作原理是在訓練時構(gòu)建大量決策樹并輸出類,即類的模式(分類)或單個樹的平均預測(回歸)。
在本文中,我們將討論如何使用在線真實數(shù)據(jù)集實現(xiàn)隨機森林算法。我們還將提供詳細的代碼解釋和每個步驟的描述,以及對模型性能和可視化的評估。
我們將使用的數(shù)據(jù)集是“Breast Cancer Wisconsin (Diagnostic) Dataset”,它是公開可用的,可以通過 UCI 機器學習存儲庫訪問。該數(shù)據(jù)集有 569 個實例,具有 30 個屬性和兩個類別——惡性和良性。我們的目標是根據(jù) 30 個屬性對這些實例進行分類,并確定它們是良性還是惡性。您可以從https://www.kaggle.com/datasets/uciml/breast-cancer-wisconsin-data下載數(shù)據(jù)集。
首先,我們將導入必要的庫:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
接下來,我們將加載數(shù)據(jù)集:
df = pd.read_csv(r"C:\Users\User\Downloads\data\breast_cancer_wisconsin_diagnostic_dataset.csv")
df
輸出:


在構(gòu)建模型之前,我們需要對數(shù)據(jù)進行預處理。由于 'id' 和 'Unnamed: 32' 列對我們的模型沒有用,我們將刪除它:
df = df.drop([ 'id' , 'Unnamed: 32' ], axis=1)
df
輸出:

接下來,我們將把“診斷”列分配給我們的目標變量并將其從我們的特征中刪除:
target = df['diagnosis']
features = df.drop('diagnosis', axis=1)
我們現(xiàn)在將把我們的數(shù)據(jù)集分成訓練集和測試集。我們將使用 70% 的數(shù)據(jù)進行訓練,30% 的數(shù)據(jù)用于測試:
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.3, random_state=42)
通過我們的數(shù)據(jù)預處理并分成訓練和測試集,我們現(xiàn)在可以構(gòu)建我們的隨機森林模型:
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
在這里,我們將森林中的決策樹數(shù)量設置為 100,并設置了隨機狀態(tài)以確保結(jié)果的可重復性。
現(xiàn)在,我們可以評估模型的性能。我們將使用準確度分數(shù)、混淆矩陣和分類報告進行評估:
y_pred = rf.predict(X_test)
# 準確度分數(shù)
print("Accuracy Score:", accuracy_score(y_test, y_pred))
# Confusion Matrix
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", conf_matrix)
# Classification Report
class_report = classification_report(y_test, y_pred)
print("Classification Report:\n", class_report)
輸出:

準確性得分告訴我們模型在正確分類實例方面的表現(xiàn)如何?;煜仃囎屛覀兏玫亓私馕覀兡P偷姆诸愋阅?。分類報告為我們提供了兩個類別的精度、召回率、f1 分數(shù)和支持值。
最后,我們可以可視化模型中每個特征的重要性。我們可以通過創(chuàng)建一個顯示特征重要性值的條形圖來做到這一點:
importance = rf.feature_importances_
feat_imp = pd.Series(importance, index=features.columns)
feat_imp = feat_imp.sort_values(ascending=False)
plt.figure(figsize=(12,8))
feat_imp.plot(kind='bar')
plt.ylabel('Feature Importance Score')
plt.title("Feature Importance")
plt.show()
輸出:

此條形圖按降序顯示每個特征的重要性。我們可以看到前三個重要特征是“凹點均值”、“凹點最差”和“區(qū)域最差”。
總之,在機器學習中實施隨機森林算法是分類任務的強大工具。我們可以使用它根據(jù)多個特征對實例進行分類并評估我們模型的性能。在本文中,我們使用了在線真實數(shù)據(jù)集,并提供了詳細的代碼解釋和每個步驟的描述,以及對模型性能和可視化的評估。