ML.NET Cookbook:(5)如何查看中间过程数据?
通常,當(dāng)我們構(gòu)建實(shí)驗(yàn)時(shí),我們希望確保“到某一時(shí)刻”的數(shù)據(jù)處理產(chǎn)生我們想要的結(jié)果。對(duì)于ML.NET來說,這不是很容易做到的:因?yàn)樗械腗L.NET操作都是延遲執(zhí)行的,所以我們構(gòu)造的對(duì)象只是數(shù)據(jù)的“承諾”。
我們需要?jiǎng)?chuàng)建游標(biāo)并掃描數(shù)據(jù)以獲得實(shí)際值。一種方法是使用模式理解[1]并將數(shù)據(jù)映射到用戶定義的IEnumerable對(duì)象中。
另一種允許您檢查中間數(shù)據(jù)的機(jī)制是GetColumn<T>擴(kuò)展方法。它允許您以IEnumerable的形式查看一列數(shù)據(jù)的內(nèi)容。
以下是所有這些操作:
示例文件[2]:
Label?Workclass?education?marital-status 0?Private?11th?Never-married 0?Private?HS-grad?Married-civ-spouse 1?Local-gov?Assoc-acdm?Married-civ-spouse 1?Private?Some-college?Married-civ-spouse //?將數(shù)據(jù)加載到數(shù)據(jù)視圖中。 var?data?=?mlContext.Data.LoadFromTextFile<InspectedRow>(dataPath,//?文件的第一行是標(biāo)題,而不是數(shù)據(jù)行。hasHeader:?true );//?開始創(chuàng)建我們的處理管道。現(xiàn)在,讓我們把所有的文本列連接在一起。 var?pipeline?=?mlContext.Transforms.Concatenate("AllFeatures",?"Education",?"MaritalStatus");//?轉(zhuǎn)換數(shù)據(jù)。 var?transformedData?=?pipeline.Fit(data).Transform(data);//?“transformedData”是數(shù)據(jù)的“承諾”。讓我們實(shí)際加載它。 var?someRows?=?mlContext//?轉(zhuǎn)換為用戶定義類型的可枚舉項(xiàng)。.CreateEnumerable<InspectedRowWithAllFeatures>(transformedData,?reuseRowObject:?false)//?取幾個(gè)值作為數(shù)組。.Take(4).ToArray();//?提取“AllFeatures”列。這將取出整個(gè)數(shù)據(jù)集:確保只取幾行,以防數(shù)據(jù)集太大。與靜態(tài)API類似,只是您必須指定列名和類型。 var?featureColumns?=?transformedData.GetColumn<string[]>(transformedData.Schema["AllFeatures"])參考資料
[1]
模式理解: https://github.com/dotnet/machinelearning/blob/main/docs/code/SchemaComprehension.md
[2]示例文件: https://github.com/dotnet/machinelearning/blob/main/test/data/adult.tiny.with-schema.txt
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的ML.NET Cookbook:(5)如何查看中间过程数据?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记一次 .NET 某电商交易平台Web站
- 下一篇: 关于.NET微服务最热门的问题解答