首页 > 其他分享 >240722 knn 使用皮尔逊找到相似用户

240722 knn 使用皮尔逊找到相似用户

时间:2024-09-01 10:53:47浏览次数:11  
标签:knn user2 user1 sum dataset item 皮尔逊 np 240722


240722 knn 使用皮尔逊找到相似用户_json

import json
 import numpy as np# 计算皮尔逊系数
 def pearson_score(dataset, user1, user2):
     if user1 not in dataset:
         raise TypeError('User ' + user1 + ' not present in the dataset')    if user2 not in dataset:
         raise TypeError('User ' + user2 + ' not present in the dataset')    # 提取两个用户都评分过的电影
     rated_by_both = {}    for item in dataset[user1]:
         if item in dataset[user2]:
             rated_by_both[item] = 1    num_ratings = len(rated_by_both) 
    # 都没有评分则是 0 
     if num_ratings == 0:
         return 0    # 计算相同评分的平方值和
     user1_sum = np.sum([dataset[user1][item] for item in rated_by_both])
     user2_sum = np.sum([dataset[user2][item] for item in rated_by_both])    # 计算所有相同评分电影的评分的平方和
     user1_squared_sum = np.sum([np.square(dataset[user1][item]) for item in rated_by_both])
     user2_squared_sum = np.sum([np.square(dataset[user2][item]) for item in rated_by_both])    # 计算数据集乘积之和
     product_sum = np.sum([dataset[user1][item] * dataset[user2][item] for item in rated_by_both])    # 计算皮尔逊相关度
     Sxy = product_sum - (user1_sum * user2_sum / num_ratings)
     Sxx = user1_squared_sum - np.square(user1_sum) / num_ratings
     Syy = user2_squared_sum - np.square(user2_sum) / num_ratings
     # 分母为0的处理
     if Sxx * Syy == 0:
         return 0    return Sxy / np.sqrt(Sxx * Syy)
if __name__=='__main__':
     data_file = 'movie_ratings.json'    with open(data_file, 'r') as f:
         data = json.loads(f.read())    user1 = 'John Carson'
     user2 = 'Michelle Peterson'    print "\nPearson score:"
     print pearson_score(data, user1, user2)

标签:knn,user2,user1,sum,dataset,item,皮尔逊,np,240722
From: https://blog.51cto.com/u_15862653/11888527

相关文章

  • 240721 knn 计算用户1和用户2之间的评分-相关度
    knn通过计算电影相关度,计算用户1和用户2的评分importjsonimportnumpyasnp#计算欧式距离分数defeuclidean_score(dataset,user1,user2):ifuser1notindataset:raiseTypeError('User'+user1+'notpresentinthedataset')ifuser2n......
  • 240720 knn 最近邻
    K最邻近(KNN,K-NearestNeighbor) 结果:其中虚线就是拟合后的模型#-*-coding:utf-8-*-importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportneighbors#加载数据amplitude=10num_points=100X=amplitude*np.random.rand(num_points,1)-0......
  • 【机器学习】K近邻(K-Nearest Neighbors,简称KNN)的基本概念以及消极方法和积极方法的区
    引言K近邻(K-NearestNeighbors,简称KNN)算法是一种基础的机器学习方法,属于监督学习范畴文章目录引言一、K近邻(K-NearestNeighbors,简称KNN)1.1原理详述1.1.1距离度量1.1.2选择k值1.1.3投票机制1.2实现步骤1.3参数选择1.4应用场景1.5优缺点1.5.1优点1.5.2缺点......
  • 数学建模--皮尔逊相关系数、斯皮尔曼相关系数
    目录1.总体的皮尔逊相关系数2.样本的皮尔逊相关系数3.对于皮尔逊相关系数的认识4.描述性统计以及corr函数​编辑 5.数据导入实际操作6.引入假设性检验6.1简单认识6.2具体步骤7.p值判断法8.检验正态分布8.1jb检验8.2威尔克检验:针对于p值进行检验9.两个求解方法的......
  • 机器学习—KNN算法-分类及模型选择与调优
    KNN算法-分类样本距离判断:欧氏距离、曼哈顿距离、明可夫斯基距离KNN算法原理:        K-近邻算法(K-NearestNeighbors,简称KNN),根据K个邻居样本的类别来判断当前样本的类别;如果一个样本在特征空间中的k个最相似(最邻近)样本中的大多数属于某个类别,......
  • ICCEMDAN+皮尔逊+小波分解降噪+重构
    ICEEMDAN+皮尔逊+小波分解降噪+重构代码获取戳此处ICEEMDAN(改进的CEEMDAN)原理:ICEEMDAN是由Colominas等人提出的信号处理方法,它是在自适应噪声完全集合经验模态分解(CEEMDAN)的基础上发展而来。与CEEMDAN不同,ICEEMDAN在分解过程中不是直接添加高斯白噪声,而是选取白噪声被E......
  • 机器学习-KNN 算法
    一.K-近邻(KNN)K-近邻(K-NearestNeighbors,简称KNN)是一种基于实例的学习算法,主要用于分类和回归问题。KNN的工作原理直观且简单,它基于相似性进行预测,也就是说给定一个新的数据点,KNN算法会查找距离最近的K个数据点,然后通过这些邻居来确定新数据点的类别(在分类任务中)或......
  • aNN 与 kNN:了解它们在向量搜索中的区别和作用
    作者:来自Elastic ElasticPlatformTeam在当今的数字时代,数据呈指数级增长,且日益复杂,高效搜索和分析这一浩瀚信息海洋的能力从未如此重要。但同时也从未如此具有挑战性。这就像大海捞针,但挑战在于针的形状不断变化。这就是向量搜索作为游戏规则改变者出现的地方,它改变了我......
  • KNN(K近邻)算法之——KD-Tree构建及查找原理
    0前言本文主要讲解KNN算法中用于快速检索最近元素的KD树的构建及查找原理。为了达到最佳阅读效果,请读者按照本文顺序阅读,文章使用了大量图片帮助读者理解。1背景1.1为什么要使用KD-Tree?k近邻法(KNN)最简单的实现方法是线性扫描。这时要计算输入实例与每一个训练实例的......
  • KNN图像识别实例--手写数字识别
    目录前言一、导入库二、导入图像并处理1.导入图像2.提取出图像中的数字3.将列表转换成数组4.获取特征数据集5.获取标签数据三、使用KNN模型1.创建KNN模型并训练2.KNN模型出厂前测试3.使用测试集对KNN模型进行测试四、传入单个图像,使用该模型进行识别1.导入图像......