ML PascalABC.NET
ML PascalABC.NET — библиотека анализа данных и машинного обучения для PascalABC.NET.
- Работа с табличными данными
- Классические ML-модели
- Метрики качества и валидация моделей
- Без внешних зависимостей
Возможности
📊 Табличные данные
Загрузка CSV, выбор столбцов, фильтрация, группировка и объединение таблиц.
🔧 Подготовка признаков
Масштабирование, кодирование категорий и обработка пропусков.
🧠 ML-модели
LogisticRegression, KNN, DecisionTree, RandomForest, GradientBoosting, KMeans и DBSCAN.
🧩 Конвейеры
Объединение преобразований и моделей в единый ML-процесс.
📈 Визуализация
Графики, диаграммы рассеяния и матрицы попарных графиков для анализа данных.
🗃️ Наборы данных
Встроенные учебные датасеты для быстрых примеров и проверки моделей.
Примеры
Заголовок раздела «Примеры»// Загрузка, фильтрация и сортировка датасетаuses MLABC;
begin var df := DataFrame.FromCsvText(''' name,age,score Алиса,20,85 Боб,22,90 Чарли,21,78 ''');
df.Filter(row -> row['age'] >= 21) .SortBy('score') .Print;end.Вывод
name age scoreЧарли 21 78 Боб 22 90// Матрица попарных графиков для датасета Irisuses MLABC, PlotML;
begin var ds := Datasets.Iris; var df := ds.Data;
var X := df.ToMatrix(ds.Features); var y := df.EncodeLabels(ds.Target);
Plot.PairPlot(X, y, ds.Features);end.Вывод

// Подготовка данных: заполнение пропусков// и кодирование категориального столбцаuses MLABC;
begin var df := DataFrame.FromCsvText(''' name,age,city Алиса,20,Москва Боб,NA,Казань Чарли,22,Москва ''');
var imputer := new Imputer(['age']); df := imputer.FitTransform(df);
var encoder := new OrdinalEncoder('city'); df := encoder.FitTransform(df);
df.Print;end.Вывод
name age cityАлиса 20.00 0 Боб 21.00 1Чарли 22.00 0// Разбиение на тренировочную и тестовую выборки,// обучение модели и оценка точности предсказанияuses MLABC;
begin var ds := Datasets.Iris; var df := ds.Data;
var X := df.ToMatrix(ds.Features); var y := df.EncodeLabels(ds.Target);
var (Xtrain, Xtest, ytrain, ytest) := Validation.TrainTestSplit(X, y, testRatio := 0.2, seed := 2);
var model := new LogisticRegression(); model.Fit(Xtrain, ytrain);
var pred := model.Predict(Xtest); var acc := Metrics.Accuracy(ytest, pred);
Println('Accuracy:', acc:0:3);end.Вывод
Accuracy: 0.967// Конвейер машинного обучения: кодирование категориального признака// и шкалирование признаков разных масштабов// Без StandardScaler точность хужеuses MLABC;
begin var df := Datasets.MoscowHousing.Data;
var (trainDf, testDf) := df.TrainTestSplit(0.2, seed := 1);
var pipe := DataPipeline.BuildClassification( 'rooms', ['price', 'area', 'renovation'], new OrdinalEncoder('renovation'), new StandardScaler, new KNNClassifier(5) );
pipe.Fit(trainDf);
var pred := pipe.Predict(testDf); var y := pipe.GetEncodedLabels(testDf);
Println('Accuracy =', Metrics.Accuracy(y, pred):0:3);end.Вывод
Accuracy = 0.653Без StandardScaler:Accuracy = 0.470