当前位置: 首页 > news >正文

个人想做企业网站备案甘肃嘉峪关建设局网站

个人想做企业网站备案,甘肃嘉峪关建设局网站,天津网站建设制作价格,公司做外地网站SVD、SVD、PMF 和 NMF 是几种常见的推荐算法#xff0c;它们主要用于协同过滤和矩阵分解方法来生成个性化推荐。下面是对每种算法的简要介绍#xff1a; 1. SVD#xff08;Singular Value Decomposition#xff09; 用途#xff1a;SVD 是一种矩阵分解技术#xff0c;通…SVD、SVD、PMF 和 NMF 是几种常见的推荐算法它们主要用于协同过滤和矩阵分解方法来生成个性化推荐。下面是对每种算法的简要介绍 1. SVDSingular Value Decomposition 用途SVD 是一种矩阵分解技术通常用于降维和数据压缩。在推荐系统中SVD 用于分解用户-物品评分矩阵从而识别潜在的特征。原理SVD 将评分矩阵分解为三个矩阵的乘积用户矩阵、奇异值矩阵和物品矩阵。通过保留前几个最大的奇异值可以捕捉到用户和物品之间的隐含关系。优势能够处理稀疏数据提取潜在特征生成个性化推荐。缺点对缺失值敏感且需要较大的计算量。 2. SVDSVD Plus Plus 用途SVD 是对 SVD 的扩展考虑了用户对未评分物品的潜在偏好。原理除了使用传统的 SVD 方法外SVD 还引入了隐式反馈如用户浏览、点击等行为将这些信息融入模型中增强了对用户偏好的捕捉能力。优势比传统 SVD 更加准确能够更好地利用隐式反馈信息适应性更强。缺点模型复杂度增加训练时间较长。 3. PMFProbabilistic Matrix Factorization 用途PMF 是一种基于概率的矩阵分解方法用于推荐系统。原理PMF 假设用户和物品的特征遵循正态分布通过最大化似然函数来学习这些特征。与 SVD 不同PMF 通过引入概率模型来捕捉用户和物品之间的关系。优势能够处理缺失值适应性强适用于稀疏数据。缺点计算复杂度较高可能需要较长的训练时间。 4. NMFNon-negative Matrix Factorization 用途NMF 是一种非负矩阵分解方法常用于推荐系统和特征学习。原理NMF 将原始评分矩阵分解为两个非负矩阵的乘积这些非负特征使得模型在解释上更具可解释性。优势生成的特征可以更直观地理解适合处理非负数据如评分、计数等。缺点可能会收敛到局部最优解且在稀疏数据上表现不如 SVD 和 PMF。 各个推荐算法具有的特点是 SVD利用矩阵分解捕捉用户和物品的隐含特征。SVD在 SVD 的基础上引入隐式反馈增强推荐精度。PMF基于概率模型的矩阵分解适应性强。NMF非负矩阵分解生成可解释的特征表示。 安装scikit-surprise pip install pandas scikit-surprise 使用SVD import pandas as pd from surprise import Reader, Dataset, SVD from surprise.model_selection import train_test_split from surprise import accuracy import json# 1. 加载Yelp数据集 # 假设数据文件名为 yelp_academic_dataset_review.json file_path yelp_academic_dataset_review.json# 加载JSON文件到DataFrame with open(file_path, r) as f:data [json.loads(line) for line in f]# 将数据转换为pandas DataFrame df pd.DataFrame(data)# 2. 选择必要的字段user_id, business_id, rating df df[[user_id, business_id, stars]] # 假设评分字段是 stars# 3. 数据预处理将DataFrame转换为适合Surprise库的格式 reader Reader(rating_scale(1, 5)) # 假设评分是1到5 dataset Dataset.load_from_df(df[[user_id, business_id, stars]], reader)# 4. 划分训练集和测试集 trainset, testset train_test_split(dataset, test_size0.2)# 5. 使用SVD训练模型 svd SVD() svd.fit(trainset)# 6. 在测试集上进行预测并评估 predictions svd.test(testset) print(fRMSE: {accuracy.rmse(predictions)})# 7. 获取每个用户的Top-N推荐商家 def get_top_n(predictions, n10):top_n {}for uid, iid, true_r, est, _ in predictions:if uid not in top_n:top_n[uid] []top_n[uid].append((iid, est))# 对每个用户推荐列表按照评分进行排序for uid, user_ratings in top_n.items():user_ratings.sort(keylambda x: x[1], reverseTrue)top_n[uid] user_ratings[:n]return top_n# 获取推荐结果 top_n get_top_n(predictions, n10)# 8. 为特定用户推荐商家 user_id fB3jbHi3m0L2KgGOxBv6uw # 替换为目标用户ID recommended_businesses top_n.get(user_id, []) print(fTop 10 recommended businesses for user {user_id}:) for business_id, rating in recommended_businesses:print(fBusiness ID: {business_id}, Predicted Rating: {rating}) 这个示例假设评分值在1到5之间即rating_scale(1, 5)如果评分范围不同请修改为适合你的数据集的范围。 运行结果 RMSE: 1.2863 RMSE: 1.2862955370267326 Top 10 recommended businesses for user fB3jbHi3m0L2KgGOxBv6uw 使用 SVD import pandas as pd from surprise import Reader, Dataset, SVDpp from surprise.model_selection import train_test_split from surprise import accuracy import json# 1. 加载Yelp数据集 # 假设数据文件名为 yelp_academic_dataset_review.json file_path yelp_academic_dataset_review.json# 加载JSON文件到DataFrame with open(file_path, r) as f:data [json.loads(line) for line in f]# 将数据转换为pandas DataFrame df pd.DataFrame(data)# 2. 选择必要的字段user_id, business_id, rating df df[[user_id, business_id, stars]] # 假设评分字段是 stars# 3. 数据预处理将DataFrame转换为适合Surprise库的格式 reader Reader(rating_scale(1, 5)) # 假设评分是1到5 dataset Dataset.load_from_df(df[[user_id, business_id, stars]], reader)# 4. 划分训练集和测试集 trainset, testset train_test_split(dataset, test_size0.2)# 5. 使用SVD训练模型 svdpp SVDpp() svdpp.fit(trainset)# 6. 在测试集上进行预测并评估 predictions svdpp.test(testset) print(fRMSE: {accuracy.rmse(predictions)})# 7. 获取每个用户的Top-N推荐商家 def get_top_n(predictions, n10):top_n {}for uid, iid, true_r, est, _ in predictions:if uid not in top_n:top_n[uid] []top_n[uid].append((iid, est))# 对每个用户推荐列表按照评分进行排序for uid, user_ratings in top_n.items():user_ratings.sort(keylambda x: x[1], reverseTrue)top_n[uid] user_ratings[:n]return top_n# 获取推荐结果 top_n get_top_n(predictions, n10)# 8. 为特定用户推荐商家 user_id fB3jbHi3m0L2KgGOxBv6uw # 替换为目标用户ID recommended_businesses top_n.get(user_id, []) print(fTop 10 recommended businesses for user {user_id}:) for business_id, rating in recommended_businesses:print(fBusiness ID: {business_id}, Predicted Rating: {rating})数据集的规模 SVD比SVD复杂所以如果数据集非常大可能会需要更长时间进行训练尤其是在计算资源有限的情况下。 运行结果 RMSE: 1.2947 RMSE: 1.2947410246403837 Top 10 recommended businesses for user fB3jbHi3m0L2KgGOxBv6uw: 使用PMF PMF 在 Surprise 中实现为 SVD因此我们可以直接使用 SVD 作为 PMF, 代码参见SVD 使用NMF import pandas as pd from surprise import Reader, Dataset, NMF from surprise.model_selection import train_test_split from surprise import accuracy import json# 1. 加载Yelp数据集 # 假设数据文件名为 yelp_academic_dataset_review.json file_path yelp_academic_dataset_review.json# 加载JSON文件到DataFrame with open(file_path, r) as f:data [json.loads(line) for line in f]# 将数据转换为pandas DataFrame df pd.DataFrame(data)# 2. 选择必要的字段user_id, business_id, rating df df[[user_id, business_id, stars]] # 假设评分字段是 stars# 3. 数据预处理将DataFrame转换为适合Surprise库的格式 reader Reader(rating_scale(1, 5)) # 假设评分是1到5 dataset Dataset.load_from_df(df[[user_id, business_id, stars]], reader)# 4. 划分训练集和测试集 trainset, testset train_test_split(dataset, test_size0.2)# 5. 使用NMFNon-negative Matrix Factorization进行矩阵分解 nmf NMF() nmf.fit(trainset)# 6. 在测试集上进行预测并评估 predictions nmf.test(testset) print(fRMSE: {accuracy.rmse(predictions)})# 7. 获取每个用户的Top-N推荐商家 def get_top_n(predictions, n10):top_n {}for uid, iid, true_r, est, _ in predictions:if uid not in top_n:top_n[uid] []top_n[uid].append((iid, est))# 对每个用户推荐列表按照评分进行排序for uid, user_ratings in top_n.items():user_ratings.sort(keylambda x: x[1], reverseTrue)top_n[uid] user_ratings[:n]return top_n# 获取推荐结果 top_n get_top_n(predictions, n10)# 8. 为特定用户推荐商家 user_id fB3jbHi3m0L2KgGOxBv6uw # 替换为目标用户ID recommended_businesses top_n.get(user_id, []) print(fTop 10 recommended businesses for user {user_id}:) for business_id, rating in recommended_businesses:print(fBusiness ID: {business_id}, Predicted Rating: {rating}) NMF与SVD的区别 NMF非负矩阵分解不同于SVD奇异值分解它强制矩阵的分解结果为非负值。适用于当数据有明显非负约束例如评分数据的情况。如果数据中包含负值NMF可能无法正常工作这时可以考虑使用SVD。性能问题 如果数据集非常大矩阵分解模型可能需要较长时间训练。可以考虑在大规模数据集上进行性能优化例如使用并行计算或使用分布式计算框架。 运行结果 RMSE: 1.4577 RMSE: 1.4577314669222752 Top 10 recommended businesses for user fB3jbHi3m0L2KgGOxBv6uw
http://www.hkea.cn/news/14459350/

相关文章:

  • 天津网站优化公司哪家专业新浪做网站
  • 网站建设需要工作计划邢台网站推广多少钱
  • 怎么做企业销售网站大学英文网站建设举措
  • 网站打不开怎么回事id文件怎么转wordpress
  • 怎样做天猫 淘宝网站导购建设银行app下载手机银行官网
  • 网站推广方案设计方案wordpress 4.0 安装
  • 餐饮加盟网站模板长春seo代理
  • 公司网站 数据库美食网站建设的必要性
  • 汉中城乡建设网站首页主页页面
  • 做汽车团购的网站建设wordpress 短信接口
  • 现在公众号做电影网站的发展logo设计免费软件
  • 信阳网站建设的费用搜狗网站seo
  • 做网站 上海专做律师网站
  • 楚雄网站建设rewlkj做网站赚外快
  • 江西省建设工程协会网站查询广州的公司有哪些
  • 南通市城乡和住房建设局网站北京网站seo技术厂家
  • 网站开发总监服务类型的网站怎么做
  • 昆明驿站网站建设怎么在虚拟空间做两个网站
  • 网站的类型平台网站建设预算表
  • 怎么0成本做网站杭州网站做的好公司哪家好
  • 站长工具服务器查询德阳网站开发熊掌号
  • 网站开发参考文献2016世界工厂采购网官网
  • 企业网站建设报价单网站建设方面论文
  • 网站优化怎么样做公司名字大全必过
  • 网站建设自我评价怎么写比较好成都91获客
  • 思明自助建站软件wordpress renderview
  • 网页浏览河南关键词优化搜索
  • 慈溪市网站建设媒约网网址是多少
  • 企业营销网站建设价格wordpress wordapp插件
  • 建设网站所有步骤海口h5建站模板