import pyreadrimport matplotlib.pyplot as pltimport seaborn as snsimport numpy as npimport pandas as pd# Only Training data is useddf_FaultFree = pyreadr.read_r(r'The TEP Dataset\TEP_FaultFree_Training.RData')['fault_free_training']df_Faulty = pyreadr.read_r(r'The TEP Dataset\TEP_Faulty_Training.RData')['faulty_training']DF = pd.concat([df_FaultFree,df_Faulty]) # Join both fault free and faulty datasetDF.headfrom sklearn.preprocessing import StandardScaler, MinMaxScalersc = StandardScalersc.fit(df_FaultFree.iloc[:,3:])StandardScaler# Select a subset of the data from simulation runs 1 to 10, and filter out fault numbers 9 and 15reduced_data = DF.loc[(DF['simulationRun'] >= 1) & (DF['simulationRun'] 20].iloc[:, 3:])# Extract the fault numbers that occur after the 20th sampleY = reduced_data[reduced_data['sample'] > 20]['faultNumber'].valuescontrol_col = np.random.random(len(X)).reshape(-1,1)X = np.hstack((X,control_col ))from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=42)x_train.shapefrom sklearn.linear_model import LogisticRegressionLogRegCls = LogisticRegression(max_iter=1000,random_state=0,multi_class='ovr').fit(x_train, y_train)LogRegCls.score(x_test,y_test)0.558826754385965LogRegCls.coef_.shape(19, 53)feature_importance = LogRegCls.coef_feature_name = np.array(reduced_data.columns[3:])feature_name = np.append(feature_name, "control_feature")Coeff_df = pd.DataFrame(data=feature_importance,columns=feature_name)# Create barplots for each row of the DataFramefor i in range(len(Coeff_df)):row_data = Coeff_df.iloc[i]plt.figure(figsize=(25, 5))sns.barplot(x=row_data.index, y=row_data.values)plt.title(f"Fault class: {LogRegCls.classes_[i]}")plt.xticks(rotation=90)plt.showrow_data = Coeff_df.abs.meanrow_data = row_data.sort_values(ascending=False)plt.figure(figsize=(25, 5))sns.barplot(x=row_data.index, y=row_data.values)plt.title(f"Combine feature Importance")plt.xticks(rotation=90)plt.showfrom sklearn.tree import DecisionTreeClassifierDT = DecisionTreeClassifier(random_state=0,max_depth=50)DT.fit(x_train, y_train)摘要:import pyreadrimport matplotlib.pyplot as pltimport seaborn as snsimport numpy as npimport pandas as pd# Only Training data is use
DecisionTreeClassifier(max_depth=50, random_state=0)
DT.score(x_train,y_train)0.9250411184210526DT.score(x_test,y_test)0.7711074561403509# get feature importancesimportances = DT.feature_importances_feature_name = np.array(reduced_data.columns[3:])feature_name = np.append(feature_name,"control_feature")# Create a DataFrame from the two arraysfeature_importance = pd.DataFrame({'feature_name': feature_name, 'importances': importances})# Sort the DataFrame by importances in descending orderfeature_importance = feature_importance.sort_values('importances', ascending=False)plt.figure(figsize=(25, 5))sns.barplot(x=feature_importance.feature_name , y=feature_importance.importances)plt.title(f"Decision Tree feature Importance")plt.xticks(rotation=90)plt.showVisualize the Decision Tree as a bunch of If... Else rule structurefrom sklearn import treefig = plt.figure(figsize=(25,20))_ = tree.plot_tree(DT, feature_names=reduced_data.columns[3:],filled=True)知乎学术咨询:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1担任《Mechanical System and Signal Processing》《中国电机工程学报》等期刊审稿专家,擅长领域:信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测。
分割线分割线
心电信号的傅里叶变换滤波(L1和L2傅里叶变换)、小波处理和PQRST波检测等(Python,Ipynb文件)
import numpy as npimport matplotlib.pyplot as pltimport scipyfrom scipy.io import loadmatfrom scipy.optimize import minimizefrom scipy.optimize import linprogmat_data = loadmat('s0017lrem.mat')ecg_signal = mat_data['val'][0].squeezeplt.figure(figsize=(12, 6))plt.plot(ecg_signal, label='ECG')plt.title('S0017lrem Signal')plt.xlabel('Sample')plt.ylabel('Amplitude')plt.legendplt.tight_layoutplt.showmat_data = loadmat('08378m.mat')ecg_signal = mat_data['val'][0].squeezeplt.figure(figsize=(12, 6))plt.plot(ecg_signal, label='ECG')plt.title('S0017lrem Signal')plt.xlabel('Sample')plt.ylabel('Amplitude')plt.legendplt.tight_layoutplt.showL2
L1
showing original signal and L1 and L2waveletsdef plot_wavelet_level_3(signal, fs):# Perform the wavelet transform at level 3coeffs = pywt.wavedec(signal, 'sym4', level=4)# Plot only the approximation coefficients at level 3plt.figure(figsize=(15, 6))plt.plot(coeffs[0], label="Approximation Coefficients (Level 4)")plt.title("Wavelet Approximation at Level 4")plt.xlabel('Samples')plt.ylabel('Amplitude')plt.legendplt.grid(True, alpha=0.3)plt.tight_layoutplt.show# Load ECG data from a .mat filemat_data = loadmat('s0017lrem.mat')fs = 1000 # Sampling frequencyecg_signal = mat_data['val'][0].squeeze# Plot the wavelet transform of the ECG signalplot_wavelet_level_3(ecg_signal, fs)完整代码:
基于维纳滤波和卡尔曼滤波的ECG信号降噪(MATLAB)
完整代码:
应用机器学习算法,包括SES、ARIMA、ANN和LSTM,以预测以太坊加密货币的价格((Python,Ipynb文件)
研究分析了不同模型在预测未来1天、10天和30天价格方面的表现,旨在提高预测的准确性和可靠性,同时为金融分析和决策提供见解和指导。
import numpy as npimport pandas as pdfrom sklearn.metrics import mean_absolute_percentage_error, mean_absolute_error, r2_score, mean_squared_error, root_mean_squared_errorimport matplotlib.pylab as pltfrom sklearn.preprocessing import StandardScalerfrom sklearn.model_selection import GridSearchCVfrom sciKeras.wrappers import kerasRegressorimport tensorflow as tffrom keras._tf_keras.keras.models import Modelfrom keras._tf_keras.keras.layers import Dense, Input, Dropoutfrom keras._tf_keras.keras.regularizers import l2np.random.seed(123)tf.random.set_seed(123)完整代码:
采用XGBoost集成方案提高UHPC的抗压强度预测(Python)
import pandas as pdimport numpy as npimport seaborn as snsfrom xgboost import XGBRegressorimport matplotlib.pyplot as pltimport shapfrom sklearn.ensemble import AdaBoostRegressorfrom sklearn.ensemble import BaggingRegressorfrom sklearn.ensemble import VotingRegressorfrom sklearn.ensemble import StackingRegressorfrom sklearn.linear_model import LinearRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.model_selection import KFold, cross_validatefrom sklearn.metrics import mean_squared_error, mean_absolute_errorfrom sklearn.inspection import PartialDependenceDisplay压缩包=数据+代码+参考文献
完整代码:
来源:小高科技观
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!