我想就使用 python 和 scikits.learn 的最佳聚类技术提出一些建议。我们的数据来自 Phenotype Microarray ,它测量细胞随时间对各种底物的代谢事件。输出是一系列 sigmoid 曲线,我们通过对 sigmoid 函数的拟合提取一系列曲线参数。
我们想通过聚类,使用固定数量的聚类,对这个事件曲线进行“排名”。现在我们使用包提供的 k-means 算法,其中 (init='random', k=10, n_init=100, max_iter=1000)。输入是一个矩阵,每个样本有 n_samples 和 5 个参数。样本数量可能会有所不同,但通常约为数千(即 5'000)。聚类似乎高效且有效,但我将不胜感激任何关于不同方法或对聚类质量进行评估的最佳方式的建议。
这里有一些图表可能会有所帮助:
输入参数的散点图(其中一些参数非常相关),单个样本的颜色相对于分配的簇。
从中提取输入参数的 S 形曲线,其颜色与其分配的簇相关
编辑
下面是一些肘部图和每个簇数的剪影得分。
最佳答案
您是否注意到图中的条纹图案?
这表明您对数据的规范化不够好。
“面积”和“高度”高度相关,并且可能在最大范围内。所有聚类都发生在这个轴上。
你绝对必须:
- 进行仔细的预处理
- 检查您的距离函数是否产生有意义的(对您而言,而不仅仅是计算机)相似性概念
- 现实检查您的结果,并检查它们是否过于简单、确定,例如通过单个属性
不要盲目跟随数字。无论您提供什么数据,K-means 都会愉快地生成 k 个簇。它只是优化了一些数字。检查结果是否有用并分析它们的语义是什么取决于您 - 很可能它只是数学上的局部最优,但对您的任务毫无意义。
关于python - scikits.learn 曲线拟合参数的聚类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17046397/