Python 小部件订单的聚类算法

Python 小部件订单的聚类算法,python,machine-learning,scikit-learn,unsupervised-learning,Python,Machine Learning,Scikit Learn,Unsupervised Learning,我有一个表,其中包含多个部门的小部件订单,每个部门由其买家代表。表结构如下所示: +--------------------------+------------+------------+------------+ | order_id | order_date | dept_buyer | widget_mfg | +--------------------------+------------+------------+------------+ | 569

我有一个表,其中包含多个部门的小部件订单,每个部门由其买家代表。表结构如下所示:

+--------------------------+------------+------------+------------+
|         order_id         | order_date | dept_buyer | widget_mfg |
+--------------------------+------------+------------+------------+
| 56991ba89468d0fc1d53781d | 2/16/2015  | Gutierrez  | OTHERSIDE  |
| 56991ba8f020fc065e5b7219 | 11/14/2014 | Moreno     | QUALITEX   |
| 56991ba82340ecb7b2e9dda8 | 1/15/2015  | Gutierrez  | PROGENEX   |
| 56991ba87bacb0ee3161fd61 | 2/4/2015   | Glover     | ULTRASURE  |
| 56991ba8ade6acae3307a3e9 | 4/20/2015  | Hancock    | WEBIOTIC   |
| 56991ba80b404bcc73094e66 | 4/3/2014   | Castro     | PROGENEX   |
| 56991ba8cb37eda5e5557a74 | 7/21/2014  | Moreno     | OTHERSIDE  |
+--------------------------+------------+------------+------------+
每一行代表一个小部件顺序,因为小部件通常是单独排序的。实际表中有数万行,表示约3年的订单。大约有100个部门买家,1000个小部件制造商

我想为部门买家提供一份订单,其中包含他们最常订购的小部件,以便于购买。根据以前的经验,我知道许多部门买家订购类似的小部件。也就是说,部门购买者可以通过他们的小部件购买行为聚集在一起。出于这个原因,以及出于维护目的,我希望创建尽可能少的表单,同时为将使用该表单的部门买家捕获最常见的订购小部件


对我来说,这似乎是一个机器学习集群问题,但我对主题领域不够熟悉,无法在这个问题上站稳脚跟。有没有一个现成的算法或库来解决这样的问题?

你可以从@MichaelRecachinas开始。@MichaelRecachinas我对K-means聚类的理解是,我需要告诉它我想要的聚类数,但我不知道。相反,我想优化股票形式之间的相似性,而不管产生的集群数量如何。听起来你仍然在寻找聚类算法。即使不知道“K”,你仍然可以使用K-Means。您只需要使用交叉验证来优化集群的数量,更不用说,从中可以看出,K-means似乎只适用于数值(连续)数据。我试图聚类的维度(widget_-mfg)是分类的。好的一点是——有两种不同的K-means操作分类数据:K-modes()和K-mediods(),您可能会感兴趣。上述考虑同样适用——你可以使用交叉验证来确定最佳的“K”。你可以从@MichaelRecachinas开始。我对K-means聚类的理解是,我需要告诉它我想要的聚类数,但我不知道。相反,我想优化股票形式之间的相似性,而不管产生的集群数量如何。听起来你仍然在寻找聚类算法。即使不知道“K”,你仍然可以使用K-Means。您只需要使用交叉验证来优化集群的数量,更不用说,从中可以看出,K-means似乎只适用于数值(连续)数据。我试图聚类的维度(widget_-mfg)是分类的。好的一点是——有两种不同的K-means操作分类数据:K-modes()和K-mediods(),您可能会感兴趣。上述考虑同样适用——您可以使用交叉验证来确定最佳的“K”。