¿El objeto pandas dataframe funcionará con sklearn kmeans clustering?
El conjunto de datos es pandas dataframe. Este 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?
2 answers
Para saber si su dataframe dataset
tiene contenido adecuado, puede convertir explícitamente a una matriz numpy:
dataset_array = dataset.values
print(dataset_array.dtype)
print(dataset_array)
Si el array tiene un dtype
numérico homogéneo (típicamente numpy.float64
) entonces debería estar bien para scikit-learn 0.15.2 y posteriores. Es posible que aún necesite normalizar los datos con sklearn.preprocessing.StandardScaler
, por ejemplo.
Si su marco de datos se escribe de forma heterogénea, el dtype
del array numpy correspondiente será object
que no es adecuado para scikit-learn. Necesitas extraer un representación numérica de todas las entidades relevantes (por ejemplo, extrayendo variables ficticias para entidades categóricas) y eliminar las columnas que no son entidades adecuadas (por ejemplo, identificadores de muestra).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-19 08:47:42
Asumiendo que todos los valores en el dataframe 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-26 17:02:36