室内用户时序数据分类
- 赛题介绍
- 数据简介
- 数据分析
- 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。
由于对数据做了五折,因此提交结果分数会有一点波动。