zoukankan      html  css  js  c++  java
  • 决策树算法-Python实现

    决策树比较常用的算法模型,可以做分类也可以回归

    • 决策树算法重点
    • 对特征的选择,可以使用熵,也可以使用基尼系数,通过信息增益或者信息增益率选择最好的特征
    • 决策树的剪枝,有两种策略,一种是预剪枝,一种是后剪枝,预剪枝可以通过限制树的高度,叶子节点个数,信息增益等进行,使得树边建立边剪枝,后剪枝通过增加损失项,使得树建立后,然后对不符合的叶子节点进行合并。达到减小树的要求,避免过拟合

    集成算法

    • Bagging 主要通过并行建立多个决策模型,然后通过投票或者平均输出最后的值
    • Boosting 主要是通过串行的思想,通过弱分类器开始加强,然后通过加权来进行训练,比如先训练一棵树,然后在增加一棵树,达到提高模型的效果
    • Stacking 聚合多个分类或者 回归模型来提高模型的效果、
    import matplotlib.pyplot as plt
    import pandas as pd
    from sklearn.datasets import fetch_california_housing
    
    housing = fetch_california_housing()
    # print(housing.DESCR)
    
    print(housing.data.shape)
    print(housing.data[0])
    
    from sklearn import tree
    dtr = tree.DecisionTreeRegressor(max_depth=2)
    dtr.fit(housing.data[:, [6, 7]], housing.target)
    
    # 树模型参数
    # 1.criterion gini or entroy
    # 2.splitter best or random 前者是在所有特征最终找到最好的切分点,后者实在部分特征中
    # 3.max_features  None, log2, sqrt, N特征小于50一般使用所有的
    # 4.mini_depth 数据少或者特征少的情况下,可以不管这个值,如果模型数据样本量多或者特征多的情况下,可以尝试限制
    # 5.mini_samples_split 如果节点数量少,不用管,如果样本数非常大,则推荐增加这个值
    # 6.mini_samples_leaf 限制了叶子节点的样本权重和最小值,如果小于这个值,样本量不大,不需要管这个值,大些如果10w,可以设置5
    
    from sklearn.model_selection import train_test_split
    data_train, data_test, target_train, target_test = train_test_split(housing.data, housing.target, test_size=0.1, random_state=42)
    # dtr = tree.DecisionTreeRegressor(random_state= 42)
    # dtr.fit(data_train, target_train)
    #
    # print(dtr.score(data_test, target_test))
    #
    #
    from sklearn.ensemble import RandomForestRegressor
    #
    # rfr = RandomForestRegressor(random_state=42)
    # rfr.fit(data_train, target_train)
    # print(rfr.score(data_test, target_test))
    
    from sklearn.model_selection import GridSearchCV
    tree_param_grid = {'min_samples_split':list((3, 6, 9)), 'n_estimators':list((10, 50, 100))}
    grid = GridSearchCV(RandomForestRegressor(), param_grid=tree_param_grid, cv=5)
    grid.fit(data_train, target_train)
    print(grid.error_score, grid.best_params_, grid.best_score_)
    
  • 相关阅读:
    Linux下ps -ef 和 ps aux的区别
    oracle exp imp日常使用
    oracle 切换用户操作--or--sys用户密码忘记
    widows本地-xshell实现远程连接linux服务器图形界面
    oracle ASM安装过程中UDEV实现磁盘绑定
    Oracle修改指定表空间为自动扩展
    Oracle 扩展表空间大小的几种方式
    本地主机不安装oracle客户端--访问远程oracle数据库
    解决ubuntu安装系统默认没有创建root用户
    解决 ORA-27102: out of memory
  • 原文地址:https://www.cnblogs.com/jly1/p/13071301.html
Copyright © 2011-2022 走看看