ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测-阿里云开发者社区

开发者社区> 一个处女座的程序猿> 正文

ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测

简介: ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测
+关注继续查看

输出结果


初步处理后的 X_train: (984, 474)

  (0, 0)    31.19418104265403

 (0, 78)    1.0

 (0, 82)    1.0

 (0, 366)    1.0

 (0, 391)    1.0

 (0, 435)    1.0

 (0, 437)    1.0

 (0, 473)    1.0

 (1, 0)    31.19418104265403

 (1, 73)    1.0

 (1, 79)    1.0

 (1, 296)    1.0

 (1, 389)    1.0

 (1, 397)    1.0

 (1, 436)    1.0

 (1, 446)    1.0

 (2, 0)    31.19418104265403

 (2, 78)    1.0

 (2, 82)    1.0

 (2, 366)    1.0

 (2, 391)    1.0

 (2, 435)    1.0

 (2, 437)    1.0

 (2, 473)    1.0

 (3, 0)    32.0

 :    :

 (980, 473)    1.0

 (981, 0)    12.0

 (981, 73)    1.0

 (981, 81)    1.0

 (981, 84)    1.0

 (981, 390)    1.0

 (981, 435)    1.0

 (981, 436)    1.0

 (981, 473)    1.0

 (982, 0)    18.0

 (982, 78)    1.0

 (982, 81)    1.0

 (982, 277)    1.0

 (982, 390)    1.0

 (982, 435)    1.0

 (982, 437)    1.0

 (982, 473)    1.0

 (983, 0)    31.19418104265403

 (983, 78)    1.0

 (983, 82)    1.0

 (983, 366)    1.0

 (983, 391)    1.0

 (983, 435)    1.0

 (983, 436)    1.0

 (983, 473)    1.0 经过FS处理后的 X_train_fs: (984, 94)

  (0, 93)    1.0

 (0, 85)    1.0

 (0, 83)    1.0

 (0, 76)    1.0

 (0, 71)    1.0

 (0, 27)    1.0

 (0, 24)    1.0

 (0, 0)    31.19418104265403

 (1, 84)    1.0

 (1, 74)    1.0

 (1, 63)    1.0

 (1, 25)    1.0

 (1, 19)    1.0

 (1, 0)    31.19418104265403

 (2, 93)    1.0

 (2, 85)    1.0

 (2, 83)    1.0

 (2, 76)    1.0

 (2, 71)    1.0

 (2, 27)    1.0

 (2, 24)    1.0

 (2, 0)    31.19418104265403

 (3, 93)    1.0

 (3, 85)    1.0

 (3, 83)    1.0

 :    :

 (980, 24)    1.0

 (980, 0)    31.19418104265403

 (981, 93)    1.0

 (981, 84)    1.0

 (981, 83)    1.0

 (981, 75)    1.0

 (981, 28)    1.0

 (981, 26)    1.0

 (981, 19)    1.0

 (981, 0)    12.0

 (982, 93)    1.0

 (982, 85)    1.0

 (982, 83)    1.0

 (982, 75)    1.0

 (982, 26)    1.0

 (982, 24)    1.0

 (982, 0)    18.0

 (983, 93)    1.0

 (983, 84)    1.0

 (983, 83)    1.0

 (983, 76)    1.0

 (983, 71)    1.0

 (983, 27)    1.0

 (983, 24)    1.0

 (983, 0)    31.19418104265403








设计思路

image.png


核心代码

class SelectPercentile Found at: sklearn.feature_selection.univariate_selection

class SelectPercentile(_BaseFilter):

   """Select features according to a percentile of the highest scores.

   

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

   

   Parameters

   ----------

   score_func : callable

   Function taking two arrays X and y, and returning a pair of arrays

   (scores, pvalues) or a single array with scores.

   Default is f_classif (see below "See also"). The default function only

   works with classification tasks.

   

   percentile : int, optional, default=10

   Percent of features to keep.

   

   Attributes

   ----------

   scores_ : array-like, shape=(n_features,)

   Scores of features.

   

   pvalues_ : array-like, shape=(n_features,)

   p-values of feature scores, None if `score_func` returned only scores.

   

   Notes

   -----

   Ties between features with equal scores will be broken in an unspecified

   way.

   

   See also

   --------

   f_classif: ANOVA F-value between label/feature for classification tasks.

   mutual_info_classif: Mutual information for a discrete target.

   chi2: Chi-squared stats of non-negative features for classification tasks.

   f_regression: F-value between label/feature for regression tasks.

   mutual_info_regression: Mutual information for a continuous target.

   SelectKBest: Select features based on the k highest scores.

   SelectFpr: Select features based on a false positive rate test.

   SelectFdr: Select features based on an estimated false discovery rate.

   SelectFwe: Select features based on family-wise error rate.

   GenericUnivariateSelect: Univariate feature selector with configurable mode.

   """

   def __init__(self, score_func=f_classif, percentile=10):

       super(SelectPercentile, self).__init__(score_func)

       self.percentile = percentile

   

   def _check_params(self, X, y):

       if not 0 <= self.percentile <= 100:

           raise ValueError(

               "percentile should be >=0, <=100; got %r" % self.percentile)

   

   def _get_support_mask(self):

       check_is_fitted(self, 'scores_')

       # Cater for NaNs

       if self.percentile == 100:

           return np.ones(len(self.scores_), dtype=np.bool)

       elif self.percentile == 0:

           return np.zeros(len(self.scores_), dtype=np.bool)

       scores = _clean_nans(self.scores_)

       treshold = stats.scoreatpercentile(scores,

           100 - self.percentile)

       mask = scores > treshold

       ties = np.where(scores == treshold)[0]

       if len(ties):

           max_feats = int(len(scores) * self.percentile / 100)

           kept_ties = ties[:max_feats - mask.sum()]

           mask[kept_ties] = True

       return mask



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案
每日更新关注:http://weibo.com/hanjunqiang  新浪微博!iOS开发者交流QQ群: 446310206 这个坑最近弄得我很抓狂,不过现在基本弄清楚了。记录一下过程中我收集到的信息,分享给大家。
1364 0
独家 | 一文教你如何处理不平衡数据集(附代码)
本文作者用python代码示例解释了3种处理不平衡数据集的可选方法,包括数据层面上的2种重采样数据集方法和算法层面上的1个集成分类器方法。
1020 0
SAS进阶《深入解析SAS》之对多数据集的处理
SAS进阶《深入解析SAS》之对多数据集的处理 1. 数据集的纵向串接: 数据集的纵向串接指的是,将两个或者多个数据集首尾相连,形成一个新的数据集。 据集的横向合并: 数据集的横向合并,指的是将两个或者多个数据集根据某种原则横向合并起来,形成新的数据集。 2. 数据集的纵向串接两种方法:1)使用SAS DATA步的SET语句。2)使用SAS过程步的APPEND过程。
1264 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载