相关文章推荐
虚心的长颈鹿  ·  SteamVR使用Curved ...·  2 年前    · 
细心的桔子  ·  python爬虫+可视化GitHub上标星最 ...·  2 年前    · 
飞翔的雪糕  ·  以一种访问权限不允许的方式做了一个访问套接字 ...·  2 年前    · 
温暖的卡布奇诺  ·  这一次,彻底弄懂 JavaScript ...·  2 年前    · 
气宇轩昂的竹笋  ·  k8s-1-安装 - 简书·  2 年前    · 
Code  ›  python函数中将变量名转换成字符串实例开发者社区
python test python函数 python实例
https://cloud.tencent.com/developer/article/1737566
体贴的煎饼
2 年前
砸漏

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

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
砸漏
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > python函数中将变量名转换成字符串实例

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

作者头像
砸漏
发布 于 2020-11-02 11:03:41
3.5K 0
发布 于 2020-11-02 11:03:41
举报
文章被收录于专栏: 恩蓝脚本 恩蓝脚本

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

看到的基本方法有两种:

一、方法层面:

方法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'
 
推荐文章
虚心的长颈鹿  ·  SteamVR使用Curved UI实现与UI的交互_streamvr里的ui事件用什么插件处理-CSDN博客
2 年前
细心的桔子  ·  python爬虫+可视化GitHub上标星最高的python项目_差点是美男****的博客-CSDN博客
2 年前
飞翔的雪糕  ·  以一种访问权限不允许的方式做了一个访问套接字的尝试。) (以一种访问权限不允许的方式做了一个访问套接字的尝试。 - Something_lzm - 博客园
2 年前
温暖的卡布奇诺  ·  这一次,彻底弄懂 JavaScript 执行机制 - 掘金
2 年前
气宇轩昂的竹笋  ·  k8s-1-安装 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号