gpt4 book ai didi

machine-learning - 将 Logistic 回归模型拟合到 MNIST 数据需要很长时间

转载 作者:行者123 更新时间:2023-11-30 09:04:36 34 4
gpt4 key购买 nike

enter image description here我正在尝试将 sklearn 中的 LogisticRegression 模型应用到 MNIST 数据集,并且我已将训练-测试数据分成 70-30 个部分。

但是,当我简单地说model.fit(train_x, train_y) 需要很长时间。

启动逻辑回归时我没有添加任何参数。

代码:

import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_mldata
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

import tempfile

test_data_home = tempfile.mkdtemp()
mnist = fetch_mldata('MNIST original', data_home = test_data_home)


x_train, x_test, y_train, y_test = train_test_split(mnist.data, mnist.target, test_size = 0.30, random_state = 0)

lr = LogisticRegression(penalty = 'l2')
lr.fit(x_train, y_train)

最佳答案

您提出的问题似乎相当模糊,但我相当确定您的逻辑回归没有收敛。我不太清楚为什么你现在要加入“L2”惩罚项,除非你担心过度拟合。无论如何,如果你看看 sklearn docs ,它说:

优化问题中使用的算法。

对于小型数据集,“liblinear”是一个不错的选择,而“sag”和“saga”对于大型数据集来说速度更快。对于多类问题,只有“newton-cg”、“sag”、“saga”和“lbfgs”处理多项式损失; “liblinear”仅限于一对一方案。‘newton-cg’、‘lbfgs’和‘sag’仅处理 L2 惩罚,而‘liblinear’和‘saga’处理 L1 惩罚。请注意,“sag”和“saga”的快速收敛仅在具有大致相同规模的特征上得到保证。您可以使用 sklearn.preprocessing 中的缩放器预处理数据。

我会立即建议您添加参数“solver = sag”(或任何其他可以处理 L2 惩罚的解算器),因为文档明确指出只有某些解算器可以处理 L2 惩罚,并且仅默认解算器 liblinear处理 L1 惩罚。有一篇关于逻辑回归求解器的非常好的文章,您可以针对您的数据集查看:
Solvers for Logistic Regression

请记住,L2 和 L1 正则化是为了处理过度拟合,因此,您甚至可以更改 lr 定义中的 C 参数。请查看 sklearn 文档以获取更多信息。希望这可以帮助。

关于machine-learning - 将 Logistic 回归模型拟合到 MNIST 数据需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55859491/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com