美文网首页
[机器学习实战-分类-决策树]-以鸢尾花分类实验为例

[机器学习实战-分类-决策树]-以鸢尾花分类实验为例

作者: Andy计算机专业 | 来源:发表于2020-07-21 12:11 被阅读0次

    整套流程:
    1.数据获取,划分训练集测试集
    2.模型训练->模型预测->模型评估
    3.模型的保存与加载
    4.模型可视化
    iris数据集简介:共150条数据,三个类(分别:Setosa,Versicolour,Virginica。每个类50条数据),4个维度特征(分别为:萼片长度、萼片宽度、花瓣长度、花瓣宽度)
    数据源:https://archive.ics.uci.edu/ml/datasets/iris

    """1.数据获取,划分训练集测试集"""
    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    
    # 数据获取
    iris = datasets.load_iris() # 加载 iris 数据集
    iris_feature = iris.data    # 特征数据
    iris_target = iris.target   # 分类数据
    print('类别:',iris.target_names)
    print('特征:',iris.feature_names)
    
    # 划分训练集测试集: test_size测试集占比, random_stat为数据混乱程度
    feature_train, feature_test, target_train, target_test = train_test_split(iris_feature, iris_target, test_size=0.33, random_state=42)
    print(f'划分: 数据集{len(iris_target)}条(训练集{len(target_train)}条,测试集{len(target_test)}条)')
    
    类别: ['setosa' 'versicolor' 'virginica']
    特征: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
    划分: 数据集150条(训练集100条,测试集50条)
    
    """2.模型训练->模型预测->模型评估"""
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.metrics import accuracy_score
    
    # 模型训练
    dt_model = DecisionTreeClassifier() # 所以参数均置为默认状态
    dt_model.fit(feature_train,target_train) # 使用训练集训练模型
    # 模型预测
    predict_results = dt_model.predict(feature_test) # 使用模型对测试集进行预测
    # 模型评估
    print('精确率(Precision):',accuracy_score(predict_results, target_test))
    
    精确率(Precision): 1.0
    
    """3.模型的保存与加载"""
    import joblib
    
    # 保存模型:用于以后预测
    joblib.dump(dt_model, 'dt_model.pkl')
    # 加载模型
    new_dt_model = joblib.load('dt_model.pkl')
    

    [注].模型可视化需安装graphviz软件,安装时勾选添加到Path,安装后命令行执行dot -c
    官网下载地址:http://www.graphviz.org/

    """4.模型可视化"""
    import graphviz
    from sklearn import tree
    
    dot_data = tree.export_graphviz(dt_model,
                                    feature_names=['sepal length','sepal width','petal length','petal width'], # 特征名称
                                    class_names=['setosa', 'versicolor', 'virginica'], # 目标变量的类别名
                                    filled=True, rounded=True,
                                    special_characters=True)
    graph = graphviz.Source(source=dot_data,filename='iris_dt_model.gv',format='png',)
    graph.render(cleanup=True) # 保存模型可视化为png图片
    
    'iris_dt_model.gv.png'
    

    [至此完结] Andy:2020-07-19 Q597966823

    相关文章

      网友评论

          本文标题:[机器学习实战-分类-决策树]-以鸢尾花分类实验为例

          本文链接:https://www.haomeiwen.com/subject/zdkikktx.html