基于KNN的协同滤波推荐算法实现

本文介绍了基于KNN的协同滤波推荐算法实现,该算法在推荐系统中广泛应用。通过计算用户间的相似度,预测未知评分,包括计算相似度、选择最近邻和预测评分三个步骤。
摘要由CSDN通过智能技术生成

基于KNN的协同滤波推荐算法实现

        邻居模型通常也被称为k-最近邻模型,或者简称为kNN。KNN 模型可以获得精确的推荐结果并为结果给出合理的解释,它们是CF 推荐系统中最早被使用也是直至目前最流行的一类模型。

为了获得用户对产品的评分预测值,kNN 模型一般包括以下三步:

1. 计算相似度
这步中计算每对产品之间的相似度(similarity)。一些被广泛使用的相似度
测度包括:
Pearson correlation:

其中¯rm 和¯rn 分别表示电影m 和n 获得的评分平均值,而Pmn 表示对 电影m 和n 都提供了评分的用户集合,也即Pmn = Pm ∩ Pn 。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
KNN平滑滤波算法是一种基于邻近点的滤波算法,其思想是用某个点周围的K个邻近点的平均值来代替该点的像素值,以达到平滑图像的目的。下面给出KNN平滑滤波算法的实现过程: 1. 读入原始图像,并设定邻域大小K。 2. 对于每个像素点,计算它周围K个邻近点的平均灰度值。 3. 将该像素点的灰度值替换为计算出的平均灰度值。 4. 将处理后的图像保存。 以下是Python代码实现KNN平滑滤波算法: ```python import numpy as np import cv2 # 读入原始图像 img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE) # 设定邻域大小为3 K = 3 # 定义KNN平滑滤波函数 def knn_smooth(img, K): # 获取图像的行数和列数 rows, cols = img.shape # 定义一个空的结果图像 result = np.zeros_like(img) # 对于每个像素点 for i in range(rows): for j in range(cols): # 计算该像素点周围K个邻近点的平均灰度值 top = max(0, i - K//2) bottom = min(rows, i + K//2 + 1) left = max(0, j - K//2) right = min(cols, j + K//2 + 1) neighbors = img[top:bottom, left:right] result[i,j] = np.mean(neighbors) return result # 调用KNN平滑滤波函数 result = knn_smooth(img, K) # 保存处理后的图像 cv2.imwrite('result.jpg', result) ``` 在上述代码中,我们首先读入原始图像,并设定邻域大小K为3。然后定义了一个名为knn_smooth的函数,用于实现KNN平滑滤波算法。在该函数中,我们首先获取图像的行数和列数,然后对于每个像素点,计算该点周围K个邻近点的平均灰度值,并将该点的像素值替换为计算出的平均灰度值。最后,我们调用该函数,并保存处理后的图像。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值