• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

我要的是准确率、精确率、召回率和F1值随着C的变化图

发布于 2024-06-04 15:22:36

了解您的需求后,我会提供一个修改后的代码示例,该代码将计算准确率、精确率、召回率和F1值,并绘制这些指标随C值变化的图表。

这里是完整的示例代码:

# ...

C_values = [0.01, 0.1, 1, 10, 100]
logistic_scores = {
    'accuracy': [],
    'precision': [],
    'recall': [],
    'f1': []
}

for C in C_values:
    lr = LogisticRegression(C=C, solver='liblinear')
    scores = cross_val_score(lr, X_train, y_train, cv=5)
    mean_accuracy = scores.mean()

    # 计算每个C值下的精确率、召回率和F1值
    y_pred = lr.fit(X_train, y_train).predict(X_test)  # 注意:这里用训练数据拟合,并在测试集上进行预测
    precision = precision_score(y_test, y_pred, average='macro')
    recall = recall_score(y_test, y_pred, average='macro')
    f1 = f1_score(y_test, y_pred, average='macro')

    # 将结果添加到字典中
    logistic_scores['accuracy'].append(mean_accuracy * 100)  # 转换为百分比
    logistic_scores['precision'].append(precision * 100)
    logistic_scores['recall'].append(recall * 100)
    logistic_scores['f1'].append(f1 * 100)

# 绘制性能指标随C值变化图
plt.figure(figsize=(12, 8))

for metric, values in logistic_scores.items():
    plt.plot(C_values, values, label=f'{metric} (%)')

plt.title('Logistic Regression Performance Metrics vs. Regularization Parameter C')
plt.xlabel('Regularization Parameter C')
plt.ylabel('Scores (%)')
plt.legend()
plt.grid(True)
plt.show()

# 确定最优的C值
optimal_C = C_values[np.argmax([score for score, _ in logistic_scores['accuracy']])]
print(f"Optimal C value for Logistic Regression based on accuracy: {optimal_C}")

代码解释:

  1. 使用cross_val_score来计算每个C值下的模型平均准确率。
  2. 使用单个逻辑回归模型的拟合(fit)和预测(predict)来计算测试集上的精确率、召回率和F1值。
  3. 将每个性能指标的分数存储在logistic_scores字典中,并转换为百分比形式。
  4. 使用matplotlib绘制准确率、精确率、召回率和F1值随C值变化的图表。
  5. 确定最优的C值,它是基于最高准确率得出的。

请注意,此代码片段假设X_trainy_trainy_test已经定义并且是有效的。另外,请确保您的数据集被正确加载并且格式正确。如果问题仍然存在,请检查数据集是否正确划分以及是否存在任何缺失值或格式问题。

0 条评论

发布
问题

在线
客服