Ich habe folgende Daten:Python: Wie man Anfangsschwerpunkte auf spezifische Datenpunkte in k-Mitteln setzt?
import pandas as pd
import random
import matplotlib.pyplot as plt
df = pd.DataFrame()
df['x'] = [3, 2, 4, 3, 4, 6, 8, 7, 8, 9]
df['y'] = [3, 2, 3, 4, 5, 6, 5, 4, 4, 3]
df['val'] = [1, 10, 1, 1, 1, 8, 1, 1, 1, 1]
k = 2
centroids = {i + 1: [np.random.randint(0, 10), np.random.randint(0, 10)] for i in range(k)}
plt.scatter(df['x'], df['y'], color='blue')
for i in centroids.keys():
plt.scatter(*centroids[i], color='red', marker='^')
plt.show()
Ich möchte mit dem höchsten Wert der anfänglichen Zentroide auf Datenpunkte setzen. In diesem Fall sollten die Schwerpunkte auf Datenpunkten mit den Koordinaten (2, 2) und (6, 6) liegen.
x y val
0 3 3 1
1 2 2 10
2 4 3 1
3 3 4 1
4 4 5 1
5 6 6 8
6 8 5 1
7 7 4 1
8 8 4 1
9 9 3 1
Sie verwenden der 'KMeans' Schätzer von scikit lernen? Wenn dies der Fall ist, können Sie ein Array übergeben, das die Anfangszentren enthält. Siehe den Parameter 'init' [hier] (http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html). Oder fragen Sie sich, wie dieses Array überhaupt aufgebaut wird? –
@MarkDickinson Ja, ich frage, wie man Python-Code schreibt, damit ich die Zentroide auf den Knoten mit dem höchsten Wert platziere, weil ich hier nicht scikit learn benutzt habe. Ich habe meine eigenen Codes für Kmeans geschrieben. – arizamoona