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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

ML.NET Cookbook:(17)如何在分类数据上训练模型?

發(fā)布時(shí)間:2023/12/4 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ML.NET Cookbook:(17)如何在分类数据上训练模型? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一般來說,所有的ML.NET學(xué)習(xí)器都希望這些特征是一個(gè)浮點(diǎn)向量。因此,如果您的一些數(shù)據(jù)不是一個(gè)float,您需要將其轉(zhuǎn)換為float。

如果我們的數(shù)據(jù)包含“分類”特征(比如“enum”),我們需要以某種方式對(duì)它們進(jìn)行“特征化”。ML.NET提供了幾種將分類數(shù)據(jù)轉(zhuǎn)換為功能的方法:

  • 獨(dú)熱編碼

  • 基于哈希的獨(dú)熱編碼

  • 二進(jìn)制編碼(將類別索引轉(zhuǎn)換為位序列并使用位作為特征)

如果某些類別的基數(shù)非常高(有很多不同的值,但通常只有幾個(gè)),那么獨(dú)熱編碼可能是浪費(fèi)的。我們可以使用基于計(jì)數(shù)的特征選擇來減少我們編碼的槽的數(shù)量。

與規(guī)范化一樣,將分類特征化直接包含在ML.NET學(xué)習(xí)管道中是一種很好的做法:這樣您就可以確保分類轉(zhuǎn)換

  • 只是在訓(xùn)練數(shù)據(jù)上“訓(xùn)練”,而不是在你的測(cè)試數(shù)據(jù)上,

  • 正確應(yīng)用于所有新傳入的數(shù)據(jù),而無需在預(yù)測(cè)時(shí)進(jìn)行額外的預(yù)處理。

下面是成人普查數(shù)據(jù)集[1]的分類處理示例:

Label?Workclass?education?marital-status?occupation?relationship?ethnicity?sex?native-country-region?age?fnlwgt?education-num?capital-gain?capital-loss?hours-per-week 0?Private?11th?Never-married?Machine-op-inspct?Own-child?Black?Male?United-States?25?226802?7?0?0?40 0?Private?HS-grad?Married-civ-spouse?Farming-fishing?Husband?White?Male?United-States?38?89814?9?0?0?50 1?Local-gov?Assoc-acdm?Married-civ-spouse?Protective-serv?Husband?White?Male?United-States?28?336951?12?0?0?40 1?Private?Some-college?Married-civ-spouse?Machine-op-inspct?Husband?Black?Male?United-States?44?160323?10?7688?0?40 //?創(chuàng)建加載器:定義數(shù)據(jù)列以及它們?cè)谖谋疚募械奈恢谩?var?loader?=?mlContext.Data.CreateTextLoader(new[]?{new?TextLoader.Column("Label",?DataKind.Boolean,?0),//?我們將把所有分類特征加載到一個(gè)大小為8的向量列中。new?TextLoader.Column("CategoricalFeatures",?DataKind.String,?1,?8),//?類似地,將所有數(shù)字特征加載到一個(gè)大小為6的向量中。new?TextLoader.Column("NumericalFeatures",?DataKind.Single,?9,?14),//?讓我們單獨(dú)加載“Workclass”列。new?TextLoader.Column("Workclass",?DataKind.String,?1)},hasHeader:?true );//?加載數(shù)據(jù)。 var?data?=?loader.Load(dataPath);//?檢查分類列的前10條記錄以檢查它們是否被正確讀取。 var?catColumns?=?data.GetColumn<string[]>(data.Schema["CategoricalFeatures"]).Take(10).ToArray();//?建造多條可選的特征化管道。 var?pipeline?=//?將每個(gè)分類特征轉(zhuǎn)換為獨(dú)熱編碼。mlContext.Transforms.Categorical.OneHotEncoding("CategoricalOneHot",?"CategoricalFeatures")//?將所有分類特征轉(zhuǎn)換為索引,并構(gòu)建一個(gè)“詞袋”。.Append(mlContext.Transforms.Categorical.OneHotEncoding("CategoricalBag",?"CategoricalFeatures",?OneHotEncodingEstimator.OutputKind.Bag))//?對(duì)workclass列進(jìn)行獨(dú)熱編碼,然后刪除列集中少于10個(gè)實(shí)例的所有類別。.Append(mlContext.Transforms.Categorical.OneHotEncoding("WorkclassOneHot",?"Workclass")).Append(mlContext.Transforms.FeatureSelection.SelectFeaturesBasedOnCount("WorkclassOneHotTrimmed",?"WorkclassOneHot",?count:?10));//?讓我們訓(xùn)練管道,然后將其應(yīng)用于同一個(gè)數(shù)據(jù)上。 var?transformedData?=?pipeline.Fit(data).Transform(data);//?檢查結(jié)果數(shù)據(jù)集的某些列。 var?categoricalBags?=?transformedData.GetColumn<float[]>(transformedData.Schema["CategoricalBag"]).Take(10).ToArray(); var?workclasses?=?transformedData.GetColumn<float[]>(transformedData.Schema["WorkclassOneHotTrimmed"]).Take(10).ToArray();//?當(dāng)然,如果我們想訓(xùn)練模型,我們需要合成一個(gè)包含所有特征的浮點(diǎn)向量。 //?我們可以這樣做:var?fullLearningPipeline?=?pipeline//?連接3個(gè)分類管道中的2個(gè),以及數(shù)字特征。.Append(mlContext.Transforms.Concatenate("Features",?"NumericalFeatures",?"CategoricalBag",?"WorkclassOneHotTrimmed"))//?將數(shù)據(jù)緩存在內(nèi)存中,以便下面的訓(xùn)練器能夠訪問訓(xùn)練樣本,而無需從磁盤多次加載它們。.AppendCacheCheckpoint(mlContext)//?現(xiàn)在我們要訓(xùn)練了。我們選擇了我們的FastTree訓(xùn)練器來完成這個(gè)分類任務(wù)。.Append(mlContext.BinaryClassification.Trainers.FastTree(numTrees:?50));//?訓(xùn)練模型。 var?model?=?fullLearningPipeline.Fit(data);


參考資料

[1]

成人普查數(shù)據(jù)集: https://github.com/dotnet/machinelearning/blob/main/test/data/adult.tiny.with-schema.txt

總結(jié)

以上是生活随笔為你收集整理的ML.NET Cookbook:(17)如何在分类数据上训练模型?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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