重庆网站建设公司海口,实训课做一个网站怎么做,公司名称怎么取名,html5 单页 响应式 网站模板CART决策树#xff08;4-2#xff09; CART#xff08;Classification and Regression Trees#xff09;决策树是一种常用的机器学习算法#xff0c;它既可以用于分类问题#xff0c;也可以用于回归问题。CART决策树的主要原理是通过递归地将数据集划分为两个子集来构建决…CART决策树4-2 CARTClassification and Regression Trees决策树是一种常用的机器学习算法它既可以用于分类问题也可以用于回归问题。CART决策树的主要原理是通过递归地将数据集划分为两个子集来构建决策树。在分类问题中CART决策树通过选择一个能够最大化分裂后各个子集纯度提升的特征进行分裂从而将数据划分为不同的类别。
CART决策树的构建过程包括以下几个步骤
特征选择从数据集中选择一个最优特征用于划分数据集。最优特征的选择基于某种准则如基尼指数Gini Index或信息增益Information Gain。决策树生成根据选定的最优特征将数据集划分为两个子集并递归地在每个子集上重复上述过程直到满足停止条件如子集大小小于某个阈值、所有样本属于同一类别等。剪枝为了避免过拟合可以对生成的决策树进行剪枝操作即删除一些子树或叶子节点以提高模型的泛化能力。
CART决策树的优点包括
计算简单易于理解可解释性强。不需要预处理不需要提前归一化可以处理缺失值和异常值。既可以处理离散值也可以处理连续值。既可以用于分类问题也可以用于回归问题。
然而CART决策树也存在一些缺点
不支持在线学习当有新样本产生时需要重新构建决策树模型。容易出现过拟合现象生成的决策树可能对训练数据有很好的分类能力但对未知的测试数据却未必有很好的分类能力。对于一些复杂的关系如异或关系CART决策树可能难以学习。
CART决策树在许多领域都有广泛的应用如推荐系统中的商品推荐模型、金融风控中的信用评分和欺诈检测、医疗诊断中的疾病预测等。此外CART决策树还可以用于社交媒体情感分析等领域。
数据
使用Universal Bank数据集。
示例: IDAgeExperienceIncomeZIP CodeFamilyCCAvgEducationMortgagePersonal LoanSecurities AccountCD AccountOnlineCreditCard1251499110741.6100100024519349008931.5100100033915119472011100000043591009411212.720000005358459133041200000163713299212140.421550001075327729171121.5200001085024229394310.3300000193510819008930.6210400010103491809302318.930100001165391059471042.4300000012295459027730.120000101348231149310623.83001000145932409492042.5200001015674111291741121001000166030229505411.530000111738141309501044.7313410000184218819430542.410000001946211939160428.13010000205528219472010.52001001215631259401540.9211100010225727639009532300001023295629027711.2126000010244418439132020.71163010002536111529552123.9115900001264319299430530.519700010274016839506440.230000002846201589006412.41000011295630489453912.230000113038131199410413.32010111315935359310611.23122000103240162994117122000010335328419480120.631930000034306189133030.9300000035315509403541.83000010364824819264730.710000003759351219472012.91000001385125719581411.431980000039421814194114353011110403813809411540.7328500010415732849267231.6300100042349609412232.31000000433271329001941.1241210010443915459561610.710000104546201049406515.71000011465731529472042.51000001473914439501430.72153000104837121949138040.2321111111495626819574724.53000001504016499237311.810000015132889209340.720010105261371319472012.9100001053306729400510.11207000005450261909024532.132401001055295449581910.2300001056411713994022281000010575530299400530.120011105856311319561621.2301000059282939406520.21000000603151889132024.5145500000614924399040431.720010106247211259340715.7111201000634218229008911100000064421732945234020000106547231059002423.310000006659351319136013.810000116762361059567022.8133600000685323459512342313201000694721609340732.11000011705329209004540.210000107142181159133513.510000017253296993907412000010734420130920071510000017441168594606143000011752831359461123.31000001763171359490143.82010111
注意数据集中的编号ID和邮政编码ZIP CODE特征因为在分类模型中无意义所以在数据预处理阶段将它们删除。
使用CART决策树对数据进行分类
使用留出法划分数据集训练集:测试集为7:3。
# 使用留出法划分数据集训练集:测试集为7:3
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42)
使用CART决策树对训练集进行训练
# 使用CART决策树对训练集进行训练深度限制为10层
model DecisionTreeClassifier(max_depth10)
model.fit(X_train, y_train)
决策树的深度限制为10层max_depth10。
使用训练好的模型对测试集进行预测并输出预测结果和模型准确度
# 使用训练好的模型对测试集进行预测
y_pred model.predict(X_test)# 输出预测结果和模型准确度
accuracy accuracy_score(y_test, y_pred)
print(模型准确度:, accuracy)
可视化训练好的CART决策树模型
# 可视化训练好的CART决策树模型
dot_data export_graphviz(model, out_fileNone,feature_namesX.columns,class_names[0, 1],filledTrue, roundedTrue,special_charactersTrue)
graph graphviz.Source(dot_data)
graph.render(Universal_Bank_CART) # 保存为PDF文件安装graphviz模块
首先在windows系统中安装graphviz模块
32位系统使用windows_10_cmake_Release_graphviz-install-10.0.1-win32.exe
64位系统使用windows_10_cmake_Release_graphviz-install-10.0.1-win64.exe
注意安装时使用下图中圈出的选项 安装完成后使用pip install graphviz指令在python环境中安装graphviz库。
使用graphviz模块可视化模型
# 可视化训练好的CART决策树模型
dot_data export_graphviz(model, out_fileNone,feature_namesX.columns,class_names[0, 1],filledTrue, roundedTrue,special_charactersTrue)
graph graphviz.Source(dot_data)
graph.render(Universal_Bank_CART) # 保存为PDF文件完整代码
# 导入所需的库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.tree import export_graphviz
import graphviz# 读取数据集
data pd.read_csv(universalbank.csv)# 数据预处理删除无意义特征
data data.drop(columns[ID, ZIP Code])# 划分特征和标签
X data.drop(columns[Personal Loan])
y data[Personal Loan]# 使用留出法划分数据集训练集:测试集为7:3
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42)# 使用CART决策树对训练集进行训练深度限制为10层
model DecisionTreeClassifier(max_depth10)
model.fit(X_train, y_train)# 使用训练好的模型对测试集进行预测
y_pred model.predict(X_test)# 输出预测结果和模型准确度
accuracy accuracy_score(y_test, y_pred)
print(模型准确度:, accuracy)# 可视化训练好的CART决策树模型
dot_data export_graphviz(model, out_fileNone,feature_namesX.columns,class_names[0, 1],filledTrue, roundedTrue,special_charactersTrue)
graph graphviz.Source(dot_data)
graph.render(Universal_Bank_CART6) # 保存为PDF文件