PCA 應用,簡單的電影推薦

2021-08-17 17:36:57 字數 2425 閱讀 1551

這篇部落格主要介紹

pca演算法的應用

ratings.dat (場次)和

movies.dat

.第二步:pandas 讀取資料

第三步:建立乙個m*u 的rating 矩陣,

m 是電影,u是使用者。

user1_id

user2_id

movie1_id20

movie2_id21

movie2_id02

第四步:標準化

m*u

矩陣(減去均值,因為中心矩才能反應資料的離散的程度)

normalized_mat

第五步:計算協方差矩陣和計算特徵值和特徵向量

**如下

10部電影的索引值。

第七步:從特徵向量中選擇前

k個向量作為代表資料,

movie_id

是推薦電影的索引值,

top_n =10

,是利用

pca選擇出與其相似的十部電影。

其中,也可以使用

svd演算法,

u,s,v

』=svd(a)

。svd

演算法不用計算協方差矩陣(速度要比

pcas

快),且a』

*a等價於

normlize_mat

的協方差矩陣,

v向量列值是

normalized_mat

的主分量!

**如下:

# -*- coding: utf-8 -*-

import numpy as np

import pandas as pd

#讀檔案

data = pd.read_csv(r'c:\users\y\desktop\ml\ml-1m/ratings.dat',

names=['user_id', 'movie_id', 'rating', 'time'],

engine='python', delimiter='::')

movie_data = pd.read_csv(r'c:\users\y\desktop\ml\ml-1m/movies.dat',

names=['movie_id', 'title', 'genre'],

engine='python', delimiter='::')

# 建立乙個m*u的陣列

ratings_mat = np.ndarray(

shape=(np.max(data.movie_id.values), np.max(data.user_id.values)),

dtype=np.uint8)

ratings_mat[data.movie_id.values-1, data.user_id.values-1] = data.rating.values

#歸一化計算特徵向量

normalised_mat = ratings_mat - np.matrix(np.mean(ratings_mat, 1)).t

cov_mat = np.cov(normalised_mat)#

evals, evecs = np.linalg.eig(cov_mat)

def compute_cosine(data,movie_id,top_n=10):

index=movie_id-1

movie_row = data[index, :]

similarity = np.dot(movie_row, data.t)/(np.linalg.norm(movie_row)*np.linalg.norm(data.t))

sort_indexes = np.argsort(-similarity)

return sort_indexes[:top_n]

def print_movie(movie_data,movie_id,top_indexes):

print("推薦的電影是%s"%movie_data[movie_data.movie_id==movie_id].title.values[0])

print("與其相似的%g部電影:\n"%len(top_indexes))

for id in top_indexes+1:

print(movie_data[movie_data.movie_id == id].title.values[0])

k = 50

movie_id = 1 # grab an id from movies.dat

top_n = 10

sliced = evecs[:, :k] # representative data

top_indexes = compute_cosine(sliced, movie_id, top_n)

print_movie(movie_data, movie_id, top_indexes)

spark電影推薦系統的簡單測試

objectmovie users analyzer rddelse if args.length 1 valsc newsparkcontext newsparkconf setmaster masterurl valusersrdd sc.textfile datapath users.dat ...

電影推薦系統的建模

11336241 葉均明 一 概述 由movielens評分資料集作為訓練集 含943名使用者對1682部電影的評分 根據使用者資訊和過往打分進行電影推薦,即允許使用者對自己所看過的電影進行打分,並且根據使用者歷史的打分資訊,為使用者 他對其他未 的電影的打分,或 他對其他電影的評分分類,將 分值高...

應用PCA的建議

pca運用在監督學習演算法下,可以對資料x降維,從而加速學習演算法的速度。如下所示,我們的訓練集x是10000維向量,我們可以通過pca將其降維成z是1000維的向量,此時訓練集從 x,y 變成 z,y 每次輸入x都通過pca的對映變成z,然後再帶入到假設函式中計算。除了加速學習演算法的速度,pca...