欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

MF小测试

发布时间:2025/3/19 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MF小测试 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
#ML之RS之MF:基于简单的张量分解MF算法进行打分和推荐 import numpydef matrix_factorization(R, P, Q, K, steps=5000, alpha=0.0002, beta=0.02): #(迭代次数5000、步长,正则化系数)Q = Q.Tfor step in range(steps):for i in range(len(R)):for j in range(len(R[i])):if R[i][j] > 0:eij = R[i][j] - numpy.dot(P[i,:],Q[:,j])for k in range(K):P[i][k] = P[i][k] + alpha * (2 * eij * Q[k][j] - beta * P[i][k])Q[k][j] = Q[k][j] + alpha * (2 * eij * P[i][k] - beta * Q[k][j])eR = numpy.dot(P,Q)e = 0for i in range(len(R)):for j in range(len(R[i])):if R[i][j] > 0:e = e + pow(R[i][j] - numpy.dot(P[i,:],Q[:,j]), 2)for k in range(K):e = e + (beta/2) * (pow(P[i][k],2) + pow(Q[k][j],2))if e < 0.001:breakreturn P, Q.T#读取user数据并用张量分解进行打分 #定义得分矩阵 R = [[5,3,0,1],[4,0,3,1],[1,1,0,5],[1,0,0,4],[0,1,5,4],]R = numpy.array(R)N = len(R) M = len(R[0]) K = 2 #两个因子P = numpy.random.rand(N,K) Q = numpy.random.rand(M,K)nP, nQ = matrix_factorization(R, P, Q, K) nR = numpy.dot(nP, nQ.T)print(nP) print("-----------------------------") print(nQ) print("-----------------------------") print(nR) print("-----------------------------") print(R)

结果输出: 

 

 

 

总结

以上是生活随笔为你收集整理的MF小测试的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。