特征工程介绍

算法 特征工程

2.2.1 为什么需要特征工程

2.2.2 什么是特征工程

        sklearn 特征工程

        pandas 数据清洗、数据处理

                特征抽取 / 特征提取

                        机器学习算法 -统计方法 - 数学公式

                                文本类型 ->数值

                                类型 - 》数值  (One-Hot 编码)

                    特征提取   

                                (将任意数据(如文本或图像)转换成可用于机器学习的数字特征)

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

                                        字典特征提取(特征离散化)

                                        文本特征提取

                                        图像特征提取(深度学习)

                                        sklearn中特征提取api  sklearn.feature_extraction

                           字典特征提取

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

                                   sklearn.feature_extraction.DictVectorzer(sparse=True....)

                                     vector  数学:向量, 物理:矢量

                                                矩阵 matrix  二维数组

                                                向量  vector  一维数组

                                       父类 : 转换器类  (from sklearn.feature_extraction import DictVectorizer)

                                        返回sparse  矩阵

                                                        sparse稀疏

                                                                将非零值  按位置表示出来

                                                                节省内存 - 提高加载效率

                                        **

                        #1实例化一个转化器类
                        transfer = DictVectorizer(sparse=False)
                        #2调用fit_transform()
                        data_new = transfer.fit_transform(data)
                        #显示特征名
                        print("特征名", transfer.feature_names_)
                        print(data_new)

                                       **

                                        应用场景:

                                                1)pclass,sex  数据集中类别特征比较多

                                                        1、将数据集的特征-》字典类型

                                                        2、DicVectorizer转换

                                                2)本身拿到的数据就是字典类型

                             文本特征提取

                                                把单词作为特征

                                                句子、短语、单词、字母

                                                特征:单词(特征词)

                                                方法1:CountVectorizer

                                                        统计每个特征值出现的个数(同一句子中)

                                                           参数stop_words 停用词

def count_demo():
    '''
    文本特征抽取
    :return:
    '''
    data = ['life is short , i like like python','life is too long,i dislike python']
    #1 实例化一个转换器
    tranfer = CountVectorizer()
    #2调用fit_tranform
    data_new = tranfer.fit_transform(data)
    print("特证名",tranfer.get_feature_names_out())
    print(data_new.toarray())
    return None

                                                关键词:在文章中,出现的次数很多,但是在其他类别的文章中出现很少

                                                方法二:Tf-idf文本特征提取(可以找到那些词更为重要,更能找到关键词)

                                                TF-IDF的主要思想是:如果某个词或者短语在一篇文章中出现的频率高,并且在其他文章中很少出现,则认为该词或者短语具有很好的类别区分能力,适合用来分类。

                                                TF-IDF的作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。  

                                                TF-IDF的公式:

                                                词频(TF)指的是某一个给定的词语在该文件中出现的频率

                                                逆向文档频率(IDF)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取以10为底的对数得到

                                                 最后   tfidf  = tf  ×  idf

                                                最终可以理解为重要程度

                                        TF-IDF的重要性:

                                              分类机器学习算法进行文章分类中前期数据处理方式

                                               在数据集划分后,训练集用fit_transform 测试集用transform是因为

训练集和测试集的每个样本都是从同一分布中抽样得到的,所以在训练集中fit之后在测试集就不能再fit了,要不然二者可能不是同一分布模型,预测效果会很糟糕。

                                         处理中文文本

                                                需要先分词

                                         CountVectorizer 与 DicVectorizer 的对比

                                                1.  DictVectorizer(sparse=False)  DicVectorizer在转换成矩阵时,是可以直接加参数sparse =False ,不让其返回稀疏矩阵。  而,CounterVectorizer()不可以使用该参数,只能在调用fit_  transform后,用返回值调用toarray()

特征处理

        什么是特征处理?就是统一量级

        为什么我们要归一化/标准化?特征是按照相同等级来进行计算的,但由于每个特征的数值范围不同导致偏小的特征不起作用。

                无量纲化

        归一化

归一化公式:

                

def minmax_demo():
    '''
    归一化
    :return:
    '''
    #1 获取数据
    data = pd.read_csv("./data/dating.txt")
    print(data)
    data = data.iloc[:,:3]
    print(data)
    #2 实例化一个转换器类
    tranfer = MinMaxScaler()

    #3  调用fit_transform
    data_new = tranfer.fit_transform(data)
    print("data_new\n",data_new)
    return None

        在归一化时会出现异常值:一般在最大值、最小值 

        归一化总结:

               注意最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

        标准化

              公式:  (x-mean)/std

              mean为平均值,std为标准差

             标准差反应的是集中程度

        标准化总结

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

        归一化与标准差

                对于归一化来说:如果出现异常点,影响到了最大值和最小值,那么结果显然会发生改变。

                对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响不大,从而方差改变较小。

               降维

                降维 - 降低维度

                降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程。

                降维的两种方法

                特征选择

                主成分分析(可以理解成一种特征提取的方式)

                特征选择的定义

                数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。

                特征选择的方法

        Filter过滤式

                方差选择法:低方差特征过滤(将低方差的特征过滤掉)

                相关系数-特征与特征之间的相关程度

                {皮尔逊相关系数 : 取值范围        -1<=r <= 1

                        1.当 r>0时,表示两变量正相关,当r<0时,表示两变量负相关,when  r = 0,表示两个变量毫无关系

                        2.一般划分为三个等级:|r| < 0.4 低相关; 0.4<= |r| <= 0.7;   0.7 <= |r| < 1 高度相关

                }

        Embeded嵌入式

                决策树 

                正则化

                深度学习

主成分分析(pca)

定义:就是在降维时,能够尽量保存 更多的原有特征

sklearn.decomposition.PCA(n_components=None)

n_components:

        如果为小数:表示保留百分之多少的信息

        如果为整数:减少到多少特征

                

        

      

       

                                                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值