C#使用ML.Net完成人工智能預(yù)測
前言
Visual Studio2019 Preview中提供了圖形界面的ML.Net,所以,只要我們安裝Visual Studio2019 Preview就能簡單的使用ML.Net了,因?yàn)槲业碾娔X已經(jīng)安裝了Visual Studio2019,所以我不需要重頭安裝Visual Studio2019 Preview,只要更新即可。
安裝
首先找到Visual Studio Installer安裝包,如下圖。

運(yùn)行,然后選擇如下:

創(chuàng)建項(xiàng)目
我們創(chuàng)建一下新項(xiàng)目,如下圖:

然后選擇。

然后添加機(jī)器學(xué)習(xí)。

點(diǎn)擊機(jī)器學(xué)習(xí)時(shí),如果我們沒有開啟MLNET模型創(chuàng)建功能,則會彈出提示,讓我們開啟。
當(dāng)然我們也可以手動在選項(xiàng)中開啟,如下圖:

點(diǎn)擊【機(jī)器學(xué)習(xí)】之后會有圖形界面,如下圖:

然后我們可以看到,它提供了一些方案,如語義識別,圖像識別,數(shù)值預(yù)測等。
我們選擇數(shù)值預(yù)測,然后進(jìn)入下一步,如下圖:

在環(huán)境頁面,選擇本地訓(xùn)練,然后點(diǎn)擊下一步獲取數(shù)據(jù),如下圖:

這里需要選擇一個(gè)數(shù)據(jù)源,我們?nèi)ス倬W(wǎng)上下載一下可用的測試數(shù)據(jù)源。
這里我們下載【產(chǎn)品銷售數(shù)據(jù)】。
| 方案 | 示例 | 數(shù)據(jù) | Label | 特征 |
|---|---|---|---|---|
| 分類 | 預(yù)測銷售異常 | 產(chǎn)品銷售數(shù)據(jù) | 產(chǎn)品銷售額 | 月份 |
| 預(yù)測網(wǎng)站評論的情緒 | 網(wǎng)站評論數(shù)據(jù) | 標(biāo)簽(負(fù)面情緒為 0,正面情緒為 1) | 評論、年份 | |
| 預(yù)測信用卡欺詐交易 | 信用卡數(shù)據(jù) | 類(存在欺詐性為 1,否則為 0) | 金額,V1-V28(匿名處理后的特征) | |
| 預(yù)測 GitHub 存儲庫中的問題類型 | GitHub 問題數(shù)據(jù) | 區(qū)域 | 標(biāo)題、描述 | |
| 值預(yù)測 | 預(yù)測出租車費(fèi)用價(jià)格 | 出租車費(fèi)數(shù)據(jù) | 車費(fèi) | 行程時(shí)間、距離 |
| 圖像分類 | 預(yù)測花卉的類別 | 花卉圖像 | 花卉類型:雛菊、蒲公英、玫瑰、向日葵、郁金香 | 圖像數(shù)據(jù)本身 |
| 建議 | 預(yù)測他人喜歡的電影 | 電影評分 | 用戶、電影 | 評級 |
選擇完預(yù)測數(shù)據(jù)文件,我們配置要預(yù)測的列,然后點(diǎn)擊訓(xùn)練,如下圖:

訓(xùn)練界面如下:

點(diǎn)擊訓(xùn)練,大約2分鐘,訓(xùn)練完成,輸出界面會輸出如下內(nèi)容。

訓(xùn)練完成后,如下圖:

我們點(diǎn)擊評估,如下圖:

如上圖,預(yù)測到1月銷售數(shù)據(jù)是262.8。
然后點(diǎn)擊代碼,將ML.Net代碼添加到解決方案中,如下圖:

添加ML.Net代碼后,如下圖:

生成的MLNetConsoleML.ConsoleApp項(xiàng)目是入口項(xiàng)目,Main函數(shù)如下:
static void Main(string[] args)
{
// Create single instance of sample data from first line of dataset for model input
ModelInput sampleData = new ModelInput()
{
Month = @"1-Jan",
};
// Make a single prediction on the sample data and print results
var predictionResult = ConsumeModel.Predict(sampleData);
Console.WriteLine("Using model to make single prediction -- Comparing actual ProductSales with predicted ProductSales from sample data...\n\n");
Console.WriteLine($"Month: {sampleData.Month}");
Console.WriteLine($"\n\nPredicted ProductSales: {predictionResult.Score}\n\n");
Console.WriteLine("=============== End of process, hit any key to finish ===============");
Console.ReadKey();
}
可以看到,我們預(yù)測的是Month = @"1-Jan"。
再打開ModelBuilder文件,可以看到,這里一開始就配置了數(shù)據(jù)地址和模型地址,如下圖:

到這里,我們ML.Net就算初步學(xué)會使用了,下面,再提供一個(gè)官網(wǎng)GIF圖片供大家參考。

訓(xùn)練時(shí)長
模型生成器使用 AutoML 瀏覽多個(gè)模型,以查找性能最佳的模型。
更長的訓(xùn)練周期允許 AutoML 通過更多設(shè)置來瀏覽更多模型。
下表匯總了在本地計(jì)算機(jī)上為一組示例數(shù)據(jù)集獲取良好性能所花的平均時(shí)間。
| 數(shù)據(jù)集大小 | 訓(xùn)練的平均時(shí)間 |
|---|---|
| 0 - 10 MB | 10 秒 |
| 10 - 100 MB | 10 分鐘 |
| 100 - 500 MB | 30 分鐘 |
| 500 - 1 GB | 60 分鐘 |
| 1 GB 以上 | 3 小時(shí)以上 |
----------------------------------------------------------------------------------------------------
參考網(wǎng)址:https://docs.microsoft.com/zh-cn/dotnet/machine-learning/automate-training-with-model-builder
----------------------------------------------------------------------------------------------------
到此C#使用ML.Net完成人工智能預(yù)測的基本使用已經(jīng)介紹完了。
代碼已經(jīng)傳到Github上了,歡迎大家下載。
Github地址:https://github.com/kiba518/MLNetConsole
到此這篇關(guān)于C#使用ML.Net完成人工智能預(yù)測的文章就介紹到這了,更多相關(guān)C#人工智能預(yù)測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#遍歷文件夾及其子目錄的完整實(shí)現(xiàn)方法
這篇文章主要介紹了C#遍歷文件夾及其子目錄的方法,涉及C#文件與目錄的基本操作技巧,簡單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
巧用Dictionary實(shí)現(xiàn)日志數(shù)據(jù)批量插入
這篇文章主要介紹了巧用Dictionary實(shí)現(xiàn)日志數(shù)據(jù)批量插入,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
基于C#實(shí)現(xiàn)的端口掃描器實(shí)例代碼
這篇文章主要介紹了基于C#實(shí)現(xiàn)的端口掃描器實(shí)例代碼,需要的朋友可以參考下2014-07-07
.NET企業(yè)級項(xiàng)目中遇到的國際化問題和解決方法
這篇文章主要介紹了.NET企業(yè)級項(xiàng)目中遇到的國際化問題和解決方法,說明了理國際化問題的一些典型例子和經(jīng)驗(yàn)之談,需要的朋友可以參考下2014-07-07
C# SQLite序列操作實(shí)現(xiàn)方法詳解
這篇文章主要介紹了C# SQLite序列操作實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了C#實(shí)現(xiàn)SQLite序列操作的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Unity ScrollView實(shí)現(xiàn)動態(tài)列表生成
這篇文章主要為大家詳細(xì)介紹了Unity ScrollView實(shí)現(xiàn)動態(tài)列表生成,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
C#定義并實(shí)現(xiàn)單鏈表實(shí)例解析
這篇文章主要介紹了C#定義并實(shí)現(xiàn)單鏈表實(shí)例解析,有助于讀者加深對C#實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的理解,需要的朋友可以參考下2014-07-07
C# linq查詢之動態(tài)OrderBy用法實(shí)例
這篇文章主要介紹了C# linq查詢之動態(tài)OrderBy用法,實(shí)例分析了C#采用linq方式查詢時(shí)動態(tài)排序的相關(guān)技巧,需要的朋友可以參考下2015-06-06

