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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
在Python的循环体中使用else语句的方法
Mar 30 Python
详谈Python基础之内置函数和递归
Jun 21 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
wxPython实现绘图小例子
Nov 19 Python
pytorch之添加BN的实现
Jan 06 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python终端输出彩色字符方法详解
Feb 11 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
Python可视化工具如何实现动态图表
Oct 23 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数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
组合算法的PHP解答方法
2012/02/04 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
Python实现文件按照日期命名的方法
2015/07/09 Python
Python Requests 基础入门
2016/04/07 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
一道SQL存储过程面试题
2016/10/07 面试题
保护环境的标语
2014/06/09 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
活动总结格式
2014/08/30 职场文书
校园安全广播稿范文
2014/09/25 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
导游词之无锡古运河
2019/11/14 职场文书