当前位置: 首页 > news >正文

网站的开发中山网页设计

网站的开发,中山网页设计,企业网站建站程序,百度云搜索入口数据挖掘入门系列教程#xff08;四#xff09;之基于scikit-lean决策树处理Iris加载数据集数据特征训练随机森林调参工程师结尾数据挖掘入门系列教程#xff08;四#xff09;之基于scikit-lean决策树处理Iris在上一篇博客#xff0c;我们介绍了决策树的一些知识。如果对…数据挖掘入门系列教程四之基于scikit-lean决策树处理Iris加载数据集数据特征训练随机森林调参工程师结尾数据挖掘入门系列教程四之基于scikit-lean决策树处理Iris在上一篇博客我们介绍了决策树的一些知识。如果对决策树还不是很了解的话建议先阅读上一篇博客在来学习这一篇。本次实验基于scikit-learn中的Iris数据。说了好久的Iris从OneR到决策树那么Iris到底长啥样呢加载数据集首先我们还是需要先加载数据集数据集来自scikit自带的iris数据集数据集的内容可以参考以前的博客这里就不在赘述。首先让我们从scikit-learn中加载数据集。from sklearn.datasets import load_iris dataset load_iris() data dataset.data target dataset.target然后我们再使用pandas将数据进行格式化以下添加Iris的属性到数据集中。import numpy as np import pandas as pd data pd.DataFrame(data,columns[sepal_length,sepal_width,petal_length,petal_width]) data[class] targetdata的数据如下所示class代表类别。其他的就是Iris的属性了。数据特征这里我们主要是用画图来看一看Iris数据集的特征。本来以为画图就matpotlib就行了但是没想到有seaborn这个好使用的库来自B站up主的提示。使用的库如下matplotlibseaborn首先我们画散点图import matplotlib.pyplot as plt import seaborn as sb # data.dropna()去除里面的none元素 sb.pairplot(data.dropna(),hueclass)图像如下所示上面的这幅图展示了在四个属性中的类别的分别情况。同时我们还可以画小提琴图plt.figure(figsize(20, 20)) for column_index, column in enumerate(data.columns):if column class:continueplt.subplot(2, 2, column_index 1)sb.violinplot(xclass, ycolumn, datadata)画出的图如下通过上面的这幅图我们可以直观的比较出哪一个变量更具有代表性。比如说petal_width 对类别0更加的友好。接下来就是进行训练了。训练首先的首先我们还是需要从数据集中抽出训练集和测试集。这个内容在前面讲过了就不多讲了。from sklearn.model_selection import train_test_splitinput_data data[[sepal_length,sepal_width,petal_length,petal_width]] input_class data[class]train_data,test_data,train_class,test_class train_test_split(input_data,input_class,random_state 14)then让我们来开始进行训练吧在scikit-learn中实现了决策树和前面的K近邻算法一样我们直接引用就行调用fit训练和predict预测函数。使用如下所示from sklearn.tree import DecisionTreeClassifierdecision_tree DecisionTreeClassifier(random_state14) decision_tree.fit(train_data,train_class) predict_class decision_tree.predict(test_data) predict_score np.mean(predict_class test_class) print(预测的准确度为{}.format(predict_score))DecisionTreeClassifier其他的参数在后面说这里主要说一下random_state参数。为什么决策树还需要random_state这个参数以下知乎上面的两位博主的说法。至于哪个说法是正确的我暂时也不知道如果有知道的可以在评论区留言哦最后得到的预测结果如下所示这里值得注意的是DecisionTreeClassifier()函数里面可以添加很多参数。官方文档在这里 https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html 。这里还是稍微的说一下参数。# criterion gini(默认)/tropy这里对应的就是之前的熵增益和Gini系数# splitter best(默认)/random 每个结点选择的拆分策略# max_depth 树的最大深度。# min_samples_split int类型或者float(默认2) 如果某节点的样本数少于min_samples_split则不会进行拆分了。浮点值表示分数代表所占比例# min_samples_leaf 默认1 这个值限制了叶子节点最少的样本数如果某叶子节点数目小于样本数则会和兄弟节点一起被剪枝。# min_weight_fraction_leaf float默认0.0 这个值限制了叶子节点所有样本权重如果小于这个值则会和兄弟节点一起被剪枝。一般来说如果我们有较多样本有缺失值或者分类树样本的分布类别偏差很大就会引入样本权重这时我们就要注意这个值了。# max_features int, float or {“auto”, “sqrt”, “log2”}默认0.0# max_leaf_nodes 通过限制最大叶子节点数可以防止过拟合默认是None”即不限制最大的叶子节点数。如果加了限制算法会建立在最大叶子节点数内最优的决策树。# class_weight dict/balanced 指定样本各类别的的权重主要是为了防止训练集某些类别的样本过多导致训练的决策树过于偏向这些类别。这里可以自己指定各个样本的权重。“balanced”则算法会自己计算权重样本量少的类别所对应的样本权重会高。# min_impurity_split 这个值限制了决策树的增长如果某节点的不纯度(基尼系数信息增益均方差绝对差)小于这个阈值则该节点不再生成子节点。即为叶子节点 。更多的可以去看官网细节。然后我们可以将这个树的结构可视化将文件保存在“tree.dot”中from sklearn.tree import export_graphviz with open(tree.dot,w) as f:export_graphviz(decision_tree, feature_names [sepal_length, sepal_width, petal_length, petal_width], out_file f)这个是决策树的图同样我们还可以使用交叉验证具体的使用可以参考别人的博客或者看我的这一篇博客from sklearn.model_selection import cross_val_score decision_tree DecisionTreeClassifier() scores cross_val_score(decision_tree,input_data,input_class,scoringaccuracy) print(交叉验证结果: {0:.2f}%.format(np.mean(scores) * 100))通过交叉验证得到的准确度如下比上面的结果略低不过这个是正常的。随机森林前面的博客介绍了随机树这里不多做介绍直接看使用吧。我们通过导入RandomForestClassifier模块并指令森林中树的个数为30具体的参数看官网from sklearn.ensemble import RandomForestClassifier rft RandomForestClassifier(n_estimators20,random_state14) rft.fit(train_data,train_class) predict_class rft.predict(test_data) predict_score np.mean(predict_class test_class) print(随机森林预测的准确度为{}.format(predict_score))最后的结果如下图然后进行交叉验证scores cross_val_score(rft,input_data,input_class,scoringaccuracy) print(Accuracy: {0:.2f}%.format(np.mean(scores) * 100))结果如下emm好像和上面的结果一样因为这个数据集很小可能会有这种情况。调参工程师首先我们可以对决策树的max_feature和max_depth进行调参改变其值最终的结果如下在随机森林中我们可以对树的个数进行调参结果如下图结尾这次并没有使用《 Python数据挖掘入门与实践 》书上的例子实在是它打篮球的数据找不到emm。相比较与oneR算法的70%左右的正确率决策树95%正确率已经算足够优秀了。尽管代码写起来很简单也很容易实现得到结果但是我们真正应该了解的是里面的内涵决策树是什么里面是怎样工作的以及所蕴含的含义……项目地址GitHub
http://wiki.neutronadmin.com/news/45862/

相关文章:

  • 网站建设完工报告中国移动网络优化做什么的
  • 如何学会建网站东莞厂房招标平台
  • vue做单页面网站ftp上传安装wordpress
  • 网站建设阶段性工作重点百度不抓取网站
  • 如何做优秀的视频网站昆明做商城网站多少钱
  • 集团公司做网站的好处有什么青岛网站设计
  • 连云港网站建设开发郴州网站建设公司
  • 公司的网站如何建设方案电商培训内容有哪些
  • 徐州市建设银行网站常州网站推广优化
  • 东莞网站建设服务协议东莞网络营销网络推广系统
  • 绵阳 网站建设网站建设 总体思路
  • 深圳做三网合一网站互联网公司薪酬体系
  • 重庆企业网站开发服务营销手机网站版面
  • 网站建设的要点山东青岛68元建网站
  • 网站外链如何做分类列表页wordpress
  • 上海好的高端网站建设服务公司济南企业自助建站
  • 建设网站要注意事项酷家乐装修设计软件app下载
  • 如何让本机做网站让内网访问产品介绍网站设计
  • 网站备案 邮寄资料新版新白娘子传奇小青最后和谁在一起了
  • wordpress可以做企业网站网站后台程序怎么做
  • 沈阳制作网站企业资深的食品行业网站开发
  • 重庆网站公司推荐360易托管建站工具
  • 德州做网站公司电话投资项目
  • 陕西专业网站建设价格汕头制作网站
  • 建设银行曲江支行网站公司建了网站怎么做分录
  • 商学院网站建设建议wordpress固定连接怎么设置好
  • 深圳平湖做网站html编写新闻页面
  • asp.net网站开发四酷全书金融软件开发公司排名
  • 做网站和做系统的区别seo快速排名
  • 公司网站建设的目标是什么wordpress书插件