由于本模型涉及到比较多的数据处理,代码较长,因此只能给出核心代码,具体实现请根据需要自行编写。

  1. 数据预处理

首先需要将所有csv文件读入内存,并将数据转换为numpy数组,以便后续处理。

import numpy as np
import pandas as pd

# 读入所有csv文件并保存到字典中
data_dict = {}
with open('abnormal_list.txt', 'r') as f:
    for line in f:
        filename = line.strip()
        data = pd.read_csv('Abnormal/' + filename, header=None).values.flatten()
        data_dict[filename] = data

# 合并所有数据为一个大矩阵
X = np.vstack(list(data_dict.values()))
  1. 模型训练

使用sklearn库中的KMeans模型进行训练,聚类数量为5。

from sklearn.cluster import KMeans

# KMeans模型训练
kmeans = KMeans(n_clusters=5, random_state=42)
y_pred = kmeans.fit_predict(X)
  1. 可视化结果

使用matplotlib库将聚类结果可视化,并保存到本地。

import matplotlib.pyplot as plt

# 可视化聚类结果
fig, ax = plt.subplots()
for i in range(5):
    mask = y_pred == i
    ax.scatter(X[mask, 0], X[mask, 1], label=f'Cluster {i+1}')
ax.legend()
plt.savefig('cluster_result.png')
plt.show()
  1. 存储每个csv文件的类别结果

将聚类结果按照每个csv文件的顺序进行存储。

# 存储每个csv文件的类别结果
with open('result.txt', 'w') as f:
    for filename, data in data_dict.items():
        idx = int(np.where((X == data).all(axis=1))[0])
        cluster = y_pred[idx]
        f.write(f'{filename},{cluster}\n')

完整代码如下


原文地址: https://www.cveoy.top/t/topic/ceb1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录