0

我想对包含对象名称、x_coordinate、y_coordinate 和相应温度的数据进行聚类。尝试根据位置和附近温度对附近物体进行聚类的均方聚类算法,即识别冷热区域。以下是代码和小样本数据。但它在默认设置下仅提供单个集群,但无法显示图形。我想知道以下代码可能有什么问题:

import numpy as np  
from mpl_toolkits.mplot3d import Axes3D  
import pandas as pd  
from sklearn.decomposition import PCA    
from sklearn.cluster import MeanShift, estimate_bandwidth  
import matplotlib.pyplot as plt  
from itertools import cycle  

data = pd.read_csv("data.csv")

centers = [[1, 1, 1], [0,0,0], [0,0,0]]  
X= data._get_numeric_data()  
bandwidth = estimate_bandwidth()  

ms = MeanShift()  
ms.fit(X)  
labels = ms.labels_  
cluster_centers = ms.cluster_centers_  

print labels  
print cluster_centers  

fig = plt.figure()  
ax = plt.axes(projection='3d')  
x = data['x_cordinate']  
y=data['y_cordinate']  
z=data['tpa']  
c=labels  
ax.scatter(x,y,z, c=c)  
plt.show()  

数据.csv:

name,x_cordinate,y_cordinate,temperature
Ctrs3,5189200,6859000,0.3998434286
Ctrs4,5173360,6812800,0.4779542857
Ctrs5,5660440,6812800,0.7044195918
Cstrs3,1935400,5929720,0
Cstrs4,1953880,5929720,0
Cstrs5,491320,2689120,0
Cltrs3 ,3436240,5884840,0.3998434286
Cltrs4,3296320,5884840,0.4779542857
Cltrs5,5426800,5725120,0.7044195918

4

1 回答 1

0

estimate_bandwidth 需要一个参数(您的数据)。这段代码能运行吗?

无论如何......当这种情况发生在我身上时,我给出的quantile参数值estimate_bandwidth比默认的 0.3 更小(并将该带宽估计值传递给 MeanShift 构造函数!)。

您可能还先验地知道良好的带宽,并且如果您这样做,最好使用它。

于 2016-12-30T19:55:43.223 回答