下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验3决策树分类与K均值聚类一、实验目的及要求理解决策树分类算法的基本思想,掌握使用scikit-learn构建决策树模型的方法。理解决策树的可解释性优势,能够对生成的决策树进行可视化解读,并据此说明模型“为什么做出某种预测”。理解无监督学习中聚类任务的基本思想,掌握K均值聚类算法的实现步骤(初始化、分配、更新、迭代)。掌握肘部法则(ElbowMethod)确定聚类数K的方法,能够对聚类结果进行可视化与业务解释。理解PCA降维在可视化高维数据、辅助聚类分析中的作用。二、实验学时2学时(建议时间分配:讲解10分钟,任务实践80分钟,总结报告10分钟)三、实验前准备软件环境:Python3.8及以上,建议使用JupyterNotebook或VSCode。依赖库:NumPy、Pandas、Matplotlib、scikit-learn。安装命令如下:pipinstallnumpypandasmatplotlibscikit-learn知识储备:已学习教材第4.3.2节(无监督学习)与4.4.3、4.4.4节(决策树、K均值聚类)。四、实验任务任务1决策树水果分类(35分钟)使用教材表4-8的水果识别数据(颜色、大小、形状、真实类别),构建决策树分类器。将类别特征编码后训练模型,并使用sklearn.tree.plot_tree可视化决策路径。对新样本(颜色=红、大小=大、形状=圆)进行预测,并手动追踪决策路径验证结果。任务2K均值水果聚类(30分钟)使用教材表4-9的水果特征数据(甜度、水分),实现K均值聚类。分别尝试K=2、3、4,使用肘部法则(inertia随K的变化曲线)辅助选择合理的K值。任务3聚类结果可视化与评价(15分钟)绘制不同K值下的聚类散点图,将聚类结果与真实类别对比,计算调整兰德指数(ARI),定量评价聚类效果。参考代码以下为完整可运行代码。若图表中文显示为方框,请根据本地环境修改plt.rcParams中的字体名称:#实验四:决策树分类与K均值聚类
importnumpyasnp
importpandasaspd
importmatplotlib.pyplotasplt
fromsklearn.preprocessingimportLabelEncoder
fromsklearn.treeimportDecisionTreeClassifier,plot_tree
fromsklearn.clusterimportKMeans
fromsklearn.metricsimportadjusted_rand_score
#设置中文字体
plt.rcParams['font.sans-serif']=['SimHei','MicrosoftYaHei','ArialUnicodeMS']
plt.rcParams['axes.unicode_minus']=False
#====================任务1:决策树水果分类====================
fruit_df=pd.DataFrame({
"颜色":["红","红","黄","黄","红","红","黄","红"],
"大小":["大","大","大","大","小","小","大","大"],
"形状":["圆","圆","长","长","圆","圆","圆","圆"],
"类别":["苹果","苹果","香蕉","香蕉","樱桃","樱桃","西瓜","西瓜"]
})
le_color=LabelEncoder()
le_size=LabelEncoder()
le_shape=LabelEncoder()
le_label=LabelEncoder()
X_tree=pd.DataFrame({
"颜色":le_color.fit_transform(fruit_df["颜色"]),
"大小":le_size.fit_transform(fruit_df["大小"]),
"形状":le_shape.fit_transform(fruit_df["形状"])
})
y_tree=le_label.fit_transform(fruit_df["类别"])
#限制树深度,避免过拟合
clf=DecisionTreeClassifier(criterion="gini",max_depth=3,random_state=42)
clf.fit(X_tree,y_tree)
plt.figure(figsize=(14,7))
plot_tree(clf,feature_names=["颜色","大小","形状"],
class_names=le_label.classes_,filled=True,rounded=True,fontsize=12)
plt.title("决策树水果分类器")
plt.show()
#预测新样本:红、大、圆
new=pd.DataFrame({
"颜色":[le_color.transform(["红"])[0]],
"大小":[le_size.transform(["大"])[0]],
"形状":[le_shape.transform(["圆"])[0]]
})
pred=le_label.inverse_transform(clf.predict(new))
print(f"新样本(红、大、圆)预测类别:{pred[0]}")
#====================任务2:K均值水果聚类====================
cluster_df=pd.DataFrame({
"甜度":[2.0,1.5,2.5,7.0,8.0,7.5,5.0,5.5,6.0,
1.0,8.5,4.5,2.2,6.5,7.8],
"水分":[9.0,8.5,8.0,4.0,3.5,4.5,5.0,5.5,6.0,
9.5,3.0,5.8,8.8,5.2,3.8],
"真实类别":["西瓜","西瓜","西瓜","香蕉","香蕉","香蕉","苹果",
"苹果","苹果","西瓜","香蕉","苹果","西瓜","苹果","香蕉"]
})
X_cluster=cluster_df[["甜度","水分"]]
#肘部法则
inertias=[]
K_range=range(1,7)
forkinK_range:
kmeans=KMeans(n_clusters=k,random_state=42,n_init=10)
kmeans.fit(X_cluster)
inertias.append(kmeans.inertia_)
plt.figure(figsize=(12,5))
plt.subplot(1,2,1)
plt.plot(K_range,inertias,marker="o")
plt.xlabel("聚类数K")
plt.ylabel("Inertia(簇内平方和)")
plt.title("肘部法则")
plt.grid(True)
#K=3可视化
kmeans3=KMeans(n_clusters=3,random_state=42,n_init=10)
labels3=kmeans3.fit_predict(X_cluster)
plt.subplot(1,2,2)
colors=labels3
plt.scatter(X_cluster["甜度"],X_cluster["水分"],c=colors,cmap="viridis",s=100)
plt.scatter(kmeans3.cluster_centers_[:,0],kmeans3.cluster_centers_[:,1],
marker="X",s=200,c="red",label="簇中心")
plt.xlabel("甜度")
plt.ylabel("水分")
plt.title("K=3聚类结果")
plt.legend()
plt.tight_layout()
plt.show()
#用真实类别计算ARI(仅用于教学演示,聚类本身不使用标签)
true_labels=LabelEncoder().fit_transform(cluster_df["真实类别"])
ari=adjusted_rand_score(true_labels,labels3)
print(f"\nK=3时ARI={ari:.4f}(越接近1表示聚类结果与真实分类越一致)")
预期结果(参考)决策树:新样本(红、大、圆)预测为“苹果”。由于训练数据量很小,决策树可能实现完美分类,这是教学示例,真实场景中应通过max_depth、min_samples_leaf等参数防止过拟合。K均值聚类:肘部法则通常在K=3处出现明显“拐点”;K=3时ARI≈1.0000,说明聚类结果与真实水果类别完全一致。结果记录表请将你的实验结果填入下表:项目结果说明决策树预测(红、大、圆)追踪决策路径得到的类别肘部法则推荐K值根据inertia曲线拐点判断K=3时ARI聚类结果与真实类别的吻合程度簇1特征概括例如:低甜度、高水分簇2特征概括例如:高甜度、低水分簇3特征概括例如:甜度与水分均衡五、实验重点、难点重点:决策树的构建原理与可视化、K均值聚类的“分配—更新”迭代流程、肘部法则确定K值。难点:理解决策树中基尼不纯度/信息增益的划分逻辑;控制决策树深度以避免过拟合;理解K均值对初始簇中心敏感及多次运行取最优的必要性。六、操作要点决策树可视化使用sklearn.tree.plot_tree,无需额外安装Graphviz。K均值聚类前建议对特征进行标准化,尤其当不同特征量纲差异较大时。运行K均值时设置random_state与n_init参数,以获得稳定、可复现的结果。比较聚类结果与真实类别时,仅使用ARI等外部指标做教学验证,切勿在真实无监督任务中“偷看”标签调参。七、注意事项单棵决策树对数据扰动敏感,深度过大容易过拟合;实验中应通过max_depth、min_samples_leaf等参数限制树的大小。K均值假设簇为近似球形且大小相近,若数据分布
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川成都新都投资集团有限公司招聘10人笔试历年参考题库附带答案详解
- 助产士专科护士考试试题及答案
- 资产评估师真题及答案汇编(完整版)
- 2026年乌海嘎查村(社区)党组织书记公务员(行政职业能力和申论综合测验)考试试题解析
- 2026年广西普法考试试题及答案
- 餐饮连锁店店长及服务员KPI考核表
- 2026年初中化学基础知识点培训试卷
- 物流主管物流运输绩效考核表
- 财务团队成本节约考核指标表
- 销售总监绩效衡量表季度考核
- 拆除储罐施工方案
- 防范非法网贷培训课件
- 2025年文化旅游项目申报材料撰写指南方案
- 逆向退货管理办法
- 农村儿童手机依赖问题小组干预策略研究
- 防灾避难场所设计规范
- 口服给药操作技能
- DL∕T 5097-2014 火力发电厂贮灰场岩土工程勘测技术规程
- 照明与健康人因工程学研究
- 山东会展业发展研究
- 房屋装修简单合同
评论
0/150
提交评论