Python网格搜索函数 python 网格搜索

Python数据分析(4)决策树模型

时间:2021/06/30

创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为江干企业提供专业的网站建设、成都网站制作江干网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

系统环境:Windows 10

所用工具:Jupyter Notebook\Python 3.0

涉及的库:pandas\train_test_split\DecisionTreeClassifier\accuracy_score\roc_curve\matplotlib.pyplot\roc_auc_score\export_graphviz\graphviz\os\GridSearchCV

蛋肥想法: 通过测试集数据,检验预测准确度,测得准确度为95.47%。

蛋肥想法: 通过绘制ROC曲线,得出AUC值为0.966,表明预测效果不错。

蛋肥想法: 特征重要性最高的是“satisfaction_level”,而“salary”在该模型中的特征重要性为0,并不符合实际(钱可太重要了~),应该是因为数据处理时单纯将工资分为“高”“中”“低”3个档次,使得该特征变量在决策树模型中发挥的作用较小。

蛋肥想法: GridSearch网格搜索可以进行单参数和多参数调优,蛋肥这里以max_depth参数来练习调优,得出'max_depth': 7时,AUC更好为0.985。

Python语言下的机器学习库

Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉、人工智能、数学、天文等。它同样适用于机器学习也是意料之中的事。当然,它也有些缺点;其中一个是工具和库过于分散。如果你是拥有unix思维(unix-minded)的人,你会觉得每个工具只做一件事并且把它做好是非常方便的。但是你也需要知道不同库和工具的优缺点,这样在构建系统时才能做出合理的决策。工具本身不能改善系统或产品,但是使用正确的工具,我们可以工作得更高效,生产率更高。因此了解正确的工具,对你的工作领域是非常重要的。

这篇文章的目的就是列举并描述Python可用的最有用的机器学习工具和库。这个列表中,我们不要求这些库是用Python写的,只要有Python接口就够了。我们在最后也有一小节关于深度学习(Deep Learning)的内容,因为它最近也吸引了相当多的关注。

我们的目的不是列出Python中所有机器学习库(搜索“机器学习”时Python包索引(PyPI)返回了139个结果),而是列出我们所知的有用并且维护良好的那些。另外,尽管有些模块可以用于多种机器学习任务,我们只列出主要焦点在机器学习的库。比如,虽然Scipy包含一些聚类算法,但是它的主焦点不是机器学习而是全面的科学计算工具集。因此我们排除了Scipy(尽管我们也使用它!)。

另一个需要提到的是,我们同样会根据与其他科学计算库的集成效果来评估这些库,因为机器学习(有监督的或者无监督的)也是数据处理系统的一部分。如果你使用的库与数据处理系统其他的库不相配,你就要花大量时间创建不同库之间的中间层。在工具集中有个很棒的库很重要,但这个库能与其他库良好集成也同样重要。

如果你擅长其他语言,但也想使用Python包,我们也简单地描述如何与Python进行集成来使用这篇文章列出的库。

Scikit-LearnScikit Learn是我们在CB Insights选用的机器学习工具。我们用它进行分类、特征选择、特征提取和聚集。我们最爱的一点是它拥有易用的一致性API,并提供了很多开箱可用的求值、诊断和交叉验证方法(是不是听起来很熟悉?Python也提供了“电池已备(译注:指开箱可用)”的方法)。锦上添花的是它底层使用Scipy数据结构,与Python中其余使用Scipy、Numpy、Pandas和Matplotlib进行科学计算的部分适应地很好。因此,如果你想可视化分类器的性能(比如,使用精确率与反馈率(precision-recall)图表,或者接收者操作特征(Receiver Operating Characteristics,ROC)曲线),Matplotlib可以帮助进行快速可视化。考虑到花在清理和构造数据的时间,使用这个库会非常方便,因为它可以紧密集成到其他科学计算包上。

另外,它还包含有限的自然语言处理特征提取能力,以及词袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency算法)、预处理(停用词/stop-words,自定义预处理,分析器)。此外,如果你想快速对小数据集(toy dataset)进行不同基准测试的话,它自带的数据集模块提供了常见和有用的数据集。你还可以根据这些数据集创建自己的小数据集,这样在将模型应用到真实世界中之前,你可以按照自己的目的来检验模型是否符合期望。对参数最优化和参数调整,它也提供了网格搜索和随机搜索。如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现。我们期盼它的第一个稳定发布版。

StatsmodelsStatsmodels是另一个聚焦在统计模型上的强大的库,主要用于预测性和探索性分析。如果你想拟合线性模型、进行统计分析,或者预测性建模,那么Statsmodels非常适合。它提供的统计测试相当全面,覆盖了大部分情况的验证任务。如果你是R或者S的用户,它也提供了某些统计模型的R语法。它的模型同时也接受Numpy数组和Pandas数据帧,让中间数据结构成为过去!

PyMCPyMC是做贝叶斯曲线的工具。它包含贝叶斯模型、统计分布和模型收敛的诊断工具,也包含一些层次模型。如果想进行贝叶斯分析,你应该看看。

ShogunShogun是个聚焦在支持向量机(Support Vector Machines, SVM)上的机器学习工具箱,用C++编写。它正处于积极开发和维护中,提供了Python接口,也是文档化最好的接口。但是,相对于Scikit-learn,我们发现它的API比较难用。而且,也没提供很多开箱可用的诊断和求值算法。但是,速度是个很大的优势。

GensimGensim被定义为“人们的主题建模工具(topic modeling for humans)”。它的主页上描述,其焦点是狄利克雷划分(Latent Dirichlet Allocation, LDA)及变体。不同于其他包,它支持自然语言处理,能将NLP和其他机器学习算法更容易组合在一起。如果你的领域在NLP,并想进行聚集和基本的分类,你可以看看。目前,它们引入了Google的基于递归神经网络(Recurrent Neural Network)的文本表示法word2vec。这个库只使用Python编写。

OrangeOrange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User Interface,GUI)的。对分类、聚集和特征选择方法而言,它是相当全面的,还有些交叉验证的方法。在某些方面比Scikit-learn还要好(分类方法、一些预处理能力),但与其他科学计算系统(Numpy, Scipy, Matplotlib, Pandas)的适配上比不上Scikit-learn。但是,包含GUI是个很重要的优势。你可以可视化交叉验证的结果、模型和特征选择方法(某些功能需要安装Graphviz)。对大多数算法,Orange都有自己的数据结构,所以你需要将数据包装成Orange兼容的数据结构,这使得其学习曲线更陡。

PyMVPAPyMVPA是另一个统计学习库,API上与Scikit-learn很像。包含交叉验证和诊断工具,但是没有Scikit-learn全面。

深度学习尽管深度学习是机器学习的一个子节,我们在这里创建单独一节的原因是,它最新吸引了Google和Facebook人才招聘部门的很多注意。

TheanoTheano是最成熟的深度学习库。它提供了不错的数据结构(张量,tensor)来表示神经网络的层,对线性代数来说很高效,与Numpy的数组类似。需要注意的是,它的API可能不是很直观,用户的学习曲线会很高。有很多基于Theano的库都在利用其数据结构。它同时支持开箱可用的GPU编程。

PyLearn2还有另外一个基于Theano的库,PyLearn2,它给Theano引入了模块化和可配置性,你可以通过不同的配置文件来创建神经网络,这样尝试不同的参数会更容易。可以说,如果分离神经网络的参数和属性到配置文件,它的模块化能力更强大。

DecafDecaf是最近由UC Berkeley发布的深度学习库,在Imagenet分类挑战中测试发现,其神经网络实现是很先进的(state of art)。

Nolearn如果你想在深度学习中也能使用优秀的Scikit-learn库API,封装了Decaf的Nolearn会让你能够更轻松地使用它。它是对Decaf的包装,与Scikit-learn兼容(大部分),使得Decaf更不可思议。

OverFeatOverFeat是最近猫vs.狗(kaggle挑战)的胜利者,它使用C++编写,也包含一个Python包装器(还有Matlab和Lua)。通过Torch库使用GPU,所以速度很快。也赢得了ImageNet分类的检测和本地化挑战。如果你的领域是计算机视觉,你可能需要看看。

HebelHebel是另一个带有GPU支持的神经网络库,开箱可用。你可以通过YAML文件(与Pylearn2类似)决定神经网络的属性,提供了将神级网络和代码友好分离的方式,可以快速地运行模型。由于开发不久,就深度和广度上说,文档很匮乏。就神经网络模型来说,也是有局限的,因为只支持一种神经网络模型(正向反馈,feed-forward)。但是,它是用纯Python编写,将会是很友好的库,因为包含很多实用函数,比如调度器和监视器,其他库中我们并没有发现这些功能。

NeurolabNeuroLab是另一个API友好(与Matlabapi类似)的神经网络库。与其他库不同,它包含递归神经网络(Recurrent Neural Network,RNN)实现的不同变体。如果你想使用RNN,这个库是同类API中最好的选择之一。

与其他语言集成你不了解Python但是很擅长其他语言?不要绝望!Python(还有其他)的一个强项就是它是一个完美的胶水语言,你可以使用自己常用的编程语言,通过Python来访问这些库。以下适合各种编程语言的包可以用于将其他语言与Python组合到一起:R - RPythonMatlab - matpythonJava - JythonLua - Lunatic PythonJulia - PyCall.jl

不活跃的库这些库超过一年没有发布任何更新,我们列出是因为你有可能会有用,但是这些库不太可能会进行BUG修复,特别是未来进行增强。MDPMlPyFFnetPyBrain如果我们遗漏了你最爱的Python机器学习包,通过评论让我们知道。我们很乐意将其添加到文章中。

python有哪些库

Python中6个最重要的库:

第一、NumPy

NumPy是Numerical

Python的简写,是Python数值计算的基石。它提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。NumPy还包括其他内容:

①快速、高效的多维数组对象ndarray

②基于元素的数组计算或数组间数学操作函数

③用于读写硬盘中基于数组的数据集的工具

④线性代数操作、傅里叶变换以及随机数生成

除了NumPy赋予Python的快速数组处理能力之外,NumPy的另一个主要用途是在算法和库之间作为数据传递的数据容器。对于数值数据,NumPy数组能够比Python内建数据结构更为高效地存储和操作数据。

第二、pandas

pandas提供了高级数据结构和函数,这些数据结构和函数的设计使得利用结构化、表格化数据的工作快速、简单、有表现力。它出现于2010年,帮助Python成为强大、高效的数据分析环境。常用的pandas对象是DataFrame,它是用于实现表格化、面向列、使用行列标签的数据结构;以及Series,一种一维标签数组对象。

pandas将表格和关系型数据库的灵活数据操作能力与Numpy的高性能数组计算的理念相结合。它提供复杂的索引函数,使得数据的重组、切块、切片、聚合、子集选择更为简单。由于数据操作、预处理、清洗在数据分析中是重要的技能,pandas将是重要主题。

第三、matplotlib

matplotlib是最流行的用于制图及其他二维数据可视化的Python库,它由John D.

Hunter创建,目前由一个大型开发者团队维护。matplotlib被设计为适合出版的制图工具。

对于Python编程者来说也有其他可视化库,但matplotlib依然使用最为广泛,并且与生态系统的其他库良好整合。

第四、IPython

IPython项目开始于2001年,由Fernando

Pérez发起,旨在开发一个更具交互性的Python解释器。在过去的16年中,它成为Python数据技术栈中最重要的工具之一。

尽管它本身并不提供任何计算或数据分析工具,它的设计侧重于在交互计算和软件开发两方面将生产力最大化。它使用了一种执行-探索工作流来替代其他语言中典型的编辑-编译-运行工作流。它还提供了针对操作系统命令行和文件系统的易用接口。由于数据分析编码工作包含大量的探索、试验、试错和遍历,IPython可以使你更快速地完成工作。

第五、SciPy

SciPy是科学计算领域针对不同标准问题域的包集合。以下是SciPy中包含的一些包:

①scipy.integrate数值积分例程和微分方程求解器

②scipy.linalg线性代数例程和基于numpy.linalg的矩阵分解

③scipy.optimize函数优化器和求根算法

④scipy.signal信号处理工具

⑤scipy.sparse稀疏矩阵与稀疏线性系统求解器

SciPy与Numpy一起为很多传统科学计算应用提供了一个合理、完整、成熟的计算基础。

第六、scikit-learn

scikit-learn项目诞生于2010年,目前已成为Python编程者首选的机器学习工具包。仅仅七年,scikit-learn就拥有了全世界1500位代码贡献者。其中包含以下子模块:

①分类:SVM、最近邻、随机森林、逻辑回归等

②回归:Lasso、岭回归等

③聚类:K-means、谱聚类等

④降维:PCA、特征选择、矩阵分解等

⑤模型选择:网格搜索、交叉验证、指标矩阵

⑥预处理:特征提取、正态化

scikit-learn与pandas、statsmodels、IPython一起使Python成为高效的数据科学编程语言。

python基础知识有哪些需要背(记住是基础知识)我是初学者

或看好Python的广阔前景,或看中Python的语法简洁,越来越多零基础的人选择学Python。但是Python基础知识有哪些呢?Python部分基础知识点汇总

数据类型:编程中操作的每一个数据都是有其类型的,比如我们的程序需要进行数学计算,那么进行计算的参数和结果就都是数值,我们需要输入、输出一段话,那么这段话就是一个字符串。

变量和常量:变量有什么用?怎么使用?常量又是做什么的?

控制流语句:控制流语句让程序变得更加灵活,稍微复杂一些的程序都需要用到控制流语句中的判断和循环,那么如何在Python中高效应用控制流语句就显得非常重要。

函数:当程序开始复杂起来,某些功能可能需要多次使用的时候,我们就可以把这个功能封装成“函数”,函数就像是工具箱里一件件的工具,在需要的时候打开工具箱拿出即可使用。

数据结构:Python怎么处理数据?列表、元组、集合、字典分别有什么特性都需要详细了解。

异常处理:当你的程序开始复杂起来,可能会遇到某些不确定是否会出现错误的情况,这个时候怎样自定义异常、处理异常就十分重要。

注释:不写注释的程序员不是好程序员。

面向对象:面向对象是一种编程思想,可以让程序变得更可复用,同时逻辑更清晰,效率最高。

文件操作:很多时候我们需要对本地文件进行一些增删改查的操作。

模块和包:Python之所以如此受欢迎,很大程度上得益于它有非常丰富模块和包,这些东西可以让你少造轮子。

Python与网络:python获取网页信息、与其他计算机通信、访问数据库等。

以上大部分其实是编程基础,但是只学这些还是不够的,很多企业招聘的Python岗位均需要和其他方向内容相结合,比如大数据、运维、Web等等。因此零基础快速入门进阶Python技能还需要进行系统的学习。

什么是 grid search

据我所知道的是,python机器学习模块scikitlearn模块中的grid search函数。在某些机器学习的情况下,需要尝试在某范围且间隔为c内(A,B,c)尝试其中所有的参数,并寻求最优解,就是求(A,B,间隔c)范围中哪个值能使得模型表现最好

如何使用Python超参数的网格搜索ARIMA模型

可以在Python中将其实现为一个新的独立函数,名为evaluate_arima_model(),它将时间序列数据集作为输入,以及具有p,d和q参数的元组作为输入。

数据集分为两部分:初始训练数据集为66%,测试数据集为剩余的34%。


网站栏目:Python网格搜索函数 python 网格搜索
转载源于:http://myzitong.com/article/doogeej.html