Python 类型错误:';设计矩阵&x27;对象不可调用

Python 类型错误:';设计矩阵&x27;对象不可调用,python,jupyter-notebook,jupyter-lab,patsy,Python,Jupyter Notebook,Jupyter Lab,Patsy,我试图在JupyterLab上的ipynb笔记本上使用patsy软件包创建B样条曲线: from patsy import dmatrix bs = dmatrix("bs(x, df=50, degree=1) - 1", {"x": x}) axes[0].plot(x, bs) axes[0].set_title("Basis functions") plt.show() 这在我第一次运行它时效果很好。但当我再次尝试重新运行

我试图在JupyterLab上的ipynb笔记本上使用patsy软件包创建B样条曲线:

from patsy import dmatrix

bs = dmatrix("bs(x, df=50, degree=1) - 1", {"x": x})
axes[0].plot(x, bs)
axes[0].set_title("Basis functions")

plt.show()
这在我第一次运行它时效果很好。但当我再次尝试重新运行此单元格时,它失败并出现以下错误:


-----------------------------------------------------
TypeError回溯(最近一次调用上次)
/opt/conda/lib/python3.8/site-packages/patsy/compat.py in call_和_wrap_exc(msg,origin,f,*args,**kwargs)
35尝试:
--->36返回f(*args,**kwargs)
37除e类例外情况外:
/eval中的opt/conda/lib/python3.8/site-packages/patsy/eval.py(self、expr、源名称、内部名称空间)
164代码=编译(expr,源名称,“eval”,self.flags,False)
-->165返回eval(代码,{},VarLookupDict([inner_namespace]
166+自我(名称空间)
在里面
TypeError:“DesignMatrix”对象不可调用
上述异常是以下异常的直接原因:
PatsyError回溯(最近一次呼叫上次)
在里面
2.
3轴=plt.子批次(2,figsize=(16,16))
---->4bs=dmatrix(“bs(x,df=50,度=1)-1”,{“x”:x})
5轴[0]。绘图(x,bs)
6轴[0]。设置标题(“基函数”)
/dmatrix中的opt/conda/lib/python3.8/site-packages/patsy/highlevel.py(类似公式、数据、评估环境、NA行动、返回类型)
288     """
289 eval_env=EvalEnvironment.capture(eval_env,reference=1)
-->290(左侧、右侧)=高层设计(公式、数据、评估环境、,
291 NA_动作,返回_类型)
292如果左侧形状[1]!=0:
/opt/conda/lib/python3.8/site-packages/patsy/highlevel.py in\u do\u highlevel\u设计(类似公式、数据、评估环境、NA\u操作、返回类型)
162 def数据发生器()
163返回iter([数据])
-->164设计信息=\u尝试\u增量生成器(公式类、数据生成器、评估环境、,
165纳乌行动)
166如果设计信息不是无:
/opt/conda/lib/python3.8/site-packages/patsy/highlevel.py in\u try\u incr\u builders(公式类、数据编写器、评估环境、NA\u操作)
64如果存在(类似公式,ModelDesc):
65断言存在(评估环境、评估环境)
--->66返回设计矩阵构建器([formula_like.lhs_termlist,
67公式(如rhs术语表),
68数据发生器,
/opt/conda/lib/python3.8/site-packages/patsy/build.py in design\u matrix\u builders(术语表、数据制造商、评估环境、NA\u行动)
691#在一些数据上查找它们返回的数据类型。
692(数字列计数,
-->693类水平对比)=检查因素类型(所有因素,
694个州,
695数据发生器,
/opt/conda/lib/python3.8/site-packages/patsy/build.py in\u-inspect\u-factor\u-types(因子、因子状态、数据发生器、NA\u-action)
441对于数据生成器()中的数据:
442对于列表中的系数(需要检查):
-->443值=因子评估(因子状态[因子],数据)
444如果cat_嗅探器或guess_分类中的因子(值):
445如果系数不在cat_嗅探器中:
/eval中的opt/conda/lib/python3.8/site-packages/patsy/eval.py(self、memory_状态、数据)
562
563 def eval(自我、记忆状态、数据):
-->564返回自我评估(记忆状态[“评估代码”],
565记住你的状态,
(566数据)
/opt/conda/lib/python3.8/site-packages/patsy/eval.py in_eval(self、code、memory_state、data)
545定义评估(自我、代码、记忆状态、数据):
546 internal_namespace=VarLookupDict([data,memory_state[“transforms”]]))
-->547返回调用和换行(“错误评估因子”,
548自我,
549记住状态[“eval_env”]。eval,
/opt/conda/lib/python3.8/site-packages/patsy/compat.py in call_和_wrap_exc(msg,origin,f,*args,**kwargs)
41(原产地)
42#使用“exec”对Python 2解析器隐藏此语法:
--->43执行官(“从e中提出新的exc”)
44.其他:
45#在python 2中,我们只是让原始异常转义——更好
/opt/conda/lib/python3.8/site-packages/patsy/compat.py in
PatsyError:错误评估因子:TypeError:“DesignMatrix”对象不可调用
bs(x,df=50,度=1)-1
^^^^^^^^^^^^^^^^^^^^^^

结果是因为我重写了变量
bs
,因此重写了patsy字符串中的
bs
函数

这就是为什么eval像往常一样是一个反模式

-----------------------------------------------------
TypeError                                 Traceback (most recent call last)
/opt/conda/lib/python3.8/site-packages/patsy/compat.py in call_and_wrap_exc(msg, origin, f, *args, **kwargs)
     35     try:
---> 36         return f(*args, **kwargs)
     37     except Exception as e:

/opt/conda/lib/python3.8/site-packages/patsy/eval.py in eval(self, expr, source_name, inner_namespace)
    164         code = compile(expr, source_name, "eval", self.flags, False)
--> 165         return eval(code, {}, VarLookupDict([inner_namespace]
    166                                             + self._namespaces))

<string> in <module>

TypeError: 'DesignMatrix' object is not callable

The above exception was the direct cause of the following exception:

PatsyError                                Traceback (most recent call last)
<ipython-input-6-6ed4ba95a384> in <module>
      2 
      3 _, axes = plt.subplots(2, figsize=(16, 16))
----> 4 bs = dmatrix("bs(x, df=50, degree=1) - 1", {"x": x})
      5 axes[0].plot(x, bs)
      6 axes[0].set_title("Basis functions")

/opt/conda/lib/python3.8/site-packages/patsy/highlevel.py in dmatrix(formula_like, data, eval_env, NA_action, return_type)
    288     """
    289     eval_env = EvalEnvironment.capture(eval_env, reference=1)
--> 290     (lhs, rhs) = _do_highlevel_design(formula_like, data, eval_env,
    291                                       NA_action, return_type)
    292     if lhs.shape[1] != 0:

/opt/conda/lib/python3.8/site-packages/patsy/highlevel.py in _do_highlevel_design(formula_like, data, eval_env, NA_action, return_type)
    162     def data_iter_maker():
    163         return iter([data])
--> 164     design_infos = _try_incr_builders(formula_like, data_iter_maker, eval_env,
    165                                       NA_action)
    166     if design_infos is not None:

/opt/conda/lib/python3.8/site-packages/patsy/highlevel.py in _try_incr_builders(formula_like, data_iter_maker, eval_env, NA_action)
     64     if isinstance(formula_like, ModelDesc):
     65         assert isinstance(eval_env, EvalEnvironment)
---> 66         return design_matrix_builders([formula_like.lhs_termlist,
     67                                        formula_like.rhs_termlist],
     68                                       data_iter_maker,

/opt/conda/lib/python3.8/site-packages/patsy/build.py in design_matrix_builders(termlists, data_iter_maker, eval_env, NA_action)
    691     # on some data to find out what type of data they return.
    692     (num_column_counts,
--> 693      cat_levels_contrasts) = _examine_factor_types(all_factors,
    694                                                    factor_states,
    695                                                    data_iter_maker,

/opt/conda/lib/python3.8/site-packages/patsy/build.py in _examine_factor_types(factors, factor_states, data_iter_maker, NA_action)
    441     for data in data_iter_maker():
    442         for factor in list(examine_needed):
--> 443             value = factor.eval(factor_states[factor], data)
    444             if factor in cat_sniffers or guess_categorical(value):
    445                 if factor not in cat_sniffers:

/opt/conda/lib/python3.8/site-packages/patsy/eval.py in eval(self, memorize_state, data)
    562 
    563     def eval(self, memorize_state, data):
--> 564         return self._eval(memorize_state["eval_code"],
    565                           memorize_state,
    566                           data)

/opt/conda/lib/python3.8/site-packages/patsy/eval.py in _eval(self, code, memorize_state, data)
    545     def _eval(self, code, memorize_state, data):
    546         inner_namespace = VarLookupDict([data, memorize_state["transforms"]])
--> 547         return call_and_wrap_exc("Error evaluating factor",
    548                                  self,
    549                                  memorize_state["eval_env"].eval,

/opt/conda/lib/python3.8/site-packages/patsy/compat.py in call_and_wrap_exc(msg, origin, f, *args, **kwargs)
     41                                  origin)
     42             # Use 'exec' to hide this syntax from the Python 2 parser:
---> 43             exec("raise new_exc from e")
     44         else:
     45             # In python 2, we just let the original exception escape -- better

/opt/conda/lib/python3.8/site-packages/patsy/compat.py in <module>

PatsyError: Error evaluating factor: TypeError: 'DesignMatrix' object is not callable
    bs(x, df=50, degree=1) - 1
    ^^^^^^^^^^^^^^^^^^^^^^