sklearn SGDClassifier 无法实现确定性的训练或预测

我正在使用 sklearn.linear_model.SGDClassifier 训练一个简单的线性模型。我注意到在完全相同的训练集上进行训练时,有时会得到截然不同的结果。我正在进行一个实验,尝试固定特征构建流程和样本选择,看看初始随机状态对分类器结果的影响。因此,我尝试多次循环运行相同的拟合和预测代码,每次重新实例化分类器对象并将种子设置为123456。

    classif['classifier'].random_state = 123456    classif['classifier'].fit(LABELED, LABELS)       y_test = classif['classifier'].predict(TEST_LABELED[:1000])                                                                                                                                                                                  classif['accuracy_over_iter'] = np.append(classif['accuracy_over_iter'], accuracy_score(TEST_LABELS[:1000], y_test))      classif["score"] = accuracy_score(TEST_LABELS[:1000], y_test)    print(f'{classif["description"]} score {classif["score"]}')    

之后,每个训练的分类器最终都会产生略有不同的预测。我是否没有正确设置种子?

reflectance_standard_scaler__SGD score 0.642    reflectance_standard_scaler__SGD score 0.644  reflectance_standard_scaler__SGD score 0.632 reflectance_standard_scaler__SGD score 0.623 reflectance_standard_scaler__SGD score 0.66reflectance_standard_scaler__SGD score 0.601 reflectance_standard_scaler__SGD score 0.671

回答:

看起来 sklearn 仅在实例化时检查 random_state 变量的状态。在这种情况下,我在别处实例化,然后再设置状态,这已经太晚了,因为 sklearn 已经创建了自己的随机数生成器。

在实例化时传递 random_state 可以得到确定性的结果。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注