Open cyberprophet opened 1 year ago
using Microsoft.ML; using Microsoft.ML.AutoML;
class Program
{
static void Main(string[] args)
{
// 데이터를 불러옵니다.
var context = new MLContext();
var data = context.Data.LoadFromTextFile
// AutoML 구성을 설정합니다.
var experimentSettings = new RegressionExperimentSettings
{
MaxExperimentTimeInSeconds = 60, // 최대 실행 시간
OptimizingMetric = RegressionMetric.RSquared // 최적화할 메트릭
};
// AutoML 실험을 실행합니다.
var experiment = context.Auto().CreateRegressionExperiment(experimentSettings);
var result = experiment.Execute(data);
// 최상의 모델을 가져옵니다.
var bestModel = result.BestRun.Model;
// 예측을 수행합니다.
var predictionEngine = context.Model.CreatePredictionEngine<IrisData, IrisPrediction>(bestModel);
var prediction = predictionEngine.Predict(new IrisData { SepalLength = 5.1f, SepalWidth = 3.5f, PetalLength = 1.4f, PetalWidth = 0.2f });
// 결과 출력
Console.WriteLine($"Predicted Label: {prediction.Prediction}");
}
}
// 데이터 클래스 class IrisData { [LoadColumn(0)] public float SepalLength;
[LoadColumn(1)]
public float SepalWidth;
[LoadColumn(2)]
public float PetalLength;
[LoadColumn(3)]
public float PetalWidth;
[LoadColumn(4)]
public string Label;
}
// 예측 클래스 class IrisPrediction { [ColumnName("Score")] public float Prediction; }
// 1. Initalize ML.NET environment MLContext mlContext = new MLContext();
// 2. Load training data IDataView trainData = mlContext.Data.LoadFromTextFile("taxi-fare-train.csv", separatorChar:',');
// 3. Add data transformations var dataProcessPipeline = mlContext.Transforms.Categorical.OneHotEncoding( outputColumnName:"PaymentTypeEncoded", "PaymentType") .Append(mlContext.Transforms.Concatenate(outputColumnName:"Features", "PaymentTypeEncoded","PassengerCount","TripTime","TripDistance"));
// 4. Add algorithm var trainer = mlContext.Regression.Trainers.Sdca(labelColumnName: "FareAmount", featureColumnName: "Features");
var trainingPipeline = dataProcessPipeline.Append(trainer);
// 5. Train model var model = trainingPipeline.Fit(trainData);
// 6. Evaluate model on test data IDataView testData = mlContext.Data.LoadFromTextFile("taxi-fare-test.csv");
IDataView predictions = model.Transform(testData);
var metrics = mlContext.Regression.Evaluate(predictions,"FareAmount");
// 7. Predict on sample data and print results var input = new ModelInput { PassengerCount = 1, TripTime = 1150, TripDistance = 4, PaymentType = "CRD" };
var result = mlContext.Model.CreatePredictionEngine<ModelInput,ModelOutput>(model).Predict(input);
Console.WriteLine($"Predicted fare: {result.FareAmount}\nModel Quality (RSquared): {metrics.RSquared}");