алгоритм среднего сдвига для кластеризации пользовательских данных, состоящих из 3-4 объектов

Я хочу сделать кластер данных, который состоит из имен объектов, 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 :

имя, x_cordinate, y_cordinate, температура
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








1 ответ

  1. estimate_bandwidth нужен аргумент (ваши данные). Выполняется ли этот код?

    В любом случае… когда это происходит со мной, я даю меньшие значения quantileпараметраestimate_bandwidth, чем по умолчанию 0.3 (и передаю эту оценку пропускной способности конструктору MeanShift!).

    Вы также можете знать хорошую пропускную способность a-priori и лучше всего использовать ее, если вы это делаете.