精华内容
下载资源
问答
  • 数据的预处理方法有两种,分别是归一化和标准化 什么时候用归一化?什么时候用标准化?   (1)如果对输出结果范围有要求,用归一化。   (2)如果数据较为稳定,不存在极端的最大最小值,用归一化。   (3)...

    导读:

    数据的预处理方法有两种,分别是归一化和标准化

    什么时候用归一化?什么时候用标准化?
      (1)如果对输出结果范围有要求,用归一化。
      (2)如果数据较为稳定,不存在极端的最大最小值,用归一化。
      (3)如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

    正文:

    完成本教程后,您将了解:

    • 使用标准化的数据规范化和期望的局限性。
    • 需要什么参数以及如何手动计算标准化和标准化值。
    • 如何使用Python中的scikit-learn来标准化和标准化您的时间序列数据

    该数据集描述了澳大利亚墨尔本市10年(1981-1990)的最低日常温度。

    单位为摄氏度,有3,650个观测值。数据来源被称为澳大利亚气象局。

    下面是前5行数据的示例,包括标题行。

    "Date","Temperatures"
    "1981-01-01",20.7
    "1981-01-02",17.9
    "1981-01-03",18.8
    "1981-01-04",14.6
    "1981-01-05",15.8

    下面是从数据市场获取的整个数据集的图表。 

    最低每日温度

                                                       最低每日温度

    在此处下载并了解有关数据集的更多信息

    本教程假定数据集位于当前工作目录中,文件名为 “ daily-minimum-temperature-in-me.csv”。

    注意:下载的文件包含一些问号(“?”)字符,在使用数据集之前必须删除这些字符。在文本编辑器中打开文件并删除“?”字符。同时删除文件中的任何页脚信息。

    归一化时间序列数据

    归一化是对原始范围内的数据进行重新缩放,以使所有值都在0和1的范围内。

    当您的时间序列数据具有不同比例的输入值时,归一化可能是有用的,甚至在某些机器学习算法中也是必需的。对于算法,例如k-最近邻,它使用距离计算和线性回归和人工神经网络可能需要归一化。重量输入值。

    标准化要求您知道或能够准确估计最小和最大可观察值。您可以从可用数据中估算这些值。如果您的时间序列趋势向上或向下,估计这些预期值可能会很困难,并且规范化可能不是用于解决问题的最佳方法。

    值的规范化如下:

    y = (x - min) / (max - min)

    其中最小值和最大值与值x被归一化有关。 

    例如,对于温度数据,我们可以将最小和最大可观察值猜测为30和-10,这些值大大超过和低估。然后我们可以将18.8之类的任何值标准化,如下所示:

    y = (x - min) / (max - min)
    y = (18.8 - -10) / (30 - -10)
    y = 28.8 / 40
    y = 0.72

    您可以看到,如果提供的x值超出最小值和最大值的范围,则结果值将不在0和1的范围内。您可以在进行预测之前检查这些观察值并删除它们来自数据集或将它们限制为预定义的最大值或最小值。 

    您可以使用scikit-learn对象MinMaxScaler规范化数据集。

    使用MinMaxScaler和其他重新缩放技术的良好实践用法如下:

    1. 使用可用的训练数据安装定标器。对于归一化,这意味着训练数据将用于估计最小和最大可观察值。这是通过调用fit()函数完成的,
    2. 将比例应用于训练数据。这意味着您可以使用标准化数据来训练模型。这是通过调用transform()函数完成的
    3. 将比例应用于未来的数据。这意味着您可以在将来准备要预测的新数据。

    如果需要,可以反转变换。这对于将预测转换回其原始比例以进行报告或绘图非常有用。这可以通过调用inverse_transform()函数来完成。

    以下是标准化每日最低温度数据集的示例。

    缩放器要求将数据作为行和列的矩阵提供。加载的时间序列数据作为Pandas 系列加载。然后必须将其重新整形为具有3,650行的一列矩阵。

    然后使用重新整形的数据集来拟合缩放器,对数据集进行归一化,然后反转归一化变换以再次显示原始值。

    # Normalize time series data
    from pandas import Series
    from sklearn.preprocessing import MinMaxScaler
    # load the dataset and print the first 5 rows
    series = Series.from_csv('daily-minimum-temperatures-in-me.csv', header=0)
    print(series.head())
    # 准备归一化数据
    values = series.values
    values = values.reshape((len(values), 1))
    # 定义缩放范围(0,1)
    scaler = MinMaxScaler(feature_range=(0, 1))
    scaler = scaler.fit(values)
    print('Min: %f, Max: %f' % (scaler.data_min_, scaler.data_max_))
    # 归一化数据集并打印前5行
    normalized = scaler.transform(values)
    for i in range(5):
    	print(normalized[i])
    # 逆变换并打印前5行
    inversed = scaler.inverse_transform(normalized)
    for i in range(5):
    	print(inversed[i])

    运行该示例将从已加载的数据集中打印前5行,以其标准化形式显示相同的5个值,然后使用逆变换将值返回其原始比例。 

    我们还可以看到数据集的最小值和最大值分别为0和26.3。

    Date
    1981-01-01 20.7
    1981-01-02 17.9
    1981-01-03 18.8
    1981-01-04 14.6
    1981-01-05 15.8
    Name: Temp, dtype: float64
    Min: 0.000000, Max: 26.300000
    [ 0.78707224]
    [ 0.68060837]
    [ 0.7148289]
    [ 0.55513308]
    [ 0.60076046]
    [ 20.7]
    [ 17.9]
    [ 18.8]
    [ 14.6]
    [ 15.8]


    还有另一种类型的重新缩放对于超出预期值范围的新值更加稳健; 这称为标准化。我们接下来会看一下。 

    标准化时间序列数据

    标准化数据集涉及重新调整值的分布,以便观察值的平均值为0,标准差为1。

    这可以被认为是减去平均值或使数据居中。

    与标准化一样,当您的时间序列数据具有不同比例的输入值时,标准化可能是有用的,甚至在某些机器学习算法中也是必需的。

    标准化假定您的观察结果符合高斯分布(钟形曲线),具有良好的平均值和标准偏差。如果不满足此期望,您仍然可以标准化时间序列数据,但可能无法获得可靠的结果。

    这包括支持向量机,线性和逻辑回归等算法,以及其他假设或使用高斯数据提高性能的算法。

    标准化要求您知道或能够准确估计可观察值的均值和标准差。您可以从训练数据中估算这些值。

    值标准化如下:

    y = (x - mean) / standard_deviation

    平均值的计算公式为: 

    mean = sum(x) / count(x)

    standard_deviation计算如下: 

    standard_deviation = sqrt( sum( (x - mean)^2 ) / count(x))

    例如,我们可以绘制最低每日温度数据集的直方图,如下所示: 

    from pandas import Series
    from matplotlib import pyplot
    series = Series.from_csv('daily-minimum-temperatures-in-me.csv', header=0)
    series.hist()
    pyplot.show()

    运行代码会给出以下图表,该图表显示数据集的高斯分布,如标准化所假设的那样。 

    最低每日温度直方图

                                           最低每日温度直方图

    我们可以猜测平均温度为10,标准偏差约为5.使用这些值,我们可以将数据集中的第一个值标准化为20.7,如下所示:

    y = (x - mean) / standard_deviation
    y = (20.7 - 10) / 5
    y = (10.7) / 5
    y = 2.14

    数据集的均值和标准差估计对新数据的稳健性可能比最小值和最大值更强。 

    您可以使用scikit-learn对象StandardScaler来标准化数据集。

    以下是标准化每日最低温度数据集的示例。

    # Standardize time series data
    from pandas import Series
    from sklearn.preprocessing import StandardScaler
    from math import sqrt
    # load the dataset and print the first 5 rows
    series = Series.from_csv('daily-minimum-temperatures-in-me.csv', header=0)
    print(series.head())
    # 准备数据
    values = series.values
    values = values.reshape((len(values), 1))
    # 定义标准化模型
    scaler = StandardScaler()
    scaler = scaler.fit(values)
    print('Mean: %f, StandardDeviation: %f' % (scaler.mean_, sqrt(scaler.var_)))
    # 开始标准化,打印前五行
    normalized = scaler.transform(values)
    for i in range(5):
    	print(normalized[i])
    # 逆标准化数据
    inversed = scaler.inverse_transform(normalized)
    for i in range(5):
    	print(inversed[i])

    运行该示例将打印数据集的前5行,打印标准化的相同值,然后以原始比例打印值。 

    我们可以看到估计的平均值和标准偏差分别为11.1和4.0。

    Date
    1981-01-01 20.7
    1981-01-02 17.9
    1981-01-03 18.8
    1981-01-04 14.6
    1981-01-05 15.8
    Name: Temp, dtype: float64
    Mean: 11.177753, StandardDeviation: 4.071279
    [ 2.33888328]
    [ 1.65113873]
    [ 1.87219948]
    [ 0.84058266]
    [ 1.13533032]
    [ 20.7]
    [ 17.9]
    [ 18.8]
    [ 14.6]
    [ 15.8]

     

    展开全文
  • spss 如何进行数据标准化_spss原始数据标准化_spss数据标准化处理SPSS计算运行过程中会自行标准化的,如果想保存标准化后的数据文件,点击Analyze–>descriptive statistics–>descriptives中勾选“save ...

    spss 如何进行数据标准化_spss原始数据标准化_spss数据标准化处理

    SPSS计算运行过程中会自行标准化的,如果想保存标准化后的数据文件,点击Analyze–>descriptive statistics–>descriptives中勾选“save standardized values as new variables”

    进行多元统计分析时,我们往往要收集不同量纲的数据,比如销售总额(万元),利润率(百分数)。这表现为变量在数量级和计量单位上的差别,从而使得各个变量之间不具有综合性,而多元分析方法大多对变量要特殊的要求,比如符合正态分布或者变量之间具有可比性。这时就必须采用某种方法对各变量数值进行标准化处理,或者叫无量纲化处理,解决各数值不具综合性的问题。

    spss提供了很方便的数据标准化方法,这里只介绍Z标准化方法。即每一变量值与其平均值之差除以该变量的标准差。无量纲化后各变量的平均值为0,标准差为1,从而消除量纲和数量级的影响。该方法是目前多变量综合分析中使用**多的一种方法。在原始数据呈正态分布的情况下,利用该方法进行数据无量纲处理是较合理的。

    spss的实现步骤:图例【1】分析——描述统计——描述【2】弹出“描述统计”对话框,首先将准备标准化的变量移入变量组中,此时,**重要的一步就是勾选“将标准化得分另存为变量”,***点击确定。【3】返回SPSS的“数据视图”,此时就可以看到新增了标准化后数据的字段。基于此字段可以做其他分析。

    SPSS计算运行过程中会自行标准化的,如果想保存标准化后的数据文件,点击Analyze–>descriptive statistics–>descriptives中勾选“save standardized values as new variables”

    转载请注明:数据分析 » spss 如何进行数据标准化_spss原始数据标准化_spss数据标准化处理

    如何使用SPSS做时间序列分析_spss时间序列分析

    如何使用SPSS做时间序列分析

    关键词 :spss时间序列分析、spss时间序列分析案例、spss做时间序列分析

    我们在使用SPSS做数据分析的时候,有时需要利用SPSS做时间序列分析,那么时间序列分析应该注意什么和具体该如何去操作呢?

    SPSS

    ARIMA模型

    指数平滑法

    方法/步骤

    首先,我们在SPSS里面导入Excel里面的一组测试数据用来做时间序列分析。在如图所示的对话框中“打开现有数据源”下面选择图示的excel文件。

    2然后在弹出的“打开Excel数据源”框内,“工作表”下面选择你输入数据的Excel sheet表格,单击“确定”。

    3接着,我们需要查看我们导入的数据,比如是否有缺失数据,数据的分布是怎么样的。方法一:点击左下角“数据视图”,查看原数据(使用数据不多的情况);方法二:依次点击“分析-描述统计-描述“查看数据情况(数据多的情况下推荐)。

    END

    数据预处理

    1在完成上面的步骤后,做时间序列分析前需要对数据进行一个预处理,即为数据定义日期。

    2首先,我们在如图所示的菜单上依次点击“数据–定义日期”。

    3接着,我们在弹出的“定义日期”对话框内,设置日期的格式。在图示的案例中,我们现在“年份,月”作为日期格式。

    4确定日期格式后,我们在SPSS数据表格里面的“数据视图”可以看到新插入的日期“Year”“Month”“Date”(新变量默认名称)。

    END

    时间序列分析-指数平滑法

    1首先,我们利用指数平滑法时间序列分析。指数平滑法的使用特点是将较大的权数放在**近的资料。

    2我们依次点击***排菜单栏里面的“分析-预测-创建模型”,弹出“时间序列建模器”。

    3现在进行一些设置:在“变量”选项下,将需要进行时间序列预测的变量拖入图示的“因变量”框内;在方法中,选择“指数平滑法”。

    4其他的一些设置包括【统计量】,我们勾选“平稳的R方”“拟合优度”“显示预测值”;在【图表】中选“观察值”“预测值”“拟合值”;在【保存】中勾选“预测值”;在【选项】下填写我们需要预测到的指定日期。

    5全部设置完成后,点击【确定】,即可在输出文档里面看到时间序列建模程序显示的结果(右击结果图表可以复制,导出到Excel等操作)。

    END

    时间序列分析-ARIMA模型

    我们还可以使用ARIMA模型来进行时间序列的预测,使用的特点是将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。ARIMA模型中ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。

    使用的方法和上面的类似,依次点击***排菜单栏里面的“分析-预测-创建模型”,弹出“时间序列建模器”。

    由于在指数平滑法中我们做了设置,这里就不需要再次设置。这里需要的设置是把【变量】下面的自变量拖入【因变量】框内和【自变量】框内,然后在方法中选择“ARIMA”即可。

    全部设置完成后,单击确定,即可在刚才的输出文档里面看到使用ARIMA模型的预测结果(同样,这些结果右击可以进行复制导出等操作)。

    END

    注意事项

    注意指数平滑法中不能包含自变量。

    保存下的变量名前缀由于SPSS的BUG需要做更改。

    数据量非常大的话可以使用SPSS工具不适合。

    转载请注明:数据分析 » 如何使用SPSS做时间序列分析_spss时间序列分析

    展开全文
  • 因此,本文是关于时间序列数据可视的。 我将从一些非常简单的可视开始,然后慢慢地转向一些高级的可视技术和工具 在开始之前,我需要再弄清楚一件事。 标题中的“完整指南”并不意味着,它有所有的可视。在...

    时间序列数据在许多不同的行业中都非常重要。它在研究、金融行业、制药、社交媒体、网络服务等领域尤为重要。对时间序列数据的分析也变得越来越重要。在分析中有什么比一些好的可视化效果更好呢?没有一些视觉效果,任何类型的数据分析都是不完整的。因为一个好的情节比20页的报告更能让你理解。因此,本文是关于时间序列数据可视化的。

    我将从一些非常简单的可视化开始,然后慢慢地转向一些高级的可视化技术和工具

    在开始之前,我需要再弄清楚一件事。

    标题中的“完整指南”并不意味着,它有所有的可视化。在这么多不同的库中有这么多的可视化方法,所以在一篇文章中包含所有这些方法是不实际的。

    但是本文可以为您提供足够的工具和技术来清楚地讲述一个故事或理解和可视化时间序列数据。 我试图解释一些简单的方法和一些先进的技术。

    数据集

    如果您正在阅读本文以进行学习,则最好的方法是自己跟踪并运行所有代码。 请随时从以下链接下载数据集:

    https://github.com/rashida048/Datasets/blob/master/stock_data.csv

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    df = pd.read_csv("stock_data.csv", parse_dates=True, index_col = "Date")
    df.head()
    

    我在read_csv函数中使用了“ parse_dates”参数将“日期”列转换为DatetimeIndex格式。 在大多数情况下,日期是以字符串格式存储的,而字符串格式不是用于时间序列数据分析的正确格式。 如果采用DatetimeIndex格式,则将其作为时间序列数据进行处理将非常有帮助。

    我们先从基本开始。最基本的图形应该是使用Pandas的线形图。我将在这里绘制“Volume”数据。看看它是怎样的:

    df['Volume'].plot()
    

    这是我们的“Volume”数据图,看起来有些忙碌而有一些大的峰值。 将所有其他列也绘制在一个图中以同时检查所有它们的曲线将是一个好主意。

    df.plot(subplots=True, figsize=(10,12))
    

    ‘Open’, ‘Close’, ‘High’ ,‘Low’ 数据的曲线形状具有相同的形状。 只有“Volume”具有不同的形状。

    我上面使用的折线图非常适合显示季节性。 重新采样数月或数周并绘制条形图是发现季节性的另一种非常简单且广泛使用的方法。 我在这里绘制2016年和2017年月份数据的条形图。对于指数,我将使用[2016:]。 因为我们的数据集包含直到2017年的数据。所以,2016年末应该带来2016年和2017年。

    df_month = df.resample("M").mean()
    fig, ax = plt.subplots(figsize=(10, 6))
    
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
    
    ax.bar(df_month['2016':].index, df_month.loc['2016':, "Volume"], width=25, align='center'
    

    有24个小节。每个条代表一个月。2017年7月大幅飙升。

    找到季节性的一种方法是使用一组箱线图。这里我将为每个月制作箱线图。我将使用Open’, ‘Close’, ‘High’ ,‘Low’数据来绘制这个图。。

    import seaborn as sns
    #start, end = '2016-01', '2016-12'
    fig, axes = plt.subplots(4, 1, figsize=(10, 16), sharex=True)
    for name, ax in zip(['Open', 'Close', 'High', 'Low'], axes):
        sns.boxplot(data = df, x='Month', y=name, ax=ax)
        ax.set_ylabel("")
        ax.set_title(name)
        if ax != axes[-1]:
            ax.set_xlabel('')
    

    它清楚地显示了每月的价值差异。

    有更多的方式来显示季节性。在本文的最后我用另一种方式进行讨论。

    重采样和滚动

    请记住上面的“Volume”数据的第一行图。正如我们之前讨论过的,这里数据量太大了。它可以通过重采样来修复。绘制月平均数据将在很大程度上解决这个问题,而不是绘制每日数据。为此,我将使用已经为上面的条形图和框图准备的df_month数据集。

    df_month['Volume'].plot(figsize=(8, 6))
    

    更容易理解,更清楚!它能让你更好地了解长期趋势。

    重采样在时间序列数据中很常见。大多数时候重采样是在较低的频率进行。

    因此,本文将只处理低频的重采样。虽然重新采样的高频率也有必要,特别是为了建模的目的。不是为了数据分析。

    在我们目前正在研究的“Volume”数据中,我们可以观察到一些大的峰值。这些类型的尖峰对数据分析或建模没有帮助。通常平滑尖峰,重新采样到较低的频率和滚动是非常有用的。

    现在,将日数据和周平均“Volume”画在同一幅图上。首先,使用重采样方法制作每周平均数据集。

    df_week = df.resample("W").mean()
    

    这个“df_week”和“df_month”在以后的可视化中也会很有用。

    让我们把每日和每周的数据画在同一个图上。

    start, end = '2015-01', '2015-08'
    fig, ax = plt.subplots()
    
    ax.plot(df.loc[start:end, 'Volume'], marker='.', linestyle='-', linewidth = 0.5, label='Daily', color='black')
    ax.plot(df_week.loc[start:end, 'Volume'], marker='o', markersize=8, linestyle='-', label='Weekly', color='coral')
    label='Monthly', color='violet')
    ax.set_ylabel("Open")
    ax.legend()
    

    周平均面积的峰值比日数据要小。

    滚动是另一种非常有用的平滑曲线的方法。它取特定数据量的平均值。如果我想要一个7天的滚动,它会给我们7-d的平均数据。

    让我们在上面的图中包含7-d滚动数据。

    df_7d_rolling = df.rolling(7, center=True).mean()
    
    start, end = '2016-06', '2017-05'fig, ax = plt.subplots()
    
    ax.plot(df.loc[start:end, 'Volume'], marker='.', linestyle='-', 
            linewidth=0.5, label='Daily')
    ax.plot(df_week.loc[start:end, 'Volume'], marker='o', markersize=5, 
            linestyle='-', label = 'Weekly mean volume')
    ax.plot(df_7d_rolling.loc[start:end, 'Volume'], marker='.', linestyle='-', label='7d Rolling Average')
    ax.set_ylabel('Stock Volume')
    ax.legend()
    

    在这个情节中发生了很多事情。但如果你仔细看,还是可以理解的。如果你注意到7-d的滚动平均比周平均平滑一些。

    使用30-d或365-d滚动平均也很常见,以使曲线更平滑。

    图表展示变化

    很多时候,查看数据如何随时间变化比查看日常数据更有用。

    有几种不同的方法可以计算和可视化数据的变化。

    shift

    shift函数在指定的时间之前或之后移动数据。如果我不指定时间,它将转移数据一天默认。这意味着你将获得前一天的数据。在像这样的财务数据中,把前一天的数据和今天的数据放在一起是很有帮助的。

    因为这篇文章只专注于可视化,所以我将只绘制前一天的数据:

    df['Change'] = df.Close.div(df.Close.shift())
    df['Change'].plot(figsize=(20, 8), fontsize = 16)
    

    在上面的代码中,.div()帮助填充丢失的数据。div()的意思是“除”。df.div(6)将把df中的每个元素除以6。但这里我用的是’ df.Close.shift() ‘因此,df的每个元素将被’ df. close .shift() ‘的每个元素除。这样做是为了避免’ shift() '操作创建的空值。

    您可以简单地指定一个时间段并进行绘图以使外观更清晰。 这仅是2017年的情节。

    df['2017']['Change'].plot(figsize=(10, 6))
    

    尽管这种转变在很多方面都很有用。但我发现百分比变化在很多情况下很有用。

    变化百分比

    我将使用开始计算的月度数据。这次我选择了条形图。它清楚地显示了百分比的变化。有一个百分比更改函数可用来获取percent_change数据。

    df_month.loc[:, 'pct_change'] = df.Close.pct_change()*100
    
    fig, ax = plt.subplots()
    df_month['pct_change' ].plot(kind='bar', color='coral', ax=ax)
    ax.xaxis.set_major_locator(mdates.WeekdayLocator())
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %d'))
    plt.xticks(rotation=45)
    ax.legend()
    

    我在这里画出了封闭数据的变化百分比。这里用的是月变化百分比。

    差分

    差分取指定距离值的差值。默认情况下,是1。如果像“df.High.diff(2)”那样指定2,它将取‘High’列的第一个和第三个元素、第二个和第四个元素的差值,依此类推。

    在数据中去除趋势是一种流行的方法。这种趋势不利于预测或建模。

    df.High.diff().plot(figsize=(10, 6))
    

    扩展窗口

    另一种转变方式。它不断增加累积。例如,如果向’ High '列元素添加展开函数,则第一项元素保持不变。第二个元素成为第一个和第二个元素的累积,第三个元素成为第一个、第二个和第三个元素的累积,以此类推。你也可以在上面使用聚合函数,比如平均值、中位数、标准差等等。

    这样,它就能提供随时间变化的均值、中位数、和或标准差。它对财务数据、业务销售或利润数据不是很有用吗?

    fig, ax = plt.subplots()
    ax = df.High.plot(label='High')
    ax = df.High.expanding().mean().plot(label='High expanding mean')
    ax = df.High.expanding().std().plot(label='High expanding std')
    ax.legend()
    

    这里我加了均值和标准差。看看每天的数据和平均值。在2017年底,每日数据显示一个巨大的高峰。但它并没有显示平均值的峰值。如果只看2017年的数据,不断扩大的平均水平可能会有所不同。

    热点图

    热点图通常是一种随处使用的常见数据可视化类型。在时间序列数据中,热点图也是非常有用的。

    但是在深入研究热点图之前,我们需要开发一个日历来表示我们数据集的年和月数据。让我们看一个例子。

    在这个演示中,我将导入一个日历包并使用pivot表函数来生成值。

    import calendar
    all_month_year_df = pd.pivot_table(df, values="Open",
                                       index=["month"],
                                       columns=["year"],
                                       fill_value=0,
                                       margins=True)
    named_index = [[calendar.month_abbr[i] if isinstance(i, int) else i for i in list(all_month_year_df.index)]] # name months
    all_month_year_df = all_month_year_df.set_index(named_index)
    all_month_year_df
    

    日历已经准备好了每月平均“Open”数据。现在,用它生成热点图。

    ax = sns.heatmap(all_month_year_df, cmap='RdYlGn_r', robust=True, fmt='.2f', 
                     annot=True, linewidths=.5, annot_kws={'size':11}, 
                     cbar_kws={'shrink':.8, 'label':'Open'})                       
        
    ax.set_yticklabels(ax.get_yticklabels(), rotation=0, fontsize=10)
    ax.set_xticklabels(ax.get_xticklabels(), rotation=0, fontsize=10)
    plt.title('Average Opening', fontdict={'fontsize':18},    pad=14);
    

    深红色意味着非常高的数值,深绿色意味着非常低的数值。

    分解图

    分解将在同一个图中显示观察结果和这三个元素:

    趋势:时间序列一致的向上或向下的斜率。

    季节性:时间序列的明确周期模式

    噪声:异常值或缺失值

    使用stats模型库,很容易做到:

    from pylab import rcParams
    import statsmodels.api as sm
    
    rcParams['figure.figsize'] = 11, 9
    decomposition = sm.tsa.seasonal_decompose(df_month['Volume'], model='Additive')
    fig = decomposition.plot()
    plt.show()
    

    趋势是移动平均线。为了让对最后一行的残差有一个高层次的概念,下面是一般公式:

    原始观测值=趋势+季节性+残差

    尽管关于分解的文档本身说它是一种非常简单的表示,但它仍然很流行。

    总结

    如果你能运行上面所有的代码,恭喜你!今天,您已经学习了足够多的时间序列数据可视化。正如我在开始时提到的,有很多很酷的可视化技术可用。

    作者:Rashida Nasrin Sucky

    deephub翻译组

    展开全文
  • 快速实现时间序列数据归一

    千次阅读 2020-08-21 12:37:45
    50M的时间序列数据,归一了一天一夜,我的笔记本CPU还可以,8G内存。网上找了一些,基本方法和我的一致,要么是for循环,要么,写个函数,大致也要用for循环。有比较高明一点的,只是事先把最大最小值先算...

    快速实现时间序列数据归一化

    背景描述

    50M的时间序列数据,做归一化,做了一天一夜,我的笔记本CPU还可以,8G内存。网上找了一些,基本方法和我的一致,要么是for循环,要么,写个函数,大致也要用for循环。有比较高明一点的,只是事先把最大最小值先算出来。提升了一小丢丢速度,本质上没啥子变化。

    Numpy库的特点

    就是并行,为啥pandas读取完的数据还要使用for循环来做呢?至少自己怀疑Python没学好。不认头,于是琢磨出下面方法,5分钟搞定数据归一化。闲话少说,直接上代码。

    借助Pandas快速实现归一化

    首先导入数据
    数据下载链接:
    https://download.csdn.net/download/weixin_45341568/12736595

    导入数据包

    import numpy as np
    import pandas as pd
    import datetime
    

    读取数据,并对数据做处理,将日期和时间作为多重索引

    ts_x = pd.read_csv('./data/original_data/1min.csv',parse_dates=[0,1],usecols=[0,1,3])
    ts_x.time = ts_x.time.apply(lambda x: datetime.datetime.strftime(x, '%H:%M:%S'))
    ts_x.set_index(['date', 'time'], inplace=True)
    

    在这里插入图片描述

    对数据进行堆叠操作,并删除多余列索引。
    多余的列索引是由于堆叠操作产生

    ts_x = ts_x.unstack()
    ts_x.columns = ts_x.columns.droplevel()
    

    在这里插入图片描述
    然后用下面一行代码就可以做归一化操作了,这里做个提示,pandas中的df.min()这个函数默认是对每列求最小值,通过设置参数,可以变更为对每行求最小值。

    df_norm = ts_x.apply(lambda x: (x-ts_x.min(1))/(ts_x.max(1)-ts_x.min(1)))
    

    在这里插入图片描述
    就这么简单,就完成了数据的归一化操作。总共用时不超过5分钟。

    展开全文
  • 支持向量机(SVM)是一种分类算法,但是也可以回归,根据输入的数据不同可不同的模型(若输入标签为连续值则回归,若输入标签为分类值则用SVC分类) 对于SVM算法,我们首先导入sklearn.svm中的SVR模块。SVR()...
  • Introduction简言之,SAX算法就是将时间序列进行符号表示。这个算法最初是由Lin et al.提出的,它扩展了基于PAA的方法并继承了原始方法的简单和低复杂度的特点,同时在范围查询的过程中提供了令人满意的灵敏度和可...
  • 时间序列列表是动态的,因此可以通过选择特定的数据相关操作,即加载时间序列文件,从列表中标准化或分割时间序列,可以从列表中删除时间序列,并将新的时间序列添加到列表中,或者生成重采样(代理)时间序列(主...
  • 数据库 在数据库里如果使用了 datatime 格式,那存起来是如下格式显示: 返回到前端 全局配置 把实体类用 @RestController 往前端返回的... # 格式返回时间 yyyy-MM-dd HH:mm:ss date-format: yyyy-MM-dd HH:mm:ss
  • 简单粗暴LSTM:LSTM进行时间序列预测 实验中所用到的函数 #转换函数 def Create_dataset ( dataset , look_back ) : data_X , data_Y = [ ] , [ ] for i in range ( len ( dataset ) - ...
  • XGBoost和时间序列

    千次阅读 2021-03-23 09:02:51
    尽管它最初并不是为处理时间序列而设计的,但在这种情况下,仍有许多人使用它。 他们这样正确吗? 让我们来看看数学如何告诉我们有关该用例的信息。 XGBoost和时间序列 在很多领域和比赛中XGBoost已被用于预测此处...
  • 最简洁的Python时间序列可视实现

    千次阅读 2019-08-05 10:48:56
    时间序列数据在数据科学领域无处不在,在量化金融领域也十分常见,可以用于分析价格趋势,预测价格,探索价格行为等。学会对时间序列数据进行可视,能够帮助我们更加直观地探索时间...
  • 彻底理解序列化和反序列化

    千次阅读 2020-01-16 13:27:54
    目录 摘要 简介 一、定义以及相关概念 数据结构、对象与二进制串 二、序列化协议特性 通用性 强健性/鲁棒性 可调试性/可读性 ...三、序列化和反序列化的组件 序列化组件与数据库访问组件...
  • 时间序列特征工程

    千次阅读 2020-12-29 23:44:37
    时间序列的特征工程大体上分为:基础特征、转换特征、分类特征这三大类,涉及统计分析、机器学习、深度学习等多个领域。这里要注意的是,特征工程技巧是一方面,更重要的是看实际问题背景,不同问题有不同问题适合的...
  • pandas时间序列

    万次阅读 多人点赞 2018-07-25 22:12:35
    时间序列(time series)数据是一种重要的结构数据形式,。在多个时间点观察或测量到的任何时间都可以形成一段时间序列。很多时间, 时间序列是固定频率的, 也就是说, 数据点是根据某种规律定期出现的(比如每15...
  • 时间序列预测方法最全总结!

    万次阅读 多人点赞 2021-03-12 00:15:38
    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。需要明确一点的是,与回归分析预测模型...
  • SAX全称 Symbolic Aggregate Approximation, 中文意思是符号...(1)将原始时间序列规格,转换成均值为0,标准差为1 的的序列,原论文中解释的原因如下: (2)通过PAA(Piecewise Aggregate Approximatio...
  • 时间序列的归一方法

    万次阅读 2015-03-30 19:16:42
    在机器学习、模式识别的模型训练之前,通常需要对数据进行预处理工作,在哪种情况下选用哪种预处理方法,仍然是很多工作...由于时间序列的特殊性(1、相邻序列之间的模式相关性,2、在时间维度上数据是不断产生的),因
  • Matlab时间序列分析

    万次阅读 多人点赞 2018-11-13 18:53:46
    在引入时间序列前,先介绍几个matlab函数 matlab中的gallery函数简析 Matlab 中的 gallery 函数是一个测试矩阵生成函数。当我们需要对某些算法进行测试的时候,可以利用gallery函数来生成各种性质的测试矩阵。其用法...
  • 时间序列回归

    千次阅读 2020-12-29 23:31:34
    时序预测模型与回归预测模型是不同的。时序预测模型依赖于数值在时间上的先后顺序,是回归模型中的一部分。
  • 如何用XGBoost做时间序列预测?

    千次阅读 2020-09-06 19:59:00
    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 来源:Jason Brownlee,整理:数据派THU 本文约3300字,建议阅读10分钟 本文介绍了如何用XGBoost做时间序列预测,包括将时间序列...
  • 时间序列建模教程

    万次阅读 多人点赞 2018-05-04 10:11:52
    简介 在商业应用中,时间是最重要的因素,能够提升成功率。然而绝大多数公司很难跟上时间的脚步。但是随着技术的发展,出现了很多有效的方法,能够让...有一种预测是跟时间相关的,而这种处理与时间相关数据的方...
  • 时间序列预测

    千次阅读 2020-12-29 23:10:04
    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。
  • 时间序列的聚类方法

    万次阅读 多人点赞 2019-05-30 14:36:13
    时间序列的聚类方法 时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内,依照给定的采样率,对某种潜在过程进行观测的结果。 时间序列数据是实值型的序列数据,具有数据量大、数据维度高以及数据...
  • R语言时间序列分析

    千次阅读 多人点赞 2020-05-23 00:29:48
    时间序列 白噪声序列 终止分析,无信息可提取 非白噪声序列 平稳序列 AR/MA/ARMA 非平稳序列 ARIMA,实际中最常见 当拿到一个时间序列的时候,首先分析该时间序列的类型,不同类型的序列有不同...
  • 时间序列预测可以被构造为一个监督学习问题。通过对时间序列数据的重构,可以针对不同问题使用相关的机器学习算法。本文介绍了如何将时间序列问题重新构造为机器学习中的监督学习问题。
  • 时间序列异常点检测

    万次阅读 2019-11-05 17:31:23
    时间序列异常检测--简单的语言介绍当前时间序列异常检测方法 在Statsbot,我们不断地回顾异常检测方法,并在此基础上改进我们的模型。 本文概述了目前最流行的时间序列异常检测算法及其优缺点。 这篇文章是写给...
  • 时间序列分类算法_时间序列分类算法简介

    千次阅读 多人点赞 2020-08-30 21:10:18
    时间序列分类算法A common task for time series machine learning is classification. Given a set of time series with class labels, can we train a model to accurately predict the class of new time series?...
  • 因为本文示例仅使用简单的人为构造的数据来进行演示,因此并没有超参数调整部分,本文更多的目的是提供解决时间序列预测问题的思路方法和模型的模板,具体的细节可以根据自己的业务需求进行扩展开发。
  • 时间序列森林(Time Series Forest, TSF)模型将时间序列转化为子序列的均值、方差和斜率等统计特征,并使用随机森林进行分类。TSF通过使用随机森林方法(以每个间隔的统计信息作为特征)来克服间隔特征空间巨大的...
  • 本文介绍了在以tensorflow2.1.0为后端的Keras中,如何为各种时间序列预测问题开发LSTM模型。本文旨在为每种类型的时间序列问题提供所对应模型的示例,你可以依此为模板,针对自己的业务需求进行修改。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 245,098
精华内容 98,039
关键字:

时间序列如何做标准化