Scikit-learn特征工程之特征抽取

博客介绍了机器学习中数据特征工程的相关内容。指出原始数据常需处理,特征工程可减少冗余、促进算法学习。还说明了数据来源和类型,介绍了特征提取和抽取方法,如对非连续变量做数学化表述,用TF - IDF表示词的重要性。

“ 数据,决定了机器学习的上限;而算法,只是尽可能逼近这个上限。”
                    ——这句话很好的阐述了  数据  在机器学习中的重要性。

数据的特征工程

  • 大部分直接拿过来的数据都是特征不明显的、没有经过处理的或者说是存在很多无用的数据,那么需要进行一些特征处理,特征的缩放等等,满足训练数据的要求;
  • 优质的特征往往描述了数据的固有结构;
  • 最初的原始特征数据集可能太大,或者信息冗余,因此在机器学习的应用中,一个初始步骤就是选择特征的子集,或构建一套新的特征集,减少功能来促进算法的学习,提高泛化能力和可解释性;
  • 特征工程的意义:更好的特征意味着鲁棒性好(稳定性,抗干扰能力)模型简单,可以得到更好的结果
1、数据来源与类型

(1)来源  大部分的数据都来自已有的数据库,如果没有的话也可以交给很多爬虫工程师去采集,来提供。也可以来自平时的记录,反正数据无处不在,大都是可用的。
(2)类型

  • 按照机器学习的数据分类我们可以将数据分成:
    标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类);
    数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)。
  • 按照数据的本身分布特性:离散型连续型
2、数据的特征抽取

数据多数特征都不是连续变量,比如分类文字图像等,为了对非连续变量做特征表述,需要对这些特征做数学化表述,因此就用到了特征抽取sklearn.feature_extraction提供了特征提取的很多方法

(a)分类特征提取
  • 方法fit_transform(X, y)
    应用并转化映射列表X,y为目标类型
  • 方法inverse_transform(X, [dict_type])
    将Numpy数组或scipy.sparse矩阵转换为映射列表
from sklearn.feature_extraction import DictVectorizer

onehot = DictVectorizer(sparse=True)                   # sparse = True转换为sparse矩阵,默认开启
instances = [{
   
   'city': '北京','temperature':100},
             {
   
   'city': '上海','temperature':60},
             {
   
   'city': '深圳','temperature':30}]
X = onehot.fit_transform(instances).toarray()          # toarray()将sparse矩阵转换为Numpy数组
print(onehot.inverse_transform(X))                     # 返回转换之前数据格式
print(onehot.get_feature_names())                      # 返回特征名称
print(X, type(X))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值