在使用jupyter笔记本时,我遇到了这个问题:
TypeError:unsupported format string passed to function .__format__
这是代码开始的地方:
def evaluate_preds(y_true, y_preds):
"""
Performs Evaluation comp on y_true labels and y_preds labels on a classification
"""
accuracy = accuracy_score(y_true,y_preds)
precision = precision_score(y_true,y_preds)
recall = recall_score(y_true,y_preds)
f1 = f1_score(y_true,y_preds)
metric_dict = {"accuracy": round(accuracy,2),
"precision": round(precision,2),
"recall": round(recall,2),
"f1": round(f1,2)}
print(f"Accuracy :{ accuracy_score*100:.2f}%")
print(f"Precision :{ precision_score:.2f}")
print(f"Recall :{ recall_score:.2f}")
print(f"F1 :{ f1_score:.2f}")
return metric_dict
下面的代码正在 jupyter 笔记本中的不同单元上运行
from sklearn.ensemble import RandomForestClassifier
np.random.seed(42)
heart_disease_shuffled= heart_disease.sample(frac=1)
X= heart_disease_shuffled.drop("target",axis =1)
y = heart_disease_shuffled["target"]
train_split = round(0.7 * len(heart_disease_shuffled))
valid_split = round(train_split + 0.15 * len(heart_disease_shuffled))
X_train,y_train = X[:train_split], y[:train_split]
X_valid,y_valid = X[train_split:valid_split], y[train_split:valid_split]
X_test,y_test = X[valid_split:], y[:valid_split]
clf = RandomForestClassifier()
clf.fit(X_train,y_train)
# Make Baseline preds
y_preds = clf.predict(X_valid)
# Evaluate classifier on validation set
baseline_metrics = evaluate_preds(y_valid, y_preds)
baseline_metrics
如何解决?
尝试更改参数和一堆其他内容,但所有这些都弹出一些错误,如上面列出的错误
您正在尝试打印函数而不是它们返回的值。例如,您分配
accuracy = accuracy_score(y_true,y_preds)
但是然后尝试格式化函数,而不是结果
f"Accuracy :{ accuracy_score*100:.2f}%"
相反,您应该使用计算值
f"Accuracy :{ accuracy*100:.2f}%"
但是您还创建了一个具有舍入值的字典。您可以将该字典与 f 字符串一起使用,或者使用
.format
方法
f"Accuracy :{ metric_dict['accuracy']:.2f}"
# -- or --
"Accuracy : {accuracy:.2f}".format(**metric_dict)
非常感谢所有提供帮助或提供任何帮助建议/提示的人。 :)
import pandas as pd
def evaluate_preds(y_true, y_preds):
"""
Performs Evaluation comp on y_true labels and y_preds labels on a classification
"""
accuracy = accuracy_score(y_true,y_preds)
precision = precision_score(y_true,y_preds)
recall = recall_score(y_true,y_preds)
f1 = f1_score(y_true,y_preds)
metric_dict = {"accuracy": round(accuracy,2),
"precision": round(precision,2),
"recall": round(recall,2),
"f1": round(f1,2)}
print(f"Accuracy :{ accuracy *100:.2f}%")
print(f"Precision :{ precision:.2f}")
print(f"Recall :{ recall:.2f}")
print(f"F1 :{ f1:.2f}")
return metric_dict
from sklearn.ensemble import RandomForestClassifier
np.random.seed(42)
heart_disease_shuffled= heart_disease.sample(frac=1)
X= heart_disease_shuffled.drop("target",axis =1)
y = heart_disease_shuffled["target"]
train_split = round(0.7 * len(heart_disease_shuffled))
valid_split = round(train_split + 0.15 * len(heart_disease_shuffled))
X_train,y_train = X[:train_split], y[:train_split]
X_valid,y_valid = X[train_split:valid_split], y[train_split:valid_split]
X_test,y_test = X[valid_split:], y[:valid_split]
clf = RandomForestClassifier()
clf.fit(X_train,y_train)
# Make Baseline preds
y_preds = clf.predict(X_valid)
# Evaluate classifier on validation set
baseline_metrics = evaluate_preds(y_valid, y_preds)
baseline_metrics