首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从初始数据集获取效用矩阵?

如何从初始数据集获取效用矩阵?
EN

Stack Overflow用户
提问于 2020-07-24 20:47:39
回答 1查看 128关注 0票数 0

当我应用交替最小二乘法时,我发现需要使用效用矩阵。

我正在处理包含评级文件(userId,MovieId,评级)的2000万个电影数据集。

我知道效用矩阵(M×N),其中M是用户数,N是电影数。

我的问题是:如何从评级文件构建效用矩阵?

EN

回答 1

Stack Overflow用户

发布于 2020-07-25 21:35:36

由于我的计算机无法容纳20M数据集,因此在透视调用期间,我显示了1M数据集的过程。

代码语言:javascript
复制
import re
import os
import zipfile
import numpy as np
import pandas as pd
from sklearn import preprocessing
from urllib.request import urlretrieve

# Creating required folders, if they don't exist
def create_dir(dirname):
    if os.path.exists(dirname):
        print(f"Directory {dirname} already exists.")
    else:  
        os.mkdir(dirname)
        
create_dir('Datasets')

print("Downloading movielens data...")
urlretrieve("http://files.grouplens.org/datasets/movielens/ml-1m.zip", "movielens.zip")
zip_ref = zipfile.ZipFile('movielens.zip', "r")
zip_ref.extractall()
print("Extraction done")


# Loading ratings dataset and renamed extracted folder
ratings = pd.read_csv('ml-1m/ratings.dat', sep='::', names=['userId', 'movieId', 'rating', 'timestamp'])
ratings = ratings.drop(columns=['timestamp'])
ratings.to_csv('Datasets/ratings.csv', index=False)
print(ratings.shape)

pivot_table = ratings.pivot_table(index=['userId'], columns=['movieId'], values='rating')
pivot_table.to_csv('Datasets/user_vs_movies.csv', index=False)
pivot_table.head()

输出:

代码语言:javascript
复制
Downloading movielens data...
Extraction done
(1000209, 3)
movieId 1   2   3   4   5   6   7   8   9   10  ... 3943    3944    3945    3946    3947    3948    3949    3950    3951    3952
userId                                                                                  
1   5.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5   NaN NaN NaN NaN NaN 2.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 rows × 3706 columns
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63073887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档