/
LeonBlue
/
ML_algos_from_scratch_python
Обзор
Документация
Войти
/
LeonBlue
/
ML_algos_from_scratch_python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
examples/logistic_regression_example.py
72 строки
2 KB
LeonBlue
Минимальный набор алгоритмов для начала работы
03 дек 2025, 18:50
03 дек 2025, 18:50
28b87a5
Код
Авторство
О чём код?
""" Пример использования логистической регрессии """ import numpy as np import sys import os # Добавляем путь к корню проекта sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from ml_algorithms.supervised import LogisticRegression from ml_algorithms.utils.metrics import accuracy_score from ml_algorithms.utils.preprocessing import StandardScaler def main(): # Генерация синтетических данных для бинарной классификации np.random.seed(42) n_samples = 200 # Класс 0 X_class0 = np.random.randn(n_samples // 2, 2) + np.array([-2, -2]) y_class0 = np.zeros(n_samples // 2) # Класс 1 X_class1 = np.random.randn(n_samples // 2, 2) + np.array([2, 2]) y_class1 = np.ones(n_samples // 2) # Объединение данных X = np.vstack([X_class0, X_class1]) y = np.hstack([y_class0, y_class1]) # Перемешивание indices = np.random.permutation(n_samples) X = X[indices] y = y[indices] # Разделение на обучающую и тестовую выборки split_idx = int(0.8 * n_samples) X_train, X_test = X[:split_idx], X[split_idx:] y_train, y_test = y[:split_idx], y[split_idx:] # Нормализация данных scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # Обучение модели model = LogisticRegression(learning_rate=0.1, max_iter=1000) model.fit(X_train_scaled, y_train) # Предсказания y_pred = model.predict(X_test_scaled) y_pred_proba = model.predict_proba(X_test_scaled) # Оценка качества accuracy = accuracy_score(y_test, y_pred) print("Логистическая регрессия") print("=" * 50) print(f"Коэффициенты: {model.coef_}") print(f"Свободный член: {model.intercept_:.4f}") print(f"Точность: {accuracy:.4f}") print(f"\nПримеры вероятностей для первых 5 тестовых образцов:") for i in range(min(5, len(y_test))): print(f" Образец {i+1}: истинный класс={y_test[i]}, " f"предсказанный класс={y_pred[i]}, вероятность={y_pred_proba[i]:.4f}") if __name__ == "__main__": main()