python函数中将变量名转换成字符串实例


Posted in Python onMay 11, 2020

考虑到在日常中,常常需要对模型指标输出,但涉及多个模型的时候,需要对其有标示输出,故需要将模型变量名转换成字符串。

看到的基本方法有两种:

一、方法层面:

方法1(函数内推荐):

def namestr(obj, namespace):
 return [name for name in namespace if namespace[name] is obj]
print(namestr(lr_origin,globals()),'\n',
namestr(lr_origin,globals())[0])

输出:

‘lr_origin'

方法2:

import inspect, re
def varname(p):
 for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]:
 m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line)
 if m:
 return m.group(1)
varname(lr_origin)

输出:

'lr_origin'

二、示例

采用方法1

def small_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

for model in [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

def small_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

for model in [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'
def demo1(string):
 if len(string) <= 1:
  return string
 return demo1(string[1:]) +string[0]
print(demo1(string))

中间用到了递归和切片不知道效率如何

以上这篇python函数中将变量名转换成字符串实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python条件和循环的使用方法
Nov 01 Python
Django查找网站项目根目录和对正则表达式的支持
Jul 15 Python
Python字典简介以及用法详解
Nov 15 Python
Python读取mat文件,并转为csv文件的实例
Jul 04 Python
python绘制漏斗图步骤详解
Mar 04 Python
20行python代码的入门级小游戏的详解
May 05 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
Django中密码的加密、验密、解密操作
Dec 19 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
基于python实现计算两组数据P值
Jul 10 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 #Python
基于python实现获取网页图片过程解析
May 11 #Python
python将unicode和str互相转化的实现
May 11 #Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 #Python
Python urllib.request对象案例解析
May 11 #Python
python将dict中的unicode打印成中文实例
May 11 #Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 #Python
You might like
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
浅谈React Event实现原理
2018/09/20 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
原生JS实现烟花效果
2020/03/10 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
django之自定义软删除Model的方法
2019/08/14 Python
Python类的动态绑定实现原理
2020/03/21 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
python实现KNN近邻算法
2020/12/30 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
行政专员求职信范文
2014/05/03 职场文书
养牛场项目建议书
2014/05/13 职场文书
争先创优心得体会
2014/09/12 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
初中政教处工作总结
2015/08/12 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
MySQL的存储过程和相关函数
2022/04/26 MySQL