随机森林和交叉验证
一、随机森林随机森林是一种集成学习算法Ensemble Learning主要用于分类和回归任务。简单来说随机森林 多棵决策树 投票/平均1、随机森林的构成随机森林主要由两部分组成 (1). 决策树Decision Tree 每棵树都是一个分类器。邮件||--是否包含免费|||是|||是否大量包含链接|||是|||垃圾邮件(2). 多棵树组合 随机森林生成很多棵决策树随机森林 树1→ 垃圾邮件 树2→ 垃圾邮件 树3→ 正常邮件 树4→ 垃圾邮件 树5→ 垃圾邮件 最终 垃圾邮件2、随机森林分类流程(1)划分数据xtrain,xtest,ytrain,ytest\ train_test_split(x,y,test_size0.2,random_state100)(2)、SMOTE处理类别不平衡oversamplerSMOTE(random_state0)#创建 SMOTE 对象os_x_train,os_y_trainoversampler.fit_resample(xtrain,ytrain)使用 SMOTE 方法解决训练集中类别不平衡问题。 (3)、创建随机森林rfRandomForestClassifier(n_estimators100,max_features0.8,random_state0)n_estimators100表示建立100个树 max_features0.8表示每次分裂随机使用80%的特征 random_state0随机种子 (4)、训练模型rf.fit(os_x_train,os_y_train)(5)预测train_predictedrf.predict(xtrain)#训练集test_predictedrf.predict(xtest)#测试机代码展示importpandasaspdimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportconfusion_matrix,classification_reportfromimblearn.over_samplingimportSMOTE# # 绘制混淆矩阵函数# defcm_plot(y_true,y_pred):cmconfusion_matrix(y_true,y_pred)plt.matshow(cm,cmapplt.cm.Blues)plt.colorbar()foriinrange(len(cm)):forjinrange(len(cm)):plt.annotate(cm[i,j],xy(j,i),horizontalalignmentcenter,verticalalignmentcenter)plt.ylabel(True label)plt.xlabel(Predicted label)returnplt# # 1.读取数据# dfpd.read_csv(spambase.csv)# 特征Xdf.iloc[:,:-1]# 标签ydf.iloc[:,-1]# # 2.划分训练集和测试集# X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state100)# # 3.SMOTE处理样本不平衡# smoteSMOTE(random_state0)X_train_smote,y_train_smotesmote.fit_resample(X_train,y_train)# # 4.建立随机森林模型# rfRandomForestClassifier(n_estimators100,max_features0.8,random_state0)# 训练rf.fit(X_train_smote,y_train_smote)# # 5.训练集预测# train_predrf.predict(X_train)print(训练集结果)print(classification_report(y_train,train_pred,digits4))# 混淆矩阵cm_plot(y_train,train_pred).show()# # 6.测试集预测# test_predrf.predict(X_test)print(测试集结果)print(classification_report(y_test,test_pred,digits4))# 测试集混淆矩阵cm_plot(y_test,test_pred).show()# # 7.特征重要性分析# # 获取特征重要性importancesrf.feature_importances_ importance_dfpd.DataFrame({feature:X.columns,importance:importances})# 排名前10importance_dfimportance_df.sort_values(byimportance,ascendingFalse).head(10)# 绘制柱状图plt.figure(figsize(8,5))plt.barh(importance_df[feature],importance_df[importance])plt.xlabel(Importance)plt.ylabel(Feature)plt.title(Top 10 Feature Importance)plt.gca().invert_yaxis()plt.show()

相关新闻

逻辑回归:从数学原理到Python实战应用

逻辑回归:从数学原理到Python实战应用

1. 逻辑回归:从数学原理到业务落地在机器学习领域,逻辑回归(Logistic Regression)堪称是最基础却又最实用的算法之一。虽然名字里带着"回归",但它实际上是一种经典的分类算法,特别适合处理二分类…

2026/11/1 14:41:18 阅读更多 →
数字信号处理核心原理:从采样量化到滤波器设计与工程实践

数字信号处理核心原理:从采样量化到滤波器设计与工程实践

1. 从“信号”到“处理”:我们每天都在做什么?如果你用过手机听歌、打过视频电话、或者拍过一张照片,那么恭喜你,你已经是一个数字信号处理的“资深用户”了。听起来很高大上的“Digital Signal Processing”,简称DSP&…

2026/11/1 19:14:07 阅读更多 →
3步找回QQ空间青春记忆:GetQzonehistory终极指南

3步找回QQ空间青春记忆:GetQzonehistory终极指南

3步找回QQ空间青春记忆:GetQzonehistory终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经试图找回那些被遗忘在QQ空间角落的青春记忆?那些记录…

2026/11/1 19:14:09 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/3 2:27:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻