本教程演示了使用 Python 的 KMeans 算法对 50 个 CSV 文件的浮点数数据进行无监督分类,并展示了分类结果的可视化和保存。代码易于理解,并提供了详细的注释说明。

由于没有给出具体的数据集,我们这里以 sklearn 自带的 iris 数据集为例进行演示。

首先我们需要解析 txt 文件,获取 50 个 csv 文件的文件名,然后依次读取每个 csv 文件的数据,将所有数据合并成一个矩阵,最后进行聚类。

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

# 解析 txt 文件获取 csv 文件名
with open('file_list.txt', 'r') as f:
    file_list = f.read().splitlines()

# 读取每个 csv 文件的数据
data = np.empty((0, 180))
for file_name in file_list:
    file_path = os.path.join('data', file_name)
    df = pd.read_csv(file_path, header=None)
    data = np.vstack([data, df.values])

# 聚类
model = KMeans(n_clusters=7)
labels = model.fit_predict(data)

# 可视化
fig, ax = plt.subplots()
scatter = ax.scatter(data[:, 0], data[:, 1], c=labels)
legend = ax.legend(*scatter.legend_elements(), loc='upper right', title='Clusters')
ax.add_artist(legend)
plt.savefig('result.png')
plt.show()

# 将每个 csv 文件的数据的分类结果保存到 csv 文件中
for i, file_name in enumerate(file_list):
    file_path = os.path.join('data', file_name)
    df = pd.read_csv(file_path, header=None)
    df['label'] = labels[i * 180: (i + 1) * 180]
    df.to_csv(os.path.join('result', file_name), index=False)

以上代码中,我们使用了 sklearn 中的 KMeans 算法进行聚类,将数据聚成 7 类。然后使用 matplotlib 进行可视化,将聚类结果展示在二维平面上。最后将每个 csv 文件的数据的分类结果保存到本地文件夹中。注意,这里的分类结果是每个数据点所属的类别,而不是每个 csv 文件所属的类别。因为在无监督学习中,我们并不知道每个 csv 文件应该属于哪个类别,所以只能对每个数据点进行聚类,并将分类结果保存到对应的 csv 文件中。

Python 无监督分类模型实现:基于 KMeans 的 CSV 数据聚类和可视化

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

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