L5:机器学习|决策树模型学习记录

第L5周:机器学习|决策树模型学习记录

###将决策树模型用于分类或者回归

***实例:通过鸢尾花数据,训练一个决策树模型

#导入数据
import pandas as pd
import numpy as np

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"  
names = ['花萼-length', '花萼-width', '花瓣-length', '花瓣-width', 'class'] 

dataset = pd.read_csv(url, names=names)
dataset
花萼-length花萼-width花瓣-length花瓣-widthclass
05.13.51.40.2Iris-setosa
14.93.01.40.2Iris-setosa
24.73.21.30.2Iris-setosa
34.63.11.50.2Iris-setosa
45.03.61.40.2Iris-setosa
..................
1456.73.05.22.3Iris-virginica
1466.32.55.01.9Iris-virginica
1476.53.05.22.0Iris-virginica
1486.23.45.42.3Iris-virginica
1495.93.05.11.8Iris-virginica

150 rows × 5 columns

###应用该模型,可以根据鸢尾花的四个特征去预测它的类别(分类树)

#数据划分
X = dataset.iloc[ : ,[0,1,2,3]].values
Y = dataset.iloc[ : ,  4].values

#模型训练
from sklearn import tree
from sklearn.datasets import load_iris

clf = tree.DecisionTreeClassifier()  # sk-learn的决策树模型
#DecisionTreeClassifier实际上是基于 CART 算法实现的,默认使用基尼不纯度作为分裂准则。
clf = clf.fit(X, Y)                  # 用数据训练树模型构建()
r   = tree.export_text(clf)

#模型预测结果
text_x = X[[0,1,50,51,100,101], :]
pred_target_prob = clf.predict_proba(text_x)        # 预测类别概率
pred_target = clf.predict(text_x)              # 预测类别

#打印结果
print("\n===模型======")
print(r)
print("\n===测试数据:=====")
print(text_x)
print("\n===预测所属类别概率:=====")
print(pred_target_prob)
print("\n===预测所属类别:======")
print(pred_target)
===模型======
|--- feature_3 <= 0.80
|   |--- class: Iris-setosa
|--- feature_3 >  0.80
|   |--- feature_3 <= 1.75
|   |   |--- feature_2 <= 4.95
|   |   |   |--- feature_3 <= 1.65
|   |   |   |   |--- class: Iris-versicolor
|   |   |   |--- feature_3 >  1.65
|   |   |   |   |--- class: Iris-virginica
|   |   |--- feature_2 >  4.95
|   |   |   |--- feature_3 <= 1.55
|   |   |   |   |--- class: Iris-virginica
|   |   |   |--- feature_3 >  1.55
|   |   |   |   |--- feature_2 <= 5.45
|   |   |   |   |   |--- class: Iris-versicolor
|   |   |   |   |--- feature_2 >  5.45
|   |   |   |   |   |--- class: Iris-virginica
|   |--- feature_3 >  1.75
|   |   |--- feature_2 <= 4.85
|   |   |   |--- feature_1 <= 3.10
|   |   |   |   |--- class: Iris-virginica
|   |   |   |--- feature_1 >  3.10
|   |   |   |   |--- class: Iris-versicolor
|   |   |--- feature_2 >  4.85
|   |   |   |--- class: Iris-virginica


===测试数据:=====
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [7.  3.2 4.7 1.4]
 [6.4 3.2 4.5 1.5]
 [6.3 3.3 6.  2.5]
 [5.8 2.7 5.1 1.9]]

===预测所属类别概率:=====
[[1. 0. 0.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 1.]]

===预测所属类别:======
['Iris-setosa' 'Iris-setosa' 'Iris-versicolor' 'Iris-versicolor'
 'Iris-virginica' 'Iris-virginica']

###应用该模型,可以根据花萼长度、花萼宽度、花瓣长度 预测 花瓣宽度(回归树)

#数据划分
X = dataset.iloc[ : ,[0,1,2]].values
Y = dataset.iloc[ : ,  3].values

#模型训练
from sklearn import tree
from sklearn.datasets import load_iris

clf = tree.DecisionTreeRegressor()         # sk-learn的决策树模型
clf = clf.fit(X, Y)        # 用数据训练树模型构建()
r   = tree.export_text(clf)

#模型预测结果
test_x = X[[0,1,50,51,100,101], :]
test_y = Y[[0,1,50,51,100,101]]
pred_target = clf.predict(test_x)  # 预测y

df = pd.DataFrame()
df["原y"] = test_y
df["预测y"] = pred_target

#打印结果
print("\n===模型======")
# print(r)
print("\n===预测结果======")
print(df)
===模型======

===预测结果======
    原y   预测y
0  0.2  0.25
1  0.2  0.20
2  1.4  1.40
3  1.5  1.50
4  2.5  2.50
5  1.9  1.90
总结·
三种决策树算法:
ID3  决策树——最大信息增益
C4.4 决策树——最大信息增益
CART 决策树——最小基尼指数
分类树和回归树的输入输出都是数值形(枚举型我们会先作问题转化):
● 分类树——输出(叶子节点)的是类别。
● 回归树——输出(叶子节点)的是数值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值