Алгоритм среднего сдвига для кластеризации пользовательских данных, состоящих из 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:

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


person Harshad    schedule 30.12.2016    source источник


Ответы (1)


Assessment_bandwidth нужен аргумент (ваши данные). Этот код работает?

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

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

person welch    schedule 30.12.2016
comment
да, я также пробовал со значениями по умолчанию и меняя значение на 0.5 , он работал примерно 20 часов и дал только один кластер - person Harshad; 02.01.2017
comment
как насчет публикации кода и данных, которые вы на самом деле используете? приведенный выше код не запускается из-за синтаксической ошибки, не запускается с исправленной синтаксической ошибкой, потому что оценка_полосы пропускания работает в пакетах по 500 элементов (вы предоставили 9) и не запускается после предоставления вероятной пропускной способности непосредственно конструктору MeanShift (1.5e6) из-за неправильно названного столбца в отображаемой части кода. У меня кончился энтузиазм, или я бы указал, что ваши данные плохо масштабируются (масштабы x и y против временных шкал), чтобы их можно было использовать непосредственно в методе расстояния, таком как среднее смещение или kmeans - person welch; 05.01.2017
comment
Что касается файла данных, он слишком велик, чтобы поделиться им, если вы предоставите свой адрес электронной почты или идентификатор облачного хранилища или любым другим способом, я могу поделиться им. что касается kmeans, данные могут быть сгруппированы с n числом кластеров, но я также пытаюсь найти точную разницу кластеров с помощью алгоритма среднего сдвига, kmean и плотности - person Harshad; 10.01.2017