零基础入门机器学习--第五章决策树与随机森林
- 人工智能
- 2025-09-04 02:18:02

目标:通过故事 + 直观案例 + 图示,让你完全理解决策树和随机森林,适合零基础学习者!
故事的开始:贷款审批的挑战
小王是一家银行的贷款审批经理,每天他的工作就是审核贷款申请。他的任务是判断:
哪些人值得批准?哪些人风险较高,需要拒绝?以前,他用自己的经验来做决定:
收入高的通常可以批准 ✅信用评分低的人通常风险大 ❌但有些特殊情况,比如年轻人没有信用记录,应该怎么判断呢?🤔这时候,他听说了机器学习,一种可以让计算机自动做决策的技术。于是,他决定学习 决策树 和 随机森林 来帮忙!🚀
第一步:什么是决策树? 直观理解:如果……那么……
决策树(Decision Tree)是一种基于规则的学习方法,它就像一个决策流程图,每个条件都会分支,最终给出答案。
我们来看看小王以前的人工决策方法:
如果 收入 > 50000,那么 借款人通常能还钱,批准贷款。否则,如果 信用评分 > 650,那么 也可以批准贷款。否则,拒绝贷款。这实际上就是一棵决策树:
收入 > 50000? / \ 是 否 / \ 批准贷款 信用评分 > 650? / \ 是 否 / \ 批准贷款 拒绝贷款🔵 这样,小王的“经验”被清晰地整理成了规则!
第二步:机器如何创建决策树?
小王决定让机器自动学习这个“决策流程”。他收集了一些历史数据,包括:
年龄(Age)收入(Income)信用评分(Credit Score)是否有不良信用记录(Bad Credit History)最终贷款是否批准(Loan Approved)🚀 机器学习模型的目标:
让计算机从数据中学习规则,而不是手动编写!
图示:决策树的构建过程机器通过计算,自动找到最好的分裂点:
从哪个特征开始分裂?(如“收入”)选择最佳的拆分条件(如“收入 > 50000”)继续细分,直到决策完成!示例:
收入 > 50000? / \ 是 否 / \ 批准贷款 信用评分 > 650? / \ 是 否 / \ 批准贷款 不良信用记录? / \ 是 否 / \ 拒绝贷款 批准贷款🔵 计算机自动找到最好的决策路径,比人工更可靠!
第三步:为什么单棵决策树可能不够好?
小王发现单棵决策树虽然直观,但可能有以下问题:
容易过拟合(Overfitting): 过于依赖历史数据,在新数据上表现不好。 对数据敏感: 如果某个特征的值稍微变化,整棵树的决策路径可能改变。🌳 于是,小王找到了更强大的方法——随机森林!
第四步:什么是随机森林? 想象一个法官陪审团
小王不想依赖一棵决策树,而是找很多棵树一起投票!这就是随机森林(Random Forest) 的思想。
🌲 随机森林的工作方式
生成多棵决策树(每棵树用不同的数据子集训练)。每棵树独立做决策(例如“批准”或“拒绝”)。最后投票决定最终结果!🚀 图示:
🌲 决策树 1 → 批准 客户申请 → 🌲 决策树 2 → 拒绝 🌲 决策树 3 → 批准 ... 最终投票结果:✔️ 批准随机森林的优势: ✅ 更稳定:即使某棵树预测错误,其他树能纠正它。 ✅ 更准确:比单棵树表现更好,不容易过拟合。
🔵 像一个团队讨论,而不是只听一个人的意见!
第五步:如何训练决策树模型?
🚀 现在,小王准备让计算机来训练一个真正的贷款审批预测模型。
1️⃣ 加载数据 import pandas as pd # 创建贷款数据 data = { 'Age': [25, 45, 35, 50, 23, 40, 60, 30, 27, 48], 'Income': [50000, 80000, 60000, 120000, 30000, 70000, 150000, 50000, 40000, 90000], 'Credit Score': [650, 700, 720, 680, 580, 710, 750, 640, 600, 730], 'Bad Credit History': ['No', 'No', 'Yes', 'No', 'Yes', 'No', 'No', 'Yes', 'No', 'No'], 'Loan Approved': ['Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes', 'Yes'] } df = pd.DataFrame(data)示例输出:
Age Income Credit Score Bad Credit History Loan Approved 0 25 50000 650 No Yes 1 45 80000 700 No Yes 2 35 60000 720 Yes No 3 50 120000 680 No Yes 4 23 30000 580 Yes No 5 40 70000 710 No Yes 6 60 150000 750 No Yes 7 30 50000 640 Yes No 8 27 40000 600 No Yes 9 48 90000 730 No Yes2️⃣ 预处理数据 from sklearn.preprocessing import LabelEncoder # 将"Yes/No"转换为 1/0 label_encoder = LabelEncoder() df['Bad Credit History'] = label_encoder.fit_transform(df['Bad Credit History']) df['Loan Approved'] = label_encoder.fit_transform(df['Loan Approved']) print(df)
示例输出:
Age Income Credit Score Bad Credit History Loan Approved 0 25 50000 650 0 1 1 45 80000 700 0 1 2 35 60000 720 1 0 3 50 120000 680 0 1 4 23 30000 580 1 0 5 40 70000 710 0 1 6 60 150000 750 0 1 7 30 50000 640 1 0 8 27 40000 600 0 1 9 48 90000 730 0 13️⃣ 训练决策树 from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split X = df[['Age', 'Income', 'Credit Score', 'Bad Credit History']] y = df['Loan Approved'] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 训练决策树 clf = DecisionTreeClassifier() clf.fit(X_train, y_train)
第六步:如何验证模型准确性?
🔍 1️⃣ 计算准确率
from sklearn.metrics import accuracy_score y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f'模型准确率: {accuracy:.2f}')示例输出:
模型准确率: 1.00总结
🎯 决策树 是一种基于“如果…那么…”的分类方法。 🎯 随机森林 是多棵决策树一起投票,提高准确性和稳定性。 🎯 训练模型 需要数据预处理、训练、测试和评估。
💡 **你学会了吗?如果还有疑问,可以试着用你的生活案例来画一棵决策树!**😃
零基础入门机器学习--第五章决策树与随机森林由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“零基础入门机器学习--第五章决策树与随机森林”