【问题标题】:Clustering for a list?聚类列表?
【发布时间】:2022-06-10 22:27:07
【问题描述】:

我正在尝试按年龄对用户列表进行分组。我对使用 k-means 进行聚类有一点了解,但据我所知,这种方法使用的列不止一列,而且我只有年龄列。您还有其他推荐的方法吗? (我用的是python)

编辑:我正在寻找的是根据年龄将这些用户按组分开,因此这些组的用户数量相同或几乎相同。该列表包含超过 3000 个用户。

【问题讨论】:

  • 欢迎来到 SO,请发布您遇到问题的代码块。或者请尝试澄清您的要求。
  • 如果你有所有用户的年龄,我认为你不需要像 k-means 这样的聚类算法。您可以按年龄对数组或数据框进行排序,对吧?
  • 我认为拥有像年龄这样的“直接”功能,就是通过年龄范围([0:10]、[11、20] 等)来摸索用户的问题) 而不是聚类的问题。您能否更具体地说明您想要实现的目标?

标签: python cluster-analysis k-means


【解决方案1】:

假设你有一个数据框

>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame({'Name': ['Laura', 'Jane', 'Tom', 'Louis', 'Chris', 'Ken'],
                   'Age': [22, 17, 91, np.nan, 44, 24]})

我们现在可以按年龄排序

>>> df.sort_values(by=['Age'])
    Name   Age
1   Jane  17.0
0  Laura  22.0
5    Ken  24.0
4  Chris  44.0
2    Tom  91.0
3  Louis   NaN

或者如果你有一个 numpy 数组

>>> df = pd.DataFrame({'Name': ['Laura', 'Jane', 'Tom', 'Louis', 'Chris', 'Ken'],
                       'Age': [22, 17, 91, np.nan, 44, 24]})
>>> arr = np.array(df)
>>> arr[np.argsort(arr[:, 1].astype(float))]
array([['Laura', 17.0],
       ['Jane', 22.0],
       ['Chris', 24.0],
       ['Ken', 44.0],
       ['Tom', 91.0],
       ['Louis', nan]], dtype=object)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-07
    • 2022-01-21
    • 1970-01-01
    • 2014-01-06
    • 2017-06-16
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多