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的Tornado框架中实现简单的在线代理的教程
May 02 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
Python方法的延迟加载的示例代码
Dec 18 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
python获取本机所有IP地址的方法
Dec 26 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
python 画条形图(柱状图)实例
Apr 24 Python
python使用opencv resize图像不进行插值的操作
Jul 05 Python
python实现图片,视频人脸识别(dlib版)
Nov 18 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
python实战之90行代码写个猜数字游戏
Apr 22 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
vue小白入门教程
2018/04/02 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
详解python metaclass(元类)
2020/08/13 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
保护环境的建议书
2014/03/12 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
工作检讨书怎么写
2015/01/23 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android