机器学习入门篇——sklearn入门&决策树在sklearn中的实现
本文是学习于B站的菜菜的sklearn学习:视频链接
一、什么是sklearn
1、sklearn是一个开源的基于Python语言的机器学习工具包
2、sklearn 通过NumPy,SciPy和Matplotlib等python数值计算的库实现高效的算法应用
3、它涵盖了几乎所有的主流机器学习算法
为什么选择sklearn
它很有深度,必须对算法掌握很好才能用好sklearn,且它缺乏优秀的解读,并且是通往数据挖掘工程师的起点。
开发环境是Jupyter lab
(Python3.9.4 Scikit-learn Graphviz画决策树 Numpy Pandas Matplotlib SciPy)
sklearn有一个完整而丰富的官网,里面讲解了基于sklearn对所有算法的实现和简单应用。
sklearn网址:sklearn 网址
在工程应用中,用python手写代码来从头实现一个算法的可能性非常低,这样不仅耗时耗力,还不一定能够写出构架清晰,稳定性强的模型。更多情况下,是分析采集到的数据,根据数据特征选择适合的算法,在工具包中调用算法,调整算法的参数,获取需要的信息,从而实现算法效率和效果之间的平衡。而sklearn,正是这样一个可以帮助我们高效实现算法应用的工具包。
如果要详细了解算法的内容:介绍两本专业书籍
《数据挖掘导论》机械工业出版社
《机器学习》周志华
二、决策树
决策树(Decision Tree)是一种非参数的有监督学习方法,(非参数也即不限制数据类型和结构,可用于处理各种各样的数据。有监督学习即必须有标签,要给出算法结果 )
它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。
我们来简单了解一下决策树是如何工作的。决策树算法的本质是一种图结构,我们只需要问一系列问题就可以对数据进行分类了。
在这个决策过程中,我们一直在对记录的特征进行提问。最初的问题所在的地方叫做根节点,在得到结论前的每一个问题都是中间节点,而得到的每一个结论都叫做叶子节点,每个叶子节点都是一个类别标签。
关键概念:节点
决策树算法的核心是要解决两个问题:
1)如何从数据表中找出最佳节点和最佳分枝?
2)如何让决策树停止生长,防止过拟合?
几乎所有决策树有关的模型调整方法,都围绕这两个问题展开。这两个问题背后的原理十分复杂。
sklearn中的决策树
模块sklearn.tree
sklearn中决策树的类都在”tree“这个模块之下。这个模块总共包含五个类:
tree.DecisionTreeClassifier:分类树
tree.DecisionTreeRegressor:回归树
tree.export_graphviz:将生成的决策树导出为DOT格式,画图专用
tree.ExtraTreeClassifier:高随机版本的分类树
tree.ExtraTreeRegressor:高随机版本的回归树
sklearn基本建模流程:
在这个流程下,分类树的基本代码是:
from sklearn import tree #导入需要的模块
clf = tree.DecisionTreeClassifier() #实例化
clf = clf.fit(X_train,y_train) #用训练集数据训练模型
result = clf.score(X_test,y_test) #导入测试集,从接口中调用需要的信息