天池大坑-阿里音乐尝试(1)

简单尝试一下阿里音乐,最多做到baseline吧,主要是想熟悉一下流程和工具
so,第一步将数据导入SQL中,百万级有Mysql就可以了,还是习惯windows下的XAMPP+NaviCat,简单好用。
http://www.site-digger.com/html/articles/20120525/34.html

导入数据到MySQL出现了小问题,104万的数据导入后变成了522万,初步估计是分隔符出现了问题。只好放弃导入向导,自定义sql语句:

load data infile 'D:\\alimusic\\mars_tianchi_user_actions.csv' 
into table `mars_tianchi_user_actions` 
fields terminated by ',' optionally enclosed by '"' escaped by '"' 
lines terminated by '\n'; 

结果居然是566万。。。再导出来看,发现“数据表长度超过工作表外,会丢失部分有效数据。。。”原来真的是500万

用python读入:5652232

考虑用8月份数据做验证集:共1016225条数据

SELECT
mars_tianchi_songs.song_id,
mars_tianchi_songs.artist_id,
mars_tianchi_user_actions.user_id,
mars_tianchi_user_actions.song_id,
mars_tianchi_user_actions.Ds,
mars_tianchi_user_actions.action_type
FROM
mars_tianchi_songs ,
mars_tianchi_user_actions
WHERE
mars_tianchi_songs.song_id = mars_tianchi_user_actions.song_id AND
mars_tianchi_user_actions.Ds < 20150800

统计成提交结果:

SELECT
`0801(1016625)`.artist_id,
`0801(1016625)`.Ds,
count(*) AS plays
FROM
`0801(1016625)`
WHERE
`0801(1016625)`.action_type = 1
GROUP BY
`0801(1016625)`.artist_id,
`0801(1016625)`.Ds

这里先只统计action_type = 1的,文件名test_08_1(1500).csv

考虑自己的听歌习惯:1、每天打开“我喜欢”或者某个收藏的列表,任由其播放;2、如果某天有时间,可能会查看推荐歌单,或直接查找某一类型歌曲;3、如果观看了电视剧或电影觉得曲目不错会查找,听说某个喜欢的歌手出了一首新歌会查找,网络空降神曲会查找。

相信大部分的人习惯与我类似,(音乐发烧友的数据于统计无太大意义,暂不考虑)所以每个用户的每天可能有稳定的“播放”曲目,可以认为会一直播放,需要优先作出处理。之后是对个性化数据提取特征再建立模型求解,回归模型可能会好些。师兄说先建立分类模型,再尝试回归效果会好些。

对第一个用户进行分析,发现思路应该没错,但是该用户没有4月份之后的记录,所以要对这类突然“消失”的用户做出处理,第二个用户居然只有三条记录。。。
必须分析一下每个用户的记录数了:

SELECT
mars_tianchi_user_actions.user_id,
mars_tianchi_user_actions.song_id,
mars_tianchi_user_actions.gmt_create,
mars_tianchi_user_actions.action_type,
mars_tianchi_user_actions.Ds,
count(*) AS nums
FROM
mars_tianchi_user_actions
GROUP BY
mars_tianchi_user_actions.user_id
ORDER BY
nums DESC

本着不用也要先存下的原则设计”复杂“结构如下

用户字典:userdict 嵌套字典
{“user1”:{“ltime”:”最后记录时间”,”stime”:”最先记录时间”,”songl”:”歌曲列表”,”typel”:”用户行为列表”,”numl”:”歌曲播放计数列表”,”altimel”:”歌曲播放时间列表”,”sondict”:”常用歌曲字典”}}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值