В предыдущей статье мы видели, как регуляризация помогает избежать переобучения в наборе данных. Сегодня мы узнаем больше о типах регуляризации. Есть регуляризация L1 и L2. С точки зрения линейной регрессии, регуляризация L1 — это регуляризация лассо, а регуляризация L2 — это регуляризация хребта.
- Импорт библиотек
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LogisticRegression
2. Чтение набора данных PIMA Indians Diabetes CSV.
df = pd.read_csv("/kaggle/input/pima-indians-diabetes-database/diabetes.csv") print(df.head()) print("Shape of the Dataset: {}".format(df.shape))
3. Предварительная обработка и разделение обучающих и тестовых данных.
# Segregating the Feature and Target X = df.drop("Outcome", axis=1).values y = df["Outcome"].values # Train Test Split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42, stratify=y) print("Shape of Train Features: {}".format(X_train.shape)) print("Shape of Test Features: {}".format(X_test.shape)) print("Shape of Train Target: {}".format(y_train.shape)) print("Shape of Test Target: {}".format(y_test.shape))
4. Столбцы набора данных
# Dataset Columns columns = df.columns[:-1] print("Columns in the dataset excluding the target column: {}".format(columns))
5. Определение функции графика
def plot_coefficient(xindex, yindex, xlabel, ylabel, title): plt.plot(xindex, yindex) plt.title(title) plt.xticks(rotation=90) plt.xlabel(xlabel) plt.ylabel(ylabel) plt.grid() plt.show()
6. Построение регуляризованной логистической регрессии L1.
plot_coefficient(columns, l1_lr.coef_.flatten(), "Feature", "Coefficient Value", "L1 Regularization")
7. Построение регуляризованной логистической регрессии L2.
plot_coefficient(columns, l2_lr.coef_.flatten(), "Feature", "Coefficient Value", "L2 Regularization")
8. Построение вышеприведенных графиков на одном графике —
plt.plot(columns, l1_lr.coef_.flatten(), label="L1 Regularization") plt.plot(columns, l2_lr.coef_.flatten(), label="L2 Regularization") plt.legend() plt.title("Feature Coefficient Value after Regularization") plt.xlabel("Feature") plt.ylabel("Coefficient Value") plt.xticks(rotation=90) plt.grid() plt.show()
Как мы знаем, регуляризация борется с переоснащением. Регуляризация приводит к снижению точности набора обучающих данных за счет обобщения, что упрощает подгонку моделей к невидимым/новым данным. В общем, регуляризация L1 сводит важность многих функций к 0, в то время как регуляризация L2 уменьшает важность функции. В нашей реализации мы увидели, что важность функции регуляризации L1 ближе к 0, чем важность функции регуляризации L2.
Я ценю вас и время, которое вы потратили на чтение этого дня!
Linkedin: https://www.linkedin.com/in/saurav-agrawal-137500214/
StackOverFlow: https://stackoverflow.com/users/11842006/saurav-agrawal
Электронная почта: [email protected]