values = df.values
train, test = train_test_split(values)
#Split into train and test
X_train, y_train = train[:, :-1], train[:, -1]
X_test, y_test = test[:, :-1], test[:, -1]执行上述代码将时间序列数据集拆分为训练- 70%和测试30%。我想控制列车测试分裂为80-20或90-10。有人能帮我理解一下* :-1在这种情况下做了什么吗?
它是从https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/借来的。
注意:我不能为训练和测试随机分割数据集,最近的值必须用于测试。我已经包括了我的数据集的截图。

如果有人能解释代码,请帮助我理解上面的内容。谢谢。
发布于 2020-09-28 18:08:50
语法arr[:,:-1]选择除最后一行之外的所有行和每一列。Python可以使用负索引,但是它是包容性的--比如[a,b):包含a,不包括b。
如果您不使用:运算符(如arr[:,-1] ),那么它只需选择整个最后一列。
因此,在示例的上下文中,最后一列是根据前面的专栏培训数据要回归/分类/等的值。
>>> import numpy as np
>>> arr = np.random.randn(5,5)
>>> print(arr)
[[-0.86690967 -0.63959234 0.99754053 -0.24828822 0.5346927 ]
[ 0.6174709 2.16558841 -1.28983554 1.15387215 0.64630439]
[ 0.35104248 -0.54240157 0.80377977 -0.9447689 -0.08145433]
[ 0.61195442 0.09407687 0.39065215 -0.8887228 -1.63845254]
[-1.58212796 -0.46017275 -0.2065184 0.44879872 -0.95037541]]
>>> print(arr[:,:-1])
[[-0.86690967 -0.63959234 0.99754053 -0.24828822]
[ 0.6174709 2.16558841 -1.28983554 1.15387215]
[ 0.35104248 -0.54240157 0.80377977 -0.9447689 ]
[ 0.61195442 0.09407687 0.39065215 -0.8887228 ]
[-1.58212796 -0.46017275 -0.2065184 0.44879872]]
>>> print(arr[:,-1])
[ 0.5346927 0.64630439 -0.08145433 -1.63845254 -0.95037541]注意,最后的打印实际上是arr的最后一列,但是因为它是一个一维数组,所以它显示为行向量而不是列向量。
https://datascience.stackexchange.com/questions/82340
复制相似问题