Python [ sklearn 库 学习 ]

Python [ sklearn 学习 ]

内容来自于B站菜菜老师的sklearn课程中的课件。

0. 安装

# pip 终端安装
pip install pandas
pip install matplotlib
pip install numpy
pip install graphviz # --- 或者 conda install python-graphviz
pip install scikit-learn

注意在pycharm中的安装包sklearn不是我们需要的,我们需要的是scikit-learn

1. 决策树

1.1.1 概念

  • 根节点:最开始的节点,无进有出。
  • 中间节点:有进有出的节点。
  • 叶子结点:有进无出的节点。
  • 子节点和父节点:两个节点相连,上面的是父节点,下面的是子节点。

1.1.2 sklearn 中的决策树

函数名含义
tree.DecisionTreeClassifier()分类树
tree.DecisionTreeRegressor()回归树
tree.export_graphviz ()将生成的决策树导出为DOT格式,画图专用
tree.ExtraTreeClassifier()高随机版本的分类树
tree.ExtraTreeRegressor()高随机版本的回归树

1.1.3 使用sklearn.tree 的基本使用

import matplotlib.pyplot as plt
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
import pandas as pd
import graphviz

'''
        加载数据 和 分割数据
'''

wine = load_wine()

# ------ 将数据组成一张表 --------
# pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)

# --- 分割数据
# target_size 测试集占的比例
# 返回值顺序固定,要固定返回值顺序
xtrain,xtest,ytrain,ytest = train_test_split(wine.data,wine.target,test_size=0.3)

'''
        开始训练【调库核心】
'''

clf = tree.DecisionTreeClassifier(criterion="entropy")          # 实例化
clf = clf.fit(xtrain,ytrain)                                    # 用训练集数据训练模型
res = clf.score(xtest,ytest)                                    # 测试模型
print(res)

'''
        绘制树模型
'''
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']

# 方法1 : gr.render(view==True) 报错

dot_data = tree.export_graphviz(clf,feature_names= feature_name,class_names=["琴酒","雪梨","贝尔摩德"],filled=True,rounded=True)
gr = graphviz.Source(dot_data)
# gr.render(view==True)

# 方法2 :使用matplotlib库,只能在控制台运行才会出图,这里我就先保存在根目录峡的img下

fig = plt.figure()
tree.plot_tree(clf,feature_names=feature_name,class_names=["琴酒","雪梨","贝尔摩德"],filled=True,rounded=True)
fig.savefig(os.path.join('img','tree.png'))
img = mpimg.imread(os.path.join('img','tree.png'))
plt.imshow(img)

在pycharm上训练完显示树状图上(gr.render(view=True)),可能会报错,原因可能是库没有安装正确,使用conda安装:

conda install python-graphviz

决策树可视化如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hNvasL48-1678285722590)(tree.png)]

节点中,【第一个】参数代表分类要求; 【第二个】参数代表分类后的信息熵; 【第三个】参数代表此节点包含的样本数; 【第四个】参数代表此节点包含的样本数不同类别的样本数; 【第五个】代表此节点中样本最多的类别。

[*zip(feature_name,clf.feature_importances_)]   # 显示其中不同属性所占的重要程度

1.1.4 重要参数说明

①计算不纯度的计算方法参数
  • criterion:计算方法

【“entropy”】:信息熵 ;【“gini”】:基尼系数【默认参数】

clf = tree.DecisionTreeClassifier(criterion="entropy")
②防止过拟合的一组参数。
  • spiltter:分支依据

【“best”】:侧重将重要的特征作为分枝依据 【“random”】:随机分枝。

  • random_state 随机的整数。
clf = tree.DecisionTreeClassifier(criterion="entropy"
                                  ,random_state=30          #
                                  ,splitter="random"        # "best" 侧重更重要的特征进行分支;“random” 分支时随机
                                  )
③剪枝的相关参数
  • max_depth : 最大树深。

    超过最大深度的数值全部剪掉,建议参数从3开始。【 高样本以及低样本量时非常有效且必要 】

  • min_samples_leaf:最小子节点样本数。

    每个分支的子节点所包含的训练样本数最小个数。

  • min_samples_split:最小父节点分割样本数。

    节点中最少包含样本数才能被分割。

  • max_features:最大特征个数

    限制分支时考虑的特征个数,与剪枝类似。不推荐使用,如果希望通过降维的方式解决过拟合的问题,建议使用PCA,ICA或者特征选择模块的降维算法。

  • min_impurity_decrease:信息增益阈值

    信息增益小设定值时不会分支。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值