烟台网站建设企汇互联见效付款个人网站模板设计步骤
web/
2025/10/9 11:13:19/
文章来源:
烟台网站建设企汇互联见效付款,个人网站模板设计步骤,省住房和城乡建设厅网站,河北智能网站建设分类算法-决策树、随机森林1.决策树1.1 认识决策树1.2 信息论基础-银行贷款分析1.3 决策树的生成1.4 决策树的划分依据之一-信息增益1.5 sklearn决策树API1.6 泰坦尼克号乘客生存分类2. 集成学习方法-随机森林1.决策树
1.1 认识决策树
决策树思想的来源非常朴素#xff0c;程…
分类算法-决策树、随机森林1.决策树1.1 认识决策树1.2 信息论基础-银行贷款分析1.3 决策树的生成1.4 决策树的划分依据之一-信息增益1.5 sklearn决策树API1.6 泰坦尼克号乘客生存分类2. 集成学习方法-随机森林1.决策树
1.1 认识决策树
决策树思想的来源非常朴素程序设计中的条件分支结构就是if-then结构最早的决策树就是利用这类结构分割数据的一种分类学习方法
1.2 信息论基础-银行贷款分析 每猜一次给一块钱告诉我是否猜对了那么我需要掏多少钱才能知道谁是冠军我可以把球编上号从1到32然后提问冠 军在1-16号吗依次询问只需要五次就可以知道结果。
32支球队log325比特 64支球队log646比特
*1948年香农发表了划时代的论文——通信的数学原理奠定了现代信息论的基础 信息的单位比特 “谁是世界杯冠军”的信息量应该比5比特少。香农指出它的准确信息量应该是
H -(p1logp1 p2logp2 … p32log32) H的专业术语称之为信息熵单位为比特。 公式 当这32支球队夺冠的几率相同时对应的信息熵等于5比特 如果不知道任何一个球队的信息的话5bit 1/32 1/32 5-(1/32logp1/32 1/32log1/32 … 1/32log1/32) 但是当开放一些数据信息时 5-(1/4logp1/4 1/4log1/4 … ) 比如德国1/4 巴西1/4 中国1/4 当得到一些信息时信息熵是减少的。信息熵越大不确定性越大。
1.3 决策树的生成
1.4 决策树的划分依据之一-信息增益
注信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度
特征A对训练数据集D的信息增益g(D,A), 定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差即公式为 结合前面的贷款数据来看我们的公式
信息熵的计算 条件熵的计算 注_ 表示属于某个类别的样本数 其他常见决策树使用的算法
ID3
信息增益 最大的准则
C4.5
信息增益比 最大的准则
CART
回归树: 平方误差 最小
分类树: 基尼系数划分更仔细 最小的准则 在sklearn中可以选择划分的原则1.5 sklearn决策树API
class sklearn.tree.DecisionTreeClassifier(criterion’gini’, max_depthNone,random_stateNone)
决策树分类器
criterion:默认是’gini’系数也可以选择信息增益的熵’entropy’
max_depth:树的深度大小
random_state:随机数种子method:
decision_path:返回决策树的路径1.6 泰坦尼克号乘客生存分类
泰坦尼克号数据 在泰坦尼克号和titanic2数据帧描述泰坦尼克号上的个别乘客的生存状态。在泰坦尼克号的数据帧不包含从剧组信息但它确实包含了乘客的一半的实际年龄。关于泰坦尼克号旅客的数据的主要来源是百科全书Titanica。这里使用的数据集是由各种研究人员开始的。其中包括许多研究人员创建的旅客名单由Michael A. Findlay编辑。 我们提取的数据集中的特征是票的类别存活乘坐班年龄登陆home.dest房间票船和性别。**乘坐班是指乘客班123是社会经济阶层的代表。其中age数据存在缺失。 数据http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt
泰坦尼克号乘客生存分类模型 流程 1、pd读取数据 2、选择有影响的特征处理缺失值 3、进行特征工程pd转换字典特征抽取 x_train.to_dict(orient“records”) 4、决策树估计器流程
决策树的结构、本地保存 1、sklearn.tree.export_graphviz() 该函数能够导出DOT格式 tree.export_graphviz(estimator,out_filetree.dot’,feature_names[‘’,’’]) 2、工具:(能够将dot文件转换为pdf、png) 安装graphviz ubuntu:sudo apt-get install graphviz Mac:brew install graphviz 3、运行命令 然后我们运行这个命令 $ dot -Tpng tree.dot -o tree.png
决策树的优缺点以及改进
优点 简单的理解和解释树木可视化。 需要很少的数据准备其他技术通常需要数据归一化缺点 决策树学习者可以创建不能很好地推广数据的过于复杂的树这被称为过拟合 决策树可能不稳定因为数据的小变化可能会导致完全不同的树被生成改进 减枝cart算法 随机森林
from sklearn.metrics import classification_report
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier, export_graphviz
import pandas as pd
def decision():决策树对泰坦尼克号进行预测生死:return: None# 获取数据titan pd.read_csv(http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt)# 处理数据找出特征值和目标值x titan[[pclass, age, sex]]y titan[survived]print(x)# 缺失值处理x[age].fillna(x[age].mean(), inplaceTrue)# 分割数据集到训练集合测试集x_train, x_test, y_train, y_test train_test_split(x, y, test_size0.25)# 进行处理特征工程特征-》类别-》one_hot编码dict DictVectorizer(sparseFalse)#不产生稀疏矩阵x_train dict.fit_transform(x_train.to_dict(orientrecords))#转换成字典print(dict.get_feature_names())x_test dict.transform(x_test.to_dict(orientrecords))printx_train#用决策树进行预测dec DecisionTreeClassifier()dec.fit(x_train, y_train)# 预测准确率print(预测的准确率, dec.score(x_test, y_test))# 导出决策树的结构export_graphviz(dec, out_file./tree.dot, feature_names[年龄, pclass1st, pclass2nd, pclass3rd, 女性, 男性])return: None
if __name__ __main__:decision()2. 集成学习方法-随机森林 集成学习 通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型各自独立地学习和作出预测。这些预测最后结合成单预测因此优于任何一个单分类的做出预测。 随机森林 定义在机器学习中随机森林是一个包含多个决策树的分类器并且其输出的类别是由个别树输出的类别的众数而定。 例如, 如果你训练了5个树, 其中有4个树的结果是True, 1个数的结果是False, 那么最终结果会是True. 学习算法 根据下列算法而建造每棵树 用N来表示训练用例样本的个数M表示特征数目。 输入特征数目m用于确定决策树上一个节点的决策结果其中m应远小于M。 从N个训练用例样本中以有放回抽样的方式取样N次形成一个训练集即bootstrap取样并用未抽到的用例样本作预测评估其误差。 为什么要随机抽样训练集 如果不进行随机抽样每棵树的训练集都一样那么最终训练出的树分类结果也是完全一样的 为什么要有放回地抽样 如果不是有放回的抽样那么每棵树的训练样本都是不同的都是没有交集的这样每棵树都是“有偏的”都是绝对“片面的”当然这样说可能不对也就是说每棵树训练出来都是有很大的差异的而随机森林最后分类取决于多棵树弱分类器的投票表决。 集成学习API
class sklearn.ensemble.RandomForestClassifier(n_estimators10, criterion’gini’,max_depthNone, bootstrapTrue, random_stateNone)
随机森林分类器
n_estimatorsintegeroptionaldefault 10 森林里的树木数量
criteriastring可选default “gini”分割特征的测量方法
max_depthinteger或None可选默认无树的最大深度
bootstrapbooleanoptionaldefault True是否在构建树时使用放回抽样
随机森林的优点 在当前所有算法中具有极好的准确率 能够有效地运行在大数据集上 能够处理具有高维特征的输入样本而且不需要降维 能够评估各个特征在分类问题上的重要性 对于缺省值问题也能够获得很好得结果
from sklearn.metrics import classification_report
from sklearn.feature_extraction import DictVectorizer
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
def decision():决策树对泰坦尼克号进行预测生死:return: None# 获取数据titan pd.read_csv(http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt)# 处理数据找出特征值和目标值x titan[[pclass, age, sex]]y titan[survived]print(x)# 缺失值处理x[age].fillna(x[age].mean(), inplaceTrue)# 分割数据集到训练集合测试集x_train, x_test, y_train, y_test train_test_split(x, y, test_size0.25)# 进行处理特征工程特征-》类别-》one_hot编码dict DictVectorizer(sparseFalse)x_train dict.fit_transform(x_train.to_dict(orientrecords))print(dict.get_feature_names())x_test dict.transform(x_test.to_dict(orientrecords))# print(x_train)# 用决策树进行预测# dec DecisionTreeClassifier()## dec.fit(x_train, y_train)## # 预测准确率# print(预测的准确率, dec.score(x_test, y_test))## # 导出决策树的结构# export_graphviz(dec, out_file./tree.dot, feature_names[年龄, pclass1st, pclass2nd, pclass3rd, 女性, 男性])# 随机森林进行预测 超参数调优rf RandomForestClassifier()param {n_estimators: [120, 200, 300, 500, 800, 1200], max_depth: [5, 8, 15, 25, 30]}# 网格搜索与交叉验证gc GridSearchCV(rf, param_gridparam, cv2)gc.fit(x_train, y_train)print(准确率, gc.score(x_test, y_test))print(查看选择的参数模型, gc.best_params_)return Noneif __name__ __main__:decision()
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89600.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!