【问题标题】:Implementing Simple Rolling Window for Training and Testing为训练和测试实施简单的滚动窗口
【发布时间】:2019-08-23 11:26:16
【问题描述】:

我正在尝试使用加速度计和其他传感器构建手势识别系统。为了更准确地做到这一点,我需要实现一个跨越 30 行数据的滚动窗口。但是,我当前的代码只读取最新的数据行。

到目前为止,这是我的代码:

import numpy as np
from sklearn import svm
from sklearn import tree
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

import pandas as pd
df= pd.read_csv("A.csv", delimiter=',')

#########################################################################


from sklearn.model_selection import train_test_split
train, test = train_test_split(df, test_size = 0.2)


train_features = train[['F1','F2','F3','F4','F5','X','Y','Z','C1','C2']]
train_label = train['LABEL']

test_features = test[['F1','F2','F3','F4','F5','X','Y','Z','C1','C2']]
test_label = test['LABEL']

## SVM
model = svm.SVC(kernel='rbf', gamma=0.00000001, C=1)
model.fit(train_features.values, train_label.values)
model.score(train_features, train_label)
predicted_svm = model.predict(test_features)
print "svm"
print accuracy_score(test_label, predicted_svm)
print testing_lang
cn =confusion_matrix(test_label, predicted_svm)

我的问题是如何在数据框中实现滚动窗口。我想维护一个跨越 30 行的滚动窗口,但我不知道应该修改这段代码中的哪些部分。

我尝试以 pandas 文档为基础,并在 train_test_split 部分中添加了滚动部分

train, test = train_test_split(df.rolling(30, win_type='triang'), test_size = 0.2)

但是出现了一个错误说明

Expected sequence or array-like, got <class 'pandas.core.window.Window'>

基本上,我想创建一个滚动窗口,因为我希望预测总共基于 30 行,而不仅仅是最新的数据行。

如何正确实施?

【问题讨论】:

  • 使用df.rolling() 允许您将函数应用于跨数据框的滚动窗口(例如,df.rolling(30).mean() 将返回一个跨列的窗口大小为 30 的滚动平均值的数据名称)。滚动方法似乎不会做你想做的事,但你可能想检查stackoverflow.com/questions/40954560/…

标签: python pandas numpy machine-learning


【解决方案1】:

查看sklearn.model_selection.TimeSeriesSplit((n_splits=5, *, max_train_size=None))。默认情况下,它将窗口固定到数据的开头,但是如果您使用参数max_train_size=30,那么您可以获得一个滚动窗口,该窗口将只训练 30 个观察值,无论您决定多少 n_splits

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多