Sklearn基础-分类模型对比(逻辑回归 vs 随机森林)01
一、逻辑回归 vs 随机森林
点击查看代码
# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
import pandas as pd # 导入pandas用于美化输出(可选,但推荐)
# 1. 数据加载
iris = load_iris()
X, y = iris.data, iris.target
# 2. 定义中文名称映射
# iris.target_names 原本是 ['setosa', 'versicolor', 'virginica']
# 我们把它换成中文
target_names_chinese = ['山鸢尾', '变色鸢尾', '维吉尼亚鸢尾']
# 3. 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 4. 模型训练
lr = LogisticRegression(max_iter=1000)
lr.fit(X_train, y_train)
lr_pred = lr.predict(X_test)
# 5. 生成报告(此时 target_names 已经是中文了)
report = classification_report(y_test, lr_pred, target_names=target_names_chinese, output_dict=True)
# --- 下面是处理表头为中文的技巧 ---
# 将报告转换为 DataFrame 表格形式,方便重命名列
df_report = pd.DataFrame(report).transpose()
# 修改列名为中文
df_report.columns = ['精确率', '召回率', 'F1值', '支持数']
# 打印结果
print("逻辑回归评估报告 (中文版):")
print(df_report)
# 3. 定义随机森林模型
# n_estimators=50:找 50 个专家(决策树)来投票
rf = RandomForestClassifier(n_estimators=50, random_state=42)
# 4. 训练模型(让 50 个专家看课本学习)
rf.fit(X_train, y_train)
# 5. 预测(让专家做期末考试卷)
rf_pred = rf.predict(X_test)
# 6. 评估(老师拿着标准答案 y_test 批改试卷)
print("随机森林评估报告:\n", classification_report(y_test, rf_pred))

二、实战总结
1. 实验概述
本实验基于经典的鸢尾花数据集,对比了逻辑回归与随机森林两种算法在多分类任务中的表现。通过数据分割、模型训练及多维度评估,验证了不同算法在处理分类问题时的有效性。
2. 核心流程
- 数据准备:加载鸢尾花数据,按 7:3 比例划分为训练集与测试集(
random_state=42保证结果可复现)。 - 模型构建:
- 逻辑回归:设置
max_iter=1000确保收敛,作为线性基准模型。 - 随机森林:集成 50 棵决策树(
n_estimators=50),利用集成学习提升预测能力。
- 逻辑回归:设置
- 结果评估:使用 Pandas 格式化输出中文评估报告,重点关注精确率、召回率及 F1 值。
3. 实验结论
- 表现:在测试集上,两个模型均达到了 100% 的准确率(F1-score = 1.0)。
- 分析:鸢尾花数据集特征线性可分性强,逻辑回归足以完美处理;随机森林同样表现优异,验证了其强大的拟合能力。
- 启示:并非所有问题都需要复杂模型。在数据规律清晰时,简单的线性模型(如逻辑回归)不仅计算效率高,且具备良好的解释性。
4. 关键收获
- 掌握了
sklearn的标准建模流程(切分-训练-预测-评估)。 - 理解了
random_state在实验复现中的重要性。 - 学会了使用 Pandas 美化输出中文评估报告。
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/19484501

浙公网安备 33010602011771号