ML之RF&XGBoost:分别基于RF随机森林、XGBoost算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)

简介: ML之RF&XGBoost:分别基于RF随机森林、XGBoost算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)

输出结

image.png

 

设计思

image.png

 

核心代

rfc = RandomForestClassifier()

rfc.fit(X_train, y_train)

rfc.score(X_test, y_test)

xgbc = XGBClassifier()

xgbc.fit(X_train, y_train)

xgbc.score(X_test, y_test)


class RandomForestClassifier(ForestClassifier):

   """A random forest classifier.

 

   A random forest is a meta estimator that fits a number of decision tree

   classifiers on various sub-samples of the dataset and use averaging to

   improve the predictive accuracy and control over-fitting.

   The sub-sample size is always the same as the original

   input sample size but the samples are drawn with replacement if

   `bootstrap=True` (default).

 

   Read more in the :ref:`User Guide <forest>`.

 

   Parameters

   ----------

   n_estimators : integer, optional (default=10)

   The number of trees in the forest.

 

   criterion : string, optional (default="gini")

   The function to measure the quality of a split. Supported criteria are

   "gini" for the Gini impurity and "entropy" for the information gain.

   Note: this parameter is tree-specific.

 

   max_features : int, float, string or None, optional (default="auto")

   The number of features to consider when looking for the best split:

 

   - If int, then consider `max_features` features at each split.

   - If float, then `max_features` is a percentage and

   `int(max_features * n_features)` features are considered at each

   split.

   - If "auto", then `max_features=sqrt(n_features)`.

   - If "sqrt", then `max_features=sqrt(n_features)` (same as "auto").

   - If "log2", then `max_features=log2(n_features)`.

   - If None, then `max_features=n_features`.

 

   Note: the search for a split does not stop until at least one

   valid partition of the node samples is found, even if it requires to

   effectively inspect more than ``max_features`` features.

 

   max_depth : integer or None, optional (default=None)

   The maximum depth of the tree. If None, then nodes are expanded

    until

   all leaves are pure or until all leaves contain less than

   min_samples_split samples.

 

   min_samples_split : int, float, optional (default=2)

   The minimum number of samples required to split an internal node:

 

   - If int, then consider `min_samples_split` as the minimum number.

   - If float, then `min_samples_split` is a percentage and

   `ceil(min_samples_split * n_samples)` are the minimum

   number of samples for each split.

 

   .. versionchanged:: 0.18

   Added float values for percentages.

 

   min_samples_leaf : int, float, optional (default=1)

   The minimum number of samples required to be at a leaf node:

 

   - If int, then consider `min_samples_leaf` as the minimum number.

   - If float, then `min_samples_leaf` is a percentage and

   `ceil(min_samples_leaf * n_samples)` are the minimum

   number of samples for each node.

 

   .. versionchanged:: 0.18

   Added float values for percentages.

 

   min_weight_fraction_leaf : float, optional (default=0.)

   The minimum weighted fraction of the sum total of weights (of all

   the input samples) required to be at a leaf node. Samples have

   equal weight when sample_weight is not provided.

 

   max_leaf_nodes : int or None, optional (default=None)

   Grow trees with ``max_leaf_nodes`` in best-first fashion.

   Best nodes are defined as relative reduction in impurity.

   If None then unlimited number of leaf nodes.

 

   min_impurity_split : float,

   Threshold for early stopping in tree growth. A node will split

   if its impurity is above the threshold, otherwise it is a leaf.

 

   .. deprecated:: 0.19

   ``min_impurity_split`` has been deprecated in favor of

   ``min_impurity_decrease`` in 0.19 and will be removed in 0.21.

   Use ``min_impurity_decrease`` instead.

 

   min_impurity_decrease : float, optional (default=0.)

   A node will be split if this split induces a decrease of the impurity

   greater than or equal to this value.

 

   The weighted impurity decrease equation is the following::

 

   N_t / N * (impurity - N_t_R / N_t * right_impurity

   - N_t_L / N_t * left_impurity)

 

   where ``N`` is the total number of samples, ``N_t`` is the number of

   samples at the current node, ``N_t_L`` is the number of samples in the

   left child, and ``N_t_R`` is the number of samples in the right child.

 

   ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,

   if ``sample_weight`` is passed.

 

   .. versionadded:: 0.19

 

   bootstrap : boolean, optional (default=True)

   Whether bootstrap samples are used when building trees.

 

   oob_score : bool (default=False)

   Whether to use out-of-bag samples to estimate

   the generalization accuracy.

 

   n_jobs : integer, optional (default=1)

   The number of jobs to run in parallel for both `fit` and `predict`.

   If -1, then the number of jobs is set to the number of cores.

 

   random_state : int, RandomState instance or None, optional

    (default=None)

   If int, random_state is the seed used by the random number

    generator;

   If RandomState instance, random_state is the random number

    generator;

   If None, the random number generator is the RandomState instance

    used

   by `np.random`.

 

   verbose : int, optional (default=0)

   Controls the verbosity of the tree building process.

 

   warm_start : bool, optional (default=False)

   When set to ``True``, reuse the solution of the previous call to fit

   and add more estimators to the ensemble, otherwise, just fit a whole

   new forest.

 

   class_weight : dict, list of dicts, "balanced",

   "balanced_subsample" or None, optional (default=None)

   Weights associated with classes in the form ``{class_label: weight}``.

   If not given, all classes are supposed to have weight one. For

   multi-output problems, a list of dicts can be provided in the same

   order as the columns of y.

 

   Note that for multioutput (including multilabel) weights should be

   defined for each class of every column in its own dict. For example,

   for four-class multilabel classification weights should be

   [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}] instead of

   [{1:1}, {2:5}, {3:1}, {4:1}].

 

   The "balanced" mode uses the values of y to automatically adjust

   weights inversely proportional to class frequencies in the input data

   as ``n_samples / (n_classes * np.bincount(y))``

 

   The "balanced_subsample" mode is the same as "balanced" except

    that

   weights are computed based on the bootstrap sample for every tree

   grown.

 

   For multi-output, the weights of each column of y will be multiplied.

 

   Note that these weights will be multiplied with sample_weight

    (passed

   through the fit method) if sample_weight is specified.

 

   Attributes

   ----------

   estimators_ : list of DecisionTreeClassifier

   The collection of fitted sub-estimators.

 

   classes_ : array of shape = [n_classes] or a list of such arrays

   The classes labels (single output problem), or a list of arrays of

   class labels (multi-output problem).

 

   n_classes_ : int or list

   The number of classes (single output problem), or a list containing the

   number of classes for each output (multi-output problem).

 

   n_features_ : int

   The number of features when ``fit`` is performed.

 

   n_outputs_ : int

   The number of outputs when ``fit`` is performed.

 

   feature_importances_ : array of shape = [n_features]

   The feature importances (the higher, the more important the feature).

 

   oob_score_ : float

   Score of the training dataset obtained using an out-of-bag estimate.

 

   oob_decision_function_ : array of shape = [n_samples, n_classes]

   Decision function computed with out-of-bag estimate on the training

   set. If n_estimators is small it might be possible that a data point

   was never left out during the bootstrap. In this case,

   `oob_decision_function_` might contain NaN.

 

   Examples

   --------

   >>> from sklearn.ensemble import RandomForestClassifier

   >>> from sklearn.datasets import make_classification

   >>>

   >>> X, y = make_classification(n_samples=1000, n_features=4,

   ...                            n_informative=2, n_redundant=0,

   ...                            random_state=0, shuffle=False)

   >>> clf = RandomForestClassifier(max_depth=2, random_state=0)

   >>> clf.fit(X, y)

   RandomForestClassifier(bootstrap=True, class_weight=None,

    criterion='gini',

   max_depth=2, max_features='auto', max_leaf_nodes=None,

   min_impurity_decrease=0.0, min_impurity_split=None,

   min_samples_leaf=1, min_samples_split=2,

   min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,

   oob_score=False, random_state=0, verbose=0, warm_start=False)

   >>> print(clf.feature_importances_)

   [ 0.17287856  0.80608704  0.01884792  0.00218648]

   >>> print(clf.predict([[0, 0, 0, 0]]))

   [1]

 

   Notes

   -----

   The default values for the parameters controlling the size of the trees

   (e.g. ``max_depth``, ``min_samples_leaf``, etc.) lead to fully grown and

   unpruned trees which can potentially be very large on some data

    sets. To

   reduce memory consumption, the complexity and size of the trees

    should be

   controlled by setting those parameter values.

 

   The features are always randomly permuted at each split. Therefore,

   the best found split may vary, even with the same training data,

   ``max_features=n_features`` and ``bootstrap=False``, if the

    improvement

   of the criterion is identical for several splits enumerated during the

   search of the best split. To obtain a deterministic behaviour during

   fitting, ``random_state`` has to be fixed.

 

   References

   ----------

 

   .. [1] L. Breiman, "Random Forests", Machine Learning, 45(1), 5-32,

    2001.

 

   See also

   --------

   DecisionTreeClassifier, ExtraTreesClassifier

   """

   def __init__(self,

       n_estimators=10,

       criterion="gini",

       max_depth=None,

       min_samples_split=2,

       min_samples_leaf=1,

       min_weight_fraction_leaf=0.,

       max_features="auto",

       max_leaf_nodes=None,

       min_impurity_decrease=0.,

       min_impurity_split=None,

       bootstrap=True,

       oob_score=False,

       n_jobs=1,

       random_state=None,

       verbose=0,

       warm_start=False,

       class_weight=None):

       super(RandomForestClassifier, self).__init__

        (base_estimator=DecisionTreeClassifier(), n_estimators=n_estimators,

        estimator_params=("criterion", "max_depth", "min_samples_split",

        "min_samples_leaf", "min_weight_fraction_leaf", "max_features",

        "max_leaf_nodes", "min_impurity_decrease", "min_impurity_split",

        "random_state"), bootstrap=bootstrap, oob_score=oob_score,

        n_jobs=n_jobs, random_state=random_state, verbose=verbose,

        warm_start=warm_start, class_weight=class_weight)

       self.criterion = criterion

       self.max_depth = max_depth

       self.min_samples_split = min_samples_split

       self.min_samples_leaf = min_samples_leaf

       self.min_weight_fraction_leaf = min_weight_fraction_leaf

       self.max_features = max_features

       self.max_leaf_nodes = max_leaf_nodes

       self.min_impurity_decrease = min_impurity_decrease

       self.min_impurity_split = min_impurity_split



相关文章
|
4月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
127 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
3月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
45 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
3月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
41 0
|
2天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
14天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
149 80
|
3天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
3天前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。
|
8天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
11天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
7天前
|
算法
基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真
本项目基于梯度流的扩散映射卡尔曼滤波算法(GFDMKF),用于信号预处理的MATLAB仿真。通过设置不同噪声大小,测试滤波效果。核心代码实现数据加载、含噪信号生成、扩散映射构建及DMK滤波器应用,并展示含噪与无噪信号及滤波结果的对比图。GFDMKF结合非线性流形学习与经典卡尔曼滤波,提高对非线性高维信号的滤波和跟踪性能。 **主要步骤:** 1. 加载数据并生成含噪测量值。 2. 使用扩散映射捕捉低维流形结构。 3. 应用DMK滤波器进行状态估计。 4. 绘制不同SNR下的轨迹示例。

热门文章

最新文章