基于sklearn的特征选择方法

在数据挖掘工作中,通常处理的是一个包含大量特征且含义未知的数据集,并基于该数据集挖掘到有用的特征。那么这里面一般是四个步骤:特征工程、特征选择、模型构造、模型融合。特征工程主要是清洗特征、删除无用特征和构造新特征,经过特征工程这个过程我们可能会得到大量的特征;而特征选择的目的就是从这大量的特征中挑选出优秀的特征,因为好的特征更能够提升模型性能,同时也通过降维达到了避免维度灾难的目的。本文主要利用sklearn 这个工具来实现常用的特征选择方法。

特征选择有两个功能:1.减少特征数量,起到降维作用,使泛化能力更强;2.减少过拟合,增强对特征和特征值之间的理解

本文主要基于sklearn 介绍两大类特征选择方法:

  • 单变量特征选择方法,这里面主要包括皮尔森相关系数、最大信息系数、距离相关系数等,主要思想是衡量特征和标签变量之间的相关性;
  • 基于模型的特征选择方法,这主要是指模型在训练过程中对特征的排序,如基于随机森林的特征选择、基于逻辑回归的特征选择等

1. 单变量特征选择

1.1 皮尔森相关系数

皮尔森相关系数是一种最简单的、能帮助理解特征和标签变量之间关系的方法。它衡量的是变量之间的线性相关性,其值在-1,1 之间;其中1 代表变量完全正相关,-1 代表完全负相关。
例如 a = [2,4,6,8] b = [4,8,12,16] c= [-4,-8,-12,-16] 使用scipy 来求解

    import numpy as np
    import sci
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
特征工程是指从原始数据中提取特征并将其转换为适合机器学习模型的格式。它是机器学习流程中一个极其关键的环节,因为正确的特征可以减轻构建模型的难度,从而使机器学习流程输出更高质量的结果。在sklearn中,有多种方法可以进行特征工程。 一种常见的方法是使用StandardScaler类实现列标准化。这个类可以将每个特征的值转换为均值为0,方差为1的标准正态分布。例如,可以使用以下代码对特征进行标准化: ```python import numpy as np from sklearn.preprocessing import StandardScaler X_train = np.array([[ 1., -1., 2.],[ 2., 0., 0.],[ 0., 1., -1.]]) std = StandardScaler() X_train_std = std.fit_transform(X_train) ``` 另一种方法是使用基于树的方法(如决策树、随机森林)或扩展的线性模型来处理非线性关系。这些方法对于非线性关系的建模效果较好,并且不需要太多的调试。例如,可以使用以下代码对波士顿房屋价格数据集进行特征处理: ```python from sklearn.cross_validation import cross_val_score, ShuffleSplit from sklearn.datasets import load_boston from sklearn.ensemble import RandomForestRegressor boston = load_boston() X = boston["data"] Y = boston["target"] names = boston["feature_names"] rf = RandomForestRegressor(n_estimators=20, max_depth=4) scores = [] for i in range(X.shape[1]): score = cross_val_score(rf, X[:, i:i+1], Y, scoring="r2", cv=ShuffleSplit(len(X), 3, .3)) scores.append((round(np.mean(score), 3), names[i])) print(sorted(scores, reverse=True)) ``` 除了以上方法,还有其他一些特征处理的技术,如特征选择、特征降维等。特征工程的目的是提取有用的特征,减少无用的特征,并为机器学习模型提供更好的输入。通过合适的特征工程,可以提高模型的性能和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值