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 .