【问题标题】:How to implement K-means (Python)?如何实现 K-means (Python)?
【发布时间】:2021-05-04 20:57:42
【问题描述】:

我有一个数据集,包含 61 行和 28 列(已使用应用程序的类别)。我对编码非常陌生,我将第一次尝试机器学习算法,所以我很感激任何帮助! .

这就是我的数据:

Category  Calendar  Clock  Communication  Education  Entertainment  Finance   
UserId                                                                         
  1                1      1              1          9              1         0   
  2                0      1              1          0              0         0   
  3                0      1              1          0              0         0   
  4                1      1              6          0              0         0   
  5                0      1              1          1              1         0   
  6                0      0              0          0              0         0   
  7                0      1              1          0              0         0   
  8                0      1              1          0              0         0   
  9                0      0              1          0              7         0   
  10               0      1              1          0              0         0   
  11               0      2              1          0              5         0   
  13               0      0              1          0              0         0   
  14               0      1              1          0              1         0   
  15               1      1              1          0              0         0   
  16               0      1              1          0              0         0   
  17               0      0              1          1              1         0   
  19               0      1              1          0              0         0   
  20               0      0              1          0              0         0   
  21               0      1              1          0              1         0   
  .....  
  61               0      1              1          0              5         0   
                 

我正在寻找一个 k-means 的实现,以将用户分为 3 个组,并根据他们使用的 category 的行为。 我该怎么办!

【问题讨论】:

  • 到目前为止,您是否研究过有关 k-means 聚类的任何内容?
  • scikit-learn 是 Python 的机器学习工具。 scikit-learn.org
  • 是的,我对它的工作原理有所了解,但我无法用我的数据实现。此外,k-means 可以使用我的数据给出可解释的结果?

标签: python pandas machine-learning k-means


【解决方案1】:

我想这就是你要找的。​​p>

from pylab import plot,show
from numpy import vstack,array
from numpy.random import rand
import numpy as np
from scipy.cluster.vq import kmeans,vq
import pandas as pd
import pandas_datareader as dr
from math import sqrt
from sklearn.cluster import KMeans
from matplotlib import pyplot as plt
data = np.asarray([np.asarray(df['Feature1']),np.asarray(df['Feature2']),[np.asarray(df['Feature3'])]).T
X = data
distorsions = []
for k in range(2, 20):
    k_means = KMeans(n_clusters=k)
    k_means.fit(X)
    distorsions.append(k_means.inertia_)
fig = plt.figure(figsize=(15, 5))
plt.plot(range(2, 20), distorsions)
plt.grid(True)
plt.title('Elbow curve')

centroids,_ = kmeans(data,3)
# assign each sample to a cluster
idx,_ = vq(data,centroids)
# some plotting using numpy's logical indexing
plot(data[idx==0,0],data[idx==0,1],'ob',
     data[idx==1,0],data[idx==1,1],'oy',
     data[idx==2,0],data[idx==2,1])
plot(centroids[:,0],centroids[:,1],'sg',markersize=8)
show()

details = [(name,cluster) for name, cluster in zip(df.index,idx)]
for detail in details:
    print(detail)

【讨论】:

  • 感谢您的回复!但它不起作用!
  • 对我来说效果很好。什么不起作用?这很模糊。
  • ValueError: 无法将字符串转换为浮点数:'地图和导航'
  • 我什至没有看到“地图和导航”。你能发布你的数据框吗?我需要一个小时才能将您的原始数据转换为实际的数据框。我没有整整一个小时来做​​这件事。
  • 谢谢!对于您浪费的时间,我深表歉意。
猜你喜欢
  • 2011-07-24
  • 2013-10-14
  • 2016-10-11
  • 1970-01-01
  • 2020-06-21
  • 2013-07-24
  • 1970-01-01
  • 2016-02-10
  • 2011-05-15
相关资源
最近更新 更多