У меня есть оригинальный фрейм данных (объем, купленный каждым покупателем для разных продуктов), имеющий несколько столбцов, как показано ниже:
Пожалуйста, нажмите здесь, чтобы посмотреть пример кадра данных
Моя цель - сделать кластеризацию для каждых двух продуктов из исходного кадра данных. для простоты я попытался взять один случай для кластеризации, выбрав customer, product1 и product 2.
мой фрейм данных выглядит следующим образом (столбец клиента игнорируется, и принимаются данные только двух продуктов)
дф =
Пожалуйста, нажмите здесь, чтобы посмотреть пример кадра данных
рассмотрите коды ниже, которые я использовал для кластеризации и визуализации.
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters = i, init = 'k-means++')
kmeans.fit(df)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
# 4 clusters
# Fitting K-Means to the dataset
kmeans = KMeans(n_clusters = 4, init = 'k-means++')
y_kmeans = kmeans.fit_predict(df)
# Visualising the clusters
plt.scatter(df[y_kmeans == 0, 0], df[y_kmeans == 0, 1], s = 20, c = 'red', label = 'Cluster 1')
plt.scatter(df[y_kmeans == 1, 0], df[y_kmeans == 1, 1], s = 20, c = 'blue', label = 'Cluster 2')
plt.scatter(df[y_kmeans == 2, 0], df[y_kmeans == 2, 1], s = 20, c = 'green', label = 'Cluster 3')
plt.scatter(df[y_kmeans == 3, 0], df[y_kmeans == 3, 1], s = 20, c = 'yellow', label = 'Cluster 4')
plt.title('Clusters of customers')
plt.xlabel('Product1 (000 TO)')
plt.ylabel('Product2 (000 TO)')
plt.legend()
plt.show()
это прекрасно работает для одной пары, но моя цель - сделать для каждой из двух комбинаций продуктов из моего исходного кадра данных.
Я пытался найти это и использовал цикл и итерацию, но не смог достичь своей конечной цели. Я не так уж много разбираюсь в циклах и начал использовать Python с нескольких месяцев. Ваша помощь будет высоко оценена.
Вы можете исправить нет. кластеров как 4 в вашем ответе.
Позвольте мне также вставить ниже то, что я до сих пор пытался для этого и все еще выясняю, что дальше.
Пожалуйста, дайте мне знать, если я не совсем уверен в своих вопросах ... или мне нужно добавить больше деталей. Заранее большое спасибо
from itertools import combinations
from sklearn.cluster import KMeans
[править] .. ниже мой последний код .. чтобы упростить задачу .. Я пытаюсь повторить код ниже, используемый для одной пары для всех комбинаций пар
# kmeans for one pair
kmeans = KMeans(n_clusters = 4, init = 'k-means++')
X=df.iloc[:, [0,1]].values
kmeans.fit(X)
y_kmeans = kmeans.fit_predict(X)
петля kmeans
kmeans = KMeans(n_clusters = 4, init = 'k-means++')
combos = list(combinations(df.columns,2))
for combo in combos:
for i in range(0,len(combos)):
X=df.loc[:,combos[i]].values
kmeans.fit(X)
y_kmeans=kmeans.fit_predict(X)
Цикл
однажды дал мне только вывод последней пары, тогда как он должен был дать мне все выходные данные пары .. Я не уверен, чего мне здесь не хватает ..