整套流程:
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