SVD算法

SVD算法

以下内容来源于参考文献,仅供学习交流

一、什么是SVD算法

奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石

二、SVD算法的应用

隐形语义索引:最早的SVD应用之一就是信息检索,我们称利用SVD的方法为隐性语义检索(LSI)或隐形语义分析(LSA)。
基于SVD的图像压缩、基于协同过滤的推荐引擎、利用SVD简化数据
可应用于优化类问题,路径、空间最优化问题

三、SVD代码的实现

import math
import random
import matplotlib.pyplot as plt

#求平均值
def Average(fileName):
fi = open(fileName, ‘r’)
result = 0.0
cnt = 0
for line in fi:
cnt += 1
arr = line.split()
result += int(arr[2].strip())
return result / cnt

#计算矩阵点积
def InerProduct(v1, v2):
result = 0
for i in range(len(v1)):
result += v1[i] * v2[i]

return result

‘’’
定义预测评分计算式
参数声明:
av:平均值
bu: 用户评分与用户平均的偏差
bi: 项目评分与项目平均的偏差
pu: 用户特征矩阵
qi: 项目特征矩阵
‘’’
def PredictScore(av, bu, bi, pu, qi):
pScore = av + bu + bi + InerProduct(pu, qi)
if pScore < 1:
pScore = 1
elif pScore > 5:
pScore = 5

return pScore

def SVD(configureFile, testDataFile, trainDataF

  • 5
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值