【发布时间】:2016-07-02 08:36:50
【问题描述】:
这是我的代码,我正在尝试为下面坐标矩阵中的点列表运行此 DBSCAN 算法。矩阵如下:
[[43.285569, 5.350558],
[48.728766, 2.369763],
[48.82206, 2.325197],
[48.82206, 2.325197],
....................
[48.822879, 2.325046],
[48.822943, 2.325099],
[48.830726, 2.331268]]
但是,当我运行代码时,出现以下错误:
"UnicodeWarning: Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
if self._markerfacecolor != fc:"
谁能说明为什么会发生这种情况?谢谢!
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler
import numpy as np
import numpy
import csv
def plot_cluster(cluster, sample_matrix):
import matplotlib.pyplot as plt
import numpy as np
f = lambda row: [float(x) for x in row]
sample_matrix = map(f,sample_matrix)
print sample_matrix
sample_matrix = StandardScaler().fit_transform(sample_matrix)
core_samples_mask = np.zeros_like(cluster.labels_, dtype=bool)
core_samples_mask[cluster.core_sample_indices_] = True
labels = cluster.labels_
# Black removed and is used for noise instead.
unique_labels = set(labels)
colors = plt.cm.Spectral(np.linspace(0, 1, len(unique_labels)))
for k, col in zip(unique_labels, colors):
if k == -1:
# Black used for noise.
col = 'k'
class_member_mask = (labels == k) # generator comprehension
# X is your data matrix
X = np.array(sample_matrix)
xy = X[class_member_mask & core_samples_mask]
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
markeredgecolor='k', markersize=14)
xy = X[class_member_mask & ~core_samples_mask]
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
markeredgecolor='k', markersize=6)
plt.ylim([0,10])
plt.xlim([0,10])
# plt.title('Estimated number of clusters: %d' % n_clusters_)
plt.savefig('cluster.png')
dbscan_object = DBSCAN(3.0,4)
input = np.genfromtxt(open("dataset_import_noaddress.csv","rb"),delimiter=",", skip_header=1)
coordinates = np.delete(input, [0,1], 1)
result = dbscan_object.fit(coordinates)
print result.labels_
print 'plotting '
plot_cluster(result, coordinates)
【问题讨论】:
-
它告诉你你没有比较 unicode 对象。
-
这不是错误,而是警告。
标签: python matplotlib unicode scikit-learn