返回介绍

使用 Sklearn 线性回归重构图像

发布于 2025-01-01 12:38:40 字数 2093 浏览 0 评论 0 收藏 0

from sklearn.linear_model import Lasso
from sklearn.linear_model import Ridge

# 用 L2(岭)惩罚重建
rgr_ridge = Ridge(alpha=0.2)
rgr_ridge.fit(proj_operator, proj.ravel())
rec_l2 = rgr_ridge.coef_.reshape(l, l)
plt.imshow(rec_l2, cmap='gray')

# <matplotlib.image.AxesImage at 0x7efcd453d5c0>

18*128

# 2304

18 x 128 x 128 x 128

L1 范数产生稀疏性

单位球 \lVert x \rVert_1 = 1 在 L1 范数中是菱形。 它的极值是角:

来源

类似的视角是看损失函数的轮廓:

来源

\lVert \cdot \rVert_1 是 L1 范数。 最小化 L1 范数会产生稀疏值。 对于矩阵,L1 范数等于最大绝对列范数。

\lVert \cdot \rVert_* 是核范数,它是奇异值的 L1 范数。 试图最小化它会产生稀疏的奇异值 -> 低秩。

proj_operator.shape

# (2304, 16384)

# 使用 L1(Lasso)惩罚重建 α 的最佳值
# 使用 LassoCV 交叉验证来确定
rgr_lasso = Lasso(alpha=0.001)
rgr_lasso.fit(proj_operator, proj.ravel())
rec_l1 = rgr_lasso.coef_.reshape(l, l)
plt.imshow(rec_l1, cmap='gray')

# <matplotlib.image.AxesImage at 0x7efcd4919cf8>

这里的 L1 惩罚明显优于 L2 惩罚!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文