执行 kmedoids python 模块
Executing a kmedoids python module
我正在尝试 运行 此 github page 上可用的 kmedoids
集群实施。
提供的 minimal working example 非常简单,但我无法在不引发错误的情况下使用 kMedoids()
函数执行第一行:
from sklearn.metrics.pairwise import pairwise_distances
import numpy as np
import kmedoids
# 3 points in dataset
data = np.array([[1,1],
[2,2],
[10,10]])
# distance matrix
D = pairwise_distances(data, metric='euclidean')
# split into 2 clusters
M, C = kmedoids.kMedoids(D, 2) # <-- THIS RAISES AN ERROR
print('medoids:')
for point_idx in M:
print( data[point_idx] )
print('')
print('clustering result:')
for label in C:
for point_idx in C[label]:
print('label {0}: {1}'.format(label, data[point_idx]))
错误是:
Traceback (most recent call last):
File "/usr/lib/python3.5/code.py", line 91, in runcode
exec(code, self.locals)
File "", line 1, in
File "", line 9, in kMedoids
File "mtrand.pyx", line 4832, in mtrand.RandomState.shuffle
File "mtrand.pyx", line 4835, in mtrand.RandomState.shuffle
TypeError: 'range' object does not support item assignment
我在 Eclipse PyDev 中为 Python 3.5 设置了如下示例:
- 使用
pip3 install
(numpy、scipy 和 scikit-learn)安装了所有模块
- 在与
example.py
相同的目录中添加了 kmedoids.py
文件
最近有人用过这个功能吗?我的 Python (3.5) 版本会导致此错误吗?
发现了问题,确实与 kMedoids()
code 相关,最初并非针对 Python 3.
要使其适用于 Python 3.5,请编辑以下与 range()
函数相关的行(参见相关 answer):
index_shuf = range(len(rs)) --> index_shuf = list(range(len(rs)))
和
for t in xrange(tmax): --> for t in range(tmax):
我正在尝试 运行 此 github page 上可用的 kmedoids
集群实施。
提供的 minimal working example 非常简单,但我无法在不引发错误的情况下使用 kMedoids()
函数执行第一行:
from sklearn.metrics.pairwise import pairwise_distances
import numpy as np
import kmedoids
# 3 points in dataset
data = np.array([[1,1],
[2,2],
[10,10]])
# distance matrix
D = pairwise_distances(data, metric='euclidean')
# split into 2 clusters
M, C = kmedoids.kMedoids(D, 2) # <-- THIS RAISES AN ERROR
print('medoids:')
for point_idx in M:
print( data[point_idx] )
print('')
print('clustering result:')
for label in C:
for point_idx in C[label]:
print('label {0}: {1}'.format(label, data[point_idx]))
错误是:
Traceback (most recent call last):
File "/usr/lib/python3.5/code.py", line 91, in runcode
exec(code, self.locals)
File "", line 1, in
File "", line 9, in kMedoids
File "mtrand.pyx", line 4832, in mtrand.RandomState.shuffle
File "mtrand.pyx", line 4835, in mtrand.RandomState.shuffle
TypeError: 'range' object does not support item assignment
我在 Eclipse PyDev 中为 Python 3.5 设置了如下示例:
- 使用
pip3 install
(numpy、scipy 和 scikit-learn)安装了所有模块 - 在与
example.py
相同的目录中添加了
kmedoids.py
文件
最近有人用过这个功能吗?我的 Python (3.5) 版本会导致此错误吗?
发现了问题,确实与 kMedoids()
code 相关,最初并非针对 Python 3.
要使其适用于 Python 3.5,请编辑以下与 range()
函数相关的行(参见相关 answer):
index_shuf = range(len(rs)) --> index_shuf = list(range(len(rs)))
和
for t in xrange(tmax): --> for t in range(tmax):