Я хочу использовать Kmeans для кластеризации кадра данных с подготовленным набором данных по количеству значений. Тогда я хочу построить это.
from sklearn.cluster import KMeans
frq = pd.DataFrame.from_dict(presult["ClientIP"].value_counts().to_dict(), orient="index").reset_index()
frq.columns = ['IP', 'Frq']
print(frq.columns)
print(frq)
Index(['IP', 'Frq'], dtype='object')
IP Frq
0 2X.1XX.X.X 1158
1 X:598:X:db8a:X:X:e9aa 408
2 18.X.X.109 405
3 217.X.X.28 394
4 92.X.X.119 360
.. ... ...
760 216.10.X.X 1
761 185.152.X.X 1
Из предварительно настроенного набора данных я предполагаю, что могу позвонить:
kmeans_model = KMeans(n_clusters = 3, random_state = 1).fit(frq)
Это не работает, потому что мой столбец IP является строкой. Однако мне нужно знать, какой IP входит в какой кластер.
Я бы добавил столбец для каждого IP-адреса, чтобы увидеть, к какому кластеру он принадлежит:
frq['kmean'] = kmeans_model.labels_
print(frq['kmean'].value_counts())
Кто-нибудь знает, как убедить sklearn
в кластере, основываясь на количестве значений внутри dataframe