2020CCFBDCI训练赛之室内用户时序数据分类baseline

   日期:2020-11-10     浏览:218    评论:0    
核心提示:室内用户时序数据分类赛题介绍数据简介数据分析Baseline程序提交结果赛题介绍赛题名:室内用户运动时序数据分类赛道:训练赛道背景:随着数据量的不断积累,海量时序信息的处理需求日益凸显。作为时间序列数据分析中的重要任务之一,时间序列分类应用广泛且多样。时间序列分类旨在赋予序列某个离散标记。传统特征提取算法使用时间序列中的统计信息作为分类的依据。近年来,基于深度学习的时序分类取得了较大进展。基于端到端的特征提取方式,深度学习可以避免繁琐的人工特征设计。如何对时间序列中进行有效的分类,从繁芜丛杂的数据集

室内用户时序数据分类

  • 赛题介绍
  • 数据简介
  • 数据分析
  • Baseline程序
  • 提交结果

赛题介绍

赛题名:室内用户运动时序数据分类

赛道:训练赛道

背景:随着数据量的不断积累,海量时序信息的处理需求日益凸显。作为时间序列数据分析中的重要任务之一,时间序列分类应用广泛且多样。时间序列分类旨在赋予序列某个离散标记。传统特征提取算法使用时间序列中的统计信息作为分类的依据。近年来,基于深度学习的时序分类取得了较大进展。基于端到端的特征提取方式,深度学习可以避免繁琐的人工特征设计。如何对时间序列中进行有效的分类,从繁芜丛杂的数据集中将具有某种特定形态的序列归属到同一个集合,对于学术研究及工业应用具有重要意义。

任务:基于上述实际需求以及深度学习的进展,本次训练赛旨在构建通用的时间序列分类算法。通过本赛题建立准确的时间序列分类模型,希望大家探索更为鲁棒的时序特征表述方法。

比赛链接:https://www.datafountain.cn/competitions/484

数据简介

数据整理自网上公开数据集UCI(已脱敏),数据集涵盖2类不同时间序列,该类数据集广泛应用于时序分类的业务场景。

文件类别 文件名 文件内容
训练集 train.csv 训练数据集标签文件,标签CLASS
测试集 test.csv 测试数据集标签文件,无标签
字段说明 字段说明.xlsx 训练集/测试集XXX个字段的具体说明
提交样例 Ssample_submission.csv 仅有两个字段ID\CLASS

数据分析

本题是一个二分类的问题,通过对训练集数据的观察,发现数据量很小(210个)且拥有大量的特征(240个),并且对于训练数据的标签值,0和1的分布十分均匀(约各一半)。基于此,使用直接神经网络模型会导致需要训练的参数过多从而获得不理想的结果。而使用树模型,需要调整一些超参数来适应该数据,也比较繁琐。综合以上分析,本文考虑使用最简单的支持向量机来进行分类,结果表明也获得了比较好的结果。

Baseline程序

import pandas as pd
import numpy as np
from sklearn.model_selection import StratifiedKFold, KFold
from sklearn.svm import SVR
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
#分离数据集
X_train_c = train.drop(['ID','CLASS'], axis=1).values
y_train_c = train['CLASS'].values
X_test_c = test.drop(['ID'], axis=1).values
nfold = 5
kf = KFold(n_splits=nfold, shuffle=True, random_state=2020)
prediction1 = np.zeros((len(X_test_c), ))
i = 0
for train_index, valid_index in kf.split(X_train_c, y_train_c):
    print("\nFold {}".format(i + 1))
    X_train, label_train = X_train_c[train_index],y_train_c[train_index]
    X_valid, label_valid = X_train_c[valid_index],y_train_c[valid_index]
    clf=SVR(kernel='rbf',C=1,gamma='scale')
    clf.fit(X_train,label_train)
    x1 = clf.predict(X_valid)
    y1 = clf.predict(X_test_c)
    prediction1 += ((y1)) / nfold
    i += 1
result1 = np.round(prediction1)
id_ = range(210,314)
df = pd.DataFrame({ 'ID':id_,'CLASS':result1})
df.to_csv("baseline.csv", index=False)

提交结果

提交baseline,得分是0.83653846154。
由于对数据做了五折,因此提交结果分数会有一点波动。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服