【问题标题】:Getting completely different weight values when using sklearn.linear_model.SGDClassifier with different random_state value for Logistic Regression使用具有不同 random_state 值的 sklearn.linear_model.SGDClassifier 进行逻辑回归时获得完全不同的权重值
【发布时间】:2021-06-24 17:43:34
【问题描述】:

我相信,随着随机状态的不同,权重应该会略有变化。 使用 random_state = None 在每次运行中获得不同权重的原因可能是什么

以下是几次运行的权重值(包含 3 个特征) 1)4.67100318,1.26129186,17.26554955 2)3.39793468,2.10265234,18.42484435 3)-2.08082186,1.25948975,10.37120852 4)3.71122156,0.93510126,16.63007864

由于这种波动,我不确定应该使用哪个 random_state,这会在执行特征选择时造成麻烦。 请注意,我在执行标准化后使用数据。

我正在使用如下非常简单的代码来训练我的模型,因为我的数据仅包含 200 行具有 3 个特征的数据

from sklearn.linear_model import SGDClassifier
SGDClf = SGDClassifier(loss='log',random_state=1)
SGDClf.fit(X,Y)

【问题讨论】:

  • 你做过交叉验证吗?这有助于减少波动。并展示您使用的代码,以便我们提供更多帮助。
  • 嗨 Malo,我不确定如何在 SGDClassifier 中应用 CV。据我了解,我们执行 CV 以进行超参数调整。这里的超参数是什么?我是机器学习领域的新手,如果您有这种感觉,请耐心等待我提出的愚蠢问题。

标签: python


【解决方案1】:

Machine learning models will produce different results on same dataset, random_state = None,
这些模型会生成一个名为 random seed 的随机数序列,用于从给定数据集生成测试、验证和训练数据集的过程中,例如:random_state = 1
将模型的种子配置为设定值将确保(权重)结果可重现。

SGDClassifier() 打乱输入的数据:

传递的(随机状态)值将影响 函数返回的结果(fit、split 或任何其他函数 像 k_means)。 - random state doc

希望对你有帮助

【讨论】:

  • 嗨,Alex,我将如何确定哪些权重是正确的......因为每次我以不同的随机状态运行时,权重结果都没有相关性
  • 它们都是正确的“发现”,您训练模型的次数越多(使用不同的 X 和 y(训练数据集)),模型预测权重的能力就越好。换句话说,您的体重结果将变得越准确。
  • 感谢 Alex 的宝贵回答
猜你喜欢
  • 1970-01-01
  • 2021-10-10
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 2018-09-24
  • 2012-02-09
  • 2018-04-24
相关资源
最近更新 更多