Python中的SciPy分层字符串集群?

Python中的SciPy分层字符串集群?,python,string,scipy,hierarchical-clustering,Python,String,Scipy,Hierarchical Clustering,在我之前的一个堆栈溢出问题()中,有人建议我使用层次聚类来根据汉明距离对列表中包含的字符串进行分组。我还发现了其他几张海报,他们对Python SciPy软件包有疑问,特别是链接函数(和),他们与我有类似的问题 如果我对SciPy的链接函数的理解是正确的,我需要传入一个数组,并根据汉明距离指定到集群的链接。但是,当我尝试在几个字符串的列表上实现此功能时: import scipy.cluster.hierarchy as sch X = [[i] for i in ['apples','appl

在我之前的一个堆栈溢出问题()中,有人建议我使用层次聚类来根据汉明距离对列表中包含的字符串进行分组。我还发现了其他几张海报,他们对Python SciPy软件包有疑问,特别是链接函数(和),他们与我有类似的问题

如果我对SciPy的链接函数的理解是正确的,我需要传入一个数组,并根据汉明距离指定到集群的链接。但是,当我尝试在几个字符串的列表上实现此功能时:

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')
我收到以下错误:

Traceback (most recent call last):
File "C:/Users/nguyenthoh/Desktop/UMI_grouping/scratch_script.py", line 15, in <module>
Z = sch.linkage(X,method='complete',metric='Hamming')
File "C:\Users\User\AppData\Roaming\Python\Python27\site-packages\scipy\cluster\hierarchy.py", line 694, in linkage
y = _convert_to_double(np.asarray(y, order='c'))
File "C:\Users\User\AppData\Roaming\Python\Python27\site-packages\scipy\cluster\hierarchy.py", line 1216, in _convert_to_double
X = X.astype(np.double)
ValueError: could not convert string to float: apples
回溯(最近一次呼叫最后一次):
文件“C:/Users/nguyenthoh/Desktop/UMI\u grouping/scratch\u script.py”,第15行,在
Z=sch.linkage(X,方法='complete',度量='Hamming')
链接中第694行的文件“C:\Users\User\AppData\Roaming\Python27\site packages\scipy\cluster\hierarchy.py”
y=\u将\u转换为双精度(np.asarray(y,order='c'))
文件“C:\Users\User\AppData\Roaming\Python27\site packages\scipy\cluster\hierarchy.py”,第1216行,在\u convert\u to \u double中
X=X.aType(np.double)
ValueError:无法将字符串转换为float:apples
这显然表明链接的输入需要是一个数字数组,而不是字符串

有没有一种方法可以将字符串与SciPy的链接一起使用,或者我需要提供一个带有链接的汉明距离函数,以便它可以对字符串进行集群

ValueError:无法将字符串转换为float:apples

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

在python中,我们有:
来自sklearn.preprocessing import LabelEncoder。

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

例如:

代码:le.transform([“东京”、“东京”、“巴黎])
输出:数组([2,2,1]…)

然后,您可以使用它进行分层/聚集聚类。 也可以检查所有变量是否为数值形式,如int或float

祝你今天愉快

ValueError:无法将字符串转换为float:apples

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

在python中,我们有:
来自sklearn.preprocessing import LabelEncoder。

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

例如:

代码:le.transform([“东京”、“东京”、“巴黎])
输出:数组([2,2,1]…)

然后,您可以使用它进行分层/聚集聚类。 也可以检查所有变量是否为数值形式,如int或float

祝你今天愉快

只需按计划行事。最重要的是numpy如何对待
u!=v
。因此,在不评估任何任务或方法的情况下:(0)检查验证函数(可能创建numpy数组)(1)检查numpy对
u做了什么!=v
当u或v是对象数组(来自字符串)时。(3) 不要使用对象数组。简单的方法:只需将文本转换为ascii值(4)记住:#u=#v只需根据和进行操作。最重要的是numpy如何对待
u!=v
。因此,在不评估任何任务或方法的情况下:(0)检查验证函数(可能创建numpy数组)(1)检查numpy对
u做了什么!=v
当u或v是对象数组(来自字符串)时。(3) 不要使用对象数组。简单的方法:只需将文本转换为ascii值(4)记住:#u=#v