python函数中将变量名转换成字符串实例
考虑到在日常中,常常需要对模型指标输出,但涉及多个模型的时候,需要对其有标示输出,故需要将模型变量名转换成字符串。
看到的基本方法有两种:
一、方法层面:
方法1(函数内推荐):
defnamestr(obj,namespace): return[namefornameinnamespaceifnamespace[name]isobj] print(namestr(lr_origin,globals()),'\n', namestr(lr_origin,globals())[0])
输出:
‘lr_origin'
方法2:
importinspect,re defvarname(p): forlineininspect.getframeinfo(inspect.currentframe().f_back)[3]: m=re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)',line) ifm: returnm.group(1) varname(lr_origin)
输出:
'lr_origin'
二、示例
采用方法1
defsmall_feature_model(model,X_train=X_train,y_train=y_train,X_test=X_test,y_test=y_test): pca=PCA(n_components=150,random_state=0,whiten=True) pipeline=Pipeline([('scale',StandardScaler()),('pca',pca)]) processing=pipeline.fit(X_train) X_train=processing.transform(X_train) X_test=processing.transform(X_test) model.fit(X_train,y_train) y_pred=model.predict(X_test) #print(namestr(model,globals())) print('**small-%s的准确率**:%.3f'%(namestr(model,globals())[0],accuracy_score(y_pred=y_pred,y_true=y_test))) small_feature_model(svm_origin)
输出
['svm_origin']
**small-svm_origin的准确率**:0.789
formodelin[svm_origin,svm_rbf,lr_origin]:
small_feature_model(model)
输出
**small-svm_origin的准确率**:0.789 **small-svm_rbf的准确率**:0.811 **small-lr_origin的准确率**:0.835
采用方法2
defsmall_feature_model(model,X_train=X_train,y_train=y_train,X_test=X_test,y_test=y_test): pca=PCA(n_components=150,random_state=0,whiten=True) pipeline=Pipeline([('scale',StandardScaler()),('pca',pca)]) processing=pipeline.fit(X_train) X_train=processing.transform(X_train) X_test=processing.transform(X_test) model.fit(X_train,y_train) y_pred=model.predict(X_test) #print(namestr(model,globals())) print('**small-%s的准确率**:%.3f'%(varname(model),accuracy_score(y_pred=y_pred,y_true=y_test))) small_feature_model(svm_origin)
输出
**small-model的准确率**:0.789
formodelin[svm_origin,svm_rbf,lr_origin]:
small_feature_model(model)
输出
**small-model的准确率**:0.789 **small-model的准确率**:0.811 **small-model的准确率**:0.835
补充知识:一个python实现翻转字符串的函数
实现字符串翻转的函数(python)
string='abcdef' defdemo1(string): iflen(string)<=1: returnstring returndemo1(string[1:])+string[0] print(demo1(string))
中间用到了递归和切片不知道效率如何
以上这篇python函数中将变量名转换成字符串实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。