/:'str'和'float'不支持的操作数类型

时间:2013-05-13 20:57:01

标签: python-2.7 bioinformatics scikit-learn

我在这里理解这个错误信息时遇到了一些麻烦......

我最近在我的一些数据上使用了sklearn机器学习工具。我已经尝试使用以下代码输出我的数据的Silhouette系数:

distmat = []
for row in distmat_csv:
    distmat.append(row[1:])
in_distmat.close()

distmat_array = np.array(distmat, dtype=object)
print distmat_array


out_metricsfile = open('Influenza A All Subtypes Human Strains %s in %s Clustering Metrics.txt' % (name1, name2), 'w+') 
out_metricsfile.write('%s in %s Clustering Metrics \n' % (name1, name2))
out_metricsfile.write('Estimated number of clusters: %d \n' % n_clusters)
out_metricsfile.write("Silhouette Coefficient: %0.3f \n"
      % metrics.silhouette_score(distmat_array, labels, metric='precomputed'))
out_metricsfile.close()

distmat数组只是我从CSV文件中读取的一系列数字。它看起来像这样:

[[0.000000 0.614841 0.613074 ..., 0.007067 0.007067 0.010601]
 [0.614841 0.000000 0.012367 ..., 0.616608 0.613074 0.611307]
 [0.613074 0.012367 0.000000 ..., 0.614841 0.611307 0.609541]
 ..., 
 [0.007067 0.616608 0.614841 ..., 0.000000 0.010601 0.014134]
 [0.007067 0.613074 0.611307 ..., 0.010601 0.000000 0.010601]
 [0.010601 0.611307 0.609541 ..., 0.014134 0.010601 0.000000]]

返回的错误消息如下所示:

Traceback (most recent call last):
  File "script9-perform-affinity-propagation-and-display.py", line 92, in <module>
    % metrics.silhouette_score(distmat_array, labels, metric='precomputed'))
  File "/Library/Python/2.7/site-packages/scikit_learn-0.13.1-py2.7-macosx-10.8-intel.egg/sklearn/metrics/cluster/unsupervised.py", line 84, in silhouette_score
    return np.mean(silhouette_samples(X, labels, metric=metric, **kwds))
  File "/Library/Python/2.7/site-packages/scikit_learn-0.13.1-py2.7-macosx-10.8-intel.egg/sklearn/metrics/cluster/unsupervised.py", line 146, in silhouette_samples
    for i in range(n)])
  File "/Library/Python/2.7/site-packages/scikit_learn-0.13.1-py2.7-macosx-10.8-intel.egg/sklearn/metrics/cluster/unsupervised.py", line 176, in _intra_cluster_distance
    a = np.mean(distances_row[mask])
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/fromnumeric.py", line 2374, in mean
    return mean(axis, dtype, out)
TypeError: unsupported operand type(s) for /: 'str' and 'float'

我坚持理解错误信息。我怎么知道我哪里出错了?如果有人善意的话,我在哪里出错?

1 个答案:

答案 0 :(得分:0)

好的......所以我确实找出了问题所在。通过将“dtype”从“object”更改为“float”,问题就解决了......