Python 基于需求分类的机器学习方法

Python 基于需求分类的机器学习方法,python,machine-learning,scikit-learn,geojson,Python,Machine Learning,Scikit Learn,Geojson,我有以下情况: 我的输入是一组。每个点(Long_Lat坐标)对应于一个区域的一个子区域的质心,并且对学校有需求。比如50个孩子需要一所学校 在使用cluster方法()通过邻近性聚合这些点之后,我想将需求点分配给学校,以满足集群需求(该集群上所有点需求的总和) 换句话说,我想在该集群上创建学校,并将孩子(点)分配给这些学校 学校有固定容量限制 即:我需要3所学校(容量为40所),以满足C4集群100名儿童(P1、P2、P3)的需求 主要目标当然是了解这些学校的位置。但我可以用逻辑检索它 我应该

我有以下情况:

我的输入是一组。每个点(Long_Lat坐标)对应于一个区域的一个子区域的质心,并且对学校有需求。比如50个孩子需要一所学校

在使用cluster方法()通过邻近性聚合这些点之后,我想将需求点分配给学校,以满足集群需求(该集群上所有点需求的总和)

换句话说,我想在该集群上创建学校,并将孩子()分配给这些学校

学校有固定容量限制

即:我需要3所学校(容量为40所),以满足C4集群100名儿童(P1、P2、P3)的需求

主要目标当然是了解这些学校的位置。但我可以用逻辑检索它

我应该使用什么方法来填充群集的容量?
这是正确的方法吗?

对于分布良好的数据,我认为最有效的方法是从k-means聚类开始。如果每个结果集群都符合学校的能力,那么您就有了一个解决方案

然而,你“担心”的情况是至少有一所学校产能过剩。例如,你有20个孩子在一条大河的北侧,90个在南侧,学校的容纳能力是40:你需要从南到北分配至少10个孩子

处理这个问题的算法方法是实现一个不同的错误函数:添加一个严重惩罚(即+无穷大成本)的子句,将第41名学生添加到该集群中

另一种方法是允许集群正常聚合,但随后进行调整。假设东南学校有46名学生,西南学校有44名:将离北学校最近的6名和4名学生送到该学校


这是否足以为您提供指导?你是否有过这样的情况,即你会有多所学校,既有能力过剩又有能力不足?我不想过度设计一个解决方案。

“应该”在很大程度上取决于你的健康标准——你没有提供。看来你已经用k-means解决了大部分分配问题。例如,当您设置k=3(对于您拥有的三所学校)并运行k-means时会发生什么?这怎么不能很好地解决你的问题呢?我们需要您关注特定的问题,以使其适用于堆栈溢出。如果不能更具体,请道歉。K-均值和Dbscan仅使用欧几里得距离。如何将需求限制添加到聚类中?“使用欧几里德距离”驱动聚类。我仍然不清楚:这是否也推动了你对学生的安置?您是否在尝试最小化所有学生上学的总距离?您是否需要最佳解决方案,或者一个近似的“好”解决方案就足够了?我真正需要的是为3个学校规模创建所有可能的学校配置。之后,我可以解决最佳使用设施的位置(与古洛比)。但首先我需要初始点。我想我可以使用ML来创建它们。经过一些挖掘,我开始认为这个问题没有现成的解决方案,并开始按照您的建议进行思考。我认为用您的推理对DBscan进行一些修改就足够了,因为我可以使用邻近性生成集群,并逐个检查容量。谢谢