精华内容
下载资源
问答
  • 用SPSS进行不同变量多组间两两比较卡方检验SPSSSPSS用SSPPSSSS进行变量多组之间两两比较卡方检验福建省教育科学研究所 林斯坦用SPSS 进行不同变量的卡方检验中,如果检验后多组间有显著性差异,说明观察指标在各组...

    用SPSS进行不同变量多组间两两比较卡方检验

    SPSS

    SPSS

    用SSPPSSSS进行变量多组之间两两比较卡方检验

    福建省教育科学研究所 林斯坦

    用SPSS 进行不同变量的卡方检验中,如果检验后多组间有显著性差异,说明观察指标

    在各组之间不完全相同,这时要知道到底是哪两组或哪几组有差异,就需要进行两两比较,

    但遗憾的是,SPSS 未提供卡方检验的多组之间的两两检验的直接方案。网络上很多人讨论,

    但均没有简便可行的办法,有人提出用卡方分割法(partitionsofX2method),或者用Scheffe'

    可信区间法和SNK 法等等,比较复杂。现将一种比较简单的,可直接在SPSS 中进行两两

    比较的方法举例如下。

    例:您是否赞成教师聘任实行“双向选择”?(单选)1.赞成;2.不赞成

    为了解乡镇、县城和城市中不同教师对这个问题的看法是否有实质性的不同,则需先进

    行整体性的卡方检验。

    第一步:按照正常程序的先进行一次Crosstable分析,以确定整体上看,多组间是否确

    有显著性差异。

    14.是否赞成教师聘任实行双向选择* 3.校地处城乡 交叉制表

    3.校地处城乡

    乡镇 县城 城市 合计

    14.是否赞成 赞成 计数 154 99 168 421

    教师聘任实行 3.校地处城乡 中的 % 67.2% 74.4% 81.2% 74.0%

    双向选择 不赞成 计数 75 34 39 148

    3.校地处城乡 中的 % 32.8% 25.6% 18.8% 26.0%

    合计 计数 229 133 20

    展开全文
  • LSTM多变量时间序列预测

    千次阅读 多人点赞 2021-03-27 20:40:42
    基于LSTM多变量的时间序列预测

    从这篇博客你将学到

    (1) 何为时间序列
    (2) 多变量时间序列建模
    (3) 基于LSTM模型的时间序列预测
    (4) 如何免费加入交流群

    时间序列

    我们常说历史总是惊人的相似,时间序列预测正式依循这个道理来预测未来,时间序列英文名称为Time Series,简称TS,其假设某变量的值构成的序列依赖于时间,随着时间的变化而变化,如果时间确定了,这个变量的值也就确定了,任何一个时刻都是可以度量的,因为从现在起未来的某一时间是可以通过现在时间演算的,同时,随着时间的变化,变量往往会呈现出某些特殊的结构特征,如上升或下降的大体趋势,季节性变动,一些循环往复的周期变动,还有一些不规则变动,而这些特质往往是可以捕捉的,所以常用时间序列模型来预测未来某一确定时间的变量的值。下图是早些年某国的航空乘客人数统计数据

    Figure_1  航空乘客人数统计数据

    我们用折线图将每月的航空乘客人数描绘出来

    Figure_2  航空乘客人数曲线图

    很明显可以看到航空乘客人数总体呈上升趋势,同时出现每隔一段时间上升隔一段时间下降的周期性特征,每个周期变动之间又蕴含一些细微的波动。针对不同特征的时间序列数据可以构建不同的模型,常见的时间序列模型有
    (1) AR(Autoregressive model)自回归模型
    (2) MA(Moving Average Model)移动平均模型
    (3) ARMA(Auto Regressive and Moving Average Model)自回归滑动平均模型
    (4) ARIMA(Autoregressive Integrated Moving Average model)差分回归移动平均模型
    (5) VAR(Vector autoregression)矢量自回归模型模型
    (6) SVAR(Structural VAR)结构自回归模型

    多变量时间序列

    平常我们构建的大多属于单变量时间序列,在构建预测模型的时候往往只有时间和变量本身可以参考,而这样的变量往往会显得很单薄,同时,时间往往是解释性因子而不是因果性因子,就以每月航空乘客人数为例,如果说成因为是某年某月,所以航空乘客人数是多少多少,恐怕太牵强了,所以还需要考虑其他影响因素,比如天气,航线,节假日等,于是就有了多变量时间序列,多变量时间序列是指除了时间依赖外,还有其他因素共同影响某一结果的发生。例如下表是某地的气象监控数据

    Figure_3  某地气象监控数据

    其中包含时间,温度,云层覆盖率,露点、风速及风向等,在这种情况下,云层覆盖率,露点、风速及风向都有可能被认为是影响温度的因果原因,而时间只是恰巧发生在此时此刻的一个表现因子。这时候建模就可以建立既包含因果原因和又包含表现原因在内的多变量时间序列模型。

    多变量时间序列建模

    假设数据如下所示

    ( x 11 x 12 ⋯ x 1 n y 1 x 21 x 22 ⋯ x 2 n y 2 ⋮ ⋮ ⋮ ⋮ x m 1 x m 2 ⋯ x m n y m ) \left( \begin{matrix} x_{11} & x_{12} & \cdots & x_{1n} & y_1 \\ x_{21} & x_{22} & \cdots & x_{2n} & y_2 \\ \vdots & \vdots & & \vdots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{mn} & y_m \\ \end{matrix} \right) x11x21xm1x12x22xm2x1nx2nxmny1y2ym

    其中 x i j ( 1 ≤ i ≤ m , 1 ≤ j ≤ n ) x_{ij}(1\leq i\leq m, 1\leq j \leq n) xij(1im,1jn) 表示第 i i i期的第 j j j个特征的值,先从最简单的开始

    (1) 一阶滞后

    为了预测第 m m m 期的 y m y_m ym值,我们可以利用第 m − 1 m-1 m1期的所有信息

    ( x m − 1 , 1 , x m − 1 , 2 , ⋯   , x m − 1 , n , y m − 1 ) (x_{m-1,1} , x_{m-1,2} , \cdots , x_{m-1,n} , y_{m-1}) (xm1,1,xm1,2,,xm1,n,ym1)

    建立第 m m m 期的 y m y_m ym值与第 m − 1 m-1 m1期所有信息的线性模型
    y m = w 0 y m − 1 + w 1 x m − 1 , 1 + w 2 x m − 1 , 2 + ⋯ + w n x m − 1 , n + ϵ y_m= w_0y_{m-1}+w_1x_{m-1,1}+w_2x_{m-1,2} + \cdots + w_nx_{m-1,n}+\epsilon ym=w0ym1+w1xm1,1+w2xm1,2++wnxm1,n+ϵ

    而不是仅仅利用第 m − 1 m-1 m1期的表征 y m − 1 y_{m-1} ym1单一信息, 这就是多变量时间序列的优势,再推广到p阶滞后。

    (2) p阶滞后

    我们亦可以利用第 m − p m-p mp 到第 m − 1 m-1 m1期的所有信息来进行预测

    ( x m − p , 1 x m − p , 2 ⋯ x m − p , n y m − p x m − p + 1 , 1 x m − p + 1 , 2 ⋯ x m − p + 1 , n y m − p + 1 ⋮ ⋮ ⋮ ⋮ x m − 1 , 1 x m − 1 , 2 ⋯ x m − 1 , n y m − 1 ) \left( \begin{matrix} x_{m-p,1} & x_{m-p,2} & \cdots & x_{m -p, n} & y_{m-p} \\ x_{m-p+1,1} & x_{m-p+1,2} & \cdots & x_{m-p+1,n} & y_{m-p+1} \\ \vdots & \vdots & & \vdots & \vdots \\ x_{m-1,1} & x_{m-1,2} & \cdots & x_{m-1,n} & y_{m-1} \\ \end{matrix} \right) xmp,1xmp+1,1xm1,1xmp,2xmp+1,2xm1,2xmp,nxmp+1,nxm1,nympymp+1ym1

    写成向量形式就是

    y m = W 0 Y m − i + W m − 1 X m − 1 + W m − 2 X m − 2 + W m − 3 X m − 3 + ⋯ + W m − p X m − p + ϵ y_m = W_0Y_{m-i}+ W_{m-1}X_{m-1}+W_{m-2}X_{m-2}+W_{m-3}X_{m-3}+\cdots+W_{m-p}X_{m-p}+\epsilon ym=W0Ymi+Wm1Xm1+Wm2Xm2+Wm3Xm3++WmpXmp+ϵ

    其中 X m − i X_{m-i} Xmi表示前 i ( 1 ≤ i ≤ p ) i(1\leq i\leq p) i(1ip)期的特征向量
    ( x m − i , 1 , x m − i , 2 , ⋯   , x m − i , n , y m − i ) T (x_{m-i,1}, x_{m-i,2},\cdots,x_{m-i,n},y_{m-i} )^T (xmi,1,xmi,2,,xmi,n,ymi)T

    W m − i W_{m-i} Wmi表示前 i ( 1 ≤ i ≤ p ) i(1\leq i\leq p) i(1ip)期的特征向量的系数

    ( w m − i , 1 , w m − i , 2 , ⋯   , w m − i , n , w m − i ) (w_{m-i,1}, w_{m-i,2},\cdots,w_{m-i,n},w_{m-i} ) (wmi,1,wmi,2,,wmi,n,wmi)

    Y m − i Y_{m-i} Ymi表示前 i i i期的表征值, ϵ \epsilon ϵ服从均值为0的高斯分布,这样第 m m m期的表征完全可以通过第 m − p m-p mp到第 m − 1 m-1 m1期的特征变量线性表出。与单变量时间序列不同,多变量时间序列不仅利用了纵向的时间特征还利用横向的其他特征,所以多变量时间序列不仅能够时间带来的沧桑变化也能够理解和使用多个变量之间的关系,这有助于描述数据的动态行为,并提供更好的预测结果。

    LSTM模型

    LSTM是一种时间递归神经网络,它出现的原因是为了解决RNN的一个致命的缺陷。原生的RNN会遇到一个很大的问题,叫做The vanishing gradient problem for RNNs,也就是后面时间的节点会出现老年痴呆症,也就是忘事儿,这使得RNN在很长一段时间内都没有受到关注,网络只要一深就没法训练。后来有些大牛们开始使用递归神经网络来对时间关系进行建模。而根据深度学习三大牛的阐述,LSTM网络已被证明比传统的RNNS更加有效。

    适合多输入变量的神经网络模型一直让开发人员很头痛,但基于(LSTM)的循环神经网络能够几乎可以完美的解决多个输入变量的问题。

    基于LSTM的循环神经网络可以很好的利用在时间序列预测上,因为很多古典的线性方法难以适应多变量或多输入预测问题。下面我们通过一个案例来看看LSTM在多元时间序列预测上的表现。

    实践项目

    通过本案例实践,你将学会

    • 如何将原始数据集转换为可用于时间序列预测的数据集;
    • 如何准备数据并创建适应多变量时间序列预测问题的LSTM;
    • 如何做出预测并将结果重新调整到原始单位;

    原始pm2.5数据

    在这个案例中,我们将使用PM2.5空气质量数据集,是美国驻北京大使馆五年内收集的PM2.5污染水平及天气情况。字段包括时间、PM2.5浓度、以及一些关键天气信息,详细字段释义如下(需要这份数据的朋友可以来三行科创交流群获取)

    NO:行号。
    year:年。
    month:月。
    day:日。
    hour:小时。
    pm2.5:PM2.5浓度。
    DEWP:露点温度。
    TEMP:温度。
    PRES:压力。
    cbwd:风向。
    Iws:风速。
    ls:积雪的时间
    Ir:累积的下雨时数

    我们可以使用这些数据并构建一个预测问题,基于前一个或几个小时天气条件和PM2.5的污染,预测在下一个小时的PM2.5的污染值。

    第一步 导入用到的库

    本案例是基于keras深度学习库完成多变量时间序列模型的开发,涉及到的库比较多

    # -*- encoding: utf-8 -*-
    '''
    @Project :   LSTM多变量时间序列预测
    @Desc    :   利用LSTM模型进行多变量时间啊序列预测
    @Time    :   2021/03/21 12:16:13
    @Author  :   帅帅de三叔,zengbowengood@163.com
    '''
    
    import math
    import pandas as pd
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pandas.core.algorithms import mode
    from sklearn.preprocessing import LabelEncoder, MinMaxScaler
    from tensorflow.python.keras.backend import concatenate
    from sklearn.metrics import mean_squared_error
    from tensorflow.python.keras.callbacks import History
    from series_to_supervised import series_to_supervised
    from keras.models import Sequential
    from keras.layers import Dense, Activation, Embedding, LSTM
    

    第二步 数据探索

    数据探索主要是查看原始数据的缺失情况,完整度怎么样,有没有明显的谬误等,对数据及数据之间有个感性的认真,如果能够画出原数据的图像那会更直观。

    dataset = pd.read_csv("raw.csv", index_col= "datetime", parse_dates = {"datetime":['year', 'month', 'day', 'hour']}, date_parser= lambda x:datetime.strptime(x,'%Y %m %d %H')) #读取数据并拼接时间
    dataset.drop("No", axis = 1, inplace = True) #去掉No列
    dataset.columns = ["pm25", "dew",  "temp", "press", "wnd_dir", "wnd_spd", "snow", "rain"] #重命名表头
    dataset.dropna(subset = ['pm25'], inplace = True) #去掉pm25为空的行
    values = dataset.values #数值特征变量
    groups = [0, 1, 2, 3, 5, 6, 7]
    i = 1
    plt.figure() #新建画布
    for group in groups:
        plt.subplot(len(groups), 1, i) #子图
        plt.plot(values[:, group]) #折线图
        plt.title(dataset.columns[group], y = 0.5, fontsize = 10, loc = "right") #取字段为子图标题
        i +=1
    plt.show()
    

    Figure_4 特征长什么模样

    第三步 特征工程

    将原数据处理成LSTM模型能够识别的格式,并且保持LSTM模型的输入格式要求(samples, timesteps, features),同时数据集进行划分,然后将训练集和测试集,要注意这里是需要学习到时间因数,所以在训练集和测试集划分上不能破坏数据原有的序列,可以按照时间切分,比如这里用第一年数据进行训练,用剩下的4年进行评估。

    encoder = LabelEncoder() #编码
    values[:,4] = encoder.fit_transform(values[:,4]) #将第4列编码
    values = values.astype('float32') #使得所有数值类型都是float类型
    scaler = MinMaxScaler(feature_range = (0, 1)) #0-1归一化
    scaled = scaler.fit_transform(values)
    reframed = series_to_supervised(scaled, 1, 1) #调用series_to_supervised函数将数据转为监督数据变成16列
    reframed.drop(reframed.columns[[9, 10, 11, 12, 13, 14, 15]], axis= 1,inplace = True) 
    values = reframed.values
    n_train_hours = 365*24 #一年的小时数
    train = values[:n_train_hours, :] #训练集
    test = values[n_train_hours:, :] #测试集
    train_x, train_y = train[:, :-1], train[:, -1] #训练集特征和标签 
    test_x, test_y = test[:, :-1], test[:, -1] #测试集的特征和标签
    train_x = train_x.reshape((train_x.shape[0], 1, train_x.shape[1])) #转为LSTM模型的输入格式(samples, timesteps, features)
    test_x = test_x.reshape((test_x.shape[0], 1, test_x.shape[1])) #转为LSTM模型的输入格式(samples, timesteps, features)
    

    第四步 设计LSTM模型

    模型的设计是很关键的一环,一个简洁高效的模型往往能够使得训练和验证结果事半功倍,这里隐藏层有50个神经元,输出层1个神经元(回归问题),输入变量是一个时间步(t-1)的特征,损失函数采用Mean Absolute Error(MAE),优化算法采用Adam,模型采用50个epochs并且每个batch的大小为72, shuffle要设置成False,随后画出测试集的误差曲线和训练集的误差曲线。

    model = Sequential()
    model.add(LSTM(50, input_shape = (train_x.shape[0], train_x.shape[2]))) #8760*8
    model.add(Dense(1))
    model.compile(loss = "mae",optimizer= "adam")
    history =model.fit(train_x, train_y, epochs= 50, batch_size=72, validation_data=(test_x, test_y), verbose=2, shuffle=False)
    plt.figure()
    plt.plot(history.history["loss"], label = "train")
    plt.plot(history.history["val_loss"], label = "test")
    plt.legend()
    plt.show()
    

    Figure_5  训练损失与测试损失

    第五步 模型的评估

    一个模型的好坏还需要进行严格的评估工作,需要将预测结果和部分测试集数据组合然后进行比例反转(invert the scaling),同时也需要将测试集上的预期值也进行比例转换。至于在这里为什么进行比例反转,是因为我们将原始数据进行了预处理(连同输出值y),此时的误差损失计算是在处理之后的数据上进行的,为了计算在原始比例上的误差需要将数据进行转化,同时反转时的矩阵大小一定要和原来的大小(shape)完全相同,否则就会报错。通过以上处理之后,再结合RMSE(均方根误差)计算损失。

    yhat = model.predict(test_x)
    test_x = test_x.reshape((test_x.shape[0], test_x.shape[2]))
    inv_yhat = concatenate((yhat,test_x[:, 1:]), axis = 1)
    inv_yhat = scaler.inverse_transform(inv_yhat)
    inv_yhat = inv_yhat[:, 0]
    
    test_y = test_y.reshape((len(test_y), 1))
    inv_y = concatenate((test_y, test_x[:, 1:]), axis =1)
    inv_y = scaler.inverse_transform(inv_y)
    inv_y = inv_y[:, 0]
    rmse = math.sqrt(mean_squared_error(inv_y, inv_yhat))
    print("the rmse is: %.3f" %rmse)
    

    最后均方根误差值保持在26附近。

    进一步思考

    (1)在数据处理可以尝试的

    1. 加入季节特征;
    2. 时间步长大于1。
    3. 舍去一些影响不大的特征

    (2)在设计模型的时候可以尝试

    1. 隐藏层神经元个数,
    2. 优化算法
    3. 模型的epochs数,每个batch的大小

    参考资料

    1,https://www.analyticsvidhya.com/blog/2016/02/time-series-forecasting-codes-python/
    2,https://blog.csdn.net/qq_28031525/article/details/79046718
    3,https://www.analyticsvidhya.com/blog/2016/02/time-series-forecasting-codes-python/
    在这里插入图片描述

    展开全文
  • 基于Keras的LSTM多变量时间序列预测

    千次阅读 2021-01-14 01:35:02
    摘要:还在为设计输入变量的神经网络模型发愁?来看看大神如何解决基于Keras的LSTM多变量时间序列预测问题!文末附源码!LSTM是一种时间递归神经网络,它出现的原因是为了解决RNN的一个致命的缺陷。原生的RNN会...

    摘要:还在为设计多输入变量的神经网络模型发愁?来看看大神如何解决基于Keras的LSTM多变量时间序列预测问题!文末附源码!

    LSTM是一种时间递归神经网络,它出现的原因是为了解决RNN的一个致命的缺陷。原生的RNN会遇到一个很大的问题,叫做The vanishing gradient problem for RNNs,也就是后面时间的节点会出现老年痴呆症,也就是忘事儿,这使得RNN在很长一段时间内都没有受到关注,网络只要一深就没法训练。后来有些大牛们开始使用递归神经网络来对时间关系进行建模。而根据深度学习三大牛的阐述,LSTM网络已被证明比传统的RNNS更加有效。

    适合多输入变量的神经网络模型一直让开发人员很头痛,但基于(LSTM)的循环神经网络能够几乎可以完美的解决多个输入变量的问题。

    基于(LSTM)的循环神经网络可以很好的利用在时间序列预测上,因为很多古典的线性方法难以适应多变量或多输入预测问题。

    在本教程中,你会看到如何在Keras深度学习库中开发多变量时间序列预测的LSTM模型。

    读完本教程后,你将学会:如何将原始数据集转换为可用于时间序列预测的数据集。

    如何准备数据并创建适应多变量时间序列预测问题的LSTM。

    如何做出预测并将结果重新调整到原始单位。

    本教程分为3部分:1.空气污染预报。

    2.基本数据准备。

    3.多变量LSTM预测模型。

    Python环境

    本教程假设你已安装Python SciPy环境,你可以在本教程中使用Python 2或3。你必须使用TensorFlow或Theano后端安装Keras(2.0或更高版本)。本教程还 假设你已经安装了scikit-learn,Pandas,NumPy和Matplotlib。

    空气污染预报

    在这个小例子中,我们将使用空气质量数据集。这是一个数据集,在美国驻北京大使馆五年内报告天气和污染水平。数据类型包括日期时间、称为PM2.5浓度的污染物、以及天气信息、包括露点(露点温度)、温度、压力、风向、风速和累积的降雪小时数。原始数据中的完整功能列表如下:

    1. NO:行号。

    2. year:年。

    3. month:月。

    4. day:日。

    5. hour:小时。

    6. pm2.5:PM2.5浓度。

    7. DEWP:露点温度。

    8. TEMP:温度。

    9. PRES:压力。

    10. cbwd:风向。

    11. Iws:风速。

    12. ls:积雪的时间

    13. Ir:累积的下雨时数

    我们可以使用这些数据并构建一个预测问题,基于天气条件和前几个小时的污染,我们预测在下一个小时的污染。你可以从UCI Machine Learning Repository下载数据集—北京PM2.5数据集。下载数据集并将其放在你当前的工作目录中,文件名为“raw.csv”。

    基本数据准备

    第一步,我们必须清洗数据。

    以下是原始数据集的前几行。

    第一步是将日期时间信息整合为一个日期时间,以便我们可以将其用作Pandas的索引。我们需要快速显示前24小时的pm2.5的NA值。因此,我们需要删除第一行数据。在数据集中还有几个分散的“NA”值;我们现在可以用0值标记它们。

    以下脚本加载原始数据集,并将日期时间信息解析为Pandas Data Frame索引。“No”列被删除,然后为每列指定更清晰的名称。最后,将NA值替换为“0”值,并删除前24小时。

    运行该示例打印转换的数据集的前5行,并将数据集保存到“pollution.csv”。

    下面的代码加载了“ pollution.csv ”文件,并将每个系列作为单独的子图绘制,除了风速dir,这是分类的。

    运行示例创建一个具有7个子图的程序,显示每个变量的5年数据。

    多变量LSTM预测模型建立:

    LSTM数据准备

    第一步是为LSTM准备污染数据集。这涉及将数据集视为监督学习问题并对输入变量进行归一化处理。考虑到上一个时间段的污染测量和天气条件,我们将把监督学习问题作为预测当前时刻(t)的污染情况。根据过去24小时的天气情况和污染,预测下一个小时的污染,并给予下一个小时的“预期”天气条件。

    我们可以使用在博客中开发的series_to_supervised()函数来转换数据集:如何将时间序列转换为Python中的监督学习问题

    首先,加载“pollution.csv”数据集。风速特征是标签编码(整数编码)。如果你有兴趣探索,也可以使用热编码。

    接下来,所有功能都被规范化,然后将数据集转换为监督学习问题。然后删除要预测的小时的天气变量(t)。

    完整的代码清单如下:

    运行示例打印转换后的数据集的前5行。我们可以看到8个输入变量(输入序列)和1个输出变量(当前小时的污染水平)。

    注意:我们必须提供超过一小时的输入时间步长。因为在解决序列预测问题时,LSTMs通过时间进行反向传播。

    定义和拟合模型

    在本节中,我们将通过多变量输入数据拟合LSTM。

    首先,我们必须将准备好的数据集分成训练集和测试集。为了加快对这次示范模型的训练,我们将仅使用第一年的数据来拟合模型,然后对其余4年的数据进行评估。下面的示例将数据集分成训练集和测试集,然后将训练集和测试集分成输入和输出变量。最后,将输入(X)重构为LSTM预期的3D格式,即[样本,时间步长,特征]。

    运行此示例打印训练集的形状:

    现在我们可以定义和拟合我们的LSTM模型。

    我们将在第一个隐层中定义具有50个神经元的LSTM和用于预测污染的输出层中的1个神经元。输入形状是1个时间步长,具有8个特征。

    我们将在我们的模型中使用平均绝对误差(MAE)损失函数。该模型将拟合50个批量大小为72的训练时期。最后,我们通过在fit()函数中设置validation_data参数来跟踪训练过程中的训练和测试失败。在运行结束时,绘制训练和测试损失。

    评估模型

    模型拟合后,我们可以预测整个测试数据集。

    我们将预测的数据集与测试数据集相结合,并反演缩放。我们还可以用预期的污染数字来反演测试数据集的缩放。使用预测值和实际值,我们可以计算模型的误差分数。并且我们还可以计算出与变量本身相同的单位产生误差的均方根误差(RMSE)。

    完整例子

    完整的示例如下所示:源程序附件中下载!

    运行示例首先创建一个绘图,显示训练中的训练损失和测试损失:

    有趣的是,我们可以看到测试损失低于训练损失,该模型可能过度拟合训练数据。

    训练损失和测试损失在每个训练时期结束时打印。在运行结束时,打印测试数据集上模型的最终RMSE。我们可以看到,该模型实现了可观的RMSE:3.836。

    总结:

    在本教程中,你发现了如何将LSTM适用于多变量时间序列预测问题。

    具体来说,你学到了:

    如何将原始数据集转换为可用于时间序列预测的内容。

    如何准备数据并适应多变量时间序列预测问题的LSTM。

    如何做出预测并将结果重新调整到原始单位。

    本文由@阿里云云栖社区组织翻译。

    文章原标题《Multivariate Time Series Forecasting with LSTMs in Keras》

    作者:Jason Brownlee

    译者:袁虎 审阅:主题曲哥哥

    展开全文
  • MATLAB对变量同时赋值

    千次阅读 2021-04-27 01:47:28
    《MATLAB对变量同时赋值》由会员分享,可在线阅读,更相关《MATLAB对变量同时赋值(2页珍藏版)》请在人人文库网上搜索。1、MATLAB对变量赋值(实现连等)转自:...

    《MATLAB对多个变量同时赋值》由会员分享,可在线阅读,更多相关《MATLAB对多个变量同时赋值(2页珍藏版)》请在人人文库网上搜索。

    1、MATLAB对多个变量赋值(实现连等)转自:http:/blog.sina.com.cn/s/blog_6163bdeb0102dvhk.html x=y=z=100对a,b和c分别赋值1,2和3a,b,c=1,2,3这样的语句在python是合法的,但是在MATLAB的中是不合法的,那到底MATLAB中是否有其它解决方案呢。呵呵偷偷告诉您,这个是有滴。MATLAB中提供了deal函数进行多变量赋值处理,且用处很大哦。该函数最基本语法为Y1, Y2, Y3, . = deal(X),即Y1=Y2=Y3=XY1, Y2, Y3, . = deal(X1, X2, X3, ),即Y1=X1,Y2=。

    2、X2,Y3=X3上面只是函数的基本用法,有些人觉得也没什么呀,哈哈其实您错了,这个函数的用处大着呢。我需要从细心看问题,才能看到本质。在讲解之前先说两个小知识点:(1)如果x=mat,lab,sky,那么x:结果完全等效于:x1,x2,x3,注意三个数据之间有逗号分隔开(2)如果x(1).url=mat,x(2).url=lab,x(3).url=sky,也就是说x是一个结构体数组,那么x.url将完全等效于:x(1).url,x(2).url,x(3).url,注意有逗号分隔例子1:对x,y,z同时初始化为100 x,y,z=deal(100)x =100y =100z =100例子2:对a。

    3、,b,c分别初始化为mat,lab,sky a,b,c=deal(mat,lab,sky)a =matb =labc =sky例子3:将Cell数组x=1 2 3中的1,2,3分别赋值给a,b,c x=1 2 3; a,b,c=deal(x:) % 注意a,b,c=deal(1 2 3)是错误的a =1b =2c =3例子4:将cell数组x=1 2 3分别付给结构数组y的data字段 x=1 2 3; y(1:3).data=deal(x:)y =13 struct array with fields:data例子5:将结构体数组A的age字段全部赋值为0 A(1:100).age=deal(0)A =1100 struct array with fields:age如果您的MATLAB版本是7.0以上,那么有时deal函数可以直接省略,请往下看!其实MATLAB中只要等号两边的表达式中,逗号的个数相等就可以直接省略deal进行赋值,注意等号右边的逗号表达式不能手工敲入,只能使用x:和y.me等两种形式得到的等效逗号表达式,但左边可以使用a,b的手动逗号形式。 x=10 20; a,b=x:a =10b =20 web(1).url=matlabsky;web(2).url=mathsky; a,b=web.urla =matlabskyb =mathsky。

    展开全文
  • Matlab 定义个符号变量

    千次阅读 2021-04-18 04:38:30
    1.Matlab 定义符号变量的命令为 syms​比如定义 a,b,c为符号变量 syms a b c 即可(注意中间不能有空格)​但是假若要定义100个符号变量呢?总不会要一个一个输入吧?​计算机编程的一个重要好处是可以使用循环处理...
  • 个自变量的函数拟合问题

    千次阅读 2021-04-18 16:27:30
    有七组数据(1,50): x=[ 13.4171 5.652496 7.560203 7.005844 11.98577 7.746066 10.69772 8.115705 14.04746 10.89177 8.992618 13.90936 6....请教一下该怎么编程呢,cftool是不是只能做两个自变量的函数拟合?
  • matlab多变量曲线拟合

    千次阅读 2021-04-18 11:06:01
    大家好,由于初学不知道该怎么入手,希望高手及热心的朋友帮帮忙,一共有8组数据,abcd是自变量,F是因变量,需要利用这些数据用matlab编程拟合成一条曲线,得出一个含有abcd变量的F=f(abcd)函数,希望尽量能详细点...
  • C语言-结构体变量比较

    千次阅读 2021-08-31 09:39:47
    然后根据书上的代码去写发现程序运行不起来,真的是过五关斩六将啊,遇到一个问题解决一个问题,今天解决的问题是在用C语言在顺序表中定位的方法内有关于结构体变量值进行比较的代码,程序就卡到了这里,然后通过...
  • 在这篇文章中,我们将比较LASSO、PLS、Random Forest等多变量模型与单变量模型的预测能力,如著名的差异基因表达工具DESeq2以及传统的Mann-Whitney U检验和Spearman相关。使用骨骼肌RNAseq基因表达数据集,我们将...
  • 来源:机器之心本文长度为2527字,建议阅读5分钟本文为你介绍如何在Keras深度学习库中搭建用于多变量时间序列预测的LSTM模型。长短期记忆循环神经网络等几乎可以完美地模拟个输入变量的问题,这为时间序列预测带来...
  • 多个自变量多个因变量用SPSS如何分析?提问:我是在做问卷,然后是要研究A与B两个问题之间的关系.然后AB分别设定了n个问题,从完全不符合到完全符合设为1到5的数值.昨晚问卷后我就有A1,A2……An这些自变量,然后B1,B2...
  • 以之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示: 我们将要用来描述这个回归问题的标记如下: m 代表训练集中实例的数量 x 代表特征/输入变量 y 代表目标变量/输出变量 (x,y)代表...
  • 然而,当关注的基因比较多是,手动输入就会比较麻烦。接下来介绍一种利用循环的方法,快速的对变量进行分析。 首先是导入数据,包括基因表达counts数据和临床数据sur,autophage是我下的一个自噬基因集,可根据...
  • 多变量线性回归python实现

    千次阅读 2021-06-20 09:43:54
    多变量线性回归python实现机器学习前言一、多变量线性回归?3.1 吴恩达多变量线性回归练习3.1.1 版本一3.1.2 版本二3.2 股票预测总结 github地址 前言 机器学习是从人工智能中产生的一个重要学科分支,是实现智能...
  • 数模笔记_多变量最优化

    千次阅读 2021-02-20 22:13:16
    对于多变量的最优化问题,文章首先介绍了无约束的最优化,在实际生产中,它基于产能不受限制的基本假设。在数学求解方法上,是简单的多元函数求偏导,解驻点。有一些可圈可点之处: 在其计算过程中,体现了代数软件...
  • 大家好,由于急需用到多变量曲线拟合而本人刚刚接触MATLAB,希望高手及热心的朋友帮帮忙给出拟合方程和拟合曲线,一共有两组数据,X1,X2,X3是自变量,Y是因变量,需要利用这些数据用matlab编程拟合成一条曲线,...
  • 展开全部方法为:System.out.println(变量一+变量二+变量三+... +变量N)。至于如何将数值转换e69da5e887aa62616964757a686964616f31333366306532为String类型,有个简单的方法,即在每个数值后加上[ +“”] 中括号中...
  • 协方差分析解决的问题:个自变量(包括离散变量和连续变量)对一个因变量(连续数据)的影响。自变量中的连续变量被作为协变量加以'控制'(控制变量)。协方差分析可以在一定程度上排除非处理因素的影响,从而准确的获得...
  • 方式一 在运行docker时,直接使用-e或–env,–env-file,每个变量需要写一次-e ...其他变量想替换的话同理,如果说像替换个 docker run -it -e SERVER_PORT=9080 -e SERVER_ADDRESS=0.0.0.1 -d 容器id
  • Excel 文件转成stata文件工具: Stata Transfer 一、中介效应(Mediating effects) 仔细展示一下代码 自变量 council_pre 理事长 council_se 秘书长 逐步检验回归系数 //检验方程一 reg 因变量变量 控制变量 //...
  • matlab定义变量-MATLAB,变量

    千次阅读 2021-04-24 21:26:12
    本教程分享:《matlab定义变量》,matlab中变量如何定义?可以用sym 或者 syms 定义变量。如果没有提前定义的话,可以在使用时可直接进行赋值使用。MATLAB中变量名以字母开头,后接字母、数字或下划线,最多63个字符...
  • SPSS:二元Logistic回归中自变量的处理和解读——有序分类变量的处理。有序分类变量是很常见的变量形式,通常在变量中有个可能会出现的取值,各取值之间还存在等级关系。比如高血压分级(0=正常,1=正常高值,2...
  • C语言,同时对变量同时赋值

    千次阅读 2021-09-16 10:43:23
    C语言中绝对不可以连续赋值!!!这是C语言的基本要求。 可以int a,b,c; a=5;b=5;c=5; 或者int a =5;int b=5;int c=5; 但是! 绝对不可以:int a=b=c=5。因为 b 跟 c 都还没有定义。这里只是定义了a,并给a赋值。......
  • python同时给变量赋值

    千次阅读 2020-12-28 18:46:53
    同时赋个值以下是一种很酷的编程捷径:在 Python 中,可使用元组来一次赋值。>>> v = ('a', 2, True)>>> (x, y, z) = v ①>>> x'a'>>> y2>>> zTrue1. v 是一个三...
  • 以前一直想,要是能够在一个语句给变量赋值是多么美好的事情呀。比如对x,y和z都赋值100x=y=z=100对a,b和c分别赋值1,2和3a,b,c=1,2,3这样的语句在python是合法的,但是在MATLAB的中是不合法的,那到底MATLAB中...
  • 首先,将x、y看成同一变量,即x(1)、x(2) 然后,定义自变量函数,即fun=inline('x(2)-f(x(1),x(2))','a','x')%a是拟合系数 再用Matlab的nlinfit()函数或lsqcurvefit()函数进行拟合另外你也可以利用可视化工具cftool...
  • 多元统计分析(11个常见的多变量分析方法)在社会科学研究中,主要的多变量分析方法包括多变量方差分析(Multivariate analysis of variance,MANOVA)、主成分分析(Principal component analysis)、因子分析(Factor ...
  • 静态变量static和全局变量global

    千次阅读 2021-03-04 05:42:25
    静态变量static ,全局变量global静态变量在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例。它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存,类的静态变量就分配了内存空间,...
  • mysql的select into给个字段变量赋值

    千次阅读 2021-09-17 16:04:52
    在into之后顺序写上要赋值的变量就行 SELECT c1, c2, c3, ... INTO @v1, @v2, @v3,... FROM table_name WHERE condition;
  • 详解shell 变量

    千次阅读 2021-05-14 12:15:21
    1.简介变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell变量也遵循这个规则。在Bash shell 中,每一个变量的值都是字符串,无论...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,182,750
精华内容 2,873,100
关键字:

多变量比较