【发布时间】: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