为什么随机种子不能使 Python 中的结果保持不变

2023-12-28

我使用以下代码。我希望使用相同的随机种子获得相同的结果。我使用相同的随机种子(在本例中为 1)并得到不同的结果。 这是代码:

import pandas as pd
import numpy as np
from random import seed
# Load scikit's random forest classifier library
from sklearn.ensemble import RandomForestClassifier

from sklearn.model_selection import train_test_split
seed(1) ### <-----

file_path = 'https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data'
dataset2 = pd.read_csv(file_path, header=None, sep=',')

from sklearn import preprocessing
le = preprocessing.LabelEncoder()

#Encoding
y = le.fit_transform(dataset2[60])
dataset2[60] = y
train, test = train_test_split(dataset2, test_size=0.1)
y = train[60] 
y_test = test[60] 
clf = RandomForestClassifier(n_jobs=100, random_state=0)
features = train.columns[0:59] 
clf.fit(train[features], y)

# Apply the Classifier we trained to the test data
y_pred = clf.predict(test[features])

# Decode 
y_test_label = le.inverse_transform(y_test)
y_pred_label = le.inverse_transform(y_pred)


from sklearn.metrics import accuracy_score
print (accuracy_score(y_test_label, y_pred_label))

# Two following results:
# 0.761904761905
# 0.90476190476

你的代码:

import numpy as np
from random import seed
seed(1) ### <-----

设置 python 的随机种子随机类别 https://docs.python.org/3/library/random.html.

但sklearn是完全基于numpy的随机类别 https://docs.scipy.org/doc/numpy/reference/routines.random.html, as 在这里解释 http://scikit-learn.org/stable/faq.html#how-do-i-set-a-random-state-for-an-entire-execution:

为了测试和可复制性,让具有随机组件的算法中使用的伪随机数生成器的单个种子控制整个执行通常很重要。 Scikit-learn 不使用自己的全局随机状态;每当没有提供 RandomState 实例或整数随机种子作为参数时,它就依赖于 numpy 全局随机状态,可以使用 numpy.random.seed 设置。例如,要将执行的 numpy 全局随机状态设置为 42,可以在他或她的脚本中执行以下命令:

import numpy as np

np.random.seed(42)

所以一般来说你应该这样做:

np.random.seed(1)

但这只是事实的一部分,因为当小心使用所有 sklearn 组件时,通常不需要这样做,用一些种子显式调用它们!

Like ShreyasG提到过,这也适用于训练测试分割 http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么随机种子不能使 Python 中的结果保持不变 的相关文章

  • 如何在 Matplotlib 中在图框之外绘制矩形

    我想按照下图的样式生成子图的标题 标题下方应有一个灰色框 位于散点的顶部 这是我尝试过的代码 x random sample range 50 50 y random sample range 50 50 fig pyplot figure
  • 无法播种用户和角色

    我正在尝试将用户和角色植入我的数据库中 目前在 C MVC4 中使用具有自动迁移功能的 Code First 实体框架 每当我打电话 更新数据库 强制 我收到以下错误 运行种子方法 System InvalidOperationExcept
  • Arc4随机模偏置

    根据本文档 https developer apple com library mac documentation darwin reference manpages man3 arc4random 3 html arc4random un
  • C# 中的随机数 [重复]

    这个问题在这里已经有答案了 可能的重复 随机数生成器没有按我计划的方式工作 C https stackoverflow com questions 767999 random number generator not working the
  • 模拟 with 语句中使用的类

    我有一堂课有一个 exit and enter 函数 以便我可以在 with 语句中使用它 例如 with ClassName as c c do something 我现在正在尝试编写一个单元测试来测试这一点 基本上 我想测试一下do s
  • Applescript:修剪空格和回车线

    我编写了一个 AppleScript 它从用逗号分隔的文本文件中返回一个随机字符串 set some file to Macintosh HD Users Zade Library Application Support Notationa
  • `/dev/urandom` 适合模拟目的吗?

    似乎在类 Unix 系统中使用纯 C fread from dev urandom是提取高质量随机字节的最简单方法 我需要运行一个每秒需要大约 10k 32 位随机数的模拟 并且可能会运行几天 是 dev urandom可以用于此目的吗 当
  • lxml:编写增量漂亮的打印 xml

    我正在处理非常大的 XML 文件 gt 1GB 并且需要一种方法来增量写入它们 有一个顶级元素和数千个大型第二级元素 每个元素都有自己的多级层次结构 我试过这个 from lxml import etree with etree xmlfi
  • python 正则表达式 - 列表中的 re.findall()

    这是我的清单 lista u REG S 3 UMTS 0 0 RNC u REG S 3 UMTS 0 1 RNC u REG S 3 UMTS 0 2 RNC u REG S 2 GSM NORT CBSP bsc 0 0 BSC u
  • MySQL ORDER BY rand(),名称 ASC

    我想获取一个包含 1000 个用户的数据库并随机选择 20 个用户 ORDER BY rand LIMIT 20 然后按名称对结果集进行排序 我想出了以下查询not像我希望的那样工作 SELECT FROM users WHERE 1 OR
  • 如果我使用不同数量的核心,XGBoost 会产生相同的结果吗?

    我在两台机器上安装了完全相同版本的 XGBoost 0 4 两台机器之间的唯一区别是 RAM 和内核数量 8 与 16 使用完全相同的数据 我无法重现相同的结果 它们略有不同 小数点后第四 第五位 种子保留为默认值 它是高度特定于实现的 但
  • 从以元组为键的字典中获取 pandas 数据框

    我是Python新手 并且已经在这个问题上挣扎了一段时间 我有一个这样的字典 dict1 a a 5 a b 10 a c 11 b a 4 b b 8 b c 3 我想做的是将其转换为 pandas 数据框 如下所示 a b c a 5
  • 导入后属性未添加到模块中

    我做了以下实验室 vagrant ubuntu xenial test tree pack1 init py mod1 py pack2 init py mod2 py mod3 py test py 2 directories 6 fil
  • 使用概率选择数组值

    我还有一个作业要做 那就是 从黄色 蓝色和红色中随机选择一种颜色 概率为 黄色 3 7 蓝色 1 7 红色 3 7 我知道我可以通过使用类似的方法来解决这个问题 黄黄黄蓝红红红 但我认为这在编程上不是很好 因为当我碰巧发生这种情况时 我将不
  • Python:使用html解析器提取特定数据

    我开始使用 Python 中的 HTMLParser 从网站中提取数据 我得到了我想要的一切 除了两个 HTML 标签内的文本 以下是 HTML 标签的示例 a href http wold livingsources org vocabu
  • ftplib: 在 LIST 期间/之后出现 socket.error // ssl._sslobj.shutdown() / 连接超时

    我尝试使用客户端证书连接到 FTPS 服务器 我尝试了两台不同的服务器 我无法控制它们 但应该非常相似 连接建立 PWD 命令成功 在一台服务器上 LIST 命令成功 但在第二台服务器上 它产生正确的结果 文件列表 但之后 显然在 SSL
  • 如何将当前日期分配给 odoo v8 中的日期字段?

    我想将当前日期分配给以下代码中的日期字段 start date calendar obj create cr uid name rec res act ion user id rec res asgnd to id start date l
  • python中的指数分布随机生成器(对数函数)?

    我真的需要帮助 因为我被困在代码的开头 我被要求创建一个函数来研究直方图上的指数分布 函数为 x log 1 y 是一个常数 我在代码中将其称为 lamdr 并简单地给了它 10 我给了 N 随机数的数量 10 并运行了代码 但结果和生成的
  • 如何在python中查找csv文档中的特定行

    我想要做的是读入 csv 文档并找到 SN 列 gt 20 中的所有值 然后创建一个仅包含 SN gt 20 行的新文件 我知道我需要做 阅读原始文件 打开一个新文件 迭代原始文件的行 我能够做的是找到 SN gt 20 的行 import
  • 在Python中随机化列表[重复]

    这个问题在这里已经有答案了 我想知道是否有一个好方法来 震动 Python 中的项目列表 例如 1 2 3 4 5 可能会被动摇 随机化 3 1 4 2 5 任何顺序都同样可能 from random import shuffle list

随机推荐

  • 事件出队后,Javascript 事件循环如何处理非阻塞函数调用的执行?

    假设调用堆栈上有 5 个内容 事件队列中有一项 一旦所有 5 个项目都从调用堆栈中弹出 事件队列中的回调就会被推送到调用堆栈上 可能需要 20 秒才能完成 与此同时 我向调用堆栈添加了另一个 非阻塞 调用 如果 I O 密集型操作仍在执行
  • 将数组映射到接口

    假设我有一个如下所示的数组 const options name foo type boolean name bar type string name bar should be baz not bar type number 我希望使用这
  • 获取元素的打印页码

    我正在从事一个涉及将 PDF 手册转换为 html 的项目 我试图在打印时保留 PDF 的价值 同时在不受页面概念约束的设备上为它们提供更好的用户界面 我遇到的问题是这些手册有一个目录 其中包含每个章节开始的页码 在设备上查看时 该列表只是
  • 如何列出 npm 用户安装的软件包

    如何列出用户安装 环境包only in npm 当我做npm g list 它输出每个包及其依赖项 相反 我想查看安装在current工作项目或环境 npm list g depth 0 npm Node js 包管理器命令行工具 list
  • 如何在iphone sdk中以编程方式获取图像占用的内存大小?

    我想打印加载特定图像时图像占用的内存量 谁能有想法吗 请帮我 谢谢 拉克什米 UIImage没有提供明显的方式来告诉底层数据的内存 不过 我们可以使用 Core Graphics 来进行估算 您可能可以通过执行以下操作来估计图像占用的内存
  • 防止模态表单在退出时关闭所有非模态打开的表单

    我在 Excel 中使用 VBA 表单时遇到了一些奇怪的行为 我有一个调用无模式表单的模块 它充当调用其他表单的中心 其他形式作为模态形式调用 问题是 一旦子窗体被隐藏或卸载 父无模式窗体也会关闭 我试图找到这个问题的答案 但尽管存在这样的
  • C# CompareTo 方法混乱

    我试图理解 C 中的 CompareTo 方法 我明白 如果两个变量相同 我会得到 0 但是 1 和 1 的部分让我有点困惑 有人可以更直观地向我解释一下吗 是的 我阅读了文档 你说你读过文档 https learn microsoft c
  • 从本地主机连接到 Docker MySQL 容器?

    我正在运行一个 docker mysql 映像 以下是 docker compose yml 文件的样子 db image mysql environment MYSQL ROOT PASSWORD MYSQL ALLOW EMPTY PA
  • iphone - 当视图的阴影打开时,动画的性能非常差

    我有一个UILabel with CALayer阴影 我只是通过移动它UIView动画片 性能很差 我可以看到动画一点也不流畅 我认为这是影子UILabel这会导致动画问题 因为如果我关闭阴影 动画就会变得像正常一样平滑 我尝试过使用vie
  • Laravel5:compiled.php 第 3123 行中出现 TokenMismatchException:

    情况 如果已经被问过 请提前抱歉 但无论如何我都无法让它发挥作用 我使用 Laravel 5 作为 API 我有一个简单的功能来编辑任务 我正在通过我的网络应用程序或邮递员对其进行测试 我总是收到此错误 TokenMismatchExcep
  • chrome 扩展:未捕获类型错误:无法读取未定义的属性(读取“onClicked”)[重复]

    这个问题在这里已经有答案了 我一直在创建一个 chrome 扩展 它应该在扩展单击时在特定选项卡上运行特定脚本 index js service worker js action on extension click chrome brow
  • MVC 验证低于/高于其他值

    在 MVC Net 中验证模型的最佳方法是什么 我想接受最小值 最大值 不是字段的单个最小 最大值 但用户可以使用单独的字段来指定最小值 最大值 public class FinanceModel public int MinimumCos
  • 如何在 codeigniter 挂钩中检索第三个 uri 段

    我正在编写一个自定义 post controller 挂钩 我们知道 codeigniter uri结构是这样的 example com class function id 和我的代码 function hook acl global RT
  • 如何检测文档中的图像

    如何检测 doc xls ppt 或 pdf 等文档中的图像 我遇到了 Apache Tika 我正在尝试它的命令行选项 http tika apache org 1 2 gettingstarted html http tika apac
  • 具有 WPF 桌面桥接包的 UWP 中的 System.BadImageFormatException

    我已经完整详细地描述了本主题中的问题和疑问UWP 与 WPF 桌面桥接包的 AppServiceResponse 中的 System NullReferenceException 和 System BadImageFormatExcepti
  • 如何在邮件中添加html代码?

    我创建了一个自动发送电子邮件的脚本 我的邮件消息包含在以下变量中 message 但是 当我包含类似 html 代码或其他内容时 它在我的邮件中没有正确显示 你可以这样做 headers MIME Version 1 0 r n heade
  • 从 Eigen::SparseMatrix 中提取块/ROI,无需复制

    我想知道有没有什么好方法从 Eigen SparseMatrix 中提取块 ROI 更准确地说 我想要提取的是内向量 我想做的是这样的 typedef Eigen SparseMatrix
  • 为什么ajax模式需要太多时间

    你好 stackoverflow 用户 我有一个jquery来打开模态 代码如下 openVarifiedModal click function var otpFor this data value var formdata this d
  • 将不安全的注册表添加到 Docker

    我有一个在 CentOS 上运行的 docker 1 12 我试图向其中添加不安全的注册表 但文档中提到的内容不起作用 该系统使用systemd所以我创建了一个 etc systemd system docker service d 50
  • 为什么随机种子不能使 Python 中的结果保持不变

    我使用以下代码 我希望使用相同的随机种子获得相同的结果 我使用相同的随机种子 在本例中为 1 并得到不同的结果 这是代码 import pandas as pd import numpy as np from random import s