博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【零基础学习机器学习】数据的特征工程 (介绍及代码)
阅读量:3935 次
发布时间:2019-05-23

本文共 2283 字,大约阅读时间需要 7 分钟。

目录


1.特征工程是什么

特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性。

2.特征工程的意义

直接影响预测结果

3.scikit-learn库的介绍

创建一个基于python3的虚拟环境

mkvirtualenv -p /usr/bin/python3.6 ml3
在虚拟环境中运行以下命令
pip3 install Scikit-learn
通过导入命令查看是否可以使用
import sklearn
注:安装scikit-learn需要Numpy,pandas等库

4.数据的特征抽取

1、特征抽取实例演示

得出结论: 特征抽取对文本等数据进行特征值化

注:特征值化是为了计算机更好的理解数据

2、sklearn特征抽取API

sklearn.feature_extraction

3、字典特征抽取

把字典中一些类别数据,分别进行转换成特征

作用:对字典数据进行特征值化

类: sklearn.feature_extraction.DictVectorlzer

演示:

说明:

sparse矩阵:scipy库(对numpy库进行封装的一个库)的默认数据格式就是sparse矩阵。

其存在的目的:节约内存,方便读取处理

以上sparse矩阵对应的ndarray数组是:

one-hot编码概念:

把数据处理成0,1的矩阵形式,如下:

在机器学习中的意义:把类别数据转换成数值型,方便分析。

4、文本特征抽取

作用:对文本数据进行特征值化

两种方式:1.统计每个词在每篇文章出现的次数 2.在第一种的方式上,另外评估词的重要程度

类:sklearn.feature_extraction.text.CountVectorizer

类:sklearn.feature_extraction.text.TfidfVectorizer   (分类机器学习算法的重要依据)

第一种方式演示:

注意:利用toarray()进行sparse矩阵转换array数组

对于中文文本,需要把中文进行分词处理。如下:

第二种方式演示:

5.数据的特征预处理

1、特征处理的方法

    特征处理是什么: 通过特定的统计方法(数学方法)将数据转换成算法要求的数据

    

数据类型 数据处理方法
数值型数据 标准缩放 1、归一化
2、标准化
3、缺失值
类别型数据 one-hot编码
时间类型 时间的切分

2、sklearn特征预处理API

sklearn.preprocessing:所有的预处理方法都在这个模块

归一化

sklearn归一化API:sklearn.preprocessing.MinMaxScaler

归一化的场景:当一些特征同等重要的时候,进行归一化

归一化的目的:使某个特征不会对结果造成更大影响

标准化

场景:使某个异常特征值不会对结果造成更大影响

特点:通过对原始数据进行变换,把数据变换到均值为0,标准差为1(下图有误)

总结:在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据的场景

sklearn特征化API:sklearn.preprocessing.StandardScaler

演示:

缺失值处理

另外缺失值可以用pandas进行处理(dropna、fillna方法),前提是缺失值的类型必须是np.nan(nan是浮点类型)

在pandas中处理有:replace("?", np.nan)

删除 如果每列或行数据缺失达到一定的比例,建议放弃整行或者整列
插补 可以通过缺失值每行或每列的平均值、中位数来填充(一般按照每列,按照特征)

sklearn缺失值API:sklearn.preprocessing.Imputer

演示:

6.数据的降维

数据的降维:指减少特征的数量

降维的方式:

1、特征选择

2、主成分分析

方式一:特征选择

1、特征选择是什么

特征选择:单纯地从提取到的所有特征中选择部分特征作为训练集特征。

主要方法(三大武器):Filter(过滤式):VarianceThreshold      -- Variance:方差  

 ---- 通过方差大小,看出所有样本的这个特征的数据情况(比如方差为0,证明这一特征的数值是一样的,对预测数据没有意义)

                                       Embedded(嵌入式):正则化、决策树

                                       Wrapper(包裹式)  一般不用

特征选择原因:

    冗余:部分特征的相关度高,容易消耗计算性能

    噪声:部分特征对预测结果有影响

2、sklearn特征选择API

sklearn.feature_selection.VarianceThreshold

演示:

3、其他特征选择方法

神经网络(后面讲)

方式二:主成分分析

sklearn主成分分析API

sklearn.decomposition

PCA(主成分分析)是什么

本质:PCA是一种分析、简化数据集的技术

目的:是使数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息

作用:可以削减回归分析或者聚类分析中特征的数量

PCA应用场景:当特征数量达到上百的时候,要考虑简化数据(减少特征)-- 数据会改变,特征数量会减少

                         高维度数据容易出现的问题:特征之间通常是相关的

注意:参数n_components的取值有两种:

1.小数:取值范围是0~1,代表数据进行PCA主成分分析之后,保存了%比的信息量,一般我们会把信息保留在90%~95%

2.整数:减少到的特征数量。我们可能拿不准到底保留到多少个特征数量,一般不用整数表示。

演示:

转载地址:http://zdrgn.baihongyu.com/

你可能感兴趣的文章
有效的软件测试度量
查看>>
软件评测和测试国家现行标准
查看>>
理解测试策略
查看>>
机器学习界大牛林达华推荐的书籍
查看>>
path变量备份
查看>>
Lesson2.2 & 2.3 Maya command reference & quick help
查看>>
lesson 2.4 - Converting MEL Commands to Python
查看>>
Lesson3.2 variables
查看>>
3.4.2 - Operators & 3.4.3 division and truncation
查看>>
3.6 - Maya Commands: setAttr
查看>>
3.7.1 - Strings
查看>>
3.7.4 - Indexing and Slicing Strings
查看>>
3.7.5 - Modifying Strings
查看>>
3.7.6 - String Methods
查看>>
3.8 - Using the Print Function
查看>>
3.9.1 - Lists in Python
查看>>
3.9.2 - Lists - Adding and Removing Objects
查看>>
3.9.3 - Sorting Lists
查看>>
3.10 - Maya Commands: ls
查看>>
3.11 - Dictionaries in Python
查看>>