tutorial new index functions from empty data create python pandas scikit-learn cluster-analysis k-means

python - new - ¿Funcionará el objeto pandas dataframe con la agrupación skeansn kmeans?



pandas python (2)

conjunto de datos es el marco de datos pandas. Esto es sklearn.cluster.KMeans

km = KMeans(n_clusters = n_Clusters) km.fit(dataset) prediction = km.predict(dataset)

Así es como decido qué entidad pertenece a qué grupo:

for i in range(len(prediction)): cluster_fit_dict[dataset.index[i]] = prediction[i]

Así es como se ve el conjunto de datos:

A 1 2 3 4 5 6 B 2 3 4 5 6 7 C 1 4 2 7 8 1 ...

donde A, B, C son índices

¿Es esta la forma correcta de usar k-means?


Para saber si su dataset tiene un contenido adecuado, puede convertirlo explícitamente a una matriz numpy:

dataset_array = dataset.values print(dataset_array.dtype) print(dataset_array)

Si la matriz tiene un dtype numérico homogéneo (normalmente numpy.float64 ), entonces debería estar bien para scikit-learn 0.15.2 y posteriores. Es posible que aún deba normalizar los datos con sklearn.preprocessing.StandardScaler por ejemplo.

Si su marco de datos se escribe de forma heterogénea, el dtype de dtype de la matriz numpy correspondiente será un object que no es adecuado para scikit-learn. Debe extraer una representación numérica para todas las características relevantes (por ejemplo, extrayendo variables ficticias para características categóricas) y eliminar las columnas que no son adecuadas (por ejemplo, identificadores de muestra).


Suponiendo que todos los valores en el marco de datos son numéricos,

# Convert DataFrame to matrix mat = dataset.values # Using sklearn km = sklearn.cluster.KMeans(n_clusters=5) km.fit(mat) # Get cluster assignment labels labels = km.labels_ # Format results as a DataFrame results = pandas.DataFrame([dataset.index,labels]).T

Alternativamente, puedes probar KMeans ++ para Pandas .