如何打印字符串以替换无监督学习中的标签值

问题描述 投票:0回答:1

我正在使用sklearn.cluster.KMeans对数据进行分类。通过打印我的标签,我可以看到KMeans正在工作,但是,标签打印为数值(0,1或2)。

在此之后,我想将标签重新打印为字符串,例如“narrow”,“wide”和“normal”。

这是我尝试使用if-elif语句:

csv= "data.csv"
data = pd.read_csv(csv, header = None, low_memory = False)
model = KMeans(n_clusters = 3, random_state = 1)
model.fit(data)
labels = model.predict(data)
print(labels)
for category in lables:
    if category == 0:
        print('narrow')
    elif category == 1:
        print('wide')
    elif category == 2:
        print('normal')
    else:
        print('Unlabeled Data')
np.savetxt("category.csv", category, delimiter = ',')
python python-3.x label k-means unsupervised-learning
1个回答
1
投票

print只是将输出写入stdout,它不会更改基础数据。输出是丢失的。当我想要实际修改数据时,您在问题中多次使用“打印”。一种方法是使用numpy.select

import numpy as np

labels = np.array([0, 1, 1, 2, 0, 1, 2, 0]) # Fake data

# Now use select to replace the numerical values with categories
replacements = ['narrow', 'wide', 'normal']
new_labels = np.select([labels == 0, labels == 1, labels == 2],
                       replacements)

我不完全确定numpy可以给出什么优化,因为我没有为输出数组指定一个dtype(就像我可能有一个累加器),我们将从数字类型转换为字符串类型。这可能只是作为一个python循环而退出,并且这种语法没有像处理常规列表那样受益,并且通过迭代将整数映射到字典中的类别。语法肯定不适合您在问题中使用的更多类别。

© www.soinside.com 2019 - 2024. All rights reserved.