这里给出一个基于K-Means算法的无监督分类模型的实现代码,实现过程中使用了Python语言及其常用的科学计算库numpy、pandas、matplotlib和sklearn,代码中的输入文件为一个名为“filelist.txt”的文本文件,其中包含50个csv文件的文件名,每个csv文件中只有一列数据,共有180行,全部都为浮点数。

代码如下:

# 导入所需的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 读取输入文件
with open("filelist.txt") as f:
    filenames = f.read().splitlines()

# 定义一个空的DataFrame,用于存储所有csv文件中的数据
data = pd.DataFrame()

# 读取每个csv文件,将其数据添加到data中
for filename in filenames:
    df = pd.read_csv(filename)
    data = pd.concat([data, df], axis=1)

# 对data进行K-Means聚类,设定聚类数为3
kmeans = KMeans(n_clusters=3)
kmeans.fit(data)

# 将聚类结果可视化并保存
colors = ["red", "green", "blue"]
for i in range(len(kmeans.labels_)):
    plt.scatter(i, 0, color=colors[kmeans.labels_[i]])
plt.savefig("result.png")

# 预测一个csv文件的类别,并将其保存为csv格式
df = pd.read_csv(filenames[0])
label = kmeans.predict(df)
df["label"] = label
df.to_csv("predicted.csv", index=False)

在上述代码中,首先使用“with open”语句读取输入文件“filelist.txt”,得到一个包含50个csv文件的文件名列表。然后定义一个空的DataFrame“data”,用于存储所有csv文件中的数据。接着使用“pd.read_csv”函数读取每个csv文件,并使用“pd.concat”函数将其数据添加到“data”中。接下来使用sklearn中的KMeans函数对“data”进行聚类,设定聚类数为3,并使用“fit”方法进行聚类。然后使用matplotlib中的“plt.scatter”函数将聚类结果可视化,并使用“plt.savefig”函数将可视化结果保存为一个png文件。最后读取一个csv文件并使用“kmeans.predict”方法预测它的类别,然后将其添加为一个新的列并使用“to_csv”方法将其保存为csv格式。

需要注意的是,上述代码中的聚类数、可视化方法和预测方法都是可以根据实际情况进行修改和调整的。


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

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