zoukankan      html  css  js  c++  java
  • tensorflow机器学习初接触

    1. Bagging

    Bootstrap:一种有放回的抽样方法。

    Bagging( bootstrap aggregation)的策略:从样本集中进行有放回地选出n个样本;在样本的所有特征上,对这n个样本建立分类器;重复上述两步m次,获得m个样本分类器;最后将测试数据都放在这m个样本分类器上,最终得到m个分类结果,再从这m个分类结果中决定数据属于哪一类(多数投票制)。

    随机森林采用了Bagging策略,且在其基础上进行了一些修改,采用了两个随机:

    1. 从训练样本集中使用Bootstrap采样(随机有放回)选出n个样本。

    2. 设样本共有b个特征,从这b个特征中只随机选择k个特征来分割样本,通过计算选择最优划分特征作为节点来划分样本集合来建立决策树。(与Bagging的不同之处:没有使用全部的特征,这样可以避免一些过拟合的特征,不再对决策树进行任何剪枝)

    3. 重复以上两步m次,可建立m棵决策树 

    4. 这m棵决策树形成了森林,可通过简单多数投票法(或其他投票机制)来决定森林的输出,决定属于哪一类型。(针对解决回归问题,可以采用单棵树输出结果总和的平均值)

    随机森林在一定程序上提高了泛化能力,而且可以并行地生成单棵树。

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.tree import DecisionTreeRegressor
    
    
    if __name__ == "__main__":
        n = 500
        x = np.random.rand(n) * 8 - 3
        x.sort()
        y = np.cos(x) + np.sin(x) + np.random.randn(n) * 0.4
        x = x.reshape(-1, 1)
    
        reg = DecisionTreeRegressor(criterion='mse')
        # reg1 = RandomForestRegressor(criterion='mse')
        dt = reg.fit(x, y)
        # dt1 = reg1.fit(x, y)
        x_test = np.linspace(-3, 5, 100).reshape(-1, 1)
        y_hat = dt.predict(x_test)
        plt.figure(facecolor="w")
        plt.plot(x, y, 'ro', label="actual")
        plt.plot(x_test, y_hat, 'k*', label="predict")
        plt.legend(loc="best")
        plt.title(u'Decision Tree', fontsize=17)
        plt.tight_layout()
        plt.grid()
        plt.show()
  • 相关阅读:
    09-2:跳台阶
    09:菲波那切数列
    08:旋转数组的最小值
    07:用两个栈实现队列
    06:重建二叉树
    05:从尾到头打印链表
    04:替换字符
    centos7安装Jenkins更改默认端口并配置Ldap服务器进行用户认证
    Jira配置openLdap服务器进行用户认证
    定时自动从FTP服务器取数据脚本
  • 原文地址:https://www.cnblogs.com/520520520zl/p/14268862.html
Copyright © 2011-2022 走看看