随机森林:对UCI数据集的分类实现

关于随机森林的原理网上有许许多多,这里不再赘述。sklearn中的RandomForestClassifier包即可满足你对随机森林的调用。
UCI数据集可在UCI官方页面中进行下载并使用。
本文主要用于记录笔者自己的代码过程。
几个简易的数据集可从 sklearn.datasets中进行调用,如红酒数据 wine,鸢尾花数据 iris,可参考知乎的这篇文章sklearn中的datasets数据集。
若数据中并非全部为数字,如有‘male’、‘female’等非数字数据,可调用sklearn.preprocessing进行transform。
关于参数的选择可以进行迭代计算,然后进行可视化,如:

# 大致测试 n_estimators 的最优范围
score1 = []for i in range(0, 150, 10):clf = RandomForestClassifier(n_estimators=i+1,n_jobs=-1,random_state=90)score = cross_val_score(clf, wine.data, wine.target, cv=5).mean()score1.append(score)
print(max(score1))
print((score1.index(max(score1))*10)+1)
plt.figure(figsize=[20,5])
plt.plot(range(1,151,10),score1)
plt.show()

代码结果如下图所示,然后再进行调整。

RandomForest 有调参神器,在sklearn.model_selection中的GridSearchCV,可参考网页。
代码参考如下:

#调整 min_samples_leaf
param_grid={'min_samples_leaf':np.arange(1, 4, 1)}rfc = RandomForestClassifier(n_estimators=14,random_state=90)
GS = GridSearchCV(rfc,param_grid,cv=10)
GS.fit(wine.data,wine.target)print(GS.best_params_)print(GS.best_score_)

最后进行结果参数评估,如acc, precision, recall等评估指标,代码如下:

clf = RandomForestClassifier(n_estimators=14,random_state=90,min_samples_leaf=1,min_samples_split=9,criterion='gini')
clf.fit(train_data, train_label) # 进行学习
train_pred_results=clf.predict(train_data)
print('acc_train = ' + str(np.round(accuracy_score(train_pred_results, train_label), 5)))
test_pred_results=clf.predict(test_data)
print('acc_test = ' + str(np.round(accuracy_score(test_pred_results, test_label), 5)))
print(classification_report(test_label, test_pred_results))

最后进行数据维度重要性可视化,参考代码如下:

features = ['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'magnesium', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols','proanthocyanins', 'color_intensity', 'hue','od280/od315_of_diluted_wines', 'proline']
importances = clf.feature_importances_
indices = np.argsort(importances)[::-1]
num_features = len(importances)
print(num_features)
#将特征重要度以柱状图展示
plt.figure()
plt.title("Feature importances")
plt.bar(range(num_features), importances[indices], color="g", align="center")
plt.xticks(range(num_features), [features[i] for i in indices], rotation='45')
plt.xlim([-1, num_features])
plt.show()#输出各个特征的重要度
for i in indices:print ("{0} - {1:.3f}".format(features[i], importances[i]))

其可视化结果如下:

以及最终的混淆矩阵可视化,代码如下:

import seaborn as sns
import matplotlib as plt
%matplotlib inline
import matplotlib.pyplot as pltconf_mat = confusion_matrix(test_label, test_pred_results)
sns.set(font_scale=3)
plt.figure(figsize=(16,14))
sns.heatmap(conf_mat, annot=True, fmt="d", annot_kws={"size": 20});
plt.title("Confusion matrix", fontsize=30)
plt.ylabel('True label', fontsize=25)
plt.xlabel('Predict label', fontsize=25)
plt.show()

其结果如下:

具体的各类解释可以在网上找到许许多多,本文不作详细解释,给出大致的代码参考,遇到不懂的再去调查学习,最后记录,成长。

随机森林:对UCI数据集的分类实现相关推荐

  1. RDKit | 基于随机森林的化合物活性二分类模型

    基于随机森林算法的化合物二分类机器学习模型 代码示例 #导入依赖包 import pandas as pd import numpy as np from rdkit import Chem, Dat ...

  2. RandomForest:随机森林预测生物标记biomarker——分类

    随机森林简介 R randomForest包 安装与加载 分类Classification 分类结果主坐轴分析 随机选取2/3预测,1/3验证 无监督分类 分层抽样 Reference 猜你喜欢 写在 ...

  3. matlab中使用随机森林对鸢尾花数据集分类

    %% I. 清空环境变量 clear all clc warning off %% II. 导入数据 load iris_data.mat %% % 1. 随机产生训练集/测试集 a = randpe ...

  4. 机器学习基础——分类算法之决策树、随机森林、Titanic乘客生存分类

    目录 1 认识决策树 1.1 信息增益.信息熵的计算 1.2 举例计算​编辑 1.3 决策树的分类依据 1.4 sklearn决策树API 2 泰坦尼克号乘客生存分类 2.1 案例背景 2.2  数据 ...

  5. 【机器学习实战】利用sklearn中的随机森林对红酒数据集进行分类预测

    1. sklearn中的集成算法 sklearn中的集成算法模块ensemble 2.预测代码及结果 %matplotlib inline from sklearn.tree import Decis ...

  6. 练习(一)——决策树与随机森林分析Titanic数据集船员生还情况

    数据描述 Titanic数据集包含11个特征,分别是: Survived:0代表死亡,1代表存活 Pclass:船舱类别,3类别最高 Name.Sex.Age分别为姓名.性别.年龄,其中年龄有缺失 S ...

  7. 大数据分析案例-基于随机森林算法构建新闻文本分类模型

  8. 【华为云技术分享】【Python算法】分类与预测——Python随机森林

    1.随机森林定义 随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务.同时,它也是一种数据降维手段,在处理缺失值.异常值以及其他数据探索等方面,取得了不错的成效.另外,它还担任了集成学习中的 ...

  9. 机器学习笔记 十九:由浅入深的随机森林模型之分类

    随机森林学习内容 1. 集成学习 2.sklearn中的集成算法 2.1 sklearn中的集成算法模块ensemble 2.2 RandomForestClassifier 2.2.1 参数 2.2 ...

  10. 机器学习5—分类算法之随机森林(Random Forest)

    随机森林(Random Forest) 前言 一.随机森林 1.什么是随机森林 2.随机森林的特点 3.随机森林的生成 二.随机森林的函数模型 三.随机森林算法实现 1.数据的读取 2.数据的清洗和填 ...

最新文章

  1. makefile 最简单用法
  2. leetcode-66-加一
  3. mysql unicode转汉字_任意汉字显示,给你的嵌入式系统(含MCU)装上字库
  4. [html] 实现九宫格布局
  5. Linux学习之C语言的进程与线程编程
  6. Node.js文件的同步异步事件循环
  7. 绿盟面试题事件有疑 大家认清类似事件正规方式
  8. 大数据可视化平台有什么优势
  9. 2017-2018-2 1723《程序设计与数据结构》第九周作业 第二周结对编程 总结
  10. C#图片上一张下一张
  11. Dapper系列之三:Dapper的事务修改与删除
  12. NoteExpress的使用方法
  13. 零基础语法入门第九/十讲 使用疑问词进行提问和回答
  14. 微信小程序:日期转化为时间戳+时间戳转化为日期(最全最实用)
  15. 移动硬盘无法读取,也无法显示?看高手是怎么恢复的
  16. Java 本地接口(JNI)编程指南和规范学习笔记2
  17. matlab生成向量和矩阵
  18. 开源的微信个人号接口 itchat 使用
  19. amd锐龙笔记本cpu怎么样_如果你要购买笔记本的话!千万不要现在购买AMD锐龙笔记本!因为...
  20. c语言双边滤波算法,浅析bilateral filter双边滤波器的理解

热门文章

  1. SQL SERVER 不允许保存更改
  2. c语言算除法会把小数转成整数,在C语言中除法运算为什么没有小数部分?
  3. linux如何安装ut880驱动下载,ut880驱动
  4. php100视频教程75到100讲的解压密码
  5. 工业控制网络常用通信协议
  6. armv6 armv7 armv7s架构的区别
  7. 将联系人信息导出为CSV和VCF格式文件
  8. php mysql完全自学手册 smarty_PHPSmarty完全开发手册.pdf
  9. [GBA ROM列表]不断补完中……
  10. 视频营销自动赚钱秘诀