精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

黄色毛片在线看| 2014亚洲天堂| 伊人久久视频| 国产精品美女久久久久久2018| 亚洲一区二区三区在线免费观看 | 性一交一乱一精一晶| 亚洲精品视频啊美女在线直播| 亚洲欧美日韩在线一区| 日本精品一区在线| 亚洲女同av| 亚洲视频一区二区免费在线观看| 国内成+人亚洲| 最新在线中文字幕| 91久久夜色精品国产九色| 国产一区二区三区久久精品| 男人女人拔萝卜视频| 亚洲日本网址| 亚洲777理论| 中文字幕在线亚洲三区| 天堂av网在线| 国产成人精品三级| 国产精品视频区| 亚洲精品国产精品乱码| 偷偷www综合久久久久久久| 日韩成人在线免费观看| 永久免费看片在线观看| 久久6免费视频| 精品国产区一区二| 日韩av在线播放中文字幕| 欧美老少配视频| 国产又黄又粗视频| 要久久爱电视剧全集完整观看| 日韩一区和二区| 中文字幕第38页| 国产精品专区免费| 亚洲成人精品一区| 米仓穗香在线观看| 黄色一级片在线观看| 国产亚洲综合在线| 蜜桃传媒视频麻豆第一区免费观看| 国产极品久久久| 精品一区二区在线观看| 国产成人精品免高潮费视频| a v视频在线观看| 亚洲成人在线| 国产69精品99久久久久久宅男| 多男操一女视频| 色135综合网| 在线看片第一页欧美| 超碰97人人干| 妖精一区二区三区精品视频 | 久久婷婷中文字幕| xxxxx.日韩| 欧美日韩午夜在线视频| mm1313亚洲国产精品无码试看| 欧美gay视频| 一本大道久久a久久综合| 成人毛片一区二区| 绿色成人影院| 欧美视频在线看| 能在线观看的av| 美女18一级毛片一品久道久久综合| 精品国产电影一区| 欧美视频免费播放| se01亚洲视频| 欧美蜜桃一区二区三区| 天天色天天综合网| 久久久久久久久久久久电影| 日韩一区二区精品在线观看| 国产伦理在线观看| 久久97精品| 亚洲精品在线看| 少妇av片在线观看| 国产精品久久久久久久| 欧美成人午夜激情视频| 国产主播在线播放| 国产精品久久777777毛茸茸| 国产精品第一第二| 136福利视频导航| 国产成人精品网址| 久久久久久久久久久久久久一区| 蜜桃视频在线观看视频| 国产精品免费网站在线观看| a级网站在线观看| 超碰在线资源| 色999日韩国产欧美一区二区| 午夜国产一区二区三区| 欧洲大片精品免费永久看nba| 精品国产乱码久久久久久久久| 伊人网综合视频| jiujiure精品视频播放| 久久91亚洲精品中文字幕| 亚洲 欧美 视频| 毛片av一区二区| 高清不卡日本v二区在线| 国产最新视频在线观看| 中文字幕日韩一区| 波多野结衣家庭教师在线| 国产精品亚洲d| 精品奇米国产一区二区三区| 久久久久久亚洲中文字幕无码| 91精品电影| 日本国产一区二区三区| 国产剧情久久久| 91蝌蚪国产九色| 日韩精品一区二区三区电影| 成人免费直播| 欧美成人bangbros| 中文字幕第二区| 亚洲精品社区| 91麻豆国产语对白在线观看| 欧美男男同志| 亚洲国产日韩a在线播放| 午夜两性免费视频| 亚洲bt欧美bt精品777| 久久夜色精品亚洲噜噜国产mv| 影音先锋亚洲天堂| 国产乱人伦偷精品视频不卡| 精品免费日产一区一区三区免费| av免费在线网站| 欧美日韩在线免费视频| 精品久久久久久中文字幕人妻最新| 中文字幕av亚洲精品一部二部| 国产精品va在线播放| 日批免费在线观看| 一区二区三区欧美在线观看| 国产一伦一伦一伦| 免费国产自久久久久三四区久久| 欧美激情一级二级| 国产强被迫伦姧在线观看无码| 欧美激情一区不卡| 国产v亚洲v天堂无码久久久 | 欧美成人伊人久久综合网| 国产破处视频在线观看| 久久一区国产| 国新精品乱码一区二区三区18| 乱人伦中文视频在线| 91激情五月电影| 色噜噜日韩精品欧美一区二区| 亚洲精一区二区三区| 91精品网站| av小次郎在线| 日韩一区二区电影| 四虎永久免费地址| 免费久久99精品国产| 日本不卡在线播放| 伊人久久视频| 亚洲日本成人网| 神马久久久久久久 | av在线免费播放网址| 日韩二区三区在线观看| 日韩精品大片| 亚洲成人av观看| 中文字幕欧美视频在线| 亚洲成人av网址| 中文字幕av在线一区二区三区| 国产成人精品无码播放| 青青一区二区三区| 成人激情在线播放| jizz性欧美10| 精品粉嫩aⅴ一区二区三区四区| 久久免费视频99| 成人一级黄色片| www在线观看免费| 日本成人中文| 日韩免费观看在线观看| 国产经典自拍视频在线观看| 欧美三级日韩三级国产三级| 少妇高潮一区二区三区喷水| 国产剧情一区在线| 日b视频免费观看| 奇米777国产一区国产二区| 欧美重口另类videos人妖| 国产片在线观看| 欧美日韩电影一区| 欧美精品一区二区成人| 成人av在线影院| 日韩a在线播放| 91亚洲自偷观看高清| 97av自拍| 第84页国产精品| www.欧美精品一二三区| 亚洲狼人综合网| 色综合久久66| www.xxxx日本| 91网站在线观看视频| 2025韩国理伦片在线观看| 欧美日韩国产亚洲一区| 久久久久久九九九九| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 欧美亚韩一区二区三区| 欧美国产日韩亚洲一区| 女人扒开腿免费视频app| 国模 一区 二区 三区| 欧美激情www| 欧美欧美在线| 国产精品久久久久久久久粉嫩av| wwwav在线| 亚洲欧美日韩国产成人| 国产免费高清视频| 欧美日韩中国免费专区在线看| 国产精品视频网址| 丁香六月激情综合| 粉嫩绯色av一区二区在线观看| 国产a视频免费观看| 一区二区三区毛片免费| 热re99久久精品国产99热| 日韩精品一区二区三区中文 | 国产成人在线观看免费网站| 久久综合久久色| 亚洲午夜av| 色噜噜狠狠一区二区三区| 51vv免费精品视频一区二区 | 欧州一区二区三区| 国产精品美女网站| 国产精选在线| 欧美日韩ab片| 香港伦理在线| 亚洲网在线观看| 五月婷婷在线观看视频| 欧美一卡2卡3卡4卡| 中文字幕+乱码+中文乱码91| 黑人巨大精品欧美一区二区一视频 | 国产欧美精品在线观看| 五月天激情小说| 国产精品自拍在线| www.这里只有精品| 日日摸夜夜添夜夜添亚洲女人| 亚洲精品久久久久久久蜜桃臀| 91精品久久久久久久久久不卡| 色99中文字幕| 要久久电视剧全集免费| 久久精品日产第一区二区三区| 国产精品成人自拍| 亚洲xxx大片| 精品一区91| 91久久中文字幕| 96sao精品免费视频观看| 国产精品视频一区二区三区四| av高清不卡| 日韩美女视频在线观看| **欧美日韩在线观看| 欧美一级黑人aaaaaaa做受| 日韩激情电影免费看| 国内精品中文字幕| 成人黄色动漫| 欧美在线激情网| 日韩精品极品| 国产v综合ⅴ日韩v欧美大片| 黑人巨大精品| 国产成人精品免高潮费视频| 羞羞影院欧美| 国产精品美女主播在线观看纯欲| 日韩精品免费观看视频| 国产精品免费在线免费 | 欧美日韩国产一区二区三区地区| 波多野结衣小视频| 欧美体内she精视频| 一级黄色大片网站| 91精品国产乱| 亚洲国产999| 亚洲国产精品电影| 日夜干在线视频| 国产亚洲美女久久| 亚洲女同av| 3344国产精品免费看| 在线天堂新版最新版在线8| 91成人在线视频| 婷婷六月国产精品久久不卡| 国产成人高潮免费观看精品| 成人激情视屏| 亚洲在线一区二区| 国产女人18毛片水真多18精品| 精品人伦一区二区三区 | 美女视频免费一区| 国产乱码一区二区三区四区| 国产风韵犹存在线视精品| 91精品在线一区二区| 成人毛片在线播放| 欧美三级电影网| www.日日夜夜| 精品视频在线播放| 毛片免费不卡| 久久久综合av| 精品国模一区二区三区| 95av在线视频| 免费看成人哺乳视频网站| 正在播放亚洲| 中日韩视频在线观看| 色婷婷.com| 成a人片国产精品| 国产成人在线网址| 亚洲香肠在线观看| 中文字幕免费观看视频| 精品国产乱码久久久久久久| 国产黄在线观看免费观看不卡| 欧美裸身视频免费观看| 在线精品亚洲欧美日韩国产| 91色中文字幕| 亚洲涩涩av| 糖心vlog在线免费观看| 老牛嫩草一区二区三区日本 | 国产精品100| 欧美日韩aaaaaa| 完全免费av在线播放| 久久久久9999亚洲精品| 免费毛片在线播放免费| 在线免费观看一区| 免费a级片在线观看| 丝袜亚洲另类欧美重口| 欧美私密网站| 97自拍视频| 久久久久久久久久久妇女| 欧美日韩在线视频一区二区三区| 国产精品88av| 日本成人精品视频| 欧洲色大大久久| 香蕉视频成人在线| 欧美极品在线视频| 精品成人18| 亚洲国产精品www| 老妇喷水一区二区三区| 在线免费看黄色片| 一区二区高清在线| 一卡二卡在线视频| 在线看日韩av| 欧美色片在线观看| 久久久久久草| 中国女人久久久| 国模私拍在线观看| 一区二区欧美精品| 国产jzjzjz丝袜老师水多| 色妞欧美日韩在线| jizz久久久久久| 日本一区免费观看| 久久美女性网| 泷泽萝拉在线播放| 日韩欧美国产骚| 日色在线视频| 97在线视频免费观看| 国产毛片久久久| 日韩欧美精品免费| 大胆亚洲人体视频| 久久久久久天堂| 精品免费国产二区三区| 国产白丝在线观看| 国产一区二区高清不卡| 亚洲日韩视频| 国产精品300页| 欧美日韩中文字幕在线视频| 午夜视频1000| 日本成人免费在线| 欧洲乱码伦视频免费| 性猛交ⅹ×××乱大交| 国产精品国产馆在线真实露脸 | 亚洲电影天堂av| wwwwxxxx在线观看| 国产在线一区二区三区四区| 99热这里只有精品8| 五级黄高潮片90分钟视频| 在线一区二区视频| 日本美女在线中文版| 91久久久久久久久久| 国产精品va| 亚洲欧美日本一区| 在线观看中文字幕不卡| 日本福利专区在线观看| 91免费福利视频| 亚洲高清毛片| 日本激情小视频| 7777精品伊人久久久大香线蕉的 | 4438全国亚洲精品在线观看视频| 偷窥自拍亚洲色图精选| 国产成人精品无码播放| 综合电影一区二区三区 | 亚洲精品大片| 91网站在线观看免费| 91偷拍与自偷拍精品| 中文字幕 日韩有码| 欧美寡妇偷汉性猛交| 亚洲丁香日韩| 久久久精品高清| 亚洲成人av一区二区三区| 黄色在线播放| 99高清视频有精品视频| 校园激情久久| 亚洲精品自拍视频在线观看| 精品久久久久久久久久久久久久久| 天堂中文在线播放| 中文视频一区视频二区视频三区| 成人永久免费视频| 欧美视频xxxx| 欧美激情亚洲激情| 欧美肉体xxxx裸体137大胆| 天天干天天曰天天操| 色综合色狠狠综合色| 18av在线播放| 视频一区国产精品| 99视频国产精品| 97人妻一区二区精品免费视频|