考慮到在日常中,常常需要對模型指標輸出,但涉及多個模型的時候,需要對其有標示輸出,故需要將模型變數名轉換成字串。
看到的基本方法有兩種:
一、方法層面:
方法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 = pipeli'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_t
# 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建立變數名軟體 動態建立變數名
我有這段 來建立乙個介面和一些按鈕 maya中的python class mrshadowmapchangerui def init self smattrs shadowmap smapresolution smapsamples smapsoftness smapbias smniceattrs...
python有哪些變數名 python變數名有哪些
python 需要使用識別符號給變數命名,其實識別符號就是用於給程式中變數 類 方法命名的符號 簡單來說,識別符號就是合法的名字 python 語言的識別符號必須以字母 下畫線 開頭,後面可以跟任意數目的字母 數字和下畫線 此處的字母並不侷限於 26 個英文本母,可以包含中文字元 日文字元等。由於 ...
型別轉換 奇葩的變數名
型別轉換 必須有繼承關係 這是我從學c開始就一直忽略的問題,今天翻出來發現還是不甚了解,let us learn about it together.1.自動轉換 子類 父類 低精度可以自動轉換成高精度,前三種之間不能自動轉換 type short char int long float doubl...