Python中的SciPy层次字符串聚类?

2024-09-30 01:30:32 发布

您现在位置:Python中文网/ 问答频道 /正文

在我之前的一个堆栈溢出问题(here)中,有人建议我使用层次聚类来根据Hamming距离对列表中包含的字符串进行分组。我发现了其他几位对pythonsipy包有疑问的海报,特别是链接函数(here和{a3})也有类似的问题。在

如果我对SciPy链接函数的理解是正确的,那么我需要传入一个数组,并根据Hamming距离指定到集群的链接。但是,当我尝试在多个字符串的列表中实现此操作时:

import scipy.cluster.hierarchy as sch
X = [[i] for i in ['apples','applez','appelz','apppel','orange','oranze','oranqg','orangs']]
Z = sch.linkage(X,method='complete',metric='Hamming')

我收到以下错误:

^{pr2}$

这显然表明链接的输入必须是一个数字数组,而不是字符串。在

有没有一种方法可以将字符串与SciPy的链接一起使用,还是需要提供一个具有链接的Hamming距离函数,以便它能够将字符串聚集起来?在


Tags: 函数字符串距离列表here堆栈链接聚类
1条回答
网友
1楼 · 发布于 2024-09-30 01:30:32

ValueError: could not convert string to float: apples

您需要对类别列为字符串的类别变量进行标签编码(在python中,这些类别也可以是字符串类型的数字)。在

在python中,我们有:from sklearn.preprocessing import LabelEncoder.

查看文档并实施它。它将分别为每个类别将字符串类别标记为一个整数。在

示例:

CODE: le.transform(["tokyo", "tokyo", "paris"])
OUTPUT: array([2, 2, 1]...)

然后可以将其用于分层/聚集聚类。 也可以检查所有变量是否都是数值形式,例如int或float。在

祝你今天愉快!在

相关问题 更多 >

    热门问题