0

Je veux regrouper les données qui consistent en noms d'objet, coordonnée x, coordonnée y et température correspondante. Essayer un algorithme de regroupement de carrés moyens pour grouper l'objet proche en fonction de l'emplacement et de la température proche, c'est-à-dire identifier les zones chaudes et froides. Voici le code et les petites données d'échantillon. mais il ne donne qu'un seul cluster par défaut mais ne peut pas afficher de graphique. Je voudrais savoir ce qui pourrait être erroné dans le code suivant:Algorithme de décalage moyen pour la mise en grappe de données définies par l'utilisateur comprenant 3-4 entités

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() 

data.csv:

nom

, x_cordinate, y_cordinate, température
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

Répondre

0

estimate_bandwidth a besoin d'un argument (vos données). Est-ce que ce code fonctionne?

De toute façon ... quand cela m'arrive, je donne des valeurs plus petites du paramètre quantile pour estimate_bandwidth que la valeur par défaut 0.3 (et passer cette estimation de bande passante au constructeur de MeanShift!).

Vous pouvez également connaître une bonne bande passante a priori et vous pouvez le faire si vous le faites.

+0

Oui, j'ai également essayé avec les valeurs par défaut et en variant la valeur à 0,5, il a fonctionné pendant environ 20 heures et n'a donné qu'un seul groupe – Harshad

+0

comment publier le code et les données que vous utilisez actuellement? le code ci-dessus ne s'exécute pas en raison d'une erreur de syntaxe, ne fonctionne pas avec l'erreur de syntaxe fixe car estimation_bandwidth fonctionne par lots de 500 éléments (9) et ne fonctionne pas après avoir fourni une bande passante plausible directement au constructeur MeanShift (1.5e6) en raison d'une colonne mal nommée dans la partie d'affichage du code. Je suis à court d'enthousiasme ou je tiens à préciser que vos données sont mal échelonnées (x et y vs échelles de température) à utiliser directement dans une méthode à distance comme meanshift ou kmeans – welch

+0

en ce qui concerne le fichier de données est trop grand partager, si vous fournissez votre adresse e-mail ou référentiel cloud ou par tout autre moyen que je peux partager. en ce qui concerne les données de kmeans peuvent être regroupées avec n nombre de grappes mais j'essaie également de trouver la différence exacte des grappes à l'aide de l'algorithme de décalage moyen, kmean et de densité – Harshad