由于您未指定编程语言和具体的数据集,因此我们将提供一个Python实现的k均值聚类模型,数据集假设为一个由869个csv文件组成的目录,每个csv文件包含361个心电信号数据。

  1. 导入必要的库和模块
import os
import csv
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
  1. 定义数据加载函数
def load_data(file_path):
    """
    从CSV文件中加载数据
    :param file_path: CSV文件路径
    :return: 二维数组,每行代表一个样本,每列代表一个特征
    """
    data = []
    with open(file_path, 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            data.append(float(row[0]))
    return np.array(data).reshape(-1, 1)
  1. 加载数据集
data_dir = 'Abnormal'
file_list = os.listdir(data_dir)
X = np.zeros((len(file_list), 361))
for i, file_name in enumerate(file_list):
    file_path = os.path.join(data_dir, file_name)
    X[i] = load_data(file_path).T
  1. 训练模型
kmeans = KMeans(n_clusters=5, random_state=0).fit(X)
  1. 可视化聚类结果
colors = ['r', 'g', 'b', 'c', 'm']
markers = ['o', 's', 'D', '^', 'x']

fig, ax = plt.subplots()

for i in range(X.shape[0]):
    cluster_idx = kmeans.labels_[i]
    ax.scatter(i, X[i], c=colors[cluster_idx], marker=markers[cluster_idx])

ax.set_xlabel('Sample Index')
ax.set_ylabel('Heart Signal')
ax.set_title('K-Means Clustering')

plt.savefig('clustering_result.png')
plt.show()
  1. 存储聚类结果
cluster_result = kmeans.labels_
with open('cluster_result.txt', 'w') as f:
    for i in cluster_result:
        f.write(str(i) + '\n')

完整代码如下:

import os
import csv
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

def load_data(file_path):
    """
    从CSV文件中加载数据
    :param file_path: CSV文件路径
    :return: 二维数组,每行代表一个样本,每列代表一个特征
    """
    data = []
    with open(file_path, 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            data.append(float(row[0]))
    return np.array(data).reshape(-1, 1)

data_dir = 'Abnormal'
file_list = os.listdir(data_dir)
X = np.zeros((len(file_list), 361))
for i, file_name in enumerate(file_list):
    file_path = os.path.join(data_dir, file_name)
    X[i] = load_data(file_path).T

kmeans = KMeans(n_clusters=5, random_state=0).fit(X)

colors = ['r', 'g', 'b', 'c', 'm']
markers = ['o', 's', 'D', '^', 'x']

fig, ax = plt.subplots()

for i in range(X.shape[0]):
    cluster_idx = kmeans.labels_[i]
    ax.scatter(i, X[i], c=colors[cluster_idx], marker=markers[cluster_idx])

ax.set_xlabel('Sample Index')
ax.set_ylabel('Heart Signal')
ax.set_title('K-Means Clustering')

plt.savefig('clustering_result.png')
plt.show()

cluster_result = kmeans.labels_
with open('cluster_result.txt', 'w') as f:
    for i in cluster_result:
        f.write(str(i) + '\n')

聚类结果可视化图和聚类结果txt文件将分别保存在当前目录下的clustering_result.png和cluster_result.txt文件中

给出一个k均值无监督分类模型的实现要求输入数据是一个txt文件该txt中包含869个csv文件名每一行为一个csv名字csv文件保存在当前目录下的Abnormal目录中每个csv文件只有一列数据每列数据有361行数据格式是浮点数类型为心电信号每个csv整体会被分为一个类别要求代码给出聚类结果聚类数量为5给出聚类可视化结果并保存在本地可视化图每个类别用不同的形状标记需要好看将可视化结果保存在本地聚类

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

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