日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用 ML.NET 进行保险价格预测

發(fā)布時(shí)間:2023/12/4 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 ML.NET 进行保险价格预测 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

此前通過多篇文章已充分介紹過,ML.NET是一個(gè)開源的跨平臺(tái)機(jī)器學(xué)習(xí)框架,特別適合 .NET 開發(fā)人員。它允許將機(jī)器學(xué)習(xí)集成到 .NET 應(yīng)用中,而無需離開 .NET 生態(tài)系統(tǒng),甚至擁有 ML 或數(shù)據(jù)科學(xué)背景。ML.NET?現(xiàn)有的各種內(nèi)置模型訓(xùn)練器可用于圖像檢測(cè)、音頻檢測(cè)、基于文本的場(chǎng)景、情緒分析、銷售預(yù)測(cè)、電影推薦、異常檢測(cè)等等。隨著 ML.NET 的普及,越來越多的案例也證明了它走進(jìn)了實(shí)際生產(chǎn)環(huán)境,能夠解決豐富的機(jī)器學(xué)習(xí)場(chǎng)景問題了。本文的案例來自 Chandra Kudumula 的工作分享,Chandra Kudumula 是一名高級(jí)程序員兼分析師,擁有超過十二年的 IT 經(jīng)驗(yàn)。他成功地在金融、博彩和保險(xiǎn)服務(wù)等多個(gè)領(lǐng)域設(shè)計(jì)并開發(fā)了各種高可擴(kuò)展和高可用的企業(yè)應(yīng)用程序。本文跳過機(jī)器學(xué)習(xí)基礎(chǔ)知識(shí)和算法類型,以一個(gè)控制臺(tái)程序的完整代碼編寫過程為案例,重點(diǎn)展示他如何使用 ML.NET 來預(yù)測(cè)保險(xiǎn)價(jià)格。

大多數(shù)傳統(tǒng)保險(xiǎn)公司是雇用精算師來計(jì)算保險(xiǎn)費(fèi)。精算師是商業(yè)專業(yè)人士,他們使用數(shù)學(xué)和統(tǒng)計(jì)數(shù)據(jù)來評(píng)估財(cái)務(wù)損失的風(fēng)險(xiǎn),并根據(jù)年齡和性別等因素/特征預(yù)測(cè)保險(xiǎn)費(fèi)和索賠的可能性。它們通常會(huì)生成一種稱為精算表的東西,提供給保險(xiǎn)公司的承保部門,該部門通過輸入條件數(shù)據(jù)來設(shè)置保險(xiǎn)費(fèi)。保險(xiǎn)公司相當(dāng)一部分工作是依賴專業(yè)人士計(jì)算和編寫所有程序,但使用機(jī)器學(xué)習(xí)變得更加簡(jiǎn)單。機(jī)器學(xué)習(xí)允許程序從一組數(shù)據(jù)中學(xué)習(xí),以找出特定的問題特征。ML 會(huì)關(guān)注性別、吸煙、兒童人數(shù)和地區(qū)等不同因素,以找到總體最高的醫(yī)療費(fèi)用,并根據(jù)需求使用特定算法確定價(jià)格,比如吸煙者和孩子較多的客戶往往醫(yī)療費(fèi)用較高,因此這些群體的保費(fèi)將更多。隨著 ML 訓(xùn)練越來越多的數(shù)據(jù),ML 程序在預(yù)測(cè)確切價(jià)格方面變得更加聰明和敏感。最后,您需要調(diào)用一個(gè)交互程序,根據(jù)提供的輸入因素為特定人員計(jì)算保險(xiǎn)費(fèi),而不需要自己編寫所有這些程序。ML 程序查看提供的所有數(shù)據(jù)集以及訓(xùn)練學(xué)習(xí),最終將提供一個(gè)機(jī)器學(xué)習(xí)模型,您可以在應(yīng)用程序中使用。例如模型會(huì)認(rèn)為保險(xiǎn)價(jià)格取決于各種特征,如年齡、保險(xiǎn)類型、所需保險(xiǎn)金額、性別、體重指數(shù) (BMI)、地區(qū)以及吸煙等特殊因素,如果您想要預(yù)測(cè)保險(xiǎn)價(jià)格,在應(yīng)用程序中輸入這些因素的值就能獲得結(jié)果。

機(jī)器學(xué)習(xí)工作流程

ML 工作流有三個(gè)關(guān)鍵步驟:

  • 準(zhǔn)備數(shù)據(jù)。加載數(shù)據(jù)庫或CSV文件的數(shù)據(jù)。提取/識(shí)別與您將要解決或預(yù)測(cè)結(jié)果的問題相關(guān)的關(guān)鍵特征(輸入和輸出參數(shù))。

  • 構(gòu)建和訓(xùn)練ML模型。在這里,您可以評(píng)估不同的算法、設(shè)置參數(shù)并查看哪個(gè)模型最適合您的方案。

  • 模型準(zhǔn)備好后,請(qǐng)?jiān)趹?yīng)用程序中使用模型。

?

?

?

預(yù)測(cè)保險(xiǎn)價(jià)格/保費(fèi)的 ML.NET

價(jià)格預(yù)測(cè)根據(jù)一些輸入數(shù)據(jù)(如年齡、性別、吸煙、體重指數(shù) (BMI)、兒童數(shù)量和地區(qū))確定保險(xiǎn)價(jià)格。價(jià)格預(yù)測(cè)是機(jī)器學(xué)習(xí)回歸任務(wù)的一個(gè)例子,該任務(wù)可以預(yù)測(cè)數(shù)字相關(guān)的問題。

對(duì)保險(xiǎn)費(fèi)的預(yù)測(cè)如下。你有一些特征輸入(年齡,性別,吸煙等),進(jìn)入訓(xùn)練過程。這些特征可以確定溢價(jià)金額的高或低。例如,年輕人不太可能需要醫(yī)療照顧,所以他們的保費(fèi)通常更便宜,吸煙者的保費(fèi)也更高。標(biāo)簽輸出是您想要預(yù)測(cè)的價(jià)格,這是調(diào)用機(jī)器學(xué)習(xí)模型的結(jié)果。

下圖是保險(xiǎn)數(shù)據(jù)的示例,該示例是模型的輸入和輸出:

如何開始與 ML.NET

從 ML.NET 開始有三種方法

  • API 模型:您可以通過API開始 ML.NET,并以 C# 或 F# 編寫代碼

  • GUI 模型:在 Visual Studio 中使用 ML.NET模型構(gòu)建器。

  • CLI 模型:對(duì)于像 Mac 和 Linux 這樣的跨平臺(tái)開發(fā),請(qǐng)使用 ML.NET CLI。

讓我們開始以 API 模型使用 ML.NET 框架預(yù)測(cè)保險(xiǎn)費(fèi)。

我使用 Visual Studio 2019 創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序。請(qǐng)確保您擁有最新版本的VS,并且安裝了 .NET 5 SDK。

打開 Visual Studio 創(chuàng)建一個(gè)新項(xiàng)目->選擇C#控制臺(tái)應(yīng)用程序。

提供項(xiàng)目名稱

?

?

從下拉中選擇目標(biāo)框架并按下"創(chuàng)建"按鈕。

?

?

創(chuàng)建控制臺(tái)應(yīng)用程序。

?

?

需要ML模型的樣本/測(cè)試保險(xiǎn)數(shù)據(jù)。從 https://www.kaggle.com/mirichoi0218/insurance 下載insurance.csv文件數(shù)據(jù),并將文件復(fù)制到控制臺(tái)項(xiàng)目中。您可以使用列標(biāo)題(年齡、性別、BMI 等)查看數(shù)據(jù),并在打開文件時(shí)通過逗號(hào)將其分離。

?

?

從NuGet安裝所需的ML包。在"解決方案資源管理器"中,右鍵單擊項(xiàng)目并選擇"Manage ?NuGet 包"。

?

?

安裝 Microsoft.ML 包。

?

?

還要安裝Microsoft.ML.AutoML包。此包通過自動(dòng)定位最佳功能工程、模型和超參數(shù)來優(yōu)化數(shù)據(jù)集的 ML 管道。

注意:我使用此包來找出價(jià)格預(yù)測(cè)的最佳算法。如果您熟悉或決定轉(zhuǎn)到特定算法,則不需要此包。

?

?

添加代碼

已完成的Program.cs文件可以在這里找到。首先添加所需使用語句:

?

?

?

添加ModelInput和ModelOutput類到Program.cs。該類包含與輸入數(shù)據(jù)文件insurance.csv的標(biāo)題匹配的屬性。

?

?

在程序類中,添加兩個(gè)常數(shù),和 H。第一個(gè)包含數(shù)據(jù)集的路徑:后者包含在培訓(xùn)完成后保存模型的路徑。TRAIN_DATA_FILEPATHMODEL_FILEPAT

?

?

創(chuàng)建實(shí)例是所有 ML.NET 操作的初始化步驟。它提供加載和準(zhǔn)備數(shù)據(jù)、訓(xùn)練、評(píng)估和模型預(yù)測(cè)的所有所需組件。有一個(gè)可選參數(shù)稱為種子。默認(rèn)情況下,種子值為空,MLContext環(huán)境不確定,輸出會(huì)跨多個(gè)運(yùn)行時(shí)變更。如果您提供固定數(shù)值,則MLContext環(huán)境將保持變化是確定的,結(jié)果在多個(gè)MLContext運(yùn)行中是一致的。

?

?

創(chuàng)建MLContext實(shí)例后,您需要使用此類加載數(shù)據(jù),以創(chuàng)建在數(shù)據(jù)、加載、保存、緩存、篩選、隨機(jī)和拆分輸入數(shù)據(jù)上的DataOperationsCatalog組件。但這不是模型訓(xùn)練管道的一部分。

從CSV文件加載數(shù)據(jù)。提供所需的輸入?yún)?shù),如 CSV 文件是否有標(biāo)題、使用什么符號(hào)來分離數(shù)據(jù)等。

?

?

數(shù)據(jù)已加載,但需要清理或轉(zhuǎn)換模型可以理解的輸入數(shù)據(jù)。

?

?

輸入數(shù)據(jù)是分類數(shù)據(jù)。分類數(shù)據(jù)只不過是包含標(biāo)簽值的變量,而不是數(shù)字值。輸入數(shù)據(jù)"性別"和"區(qū)域"具有標(biāo)簽值,您需要將其轉(zhuǎn)換為數(shù)字值,并且可能的值數(shù)通常僅限于固定集。例如,區(qū)域數(shù)據(jù)只有兩個(gè)值,即東南或西北。

此外,吸煙者列包含"是"或"否",但這些數(shù)據(jù)需要轉(zhuǎn)換為真或假。

以下是使用"TransformsCatalog"轉(zhuǎn)換吸煙者列和分類數(shù)據(jù)列的代碼:性別和區(qū)域。最后,將所有輸入列串聯(lián)在一起。

?

?

ConversionTransforms:提供操作列表,將數(shù)據(jù)從一種類型轉(zhuǎn)換為另一種類型。包括是對(duì)真,否對(duì)假。

Append:通過將另一個(gè)估計(jì)器附加到此估計(jì)器的末尾創(chuàng)建一個(gè)新的估算鏈。

CategoricalTransforms創(chuàng)建分類數(shù)據(jù)轉(zhuǎn)換組件的實(shí)例,您將使用它們轉(zhuǎn)換分類數(shù)據(jù),如性別和區(qū)域。

ColumnConcatenate這將將一個(gè)或多個(gè)輸入列串聯(lián)到新的輸出列中。

您需要在 AutoML 的幫助下找到性能最好的模型。以下是探索多個(gè)模型的代碼。更長(zhǎng)的訓(xùn)練時(shí)間使 AutoML 能夠探索更多,并為機(jī)器學(xué)習(xí)模型提供更高的精度。

?

?

?

運(yùn)行實(shí)驗(yàn)

運(yùn)行實(shí)驗(yàn)后,AutoML 探索了不同的模型。以下是顯示評(píng)估模型并建議最佳模型的控制臺(tái)輸出窗口:基于輸入數(shù)據(jù)的價(jià)格預(yù)測(cè)的LightGbm 回歸。

?

?

?

要打印平均指標(biāo),添加此功能:

?

?

構(gòu)建模型

現(xiàn)在,我有最好的價(jià)格預(yù)測(cè)算法,我會(huì)使用這個(gè)算法的代碼,并建立模型。以下是創(chuàng)建、訓(xùn)練、交叉驗(yàn)證和保存模型的代碼片段。

測(cè)試模型

現(xiàn)在,模型被創(chuàng)建、訓(xùn)練并保存到 Zip 文件中。通過傳遞樣本數(shù)據(jù)測(cè)試訓(xùn)練好的模型。以下是使用預(yù)測(cè)引擎加載模型并預(yù)測(cè)結(jié)果的代碼片段。

?

?

運(yùn)行模型后,以下是控制臺(tái)窗口上的預(yù)測(cè)輸出。

?

?

總結(jié)

您已經(jīng)看到使用 ML.NET 使用 API 框架進(jìn)行價(jià)格預(yù)測(cè)是多么容易。同樣,您可以使用GUI(模型構(gòu)建器)或CLI模型來獲得相同的結(jié)果。

引用

https://dotnet.microsoft.com/apps/machinelearning-ai/ml-dotnet

https://www.kaggle.com/mirichoi0218/insurance

https://www.investopedia.com/ask/answers/09/calculating-premium.asp

https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/

https://github.com/jwood803/MLNetExamples/blob/master/MLNetExamples/AutoML/Program.cs

總結(jié)

以上是生活随笔為你收集整理的使用 ML.NET 进行保险价格预测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。