| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import pandas as pd
- from .model import SystemModel
- class ModelDiag:
- def __init__(
- self,
- model: SystemModel,
- data : pd.DataFrame,
- c_var: list,
- d_var: list,
- ) -> None:
- self.model = model
- self.data = data.iloc[[0],:]
- self.c_var = c_var
- self.d_var = d_var
-
- def summary_diag(self):
- print('-'*20+'系统模型诊断'+'-'*20)
- with pd.option_context('display.max_rows', None,'display.max_columns', None,'display.width',500):
- derivate_c_info = self.diag_c_var_derivate()
- print('-'*20+'系统连续变量偏导'+'-'*20)
- print(derivate_c_info)
-
- def diag_c_var_derivate(self) -> pd.DataFrame:
-
- derivate_1 = self.model.predict_derivate_1(data=self.data,vars=self.c_var)
- derivate_2 = self.model.predict_derivate_2(data=self.data,vars=self.c_var)
-
- derivate_1 = process_derivate(derivate_1,'D1')
- derivate_2 = process_derivate(derivate_2,'D2')
- derivate = derivate_1.join(derivate_2).round(4)
-
- return derivate
-
-
- def diag_d_var_change(self) -> pd.DataFrame:
- ...
-
- def process_derivate(df:pd.DataFrame,D_name):
- df = (
- df
- .reset_index()
- .assign(__VAR__SAMPLE=lambda dt:dt.__VAR__SAMPLE.str.extract('__(.+)__'))
- .melt(id_vars='__VAR__SAMPLE',var_name='SYS_OUTPUT',value_name=D_name)
- .rename(columns={'__VAR__SAMPLE':'OPT_VAR'})
- .set_index(['SYS_OUTPUT','OPT_VAR'])
- )
- return df
|