Как применить кластер K-средних для поселка в одном фрейме данных, как автоматически определить количество кластеров для поселка - PullRequest
1 голос
/ 17 февраля 2020

Я хочу определить количество кластеров на основе данных по деревням, т. Е. Данных о деревне1 отдельно, данных о деревне2 отдельно ... данных о деревне n отдельно ...

Я знаю, как определить количество кластеров, используя k- средства на одну деревню (единичные данные). Но сейчас у меня 500 деревень, и в каждой деревне всего 50000 строк.

поэтому я хочу применить набор данных как одну деревню - один кадр данных ... и применить кластер k-средних для определения номера кластера, необходимого для каждой деревни отдельно

Есть ли динамика c способ сделать это с помощью функции или т. Д ..?

>>> import matplotlib.pyplot as plt
>>> clustNos = [2,3,4,5,6,7,8,9,10]
>>> Inertia = []
>>> from sklearn.cluster import KMeans
>>> for i in clustNos :
    model = KMeans(n_clusters=i)
    model.fit(df)
    Inertia.append(model.inertia_)



>>> plt.plot(clustNos, Inertia, '-o')
>>> plt.title("Scree Plot")
>>> plt.xlabel('Number of clusters, k')
>>> plt.ylabel('Inertia')
>>> plt.xticks(clustNos)
>>> plt.show()
>>> model = KMeans(n_clusters=4)
>>> model.fit(df)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
       n_clusters=4, n_init=10, n_jobs=None, precompute_distances='auto',
       random_state=None, tol=0.0001, verbose=0)
>>> labels = model.predict(df)
>>> clusterID = pd.DataFrame(labels)
>>> clusteredData = pd.concat([df,clusterID],axis=1)
>>> clusteredData.rename(columns={0:'Group'})

enter image description here

...