‘’第二届“中国高校计算机大赛-大数据挑战赛‘实战

由腾讯主办的第二届“中国高校计算机大赛-大数据挑战赛,2017年“中国高校计算机大赛—大数据挑战赛”(Big Data Challenge)是由教育部高等学校计算机类专业教学指导委员会、教育部高等学校软件工程专业教学指导委员会、教育部高等学校大学计算机课程教学指导委会和全国高等学校计算机教育研究会联合主办、清华大学和腾讯安全平台部联合承办,在腾讯数据平台部DIX平台上开展的高端算法竞赛。大赛面向全球在校生开放,旨在通过竞技的方式提升人们对数据分析与处理的算法研究与技术应用能力,探索大数据的核心科学与技术问题,尝试创新大数据技术,推动大数据的产学研用。

  赛题地址如下:http://bdc.saikr.com/vse/bdc/2017

题目大致是这样的:根据鼠标轨迹判别人与机器,从而防止黑客行为,题目给了3000条训练数据,其中2400条白样本(人),600条黑样本(机器),通过这些训练数据完成对20000条样本的预测。所给的样本是(x,y,t)移动坐标和目标坐标,每个样本的坐标个数不同。x,y为横纵坐标,t为时间

 下面是我的一些实战过程:

在阅读赛题和数据后,我对题目进行了一些分析,感觉有许多想法,但当我着手处理数据时,发现对数据进行处理比较困难,我花了很多时间在查找pandas库上,总结出:一定要先对数据进行一定的处理后再开始想做题的思路,不然数据处理过程会使思路中断。

  下面是对数据处理的过程,所给的x,y,t,之间以','分隔,每个坐标之间以';'分隔,数据类型为str。我们对每条数据采用split函数分隔';',再对每组坐标进行元素级操作,这里我用的是map函数,对数据处理完成后,接下来应该对数据进行可视化,运用python中的maplotlib库进行画图,可我对这个库并不熟悉,因此只对几组坐标进行了绘制,但在实际过程中绘图是一个很重要的环节,他可以帮助你发现一些十分有用的特征。

  接下来就是特征提取环节,首先提一下,我的特征提取一开始并没有做成函数的形式,在对训练集和测试集处理时需要两段完全相同的代码,直到后来才改用了函数,建议大家分函数、分文件地写程序,这样在改代码时要方便得多。下面是我所提取的第一个特征:

def  jl(train_mb,train_zb,s):
    x4=list()
    x5=list()
    x6=list()
    fl=train_mb.map(lambda x:x.split(','))
    for i in fl:
        x4.append(float(i[0]))
        x5.append(float(i[1]))
    x4=pd.Series(x4)
    x5=pd.Series(x5)
    x4=pd.concat([x4,x5],axis=1)
    tim1=list()
    tim2=list()
    train_t=train_zb.map(lambda x:x.split(';'))
    for ti in train_t:
        ti.pop()
        le.append(len(ti))
        for i in ti:
            time=i.split(',')       
        tim1.append(float(time[0]))
        tim2.append(float(time[1]))
    tim1,tim2=pd.Series(tim1),pd.Series(tim2)
    tim=pd.concat([tim1,tim2],axis=1)
    
    tim,x4=np.array(tim),np.array(x4)
    for i in range(s):
        x6.append(np.sqrt(np.sum(np.square(x4[i] - tim[i]))))
    return x6

这是我提取第一个特征的代码,提交后成绩并不好,只有40多分,但是当时还是挺开心的,觉得只要再多提几个就可以上80,但是结果并不是这样。。。。。后来直到我提取了
十几个特征,分数才到60多,当时在网上找博客,发现了一些更好用的模型,比如GBDT、XHBOOST,下面是我找的博客地址:
http://blog.csdn.net/sb19931201/article/details/52577592

但是发现,即使使用了高级模型,分数依然没有提高太多,问了下一起做比赛的同学,他已经提了40多个特征
了。。。果然是200行特征工程,20行模型调参。
我的特征提取是一个个提出我想要的,但是对于现在的我来说批量提取特征效率更高,同时应该学会使用数据可视化,这样才能更准确的提取特征。
下面是我的全部代码:https://github.com/Ligouhi/China-Bigdata-compitition/tree/master
这个参考价值并不高,待会我会写一个大佬的开源。



coding the new world
与君共勉




你可能感兴趣的:(ML)