Python中将变量名转换为字符串的两种实用方法
本文介绍在Python中处理多个模型指标时,如何将变量名转换为字符串以便清晰输出。通过两种方法:利用globals()字典查找对象名称,以及使用inspect模块解析源码行获取变量名。文章提供具体代码示例及输出结果对比,帮助开发者优化模型评估信息的展示方式。
在日常开发中,经常需要输出模型的性能指标。当涉及多个模型对比时,为了清晰标识各个模型的结果,往往需要将具体的模型变量名转换为字符串形式进行输出。
目前常见的实现方式主要有两种:
一、基于方法层面的实现:
方法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函数中将变量名转换为字符串的实例分享完毕,希望能为读者提供有益参考,欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









