TypeError:传递给函数 .__format__ 的格式字符串不受支持。无法弄清楚这段代码有什么问题,感谢任何形式的帮助

问题描述 投票:0回答:1

在使用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

如何解决?

尝试更改参数和一堆其他内容,但所有这些都弹出一些错误,如上面列出的错误

python machine-learning scikit-learn deep-learning jupyter-notebook
1个回答
0
投票

您正在尝试打印函数而不是它们返回的值。例如,您分配

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)
© www.soinside.com 2019 - 2024. All rights reserved.