阿里音乐流行趋势预测大赛—浅尝辄止(一)

    如火如荼的阿里音乐流行趋势预测大赛终于落下帷幕,作者未能全力以赴的好好参与其中拿个名次实在遗憾,作为菜鸟新人还是有不少心里上过不去的坎的,希望接下来能结识更多的爱好者,共同学习进步,争取在下次比赛的时候拿到一个令自己满意的结果,有意向参加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]))**2
    s=m.apply(numpy.sum)
    S=s/N
    sigma=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 phi

i=0
F=0
while (i<2):
    df=numpy.mat(df)
    f=(1-df[i,0])*df[i,1]         #F=(1-sigma)*phi
    F=F+f                         #累加F值
    i=i+1
print (F)                                 #只有一个参赛选手的情况下</span>





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值