首页 > 解决方案 > 使用 Matplotlib 理解和绘制 L2 正则化

问题描述

我正在尝试学习 L2 正则化并使用 matplotlib 绘制它。

我正在关注官方 sklearn 文档。我创建了一个示例代码来看看它是如何工作的。下面是我的代码。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import Ridge

lambda_value = 0.1

X = np.sort(np.random.uniform(0, 1, 100))[:, np.newaxis]

N = np.random.normal(0, 1)

y = np.sin(2*np.pi*X) + N * 0.1

X_plot = np.linspace(0, 1, 100)

X_train, y_train, X_test, y_test = train_test_split(X, y, test_size=0.5)

train_err = []
test_err = []

pipeline = make_pipeline(PolynomialFeatures(degree=9),Ridge(alpha=lambda_value))
pipeline.fit(X_train, y_train)

y_train_preds = pipeline.predict(X_train)
y_test_preds = pipeline.predict(X_test)

plt.scatter(X, y, color='b')
plt.plot(X_test, y_test_preds, color='r')
plt.show()

当我绘制这个时,它看起来像这样。 在此处输入图像描述

为什么它适合这样(红色线)?据我了解,它应该是一条线。

预测错了吗?或密谋?

我在哪里做错了?

标签: matplotlibmachine-learningscikit-learn

解决方案


推荐阅读