室内用户运动时序数据分类
本文在上一篇室内用户时序数据分类的baseline基础上,融合特征提取和树模型对方案进行了提升改进,由于数据量的限制,没有使用CNN等进行分类
赛题介绍
赛题名:室内用户运动时序数据分类
赛道:训练赛道
背景:随着数据量的不断积累,海量时序信息的处理需求日益凸显。作为时间序列数据分析中的重要任务之一,时间序列分类应用广泛且多样。时间序列分类旨在赋予序列某个离散标记。传统特征提取算法使用时间序列中的统计信息作为分类的依据。近年来,基于深度学习的时序分类取得了较大进展。基于端到端的特征提取方式,深度学习可以避免繁琐的人工特征设计。如何对时间序列中进行有效的分类,从繁芜丛杂的数据集中将具有某种特定形态的序列归属到同一个集合,对于学术研究及工业应用具有重要意义。
任务:基于上述实际需求以及深度学习的进展,本次训练赛旨在构建通用的时间序列分类算法。通过本赛题建立准确的时间序列分类模型,希望大家探索更为鲁棒的时序特征表述方法。
比赛链接:https://www.datafountain.cn/competitions/484
数据简介
数据整理自网上公开数据集UCI(已脱敏),数据集涵盖2类不同时间序列,该类数据集广泛应用于时序分类的业务场景。
文件类别 | 文件名 | 文件内容 |
---|---|---|
训练集 | train.csv | 训练数据集标签文件,标签CLASS |
测试集 | test.csv | 测试数据集标签文件,无标签 |
字段说明 | 字段说明.xlsx | 训练集/测试集XXX个字段的具体说明 |
提交样例 | Ssample_submission.csv | 仅有两个字段ID\CLASS |
baseline程序
baseline讲解见前面的博客,这里在baseline的基础上加上svm的参数搜索。(其实加不加感觉差不多)
import pandas as pd
import numpy as np
from sklearn.model_selection import StratifiedKFold, KFold
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
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 = GridSearchCV(SVR(), param_grid={
"kernel": ("linear", 'rbf', 'sigmoid'), "C": np.logspace(-3, 3, 7), "gamma": np.logspace(-3, 3, 7)})
#clf=SVR(kernel='rbf',C=1,gamma='scale')
clf.fit(X_train,label_train)
x1 = clf.predict