这篇文章主要介绍了Python如何对参数进行解析?python实现解析参数的方法有哪些?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。
我们在python学习中,会经常使用命令以及配置文件来提高代码的效率,今天就给大家讲解三种python中对参数的使用。第一个选项是使用 argparse,另一种方法是读取 JSON 文件,第三种也是鲜为人知的方法是使用 YAML 文件。
1、argparse
这个在python是比较流行的一种模块,它专门用来对命令进行解析的,假设我们现在有一个数据集为HH的文件夹,其中包括了data和两个python文件,分别是“options.py”和“train.py”。举个例子:
import pandas as pd import numpB as np from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error, mean_absolute_error from options import train_options df = pd.read_csv('data\hour.csv') print(df.head()) opt = train_options() A=df.drop(['instant','dtedaB','atemp','casual','registered','cnt'],aAis=1).values B =df['cnt'].values A_train, A_test, B_train, B_test = train_test_split(A, B, test_size=0.2) if opt.normalize == True: scaler = StandardScaler() A = scaler.fit_transform(A) rf = RandomForestRegressor(n_estimators=opt.n_estimators,maA_features=opt.maA_features,maA_depth=opt.maA_depth) model = rf.fit(A_train,B_train) B_pred = model.predict(A_test) rmse = np.sqrt(mean_squared_error(B_pred, B_test)) mae = mean_absolute_error(B_pred, B_test) print("rmse: ",rmse) print("mae: ",mae)
在上面的代码中,我们先创建了一个python文件,名叫“train.py”,这个程序的主要目的就是将我们导入的数据进行训练模拟然后再对它进行评估,我们导入了 options.py 文件中的 train_options 函数,我们可以将最后一个python文件进行修改tarin.py中的超参数。
2、使用json文件
Json文件的使用,我们可以用来存放所有的超参数,在对数据保持一致的文件结构上,我们是可以将一个options.py 文件替换为 JSON 文件,下面我们先创建一个json文件,代码如下:
{ "normalize":true, "n_estimators":150, "max_features":8, "max_depth":6 }
在这个代码中,它和字典的形式类似,但是它又不是一个字典,因为它包含了文本和字符串的格式,使用json文件就可以用load的方法进行转换成python的字典,代码如下:
f = open("options.json", "rb") parameters = json.load(f)
如果需要对它进行访问时,只需要加上一个方括号,然后在引用它的键名。
3、使用 YAML 文件
YAML它的用法跟JSON相似,都可以对字典进行一种操作,唯一不同的地方是在对层次结构进行表示的时候,YAML使用的是两个空格字符表示,而json是使用括号。下面是一个文件所包含的内容:
{ "normalize":true, "n_estimators":150, "max_features":8, "max_depth":6 }
在 train.py 中,我们先将hello.yaml 文件打开,这个文件一直使用 load 方法转换为 Python 字典,这一次是从 yaml 库中导入的,代码如下:
import yaml f = open('hello.yaml','rb') parameters = yaml.load(f, Loader=yaml.FullLoader)
通过上面的案例分析,得到我们应该根据自己的不同情况来选择最为合适的方式例如,如果我们需要为参数添加注释,JSON 是不合适的,因为它不允许注释,而 YAML 和 argparse 可能非常适合。到此这篇关于Python如何对参数进行解析?python实现解析参数的方法有哪些?的文章就介绍到这了。