本课题中使用的是anaconda中的jupyter notebook编译器,使用这个anaconda的优势在于安装它的同时会打包安装许多必要的库(library),例如在后面会被使用到的pandas库。并且在安装Anaconda的同时,python的运行环境也会被一并配置好,这样可以帮助使用者省去一些不必要的麻烦。Anaconda可以在https://www。continuum。io/downloads中下载。[7]

算法首先需要做的是导入数据,将下载数据集解压到数据文件夹,打开anaconda中的jupyter notebook然后输入以下代码:

import os

import pandas as pd

import sys

data_folder = os。path。join(os。path。expanduser("D:"), "python")

user_actions_filename = os。path。join(data_folder, "mars_tianchi_user_actions。csv")

其中要确保user_actions_filename指向mars_tianchi_user_actions。csv文件解压后所在的文件夹。

用pandas加载数据文献综述

虽然数据文件mars_tianchi_user_actions原本就有一个很好的形态,但是我们还是需要调整pandas。read_csv的一些默认参数来做一些调整。由于源文件没有标题行,也就是说这个文件的从第一行开始就是数据,所以我们需要设置列名。加载文件时,我们用header=None语句告诉pandas不要将第一行读取为标题,然后设置列名。[8]以下是代码:

all_users_actions = pd。read_csv(user_actions_filename, header=None,names=["user_id", "song_id",  "gmt_create", "action_type","use_datetime"])

通过使用head()语句可以来查看前几条代码:

all_users_actions。head(10)

图1 数据展示图

稀疏的矩阵格式

一般在数据挖掘过程中我们使用的是一种稀疏的数据格式,其中每一行代表一个用户,每一列代表用户对歌曲的行为。在本文使用的数据集中包含349946个用户以及其对10278首歌曲的行为记录,这就意味着如果按照一般格式来储存数据会遇到一些问题,因为矩阵将会很大。而且面对如此庞大的矩阵,算法在运算上也会遇到很多麻烦。不过这样的矩阵有这一种特性,在这样的矩阵中有很多单元格是空的。也就是说,很多用户在大多数的歌曲上是没有行为的。例如编号为1的用户在编号为1的歌曲上有可能是没有行为的。

我们使用的数据集所给出的是一种更加紧凑的全矩阵格式,任意不在数据集中的用户歌曲组合会被假设不存在,而不是在内存中储存一推零。这样的操作可以节省大量的空间,这样的类型格式被称为稀疏的矩阵格式(sparse matrix format)。一般来说如果你预计数据集中有百分之六十以上为空或者为零,那么使用稀疏的矩阵格式占用的内存比较少。

在稀疏矩阵上做运算时,那些为零或者为空的信息会被忽略。我们常把重点放在现有的数据上,计算比较这些数据。相反,为零或者为空的数据不会被关注。

上一篇:java面向中小物流公司的物流管理系统设计和实现
下一篇:没有了

MATLAB基于植物图像的智能识别系统研究

基于网络的通用试题库系...

基于Apriori算法的电影推荐

基于PageRank算法的网络数据分析

基于神经网络的验证码识别算法

基于网络的通用试题库系...

python基于决策树算法的球赛预测

高校财务报销审核中的问...

水下爆炸威力的研究现状概况

羽毛球21分制对男单后场技战术影响的研究

浅论医院會计内部控制中...

阿里巴巴国际站对中小企...

外语磨蚀的“非语言”影响因素分析

天秤男喜欢的女生外形,...

企业资产重组中的价值评估

医学生寨卡病毒病防控知识调查及分析

现茬一分钱都没洧怎么办...