精华内容
下载资源
问答
  • python随机森林

    2020-08-22 12:08:27
  • Python随机森林分类器代码实现
  • Python 随机森林分类

    2021-03-15 20:43:50
    Python 随机森林分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。 2 决策树分类简介 相关概念见下: 决策树的最大问题是树在训练集...

                                           Python 随机森林分类

    1 声明

    本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

    2 决策树分类简介

    相关概念见下:

    决策树的最大问题是树在训练集生成的过于茂密,导致过拟合(即在训练集上表现卓越但在测试集上效果很差)。这时随机森林就应运而生了。在随机森林里会有很多决策树,而每颗决策树只接收自举样本且每个节点仅围绕部分特征寻找最好的分割。随机决策树的森林最后通过投票的方式选出最后的预测分类。

    注:自举样本是指从一个较大的样本中 "自举 "出来的较小样本。Bootstrap是一种重新取样的方法,即从一个原始样本中反复抽取大量相同大小的小样本,并进行替换。

    随机森林分类里的几个参数:

    max_features:每个节点选择的特征的最大数

    boostrap:指定是否以自举采样

    n_estimators: 指定决策树的个数

    n_jobs:并行数量,等于-1是最大化计算资源

     

    3 随机森林分类代码与注释示例

    # 加载随机森林分类包
    from sklearn.ensemble import RandomForestClassifier
    from sklearn import datasets
    # 加载数据与模型创建
    iris = datasets.load_iris()
    features = iris.data
    target = iris.target
    randomforest = RandomForestClassifier(random_state=0, n_jobs=-1)
    # 训练模型
    model = randomforest.fit(features, target)
    # 预测分类
    observation = [[ 5, 4, 3, 2]]
    # Predict observation's class
    print(model.predict(observation))

    4 总结

    展开全文
  • python随机森林实现代码和实例,自动获取网络数据集,含数据,直接运行
  • Python 随机森林特征重要度 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。 2 随机森林特征重要度简介 决策树的优点是通过树形结构以...

                               Python 随机森林特征重要度

    1 声明

    本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

    2 随机森林特征重要度简介

    决策树的优点是通过树形结构以规则的形式查看模型的内在结构,但随机森林是由几十、上百甚至上千棵决策树组成的,这样很难再可视化查看模型的结构。但是我们可以通过随机森林查看特征的重要度。

    关于特征的重要性,需要注意两点:

    第一点scikit-learn要求我们将名义分类特征分解为多个二元特征(一种名义变量转化为数值型的常见方法 One-Hot编码);第二点如果两个特征高度相关,则会考虑其中一个特征,另外个特征将被弱化,如果不这么处理模型将难以解释。

    在scikit-learn中,分类回归决策树和随机森林可以使用特征重要性方法来查看每个特征的相对重要性。

    通过特征重要性筛选的步骤

    第一步随机森林用到所有特征建立模型,此时会计算出特征的重要性并形成特征矩阵,第二步对该该矩阵通过SelectFromModel的threshold阈值参数进行过滤,用这个模型作为最终的模型。

     

    3 随机森林特征重要度代码示例

    # 导入相关库和包
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.ensemble import RandomForestClassifier
    from sklearn import datasets
    # 装载数据
    iris = datasets.load_iris()
    features = iris.data
    target = iris.target
    # 创建随机森林模型并计算特征重要度
    randomforest = RandomForestClassifier(random_state=0, n_jobs=-1)
    model = randomforest.fit(features, target)
    importances = model.feature_importances_
    indices = np.argsort(importances)[::-1]
    names = [iris.feature_names[i] for i in indices]
    #print(names)
    #print(range(features.shape[1]), importances[indices])
    # 画图
    plt.figure()
    from matplotlib.font_manager import FontProperties
    #设置支持中文字体
    fp= FontProperties(fname="c:/windows/fonts/simsun.ttc", size=12)
    plt.suptitle('特征重要性',fontproperties=fp)
    plt.bar(range(features.shape[1]), importances[indices])
    plt.xticks(range(features.shape[1]), names, rotation=90)
    plt.show()
    # 通过重要度的阈值筛选特征
    # 定义重要度的阈值
    selector = SelectFromModel(randomforest, threshold=0.3)
    features_important = selector.fit_transform(features, target)
    # 训练新的模型
    model = randomforest.fit(features_important, target)

    4 总结

     

     

    展开全文
  • 有偿求python随机森林算法模型可预测,python要运行随机森林算法需要的包python都有吗</p>
  • 主要介绍了ptyhon 随机森林算法及其优化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Python随机森林调参红酒品质预测

    千次阅读 2020-05-18 23:04:33
    Python随机森林调参红酒品质预测 本节的数据来源是2009年UCI库中的Wine Quality Data Set的数据,大家可以在(http://archive.ics.uci.edu/ml/datasets/Wine+Quality)网址进行下载。 1.引入所需模块 import pandas ...

    Python随机森林调参红酒品质预测

    本节的数据来源是2009年UCI库中的Wine Quality Data Set的数据,大家可以在(http://archive.ics.uci.edu/ml/datasets/Wine+Quality)网址进行下载。
    1.引入所需模块

    import pandas as pd;
    import sklearn.model_selection as model_selection
    from sklearn.ensemble import RandomForestClassifier
    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt;
    

    2.加载数据

    dataSet = pd.read_csv("data\\winequality-red.csv");
    #print(dataSet.head());
    pd.set_option('display.max_columns',None);# DataFrame 显示所有列
    #print("describe",dataSet.describe());
    print("shape",np.shape(dataSet));
    

    输出
    在这里插入图片描述
    3.数据分析

    dataSet.hist();#直方图
    plt.show();
    #变量的相关性 展示
    sns.heatmap(dataSet.astype(float).corr(),linewidths=0.1,vmax=1.0, square=True,linecolor='white', annot=True)
    plt.show();
    

    输出
    在这里插入图片描述
    可以看出quality 数值主要在5,6附近 我们可以以5为分界点
    在这里插入图片描述
    4.划分x,y 训练集和测试集
    以y1作为target值

    y = dataSet["quality"];  #将 quality 作为target
    x = dataSet.drop("quality",axis=1); # 其他作为属性
    # 将葡萄酒分成两组   >5为 好酒   为1   小于5为1
    y1 = (y>5).astype(int); #改变np.array中所有数据元素的数据类型。
    #print(y1);
    # 分 训练集合测试集合 7:3
    xtrain,xtest,ytrain,ytext = model_selection.train_test_split(x,y1,test_size=0.3,random_state=1);
    

    5.交叉验证 用训练集 进行交叉训练 看看不进行调参的 score为多少

    RF_clf = RandomForestClassifier();
    cv_score = model_selection.cross_val_score(RF_clf,xtrain,ytrain,scoring='accuracy',cv=10);  #scoring='accuracy' 正确率
    print("cv_score",cv_score);
    print("cv_score_mean",cv_score.mean());  #mean()平均值
    

    输出
    在这里插入图片描述
    此时 什么参数都没有调 平均的score已经达到0.7998
    6.调参
    我们首先调n_estimators
    默认的n_estimators值是100,
    我们让n_estimators从50开始 每次加10 最高到300 运行看平均score有什么变化

    n_estimators_score = [];
    for n in np.arange(50,300,10):
        RF_clf = RandomForestClassifier(n_estimators=n);
        cv_score = model_selection.cross_val_score(RF_clf, xtrain, ytrain, scoring='accuracy',cv=10);  # scoring='accuracy' 正确率
        n_estimators_score.append(cv_score.mean());
    plt.figure();
    plt.plot(np.arange(50,300,10),n_estimators_score);
    plt.show();
    

    输出
    在这里插入图片描述
    我们可以看到此时score在0.7825-0.801波动
    在70左右取得较高的值
    所有我们进一步 让n_estimators从60取到80 看看具体那一个值最好
    这次我们直接用GridSearchCV

    param_grid = {'n_estimators':range(60,80,1)};
    rfc1 = model_selection.GridSearchCV(RandomForestClassifier(),param_grid=param_grid,cv=5);
    rfc1.fit(xtrain,ytrain);
    print("best_params_",rfc1.best_params_);
    print("best_score_",rfc1.best_score_);
    

    输出
    在这里插入图片描述
    现在就以n_estimators=79为值 调一下max_depth

    param_grid = {'n_estimators':[79],'max_depth':range(5,30,1)};
    rfc1 = model_selection.GridSearchCV(RandomForestClassifier(),param_grid=param_grid,cv=5);
    rfc1.fit(xtrain,ytrain);
    print("best_params_",rfc1.best_params_);
    print("best_score_",rfc1.best_score_);
    

    输出
    在这里插入图片描述
    增长了0.003左右
    我们继续在以上两个值的基础上 调一下min_samples_leaf

    param_grid = {'n_estimators':[79],'max_depth':[24],'min_samples_leaf':range(1,10,1)};
    rfc1 = model_selection.GridSearchCV(RandomForestClassifier(),param_grid=param_grid,cv=5);
    rfc1.fit(xtrain,ytrain);
    print("best_params_",rfc1.best_params_);
    print("best_score_",rfc1.best_score_);
    

    输出
    在这里插入图片描述
    可以看到调优之后 反而没有原来的好,那基本就说明 调优之后复杂度减少反而不好 所以我们就增大特征来看看 让复杂度增大试试看

    param_grid = {'n_estimators':[79],'max_depth':[24],'max_features':range(3,10,1)};
    rfc1 = model_selection.GridSearchCV(RandomForestClassifier(),param_grid=param_grid,cv=5);
    rfc1.fit(xtrain,ytrain);
    print("best_params_",rfc1.best_params_);
    print("best_score_",rfc1.best_score_);
    

    输出
    在这里插入图片描述
    还是比上一个少了
    那n_estimators’=79,‘max_depth’=24 基本就可以了
    我们用这两个参数 训练预测一下看看结果如何

    oob_score=true 因为随机森林是随机取样的 所以总有一些样本没有取到,那么我们不能浪费啊 可以使用那些没有取到的样本对训练出来的模型进行评估

    rfc = RandomForestClassifier(n_estimators=79,max_depth=24,oob_score=True,random_state=1);
    rfc.fit(xtrain,ytrain);
    print("oob_score",rfc.oob_score_);
    print("score",rfc.score(xtest,ytext));
    array = rfc.feature_importances_;
    

    输出
    在这里插入图片描述
    最终模型预测在百分之80 左右

    展开全文
  • 竞赛时写的一个python小程序,得了0.93分,思路如下,1读取训练集、2数据预处理、3上模型、4将模型应用到预测及、5生成预测结果
  • python随机森林回归数据实战

    千次阅读 2020-11-12 11:51:53
    文章目录前言一、随机森林回归器参数介绍二、数据实战1.数据介绍2.重点代码2.1特征集和标签集获取2.2数据集划分2.3随机森林模型训练2.4预测结果可视化2.5 特征重要性选择及可视化3.完整代码总结 前言 我为什么写这...
  • 每天读一篇一线开发者原创好文 译者:XTH 英文原文:https://www.codeproject.com/Articles/1197167/Random-Forest-Python  ...这意味着随机森林中包括多种决策树,并将每个决策树结果的平均值作为随机森林
  • 10、python随机森林代码案例

    千次阅读 2018-12-13 19:05:20
    随机森林随机森林是包含多个决策树的分类器,并且其输出类别是由个别树输出的类别的众数而定 决策树见案例:https://blog.csdn.net/qq_36327687/article/details/84944850 2 优点 01 适合离散型和连续型的属性...
  • Python 随机森林的实现与参数优化

    千次阅读 2020-03-14 18:29:29
    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 通过n_estimators,random_state,boostrap和oob_score这四个参数了解袋装...随机森林也有.feature_importances_这个属性。 Python 3.7.3 (default, Apr 2...
  • 随机森林允许单个决策树使用特征的最大数量。 Python为最大特征数提供了多个可选项。 下面是其中的几个: Auto/None :简单地选取所有特征,每颗树都可以利用他们。这种情况下,每颗树都没有任何的限制。 sqrt :...
  • python 随机森林参数说明

    千次阅读 2018-07-27 15:01:23
    随机森林树的数目 criterion  : string, optional (default=”gini”) 衡量分裂质量的功能。 支持的标准是基尼杂质的“gini”和信息增益的“熵”。 注意:此参数是特定于树的。 max_features  : int, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,266
精华内容 8,906
关键字:

python随机森林

python 订阅