随机森林模型构建--在凯斯西储(CWRU)数据上的简单测试(1)

随机森林模型构建测试–在凯斯西储(CWRU)数据上的简单测试(1)


文章目录

  • 随机森林模型构建测试--在凯斯西储(CWRU)数据上的简单测试(1)
  • 1. 实验数据集说明
  • 2. 测试数据说明
  • 3. 随机森林模型构建与测试结果
  • 参考文献


1. 实验数据集说明

凯斯西储轴承故障数据集是凯斯西储大学制作的一个球轴承故障诊断公开数据集[1]。电机轴承使用电火花加工 (EDM) 植入故障。在内滚道、滚动体(即球)和外滚道处分别引入了直径从0.007英寸到0.040英寸不等的故障。将故障轴承重新安装到测试电机中,并记录电机负载为 0 至 3 马力(电机速度为 1797 至 1720 RPM)的振动加速度传感器监测数据。在测点布置上,多数采集了三个位置的数据,DE表示驱动端,FE表示风扇端,BA表示基座端。

2. 测试数据说明

测试数据为特征提取后数据。前面9列字段为特征,最后一个字段为故障类型,总共10类。

# 读入数据
data_time = pd.read_csv(r"C:\Users\ISTLN\PycharmProjects\pythonProject1\CWRU_data\feature_time_48k_2048_load_1.csv")
fault_type = data_time.fault.unique()
print(len(fault_type))

随机森林模型构建--在凯斯西储(CWRU)数据上的简单测试(1)_第1张图片

3. 随机森林模型构建与测试结果

利用sklearn.ensemble 构建了随机森林模型

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix,classification_report, accuracy_score
import matplotlib.pyplot as plt
import seaborn as sns
# 读入数据
data_time = pd.read_csv(r"...\CWRU_data\feature_time_48k_2048_load_1.csv")

模型训练

# 模型初始化
rf_model = RandomForestClassifier(n_estimators= 300, max_features = "sqrt", n_jobs = -1, random_state = 38)
# 模型训练
rf_model.fit(train_data_scaled, train_data['fault'])

模型预测

# 训练数据的预测结果
train_predictions = rf_model.predict(train_data_scaled)
# 测试数据的预测结果
test_predictions = rf_model.predict(test_data_scaled)

# 训练数据 模型预测的混淆矩阵可视化
train_confu_matrix = confusion_matrix(train_data['fault'], train_predictions)
# 测试数据 模型预测的混淆矩阵可视化
test_confu_matrix = confusion_matrix(test_data['fault'], test_predictions)

fault_type = data_time.fault.unique()
print("fault_type:{}".format(fault_type))

可视化

# 可视化--画图
plt.figure(1,figsize=(18,9))
plt.subplot(121)
sns.heatmap(train_confu_matrix, annot= True,fmt = "d",
xticklabels=fault_type, yticklabels=fault_type, cmap = "Greens", cbar = False)
plt.title('Training Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('True')
plt.subplot(121)

plt.subplot(122)
sns.heatmap(test_confu_matrix, annot = True,
xticklabels=fault_type, yticklabels=fault_type, cmap = "Greens", cbar = False)
plt.title('Test Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('True')

plt.tight_layout()
plt.show()

模型训练后的可视化结果如下:
随机森林模型构建--在凯斯西储(CWRU)数据上的简单测试(1)_第2张图片
完整代码见:https://mianbaoduo.com/o/bread/mbd-YpuYk55t

参考文献

[1] https://engineering.case.edu/bearingdatacenter

你可能感兴趣的:(风机故障诊断,决策树,python,算法)