基于Python的RA - AF裂纹模式:区分拉伸与剪切裂纹及可视化
基于 Python 声发射 RA-AF 裂纹模式 1、区分拉伸裂纹(Tensile Crack)和剪切裂纹(Shear Crack) 2、可视化决策边界和支持向量

在材料科学的研究中,通过声发射信号分析来区分拉伸裂纹(Tensile Crack)和剪切裂纹(Shear Crack)是一项重要任务,而RA - AF参数分析是其中常用的手段。此外,可视化决策边界和支持向量能够帮助我们更直观地理解分析结果。接下来,咱们就用Python实现这一过程。
区分拉伸裂纹和剪切裂纹
首先,导入必要的库。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
我们假设已经收集到了一些声发射数据,并且提取出了RA(上升时间与幅值比)和AF(平均频率)参数,分别存储在radata和afdata数组中,同时对应的数据标签(0表示拉伸裂纹,1表示剪切裂纹)存储在labels数组中。
# 假设的数据
ra_data = np.array([0.1, 0.3, 0.2, 0.5, 0.4, 0.6])
af_data = np.array([100, 200, 150, 300, 250, 350])
labels = np.array([0, 0, 1, 1, 0, 1])
data = np.column_stack((ra_data, af_data))
这里我们将RA和AF数据组合成一个二维数组data,以便后续处理。

接着,我们使用支持向量机(SVM)来对数据进行分类,以此区分拉伸裂纹和剪切裂纹。
svm_model = SVC(kernel='linear')
svm_model.fit(data, labels)
上述代码中,我们初始化了一个线性核的SVM模型,并使用我们的RA - AF数据对其进行训练。经过训练的模型就可以用来预测新的数据点属于拉伸裂纹还是剪切裂纹。
可视化决策边界和支持向量
完成分类模型训练后,我们来可视化决策边界和支持向量。
h =.02 # 网格步长
x_min, x_max = data[:, 0].min() - 1, data[:, 0].max() + 1
y_min, y_max = data[:, 1].min() - 1, data[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = svm_model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)
plt.scatter(data[:, 0], data[:, 1], c=labels, cmap=plt.cm.coolwarm)
# 绘制支持向量
sv = svm_model.support_vectors_
plt.scatter(sv[:, 0], sv[:, 1], s=100, facecolors='none', edgecolors='k')
plt.xlabel('RA Parameter')
plt.ylabel('AF Parameter')
plt.title('RA - AF Crack Mode Classification with Decision Boundary')
plt.show()
在这段代码中,我们首先定义了一个小的网格步长h,用于创建一个网格覆盖数据所在的二维空间。然后通过np.meshgrid生成网格坐标xx和yy。接着,我们使用训练好的SVM模型对网格上的每个点进行预测,预测结果存储在Z中。

基于 Python 声发射 RA-AF 裂纹模式 1、区分拉伸裂纹(Tensile Crack)和剪切裂纹(Shear Crack) 2、可视化决策边界和支持向量

plt.contourf函数用于绘制决策边界,不同的颜色区域代表不同的预测类别。plt.scatter函数先绘制原始的数据点,颜色根据其所属的裂纹类别区分。之后再次使用plt.scatter绘制支持向量,支持向量是那些对决策边界有重要影响的数据点,通过设置其样式可以明显区分出来。最后,我们添加坐标轴标签和标题,展示出可视化的图形。
通过以上Python代码和步骤,我们实现了基于RA - AF参数区分拉伸裂纹和剪切裂纹,并对决策边界和支持向量进行了可视化,为进一步理解材料的裂纹模式提供了直观有效的工具。
更多推荐


所有评论(0)