第一篇
https://www.toutiao.com/article/7259931008877789736/
第二篇
https://www.toutiao.com/article/7259967482692125184/
首先加载相应的模块
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
导入计算好的特性
df1=pd.read_csv('Normal_Bearing.csv')
df2=pd.read_csv('outer_race_fault_test_2.csv')
df3=pd.read_csv('outer_race_fault_test_3.csv')
df4=pd.read_csv('inner_race_fault.csv')
df5=pd.read_csv('roller_element_fault.csv')
df = pd.concat([df1,df2,df3,df4,df5])
df
df['Fault'].unique()
array(['Normal', 'Outer Race', 'Inner Race', 'Roller Element'],
dtype=object)
划分训练集和测试集
X = df.iloc[:,:-1]
y = df.iloc[:,-1]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.20)
采用随机森林进行识别,并作混淆矩阵
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix
rf_model = RandomForestClassifier().fit(X_train, y_train)
y_pred = rf_model.predict(X_test)
labels=['Normal', 'Outer Race', 'Inner Race', 'Roller Element']
# creating a confusion matrix
cm = confusion_matrix(y_test, y_pred,labels=['Normal', 'Outer Race', 'Inner Race', 'Roller Element'], normalize ='true')
colormap = sns.color_palette("Reds")
sns.heatmap(cm, annot=True,cmap=colormap,xticklabels=labels, yticklabels=labels)
采用随机森林进行测试
Test_no=2
Bearing_no=1
test_2 = pd.read_csv("Time_feature_matrix_Bearing_{}_Test_{}.csv".format(Bearing_no,Test_no),index_col='Unnamed: 0')
y_pred_test_2 = rf_model.predict(test_2)
test_2['Fault']=y_pred_test_2
test_2
计算准确率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(accuracy)
0.9868421052631579
test_2.index = pd.to_datetime(test_2.index)
Test_no=1
Bearing_no=3
test_2 = pd.read_csv("Time_feature_matrix_Bearing_{}_Test_{}.csv".format(Bearing_no,Test_no),index_col='Unnamed: 0')
y_pred_test_2 = rf_model.predict(test_2)
test_2['Fault']=y_pred_test_2
test_2.index = pd.to_datetime(test_2.index)
norm = test_2[test_2['Fault']=='Normal']
Out_rac = test_2[test_2['Fault']=='Outer Race']
iner_rac = test_2[test_2['Fault']=='Inner Race']
roll_elem = test_2[test_2['Fault']=='Roller Element']
col='Max' # Change this value to any column name
plt.figure(figsize=(10, 5))
plt.scatter(norm.index,norm[col])
plt.scatter(Out_rac.index,Out_rac[col])
plt.scatter(iner_rac.index,iner_rac[col])
plt.scatter(roll_elem.index,roll_elem[col])
plt.legend(['Normal','Outer Race','Inner Race','Roller Element'])
plt.title(col)
plt.show()
采用xgboost方法进行对比,安装xgboost。
pip install xgboost
训练xgboost
from sklearn.preprocessing import LabelEncoder
# Load data into a Pandas DataFrame
df1=pd.read_csv('Normal_Bearing.csv')
df2=pd.read_csv('outer_race_fault_test_2.csv')
df3=pd.read_csv('outer_race_fault_test_3.csv')
df4=pd.read_csv('inner_race_fault.csv')
df5=pd.read_csv('roller_element_fault.csv')
data= pd.concat([df1,df2,df3,df4,df5])
# Encode the labels as numeric values
label_encoder = LabelEncoder()
data['fault'] = label_encoder.fit_transform(data['Fault'])
# Split data into features and labels
X = data.drop('fault', axis=1)
y = data['fault']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Plot the confusion matrix as a heatmap
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
sns.heatmap(cm, annot=True, cmap='Blues', fmt='g', xticklabels=label_encoder.classes_, yticklabels=label_encoder.classes_)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()
计算准确率
Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train an XGBoost model
xgb_model = xgb.XGBClassifier()
xgb_model.fit(X_train, y_train)
# Make predictions on new data
y_pred = xgb_model.predict(X_test)
# Evaluate the model's accuracy
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
Accuracy: 0.9539473684210527
Test_no=1
Bearing_no=3
test_2 = pd.read_csv("Time_feature_matrix_Bearing_{}_Test_{}.csv".format(Bearing_no,Test_no),index_col='Unnamed: 0')
y_pred_test_2 = xgb_model.predict(test_2)
test_2['fault'] = y_pred_test_2
test_2.index = pd.to_datetime(test_2.index)
norm = test_2[test_2['fault']==0]
Out_rac = test_2[test_2['fault']==1]
iner_rac = test_2[test_2['fault']==2]
roll_elem = test_2[test_2['fault']==3]
col='Max' # Change this value to any column name
plt.figure(figsize=(10, 5))
plt.scatter(norm.index,norm[col])
plt.scatter(Out_rac.index,Out_rac[col])
plt.scatter(iner_rac.index,iner_rac[col])
plt.scatter(roll_elem.index,roll_elem[col])
plt.legend(['Normal','Outer Race','Inner Race','Roller Element'])
plt.title(col)
plt.show()
相关的文章参考
几种信号降噪算法(第一部分)
https://www.toutiao.com/article/7190201924820402721/
几种信号降噪算法(第二部分)
https://www.toutiao.com/article/7190270349236683264/
机械故障诊断及工业工程故障诊断若干例子(第一篇)
https://www.toutiao.com/article/7193957227231855163/
知乎咨询:哥廷根数学学派
算法代码地址,面包多主页:
https://mbd.pub/o/GeBENHAGEN/work
擅长现代信号处理(改进小波分析系列,改进变分模态分解,改进经验小波变换,改进辛几何模态分解等等),改进机器学习,改进深度学习,机械故障诊断,改进时间序列分析(金融信号,心电信号,振动信号等)
页面更新:2024-03-15
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号