使用diversipy实现LHS采样出现AttributeError报错问题求助
报错原因
- 你当前安装的
diversipy库版本不包含polytope子模块:polytope相关的采样接口是diversipy早期未正式发布的测试版本才有的功能,现在PyPI上正式发布的所有稳定版diversipy都已经移除了这个子模块,你如果是手动下载的正式版包,自然找不到这个属性。 - 手动安装时文件结构错误:如果确实下载的是包含
polytope的开发版本,手动安装过程中没有把完整的子目录复制到Python的site-packages路径下,导致模块导入不完整,也会触发这个报错。
解决方法
- 方法一:替换为diversipy正式版支持的采样接口
如果你只需要基础的带边界约束的拉丁超立方采样,不需要额外线性约束,直接用正式版自带的接口即可,示例代码:
from diversipy import lhs # 生成LHS样本后缩放到你设定的[L,U]区间 X_raw = lhs(S, dim=2) X = X_raw * (np.array(U) - np.array(L)) + np.array(L)
- 方法二:使用单独安装的polytope库实现带约束采样
你已经安装了polytope和cvxopt库,可以直接调用polytope自带的采样接口满足你的线性约束需求,调整代码如下:
from polytope import Polytope, sample # 构造包含边界和线性约束的多面体区域 poly = Polytope(a_1, b_1, min_values=L, max_values=U) X = sample(poly, S, seed=20)
- 方法三:安装带polytope子模块的开发版diversipy
如果一定要沿用原代码的调用逻辑,可下载diversipy包含polytope模块的早期开发分支完整源码,在源码根目录执行pip install .完成全量安装,确保子模块被正确导入。
内容的提问来源于stack exchange,提问作者J R
相关产品推荐
相关产品推荐

