使用pyDEA开展DEA项目时遭遇AttributeError:模块无DEAProblem属性
使用pyDEA开展DEA项目时遭遇AttributeError:模块无DEAProblem属性
嘿,我看了你的问题,这个报错其实是因为DEAProblem并不是直接在pyDEA根模块下面的,它藏在core子模块里——从你打印的dir(pyDEA)结果里能看到core这个项,这就是突破口。
给你几个解决的小步骤:
修正导入语句
你需要从pyDEA.core.dea_problem里导入DEAProblem类,而不是直接用pyDEA调用。修改后的导入代码可以是这样:from pyDEA.core.dea_problem import DEAProblem要是你习惯保留模块层级调用,也可以这么写:
import pyDEA.core as dea_core # 后面调用的时候就用这个路径 CCR_problem = dea_core.dea_problem.DEAProblem(inputs, outputs, kind='CCR')修复代码里的变量名错误
我注意到你定义了output变量,但后面创建问题对象的时候用的是outputs,这会触发NameError;而且输入输出最好保持相同的数据格式(都是numpy数组),所以把这行代码改一下:outputs = df[['Average Gross Profit']].values修改后的完整代码示例
把这些调整整合后,你的代码应该是这样的:import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline from pyDEA.core.dea_problem import DEAProblem df = pd.read_excel('/Users....') inputs = df[['Counted Rejections', 'Average Cost', 'Items with Complaint']].values outputs = df[['Average Gross Profit']].values # 创建CCR模型的DEA问题对象 CCR_problem = DEAProblem(inputs, outputs, kind='CCR') # 求解模型 CCR_results = CCR_problem.solve()
你可以先试试这个调整,应该就能解决那个属性错误了。要是还有问题,可以再检查一下pyDEA的安装是否完整,或者看看它的模块结构确认类的位置~
备注:内容来源于stack exchange,提问作者Farah Aboucha




