|
public void PlattCalibratorOnnxConversionTest() |
|
{ |
|
var mlContext = new MLContext(seed: 1); |
|
string dataPath = GetDataPath("breast-cancer.txt"); |
|
// Now read the file (remember though, readers are lazy, so the actual reading will happen when the data is accessed). |
|
var dataView = mlContext.Data.LoadFromTextFile<BreastCancerBinaryClassification>(dataPath, separatorChar: '\t', hasHeader: true); |
|
List<IEstimator<ITransformer>> estimators = new List<IEstimator<ITransformer>>() |
|
{ |
|
mlContext.BinaryClassification.Trainers.AveragedPerceptron(), |
|
mlContext.BinaryClassification.Trainers.FastForest(), |
|
mlContext.BinaryClassification.Trainers.FastTree(), |
|
mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression(), |
|
mlContext.BinaryClassification.Trainers.LinearSvm(), |
|
mlContext.BinaryClassification.Trainers.Prior(), |
|
mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(), |
|
mlContext.BinaryClassification.Trainers.SdcaNonCalibrated(), |
|
mlContext.BinaryClassification.Trainers.SgdCalibrated(), |
|
mlContext.BinaryClassification.Trainers.SgdNonCalibrated(), |
|
mlContext.BinaryClassification.Trainers.SymbolicSgdLogisticRegression(), |
|
}; |
|
if (Environment.Is64BitProcess) |
|
{ |
|
estimators.Add(mlContext.BinaryClassification.Trainers.LightGbm()); |
|
} |
|
|
|
var initialPipeline = mlContext.Transforms.ReplaceMissingValues("Features"). |
|
Append(mlContext.Transforms.NormalizeMinMax("Features")); |
|
foreach (var estimator in estimators) |
|
{ |
|
var pipeline = initialPipeline.Append(estimator).Append(mlContext.BinaryClassification.Calibrators.Platt()); |
|
var onnxFileName = $"{estimator}-WithPlattCalibrator.onnx"; |
|
|
|
TestPipeline(pipeline, dataView, onnxFileName, new ColumnComparison[] { new ColumnComparison("Score", 3), new ColumnComparison("PredictedLabel"), new ColumnComparison("Probability", 3) }); |
|
} |
|
Done(); |
|
} |
For tracking purposes. The following CalibratorEstimators do not have ONNX model conversion support:
FixedPlattCalibratorEstimatorIsotonicCalibratorEstimatorNaiveCalibratorEstimatorPlattCalibratorEstimatordoes have ONNX export support. This issue will be closed when the remaining calibrator estimators have ONNX export support, and are being tested for ONNX conversion in the manner below asPlattCalibratorEstimatoris being tested:machinelearning/test/Microsoft.ML.Tests/OnnxConversionTest.cs
Lines 265 to 300 in 81357ba