传统的划分聚类算法必须指定簇的数量且聚类结果受初始条件的影响较大.针对此缺点,提出了一种基于PSO和K-means的混合动态聚类算法--DKPSO,运行过程中能够自动确定聚类簇的最佳数量.此算法在初始时将聚类数据划分为较多数量的簇以减少初始条件的影响,然后使用离散PSO算法不断优化簇的数量并使用K-means算法进一步优化每个粒子代表的聚类中心.为了提高收敛速度,对算法进行了的改进,使每个粒子的惯性权重随迭代次数非线性自适应地调整.最后通过实验对算法的有效性进行了验证,并给出实验结果.