为什么决策树是非参数学习算法

狭路相逢勇者胜
最近在网络课上报了一门《机器学习》的课,由于数据挖掘的缘故有不少的接触,真正入门才发现坑点不少,也许总结得还不够深,后面会再慢慢补充。
一、回归树和决策树
决策树可以用来实现回归和分类,用作回归时,则称为回归树;用作决策时,则称为分类树或者决策树。
分类树的观测值是离散的,回归树的观测值必须是数值或者是连续的。
普通回归和回归树是有区别的,回归树拟合出来的曲线不平滑,即两个测试样本互相靠近,在一个小的区间内取到相同的值。普通回归却拟合出来的曲线是平滑的。
二、信息增益、信息增益率和基尼系数
ID3:信息增益是衡量该特征A使得数据集D结果不确定性的下降程度,信息增益越大越好,倾向于多值属性。
C4.5:信息增益率是衡量该特征A下信息分布的均度和广度。信息增益率倾向于少值属性而且分布不均。
CART:基尼系数是熵公式下的一阶展开,衡量的是特征A的不纯度,基尼系数越大越好,倾向于多值属性,基尼的不纯度相当于熵所对应的混乱程度。
三、ID3\C4.5\CART的缺点
ID3算法使用的是自顶向下的贪婪搜索遍历可能的决策树空间构造,属于局部最优,不一定全局最优。
1、用信息增益选择属性时偏向于选择分枝比较多的属性值,即取值多的属性,容易过拟合
2、抗噪性差
3、递归循环,消耗内存
4、只能处理离散数据
1、递归循环,消耗内存
此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行
1、不如线性回归普遍;要求大量训练数据;难以确定某个特征的整体影响;比线性回归模型难解释
CART的决策是二叉树的,它同样可以处理离散值,但是,只能选择其中一种来把数据分成两个部分。CART与ID3区别:ID3和CART算法的区别主要集中在 树的生成和树的修剪方面,但是ID3算法只能处理离散型的描述性属性,如果目标变量是标称的,并且是具有两个以上的类别,则CART可能考虑将目标类别合并成两个超类别(双化); 如果标变量是连续的,则CART算法找出一组基于树的回归方程来预测目标变量。
四、防止过拟合
1、先剪枝和后剪枝
2、cross-validation
3、bagging和随机森林
五、连续变量的阈值选择
2、样本分割的平均值
4、各样本点的数值附近
该图中的绿线代表可能的最优分割阈值点,根据信息论知识,像middle[72,75](红线所示)这个分割点,72,75属于同一个类,这样的分割点是不可能有信息增益的。(把同一个类分成了不同的类,这样的阈值点显然不会有信息增益,因为这样的分类没能帮上忙,减少可能性)
六、缺失值的处理
如果有些训练样本或者待分类样本缺失了一些属性值,那么该如何处理?要解决这个问题,需要考虑3个问题:
i)当开始决定选择哪个属性用来进行分支时,如果有些训练样本缺失了某些属性值时该怎么办?
ii)一个属性已被选择,那么在决定分支的时候如果有些样本缺失了该属性该如何处理?
iii)当决策树已经生成,但待分类的样本缺失了某些属性,这些属性该如何处理?
针对这三个问题,昆兰提出了一系列解决的思路和方法。
对于问题i),计算属性a的增益或者增益率时,如果有些样本没有属性a,那么可以有这么几种处理方式:
(I)忽略这些缺失属性a的样本。
(C)给缺失属性a的样本赋予属性a一个均值或者最常用的的值。
(R)计算增益或者增益率时根据缺失属性样本个数所占的比率对增益/增益率进行相应的“打折”。
(S)根据其他未知的属性想办法把这些样本缺失的属性补全。
对于问题ii),当属性a已经被选择,该对样本进行分支的时候,如果有些样本缺失了属性a,那么:
(I)忽略这些样本。
(C)把这些样本的属性a赋予一个均值或者最常出现的值,然后再对他们进行处理。
(R)把这些属性缺失样本,按照具有属性a的样本被划分成的子集样本个数的相对比率,分配到各个子集中去。至于哪些缺失的样本被划分到子集1,哪些被划分到子集2,这个没有一定的准则,可以随机而动。
(A)把属性缺失样本分配给所有的子集,也就是说每个子集都有这些属性缺失样本。
(U)单独为属性缺失的样本划分一个分支子集。
(S)对于缺失属性a的样本,尝试着根据其他属性给他分配一个属性a的值,然后继续处理将其划分到相应的子集。
对于问题iii),对于一个缺失属性a的待分类样本,有这么几种选择:
(U)如果有单独的确实分支,依据此分支。
(c)把待分类的样本的属性a值分配一个最常出现的a的属性值,然后进行分支预测。
(S)根据其他属性为该待分类样本填充一个属性a值,然后进行分支处理。
(F)在决策树中属性a节点的分支上,遍历属性a节点的所有分支,探索可能所有的分类结果,然后把这些分类结果结合起来一起考虑,按照概率决定一个分类。
(H)待分类样本在到达属性a节点时就终止分类,然后根据此时a节点所覆盖的叶子节点类别状况为其分配一个发生概率最高的类。
七、随机森林抽样样本至少一次被选中的概率为63.7%
八、样本的误判次数服从正态分布
九、特征数和样本数比例大概为1:30
以上内容部分出自:
http://blog.sina.com.cn/s/blog_68ffc7a40100urn3.html
http://blog.csdn.net/qq_/article/details/
没有更多推荐了,机器学习算法之决策树用法详解(使用Scikit-learn模块)
[导读]决策树(DTs)是一种用于分类和回归的非参数监督学习方法。 目标是通过创建一个模型,学习隐藏在数据中的简单决策规则来预测目标变量的数值和用于分类。
  本文约1900字,给出了决策树模型在分类、回归两方面的具体实现。具体包括对鸢尾花的分类、泰坦尼克号乘客生还情况预测两个具体实例。建议文中所有代码读者在自己机器上运行。  决策树(DTs)是一种用于分类和回归的非参数监督学习方法。目标是通过创建一个模型,学习隐藏在数据中的简单决策规则来预测目标变量的数值和用于分类。  例如,在下面的示例中,决策树利用分支结构(if-then-else)的决策规则从数据中学习以逼近正弦曲线。决策树的深度越大,决策规则越复杂,拟合的模型也更好。  决策树的优点:  ⑴模型易于理解、结果易于解释;树结构能够可视化。  ⑵只需少量的数据准备。别的方法经常要求数据标准化,创建虚拟变量,移除空白值。  ⑶训练决策树的成本随着树的高度呈指数增加。  ⑷能够处理数值和分类数据,其它方法通常只擅长处理只包含一种类型数据的数据集。  ⑸能够处理多输出问题。  ⑹是一个白盒子模型,易于理解和解释,不像人工神经网络模型(黑盒子),难以解释。  ⑺可以使用统计测试验证模型,增加模型的可靠性。  ⑻即使模型采取的假设与真实数据有些违背,其最终性能也比较好。  决策树的缺点:  ⑴不宜创建过度复杂的树,以免造成过拟合。需要诸如修剪(当前不支持),设置叶节点所需的最小样本数或设置树的最大深度的机制来避免这个问题。  ⑵决策树可能不稳定,小数据的变化可能导致生成完全不同的树。这个问题可以通过在集成模型中使用决策树来缓解。  ⑶有些概念很难学习,因为决策树不能轻易表达它们。例如XOR,奇偶校验或多路复用器问题。  ⑷学习一棵最优决策树相当难的,即使对于相当简单概念。因此,在实际的决策树学习算法中,往往是基于启发式算法(如贪婪算法)来实现。但是贪婪算法并不能得到全局最优结果。这可以通过在集成模型中使用多棵树的方法来缓解面临的问题。  解决实际问题――分类  DecisionTreeClassifier是Scikit-learn模块中的一个类,能够实现数据集的多分类问题。  与其它分类器一样,DecisionTreeClassifier采用两个输入参数,参数类型为两个数组(array),一个数组X(可以为)作为训练样本,当然你可以看成一个二维矩阵,行数就是数据集的样本数量n_samples,列数就是特征数n_另一个数组Y是以整数为数值的列向量,行数为n_samples。  DecisionTreeClassifier实现多分类问题(如K类,则labels为[0, ..., K-1]):  我们使用(鸢尾花)Iris数据集,构建如下决策树。  #从sklearn.datasets中导入数据集load_iris,导入tree模块  from sklearn.datasets import load_iris  from sklearn import tree  #读取数据存入变量iris  iris = load_iris()  #初始化决策树模型  clf = tree.DecisionTreeClassifier()  #调用模型中fit函数/模块训练模型  clf = clf.fit(iris.data, iris.target)  此时,我们已经完成了模型训练。我们可以使用export_graphviz导出器将训练的决策树以Graphviz格式导出。使用如下代码:  with open("iris.dot", 'w') as f:  f = tree.export_graphviz(clf, out_file=f)  然后,我们使用Graphviz的dot工具创建pdf格式的输出文件(或者其它被支持的格式)。  import os  os.unlink('iris.dot')  如果我们安装好了python的pydotplus模块,也可以用如下方法创建pdf格式的文件。代码如下:  import pydotplus  dot_data = tree.export_graphviz(clf, out_file=None)  graph = pydotplus.graph_from_dot_data(dot_data)  graph.write_pdf("iris.pdf")  export_graphviz导出器也支持许多其他选项,这包括为不同的结点(nodes)着色,使用显示变量和类名等。IPython notebooks也可以使用Image()函数。  #从IPython.display模块中导入Image()函数  from IPython.display import Image  dot_data = tree.export_graphviz(clf, out_file=None,  feature_names=iris.feature_names,  class_names=iris.target_names,  filled=True, rounded=True,  special_characters=True)  graph = pydotplus.graph_from_dot_data(dot_data)  Image(graph.create_png())  运行以上代码则以pdf的格式输出你所构建的决策树。  在拟合模型后,使用predict()函数对样本做分类预测。使用如下代码:  clf.predict(iris.data[:1, :])  预测每个类的概率:  clf.predict_proba(iris.data[:1, :])  解决实际问题――泰坦尼克号乘客的生还情况预测  分析:首先红互联网上导入泰坦尼克号乘客数据,使用pandas中的read_csv()函数;观察数据发现数据缺失严重,对缺时的某些数据补全;使用决策树模型进行预测。  # 导入pandas模块,使用read_csv()函数直接从互联网收集泰坦尼克号乘客数据并转化成dataframe格式给titanic。  import pandas as pd  titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')  #观察前几行数据,了解数据集大致信息;使用info()函数查看变量信息  titanic.head()  titanic.info()  #特征的选择,本模型选择了sex,age,pclass三个特征。  X = titanic[['pclass', 'age', 'sex']]  y = titanic['survived']  # 补充age的缺失值。  X['age'].fillna(X['age'].mean(), inplace=True)  #训练集比例占整个数据集的75%,从sklearn.cross_validation导入train_test_split分割数据  from sklearn.cross_validation import train_test_split  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state = 33)  # 使用scikit-learn.feature_extraction中的特征转换器DictVectorizer  from sklearn.feature_extraction import DictVectorizer  vec = DictVectorizer(sparse=False)  # 转换特征后,我们发现凡是类别型的特征都单独剥离出来,独成一列特征,数值型的则保持不变。  X_train = vec.fit_transform(X_train.to_dict(orient='record'))  print vec.feature_names_  #对测试数据的特征进行转换。  X_test = vec.transform(X_test.to_dict(orient='record'))  # 从sklearn.tree中导入决策树分类器,并初始化。  from sklearn.tree import DecisionTreeClassifier  dtc = DecisionTreeClassifier()  # 将预处理的数据训练模型。  dtc.fit(X_train, y_train)  # 将训练好的模型对样本测试集做预测。  y_predict = dtc.predict(X_test)  # 从sklearn.metrics导入classification_report并输出详细分类信息。  from sklearn.metrics import classification_report  print classification_report(y_predict, y_test, target_names = ['died', 'survived'])  最终输出结果:  完整代码如下:  iris集完整代码:  from sklearn.datasets import load_iris  from sklearn import tree  iris = load_iris()  clf = tree.DecisionTreeClassifier()  clf = clf.fit(iris.data, iris.target)  with open("iris.dot", 'w') as f:  f = tree.export_graphviz(clf, out_file=f)  import os  os.unlink('iris.dot')  import pydotplus  dot_data = tree.export_graphviz(clf, out_file=None)  graph = pydotplus.graph_from_dot_data(dot_data)  graph.write_pdf("iris.pdf")  from IPython.display import Image  dot_data = tree.export_graphviz(clf, out_file=None,           feature_names=iris.feature_names,           class_names=iris.target_names,           filled=True, rounded=True,           special_characters=True)  graph = pydotplus.graph_from_dot_data(dot_data)  Image(graph.create_png())  clf.predict(iris.data[:1, :])  clf.predict_proba(iris.data[:1, :])  titanic据集完整代码:  import pandas as pd  titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')  titanic.head()  titanic.info()  X = titanic[['pclass', 'age', 'sex']]  y = titanic['survived']  X['age'].fillna(X['age'].mean(), inplace=True)  from sklearn.cross_validation import train_test_split  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state = 33)  from sklearn.feature_extraction import DictVectorizer  vec = DictVectorizer(sparse=False)  X_train = vec.fit_transform(X_train.to_dict(orient='record'))  print vec.feature_names_  X_test = vec.transform(X_test.to_dict(orient='record'))  from sklearn.tree import DecisionTreeClassifier  dtc = DecisionTreeClassifier()  dtc.fit(X_train, y_train)  y_predict = dtc.predict(X_test)  from sklearn.metrics import classification_report  print classification_report(y_predict, y_test, target_names = ['died', 'survived'])
[责任编辑:yxl]
转载申明:中国智能化产业与产品网独家专稿,转载请注明出处,违者必究!
机器学习&&Scikit-learn
人工智能、机器学习和深度学习的区别是什么?
AI研究:如何让机器学习算法解释自己的决策?
机器学习教材中的 7 大经典问题
人工智能和机器学习对投资交易领域的四类影响
机器学习在电商应用中的三个境界:爆款模型、转化率模型及个性化模型
&& ICP备案号:京ICP备号 - 技术支持:智能君博科技
地址:北京市朝阳区劲松南路1号
加为微信好友决策树是一个非参数的监督式学习方法,主要用于分类和回归。算法的目标是通过推断数据特征,学习决策规则从而创建一个预测目标变量的模型。如下如所示,决策树通过一系列if-then-else 决策规则 近似估计一个正弦曲线。
决策树优势:
简单易懂,原理清晰,决策树可以实现可视化
数据准备简单。其他的方法需要实现数据归一化,创建虚拟变量,删除空白变量。(注意:这个模块不支持缺失值)
使用决策树的代价是数据点的对数级别。
能够处理数值和分类数据
能够处理多路输出问题
使用白盒子模型(内部结构可以直接观测的模型)。一个给定的情况是可以观测的,那么就可以用布尔逻辑解释这个结果。相反,如果在一个黑盒模型(ANN),结果可能很难解释
可以通过统计学检验验证模型。这也使得模型的可靠性计算变得可能
即使模型假设违反产生数据的真实模型,表现性能依旧很好。
决策树劣势:
可能会建立过于复杂的规则,即过拟合。为避免这个问题,剪枝、设置叶节点的最小样本数量、设置决策树的最大深度有时候是必要的。
决策树有时候是不稳定的,因为数据微小的变动,可能生成完全不同的决策树。 可以通过总体平均(ensemble)减缓这个问题。应该指的是多次实验。
学习最优决策树是一个NP完全问题。所以,实际决策树学习算法是基于试探性算法,例如在每个节点实现局部最优值的贪心算法。这样的算法是无法保证返回一个全局最优的决策树。可以通过随机选择特征和样本训练多个决策树来缓解这个问题。
有些问题学习起来非常难,因为决策树很难表达。如:异或问题、奇偶校验或多路复用器问题
如果有些因素占据支配地位,决策树是有偏的。因此建议在拟合决策树之前先平衡数据的影响因子。
import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
# Create a random dataset
rng = np.random.RandomState(1)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))
# Fit regression model
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)
# Plot the results
plt.figure()
plt.scatter(X, y, c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue", label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()
多输出问题
多输出问题时需要预测多个输出的监督式学习问题。即Y是一个2d的向量,大小为[n_samples, n_outputs]。
当输出之间不相关时,一个简单的解决办法是建立n个独立模型。对于每一个输出,使用这些模型独立预测这每个输出。由于输出是和相同的输入相关的,所以一个更好的办法是建立一个能够持续预测所有输出的单一模型。首先,系统需要的训练时间更少了,因为只建立了一个模型。其次准确性也会得到提高。
决策树的策略需要修改以支持多分类问题。
叶子上存储n个输出变量
使用不同的标准计算所有n输出的平均减少
这一节是关于&&和的一些知识点。如果一个决策树的输出向量Y大小为[n_samples, n_outputs],预测量有:
predict:输出n个预测值
predict_proba:输出有n个输出的向量组成的列表。
多输出的回归的例子:输入X是一个单一的值,输出Y是输入X的Sine和Cosine
函数函数功能
(X[, check_input])
返回每个样本的叶节点的预测序号
(X[, check_input])
返回决策树的决策路径 [n_samples, n_nodes]
(X, y[, sample_weight, check_input, …])
从训练数据建立决策树,返回一个对象
fit_transform(X[, y])
将数据X转换[n_samples, n_features_new]
get_params([deep])
得到估计量的参数,返回一个映射
predict(X[, check_input])
预测X的分类或者回归,返回[n_samples]
predict_log_proba(X)
预测输入样本的对数概率,返回[n_samples, n_classes]
predict_proba(X[, check_input])
预测输入样本的属于各个类的概率[n_samples, n_classes]
score(X, y[, sample_weight])
返回对于测试数据的平均准确率
set_params(**params)
设置估计量的参数
transform(*args, **kwargs)
将输入参数X减少的最重要的特征,返回[n_samples, n_selected_features]
阅读(...) 评论()决策树学习笔记_悟乙己_新浪博客
决策树学习笔记
学习这篇论文从27日开始,已经第九天了,今天只学了其中一个软件代码案例,信息量就够大的了。
今天学习了分类算法中的决策树。博大精深。​
一、基本信息
1、名称区别:决策树是统称,也称为分类树(分类变量)、回归树(连续变量)。
2、定义:决策树模型是一种简单易用的非参数分类器。它不需要对数据有任何的先验假设,计算速度较快,结果容易解释,而且稳健性强,不怕噪声数据和缺失数据。
a、直观明了,神经网络&(这种方法的权重以及预测机制往往让人觉得很不透明)&等预测方法。
b、对缺失值的处理,是删除因变量缺失的观测&,而保留有自变量缺失的观测&。
3、决策树建模步骤:
1、如何选择自变量
2、如何选择分割点
3、确定停止划分的条件
二、常见分类
1、3种最常见的决策树:
CART分类回归树(classification&and&regression&tree)。每个节点采用二分法(与C4.5最大的区别,c4.5可以有很多分支);用Gini&Ratio作为衡量指标,如果分散指标程度很高的说明数据有很多类别。
C4.5。最新有5.0版本;先建完整的决策树;使用自定义的错误率(Predicted&Error&Rate)对节点修剪。
CHAID&卡方自动交互检验&(Chi-squared&Automatic&Interaction)。计算节点中类别的p值。根据p值的大小决定决策树是否生长不需要修剪(与前两者的区别)。
2、聚类分析、判别分析、分类树的区别
三、R语言中rpart包与party包的区别
1、CP参数定义
cp:&complexity&parameter复杂性参数,用来修剪树的.
当决策树复杂度超过一定程度后,随着复杂度的提高,测试集的分类精确度反而会降低。因此,建立的决策树不宜太复杂,需进行剪枝。该剪枝算法依赖于复杂性参数cp,cp随树复杂度的增加而减小,当增加一个节点引起的分类精确度变化量小于树复杂度变化的cp倍时,则须剪去该节点。故建立一棵既能精确分类,又不过度适合的决策树的关键是求解一个合适的cp值。一般选择错判率最小值对应的cp值来修树.
2、CP选择问题。
建立树模型要权衡两方面问题,一个是要拟合得使分组后的变异较小,另一个是要防止过度拟合,而使模型的误差过大,前者的参数是CP,后者的参数是Xerror。所以要在Xerror最小的情况下,也使CP尽量小。
四、决策树建模步骤详解
1、生成随机数——runif(nrow(x),0,1)
2、将数据集进行划分,训练集与测试集
titanic.train&&-&titanic[x&&&.4,]&
titanic.test&&-&titanic[x&=&.4,]&
选取了x变量&小于0.4&或&大于0.4&为训练集
博客等级:
博客积分:0
博客访问:41,225
关注人气:0
荣誉徽章:python决策树的源代码问题
[问题点数:50分,结帖人littlely_ll]
本版专家分:0
结帖率 62.5%
CSDN今日推荐
本版专家分:0
本版专家分:50
本版专家分:565
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐
准备工作:
安装pandaspip3 install pandas数据加载和清洗import os
import numpy as np
import pandas as pd
home_folder = os.path.expanduser(&~&)#os.path.expanduser(path) 把path中包含的&~&和&~user&转换成用户目录
data_folder = os.pat
python 机器学习-决策树算法实现
python决策树代码
决策树绘图的代码:
import matplotlib.pyplot as plt
#定义文本框和箭头格式
decisionNode = dict(boxstyle=&sawtooth&,fc='0.8')#定义判断结点形态
leafNode = dict(boxstyle=&round4&,fc=&0.8&)#定义叶结点形态
arrow_args = dict(arrowstyle=&&-&
算法原理决策树(Decision Tree)是一种经典的数据挖掘算法,它的应用很广泛,具体到算法本身也有不同的策略。通过训练数据构建决策树,可以高效的对未知的数据进行分类。决策数有两大优点:1)决策树模型可以读性好,具有描述性,有助于人工分析;2)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。它是根据特征(feature)的值逐步把数据分类,直到所有的叶子节点属
import pandas as pd
inputfile = 'C:/Users/Administrator/Desktop/demo/data/sales_data.xls'
data = pd.read_excel(inputfile, index_col = u'序号')
data[data == u'好'] = 1
data[data == u'是'] = 1
data[data =...
决策树优缺点:
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据;
缺点:可能会产生过度匹配问题;
适用数据类型:数值型和标称型
决策树的一般流程:
1.收集数据:可以使用任何方法;
2.准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化;
3.分析数据:可以使用任何方法,构造树完成之后,我们应该检查图形是否符合预测;
4.训练算法
决策树决策树(DTs)是一种用于分类和回归的非参数监督学习方法。目标是创建一个模型,通过从数据特性中推导出简单的决策规则来预测目标变量的值。
例如,在下面的例子中,决策树通过一组if-then-else决策规则从数据中学习到近似正弦曲线的情况。树越深,决策规则越复杂,模型也越合适。决策树的一些优势是:
便于说明和理解,树可以可视化表达;
需要很少的数据准备。其他技术通常需要数据标准化,需要创建虚拟
使用 python 自己写一个 决策树
很多复杂的学习方法,明白了其基础之后,一切就变得简单、易懂,并且符合直觉。
我今天打算手写一个决策树,或者说是“分类回归树”。
https://machinelearningmastery.com/implement-decision-tree-algorithm-scratch-python/
决策树是一种强大的预测方法,在工业界的数据...
# -*- coding: utf-8 -*-
__author__ = 'gerry'# 先导入所有的class
import xgboost
from numpy import *
from sklearn import model_selection
from sklearn.metrics import accuracy_score# load 数据集
dataset = loadtxt('}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信