TimeSeriesCatalog.DetectIidChangePoint 方法

定义

重载

DetectIidChangePoint(TransformsCatalog, String, String, Double, Int32, MartingaleType, Double)

创建 IidChangePointEstimator,它基于自适应内核密度估计和马丁加尔分数预测 独立相同分布 (i.i.d.) 时序中的更改点。

DetectIidChangePoint(TransformsCatalog, String, String, Int32, Int32, MartingaleType, Double)
已过时.

创建 IidChangePointEstimator,它基于自适应内核密度估计和马丁加尔分数预测 独立相同分布 (i.i.d.) 时序中的更改点。

DetectIidChangePoint(TransformsCatalog, String, String, Double, Int32, MartingaleType, Double)

创建 IidChangePointEstimator,它基于自适应内核密度估计和马丁加尔分数预测 独立相同分布 (i.i.d.) 时序中的更改点。

public static Microsoft.ML.Transforms.TimeSeries.IidChangePointEstimator DetectIidChangePoint (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, double confidence, int changeHistoryLength, Microsoft.ML.Transforms.TimeSeries.MartingaleType martingale = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, double eps = 0.1);
static member DetectIidChangePoint : Microsoft.ML.TransformsCatalog * string * string * double * int * Microsoft.ML.Transforms.TimeSeries.MartingaleType * double -> Microsoft.ML.Transforms.TimeSeries.IidChangePointEstimator
<Extension()>
Public Function DetectIidChangePoint (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, confidence As Double, changeHistoryLength As Integer, Optional martingale As MartingaleType = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, Optional eps As Double = 0.1) As IidChangePointEstimator

参数

catalog
TransformsCatalog

转换的目录。

outputColumnName
String

由转换 inputColumnName生成的列的名称。 列数据是一个向量 Double。 矢量包含 4 个元素:警报 (非零值表示更改点) 、原始分数、p 值和马丁加尔分数。

inputColumnName
String

要转换的列的名称。 列数据必须是 Single。 If set to null, the value of the outputColumnName will be used as source.

confidence
Double

[0, 100] 范围内更改点检测的置信度。

changeHistoryLength
Int32

用于计算马丁加尔分数的 p 值上的滑动窗口的长度。

martingale
MartingaleType

用于评分的马丁格尔。

eps
Double

Power martingale 的 epsilon 参数。

返回

示例

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic
{
    public static class DetectIidChangePointBatchPrediction
    {
        // This example creates a time series (list of Data with the i-th element
        // corresponding to the i-th time slot). The estimator is applied then to
        // identify points where data distribution changed.
        public static void Example()
        {
            // Create a new ML context, for ML.NET operations. It can be used for
            // exception tracking and logging, as well as the source of randomness.
            var ml = new MLContext();

            // Generate sample series data with a change
            const int Size = 16;
            var data = new List<TimeSeriesData>(Size)
            {
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),

                //Change point data.
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
            };

            // Convert data to IDataView.
            var dataView = ml.Data.LoadFromEnumerable(data);

            // Setup estimator arguments
            string outputColumnName = nameof(ChangePointPrediction.Prediction);
            string inputColumnName = nameof(TimeSeriesData.Value);

            // The transformed data.
            var transformedData = ml.Transforms.DetectIidChangePoint(
                outputColumnName, inputColumnName, 95.0d, Size / 4).Fit(dataView)
                .Transform(dataView);

            // Getting the data of the newly created column as an IEnumerable of
            // ChangePointPrediction.
            var predictionColumn = ml.Data.CreateEnumerable<ChangePointPrediction>(
                transformedData, reuseRowObject: false);

            Console.WriteLine($"{outputColumnName} column obtained " +
                $"post-transformation.");

            Console.WriteLine("Data\tAlert\tScore\tP-Value\tMartingale value");
            int k = 0;
            foreach (var prediction in predictionColumn)
                PrintPrediction(data[k++].Value, prediction);

            // Prediction column obtained post-transformation.
            // Data Alert      Score   P-Value Martingale value
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 7       1       7.00    0.00    10298.67   <-- alert is on, predicted changepoint
            // 7       0       7.00    0.13    33950.16
            // 7       0       7.00    0.26    60866.34
            // 7       0       7.00    0.38    78362.04
            // 7       0       7.00    0.50    0.01
            // 7       0       7.00    0.50    0.00
            // 7       0       7.00    0.50    0.00
            // 7       0       7.00    0.50    0.00
        }

        private static void PrintPrediction(float value, ChangePointPrediction
            prediction) =>
            Console.WriteLine("{0}\t{1}\t{2:0.00}\t{3:0.00}\t{4:0.00}", value,
            prediction.Prediction[0], prediction.Prediction[1],
            prediction.Prediction[2], prediction.Prediction[3]);

        class ChangePointPrediction
        {
            [VectorType(4)]
            public double[] Prediction { get; set; }
        }

        class TimeSeriesData
        {
            public float Value;

            public TimeSeriesData(float value)
            {
                Value = value;
            }
        }
    }
}

适用于

DetectIidChangePoint(TransformsCatalog, String, String, Int32, Int32, MartingaleType, Double)

注意

This API method is deprecated, please use the overload with confidence parameter of type double.

创建 IidChangePointEstimator,它基于自适应内核密度估计和马丁加尔分数预测 独立相同分布 (i.i.d.) 时序中的更改点。

[System.Obsolete("This API method is deprecated, please use the overload with confidence parameter of type double.")]
public static Microsoft.ML.Transforms.TimeSeries.IidChangePointEstimator DetectIidChangePoint (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int confidence, int changeHistoryLength, Microsoft.ML.Transforms.TimeSeries.MartingaleType martingale = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, double eps = 0.1);
public static Microsoft.ML.Transforms.TimeSeries.IidChangePointEstimator DetectIidChangePoint (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, int confidence, int changeHistoryLength, Microsoft.ML.Transforms.TimeSeries.MartingaleType martingale = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, double eps = 0.1);
[<System.Obsolete("This API method is deprecated, please use the overload with confidence parameter of type double.")>]
static member DetectIidChangePoint : Microsoft.ML.TransformsCatalog * string * string * int * int * Microsoft.ML.Transforms.TimeSeries.MartingaleType * double -> Microsoft.ML.Transforms.TimeSeries.IidChangePointEstimator
static member DetectIidChangePoint : Microsoft.ML.TransformsCatalog * string * string * int * int * Microsoft.ML.Transforms.TimeSeries.MartingaleType * double -> Microsoft.ML.Transforms.TimeSeries.IidChangePointEstimator
<Extension()>
Public Function DetectIidChangePoint (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, confidence As Integer, changeHistoryLength As Integer, Optional martingale As MartingaleType = Microsoft.ML.Transforms.TimeSeries.MartingaleType.Power, Optional eps As Double = 0.1) As IidChangePointEstimator

参数

catalog
TransformsCatalog

转换的目录。

outputColumnName
String

由转换 inputColumnName生成的列的名称。 列数据是一个向量 Double。 矢量包含 4 个元素:警报 (非零值表示更改点) 、原始分数、p 值和马丁加尔分数。

inputColumnName
String

要转换的列的名称。 列数据必须是 Single。 If set to null, the value of the outputColumnName will be used as source.

confidence
Int32

[0, 100] 范围内更改点检测的置信度。

changeHistoryLength
Int32

用于计算马丁加尔分数的 p 值上的滑动窗口的长度。

martingale
MartingaleType

用于评分的马丁格尔。

eps
Double

Power martingale 的 epsilon 参数。

返回

属性

示例

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic
{
    public static class DetectIidChangePointBatchPrediction
    {
        // This example creates a time series (list of Data with the i-th element
        // corresponding to the i-th time slot). The estimator is applied then to
        // identify points where data distribution changed.
        public static void Example()
        {
            // Create a new ML context, for ML.NET operations. It can be used for
            // exception tracking and logging, as well as the source of randomness.
            var ml = new MLContext();

            // Generate sample series data with a change
            const int Size = 16;
            var data = new List<TimeSeriesData>(Size)
            {
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),
                new TimeSeriesData(5),

                //Change point data.
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
                new TimeSeriesData(7),
            };

            // Convert data to IDataView.
            var dataView = ml.Data.LoadFromEnumerable(data);

            // Setup estimator arguments
            string outputColumnName = nameof(ChangePointPrediction.Prediction);
            string inputColumnName = nameof(TimeSeriesData.Value);

            // The transformed data.
            var transformedData = ml.Transforms.DetectIidChangePoint(
                outputColumnName, inputColumnName, 95.0d, Size / 4).Fit(dataView)
                .Transform(dataView);

            // Getting the data of the newly created column as an IEnumerable of
            // ChangePointPrediction.
            var predictionColumn = ml.Data.CreateEnumerable<ChangePointPrediction>(
                transformedData, reuseRowObject: false);

            Console.WriteLine($"{outputColumnName} column obtained " +
                $"post-transformation.");

            Console.WriteLine("Data\tAlert\tScore\tP-Value\tMartingale value");
            int k = 0;
            foreach (var prediction in predictionColumn)
                PrintPrediction(data[k++].Value, prediction);

            // Prediction column obtained post-transformation.
            // Data Alert      Score   P-Value Martingale value
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 5       0       5.00    0.50    0.00
            // 7       1       7.00    0.00    10298.67   <-- alert is on, predicted changepoint
            // 7       0       7.00    0.13    33950.16
            // 7       0       7.00    0.26    60866.34
            // 7       0       7.00    0.38    78362.04
            // 7       0       7.00    0.50    0.01
            // 7       0       7.00    0.50    0.00
            // 7       0       7.00    0.50    0.00
            // 7       0       7.00    0.50    0.00
        }

        private static void PrintPrediction(float value, ChangePointPrediction
            prediction) =>
            Console.WriteLine("{0}\t{1}\t{2:0.00}\t{3:0.00}\t{4:0.00}", value,
            prediction.Prediction[0], prediction.Prediction[1],
            prediction.Prediction[2], prediction.Prediction[3]);

        class ChangePointPrediction
        {
            [VectorType(4)]
            public double[] Prediction { get; set; }
        }

        class TimeSeriesData
        {
            public float Value;

            public TimeSeriesData(float value)
            {
                Value = value;
            }
        }
    }
}

适用于