Синтаксис Python для K-средних, когда записи представлены столбцом Cnt (в совокупности) - PullRequest
2 голосов
/ 19 апреля 2019

Попытка выполнить K-Means в Python, используя агрегированные файлы данных.Например, вместо фрейма данных с 3 записями, представленными 3 строками, одна строка будет представлять все 3 со столбцом типа cnt (с произвольным именем), представляющим эти 3 уникальных экземпляра с номером 3. В нем ниже.

Нижепредставляет собой набор базового начального кода, который НЕ использует агрегированное представление строк.Пожалуйста, дайте мне знать, если вы хотите, чтобы я тоже опубликовал .csv, но он должен быть довольно простым:

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
import matplotlib.pyplot as plt

data = pd.read_csv('../Data/wholesale_data.csv')
data.head()

categorical_features = ['Channel', 'Region']
continuous_features = ['Fresh', 'Milk', 'Grocery', 'Frozen', 
'Detergents_Paper', 'Delicassen']

for col in categorical_features: #for each categorical col
    dummies = pd.get_dummies(data[col], prefix=col) #one-hot-encoding
    data = pd.concat([data, dummies], axis=1) #append to data
    data.drop(col, axis=1, inplace=True) #drop orig column
data.head()

mms = MinMaxScaler()
mms.fit(data)
data_transformed = mms.transform(data)

sum_of_squared_distances = []

K = range(1,15)

for k in K:
    km = KMeans(n_clusters=k) #init model
    km = km.fit(data_transformed) #fit model
    sum_of_squared_distances.append(km.inertia_) #overall SSE 


plt.plot(K, sum_of_squared_distances, 'bx-')
plt.xlabel('k')
plt.ylabel('Sum_of_squared_distances')
plt.title('Elbow Method For Optimal k')
plt.show()
...