如何把Netflix数据集转换成Movielens格式?
我们的目标是把Netflix数据集的格式转换成:用户id、物品id、评分、时间戳
格式。在开始转换之前,先下载Netflix数据集:netflix-prize-data。点击“Download”,下载文件archive.zip并解压。
我们只选用combined_data
的4个文件此时文件目录如下:
接下来开始转换:
1、先导入需要用到的包
from datetime import datetime
import pandas as pd
import numpy as np
2、读入combined_data_1-4的数据
df1 = pd.read_csv('./combined_data_1.txt', header = None, names = ['user_id', 'rating', 'timestamp'], usecols=[0,1,2]) # 读入combined_data_1
# df2 = pd.read_csv('./combined_data_2.txt', header = None, names = ['user_id', 'rating', 'timestamp'], usecols=[0,1,2]) # 读入combined_data_2
# df3 = pd.read_csv('./combined_data_3.txt', header = None, names = ['user_id', 'rating', 'timestamp'], usecols=[0,1,2]) # 读入combined_data_3
# df4 = pd.read_csv('./combined_data_4.txt', header = None, names = ['user_id', 'rating', 'timestamp'], usecols=[0,1,2]) # 读入combined_data_4df1['rating'] = df1['rating'].astype(float)
# df2['rating'] = df2['rating'].astype(float)
# df3['rating'] = df3['rating'].astype(float)
# df4['rating'] = df4['rating'].astype(float)print('Dataset 1 shape: {}'.format(df1.shape))
# print('Dataset 2 shape: {}'.format(df2.shape))
# print('Dataset 3 shape: {}'.format(df3.shape))
# print('Dataset 4 shape: {}'.format(df4.shape))
print('-Dataset examples-')
print(df1.iloc[::5000000, :])
输出:
Dataset 1 shape: (24058263, 3)
-Dataset examples-user_id rating timestamp
0 1: NaN NaN
5000000 2560324 4.0 2005-12-06
10000000 2271935 2.0 2005-04-11
15000000 1921803 2.0 2005-01-31
20000000 1933327 3.0 2004-11-10
3、合成4个数据集并重构索引
df = df1
# df.append(df2)
# df.append(df3)
# df.append(df4)
df.index = np.arange(0, len(df))
print('Full dataset shape: {}'.format(df.shape))
print('-Dataset examples-')
print(df.iloc[::5000000, :])
输出:
Full dataset shape: (24058263, 3)
-Dataset examples-user_id rating timestamp
0 1: NaN NaN
5000000 2560324 4.0 2005-12-06
10000000 2271935 2.0 2005-04-11
15000000 1921803 2.0 2005-01-31
20000000 1933327 3.0 2004-11-10
4、数据清洗,去除rating为0的数据行
df_nan = pd.DataFrame(pd.isnull(df.rating))
df_nan = df_nan[df_nan['rating'] == True]
df_nan = df_nan.reset_index()item_np = []
item_id = 1for i,j in zip(df_nan['index'][1:],df_nan['index'][:-1]):# 使用numpytemp = np.full((1,i-j-1), item_id)item_np = np.append(item_np, temp)item_id += 1# 考虑最后一条记录和其长度
# 使用numpy
last_record = np.full((1,len(df) - df_nan.iloc[-1, 0] - 1),item_id)
item_np = np.append(item_np, last_record)
print('Item numpy: {}'.format(item_np))
print('Length: {}'.format(len(item_np)))
输出:
Item numpy: [1.000e+00 1.000e+00 1.000e+00 ... 4.499e+03 4.499e+03 4.499e+03]
Length: 24053764
5、将物品(电影)id加入dataframe
def time2stamp(cmnttime): # 时间转时间戳函数cmnttime = datetime.strptime(cmnttime,'%Y-%m-%d')stamp = int(datetime.timestamp(cmnttime))return stampdf = df[pd.notnull(df['rating'])].copy()
df['item_id'] = item_np.astype(int)
df['user_id'] = df['user_id'].astype(int)
df = df.loc[:,['user_id', 'item_id', 'rating', 'timestamp']] # 交换两列位置
df['timestamp'] = df['timestamp'].astype(str).apply(time2stamp) # 时间转成时间戳
print('-Dataset examples-')
print(df.iloc[::5000000, :])
输出:
-Dataset examples-user_id item_id rating timestamp
1 1488844 1 3.0 1125936000
5000996 501954 996 2.0 1093449600
10001962 404654 1962 5.0 1125244800
15002876 886608 2876 2.0 1127059200
20003825 1193835 3825 2.0 1060704000
6、保存dataframe
# df.sort_values(by=["user_id", "timestamp"], ascending=[True, True]) # 先按用户id排序,然后按时间戳排序
df.to_csv('./ratings.dat', sep=',', index=0, header=0)
完成
如何把Netflix数据集转换成Movielens格式?相关推荐
- SSD学习系列(二)LMDB概念以及将VOC数据集转换成LMDB格式
LMDB概念 接上一篇,将SSDa caffen框架代码编译通过后y,接下来就可以利用其脚本将标注好的VOC格式数据集转换成LMDB格式,以便开始SSD模型训练. LMDB是Lightning Mem ...
- 数据集转换成LMDB格式
文章来源https://www.cnblogs.com/dengshunge/p/10841108.html略加修改和补充. 介绍两种LMDB格式数据集的生成,一种是自己的数据集,一种是下载wider ...
- INRIA数据集转换成VOC格式
背景 下面的代码是将INRIA数据集转换成VOC格式.图片是614张. 其中,使用OinginImage文件夹里的Train中Pos和Annotations作为训练,利用Test里的Pos作为测试. ...
- TT100K数据集转换成coco格式,并重新划分
TT100K数据集转换成coco格式,并重新划分 统计每个类别 import os import jsonos.makedirs('annotations',exist_ok=True) #存放数据的 ...
- DAGM2007数据集转换成VOC格式
DAGM2007数据集-to-缺陷数据集VOC格式 DAGM2007数据集下载 数据集简单介绍 转换代码 转换结果 DAGM2007数据集下载 链接: DAGM2007. 下载后把每一类的压缩包解压放 ...
- Caltech 数据集转换成VOC格式
注意本人用pycharm 运行环境是python2.7.14 如果是python3 可能会存在错误 1. Seq文件转化成JEPG图像文件() 运行seq2jpg.py文件,输入.seq文件夹,输出到 ...
- python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化
python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...
- python 怎么将数组转为列表_图片转换成pdf格式怎么操作?什么软件能将图片转为pdf?...
伙伴们好,你们知道如何把图片转为pdf格式吗?前一阵子我参加了一个家居行业大会,在会议上拍摄了不少会议照片,包括主持人讲话.嘉宾出席.观众提问.产品推广等环节都拍摄了不同的角度.拍摄好后,需要传送给写 ...
- xsd文件转图片_图片转换成PDF格式怎么转?图片转换成PDF的软件哪个好?
图片转换成PDF格式怎么转?经验丰富的设计师在完成图片格式的设计作品后都会将图片转成PDF格式文件,这样方便保存以及参加一些设计比赛.同时我们在保存大量图片的时候也可以将图片转换成PDF文件.但是还有 ...
- Win10系统如何将M4A音乐格式转换成MP3格式
M4A和MP3一样也是一种音频格式,不一样的地方就是M4A的音质可能要比MP3好一些(因人而异).那么Win10系统如何将M4A音乐格式转换成MP3格式?其实我们可以利用音频格式转换器来转换M4A音乐 ...
最新文章
- 3d卷积神经网络_HSNets:使用卷积神经网络从2D轮廓预测3D人体模型
- “std::invoke”: 未找到匹配的重载函数
- 使用keepalived加lvs做负载均衡,访问后端的服务器,2分钟后超时,需要重新登录...
- F1.4大光圈专业相机-海鸥CF100
- delphi 画 带箭头的线
- Android 第一个OpenGL ES程序
- oracle函数 MIN([distinct|all]x)
- python函数方法里面用浅复制深复制_图解 Python 浅拷贝与深拷贝
- Linux 系统检测工具
- 《我也能做CTO之程序员职业规划》和《.NET软件设计新思维——像搭积木一样搭建软件》新书发布会 回顾
- 简单几何(线段相交) POJ 2653 Pick-up sticks
- 关于 LimitedConcurrencyLevelTaskScheduler 的疑惑
- 2018百度之星程序设计大赛初赛B——1002hex
- php ip 访问频繁,php刷新过于频繁自动加ip黑名单
- Python干货:破解40大机器学习面试题(包含初中高级)
- 【抽象代数】半群、子群、商群
- 最新搜狗收录提交工具分享
- Cloudera Manager5.14.3集群搭建
- property中ref、value、name的区别
- surfaceView全屏和退出全屏