协作过滤算法(CF)在推荐系统中难以处理数据的稀疏性和可伸缩性问题。本文提出了基于类别偏好Canopy-K-means的协同过滤算法(CPCKCF),设计了用户项类别偏好比率(UICPR)的定义,并用来计算UICPR矩阵。将Canopy算法作为CPCKCF的前置算法,并将输出作为K-means算法的输入,其结果用于用户数据进行聚类并找到最近的用户以获得预测得分,使用MovieLens数据集进行的实验结果表明,与传统的基于用户的协作过滤算法相比,所提出的CPCKCF算法将计算效率和推荐精度提高了2.81%。