Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pelajari cara menggunakan model terlatih untuk membuat prediksi.
Membuat model data
Data masukan
public class HousingData
{
[LoadColumn(0)]
public float Size { get; set; }
[LoadColumn(1, 3)]
[VectorType(3)]
public float[] HistoricalPrices { get; set; }
[LoadColumn(4)]
[ColumnName("Label")]
public float CurrentPrice { get; set; }
}
Data output
Seperti nama kolom input Features
dan Label
, ML.NET memiliki nama default untuk kolom nilai yang diprediksi yang dihasilkan oleh model. Nama dapat berbeda tergantung pada tugas.
Karena algoritma yang digunakan dalam sampel ini adalah algoritma regresi linier, nama default kolom output Score
, yang ditentukan oleh atribut ColumnName
pada properti PredictedPrice
.
class HousingPrediction
{
[ColumnName("Score")]
public float PredictedPrice { get; set; }
}
Menyiapkan alur prediksi
Baik membuat prediksi tunggal atau batch, alur prediksi perlu dimuat ke dalam aplikasi. Alur ini berisi transformasi pra-pemrosesan data dan model terlatih. Cuplikan kode berikut memuat alur prediksi dari file bernama model.zip
.
//Create MLContext
MLContext mlContext = new MLContext();
// Load Trained Model
DataViewSchema predictionPipelineSchema;
ITransformer predictionPipeline = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
Prediksi tunggal
Untuk membuat satu prediksi, buat PredictionEngine
menggunakan alur prediksi yang dimuat.
// Create PredictionEngines
PredictionEngine<HousingData, HousingPrediction> predictionEngine = mlContext.Model.CreatePredictionEngine<HousingData, HousingPrediction>(predictionPipeline);
Kemudian, gunakan metode Predict
dan masukkan data input Anda sebagai parameter. Perhatikan bahwa menggunakan metode Predict
tidak mengharuskan input menjadi IDataView
. Itu karena dengan mudah mengintegrasikan pengelolaan tipe data masukan sehingga Anda dapat meneruskan objek dari tipe data masukan tersebut. Selain itu, karena CurrentPrice
adalah target atau label yang coba Anda prediksi menggunakan data baru, diasumsikan tidak ada nilai untuk itu saat ini.
// Input Data
HousingData inputData = new HousingData
{
Size = 900f,
HistoricalPrices = new float[] { 155000f, 190000f, 220000f }
};
// Get Prediction
HousingPrediction prediction = predictionEngine.Predict(inputData);
Jika Anda mengakses properti Score
objek prediction
, Anda harus mendapatkan nilai yang mirip dengan 150079
.
Saran
PredictionEngine
tidak aman untuk utas. Selain itu, Anda harus membuat instansnya di mana pun diperlukan dalam aplikasi Anda. Seiring bertambahnya aplikasi Anda, proses ini dapat menjadi tidak dapat diatur. Untuk meningkatkan performa dan keamanan utas, gunakan kombinasi injeksi dependensi dan layanan PredictionEnginePool, yang membuat ObjectPool
objek PredictionEngine
untuk digunakan di seluruh aplikasi Anda.
Misalnya tentang cara menggunakan layanan
Untuk informasi selengkapnya, lihat injeksi Dependensi di ASP.NET Core.
Beberapa prediksi (IDataView)
Diberikan data berikut, muatlah ke dalam IDataView
. Dalam hal ini, nama IDataView
adalah inputData
. Karena CurrentPrice
adalah target atau label yang coba Anda prediksi menggunakan data baru, diasumsikan tidak ada nilai untuk saat ini.
// Actual data
HousingData[] housingData = new HousingData[]
{
new HousingData
{
Size = 850f,
HistoricalPrices = new float[] { 150000f, 175000f, 210000f }
},
new HousingData
{
Size = 900f,
HistoricalPrices = new float[] { 155000f, 190000f, 220000f }
},
new HousingData
{
Size = 550f,
HistoricalPrices = new float[] { 99000f, 98000f, 130000f }
}
};
Kemudian, gunakan metode Transform
untuk menerapkan transformasi data dan menghasilkan prediksi.
// Predicted Data
IDataView predictions = predictionPipeline.Transform(inputData);
Periksa nilai yang diprediksi dengan menggunakan metode GetColumn
.
// Get Predictions
float[] scoreColumn = predictions.GetColumn<float>("Score").ToArray();
Nilai yang diprediksi dalam kolom skor harus menyerupai nilai berikut:
Pengamatan | Prediksi |
---|---|
1 | 144638.2 |
2 | 150079.4 |
3 | 107789.8 |
Beberapa prediksi (PredictionEnginePool)
Untuk membuat beberapa prediksi dengan menggunakan PredictionEnginePool , Anda dapat menggunakan IEnumerable
yang berisi beberapa instans input model Anda. Misalnya, ambil IEnumerable<HousingInput>
dan terapkan metode Predict
ke setiap elemen menggunakan metode Select
LINQ.
Sampel kode ini mengasumsikan Anda memiliki PredictionEnginePool
IEnumerable<HousingPrediction> predictions = housingData.Select(input => predictionEnginePool.Predict(input));
Hasilnya adalah IEnumerable
yang berisi contoh dari prediksi Anda. Dalam hal ini, akan menjadi IEnumerable<HousingPrediction>
.