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中的yield使用方法
Feb 11 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
python使用正则表达式提取网页URL的方法
May 26 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
May 21 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
Django数据库迁移常见使用方法
Nov 12 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 截取字符串专题集合
2010/08/19 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
详解php中的implements 使用
2017/06/13 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
python3 发送任意文件邮件的实例
2018/01/23 Python
python实现图片文件批量重命名
2020/03/23 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
python自动识别文本编码格式代码
2019/12/26 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
巾帼文明岗申报材料
2014/05/01 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
单位工资证明范本
2015/06/12 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
python中的getter与setter你了解吗
2022/03/24 Python