日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

9.5 程序示例--推荐系统-机器学习笔记-斯坦福吴恩达教授

發布時間:2025/4/5 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 9.5 程序示例--推荐系统-机器学习笔记-斯坦福吴恩达教授 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

程序示例–推薦系統

推薦模型

在推薦模型中,我們將暴露:

  • 訓練接口 train()
  • 預測接口 predict(Theta, X)
  • 獲得推薦接口 getTopRecommends(Theta, X, i, count, rated, items):

并且,使用 scipy.optimize.minimize 來最小化代價函數:

# coding: utf8 # recommender_system/recommender.py import numpy as np from scipy.optimize import minimize, check_grad from pydash import py_def getRecommender(Y, R, params=None, n=10, theLambda=10, maxIter=100):"""訓練方法Args:Y 評價矩陣R 是否評價矩陣params 是否具有初始化參數n 商品特征數theLambda 正規化參數maxIter 最大迭代次數Returns:train 訓練方法predict 預測方法"""# 商品數,用戶數nm, nu = Y.shape# normalize YMeanmu = np.mean(Y, axis=0)mu = np.zeros((Y.shape[0], 1), dtype=np.float)for i in range(nm):totalRates = np.sum(Y[i])validCount = len(np.nonzero(R[i])[0])mu[i] = totalRates / validCountY = Y - mudef unroll(Theta, X):"""參數折疊Args:Theta 用戶偏好矩陣X 商品內容矩陣Returns:vector 折疊后的參數"""return np.hstack((X.A.T.flatten(), Theta.A.T.flatten()))def roll(vector):"""參數回復Args:vector 參數向量Returns:Theta 用戶偏好矩陣X 商品內容矩陣"""X = np.mat(vector[:nm * n].reshape(n, nm).T)Theta = np.mat(vector[nm * n:].reshape(n, nu).T)return Theta, Xdef initParams():"""初始化參數Returns:Theta 用戶對內容的偏好矩陣X 商品內容矩陣"""Theta = np.mat(np.random.rand(nu, n))X = np.mat(np.random.rand(nm, n))return Theta, Xdef regParams(param):"""正規化參數Args:param 參數Return:regParam 正規化后的參數"""return theLambda * 0.5 * np.sum(np.power(param, 2))def J(params):"""代價函數Args:params 參數向量nu 用戶數nm 商品數n 特征數Return:J 預測代價"""# 參數展開Theta, X = roll(params)# 計算誤差rows, cols = np.nonzero(R)# 預測H = predict(Theta, X)Diff = H - YDiff[R != 1] = 0error = 0.5 * np.sum(np.power(Diff, 2))# 正規化 ThetaregTheta = regParams(Theta)# 正規化 xregX = regParams(X)return error + regTheta + regXdef gradient(params):"""梯度下降Args:params 參數向量Returns:grad 梯度向量"""Theta, X = roll(params)ThetaGrad = np.mat(np.zeros(Theta.shape))XGrad = np.mat(np.zeros(X.shape))error = predict(Theta, X) - Yerror[R != 1] = 0ThetaGrad = error.T * X + theLambda * ThetaXGrad = error * Theta + theLambda * Xreturn unroll(ThetaGrad, XGrad)def train():"""訓練方法Returns:Theta 用戶的偏好矩陣X 商品的內容矩陣"""# 初始化參數if not params:Theta, X = initParams()else:Theta = params['Theta']X = params['X']# 最小化目標函數res = minimize(J, x0=unroll(Theta, X), jac=gradient,method='CG', options={'disp': True, 'maxiter': maxIter})Theta, X = roll(res.x)return Theta, Xdef predict(Theta, X):"""預測Args:Theta 用戶對內容的偏好矩陣X 商品內容矩陣Return:h 預測"""return X * Theta.T + mudef getTopRecommends(Theta, X, i, count, rated, items):"""獲得推薦Args:Theta ThetaX Xi 用戶下標count 獲得推薦的數目rated 已經評價的類目iditems 商品清單Returns:topRecommends 推薦項目"""predictions = predict(Theta, X)[:, i]return py_(items) \.map(lambda item, idx: (item, predictions[idx])) \.sort_by(lambda item: item[1], reverse = True) \.take(count) \.value()return train, predict, getTopRecommends

測試

我們選取了一份電影打分數據,來訓練推薦系統。并且,我們新建了一個用戶,并且評價了一些電影:

New user ratings: Rated 4 for Toy Story (1995) Rated 3 for Twelve Monkeys (1995) Rated 5 for Usual Suspects, The (1995) Rated 4 for Outbreak (1995) Rated 5 for Shawshank Redemption, The (1994) Rated 3 for While You Were Sleeping (1995) Rated 5 for Forrest Gump (1994) Rated 2 for Silence of the Lambs, The (1991) Rated 4 for Alien (1979) Rated 5 for Die Hard 2 (1990) Rated 5 for Sphere (1998)

系統的訓練結果如下:

Traing Result: Warning: Maximum number of iterations has been exceeded.Current function value: 71102.253824Iterations: 100Function evaluations: 156Gradient evaluations: 156

系統向新用戶推薦的內容為:

Top recommendations for you: Predicting rating 4.5 for movie Great Day in Harlem, A (1994) Predicting rating 4.1 for movie Someone Else's America (1995) Predicting rating 3.9 for movie Aiqing wansui (1994) Predicting rating 3.7 for movie Entertaining Angels: The Dorothy Day Story (1996) Predicting rating 3.7 for movie Marlene Dietrich: Shadow and Light (1996) Predicting rating 3.5 for movie They Made Me a Criminal (1939) Predicting rating 3.5 for movie Santa with Muscles (1996) Predicting rating 3.5 for movie Tokyo Fist (1995) Predicting rating 3.4 for movie Star Kid (1997) Predicting rating 3.3 for movie Window to Paris (1994)

總結

以上是生活随笔為你收集整理的9.5 程序示例--推荐系统-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。