尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
aima-python 概率、MDP 与决策模块完全指南:从贝叶斯网络到 POMDP 决策
人工智能机器学习深度学习【免费下载链接】aima-pythonPython implementation of algorithms from Russell And Norvigs Artificial Intelligence - A Modern Approach项目地址https://gitcode.com/gh_mirrors/ai/aima-python点击查看免费下载本文是基于 aima-python 仓库 API 文档页 docs/probability.rst 编写的一份技术指南。该文档页通过 Sphinxautomodule指令将aima.probability、aima.mdp与aima.making_simple_decisions三个模块的全部公开成员自动收录为 API 参考对应 Russell Norvig《人工智能一种现代方法》AIMA第 13–17 章的内容。读完本文你将掌握这三个模块的核心类与算法概率分布与贝叶斯网络的构建和精确/近似推断、HMM 滤波与 Kalman 滤波、以及从 MDP 求解到决策网络、POMDP 的一整套概率→决策链路并能在自己的项目里直接复用这些实现。模块总览与文档结构docs/probability.rst是文档站点见 docs/index.rst中的 API 参考页之一正文由三个automodule指令组成逐一导入并展示模块的全部公开成员aima.probability—— 概率模型第 13–15 章概率分布、贝叶斯网络、精确/近似推断、HMM、Kalman 滤波、动态贝叶斯网络、粒子滤波与蒙特卡洛定位aima.mdp—— 马尔可夫决策过程第 17 章MDP/GridMDP 建模、价值迭代、策略迭代以及 POMDP 求解aima.making_simple_decisions—— 简单决策第 15/16 章决策网络与信息收集智能体的重导出。值得说明的是aima.making_simple_decisions本身只有 11 行它从aima.probability导入DecisionNetwork与InformationGatheringAgent并重新导出__all__ [DecisionNetwork, InformationGatheringAgent]文档字符串明确指出aima.probability才是这两个类的规范居所canonical home。因此本文以aima.probability为主线将aima.mdp作为从概率推断走向决策的自然延伸这与文档页自身的编排顺序完全一致。概率分布的表示ProbDist 与 JointProbDistaima.probability首先提供离散概率分布的基础数据结构对应 AIMA 第 13 章不确定性与概率。ProbDist单变量离散分布ProbDistaima/probability.py用字典prob存储取值→概率的映射并通过构造参数var_name记录随机变量名。构造时可传入freq频率字典随后自动调用normalize()归一化P ProbDist(Flip); P[H], P[T] 0.25, 0.75; P[H] # 0.25 P ProbDist(X, {lo: 125, med: 375, hi: 500}) P[lo], P[med], P[hi] # (0.125, 0.375, 0.5)关键行为与参数约定__getitem__查询概率未赋值的取值返回 0而不是抛 KeyError__setitem__赋值时自动把取值登记进values列表normalize()把全部概率除以总和使各取值概率之和为 1总和为 0 时抛出ZeroDivisionError若总和已接近 1np.isclose则不再重复缩放show_approx(numfmt{:.3g})按 key 排序后以指定格式默认 3 位有效数字输出用于可移植的 doctest 与调试。JointProbDist多变量联合分布JointProbDistaima/probability.py把ProbDist扩展到一组变量底层键是每个变量一个取值的元组。它同时维护valsdefaultdict记录每个变量出现过的取值域供后续枚举使用P JointProbDist([X, Y]); P[1, 1] 0.25 P[1, 1] # 0.25 P[dict(X0, Y1)] 0.5 P[dict(X0, Y1)] # 0.5其取值既可以用元组与variables顺序一致也可以用字典顺序无关统一由辅助函数event_values(event, variables)aima/probability.py转换为元组。values(var)返回某变量的可能取值列表。基于联合分布的推断与独立性检验enumerate_joint_ask(X, e, P)aima/probability.py给定联合分布P与证据e{var: val}字典通过枚举所有与证据一致的条目计算查询变量X的条件分布第 13.3 节。断言X不能同时出现在证据中enumerate_joint(variables, e, P)aima/probability.py递归累加与证据一致的所有条目概率是前者的底层引擎is_independent(variables, P)aima/probability.py逐一检验某组变量是否相互独立——对每个变量比较无条件边缘分布与以其他变量各种取值为条件的条件分布全部相等才返回 Truegen_possible_events(vars, P)aima/probability.py回溯枚举一组变量所有可能的取值组合事件。测试 tests/test_probability.py 中的test_probdist_basic、test_probdist_frequency、test_probdist_normalize、test_jointprob、test_enumerate_joint、test_is_independent等用例逐项验证了上述行为可直接作为使用示例。贝叶斯网络建模、CPT 与多值节点aima.probability实现了两套贝叶斯网络节点/网络结构布尔变量版与多值离散版并支持从标准 BIF 文件加载网络。布尔网络BayesNet 与 BayesNodeBayesNodeaima/probability.py表示一个布尔变量的条件概率表 P(X | parents)。cpt参数支持三种书写形式代码会自动统一为父取值元组→P(Xtrue)的字典一个数字无条件概率 P(Xtrue)适用于无父节点内部转为{(): cpt}一个字典{v: p}单一父节点表示 P(Xtrue | parentv) p键是布尔值一个字典{(v1, v2, ...): p}多父节点每个键的元组长度必须等于父节点数。在所有形式中Xfalse 的概率都被隐式地由 1 − P(Xtrue) 推出这体现在p(value, event)方法中。构造时还会断言父名与元组长度匹配、每个取值均为布尔值、概率在 [0, 1] 区间内。sample(event)按条件概率随机采样 True/False。BayesNetaima/probability.py是节点容器要求节点按父先于子的拓扑顺序加入构造函数与add都会断言父节点已在网内、变量名不重复并自动维护children指针。variable_node(var)按名取节点variable_values(var)对布尔网络恒返回[True, False]。书中经典的入室盗窃网络被直接实例化为模块级常量burglaryaima/probability.py喷洒器网络为sprinkleraima/probability.py可直接复用burglary BayesNet([(Burglary, , 0.001), (Earthquake, , 0.002), (Alarm, Burglary Earthquake, {(T, T): 0.95, (T, F): 0.94, (F, T): 0.29, (F, F): 0.001}), (JohnCalls, Alarm, {T: 0.90, F: 0.05}), (MaryCalls, Alarm, {T: 0.70, F: 0.01})])注意模块中定义了T, F True, False方便书写 CPT。多值离散网络DiscreteBayesNode 与 DiscreteBayesNetDiscreteBayesNodeaima/probability.py把变量域扩展到任意有限离散取值集合构造参数为(X, parents, values, cpt)其中values是变量域cpt把每个父取值元组映射到按域顺序的概率序列或{value: prob}字典根节点用空元组()作唯一键。DiscreteBayesNetaima/probability.py则是对应的网络容器。关键设计点文档字符串明示enumeration_ask/elimination_ask等精确推断算法只依赖node.p与variable_values两个接口因此对多值节点无需任何改动即可直接工作。从 BIF 文件加载网络read_bif(source)aima/probability.py解析贝叶斯交换格式BIF文本或文件对象构建DiscreteBayesNet。BIF 是贝叶斯网络仓库bnlearn 的 BN Repository采用的标准格式因此 aima 可以直接加载诸如车险Insurance这样的标准多值网络。解析器用正则提取variable声明中的变量域与probability段中的 CPT支持table ...整体表与(父取值) 概率逐行表两种写法并在添加节点前先递归添加父节点从而容忍 BIF 文件本身非拓扑序的节点排列。insurance()aima/probability.py返回 AIMA 第 4 版车险案例研究第 16 节所引用的 Binder、Koller、Russell Kanazawa199727 变量离散模型数据从aima-data子模块中的insurance.bif加载经 aima/utils.py 的open_data定位到仓库根的 aima-data 目录。运行前需确保子模块已初始化见仓库根 SUBMODULE.md。测试侧test_read_bif、test_insurance_bayes_net、test_discrete_bayes_net_inferencetests/test_probability.py验证了 BIF 解析、Insurance 网络结构变量数、节点父关系与多值网络上的精确推断。连续变量贝叶斯网络对于连续分布节点模块提供gaussian_probability(param, event, value)aima/probability.py线性高斯模型。param由离散父事件决定含sigma、b以及a连续父节点权重字典event是连续父节点的取值字典返回当前节点取值value的高斯概率密度。logistic_probability(param, event, value)aima/probability.py用于连续父节点、离散子节点的 logistic 模型参数含mu与sigma。ContinuousBayesNodeaima/probability.py同时拥有离散父节点决定分布参数与连续父节点决定分布取值的节点type为c时用高斯、d时用 logistic 计算continuous_p。贝叶斯网络精确推断枚举法与变量消元枚举推断enumeration_ask(X, e, bn)aima/probability.py对应 [Figure 14.9]通过enumerate_all枚举联合分布中与证据一致的条目返回查询变量的条件分布归一化后为ProbDist。其 doctest 给出了经典结果enumeration_ask(Burglary, dict(JohnCallsT, MaryCallsT), burglary).show_approx() # False: 0.716, True: 0.284底层enumerate_all(variables, e, bn)aima/probability.py按拓扑序递归若变量已在证据中直接乘以其条件概率否则对该变量所有取值求和。复杂度随变量数指数增长适合小网络。变量消元elimination_ask(X, e, bn)aima/probability.py对应 [Figure 14.11]以因子Factor为单位做变量消元对每个变量逆拓扑序先make_factor生成因子隐藏变量is_hidden非查询变量且不在证据中立即sum_out求和消去最后把所有剩余因子pointwise_product相乘并归一化。对同一查询给出与枚举法一致的结果False: 0.716, True: 0.284但避免了显式构造联合分布。配套的数据结构Factoraima/probability.py封装变量列表 条件概率表提供pointwise_product因子逐点相乘、变量取并集、sum_out对某变量求和消去、normalize缩到单变量并转为ProbDist。模块级函数pointwise_product、sum_out、make_factor、all_events分别承担因子乘法、消元调度、因子构造与事件枚举。测试test_enumeration_ask与test_elimination_asktests/test_probability.py不仅覆盖入室盗窃网络还验证了两个算法在sprinkler网络上的结果一致。贝叶斯网络近似推断三类蒙特卡洛采样当网络过大无法精确推断时模块提供对应 [Figure 14.13–14.16] 的三类采样算法含 doctest 中固定的随机种子与期望输出prior_sample(bn)aima/probability.py按拓扑序逐节点用node.sample(event)采样得到联合分布的随机样本rejection_sampling(X, e, bn, N10000)aima/probability.py先prior_sample生成 N 个样本再用consistent_withaima/probability.py检查事件与证据在每个键上一致筛选与证据一致的样本统计查询变量取值频率。若 N 个样本全部被拒绝将抛出 ZeroDivisionError即证据过于罕见时的退化情形likelihood_weighting(X, e, bn, N10000)aima/probability.py改进的加权采样。weighted_sample(bn, e)aima/probability.py对证据变量不采样而是把其条件概率node.p(e[Xi], event)累乘为权重w对非证据变量正常采样最后按权重累加统计。由于不再丢弃样本效率显著高于拒绝采样gibbs_ask(X, e, bn, N1000)aima/probability.py吉布斯采样。从与证据一致的随机状态出发循环 N 轮每轮把每个非证据变量按markov_blanket_sample从其马尔可夫毯父、子、子之父母见 [Equation 14.12]实现见 aima/probability.py重采样并统计查询变量取值。三者默认样本数分别为 N10000 / 10000 / 1000。测试用例test_prior_sample、test_rejection_sampling、test_likelihood_weighting、test_gibbs_asktests/test_probability.py以固定随机种子验证了这些算法在burglary/sprinkler网络上的输出。时序模型HMM 滤波、平滑与参数学习第 15 章时序推理部分由HiddenMarkovModel及一组算法函数承载。HiddenMarkovModel 与滤波HiddenMarkovModelaima/probability.py以转移模型transition_model、传感器模型sensor_model与先验prior默认[0.5, 0.5]构造sensor_dist(ev)按证据真/假返回传感器模型的对应行。核心算法forward(HMM, fv, ev)aima/probability.py一步滤波——先经转移模型投影前向消息再按证据的传感器分布加权并归一化[Figure 15.4]backward(HMM, b, ev)aima/probability.py一步后向消息forward_backward(HMM, ev)aima/probability.py前向-后向平滑对整条观测序列计算各时刻状态的后验sv注意实现会在证据序列头部插入哨兵None以对齐伪代码下标viterbi(HMM, ev)aima/probability.py维特比算法[Equation 15.11]返回最可能状态序列ml_path及其逐时刻概率ml_probabilities回溯图保存每个时刻状态的前驱fixed_lag_smoothing(e_t, HMM, d, ev, t)aima/probability.py固定时滞 d 步的平滑[Figure 15.6]证据不足t ≤ d时返回 Noneparticle_filtering(e, N, HMM)aima/probability.py两状态粒子滤波——先按转移模型传播、按证据计算重要性权重并归一化再weighted_sample_with_replacement重采样。Baum-WelchHMM 参数学习baum_welch(HMM, observations, iterations100)aima/probability.py是 EM 在 HMM 上的实例第 20.3 节每轮迭代先以缩放的前向-后向传递计算平滑状态边缘gamma_t(i)P(X_ti | e_1:T)与转移边缘xi_t(i,j)P(X_ti, X_{t1}j | e_1:T)E 步再按期望计数重新估计全部参数M 步prior_i gamma_0(i) A_ij sum_t xi_t(i, j) / sum_t gamma_t(i) sensor_oi sum_{t: e_t o} gamma_t(i) / sum_t gamma_t(i)返回学习后的新HiddenMarkovModel。测试test_forward_backward、test_viterbi、test_fixed_lag_smoothing、test_particle_filtering、test_baum_welchtests/test_probability.py覆盖了上述全部算法含与教科书小例对照的断言。Kalman 滤波KalmanFilteraima/probability.py针对线性高斯动态系统第 15.4 节x_{t1} F x_t noise, noise ~ N(0, Sigma_x) (转移模型) z_t H x_t noise, noise ~ N(0, Sigma_z) (传感器模型)构造函数参数为(transition_model, sensor_model, transition_noise, sensor_noise)内部以矩阵np.atleast_2d存储 F、H、Sigma_x、Sigma_z。高斯族在贝叶斯滤波更新下封闭因此前向消息每步都保持高斯完全由均值向量与协方差矩阵刻画predict(mean, cov)时间更新mean F mean、cov F cov F.T Sigma_xupdate(mean, cov, z)测量更新用卡尔曼增益 K[Equation 15.21]修正均值与协方差filter(mean, cov, z)一次预测-更新循环。模块级函数kalman_filter(KF, mean0, cov0, observations)aima/probability.py从高斯先验 N(mean0, cov0) 出发对观测序列逐点滤波返回每步的(mean, covariance)列表。测试test_kalman_filter与test_kalman_filter_steady_statetests/test_probability.py验证了滤波过程与稳态行为。动态贝叶斯网络DBNDynamicBayesNetaima/probability.py为平稳一阶马尔可夫过程建模第 15.5 节由先验网络第 0 层状态变量、转移网络与传感器网络三个规范构成每个 spec 均为(variable, parents, cpt)三元组同BayesNode转移 spec 中名为var_prev的父节点指向上一层的状态变量其余父节点指当前层。unroll(steps)把 DBN 展开为覆盖第 0..steps 层的普通BayesNet传感器在第 1..steps 层展开后的变量名形如var_0、var_tfilter(evidence, query, inferelimination_ask)滤波即给定整条观测序列、查询最后层状态变量的后验evidence是逐时刻t1,2,…的观测字典列表默认用变量消元做推断也可传入其他推断函数。测试test_dynamic_bayes_nettests/test_probability.py通过展开后的精确推断验证了 DBN 的滤波结果。蒙特卡洛定位MCLMCLmapaima/probability.py是离散栅格地图m为 0/1 二维列表障碍或空地sample()随机返回合法运动学状态空地坐标 0N/1E/2S/3W 朝向ray_cast(sensor_num, kin_state)返回指定传感器方向到最近障碍/边界的距离。ContinuousMCLmapaima/probability.py是连续版本世界为 [0,width]×[0,height] 的矩形竞技场障碍为轴对齐矩形状态为 (x, y, heading)传感器以相对朝向的弧度角配置默认 0、π/2、π、3π/2ray_cast通过射线-线段求交返回连续距离两个类暴露相同的sample()/ray_cast()接口。monte_carlo_localization(a, z, N, P_motion_sample, P_sensor, m, SNone)aima/probability.py实现 [Figure 25.9] 的蒙特卡洛定位从先验粒子集 S缺省时由m.sample()生成 N 个出发逐个经P_motion_sample运动采样、按各传感器读数z与ray_cast预测的距离计算权重乘积最后按权重有放回重采样。测试test_monte_carlo_localization与test_continuous_mcltests/test_probability.py分别验证了离散与连续地图上的定位收敛。决策网络与信息收集智能体making_simple_decisionsaima.making_simple_decisions把第 15/16 章的决策算法以aima.probability的类重新导出详见 aima/making_simple_decisions.py因此实际实现都在aima.probability中DecisionNetwork(BayesNet)aima/probability.py决策网络的抽象基类是贝叶斯网络的包装表示智能体当前状态、可用动作、可达状态及其效用。构造参数(action, infer)分别指定单一动作节点与首选的推断方法。best_action()返回最优动作get_expected_utility(action, evidence)通过infer求动作条件下状态的后验分布再按get_utility(action, state)需子类实现加权求和得到期望效用InformationGatheringAgent(Agent)aima/probability.py对应 [Figure 16.9] 的信息收集智能体反复选择信息价值VPI最高的观测直到下一次观测的成本超过其预期收益为止。execute(percept)按vpi_cost_ratio取 VPI/成本比最大的变量若vpi(variable) cost(variable)则request(variable)否则返回decnet.best_action()。vpi计算将观测到该变量各取值的后验概率与对应期望效用加权再减去当前观测下的期望效用即 VPI 定义。integrate_percept、request、cost是留给子类实现的钩子。MDP 求解value_iteration 与 policy_iterationaima.mdp承载第 17 章内容。MDPaima/mdp.py的定义与教科书略有不同转移模型不用三元组概率P(s|s,a)而是让T(s, a)返回(概率, 结果状态)对的列表。构造参数为(init, actlist, terminals, transitionsNone, rewardNone, statesNone, gamma0.9)其中actlist可以是列表所有状态动作相同、字典按状态区分动作或集合自动转列表gamma必须满足0 gamma 1否则抛ValueErrorstates缺省时从转移表自动收集get_states_from_transitions。check_consistency()断言状态集合、初始/终止状态、奖励定义以及每个动作的结果概率之和为 1用于构造后的自检。GridMDP 与 4×3 网格环境GridMDPaima/mdp.py是 [Figure 17.1] 的二维网格特例以奖励值组成的列表的列表指定网格None表示障碍不可达状态还需显式给出terminals。注意构造时grid.reverse()行 0 在底部。动作是(x, y)单位向量取自utils的orientationscalculate_T实现有噪声的运动模型0.8 概率按意图方向移动各 0.1 概率向右/左偏离go(state, direction)撞墙或越界时原地不动。to_grid(mapping)把(x, y)映射渲染回网格to_arrows(policy)把策略渲染为 ^ v箭头None动作渲染为.。模块常量sequential_decision_environmentaima/mdp.py即书中 4×3 环境普通格奖励 −0.04右上角 1、右列中间 −1 为终止格中间格为障碍。辅助函数gen_grid(n_rows3, n_cols4, terminals((3, 2), (3, 1)), main_reward-0.04, terminal_rewards(1, -1), block_coords((1, 1),))aima/mdp.py可按参数生成任意尺寸的网格供GridMDP直接使用。价值迭代与策略迭代value_iteration(mdp, epsilon0.001)aima/mdp.py[Figure 17.4]。从全 0 效用出发迭代U1[s] R(s) gamma * max_a sum p * U[s1]收敛判据为delta epsilon * (1 - gamma) / gamma返回效用字典best_policy(mdp, U)aima/mdp.py按 [Equation 17.4] 由效用字典取每状态期望效用最大的动作返回{state: action}策略policy_iteration(mdp)aima/mdp.py[Figure 17.7]。随机初始化策略后循环策略评估 策略改进策略无变化即返回policy_evaluation(pi, U, mdp, k20)aima/mdp.py修正的策略迭代固定迭代 k 轮默认 20做策略评估近似q_value(mdp, s, a, U)aima/mdp.py与expected_utility(a, s, U, mdp)aima/mdp.py分别是 Q 值与期望效用的实现无动作时 Q 值退化为即时奖励。模块末尾的 doctest 展示了端到端用法也是最佳速查示例pi best_policy(sequential_decision_environment, value_iteration(sequential_decision_environment, .01)) sequential_decision_environment.to_arrows(pi) # [[, , , .], [^, None, ^, .], [^, , ^, ]]policy_iteration对同一环境得到相同的箭头策略。测试 tests/test_mdp.py 的test_value_iteration用pytest.approx做容差比较因为数值细节会随 numpy/BLAS 版本浮动、test_policy_iteration、test_best_policy、test_transition_model对 4×3 环境与gen_grid生成的环境逐一验证。POMDP部分可观测环境下的决策POMDP(MDP)aima/mdp.py以矩阵形式定义转移模型P(s|s,a)、动作集、奖励函数与传感器模型P(e|s)第 17 节[Page 659]。构造参数(actions, transitionsNone, evidencesNone, rewardsNone, statesNone, gamma0.95)gamma 同样限定0 gamma 1转移/传感器模型缺失时打印警告。remove_dominated_plans通过保留上包络上的直线来剔除被支配的计划remove_dominated_plans_fast则在 100 个等距点上重采样上边界做近似精确与快速版本可互换见pomdp_value_iteration中的注释。配套Matrix类aima/mdp.py提供矩阵加减、标量乘、逐元素乘、矩阵乘与转置工具。pomdp_value_iteration(pomdp, epsilon0.1)aima/mdp.pyPOMDP 价值迭代收敛判据max_difference epsilon * (1 - gamma) / gammaupdate_belief(pomdp, belief, action, observation)aima/mdp.py[Equation 17.17] 的信念状态滤波——预测步经转移模型传播信念更新步按观测的传感器似然加权再归一化b(s) alpha * P(o | s) * sum_s P(s | s, a) b(s)pomdp_lookahead(pomdp, belief, depth)aima/mdp.py把 POMDP 建模为动态决策网络DDN第 17.5 节以信念状态上的 expectimax 搜索向前投影depth步决策节点在信念状态上取值机会节点按可能观测分支分支上用update_belief递推更新信念返回期望折现效用最大的动作。测试test_pomdp_value_iteration、test_pomdp_value_iteration2、test_update_belief、test_pomdp_lookaheadtests/test_mdp.py覆盖了 POMDP 求解与信念更新的完整链路。配套 Notebook 与文档生态除了本文所依的 docs/probability.rst 与 docs/index.rst仓库还为这三个模块提供了逐章的 Jupyter Notebook 作为互补教程notebooks/probability.ipynb 与 notebooks/probability.py贝叶斯网络与概率推断notebooks/mdp.ipynb、notebooks/mdp.py、notebooks/mdp_apps.ipynb 与 notebooks/mdp_apps.pyMDP 求解及应用第 16/17 章专册见 notebooks/chapter16-17MDPs、Sequential Decision Problems、Partially Observable MDP 等第 21 章强化学习的被动/主动学习 notebook 也会复用本页的 MDP 基础设施。这些 notebook 与 API 文档均由源码 docstring 自动生成共同构成先读教程、再查 API的完整学习路径。模块的单元测试tests/test_probability.py、tests/test_mdp.py则同时充当行为契约与可运行示例。快速上手与使用建议环境准备安装依赖见 requirements.txt 与 pyproject.toml并初始化aima-data子模块SUBMODULE.md以便insurance()等数据类接口可用运行测试可执行pytest配置见 pytest.ini。概率推断小网络用enumeration_ask/elimination_ask精确推断大网络用rejection_sampling/likelihood_weighting/gibbs_ask近似时序数据用forward_backward/viterbi或KalmanFilter。序列决策完全可观测时用value_iteration/policy_iteration求 4×3 等网格环境的策略部分可观测时用POMDP与update_belief/pomdp_lookahead。决策理论智能体继承DecisionNetwork实现get_utility再组合InformationGatheringAgent即可构建先收集信息、再按 VPI 权衡成本的完整智能体。需要提醒的约定GridMDP的网格行序是反的row 0 在底部BayesNet节点必须按父先子后顺序加入prob类分布未赋值取值查询返回 0采样算法对罕见证据可能抛ZeroDivisionError拒绝采样或依赖固定随机种子才可复现 doctest 输出。理解这些约定后你就可以把这套实现当作带标准答案测试的教科书级概率决策工具箱直接集成进自己的项目。赞分享人工智能机器学习深度学习【免费下载链接】aima-pythonPython implementation of algorithms from Russell And Norvigs Artificial Intelligence - A Modern Approach项目地址https://gitcode.com/gh_mirrors/ai/aima-python点击查看免费下载相关推荐贝叶斯优化完全指南从概率模型到智能决策的终极教程贝叶斯优化完全指南从概率模型到智能决策的终极教程 贝叶斯优化是一种基于概率模型的高效优化方法能够在有限的资源下快速找到复杂函数的最优解。本教程将带你全面了解机器学习如何掌握PRML概率图模型贝叶斯网络推理的终极完整指南 如何掌握PRML概率图模型贝叶斯网络推理的终极完整指南 PRMLPattern Recognition and Machine Learning项目机器学习深度学习从源码到打包JamTools开发者指南之编译与定制教程从源码到打包JamTools开发者指南之编译与定制教程 JamTools是一个完全开源的跨平台工具集支持Windows、macOS和Linux系统集成了滚桌面应用计算机视觉音视频RPA网络上一篇AI音乐生成项目Data-Science-Gen-AI-Playlist-2024音频合成技术下一篇Theatre Git工作流最佳实践团队协作效率提升创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

conventional-changelog-preset-loader 完全指南:解析预设加载机制、名称解析规则与配置工厂

conventional-changelog-preset-loader 完全指南:解析预设加载机制、名称解析规则与配置工厂

开发工具CLI文档 【免费下载链接】conventional-changelog Generate changelogs and release notes from a projects commit messages and metadata. 项目地址: https://gitcode.com/gh_mirrors/co/conventional-changelog 点击查看 免费下载 conventional-changel…

📅 2026/9/25 4:31:13
VirtualBox E_FAIL (0x80004005) 报错全解析:从驱动冲突到UUID修复

VirtualBox E_FAIL (0x80004005) 报错全解析:从驱动冲突到UUID修复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/25 4:26:13
MIPI DSI转LVDS桥接方案:LT9211与N76E003配置实战

MIPI DSI转LVDS桥接方案:LT9211与N76E003配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/25 4:26:13
MORE NEWS

更多资讯

📰

immudb gRPC 协议深度指南:schema.proto 消息模型、ImmuService 服务与可验证性设计全解

数据库安全后端 【免费下载链接】immudb immudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history 项目地址: https://gitcode.com/gh_mirrors/im/immudb 点击查看 免费下载 immudb 对外暴露的 gRPC 与…

📰

老Mac免费装新macOS:OpenCore Legacy Patcher 实操指南

老Mac免费装新macOS:OpenCore Legacy Patcher 实操指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher 是个免费工具&am…

📰

APK脱壳与反编译实战:从内存dump到Java源码还原

简介:本资源是一套面向Android安全研究者、逆向工程师及中高级开发者的专业APK分析工具集,聚焦脱壳、反编译与源码还原三大核心需求,助力应用安全审计、漏洞分析与逻辑理解。压缩包共43个文件,涵盖14个jar(如apktool.j…

📰

维度表和事实表的区别

文章目录一、什么是事实表(Fact Table)?二、什么是维度表(Dimension Table)?三、事实表和维度表的核心区别(最清晰表格)四、一个图秒懂:事实表 维度表如何组合&#xff…

📰

DeskcommCRM实战:从线索到成交的客户关系管理全流程解析

1. 为什么我会盯上DeskcommCRM:客户关系管理这块硬骨头做销售管理和团队运营这些年,我换过不少客户管理工具。最早用Excel表格,客户一多就乱;后来换过在线表格,协作虽然方便了,但权限、跟进记录、客户归属这…

📰

深入解析 AWS SDK for Java 2.x 的 DynamoDB 异步编程实战(附测试与分页原理)

示例工程教程后端 【免费下载链接】aws-doc-sdk-examples Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below. 项目地…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬