精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 ML.NET 進行電力消耗時序預測:基于家庭用電數(shù)據(jù)的實戰(zhàn)分析

開發(fā) 項目管理
本文展示了如何使用 ML.NET 構(gòu)建電力消耗預測模型的完整過程。通過合理配置和訓練,可以得到一個可靠的預測模型,幫助優(yōu)化電力系統(tǒng)運營。這個方法不僅適用于家庭用電預測,還可以擴展到工業(yè)用電預測、智能電網(wǎng)管理等領域。

準確預測電力消耗對于電力系統(tǒng)的規(guī)劃和運營至關重要。本文將詳細介紹如何使用 ML.NET 構(gòu)建時序預測模型,以預測全局有功功率(Global_active_power)的變化。

項目概述

  • 目標:預測未來24小時的電力消耗
  • 技術棧:ML.NET、C#
  • 算法:單變量時序分析(SSA)
  • 數(shù)據(jù)源:家庭用電量數(shù)據(jù)集

環(huán)境準備

  1. 創(chuàng)建新的 C# 控制臺應用程序
  2. 安裝必要的 NuGet 包:
<PackageReference Include="Microsoft.ML" Version="2.0.0" />
<PackageReference Include="Microsoft.ML.TimeSeries" Version="2.0.0" />
<PackageReference Include="CsvHelper" Version="30.0.1" />

圖片

完整代碼實現(xiàn)

1. 定義數(shù)據(jù)模型

// 原始數(shù)據(jù)模型  
public class PowerConsumptionRawData
{
    [LoadColumn(0)]
    public string Date { get; set; }

    [LoadColumn(1)]
    public string Time { get; set; }

    [LoadColumn(2)]
    public float Global_active_power { get; set; }
}
public class PowerConsumptionData
{
    public DateTime Timestamp { get; set; }
    public float Global_active_power { get; set; }
}
public class PowerPrediction
{
    public float[] ForecastedPower { get; set; }
    public float[] LowerBoundPower { get; set; }
    public float[] UpperBoundPower { get; set; }
}

2. 主程序?qū)崿F(xiàn)

using Microsoft.ML;
using Microsoft.ML.Transforms.TimeSeries;
using System.Globalization;

namespace App11
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 初始化 ML.NET 上下文
            MLContext mlContext = new MLContext(seed: 0);

            // 加載數(shù)據(jù)
            // 加載原始數(shù)據(jù)  
            IDataView rawDataView = mlContext.Data.LoadFromTextFile<PowerConsumptionRawData>(
                path: "household_power_consumption.txt",
                hasHeader: true,
                separatorChar: ';'
            );

            // 轉(zhuǎn)換數(shù)據(jù):合并日期時間并處理格式  
            var transformedData = mlContext.Data.CreateEnumerable<PowerConsumptionRawData>(rawDataView, reuseRowObject: false)
                .Select(row => new PowerConsumptionData
                {

                    Timestamp = ParseDateTime(row.Date + " " + row.Time),
                    Global_active_power = row.Global_active_power
                })
                .OrderBy(x => x.Timestamp)
                .ToList();


            // 將處理后的數(shù)據(jù)轉(zhuǎn)換回 IDataView  
            IDataView dataView = mlContext.Data.LoadFromEnumerable(transformedData);


            // 定義預測管道
            var pipeline = mlContext.Forecasting.ForecastBySsa(
                outputColumnName: "ForecastedPower",
                inputColumnName: nameof(PowerConsumptionData.Global_active_power),
                windowSize: 24,            // 24小時窗口
                seriesLength: 72,          // 使用3天的數(shù)據(jù)進行分析
                trainSize: 8760,           // 使用一年的數(shù)據(jù)訓練
                horizon: 24,               // 預測未來24小時
                confidenceLevel: 0.95f,
                confidenceLowerBoundColumn: "LowerBoundPower",
                confidenceUpperBoundColumn: "UpperBoundPower"
            );

            // 訓練模型
            var model = pipeline.Fit(dataView);
            Console.WriteLine("模型訓練完成!");

            // 評估模型
            // 評估模型  
            IDataView predictions = model.Transform(dataView);

            // 獲取預測值和實際值  
            var forecastingEngine = model.CreateTimeSeriesEngine<PowerConsumptionData, PowerPrediction>(mlContext);
            var forecast = forecastingEngine.Predict();

            // 手動計算評估指標  
            IEnumerable<float> actualValues = mlContext.Data.CreateEnumerable<PowerConsumptionData>(dataView,true)
                .Select(x => x.Global_active_power);

            IEnumerable<float> predictedValues = mlContext.Data.CreateEnumerable<PowerPrediction>(predictions, true)
                .Select(x => x.ForecastedPower[0]);

            // 首先打印數(shù)據(jù)數(shù)量  
            Console.WriteLine($"實際值數(shù)量: {actualValues.Count()}");
            Console.WriteLine($"預測值數(shù)量: {predictedValues.Count()}");

            // 檢查是否有無效值  
            var hasInvalidActual = actualValues.Any(x => float.IsNaN(x) || float.IsInfinity(x));
            var hasInvalidPredicted = predictedValues.Any(x => float.IsNaN(x) || float.IsInfinity(x));

            Console.WriteLine($"實際值中包含無效值: {hasInvalidActual}");
            Console.WriteLine($"預測值中包含無效值: {hasInvalidPredicted}");


            // 計算差異時過濾掉無效值  
            var metrics = actualValues.Zip(predictedValues, (actual, predicted) => new { Actual = actual, Predicted = predicted })
                .Where(pair => !float.IsNaN(pair.Actual) && !float.IsInfinity(pair.Actual) &&
                               !float.IsNaN(pair.Predicted) && !float.IsInfinity(pair.Predicted))
                .Select(pair => (double)pair.Actual - (double)pair.Predicted)
                .ToList();

            // 計算評估指標  
            double mse = metrics.Select(x => x * x).Average();
            double rmse = Math.Sqrt(mse);
            double mae = metrics.Select(x => Math.Abs(x)).Average();

            // 輸出評估指標  
            Console.WriteLine($"均方誤差 (MSE): {mse:F3}");
            Console.WriteLine($"均方根誤差 (RMSE): {rmse:F3}");
            Console.WriteLine($"平均絕對誤差 (MAE): {mae:F3}");


            // 保存模型
            string modelPath = "PowerPredictionModel.zip";
            mlContext.Model.Save(model, dataView.Schema, modelPath);

            // 加載模型并預測
            var loadedModel = mlContext.Model.Load(modelPath, out var modelInputSchema);
            var forecastEngine = loadedModel.CreateTimeSeriesEngine<PowerConsumptionData, PowerPrediction>(mlContext);
            var fforecast = forecastEngine.Predict();

            // 輸出預測結(jié)果
            Console.WriteLine("\n未來24小時的電力消耗預測:");
            for (int i = 0; i < fforecast.ForecastedPower.Length; i++)
            {
                Console.WriteLine($"第 {i + 1} 小時: {fforecast.ForecastedPower[i]:F3} kW " +
                                $"(置信區(qū)間: {fforecast.LowerBoundPower[i]:F3} - {fforecast.UpperBoundPower[i]:F3} kW)");
            }
        }

        static DateTime ParseDateTime(string dateString)
        {
            string[] formats = { "d/M/yyyy H:mm:ss", "dd/MM/yyyy H:mm:ss" }; // 支持多種格式  
            DateTime date;
            DateTime.TryParseExact(dateString, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
            return date;
        }
    }
}

圖片

`MLContext.Forecasting.ForecastBySsa` 方法的所有參數(shù):

必需參數(shù)

outputColumnName: string
// 預測結(jié)果輸出列的名稱
// 例如: "ForecastedPower"

inputColumnName: string
// 輸入數(shù)據(jù)列的名稱,用于預測的源數(shù)據(jù)列
// 例如: nameof(PowerConsumptionData.Global_active_power)

windowSize: int
// SSA(奇異譜分析)的窗口大小
// - 必須大于0且小于seriesLength
// - 影響模型捕捉的季節(jié)性模式
// - 推薦設置為預期周期長度的1/2到1/3

可選但重要的參數(shù)

seriesLength: int
// 用于訓練的時間序列片段長度
// - 默認值:windowSize * 2
// - 必須大于windowSize
// - 建議值:windowSize的2-3倍

trainSize: int
// 用于訓練的數(shù)據(jù)點數(shù)量
// - 默認值:整個數(shù)據(jù)集大小
// - 確定模型訓練使用的歷史數(shù)據(jù)量

horizon: int
// 預測的未來時間點數(shù)量
// - 默認值:1
// - 指定要預測多少個未來時間點

置信區(qū)間相關參數(shù)

confidenceLevel: float
// 預測的置信水平
// - 取值范圍:0到1之間
// - 常用值:0.95(95%置信度)
// - 默認值:0.95

confidenceLowerBoundColumn: string
// 置信區(qū)間下界的輸出列名
// - 可選參數(shù)
// - 例如: "LowerBoundPower"

confidenceUpperBoundColumn: string
// 置信區(qū)間上界的輸出列名
// - 可選參數(shù)
// - 例如: "UpperBoundPower"

最佳實踐

// 對于每小時數(shù)據(jù)的典型設置
var pipeline = mlContext.Forecasting.ForecastBySsa(
    outputColumnName: "Forecast",
    inputColumnName: "Value",
    windowSize: 24,           // 一天
    seriesLength: 72,         // 三天
    trainSize: 8760,          // 一年
    horizon: 24,              // 預測一天
    confidenceLevel: 0.95f
);

// 對于每日數(shù)據(jù)的典型設置
var pipeline = mlContext.Forecasting.ForecastBySsa(
    outputColumnName: "Forecast",
    inputColumnName: "Value",
    windowSize: 7,            // 一周
    seriesLength: 21,         // 三周
    trainSize: 365,           // 一年
    horizon: 7,               // 預測一周
    confidenceLevel: 0.95f
);

這些參數(shù)的正確設置對模型的預測性能至關重要,建議根據(jù)實際數(shù)據(jù)特征和業(yè)務需求進行調(diào)整和實驗。

模型評估

使用兩個主要指標評估模型性能:

  • 平均絕對誤差 (MAE)

a.MAE 直接反映預測值與實際值的平均偏差

b.數(shù)值越小表示預測越準確

c.單位與原始數(shù)據(jù)相同,便于理解

  • 均方根誤差 (RMSE)
  • RMSE 對大誤差更敏感
  • 通過平方放大了大誤差的影響
  • 最終開方使單位與原始數(shù)據(jù)相同

總結(jié)

本文展示了如何使用 ML.NET 構(gòu)建電力消耗預測模型的完整過程。通過合理配置和訓練,可以得到一個可靠的預測模型,幫助優(yōu)化電力系統(tǒng)運營。這個方法不僅適用于家庭用電預測,還可以擴展到工業(yè)用電預測、智能電網(wǎng)管理等領域。

責任編輯:武曉燕 來源: 技術老小子
相關推薦

2024-12-26 09:41:00

ML.NET圖像分類開發(fā)者

2022-02-21 10:14:15

數(shù)據(jù)中心電力

2011-11-03 10:12:01

數(shù)據(jù)中心電力消耗服務器虛擬化

2020-11-18 18:21:49

.Net 5大數(shù)據(jù)機器學習

2018-08-01 14:31:00

ELONCITY

2024-03-18 08:38:34

ML.NET機器學習開源

2024-07-01 13:51:14

2023-11-29 21:21:57

微軟ML.NET?3.0機器學習

2023-10-09 12:43:01

Python數(shù)據(jù)信息

2023-10-17 19:48:13

人工智能

2021-12-05 18:18:20

linux

2023-05-03 20:27:49

獨立預測聯(lián)合預測多元時序

2010-06-13 10:07:10

數(shù)據(jù)中心電力

2025-04-07 00:22:00

C#AIChatGPT

2017-04-13 10:14:46

curl命令分析

2023-04-12 17:06:36

數(shù)據(jù)中心能源

2023-11-29 14:47:47

微軟ML.NET 3.0

2009-12-23 17:50:38

ADO.NET Fra

2025-05-15 07:15:39

2021-08-09 15:00:36

SQL數(shù)據(jù)庫
點贊
收藏

51CTO技術棧公眾號

最近中文在线观看| 婷婷综合在线视频| 在线看片福利| 久久精品男人天堂av| 国产一区深夜福利| 久热这里有精品| 日韩成人av在线资源| 精品视频色一区| 精品国偷自产一区二区三区| 男操女在线观看| 美腿丝袜亚洲色图| 久久免费视频观看| 黄色片网站免费| 一区二区三区四区精品视频| 色妞www精品视频| 污污污污污污www网站免费| 青梅竹马是消防员在线| 国产高清不卡一区二区| 国产精品成久久久久三级| 91在线播放观看| 免费欧美一区| 亚洲第一区第一页| 亚洲综合欧美激情| a一区二区三区| 亚洲国产日韩在线一区模特| 亚洲一区二三| 国产污视频在线| av在线不卡观看免费观看| 成人黄色av网站| 波多野结衣日韩| av不卡在线| 欧美日韩国产va另类| 手机看片日韩av| 美女网站一区| 日韩电影在线观看中文字幕| 免费国偷自产拍精品视频| 色猫猫成人app| 欧美日韩亚洲精品一区二区三区| 三级在线免费观看| 欧美r级在线| 欧美国产综合色视频| 精品一区二区三区视频日产| 国内精品偷拍视频| 久久精品二区亚洲w码| 国产aaa精品| 日本一区二区三区精品| 影音先锋国产精品| 欧美第一页在线| 青青草成人免费| 91精品国产自产拍在线观看蜜| 国产亚洲在线播放| 亚洲国产无码精品| 天堂网av成人| 亚洲精品一区二区网址| 国产精品久久无码| 欧美成人一区在线观看| 精品成人佐山爱一区二区| aaaaa黄色片| 高清日韩欧美| 亚洲国产欧美久久| 久久人妻一区二区| 日本欧美韩国国产| 亚洲男人的天堂在线播放| 三级电影在线看| 久久av中文| 中文字幕亚洲一区二区三区| 久久精品国产亚洲av久| 国产中文精品久高清在线不| 亚洲精品有码在线| 欧美熟妇激情一区二区三区| 人人狠狠综合久久亚洲婷婷| 日韩视频免费在线| 免费在线观看黄视频| 激情一区二区| 欧美一区二区三区图| 69视频免费看| 精品一区二区三区免费播放| 91麻豆蜜桃| 污污视频在线免费看| 久久久一区二区| 在线成人性视频| 欧美精品videossex少妇| 午夜久久福利影院| 999在线免费视频| 久久综合偷偷噜噜噜色| 亚洲国产精品久久91精品| 狠狠人妻久久久久久综合蜜桃| 久久综合色占| 欧美精品亚州精品| 国产区在线观看视频| 肉色丝袜一区二区| 亚洲一区二区三区久久| 少妇高潮一区二区三区69| 国产三级一区二区三区| www亚洲国产| 男人天堂视频在线观看| 欧美日本视频在线| 性活交片大全免费看| 国产一区网站| 久久久久久久97| 99re热视频| 成人免费va视频| 日韩免费电影一区二区| 污视频在线看网站| 在线亚洲高清视频| 韩国av中国字幕| 日韩欧美电影| 午夜精品久久久久久久白皮肤 | 欧美视频网址| 欧美高清视频在线播放| 波多野结衣影片| 成人午夜视频福利| 在线观看免费91| 亚洲最大网站| 亚洲成人精品视频| 精品无码一区二区三区蜜臀| 亚洲在线免费| 国产精品久久久久久久免费大片| 第九色区av在线| 午夜视频在线观看一区二区三区| 天堂中文av在线| 一区二区三区视频免费观看| 欧美激情亚洲激情| 国产精品-色哟哟| 国产欧美一区二区精品性| 国产无限制自拍| 欧美大片91| www.亚洲成人| 中文字幕永久在线视频| 91在线精品秘密一区二区| 亚洲乱码日产精品bd在线观看| 久久亚洲精品中文字幕| 亚洲四色影视在线观看| 影音先锋亚洲天堂| 成人av电影在线播放| av久久久久久| 精品视频成人| 久久夜色精品国产| 一区二区三区精| 国产免费久久精品| 美女喷白浆视频| 自拍自偷一区二区三区| **欧美日韩vr在线| 污污的视频网站在线观看| 亚洲成a人v欧美综合天堂下载 | 91美女视频网站| 国产综合av在线| 欧美爱爱网站| 日韩av免费网站| 国产中文在线视频| 欧美中文一区二区三区| www.狠狠爱| 日韩av中文字幕一区二区三区| 免费在线国产精品| 肉色欧美久久久久久久免费看| 亚洲欧美成人在线| 中文字幕免费高清网站| 欧美国产日产图区| 污片在线免费看| 91精品电影| 国产成人精品免费视频大全最热| 久久香蕉av| 亚洲精品久久久久中文字幕欢迎你| 欧美激情亚洲综合| 国产亚洲成aⅴ人片在线观看| 日韩中文字幕二区| 成人婷婷网色偷偷亚洲男人的天堂| 国产精品久久久久秋霞鲁丝| 欧美成人hd| 精品少妇一区二区三区在线播放 | 国产激情在线免费观看| 日韩中文字幕一区二区三区| 亚洲一卡二卡| 日韩一区二区三区色| 97精品国产aⅴ7777| 巨骚激情综合| 欧美精品aⅴ在线视频| 精品欧美一区二区久久久久| 成人激情校园春色| 久久久久久香蕉| 91精品啪在线观看国产18| 国产99午夜精品一区二区三区| 天堂av在线网| 北条麻妃一区二区三区中文字幕 | 亚洲欧美成人精品| 一区二区三区www污污污网站| 亚洲综合免费观看高清完整版| 国产精品伦子伦| 日韩av一区二区三区四区| 日本精品免费视频| 亚洲激情播播| 91色在线观看| 日本久久免费| 欧美黄色成人网| 啊v视频在线| 亚洲成人av片在线观看| 中国精品一区二区| 亚洲成av人片一区二区| 国产在视频线精品视频| 成人av网站在线观看免费| 在线免费观看av的网站| 在线精品一区| 一级全黄肉体裸体全过程| 亚洲黄页网站| 国产精品一区二区三区免费| 国产精品videossex撒尿| 国内外成人免费激情在线视频网站| jizz在线观看视频| 日韩成人在线视频观看| 99久久久无码国产精品免费| 色天使久久综合网天天| www.天天色| 亚洲色图在线播放| 中文字幕伦理片| 91老师片黄在线观看| 国产成人精品一区二区三区在线观看 | 成人性生交大片免费看视频在线 | 一本色道久久88综合日韩精品| 精品国产黄色片| 欧美日韩一区在线观看| 91精品国产综合久久久蜜臀九色| 亚洲欧美激情一区二区| 9.1片黄在线观看| 久久久久久麻豆| 久久久久久无码精品人妻一区二区| 美女一区二区视频| www.欧美日本| 鲁大师成人一区二区三区| 波多野结衣av一区二区全免费观看| 日本一区二区在线看| 欧美日韩在线观看一区| 久久99精品国产自在现线| yellow视频在线观看一区二区| 亚洲网站免费| 国产一区视频在线| 欧美亚洲二区| 国产欧洲精品视频| 久久亚洲精品中文字幕| 国产免费一区二区三区香蕉精| 亚洲精品在线影院| 日韩美女在线看| 桃花岛tv亚洲品质| 青草青草久热精品视频在线网站 | 欧美丝袜丝nylons| 一级黄色在线观看| 欧美三级在线看| 中文字幕人妻丝袜乱一区三区| 在线免费观看日韩欧美| 无码人妻丰满熟妇奶水区码| 色菇凉天天综合网| 波多野结衣网站| 欧美日韩国产三级| 91麻豆一区二区| 91精品国产aⅴ一区二区| 国产精品欧美久久久久天天影视| 欧美精品在线观看播放| 国产绿帽刺激高潮对白| 制服.丝袜.亚洲.另类.中文| 国产男女无套免费网站| 日韩午夜av电影| 人妻无码中文字幕免费视频蜜桃| 亚洲国产成人一区| 日韩欧美亚洲系列| 正在播放国产一区| 巨大荫蒂视频欧美另类大| 欧美精品在线观看91| 久久一卡二卡| 国产成人激情小视频| 伦一区二区三区中文字幕v亚洲| 国产精品国产三级国产专播精品人| 91九色综合| 超碰97在线人人| 日韩大尺度在线观看| 一本色道久久99精品综合| 66久久国产| 免费看国产一级片| 奇米精品一区二区三区在线观看 | 成人性免费视频| 久久狠狠一本精品综合网| 91亚洲免费视频| 国产91丝袜在线播放| 午夜理伦三级做爰电影| 国产精品久久三区| 国产亚洲欧美精品久久久www | 91麻豆成人精品国产| 精品久久久久久久人人人人传媒| 无码国产色欲xxxx视频| 在线看日韩av| 久草免费在线色站| 国产成人精品久久| 涩涩屋成人免费视频软件| 久久这里精品国产99丫e6| 欧美激情欧美| 日韩精品 欧美| 精品一区二区久久久| 先锋资源av在线| 综合自拍亚洲综合图不卡区| 日韩乱码在线观看| 欧美日本在线播放| 天堂av中文在线资源库| 亚洲午夜久久久久久久| 日本在线观看高清完整版| 国产精品国产福利国产秒拍| aaa国产精品视频| 亚洲色图自拍| 亚洲欧美久久| 色诱av手机版| 亚洲欧美综合色| 91视频久久久| 亚洲精品成a人在线观看| 国产区在线观看| 国产成人久久久| 日韩精品导航| 日韩成人手机在线| 韩国女主播成人在线观看| 人人人妻人人澡人人爽欧美一区| 亚洲专区一二三| 国产免费一区二区三区最新不卡 | 欧美三级网色| 影音先锋久久资源网| 亚洲图片 自拍偷拍| 欧美高清在线一区| 美日韩一二三区| 精品福利在线导航| www免费在线观看| 国产欧美一区二区三区视频 | 国产精品久久成人免费观看| 日韩中文字幕麻豆| 右手影院亚洲欧美| 亚洲va韩国va欧美va精品| 超碰在线播放97| 蜜臀久久99精品久久久无需会员| 日韩精品一级毛片在线播放| 日韩亚洲不卡在线| 日日夜夜免费精品| 99久久人妻无码精品系列| 精品久久久久久久久中文字幕| 成 人 黄 色 片 在线播放| 久久精品视频中文字幕| 亚洲a成人v| 中文字幕乱码免费| 国产自产高清不卡| 国产高潮国产高潮久久久91| 欧美日本高清视频在线观看| 天天综合视频在线观看| 国产精品亚洲激情| 日韩精品一区二区三区免费观看| 天堂中文视频在线| 国产精品天干天干在观线 | 日韩一区二区在线看| 黄色网在线播放| 亚洲一区二区久久久久久| 综合精品一区| av不卡中文字幕| 午夜精品免费在线观看| 日日躁夜夜躁白天躁晚上躁91| 久久男人资源视频| 小说区图片区色综合区| 日韩精品免费播放| 中文字幕av资源一区| 国产精品视频无码| 俺去了亚洲欧美日韩| 亚洲网一区二区三区| 日本午夜激情视频| 久久色视频免费观看| 中文字幕网址在线| 久久精品小视频| 里番精品3d一二三区| 欧美精品第三页| 中文字幕五月欧美| 精品国产999久久久免费| 国外成人免费在线播放| 你懂的一区二区三区| 高潮一区二区三区| 亚洲一二三四区不卡| 日本天堂在线| 成人国产精品av| 亚洲小说欧美另类婷婷| 受虐m奴xxx在线观看| 欧美一区日韩一区| www在线观看黄色| 亚洲高清在线观看一区| 国产精品正在播放| 成人毛片在线播放| 播播国产欧美激情| 鲁大师精品99久久久| 久久久久国产一区| 一区二区成人在线观看| 蜜桃视频在线观看网站| 91在线看www| 久久精品道一区二区三区| 国产尤物在线播放| 精品丝袜一区二区三区| 国产精品久久久久久av公交车| 成人毛片一区二区| 国产精品福利一区二区三区| 天天操天天干天天舔| 国产日产欧美精品| 亚洲综合精品四区| 欧美激情精品久久|