Eğitilmiş bir modelle tahminde bulunma
Tahminde bulunmak için eğitilmiş modeli kullanmayı öğrenin
Veri modelleri oluşturma
Giriş verileri
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; }
}
Çıktı verileri
Features
ve Label
giriş sütunu adları gibi ML.NET de bir model tarafından üretilen tahmin edilen değer sütunları için varsayılan adlara sahiptir. Göreve bağlı olarak ad farklı olabilir.
Bu örnekte kullanılan algoritma doğrusal bir regresyon algoritması olduğundan, çıkış sütununun Score
varsayılan adı özelliğindeki ColumnName
PredictedPrice
özniteliği tarafından tanımlanır.
class HousingPrediction
{
[ColumnName("Score")]
public float PredictedPrice { get; set; }
}
Tahmin işlem hattı ayarlama
Tek veya toplu tahminde bulunarak tahmin işlem hattının uygulamaya yüklenmesi gerekir. Bu işlem hattı hem veri ön işleme dönüştürmelerini hem de eğitilen modeli içerir. Aşağıdaki kod parçacığı, adlı model.zip
bir dosyadan tahmin işlem hattını yükler.
//Create MLContext
MLContext mlContext = new MLContext();
// Load Trained Model
DataViewSchema predictionPipelineSchema;
ITransformer predictionPipeline = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
Tek tahmin
Tek bir tahminde bulunmak için yüklenen tahmin işlem hattını kullanarak bir PredictionEngine
oluşturun.
// Create PredictionEngines
PredictionEngine<HousingData, HousingPrediction> predictionEngine = mlContext.Model.CreatePredictionEngine<HousingData, HousingPrediction>(predictionPipeline);
Ardından yöntemini kullanın Predict
ve giriş verilerinizi parametre olarak geçirin. yöntemini kullanmanın Predict
girişin bir IDataView
olması gerekmediğine dikkat edin. Bunun nedeni, giriş veri türünün nesnesini geçirebilmeniz için giriş veri türü işlemesini kolayca içselleştirmesidir. Ayrıca, yeni verileri kullanarak tahminde bulunmaya çalıştığınız hedef veya etiket olduğundan CurrentPrice
, şu anda bunun için bir değer olmadığı varsayılır.
// Input Data
HousingData inputData = new HousingData
{
Size = 900f,
HistoricalPrices = new float[] { 155000f, 190000f, 220000f }
};
// Get Prediction
HousingPrediction prediction = predictionEngine.Predict(inputData);
nesnesinin özelliğine Score
prediction
erişiyorsa, benzeri 150079
bir değer almalısınız.
İpucu
PredictionEngine
iş parçacığı güvenli değildir. Ayrıca, uygulamanızın içinde gerekli olduğu her yerde bunun bir örneğini oluşturmanız gerekir. Uygulamanız büyüdükçe bu işlem yönetilemez hale gelebilir. İyileştirilmiş performans ve iş parçacığı güvenliği için bağımlılık ekleme ve PredictionEnginePool hizmetinin bir bileşimini kullanın. Bu hizmet, uygulamanız genelinde kullanılmak üzere bir ObjectPool
nesne oluşturur PredictionEngine
.
PredictionEnginePool hizmetini kullanma örnekleri için bkz. Web API'sine model dağıtma ve modeli Azure İşlevleri dağıtma.
Daha fazla bilgi için bkz . ASP.NET Core'da bağımlılık ekleme.
Birden çok tahmin (IDataView)
Aşağıdaki verileri göz önünde bulundurarak bir içine IDataView
yükleyin. Bu durumda, öğesinin IDataView
adı şeklindedir inputData
. CurrentPrice
Yeni verileri kullanarak tahminde bulunmaya çalıştığınız hedef veya etiket olduğundan, şu anda bunun için bir değer olmadığı varsayılır.
// 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 }
}
};
Ardından, veri dönüşümlerini uygulamak ve tahminler oluşturmak için yöntemini kullanın Transform
.
// Predicted Data
IDataView predictions = predictionPipeline.Transform(inputData);
yöntemini kullanarak GetColumn
tahmin edilen değerleri inceleyin.
// Get Predictions
float[] scoreColumn = predictions.GetColumn<float>("Score").ToArray();
Puan sütunundaki tahmin edilen değerler aşağıdaki gibi görünmelidir:
Gözlem | Tahmin |
---|---|
1 | 144638.2 |
2 | 150079.4 |
3 | 107789.8 |
Birden çok tahmin (PredictionEnginePool)
PredictionEnginePool kullanarak birden çok tahminde bulunmak için model girişinizin birden çok örneğini içeren bir IEnumerable
tahmin alabilirsiniz. Örneğin, linq IEnumerable<HousingInput>
Select
yöntemini kullanarak ve yöntemini her öğeye uygulayınPredict
.
Bu kod örneği, adlı bir PredictionEnginePool ve adlı predictionEnginePool
housingData
bir IEnumerable<HousingData>
sahip olduğunuzu varsayar.
IEnumerable<HousingPrediction> predictions = housingData.Select(input => predictionEnginePool.Predict(input));
Sonuç, tahminlerinizin örneklerini içeren bir IEnumerable
sonuçdur. Bu durumda değer IEnumerable<HousingPrediction>
olacaktır.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin