浅尝辄止(一)"/>
阿里音乐流行趋势预测大赛—浅尝辄止(一)
如火如荼的阿里音乐流行趋势预测大赛终于落下帷幕,作者未能全力以赴的好好参与其中拿个名次实在遗憾,作为菜鸟新人还是有不少心里上过不去的坎的,希望接下来能结识更多的爱好者,共同学习进步,争取在下次比赛的时候拿到一个令自己满意的结果,有意向参加kaggle等类似比赛的欢迎联系我呦~~~~~
因为没有一个好的成绩,所以也没有太多的所谓权威发言权,但是初尝此类大数据比赛还是挺有感觉的,数据的处理过程很有意思,在此本文暂且只介绍评判值F的计算方法,还有对阿里给出的数据中时间戳的处理,如有新的内容将在接下来的博文中继续添加,欢迎童鞋一起交流进取~~~~~~呵呵
赛题题目就不过多介绍了,童鞋可以去天池大数据竞赛网站去看就可以了,索要预测的就是一个艺人的某一歌曲在9月1日到10月30日的每天的播放量,也就是这60天的数据;大赛给了两个大表格:
这是用户行为表格,记录了用户对每一首歌曲的播放下载等操作;
这张表格记录了艺人发行的每一首歌曲的信息,比如发行时间,以及歌曲演唱语言等等;
这个是要求我们提交的表格形式,左边是歌曲编号,中间是歌曲的播放量,最右边是对应的时间;
下面我们看一下我们预测出来的结果列表(为方便理解数据为随便写的):可以看到一位歌手的一首歌曲对应了60天每天的播放量
而我们假设事实上的每位艺人(对应一首歌曲)在60天内每天的实际播放量为:
最后大赛给出的评分标准F值计算方法为:
为方便理解计算我们暂且假定每位艺人对应一首歌曲,下面给出F值的计算方法程序:
<span style="font-size:14px;">#-*-coding:utf-8-*-
import pandas as pd
import math
predict=pd.read_csv('E:\\Tianchi\\(sample)mars_tianchi_artist_plays_predict.csv')
result=pd.read_csv('E:\\Tianchi\\sample1.csv')import numpy
import math
t=(predict.loc[:,['times']]/result.loc[:,['times']]+1)**2
m=t.apply(numpy.sum)
math.sqrt(m)i=0
s=0
s=float(s)
m=0
m=float(m)
sigma=0
sigma=float(sigma)
N=60
N=float(N)
df=pd.DataFrame(numpy.random.randn(0,2),columns=['sigma','phi']) # 0行两列
while (i<2): #我们假定数据 一人一首歌 且数据中只有两位歌手,对应共两首歌d=(predict.iloc[i*60:(i*60+60),1:2])-(result.iloc[i*60:(i*60+60),1:2]) m=(d/(result.iloc[i*60:(i*60+60),1:2]))**2s=m.apply(numpy.sum)S=s/Nsigma=math.sqrt(S) #sum=numpy.mat(s)p=(result.iloc[i*60:(i*60+60),1:2]).apply(numpy.sum)phi=math.sqrt(p)df=df.append({"sigma":sigma,"phi":phi},ignore_index=True)i=i+1
df # 一个艺人(歌曲)对应一对sigma phii=0
F=0
while (i<2):df=numpy.mat(df)f=(1-df[i,0])*df[i,1] #F=(1-sigma)*phiF=F+f #累加F值i=i+1
print (F) #只有一个参赛选手的情况下</span>
更多推荐
阿里音乐流行趋势预测大赛—浅尝辄止(一)
发布评论