zoukankan      html  css  js  c++  java
  • sklearn之决策树和随机森林对iris的处理比较

    # Iris鸢尾花数据集是常用的分类实验数据集,由Fisher, 1936收集整理。
    # 是一类多重变量分析的数据集。分为3类,每类50个数据,每个数据包含4个属性。
    # 可通过4个属性预测鸢尾花属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
     
    sklearn决策树
    from sklearn import datasets,tree
    import numpy as np
    #载入数据集
    iris=datasets.load_iris()
    iris_data=iris['data']
    iris_label=iris['target']
    X=np.array(iris_data)
    Y=np.array(iris_label)
    #训练
    clf=tree.DecisionTreeClassifier(max_depth=5)
    clf.fit(X,Y)
    #预测
    print clf.predict([[4.1, 2.2, 2.3, 5.4]])
     
     
    sklearn随机森林
    from sklearn import datasets, ensemble
    import numpy as np
    iris=datasets.load_iris()
    iris_data=iris['data']
    iris_label=iris['target']
    X=np.array(iris_data)
    Y=np.array(iris_label)
    clf = ensemble.RandomForestClassifier(max_depth=5, n_estimators=1, max_features=1)
    clf.fit(X,Y)
    print clf.predict([[4.1, 2.2, 2.3, 5.4]])
     
     
    本意是想确认,当随机森林里n_estimators=1即森林数量1个时,看结果是否和决策树一致。
    多次执行程序发现,两段代码的结果都是不唯一的。决策树在任何条件下的结果不都应该是唯一的吗?困惑!
    先去学其他的,后面深入研究下sklearn的代码含义,再来解决这个问题。
     
    Q:看了下sklearn决策树算法的predict_proba接口,它的解释是输出一个样本属于某个类的概率。但是我所理解的,每一个样本在给定的决策树下,最终应该只会属于一个类别,那也就是意味着这个样本属于那个类别的概率就应该是100%啊。那predict_proba这个接口是怎么计算所谓的概率的呢?不知道我是不是哪里理解错了。
    A:这是《机器学习·升级版IV》中“决策树和随机森林”章节的问题。
    答案非常简单:因为叶子节点是“纯结点”,假定某个叶子包含的三个类别的样本个数分别是(7,2,1),则如果某测试样本落在这个结点中,它判定这三个类别的概率分别是(0.7,0.2,0.1)。
     
     
  • 相关阅读:
    [loj6484]LJJ爱数书
    [loj3163]动态直径
    [loj2983]数树
    [luogu3785]文本校正
    [loj2572]字符串
    [loj3103]节日庆典
    [atARC118F]Growth Rate
    [atARC118E]Avoid Permutations
    [cf794G]Replace All
    [cf756E]Byteland coins
  • 原文地址:https://www.cnblogs.com/myshuzhimei/p/11776607.html
Copyright © 2011-2022 走看看