目标:
1. 决策树算法是一种在机器学习和数据挖掘领域广泛应用的强大工具,它模拟人类决策过程,通过对数据集进行逐步的分析和判定,最终生成一颗树状结构,每个节点代表一个决策或一个特征。决策树的核心思想是通过一系列问题将数据集划分成不同的类别或值,从而实现对未知数据的预测和分类。这一算法的开发灵感源自人类在解决问题时的思考方式,我们往往通过一系列简单而直观的问题逐步缩小解决方案的范围。决策树的构建过程也是类似的,它通过对数据的特征进行提问,选择最能区分不同类别的特征,逐渐生成树状结构,最终形成一个可用于预测的模型。
2. 通过鸢尾花数据,训练一个决策树模型,之后应用该模型,可以根据花萼长度、花萼宽度、花瓣长度 预测花瓣宽度
具体实现:
(一)环境:
语言环境:Python 3.10
编 译 器: PyCharm
**(二)具体步骤:
- 导入数据:
# 导入数据
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)
print(dataset)
2. 数据划分:
# 数据划分
X = dataset.iloc[:, [0, 1, 2]].values # 数据集第1-3列为X
Y = dataset.iloc[:, 3].values # 数据集第4列为Y
- 模型训练:
clf = tree.DecisionTreeRegressor() # 决策树模型
clf = clf.fit(X, Y) # 用数据训练决策树模型
r = tree.export_text(clf)
print("训练后的模型:\n", r)
图略,太长了
4. 用训练后的模型来预测一下结果:
# 用训练后的模型来预测一下结果
test_value = X[[0, 1, 50, 51, 100, 101, 102, 103], :] # 抽出数据集中指定第0、1、50...103行的所有数据
test_target = Y[[0, 1, 50, 51, 100, 101, 102, 103]]
pred_target =clf.predict(test_value)
df = pd.DataFrame()
df["真实Y值"] = test_target
df["预测Y值"] = pred_target
print("预测结果如下:\n", df)