精华内容
下载资源
问答
  • 智能穿戴设备上安装了很多微型传感器,包括:重力感应器、加速度传感器、方向感应器、三轴陀螺仪、距离传感器、光线传感器、方位...通过机器学习建模,构建分类预测模型。 1. 数据预处理 from sklearn import metric.

    智能穿戴设备上安装了很多微型传感器,包括:重力感应器、加速度传感器、方向感应器、三轴陀螺仪、距离传感器、光线传感器、方位感应器等等。

    BasicMotions数据集就是利用智能手表上的3D加速计3D陀螺仪传感器分别对步行休息跑步打羽毛球四项活动进行数据采集,该数据集由四名学生戴着智能手表进行,参与者被要求分别做四项运动,间隔0.1秒对数据进行一次采样,持续10秒,每项运动采集五次数据。
    在这里插入图片描述

    通过机器学习建模,构建分类预测模型。

    1. 数据预处理

    from sklearn import metrics
    from sklearn.model_selection import train_test_split
    from sktime.datasets import load_basic_motions
    
    X, y = load_basic_motions(return_X_y=True)
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
    print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)
    print(X.dtypes)
    

    2. 模型训练

    对多元时序数据进行机器学习建模可以采用很多常用的算法模型,但时序数据与截面数据有着本质的区别。例如,在向量距离计算上,截面数据向量通常采用欧几里得公式计算,但时间序列数据存在多种相似或距离函数,其中最突出的是DTW(Dynamic Time Warping,动态时间归整)算法。可以将6个维度的传感数据串联成1维数据,然后通过Knn算法(dtw)进行快速分类建模。也可以使用Bespoke分类算法进行多元变量建模;本文选用MrSEQLClassifier包提供的Bespoke分类算法进行演示:

    from sktime.classification.shapelet_based import MrSEQLClassifier
    # Bespoke classification algorithms
    ms = MrSEQLClassifier()
    # fit training data
    ms.fit(X_train, y_train)
    
    predicted = ms.predict(X_test)
    
    # Classification accuracy
    print("Accuracy with mr-seql: %2.3f" % metrics.accuracy_score(y_test, predicted))
    Accuracy with mr-seql: 1.000
    
    展开全文
  • UCR时序数据

    2019-05-07 23:05:35
    本资源为最新UCR时序数据集,包括128个时序数据时序数据是指时间序列数据。时间序列数据是同一统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,...
  • 2020CCFBDCI训练赛之室内用户运动时序数据分类baseline

    千次阅读 热门讨论 2020-11-08 16:01:05
    室内用户时序数据分类赛题介绍数据简介数据分析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。
    由于对数据做了五折,因此提交结果分数会有一点波动。

    展开全文
  • 在诸多时序数据分类算法中,有一类算法借助时序数据的局部特征对时序数据进行分类,它们取得了不错的分类结果,然而其时间复杂度以及分类精度依旧存在可见的提升空间.本文提出的微局部特征二分类算法,着眼于局部...
  • 数据挖掘中适用于分类时序数据特征提取方法.pdf
  • 室内用户运动时序数据分类赛题介绍数据简介baseline程序tsfresh对时序数据进行特征提取lgb训练和分类模型融合结果按格式写入csv文件提交结果 本文在上一篇室内用户时序数据分类的baseline基础上,融合特征提取和树...


    本文在上一篇室内用户时序数据分类的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(X_valid)
        y1 = clf.predict(X_test_c)
        prediction1 += ((y1)) / nfold
        i += 1
    #result1 = np.round(prediction1)
    result1 = prediction1
    
    
    

    为了为后续模型融合做准备,这里保留原始的预测结果result1,不进行四舍五入

    tsfresh对时序数据进行特征提取

    当我们对时序数据进行特征提取时,常常用到的方法包括滑动平均、指数平滑等等,tsfresh库可以为我们提供几十或者几百个特征,包括时序能量等等,操作非常方便。下面是对本赛题进行特征提取的步骤和代码:
    1.import包和数据读取

    import pandas
    import numpy as np
    from sklearn.model_selection import cross_val_score
    from sklearn.preprocessing import LabelEncoder
    from sklearn.model_selection import StratifiedKFold
    from sklearn.preprocessing import StandardScaler
    from sklearn.pipeline import Pipeline
    
    #数据加载
    dataframe = pandas.read_csv("train.csv")
    dataframe_test = pandas.read_csv("test.csv")
    
    X = dataframe.iloc[:,1:241].astype(float)
    Y = dataframe.iloc[:,241]
    X_test = dataframe_test.iloc[:,1:241].astype(float)
    

    2.对数据进行重构
    对数据重构是为了方便之后特征的提取,格式可以从官方文档查看,id代表第几个训练样本,time是每一个训练样本的不同时间点,time_series是相应id的训练样本在time点的值。代码如下:

    data_new = list()
    for i in range(len(X)):
        data_new.append(X.loc[i])
    data_new = np.array(data_new).reshape(-1,1)
    time_id = np.tile(np.array([i for i in range(0,240)]) , len(X)).reshape(-1,1)
    id_index = np.array([i for i in range(0,210)]).repeat(240).reshape(-1,1)  
      
    data_format = pandas.DataFrame(np.concatenate([id_index,time_id,data_new],axis=1))
    data_format.columns = ['id','time','time_series']
    

    3.从训练数据里提取特征
    下面利用extract_features和select_features从训练数据中提取和筛选数据

    from tsfresh import extract_features
    extracted_features = extract_features(data_format, column_id="id", column_sort="time")
    
    #特征筛选
    from tsfresh import select_features
    from tsfresh.utilities.dataframe_functions import impute
    impute(extracted_features)
    features_filtered = select_features(extracted_features, Y)
    
    from tsfresh import feature_extraction
    kind_to_fc_parameters = feature_extraction.settings.from_columns(features_filtered)
    

    4.对测试数据进行重构并且提取相同的特征
    下面对测试数据进行处理,先按训练数据同样的方式构造数据,然后提取与训练数据相同的特征

    #测试数据重构
    data_new = list()
    for i in range(len(X_test)):
        data_new.append(X_test.loc[i])
    data_new = np.array(data_new).reshape(-1,1)
    time_id = np.tile(np.array([i for i in range(0,240)]) , len(X_test)).reshape(-1,1)
    id_index = np.array([i for i in range(0,104)]).repeat(240).reshape(-1,1) 
    data_format_test = pandas.DataFrame(np.concatenate([id_index,time_id,data_new],axis=1))
    data_format_test.columns = ['id','time','time_series']
    
    features_filtered_test = extract_features(data_format_test, column_id="id", column_sort="time",
                                              kind_to_fc_parameters =kind_to_fc_parameters)
    
    features_filtered_test = features_filtered_test[features_filtered.columns]
    

    可以通过下面的代码查看相应的特征:

    features_filtered_test.info()
    

    本文提取了67个特征,相比于原本的200多个点,已经大大降维了,下面展示了提取的所有特征
    提取的67个特征
    可以看出有些特征的名称是不符合lgb处理时的特征命名规范的,因此我们需要在后面训练lgb之前修改特征名称:

    new_col = ['fea%s'%i for i in range(67)]
    print(new_col)
    features_filtered_test.columns = new_col
    features_filtered.columns = new_col
    

    lgb训练和分类

    下面根据上节提取的特征,使用lgb模型进行预测、
    定义10折交叉验证和lgb参数等

    import lightgbm as lgb
    from sklearn.metrics import roc_auc_score
    
    num_folds = 10
    folds = StratifiedKFold(n_splits=num_folds, shuffle=True, random_state=2020)
    test_result = np.zeros(len(features_filtered_test))
    auc_score = 0
    
    params = {'num_leaves': int(16), 
              'objective': 'regression', 
              'max_depth': int(4),
               'min_data_in_leaf': int(5),
               'min_sum_hessian_in_leaf': int(0),
              'learning_rate': 0.18,
              'boosting': 'gbdt',
              'feature_fraction': 0.8,  
              'bagging_freq': int(2),
              'bagging_fraction': 1,
              'bagging_seed': 8,
              'lambda_l1':  0.01,             
              'lambda_l2': 0.01,     
              'metric': 'auc',  ##评价函数选择
              "random_state": 2020, #随机数种子,可以防止每次运行的结果不一致
              }
    

    模型的训练和预测

    for fold_, (trn_idx, val_idx) in enumerate(folds.split(features_filtered, Y)):
        print("Fold: ", fold_ + 1)
        X_train, y_train = features_filtered.iloc[trn_idx], Y.iloc[trn_idx]
        X_valid, y_valid = features_filtered.iloc[val_idx], Y.iloc[val_idx]
        trn_data = lgb.Dataset(X_train, y_train)
        val_data = lgb.Dataset(X_valid, y_valid, reference=trn_data)
        
        clf = lgb.train(params,
                        trn_data,
                        10000,
                        valid_sets=val_data,
                        verbose_eval=50,
                        early_stopping_rounds=50)  
        y_pred = clf.predict(X_valid, num_iteration=clf.best_iteration)
        auc = roc_auc_score(y_valid, y_pred)
        print(auc)
        auc_score += auc
        
        preds = clf.predict(features_filtered_test, num_iteration=clf.best_iteration)
        test_result += preds    
    

    预测结果保存在test_result中,输出auc检查

    auc_score = auc_score / folds.n_splits
    print("AUC score: ", auc_score)
    test_result = test_result / folds.n_splits
    Y_test = np.round(test_result)
    

    另外,博主还尝试用svm和提取的特征进行分类,但是效果没有lgb理想。

    模型融合

    使用上述的特征提取+lgb单模型预测,预测结果提交的得分是0.92+,比baseline中的0.83左右要高。
    为什么进行模型融合能提高准确率?因为我们分别使用了svm分类和lgb回归,它们一个是结构风险最小化的模型,一个是经验风险最小化的模型,将两者融合是有助于准确率的提升的。这里模型的融合有一些技巧,本方案的思路很简单:
    1)如果两个模型同时预测为正类或者负类则输出相应的预测结果(正类或者负类);
    2)如果两个模型一个预测正类一个预测负类,那么看它们预测结果和0.5的差值,谁的差值大则以谁的预测结果为准,不过因为svm的准确率要低一些,因此在此基础上还设计了一个阈值(代码中使用的是0.1)
    具体的过程见下面的代码:

    ans = [0 for i in range(104)]
    for i in range(104):
        if result1[i]>0.5 and test_result[i]>0.5:
            ans[i] = int(1)
        if result1[i]<0.5 and test_result[i]<0.5:
            ans[i] = int(0)
        if result1[i]>0.5 and test_result[i]<0.5:
            d1 = result1[i]-0.5
            d2 = 0.5 - test_result[i]
            if d1>d2+0.1:
                ans[i] = int(1)
            else:
                ans[i] = int(0)
        if result1[i]<0.5 and test_result[i]>0.5:
            d1 = 0.5 - result1[i]
            d2 = test_result[i] - 0.5
            if d2+0.1>d1:
                ans[i] = int(1)
            else:
                ans[i] = int(0)
    

    最终的预测结果保存在ans中
    还有很多模型融合的方法,这里不一一列举了,简单的用结果进行加权也可以做到上述的效果

    结果按格式写入csv文件

    将预测结果ans按提交格式写入csv文件

    id_ = range(210,314)
    df = pd.DataFrame({'ID':id_,'CLASS':ans})
    df.to_csv("baseline22.csv",index=False)
    

    提交结果

    改进方向

    1. 使用新的模型融合的方式,这里只是简单的利用规则融合;
    2. 尝试CNN等网络模型进行分类;
    展开全文
  • 时序数据集获取(分类、预测) 数据范围所涉较广 UCR Time Series Classification Archive 分类数据集 http://www.timeseriesclassification.com/dataset.php添加链接描述

    时序数据集获取(分类、预测)
    数据范围所涉较广

    UCR Time Series Classification Archive

    分类数据集
    http://www.timeseriesclassification.com/dataset.php添加链接描述

    展开全文
  • 时序数据的分析

    千次阅读 2018-12-23 21:20:51
    最近工作中遇到了时序预测问题,查询了部分博客找到部分特征工程的处理过程,感觉还可以分享一下: 参考地址:https://www.cnblogs.com/bradleon/p/6832867.html 原始数据的检测(波动,平稳性,周期,方差等)和...
  • CCF2020训练赛-室内用户运动时序数据分类baseline

    千次阅读 热门讨论 2020-11-13 19:48:58
    文章目录前言一、赛题地址二、赛题介绍数据简介提交样例评测标准三、分析赛题和思路1.训练集和测试集大小:2.数据处理3.模型训练和预测四、所有代码五、总结 前言 本人也是数据科学竞赛的小白,仅仅分享一个本人的...
  • 时序数据特征提取

    千次阅读 多人点赞 2020-07-13 21:58:54
    时序数据特征提取时间序列的表示方法分段线性表示分段线性表示符号化聚合近似时间序列的相似性度量方法Minkowski距离动态时间弯曲符号化距离基于模型的距离度量方法时间序列的特征提取方法基于统计特征的...
  • X = {X1, X2, ...}, also is X = {Xt : t∈T} y ∈ {0,1} 乍看之下,时序数据的异常检测,输入数据形式简单,任务也很明确,一般情况输入的数量也很小,很容易设计各种算法来做异常检测,而且有不同类型的大量...
  • 利用差分和一分类方法进行时序数据异常检测 (差分法针对时序数据的周期性进行处理) 一、文字流程 1. 读取数据,填充缺失值,设置时间序列长度,绘制原始数据曲线图。 2. 计算自相关系数,判断周期性...
  • 在使用深度学习处理时序数据时,RNN是经常用到的模型之一。RNN之所以在时序数据上有着优异的表现是因为RNN在 ttt 时间片时会将t−1t-1t−1时间片的隐节点作为当前时间片的输入。这样有效的原因是之前时间片的信息也...
  • 什么是时序数据?如何存储?如何分析并挖掘其中的价值?
  • 基于LSTM的时序数据预测

    千次阅读 2019-09-02 21:27:58
    数据处理文件data_provider.py import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras....
  • MATLAB格式的几个常用多变量时序数据集,可以用于分类或者聚类研究。包括ArabicDigits、AUSLAN、CharacterTrajectories、CMUsubject16、ECG、JapaneseVowels、KickvsPunch、Libras、NetFlow、UWave、Wafer、...
  • 主要讲解数据挖掘 中用于分类时序数据特征提取方法,很好的学习资料
  • 时序数据表示学习

    2021-10-20 13:04:35
    时序数据表示学习研究背景及工作概述 时序数据在我们的日常生活中广泛存在,随着采集设备不断升级,各类传感器的大规模部署,每天都在以数以亿计的速度产生时序数据。 主要包括遥感领域的GPS轨迹数据,包括卫星通讯...
  • 简介:目前,物联网、工业互联网、车联网等智能互联...本文介绍了现有的时序数据压缩解压技术,分类介绍了不同算法的特点和优劣势。 作者 | 仁威 来源 | 阿里技术公众号 摘要:目前,物联网、工业互联网、车联网等.
  • 摘要:异常检测是目前时序数据分析最成熟的应用之一,有效的异常检测被广泛用于现实世界的很多领域,例如量化交易,网络安全检测、自动驾驶汽车和大型工业设备的日常维护。本文主要对目前主流的异常检测算法进行汇总...
  • 时序数据的特点

    千次阅读 2020-12-22 11:22:52
    1.时序数据的特点以及大数据背景下的可优化空间?  ​  大数据时代已经到来了很多年,大数据解决方案基本成熟, Hadoop集群处理方案基本成为了一个处理大数据的最佳实践。他所处理的数据包含结构化,半结构化,非...
  • 时序数据处理应用于物联网、车联网、工业互联网领域的过程数据采集、过程控制,并与过程管理建立一个数据链路,属于工业数据治理的新兴领域。从工具维度看,时序数据处理工具与传统时序数据库的差异很...
  • ES 处理时序数据

    千次阅读 2020-04-27 20:17:55
    随着时间增加,时序数据的数据量会不断上升,单索引文档过多时,搜索效率会下降,而且早晚会达到分片上限。 通常我们只关心最近时间的数据,时间过去越久,信息的价值就会下降。 最直接的办法是就是把过期的一些文档...
  • 物联网海量时序数据存储有哪些挑战?如何应对
  • 在前面说了PyG这个框架,但是这个框架处理数据其实没那么简单,并且有时候我们想要改变底层的图卷积框架时就无能为力了,所以这一章说一下用PyTorch怎么写出图卷积并且实现交通流量数据的预测。但在这之前,需要先...
  • 分类-物理装置-一种时序数据的处理方法及装置.zip
  • 随着工业物联网的快速发展,工业企业...时序数据管理主要通过对时序数据的采集、存储、查询、处理和分析帮助企业实时监控企业的生产与经营过程。 时序数据在应用上特点也很明显,比如数据往往只保留一定时长,需要做降
  • TDengine 是一款为现代物联网而生的时序数据库,在当下这个时代,大数据是未来人工智能的血液,有了数据,人工智能的算法和模型才能够更加智慧。无论阿里、腾讯、华为还是小米等一线互联网公司、还是吉利、比亚迪、...
  • MSDA是Python中的开源low-code多传感器数据分析库,旨在在时序多传感器数据分析和实验中将假设减少到洞察周期。 它使用户能够快速,高效地执行端到端的概念验证实验。 该模块通过捕获变化和趋势来建立多维时间序列...
  • 随着5G/IoT 物联网技术的飞速发展,IoT 设备产生的时序数据也呈爆炸式增长,数据的总量(Volume)、数据类型(Variety)越来越多、访问速度(Velocity)要求越来越快...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,578
精华内容 32,231
关键字:

时序数据分类