Tutorial ML.NET - Mulai dalam 10 menit
Intro
Tujuan
Gunakan ML.NET Model Builder di Visual Studio untuk melatih dan menggunakan model pembelajaran mesin pertama Anda dengan ML.NET.
Instal CLI ML.NET, lalu latih dan gunakan model pembelajaran mesin pertama Anda dengan ML.NET.
Prasyarat
Tidak ada.
macOS 12.0 atau versi yang lebih baru.
Waktu untuk Menyelesaikan
10 menit + waktu pengunduhan/penginstalan
Skenario
Aplikasi yang dapat memprediksi apakah teks dari ulasan pelanggan adalah sentimen negatif atau positif.
Unduh dan instal
Unduh dan instal Visual Studio 2022.
Selama penginstalan, beban kerja pengembangan dekstop .NET harus dipilih bersama dengan komponen ML.NET Model Builder opsional. Menggunakan tautan di atas harus memilih semua prasyarat dengan benar, seperti yang ditunjukkan pada gambar berikut:
Sudah memiliki Visual Studio 2022?
Jika Anda sudah memiliki Visual Studio 2022, pastikan sudah diperbarui dan memiliki beban kerja yang diperlukan terinstal:
- Pilih tombol Windows, ketik Penginstal Visual Studio, dan tekan Enter.
- Jika diminta, izinkan penginstal untuk memperbarui sendiri.
- Jika pembaruan untuk Visual Studio 2022 tersedia, tombol Perbarui akan ditampilkan. Pilih untuk memperbarui sebelum mengubah penginstalan. Sebaiknya gunakan versi terbaru Visual Studio 2022 untuk tutorial ini.
- Temukan penginstalan Visual Studio 2022 Anda dan pilih Ubah.
- Pilih pengembangan desktop .NET dan pastikan Penyusun Model ML.NET dipilih di panel kanan. Pilih tombol Ubah.
Mutakhirkan ke Model Builder versi terbaru
Setelah mengaktifkan ML.NET Model Builder di Visual Studio, unduh dan instal versi terbaru.
Unduh Model Builder versi terbaru
Setelah mengunduh, instal ekstensi dengan mengeklik dua kali file .vsix.
Periksa pembaruan Visual Studio
Tutorial ini dioptimalkan untuk versi terbaru Visual Studio. Jika sudah memiliki Visual Studio 2022, Anda dapat memeriksa pembaruan:
- Pilih tombol Windows, ketik Penginstal Visual Studio, dan tekan Enter.
- Jika diminta, izinkan penginstal untuk memperbarui sendiri.
- Jika pembaruan tersedia, penginstalan Visual Studio 2022 Anda akan memiliki tombol Perbarui. Pilih untuk memperbarui.
Instal SDK .NET
Untuk membangun aplikasi .NET, Anda perlu mengunduh dan menginstal .NET 8 SDK (Kit Pengembangan Perangkat Lunak).
Unduh .NET 8 SDK x64 (Intel)
Unduh .NET 8 SDK Arm64 (Apple Silicon)
Jika menggunakan Mac dengan chip Apple M1 atau M2, Anda perlu menginstal SDK versi Arm64.
Instal CLI ML.NET
Antarmuka baris perintah (CLI) ML.NET, menyediakan alat untuk membuat model pembelajaran mesin dengan ML.NET.
Catatan: Saat ini, ML.NET CLI dalam versi Pratinjau dan hanya mendukung versi LTS terbaru dari .NET SDK (.NET 8).
Untuk langkah penginstalan, sebaiknya gunakan konsol Bash. Karena default untuk macOS adalah konsol zsh, Anda dapat membuat instans tunggal dengan membuka terminal baru dan menjalankan perintah di bawah ini.
bash
UNTUK MESIN x64 - Jalankan perintah berikut:
dotnet tool install -g mlnet-linux-x64
UNTUK ARSITEKTUR CHIP ARM64 - Jalankan perintah berikut:
dotnet tool install -g mlnet-linux-arm64
Jika alat berhasil diinstal, Anda akan melihat pesan output berikut dengan [arch]
adalah arsitektur chip:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-linux-[arch]' (version 'X.X.X') was successfully installed.
dotnet tool install -g mlnet-osx-x64
UNTUK ARSITEKTUR CHIP ARM64 - Jalankan perintah berikut:
dotnet tool install -g mlnet-osx-arm64
Jika alat berhasil diinstal, Anda akan melihat pesan output di mana [arch]
adalah arsitektur chip yang mirip dengan berikut:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-osx-[arch]' (version 'X.X.X') was successfully installed.
Catatan: Jika Anda menggunakan konsol selain Bash (misalnya, zsh, yang merupakan default baru untuk macOS), Anda harus memberikan mlnet
izin dapat dieksekusi dan sertakan mlnet
ke jalur sistem. Petunjuk tentang cara melakukan ini akan muncul di terminal saat Anda menginstal mlnet (atau alat global apa pun).. Secara umum, perintah berikut dapat digunakan untuk sebagian besar sistem: chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE]
Jika Anda melihat instruksi yang serupa dengan yang di bawah ini, jalankan di terminal Anda.
cat << \EOF >> ~/.zprofile
#Add .NET Core SDK tools
export PATH="$PATH:~/.dotnet/tools"
EOF
Atau, Anda dapat mencoba mengikuti perintah berikut untuk menjalankan alat mlnet:
~/.dotnet/tools/mlnet
Jika perintah masih memberi Anda kesalahan, gunakan tombol saya mengalami masalah di bawah ini untuk melaporkan masalah dan mendapatkan bantuan memperbaiki masalah.
Buat aplikasi Anda
Buka Visual Studio dan buat aplikasi konsol .NET baru:
- Pilih Buat proyek baru dari jendela mulai Visual Studio 2022.
- Pilih templat proyek Aplikasi Konsol C#.
- Ubah nama proyek menjadi
myMLApp
. - Pastikan Tempatkan solusi dan proyek di direktori yang sama tidak dicentang.
- Pilih tombol Berikutnya.
- Pilih .NET 8.0 (dukungan Jangka Panjang) sebagai Kerangka Kerja.
- Pilih tombol Buat. Visual Studio membuat proyek Anda dan memuat file
Program.cs
.
Tambahkan pembelajaran mesin
Klik kanan proyek
myMLApp
di Penjelajah Solusi dan pilih Tambahkan > Model Pembelajaran Mesin.- Dalam dialog Tambahkan Item Baru, pastikan Model Pembelajaran Mesin (ML.NET) dipilih.
Ubah bidang Nama menjadi
SentimentModel.mbconfig
dan pilih tombol Tambah.
File baru bernama SentimentModel.mbconfig
ditambahkan ke solusi Anda dan UI Model Builder terbuka di jendela alat tertambat baru di Visual Studio. File mbconfig hanyalah file JSON yang melacak status UI.
Model Builder akan memandu Anda melalui proses pembangunan model pembelajaran mesin dalam langkah-langkah berikut.
Di terminal Anda, jalankan perintah berikut:
mkdir myMLApp
cd myMLApp
Perintah mkdir
membuat direktori baru bernama myMLApp
, dan perintah cd myMLApp
menempatkan Anda ke direktori aplikasi yang baru dibuat.
Kode pelatihan model Anda akan dibuat dalam langkah-langkah mendatang.
Pilih skenario
Untuk membuat model, Anda harus memilih skenario pembelajaran mesin terlebih dahulu. Model Builder mendukung beberapa skenario:
Catatan: Jika cuplikan layar tutorial tidak cocok dengan apa yang Anda lihat, Anda mungkin perlu memperbarui versi Pembuat Model. Buka Ekstensi > Kelola Ekstensi untuk memastikan bahwa tidak ada pembaruan Pembuat Model yang tersedia. Versi yang digunakan dalam tutorial ini adalah 17.18.2.
Dalam hal ini, Anda akan memprediksi sentimen berdasarkan konten (teks) ulasan pelanggan.
-
Di layar Skenario Pembuat Model, pilih skenario Klasifikasi data, karena Anda memprediksi kategori mana komentar yang termasuk dalam (positif atau negatif).
-
Setelah memilih skenario Klasifikasi data, Anda harus memilih lingkungan pelatihan. Meskipun beberapa skenario mendukung pelatihan di Azure, Klasifikasi saat ini hanya mendukung pelatihan lokal, jadi biarkan lingkungan Local dipilih dan lanjutkan ke langkah Data.
Untuk membuat model, Anda perlu memilih skenario pembelajaran mesin.
Ada beberapa skenario ML yang didukung oleh CLI ML.NET:
- Klasifikasi - Gunakan ini jika Anda ingin memprediksi data kategori mana yang termasuk (misalnya, menganalisis sentimen ulasan pelanggan sebagai positif atau negatif).
- Klasifikasi gambar - Gunakan ini saat Anda ingin memprediksi kategori dari suatu gambar (misalnya, memprediksi apakah suatu gambar adalah kucing atau anjing).
- Regresi (misalnya, prediksi nilai) - Gunakan ini saat Anda ingin memprediksi nilai numerik (misalnya, memprediksi harga rumah).
- Prakiraan - Gunakan ini jika Anda ingin memperkirakan nilai di masa mendatang dalam rangkaian waktu (misalnya, prakiraan penjualan triwulanan).
- Rekomendasi - Gunakan ini saat Anda ingin merekomendasikan item kepada pengguna berdasarkan peringkat riwayat (misalnya, rekomendasi produk).
Dalam hal ini, Anda akan memprediksi sentimen berdasarkan konten (teks) ulasan pelanggan, sehingga Anda akan menggunakan klasifikasi.
Unduh dan tambahkan data
Unduh himpunan data Kalimat Berlabel Sentimen dari Repositori Pembelajaran Mesin UCI. Buka zip sentiment labelled sentences.zip
dan simpan file yelp_labelled.txt
ke direktori myMLApp
.
Penjelajah Solusi Anda harus seperti di berikut ini:
Setiap baris dalam yelp_labelled.txt
mewakili ulasan lain tentang restoran yang ditinggalkan oleh pengguna di Yelp. Kolom pertama mewakili komentar yang ditinggalkan oleh pengguna, dan kolom kedua mewakili sentimen teks (0 negatif, 1 positif). Kolom dipisahkan oleh tab, dan himpunan data tidak memiliki header. Data terlihat seperti berikut:
Wow... Loved this place. 1
Crust is not good. 0
Not tasty and the texture was just nasty. 0
Tambahkan data
Di Pembuat Model, Anda dapat menambahkan data dari file lokal atau menyambungkan ke database SQL Server. Dalam hal ini, Anda akan menambahkan yelp_labelled.txt
dari file.
Pilih File sebagai jenis sumber data input.
Telusuri
yelp_labelled.txt
. Setelah memilih himpunan data, pratinjau data akan muncul di bagian Pratinjau Data. Karena himpunan data Anda tidak memiliki header, header dibuat secara otomatis ("col0" dan "col1").Pada Kolom yang akan diprediksi (Label), pilih "col1". Label adalah apa yang Anda prediksi, yang dalam hal ini adalah sentimen yang ditemukan di kolom kedua ("col1") himpunan data.
Kolom yang digunakan untuk membantu memprediksi Label disebut Fitur. Semua kolom dalam himpunan data selain Label secara otomatis dipilih sebagai Fitur. Dalam hal ini, kolom komentar tinjauan ("col0") adalah kolom Fitur. Anda dapat memperbarui kolom Fitur dan mengubah opsi pemuatan data lainnya di Opsi data lanjutan, tetapi tidak diperlukan untuk contoh ini.
Setelah menambahkan data, masuk ke langkah Latih.
Latih model Anda
Sekarang, Anda akan melatih model Anda dengan himpunan data yelp_labelled.txt
.
Model Builder mengevaluasi banyak model dengan algoritma dan pengaturan yang bervariasi berdasarkan jumlah waktu pelatihan yang diberikan untuk membuat model berkinerja terbaik.
Ubah Waktu untuk melatih, yang merupakan jumlah waktu yang Anda inginkan agar Model Builder menjelajahi berbagai model, ke 60 detik (Anda dapat mencoba meningkatkan jumlah ini jika tidak ada model yang ditemukan setelah pelatihan) . Perhatikan bahwa untuk himpunan data yang lebih besar, waktu pelatihan akan lebih lama.Model Builder secara otomatis menyesuaikan waktu pelatihan berdasarkan ukuran himpunan data.
Anda dapat memperbarui metrik optimalisasi dan algoritma yang digunakan dalam opsi Pelatihan tingkat lanjut, tetapi hal ini tidak diperlukan untuk contoh ini.
Pilih Mulai pelatihan untuk memulai proses pelatihan. Setelah pelatihan dimulai, Anda dapat melihat sisa waktu.
Hasil pelatihan
Setelah pelatihan selesai, Anda dapat melihat ringkasan hasil pelatihan.
- MacroAccuracy Terbaik - Ini menunjukkan akurasi model terbaik yang ditemukan Pembuat Model. Akurasi yang lebih tinggi berarti model memprediksi lebih tepat pada data pengujian.
- Model terbaik - Ini menunjukkan algoritma mana yang berkinerja paling baik selama eksplorasi Model Builder.
- Waktu pelatihan - Ini menunjukkan jumlah total waktu yang dihabiskan untuk melatih/menjelajahi model.
- Model yang dijelajahi (total) - Ini menunjukkan jumlah total model yang dijelajahi oleh Pembuat Model dalam jumlah waktu tertentu.
- Kode belakang yang dihasilkan - Ini menunjukkan nama file yang dihasilkan untuk membantu menggunakan model atau melatih model baru.
Bila perlu, Anda dapat melihat informasi selengkapnya tentang sesi pelatihan di jendela Output Pembelajaran Mesin.
Setelah pelatihan model selesai, masuk ke langkah Evaluasi.
Di terminal Anda, jalankan perintah berikut (di folder myMLApp
Anda):
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --name SentimentModel --train-time 60
Apa arti perintah ini?
Perintah mlnet classification
menjalankan ML.NET dengan AutoML untuk mengeksplorasi banyak iterasi model klasifikasi dalam jumlah waktu pelatihan tertentu dengan berbagai kombinasi transformasi data, algoritma, dan opsi algoritma, lalu memilih model dengan performa tertinggi.
- --dataset: Anda memilih
yelp_labelled.txt
sebagai himpunan data (secara internal, CLI akan membagi satu himpunan data menjadi himpunan data pelatihan dan pengujian). - --label-col: Anda harus menentukan kolom target yang ingin Anda prediksi (atau Label). Dalam hal ini, Anda ingin memprediksi sentimen di kolom kedua (kolom terindeks nol berarti ini adalah kolom "1").
- --has-header: Gunakan opsi ini untuk menentukan apakah himpunan data memiliki header. Dalam hal ini, himpunan data tidak memiliki header, sehingga salah.
- --name: Gunakan opsi ini untuk memberikan nama untuk model pembelajaran mesin dan aset terkait Anda. Dalam hal ini, semua aset yang terkait dengan model pembelajaran mesin ini akan memiliki SentimentModel dalam namanya.
- --train-time: Anda juga harus menentukan jumlah waktu yang diinginkan agar ML.NET CLI menjelajahi model yang berbeda. Dalam hal ini, 60 detik (Anda dapat mencoba meningkatkan angka ini jika tidak ada model yang ditemukan setelah pelatihan). Perhatikan bahwa untuk himpunan data yang lebih besar, Anda harus mengatur waktu pelatihan yang lebih lama.
Progres
Saat ML.NET CLI menjelajahi berbagai model, ini menampilkan data berikut:
- Mulai pelatihan - Bagian ini menampilkan setiap iterasi model, termasuk metrik pelatih (algoritma) yang digunakan dan evaluasi untuk iterasi tersebut.
- Waktu tersisa - Ini dan bilah kemajuan akan menunjukkan berapa lama waktu yang tersisa dalam proses pelatihan dalam detik.
- Algoritma terbaik - Ini menunjukkan kepada Anda algoritma mana yang memiliki performa terbaik sejauh ini.
- Skor terbaik - Ini menunjukkan kinerja model terbaik sejauh ini. Akurasi yang lebih tinggi berarti model memprediksi dengan lebih tepat pada data pengujian.
Jika menginginkannya, Anda dapat melihat informasi selengkapnya tentang sesi pelatihan dalam file log yang dihasilkan oleh CLI.
Evaluasi model Anda
Langkah Evaluasi menunjukkan algoritme dengan kinerja dan akurasi terbaik serta memungkinkan Anda mencoba model di UI.
Coba model Anda
Anda dapat membuat prediksi pada masukan sampel di bagian Coba model Anda. Kotak teks sudah diisi sebelumnya dengan baris pertama data dari himpunan data Anda, tetapi Anda dapat mengubah masukan dan memilih tombol Prediksi untuk mencoba berbagai prediksi sentimen.
Dalam hal ini, 0 berarti sentimen negatif dan 1 berarti sentimen positif.
Catatan: Jika model Anda tidak berfungsi dengan baik (misalnya, jika akurasi rendah atau jika model hanya memprediksi nilai '1'), Anda dapat mencoba menambahkan lebih banyak waktu dan pelatihan lagi. Ini adalah sampel menggunakan himpunan data yang sangat kecil; untuk model tingkat produksi, Anda ingin menambahkan lebih banyak data dan waktu pelatihan.
Setelah mengevaluasi dan mencoba model Anda, lanjutkan ke langkah Konsumsi.
Setelah ML.NET CLI memilih model terbaik, CLI akan menampilkan Ringkasan pelatihan, yang memperlihatkan ringkasan proses eksplorasi, termasuk jumlah model yang dijelajahi dalam waktu pelatihan tertentu.
Model Teratas
Sementara CLI ML.NET menghasilkan kode untuk model berkinerja tertinggi, CLI juga menampilkan model teratas (hingga 5) dengan akurasi tertinggi yang ditemukan dalam waktu eksplorasi tertentu. CLI menampilkan beberapa metrik evaluasi untuk model teratas tersebut, termasuk AUC, AUPRC, dan F1-score. Untuk informasi selengkapnya, lihat metrik ML.NET.
Buat kode
Setelah pelatihan selesai, empat file secara otomatis ditambahkan sebagai kode di belakang SentimentModel.mbconfig
:
SentimentModel.consumption.cs
: File ini berisi kelas input dan output model serta metodePredict
yang dapat digunakan untuk konsumsi model.SentimentModel.evaluate.cs
: File ini berisi metodeCalculatePFI
yang menggunakan teknik Permutation Feature Importance (PFI) untuk mengevaluasi fitur mana yang berkontribusi paling besar terhadap prediksi model.SentimentModel.mlnet
: File ini adalah model ML.NET terlatih, yang merupakan file zip yang diserialisasi.SentimentModel.training.cs
: File ini berisi kode untuk memahami kolom pentingnya kolom input pada prediksi model Anda.
Dalam langkah Consume di Model Builder, disediakan cuplikan kode yang membuat input sampel untuk model dan menggunakan model untuk membuat prediksi pada input tersebut.
Model Builder juga menawarkan Templat proyek yang dapat Anda tambahkan secara opsional ke solusi. Ada dua templat proyek (aplikasi konsol dan API web), keduanya menggunakan model yang dilatih.
CLI ML.NET menambahkan model pembelajaran mesin dan kode untuk pelatihan dan penggunaan model, yang mencakup hal berikut:
-
Direktori baru bernama SentimentModel dibuat dan berisi aplikasi konsol .NET yang mencakup file berikut:
Program.cs
: File ini berisi kode untuk menjalankan model.SentimentModel.consumption.cs
: File ini berisi kelas input dan output model serta metodePredict
yang dapat digunakan untuk konsumsi model.SentimentModel.mbconfig
: File ini adalah file JSON yang melacak konfigurasi dan hasil dari pelatihan Anda.SentimentModel.training.cs
: File ini berisi alur pelatihan (transformasi data, algoritma, dan parameter algoritma) yang digunakan untuk melatih model akhir.SentimentModel.zip
: File ini adalah model ML.NET terlatih, yang merupakan file zip yang diserialisasi.
Untuk mencoba model, Anda dapat menjalankan aplikasi konsol untuk memprediksi sentimen pernyataan tunggal dengan model.
Gunakan model Anda
Langkah terakhir adalah menggunakan model terlatih Anda di aplikasi pengguna akhir.
-
Ganti kode
Program.cs
di proyekmyMLApp
Anda dengan kode berikut:Program.csusing MyMLApp; // Add input data var sampleData = new SentimentModel.ModelInput() { Col0 = "This restaurant was wonderful." }; // Load model and predict output of sample data var result = SentimentModel.Predict(sampleData); // If Prediction is 1, sentiment is "Positive"; otherwise, sentiment is "Negative" var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative"; Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");
-
Jalankan
myMLApp
(pilih Ctrl+F5 atau Debug > Mulai Tanpa Penelusuran Kesalahan). Anda akan melihat output berikut, memprediksi apakah pernyataan input positif atau negatif.
CLI ML.NET telah membuat model dan kode terlatih untuk Anda, sehingga sekarang Anda dapat menggunakan model di aplikasi .NET (misalnya, aplikasi konsol SentimentModel
) dengan mengikuti langkah-langkah berikut:
- Di baris perintah, navigasikan ke direktori
consumeModelApp
.Terminalcd SentimentModel
-
Buka
Program.cs
di editor kode apa pun dan periksa kodenya. Kode harus terlihat mirip dengan berikut ini:Program.csusing System; namespace SentimentModel.ConsoleApp { class Program { static void Main(string[] args) { // Add input data SentimentModel.ModelInput sampleData = new SentimentModel.ModelInput() { Col0 = @"Wow... Loved this place." }; // Make a single prediction on the sample data and print results var predictionResult = SentimentModel.Predict(sampleData); Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n"); Console.WriteLine($"Col0: @{"Wow... Loved this place."}"); Console.WriteLine($"Col1: {1F}"); Console.WriteLine($"\n\nPredicted Col1: {predictionResult.PredictedLabel}\n\n"); Console.WriteLine("=============== End of process, hit any key to finish ==============="); Console.ReadKey(); } } }
-
Jalankan
SentimentModel.ConsoleApp
Anda. Anda dapat melakukan ini dengan menjalankan perintah berikut di terminal (pastikan Anda berada dalam direktoriSentimentModel
):Terminaldotnet run
Output akan terlihat seperti ini:
TerminalUsing model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data... Col0: Wow... Loved this place. Col1: 1 Class Score ----- ----- 1 0.9651076 0 0.034892436 =============== End of process, hit any key to finish ===============
Langkah berikutnya
Selamat, Anda telah membuat model pembelajaran mesin pertama dengan Builder Model ML.NET!
Setelah mendapatkan dasar-dasarnya, lanjutkan dengan modul pembelajaran mandiri pada Microsoft Learn, tempat Anda akan menggunakan data sensor untuk mendeteksi apakah perangkat manufaktur rusak.
Microsoft Learn: Latih model pemeliharaan prediktif
ML.NET untuk Pemula
Izinkan Luis memperkenalkan konsep-konsep pembelajaran mesin & AI, menjelaskan untuk apa saja dapat digunakan, dan memandu Anda dalam memulai OpenAI, Layanan Azure AI, dan ML.NET:
Anda mungkin juga tertarik dengan...
Selamat, Anda telah membuat model pembelajaran mesin pertama Anda dengan ML.NET CLI!
Setelah menggunakan CLI ML.NET untuk Klasifikasi (khususnya analisis sentimen), Anda dapat mencoba skenario lain. Cobalah skenario Regresi (khususnya prediksi harga) menggunakan kumpulan data Tarif Taksi untuk terus membuat model ML.NET dengan CLI ML.NET.
Unduh himpunan data Tarif Taksi
ML.NET untuk Pemula
Izinkan Luis memperkenalkan konsep pembelajaran mesin & AI, menjelaskan untuk apa saja dapat digunakan, dan memandu Anda dalam memulai OpenAI, Layanan Azure AI, dan ML.NET:
Anda mungkin juga tertarik dengan...