Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
otomatik olarak bir ML.NET modeli ve temel alınan C# kodu oluşturmak için ML.NET CLI kullanmayı öğrenin. Veri kümenizi ve uygulamak istediğiniz makine öğrenmesi görevini sağlarsınız ve CLI, model oluşturma ve dağıtım kaynak kodunun yanı sıra sınıflandırma modelini oluşturmak için AutoML altyapısını kullanır.
Bu öğreticide aşağıdaki adımları uygulayacaksınız:
- Verilerinizi seçili makine öğrenmesi görevi için hazırlama
- CLI'dan
mlnet classification
komutunu çalıştırma - Kalite ölçümü sonuçlarını gözden geçirme
- Modeli uygulamanızda kullanmak için oluşturulan C# kodunu anlama
- Modeli eğitmek için kullanılan oluşturulan C# kodunu keşfetme
Dikkat
Bu makale, şu anda önizleme aşamasında olan ve malzemenin değiştirilebilir olduğu ML.NET CLI aracına başvurur. Daha fazla bilgi için ML.NET sayfasını ziyaret edin.
ML.NET CLI, ML.NET bir parçasıdır ve temel hedefi, başlamak için sıfırdan kod oluşturmanız gerekmemesi için ML.NET öğrenirken .NET geliştiricileri için ML.NET "demokratikleştirmek"tir.
ML.NET CLI'yi istediğiniz komut isteminde (Windows, Mac veya Linux) çalıştırarak sağladığınız eğitim veri kümelerini temel alan kaliteli ML.NET modelleri ve kaynak kodu oluşturabilirsiniz.
Önkoşullar
- .NET 8 SDK veya üzeri
- Visual Studio
(İsteğe bağlı) - ML.NET CLI
Oluşturulan C# kod projelerini Visual Studio'dan veya dotnet run
(.NET CLI) ile çalıştırabilirsiniz.
Verilerinizi hazırlama
İkili sınıflandırma makine öğrenmesi görevi olan 'Yaklaşım Analizi' senaryosu için kullanılan mevcut bir veri kümesini kullanacağız. Kendi veri kümenizi benzer şekilde kullanabilirsiniz ve model ve kod sizin için oluşturulur.
UCI Sentiment Labeled Sentences veri kümesi zip dosyasını (aşağıdaki nottaki alıntılara bakın)
indirin ve seçtiğiniz herhangi bir klasöre sıkıştırmasını açın. Not
Bu öğretici, "Derin Özellikler Kullanılarak Gruptan Bireysel Etiketlere", Kotzias ve diğerleri tarafından oluşturulan bir veri kümesi kullanır. KDD 2015 ve UCI Machine Learning Deposu ' nda barındırıldı - Dua, D. ve Karra Taniskidou, E. (2017). UCI Machine Learning Deposu [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
yelp_labelled.txt
dosyasını daha önce oluşturduğunuz herhangi bir klasöre (/cli-test
gibi) kopyalayın.Tercih ettiğiniz komut istemini açın ve veri kümesi dosyasını kopyaladığınız klasöre gidin. Mesela:
cd /cli-test
Visual Studio Code gibi herhangi bir metin düzenleyicisini kullanarak
yelp_labelled.txt
veri kümesi dosyasını açabilir ve inceleyebilirsiniz. Yapının şu şekilde olduğunu görebilirsiniz:Dosyanın üst bilgisi yok. Sütun dizinini kullanıyor olacaksınız.
Yalnızca iki sütun vardır:
Metin (Sütun indeksi 0) Etiket (Sütun indeksi 1) Vay... Burayı sevdim. 1 Kabuk iyi değil. 0 Lezzetli değil ve doku sadece kötü. 0 ... çok daha fazla metin satırı... ... (1 veya 0)...
Düzenleyiciden veri kümesi dosyasını kapatdığınızdan emin olun.
Bu 'Duygu Analizi' senaryosu için artık CLI kullanmaya başlamaya hazırsınız.
Not
Bu öğreticiyi tamamladıktan sonra, 'İkili Sınıflandırma', 'Sınıflandırma', 'Regresyon', ve
'Öneri' ML.NET CLI Önizlemesi tarafından desteklenen ML görevlerinden herhangi biri için kullanılmaya hazır oldukları sürece kendi veri kümelerinizle de deneyebilirsiniz.
'mlnet classification' komutunu çalıştırın
Aşağıdaki ML.NET CLI komutunu çalıştırın:
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --train-time 10
Bu komut
komutunu çalıştırır: - ML görevi için sınıflandırma
- eğitim ve test veri kümesi olarak
veri kümesi dosyasını kullanır (dahili olarak CLI çapraz doğrulama kullanır veya biri eğitim için, diğeri test için) iki veri kümesine böler - burada tahmin etmek istediğiniz
hedef/hedef sütun (genellikle 'etiket'olarak adlandırılır), dizin 1 içeren sütunudur (dizin sıfır tabanlı olduğundan ikinci sütundur) - , bu veri kümesi dosyasında bir üst bilgi olmadığından, sütun adları içeren bir dosya üst bilgisi kullanmaz.
- Deneme için hedeflenen keşif/eğitim süresi 10 saniye
CLI'nin çıkışını, benzer şekilde görürsünüz:
'da
Bu özel durumda, yalnızca 10 saniye içinde ve sağlanan küçük veri kümesiyle, CLI aracı, farklı algoritmaların/yapılandırmaların bileşimleri ile farklı iç veri dönüştürmeleri ve algoritmanın hiper parametreleri temelinde birden çok kez eğitim yaparak birçok yinelemeyi çalıştırmayı başardı.
Son olarak, 10 saniyede bulunan "en iyi kalite" modeli, herhangi bir özel yapılandırmaya sahip belirli bir eğitmen/algoritma kullanan bir modeldir. Araştırma süresine bağlı olarak, komut farklı bir sonuç üretebilir. Seçim,
Accuracy
gibi gösterilen birden çok ölçümü temel alır.Modelin kalite ölçümlerini anlama
İkili sınıflandırma modelini değerlendirmenin ilk ve en kolay ölçümü, anlaşılması kolay olan doğruluk değeridir. "Doğruluk, bir test veri kümesiyle doğru tahminlerin oranıdır." 100% (1,00) ne kadar yakınsa o kadar iyidir.
Ancak, özellikle test veri kümesinde etiket (0 ve 1) dengesiz olduğunda yalnızca Doğruluk ölçümüyle ölçüm yapmak yeterli değildir.
Farklı modelleri değerlendirmek için kullanılan Doğruluk, AUC, AUCPR ve F1 puanı gibi ölçümler hakkında ek ölçümler ve daha fazla
ayrıntılı bilgi için bkz.ML.NET ölçümlerini anlama . Not
Aynı veri kümesini deneyebilir ve
--max-exploration-time
için birkaç dakika (örneğin, üç dakika yani 180 saniye) ayırabilirsiniz; bu, bu veri kümesi için (oldukça küçük, 1000 satır) farklı bir eğitim işlem hattı yapılandırmasıyla sizin için daha iyi bir "en iyi model" bulacaktır.Daha büyük veri kümelerini hedefleyen "üretime hazır bir model" olan "en iyi/iyi kalite" modelini bulmak için, CLI ile denemeler yapmanız ve genellikle veri kümesinin boyutuna bağlı olarak çok daha fazla keşif süresi belirtmeniz gerekir. Aslında çoğu durumda, özellikle veri kümesi satır ve sütunlarda büyükse, birkaç saatlik araştırma süresi gerekebilir.
Önceki komut yürütmesi aşağıdaki varlıkları oluşturdu:
- Kullanıma hazır bir serileştirilmiş model .zip ("en iyi model").
- Oluşturulan modeli çalıştırmak/puan almak için C# kodu (Bu modelle son kullanıcı uygulamalarınızda tahmin yapmak için).
- Bu modeli oluşturmak için kullanılan C# eğitim kodu (Öğrenme amaçları).
- Hiper parametrelerin ve veri dönüşümlerinin birleşimiyle denenen her algoritma hakkında ayrıntılı bilgilere sahip olup olmadığını araştıran tüm yinelemeleri içeren bir günlük dosyası.
oluşturulan ML modeliyle tahminde bulunmak için ilk iki varlık (.ZIP dosya modeli ve bu modeli çalıştırmak için C# kodu) doğrudan son kullanıcı uygulamalarınızda (ASP.NET Core web uygulaması, hizmetler, masaüstü uygulaması vb.) kullanılabilir.
Üçüncü varlık olan eğitim kodu, CLI tarafından oluşturulan modeli eğitmek için hangi ML.NET API kodunun kullanıldığını gösterir; böylece CLI tarafından hangi eğitmenin/algoritmanın ve hiper parametrelerin seçildiğini araştırabilirsiniz.
Bu numaralandırılmış varlıklar, eğitimin aşağıdaki adımlarında açıklanmıştır.
Tahmin yapmak için modeli çalıştırmak için kullanılacak oluşturulan C# kodunu keşfetme
Visual Studio'da, özgün hedef klasörünüzdeki
SampleClassification
adlı klasörde oluşturulan çözümü açın (öğreticide/cli-test
olarak adlandırıldı). Şuna benzer bir çözüm görmeniz gerekir:CLI tarafından oluşturulan
Not
Öğreticide Visual Studio'nun kullanılması önerilir, ancak oluşturulan C# kodunu (iki proje) herhangi bir metin düzenleyicisiyle keşfedebilir ve oluşturulan konsol uygulamasını macOS, Linux veya Windows makinesinde
dotnet CLI
çalıştırabilirsiniz.- Oluşturulan konsol uygulaması gözden geçirmeniz gereken yürütme kodunu içerir ve ardından bu basit kodu (yalnızca birkaç satır) tahminde bulunmak istediğiniz son kullanıcı uygulamanıza taşıyarak genellikle 'puanlama kodunu' (tahmin yapmak için ML modelini çalıştıran kod) yeniden kullanırsınız.
- Oluşturulan mbconfig dosyası, CLI veya Model Oluşturucu aracılığıyla modelinizi yeniden eğitmek için kullanılabilecek bir yapılandırma dosyasıdır. Bu dosyayla ilişkilendirilmiş iki kod dosyası ve bir zip dosyası da bulunur.
- eğitim dosyası, ML.NET API'sini kullanarak model işlem hattını oluşturmaya ilişkin kodu içerir.
- tüketim dosyası modeli kullanacak kodu içerir.
- CLI'dan oluşturulan model olan zip dosyası.
mbconfig dosyasının içinde SampleClassification.consumption.cs dosyasını açın. Giriş ve çıkış sınıfları olduğunu göreceksiniz. Bunlar, verileri tutmak için kullanılan veri sınıfları veya POCO sınıflarıdır. Sınıflar, veri kümenizde onlarca, hatta yüzlerce sütun varsa yararlı olan ortak kod içerir.
-
ModelInput
sınıfı, veri kümesinden veri okunurken kullanılır. -
ModelOutput
sınıfı, tahmin sonucunu (tahmin verileri) almak için kullanılır.
-
Program.cs dosyasını açın ve kodu keşfedin. Yalnızca birkaç satırda modeli çalıştırabilir ve örnek bir tahminde bulunabilirsiniz.
static void Main(string[] args) { // Create single instance of sample data from first line of dataset for model input ModelInput sampleData = new ModelInput() { Col0 = @"Wow... Loved this place.", }; // Make a single prediction on the sample data and print results var predictionResult = SampleClassification.Predict(sampleData); Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n"); Console.WriteLine($"Col0: {sampleData.Col0}"); Console.WriteLine($"\n\nPredicted Col1 value {predictionResult.PredictedLabel} \nPredicted Col1 scores: [{String.Join(",", predictionResult.Score)}]\n\n"); Console.WriteLine("=============== End of process, hit any key to finish ==============="); Console.ReadKey(); }
İlk kod satırları,
tek bir örnek veri oluşturur. Bu durumda, tek örnek veriler tahmin için kullanılacak veri kümesinin ilk satırını temel alır. Ayrıca kodu güncelleştirerek kendi "sabit kodlanmış" verilerinizi oluşturabilirsiniz: ModelInput sampleData = new ModelInput() { Col0 = "The ML.NET CLI is great for getting started. Very cool!" };
Sonraki kod satırı, tahminde bulunmak ve sonuçları döndürmek için belirtilen giriş verilerinde
SampleClassification.Predict()
yöntemini kullanır (ModelOutput.cs şemasına göre).Kodun son satırları, örnek verilerin özelliklerini (bu örnekte Açıklama) ve Yaklaşım tahminini ve pozitif yaklaşım (1) ve negatif yaklaşım için karşılık gelen Puanları (2) yazdırır.
Veri kümesinin ilk satırından yüklenen özgün örnek verileri kullanarak veya kendi özel sabit kodlanmış örnek verilerinizi sağlayarak projeyi çalıştırın. Aşağıdakilerle karşılaştırılabilir bir tahmin almalısınız:
ML.NET CLI ile uygulamayı Visual Studio'dan çalıştır
Sabit kodlanmış örnek verileri farklı yaklaşımlara sahip diğer cümlelerle değiştirmeyi deneyin ve modelin olumlu veya olumsuz yaklaşımı nasıl tahmin ettiğini görün.
ML modeli tahminleriyle son kullanıcı uygulamalarınızı kullanma
Modeli son kullanıcı uygulamanızda çalıştırmak ve tahminlerde bulunmak için benzer 'ML model puanlama kodu' kullanabilirsiniz.
Örneğin, bu kodu wpf
Bununla birlikte, ml modelini çalıştırmak için bu kod satırlarını uygulama şekliniz iyileştirilmiş olmalıdır (yani, modeli önbelleğe alıp dosya .zip bir kez yüklemelisiniz) ve özellikle uygulamanızın web uygulaması veya dağıtılmış hizmet gibi ölçeklenebilir olması gerekiyorsa, her istekte oluşturmak yerine tekil nesnelere sahip olmalıdır.
Ölçeklenebilir çok iş parçacıklı ASP.NET Core web uygulamaları ve hizmetlerinde ML.NET modellerini çalıştırma
Model nesnesinin oluşturulması (modelin .zip dosyasından yüklenenITransformer
) ve PredictionEngine
nesnesi özellikle ölçeklenebilir web uygulamalarında ve dağıtılmış hizmetlerde çalışırken iyileştirilmelidir. İlk durumda, model nesnesi (ITransformer
) iyileştirme basittir.
ITransformer
nesnesi iş parçacığı açısından güvenli olduğundan, nesneyi tekil veya statik bir nesne olarak önbelleğe alabilir, böylece modeli bir kez yükleyebilirsiniz.
ASP.NET Core uygulamasında, PredictionEngine
nesnesi iş parçacığı açısından güvenli olmadığından, ikinci nesne olan PredictionEngine
nesnesini tekil veya statik bir nesne olarak oluşturamazsınız. Bu iş parçacığı güvenliği ve ölçeklenebilirlik konusu, bu Blog Gönderisi'de ayrıntılı olarak ele alınıyor.
Ancak, işler sizin için bu blog gönderisinde açıklanandan çok daha kolay hale geldi. Sizin için daha basit bir yaklaşım üzerinde çalıştık ve ASP.NET Core uygulamalarınızda ve hizmetlerinizde kolayca kullanabileceğiniz bir '.NET Tümleştirme Paketi' oluşturduk. Bunu uygulama DI hizmetlerine (Bağımlılık Ekleme hizmetleri) kaydedip doğrudan kodunuzdan kullanabilirsiniz. Bunu yapmak için aşağıdaki öğreticiyi ve örneği gözden geçirin:
- Öğretici: Ölçeklenebilir ASP.NET Core web uygulamalarında ve Web API'lerde ML.NET modelleri çalıştırma
- Örneği: ASP.NET Core WebAPI üzerinde ölçeklenebilir ML.NET modeli
"En iyi kalite" modelini eğitmek için kullanılan oluşturulan C# kodunu keşfetme
Daha gelişmiş öğrenme amaçları için, CLI aracı tarafından oluşturulan modeli eğitmek için kullanılan oluşturulan C# kodunu da keşfedebilirsiniz.
Bu eğitim modeli kodu, SampleClassification.training.cs
adlı dosyada oluşturulur, böylece bu eğitim kodunu araştırabilirsiniz.
Daha da önemlisi, bu senaryo (Yaklaşım Analizi modeli) için, oluşturulan eğitim kodunu aşağıdaki öğreticide açıklanan kodla karşılaştırabilirsiniz:
Seçilen algoritma ve işlem hattı yapılandırmasını öğretideki haliyle CLI aracı tarafından oluşturulan kodla karşılaştırmak ilginçtir. Daha iyi modelleri yinelemek ve aramak için ne kadar zaman harcadığınıza bağlı olarak, seçilen algoritma belirli hiper parametreleri ve işlem hattı yapılandırmasıyla birlikte farklı olabilir.
Bu öğreticide şunların nasıl yapılacağını öğrendiniz:
- Verilerinizi seçili ML görevi için hazırlama (çözülmesi gereken sorun)
- CLI aracında 'mlnet classification' komutunu çalıştırın
- Kalite ölçümü sonuçlarını gözden geçirme
- Modeli çalıştırmak için oluşturulan C# kodunu anlama (Son kullanıcı uygulamanızda kullanılacak kod)
- "En iyi kalite" modelini, kazanma amaçlı eğitmek için kullanılan oluşturulmuş C# kodunu keşfedin.
Ayrıca bkz.
- ML.NET CLI ile model eğitimini otomatikleştirme
- Eğitici: ML.NET modellerini ölçeklenebilir ASP.NET Core web uygulamalarında ve WebAPI'lerinde çalıştırma
- Örneği: ASP.NET Core WebAPI üzerinde ölçeklenebilir ML.NET modeli
- ML.NET CLI otomatik eğit komutu başvuru kılavuzu
- ML.NET CLI'de Telemetri