2024-04-19 07:01:24 发布
网友
假设我们有一个列表list = [1,2,3,4,5,6,7,8,9,10,11,12],一组期望的平均值a=[2,5,8,11],并且隐式地有4个组,我们想要形成这样的组,每个组的值分别为2、5、8和11。这本质上是一个排序问题吗?有没有一种方法可以在不检查子列表的每个可能组合的情况下执行此操作?你知道吗
list = [1,2,3,4,5,6,7,8,9,10,11,12]
a=[2,5,8,11]
如果上面的版本实际上不易处理,那么假设目标是通过依次遍历上面的列表来形成子列表。这如何让事情变得更容易?你知道吗
考虑到这个问题,正如评论中所建议的,k-means似乎是一个合适的算法选择。你知道吗
您可以实现自己版本的k-means,也可以从^{}中提供的实现开始,这是一个提供机器学习技术的包,特别是^{}。你知道吗
从示例和绘图开始使用scikit-learn的可能实现是:
scikit-learn
import matplotlib.pyplot as plt import numpy as np import sklearn.cluster list1 = np.arange(1,13) list1_y = np.array([1]*12) a = np.array([2,5,8,11]) kmeans = sklearn.cluster.KMeans(n_clusters=a.shape[0],n_init=1,init=a.reshape((a.shape[0],1))) kmeans.fit(list1.reshape((list1.shape[0],1))) labels = kmeans.labels_ plt.scatter(list1, list1_y, c=labels.astype(np.float)) plt.show()
发现4个聚类的k均值结果如下图所示(每个数据点都有一个颜色,标识它们所属的聚类):
为了理解sklearn的工作原理,您可以更深入地了解一些方面:
sklearn
KMeans
a
fit
list1
labels
reshape
有关k-means的更多信息,请开始查看related wikipedia page。你知道吗
考虑到这个问题,正如评论中所建议的,k-means似乎是一个合适的算法选择。你知道吗
您可以实现自己版本的k-means,也可以从^{} 中提供的实现开始,这是一个提供机器学习技术的包,特别是^{} 。你知道吗
从示例和绘图开始使用
scikit-learn
的可能实现是:发现4个聚类的k均值结果如下图所示(每个数据点都有一个颜色,标识它们所属的聚类):
为了理解
sklearn
的工作原理,您可以更深入地了解一些方面:KMeans
的初始化。我只包括了相关的参数,即来自a
的集群数量、它应该尝试执行初始化的次数,以及来自a
的初始集群的方法。您还可以设置其他参数。你知道吗fit
函数来查找list1
中每个数据的labels
。你知道吗sklearn
的数据集的reshape
。你知道吗有关k-means的更多信息,请开始查看related wikipedia page。你知道吗
相关问题 更多 >
编程相关推荐