特征工程

1、特征工程

1.1相关定义

1.1.1 数据集

数据集的构成:特征值+目标值(有些数据集是可以没有目标值的)

机器学习开发流程:1)获取数据2)数据处理3)特征工程4)机器学习算法训练-得到模型

5)模型评估6)应用

数据集分为训练集个测试集

1.1.2特征工程介绍

特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。特征工程包括:

1)特征抽取/特征提取

2)特征预处理

3)特征降维

1.2特征抽取

1.2.1定义

特征提取就是把任意数据转化为可用于机器学习的数据特征,特征值能够更好的理解数据,特征提取包括:字典特征提取(特征离散化)、文本特征提取、图像特征提取

通俗的理解就是将我们所输入的信息生成一个的向量数据,从而使的机器能够更好的理解数据。

特征提取的语句为:sklearn.feature_extraction

1.2.2字典特征提取

对字典数据进行特征值化。语句为:sklearn.feature_extraction.DictVectorizer(sparse=True, …)

DictVectorizer.fit_transform(X), X:字典或者包含字典的迭代器返回值,返回sparse矩阵

DictVectorizer.inverse_transform(X), X:array数组或者sparse矩阵 返回值:转换之前数据格式;DictVectorizer.get_feature_names():返回类别名称

DictVectorizer是字典体征提取的方法

sparse矩阵为稀疏矩阵,指的是在数值分析中绝大多数数值为零的矩阵,能够降低内存

输出结果为:

1.2.3文本特征提取

即对文本数据进行特征值化,基本语句为:

sklearn.feature_extraction.text.CountVectorizer(stop_words=[]):

CountVectorizer是属于常见的特征数值计算类,是一个文本特征提取方法

(1)处理英文

输出结果为:

需要注意的点有:

1)导入的库是sklearn.feature_extraction.text,而不是sklearn.feature_extraction

2)fit_transform会自动去除单个词,因此输出的结果中是没有i的

3)toarray是将特征值转换为二维数组

(2)处理中文

输出结果为:

(3)停用词:stop_words=[ ]

输出结果为:

即,stop_words中的词不会再出现在特征名字中。

1.3特征预处理

就是通过一些转换函数,将特征数据转化为更适合算法模型的特征数据的过。由于特征单位相差较大,很多时候不是同一个量级,所以需要对数据进行无量纲化处理,即归一化和标准化

1.3.1 归一化

将原始数据进行变化将数据映射到[0,1]之间(默认是0,1)公式为

基本语句为:sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)

处理数据时的代码表达如下:

import pandas as pd

from sklearn.preprocessing import MinMaxScaler

def minmax_demo():

data = pd.read_csv(‘具体数据’)

    print("data:\n", data)

    transform = MinMaxScaler()

    data_new = transform.fit_transform(data)

    print("data_new:\n", data_new)

    return None

if __name__ == "__main__":

    minmax_demo()

由于一组数据之中最大值和最小值很容易收到异常值的影响,从而使得归一化的结果不大稳定,实际中可以用经验常量来代替最大最小值。在不涉及距离度量、协方差计算、数据不大符合正态分布的时候,可以使用归一化法。

1.3.2 标准化法

将数据变换为均值为0方差为1范围内的数据,公式为:,在分类、聚类算法中,需要使用距离来度量相似性的时候,适合使用标准化法

基本语句为:sklearn.perprocessing.StandradScaler()

处理数据时的格式为:

from sklearn.preprocessing import MinMaxScaler, StandardScaler

def stand_demo():

    data = pd.read_csv('数据')

    print("data:\n", data)

    transform = StandardScaler()

    data_new = transform.fit_transform(data)

    print("data_new:\n", data_new)

    return None

if __name__ == "__main__":

stand_demo()

标准化数据处理在已有样本足够多的情况下比较稳定。

1.4特征降维

降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程。通俗的理解就是,通过一些方法提取出一些较具有代表性的随机变量,从而减少数据个数,提升效率的同时又减少信息的损耗量。

特征降维的方法包括特征选择和主成分分析。

1.4.1 特征选择

特征选择的目标就是从原有特征中找到主要特征。主要包含以下方法:

Filter过滤式:主要探究特征本身特点、特征与特征和目标值之间关联

a.方差选择法:低方差特征过滤

b.相关系数:特征与特征之间的相关程度

Embedded嵌入式:算法自动选择特征(特征与目标值之间的关联)

a.决策树:信息熵、信息增益

b.正则化:L1,L2

c.深度学习:卷积等

基本语句为:sklearn.feature_selection

1.4.2 过滤式

低方差过滤的基本语句为:from sklearn.feature_selection import VarianceThreshold

1.4.3 相关系数法

通过计算皮尔逊相关系数反应变量之间的密切程度,所以基本语句为:

from scipy.stats import pearsonr

1.5主成分分析

主成分分析就是利用原始变量的线性组合形成几个综合指标(主成分),从而在保留原始变量绝大多数信息的情况下达到降维的目的,从而简化问题的复杂性,抓住主要矛盾。

基本语句为:sklearn.decomposition.PCA(n_components=None)

需要注意的点有:(1)n_components,后面对应的是整数时,就是减少到多少特征,如果是小数就是保留百分之多少的信息

(2)PCA.fit_transform(X),X:numpy array格式的数据[N_samples, n_features],返回值:转换后指定维度的array

你可能感兴趣的:(特征工程)