以计算建模项目为重点的参数处理和验证库

paramtools的Python项目详细描述


paramtools

定义、更新和验证模型参数。

如何使用paramtools

子类paramtools.Parameters并定义模型的parameters

importparamtoolsclassTaxParams(paramtools.Parameters):defaults={"schema":{"labels":{"year":{"type":"int","validators":{"range":{"min":2013,"max":2027}}},"marital_status":{"type":"str","validators":{"choice":{"choices":["single","joint"]}}},},"additional_members":{"cpi_inflatable":{"type":"bool","number_dims":0},"cpi_inflated":{"type":"bool","number_dims":0}}},"standard_deduction":{"title":"Standard deduction amount","description":"Amount filing unit can use as a standard deduction.","cpi_inflatable":True,"cpi_inflated":True,"type":"float","value":[{"year":2024,"marital_status":"single","value":13673.68},{"year":2024,"marital_status":"joint","value":27347.36},{"year":2025,"marital_status":"single","value":13967.66},{"year":2025,"marital_status":"joint","value":27935.33},{"year":2026,"marital_status":"single","value":7690.0},{"year":2026,"marital_status":"joint","value":15380.0}],"validators":{"range":{"min":0,"max":9e+99}}},}params=TaxParams(initial_state={"year":[2024,2025,2026]},array_first=True)

查看状态:

params.view_state()# {'year': [2024, 2025, 2026]}

参数可通过实例属性获得:

params.standard_deduction# array([[13673.68, 27347.36],#        [13967.66, 27935.33],#        [ 7690.  , 15380.  ]])

查看标准演绎参数的标签:

params.from_array("standard_deduction")# [{'year': 2024, 'marital_status': 'single', 'value': 13673.68},#  {'year': 2024, 'marital_status': 'joint', 'value': 27347.36},#  {'year': 2025, 'marital_status': 'single', 'value': 13967.66},#  {'year': 2025, 'marital_status': 'joint', 'value': 27935.33},#  {'year': 2026, 'marital_status': 'single', 'value': 7690.0},#  {'year': 2026, 'marital_status': 'joint', 'value': 15380.0}]

查询参数:

params.specification(year=2026,marital_status="single",use_state=False)# OrderedDict([('standard_deduction',#               [{'value': 0.0, 'year': 2026, 'marital_status': 'single'}])])

调整默认值:

adjustment={"standard_deduction":[{"year":2026,"marital_status":"single","value":10000.0}],}params.adjust(adjustment)params.standard_deduction# array([[13673.68, 27347.36],#        [13967.66, 27935.33],#        [10000.  , 15380.  ]])

将标准扣除参数的所有值设置为0:

adjustment={"standard_deduction":0,}params.adjust(adjustment)params.standard_deduction# array([[0., 0.],#        [0., 0.],#        [0., 0.]])

无效输入错误:

adjustment["standard_deduction"]="higher"params.adjust(adjustment)# ---------------------------------------------------------------------------# ValidationError                           Traceback (most recent call last)# <ipython-input-7-d9ad03cf54d8> in <module>#       1 adjustment["standard_deduction"] = "higher"# ----> 2 params.adjust(adjustment)# ~/Documents/ParamTools/paramtools/parameters.py in adjust(self, params_or_path, raise_errors)#     134#     135         if raise_errors and self._errors:# --> 136             raise self.validation_error#     137#     138         # Update attrs.# ValidationError: {'standard_deduction': ['Not a valid number: higher.']}

超出范围的输入错误:

adjustment["standard_deduction"]=[{"marital_status":"single","year":2025,"value":-1}]params.adjust(adjustment)# output:# ---------------------------------------------------------------------------# ValidationError                           Traceback (most recent call last)# <ipython-input-14-208948dfbd1d> in <module>#       1 adjustment["standard_deduction"] = [{"marital_status": "single", "year": 2025, "value": -1}]# ----> 2 params.adjust(adjustment)# ~/Documents/ParamTools/paramtools/parameters.py in adjust(self, params_or_path, raise_errors, extend_adj)#     183#     184         if raise_errors and self._errors:# --> 185             raise self.validation_error#     186#     187         if self.label_to_extend is not None and extend_adj:# ValidationError: {#     "standard_deduction": [#         "standard_deduction[marital_status=single, year=2025] -1.0 < min 0 "#     ]# }

如何安装paramtools

使用conda安装:

conda install -c conda-forge paramtools

从源安装:

git clone https://github.com/PSLmodels/ParamTools
cd ParamTools
conda env create
conda activate paramtools-dev
pip install -e .

# optionally run tests:
py.test -v

文档

完整的文档可在paramtools.org找到。

贡献

欢迎投稿!签出CONTRIBUTING.md开始。

学分

paramtools构建在优秀的marshmallowjson模式和验证框架之上。我鼓励每个人查看他们的回购协议和文件。paramtools是在Tax-Calculator's参数处理和验证引擎的基础上建模的,因为它的成熟度和复杂的功能。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android Wifi中筛选相同的SSID?   Java中重写接口中异常处理的泛型   java“无效转义序列(有效的是\b\t\n\f\r\”\“\”\)”语法错误   使用JNDI的java NameReadyBoundException   java如何在这个程序上执行算法   java为什么我的应用程序在调试时崩溃而应用程序停止?   Java:while循环未检测到中断条件,但如果块检测到   java如何快速使用jfreechart创建的折线图   java将输入放入JSTL会话变量,以便稍后在屏幕上显示   java在spring boot中加载外部JAR   java Apache NiFi无法使用ojdbc6连接到Oracle 12c。jar或ojdbc8。罐子   java解释StringToWordVector()Weka的输出   java charAt()找不到符号   使用mpjexpress的java阅读控制台输入