开始使用免费开始使用

处理异常值

在本练习中,您将处理异常值——这些数据点与其余数据差异很大,因此需要与其他"看起来正常"的数据点区别对待。您将使用上一个练习的输出(随时间的百分比变化)来检测异常值。首先,您将编写一个函数,用整个时间序列的中位数替换异常数据点。

本练习是课程的一部分

Python 中的时间序列机器学习

查看课程

练习说明

  • 定义一个函数,接收一个输入序列并执行以下操作:
    • 计算每个数据点与序列均值的距离的绝对值,然后为那些距离均值超过 3 倍标准差的数据点创建布尔掩码。
    • 使用该布尔掩码将异常值替换为整个序列的中位数。
  • 将此函数应用到您的数据上,并使用给定的代码可视化结果。

交互式实操练习

通过完成这段示例代码来试试这个练习。

def replace_outliers(series):
    # Calculate the absolute difference of each timepoint from the series mean
    absolute_differences_from_mean = np.abs(series - np.mean(series))
    
    # Calculate a mask for the differences that are > 3 standard deviations from zero
    this_mask = absolute_differences_from_mean > (np.____(series) * ____)
    
    # Replace these values with the median accross the data
    series[this_mask] = np.____(series)
    return series

# Apply your preprocessing function to the timeseries and plot the results
prices_perc = prices_perc.____
prices_perc.loc["2014":"2015"].plot()
plt.show()
编辑并运行代码