mga*_*ini 3 python cluster-analysis data-mining scikit-learn
我想对使用python和scikits.learn的最佳聚类技术提出一些建议.我们的数据来自表型微阵列,其测量细胞在各种底物上的代谢活性随时间的变化.输出是一系列S形曲线,我们通过拟合到S形函数来提取一系列曲线参数.
我们希望使用固定数量的聚类通过聚类来"排列"此活动曲线.目前我们正在使用包提供的k-means算法,其中(init ='random',k = 10,n_init = 100,max_iter = 1000).输入是一个矩阵,每个样本有n_samples和5个参数.样本数量可以变化,但通常约为数千(即5'000).聚类似乎是高效和有效的,但我将不胜感激任何关于不同方法或对聚类质量进行评估的最佳方法的建议.
这里有几个可能有用的图表:
输入参数的散点图(其中一些非常相关),单个样本的颜色相对于指定的簇.

提取输入参数的sigmoid曲线,其颜色相对于其指定的簇

编辑
下面是一些肘部图和每个簇数的轮廓得分.

你有没有注意到你的情节中的条纹图案?
这表明您没有足够好地规范化数据.
"区域"和"高度"高度相关,可能是最大规模的.所有聚类都发生在这个轴上.
你绝对必须:
不要盲目跟随数字.无论您提供什么数据,K-means都会愉快地生成k个簇.它只是优化了一些数字.由你来检查结果是否有用,并分析它们的语义是什么 - 它可能只是在数学上是局部最优,但对你的任务毫无意义.
对于5000个样本,所有方法都应该没有问题.本是一个相当不错的概述这里.需要考虑的一件事是你是否想要修复集群的数量.请参阅表格,了解可能的聚类算法选择.
我认为谱聚类是一种非常好的方法.您可以将它与RBF内核一起使用.但是,您必须调整gamma,并可能限制连接.
不需要n_clusters的选择是WARD和DBSCAN,也是可靠的选择.您也可以参考我个人意见的图表,我在scikit-learn文档中找不到链接...
为了判断结果:如果你没有任何基本事实(如果这是探索性的话我认为你没有),那么[尚未](在scikit-learn中)没有好的衡量标准.
有一个无监督的度量,轮廓得分,但afaik有利于k-means找到的非常紧凑的群集.群集的稳定性测量可能有所帮助,尽管它们尚未在sklearn中实现.
我最好的选择是找到一种检查数据和可视化聚类的好方法.您是否尝试过PCA并考虑过多种学习技巧?
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |