精华内容
下载资源
问答
  • hctsa对时间序列进行特征提取的使用流程时间序列在许多领域中都有重要应用,如信号分析、金融量化分析、气象分析以及人体行为分析等等。通常对时间序列的处理需要进行特征分析, 关于特征提取分析的问题,主要是时域和...

    hctsa对时间序列进行特征提取的使用流程

    时间序列在许多领域中都有重要应用,如信号分析、金融量化分析、气象分析以及人体行为分析等等。通常对时间序列的处理需要进行特征分析, 关于特征提取分析的问题,主要是时域和频域特征,用滑动窗口提取特征,比如平均数、方差、过零率等,还有傅里叶变换后的幅度、频率、均值等。而这种特征分析通常需要一些特定领域内的专业知识,因此也就进一步提升了预处理的门槛。例如压力脉搏信号,不仅需要分析时域的幅度、均值、周期性等,也需要分析频域中的基频和倍频信号,以及各种频带的功率谱等等。

    目前关于自动提取时间序列特征的开源库,包括python版本的tsfresh,下载链接https://github.com/blue-yonder/tsfresh/tree/master/tsfresh, 以及Matlab版本的hctsa,下载链接https://github.com/benfulcher/hctsa。这两个库都有比较详细的英文使用手册,但对没有机器学习基础的同学使用还是比较困难,目前工作中对tsfresh暂时还没有用到,下面给出hctsa的使用步骤。数据以TimeSeries中数据INP_test_ts.txt为例,注意先行其中的分类标签都改为1个,3个互不相同为宜。

    step1:安装hctsa代码包,运行install.m文件;

    step2:添加hctsa代码包运行需要的所有路径,运行startup.m文件;

    step3:初始化输入函数:TS_init(INP_ts,INP_mops,INP_ops,beVocal,outputFile);其中

    INP_ts: 格式可以参考文件夹TimeSeries里面的HCTSA.mat或INP_test_ts.txt,此项必须有输入;

    INP_mops: 主操作函数定义, 默认输入为DataBase文件夹中的INP_mops.txt;

    INP_ops: 计算序列特征的函数定义,默认输入为DataBase文件夹中的INP_mops.txt;

    beVocal: 长度为3的逻辑行向量,是否显示对应输入变量脚本运行的进度信息,默认有输入的变量都显示;

    outputFile: 输出文件名,包括主操作函数(MasterOperations),特征计算函数(Operations),原始数据(TimeSeries),初始化的特征值矩阵(TS_DataMat)、计算每个特征需要的时间(TS_Calc-Time)以及每个特征质量标签;

    备注: TimeSeries是单一变量,均匀采样,按时间排序的序列,每个序列可以不等长。

    图1 原始信号

    step4:计算原始数据(TimeSeries)特征,生成的值对特征值矩阵(TS_DataMat)、计算每个特征需要的时间(TS_Calc-Time)以及每个特征质量标签进行覆盖,TS_compute(doParallel,ts_id_range,op_id_range,computeWhat,customFile,beVocal)

    doParallel: 1开启并行运算,0不开启,默认为0;

    ts_id_range: 时间序列范围,如[2:100],默认为所有序列;

    op_id_range: 操作序列范围,默认为所有操作(示例为7873个)

    computeWhat: 对应质量标签的取值;

    customFile: 输出文件名,默认为HCTSA.mat;

    beVocal: 逻辑变量,是否显示脚本运行的进度信息,默认显示;

    step5:质量标签统计分析,TS_InspectQuality(inspectWhat,customFile)

    inspectWhat: 显示质量标签输出,选择分类的有效性特征;

    customFile: 输出文件名,默认为HCTSA.mat;

    ee2051a667fbeb0867b3445d631de28a.png

    图2 生成特征的有效性图示

    step6:滤除和归一化数据,outputFileName =TS_normalize(normFunction,filterOptions, fileName_HCTSA,classVarFilter,subs),

    normFunction: 归一化函数;

    filterOptions: 好值的比例,长度为2的行向量,分别为行列的比例阈值,默认[0.7,1];

    fileName_HCTSA: 导入数据的文件,默认HCTSA.mat;

    classVarFilter: 是否滤除方差为0的类(即常量序列);

    subs: 需要处理的某个子序列;

    outputFileName: 处理后保存数据的文件名;

    step7:使用指定的关键字标记时间序列的组,[groupLabels,newFileName] =TS_LabelGroups(whatData,keywordGroups,saveBack,filterMissing)

    whatData:取出并且重新覆盖标签的数据文件,默认为HCTSA.mat;

    keywordGroups:标签元胞数组;

    saveBack:可以设置为false以停止将分组保存回输入文件;

    filterMissing:设置为true可删除与任何关键字不匹配的数据;

    groupLabels:与关键字组中的每个关键字对应的索引;

    newFileName:保存修改的数据名;

    step8:使用所有特征对数据进行分类,TS_classify(whatData,whatClassifier,doPCs,doNull,seedReset)

    whatData:加载数据的文件名,默认为HCTSA_N.mat;

    whatClassifier: 分类器,默认为svm_linear,这个需要注意;

    doPCs: 逻辑变量;

    doNull: 逻辑变量;

    seedReset: 随机种子;

    0a4ee287fb3a9189731569b36250b0f6.png

    图3 分类的混淆矩阵

    0320515757512e142be7064f97975a6a.png

    图4 2-折交叉验证svm分类效果

    step9:显示分类效果好的特征及特征分类函数,[ifeat,testStat,testStat_rand]= TS_TopFeatures(whatData,whatTestStat,varargin);

    whatData: 使用的数据文件名;

    whatTestStat: 测试统计量来量化每个特征的优点;

    varargin: 额外选项,参看文件;

    ifeat: 特征计算的性能排序;

    testStat: 特征计算的统计;

    testStat_rand: 测试统计数据组成的空分布。

    运行过程显示所有操作的平均线性分类准确性,以及具有最佳性能的操作列表(按其测试统计排序,其ID显示在方括号中,关键字显示在圆括号中)。

    Using overall classificationaccuracy as output measure

    Comparing the (in-sample)performance of 7149 operations for 3 classes using a linear SVM classifier...

    (should take approx 2.8min tocompute for all 7149 features)

    Done in 2.7min.

    Mean linear SVM classifierperformance across 7149 operations = 98.15%

    (Random guessing for 3 equiprobableclasses = 33.33%)

    [2] mean(distribution,location,raw,locdep) -- 100.00%

    [3] harmonic_mean(distribution,location,raw,locdep) -- 100.00%

    [4] median(distribution,location,raw,locdep) -- 100.00%

    [5] trimmed_mean_1 (distribution,location,raw,locdep)-- 100.00%

    [6] trimmed_mean_5(distribution,location,raw,locdep) -- 100.00%

    [7] trimmed_mean_10(distribution,location,raw,locdep) -- 100.00%

    [8] trimmed_mean_25(distribution,location,raw,locdep) -- 100.00%

    [9] trimmed_mean_50 (distribution,location,raw,locdep)-- 100.00%

    [10] midhinge(distribution,location,raw,locdep) -- 100.00%

    [12] DN_HistogramMode_10(distribution,location) -- 100.00%

    [13] DN_HistogramMode_20(distribution,location) -- 100.00%

    [14] maximum (distribution) -- 100.00%

    [15] miminmum (distribution) --100.00%

    [16] rms(distribution,location,raw,locdep,spreaddep) -- 100.00%

    [17] burstiness_Goh(distribution,raw,locdep,spreaddep) -- 100.00%

    [18] burstiness_Kim(distribution,raw,locdep,spreaddep) -- 100.00%

    [19] standard_deviation(distribution,spread,raw,spreaddep) -- 100.00%

    [20] mean_absolute_deviation(distribution,spread,raw,spreaddep) -- 100.00%

    [21] interquartile_range(distribution,spread,raw,spreaddep) -- 100.00%

    [22] median_absolute_deviation(distribution,spread,raw,spreaddep) -- 100.00%

    [23] DN_Moments_3(distribution,moment,shape) -- 100.00%

    [24] DN_Moments_4(distribution,moment,shape) -- 100.00%

    [25] DN_Moments_5(distribution,moment,shape) -- 100.00%

    [26] DN_Moments_6(distribution,moment,shape) -- 100.00%

    [27] DN_Moments_7(distribution,moment,shape) -- 100.00%

    [28] DN_Moments_8(distribution,moment,shape) -- 100.00%

    [29] DN_Moments_9(distribution,moment,shape) -- 100.00%

    [30] DN_Moments_10(distribution,moment,shape) -- 100.00%

    [31] DN_Moments_11(distribution,moment,shape) -- 100.00%

    [32] DN_Moments_raw_3(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [33] DN_Moments_raw_4(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [34] DN_Moments_raw_5(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [35] DN_Moments_raw_6(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [36] DN_Moments_raw_7(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [37] DN_Moments_raw_8(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [38] DN_Moments_raw_9(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [39] DN_Moments_raw_10(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [40] DN_Moments_raw_11(distribution,moment,shape,raw,spreaddep) -- 100.00%

    [41] skewness_pearson(distribution,moment,shape,raw,locdep) -- 100.00%

    [42] skewness_bowley(distribution,moment,shape) -- 100.00%

    2b531142071df339a3b05525289a8389.png

    图5 完整库与随机标签的分类效果比较

    8b1b1a12b8f160b843f715b7331159ce.png

    图6 显示最优特征的类概率分布

    图7 最优特征计算函数的关系图

    根据索引(ID值)查找对应的特征计算函数和主操作函数

    如在命令窗口输入Operations([Operations.ID] == 6610)显示

    struct with fields:

    CodeString: 'WL_cwt_db3_32.stat_5_s_s'

    Name: 'WL_cwt_db3_32_stat_5_s_s'

    Keywords: 'wavelet,cwt'

    ID: 6610

    MasterID: 989

    再通过MasterID查找主操作函数,在命令窗口输入MasterOperations([MasterOperations.ID] == 989)显示

    struct with fields:

    Code: 'WL_cwt(y,'db3',32)'

    Label: 'WL_cwt_db3_32'

    ID: 989

    其中的WL_cwt就是主操作函数,通过editWL_cwt就可以查看对应的源码。

    总结

    hctsa库给从事时间序列特征提取提供了数字依据,也为没有相关知识的同学快速寻找时间序列预处理提供了思路。不过hctsa库只针对单变量的时间序列,在实际工作中经常面对的是多变量的时间序列,如多通道的ECG信号、EEG信号以及三轴加速度信号等等。这就需要在使用hctsa库前先将待处理的多变量时间序列转化单变量时间序列,以三轴加速度信号为例,可以将三轴加速度融合为合加速度,也可以用PCA降维处理。最后感谢作者们的工作以及分享,感谢伸展同学的推荐。

    展开全文
  • 1、Repeatability Is Not Enough:Learning Affine...主要贡献是提出了affine shape estimator,并依据次设计了AffNet,用来提取patch,然后用使用Hardnet(主要思想就是力求匹配特征之间的距离尽可能的近,不匹配特征

    1、Repeatability Is Not Enough:Learning Affine Regions via Discriminability

    论文链接:https://arxiv.org/pdf/1711.06704.pdf
    代码链接:https://github.com/ducha-aiki/affnet

    主要贡献是提出了affine shape estimator,并依据次设计了AffNet,用来提取patch,然后用使用Hardnet(主要思想就是力求匹配特征之间的距离尽可能的近,不匹配特征之间的距离尽可能的远)从patch中提取描述子,来完成后续的匹配等工作:
    在这里插入图片描述

    2、Key.Net: Keypoint Detection by Handcrafted and Learned CNN Filters

    论文链接:https://arxiv.org/pdf/1904.00889.pdf
    代码链接:https://github.com/axelBarroso/Key.Net

    主要思想是使用手工特征(可以有效减少CNN模型的复杂程度)和CNN联合提取,再将各层特征图上采样后,综合得到关键点,描述子的提取也可以使用Hardnet模型。
    在这里插入图片描述

    3、From Coarse to Fine: Robust Hierarchical Localization at Large Scale

    论文链接:https://arxiv.org/pdf/1812.03506.pdf
    代码链接:https://github.com/ethz-asl/hfnet

    首先通过一个MobileNet共享计算,1)对所得到的特征图用一个类似的SuperPoint的解码器进行解码,分别得到关键点的得分和局部描述子,2)使用NetVLAD层进行聚类,得到全局描述子。
    其训练方式也是一大创新,使用了Multi-task distillation的方法,即根据已经训练好的导师模型来进行训练,针对1)使用已经训练好的SuperPoint,针对2)使用已经训练好的NetVLAD。通过这种方式大大加快了训练速度,并且测试结果显示效果甚至好于训练好的SuperPoint+NetVLAD的特征提取效果。
    在这里插入图片描述

    4、ASLFeat: Learning Local Features of Accurate Shape and Localization(详细可参考博客

    论文链接:https://openaccess.thecvf.com/content_CVPR_2020/papers/Luo_ASLFeat_Learning_Local_Features_of_Accurate_Shape_and_Localization_CVPR_2020_paper.pdf
    代码链接:https://github.com/lzx551402/ASLFeat

    这份工作的主要目的是解决关键点和描述子联合学习中的两个缺点。首先是特征的形状信息没有得到充足考虑,其次是所提取关键点的的定位准确性不足。所提出的ASLFeat通过三个轻量且有效的改变来解决了这两个问题:1、使用了DCN(Deformable Convolutional Network)来稠密的估计并采用了局部转换的策略,2、使用固有的特征分级结构来处理精确关键点定位所涉及的空间分辨率和底层细节问题,3、使用高峰值测量的方法关联特征响应并且获得更为可靠的检测分数(通过检测分数来衡量关键点的性能)。
    在这里插入图片描述
    在这里插入图片描述

    针对D2-Net关键点位置提取不精确的缺陷提出了MulDet

    注:相比U-Net中的将低层特征图和高层特征图直接进行融合,所提出的方法对底层的特征图不做处理,只对高层特征图进行处理,更好的保留了低层次结构,如角点、边等。

    展开全文
  • 尺度特征提取

    千次阅读 2021-03-26 09:11:51
    将图片进行不同尺度的缩放,得到图像金字塔,然后对每层图片提取不同尺度的特征,得到特征图。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得...

    1、图像金字塔

    将图片进行不同尺度的缩放,得到图像金字塔,然后对每层图片提取不同尺度的特征,得到特征图。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。
    特点:不同尺度的特征都可以包含很丰富的语义信息,精度高 ,但速度慢。

    2、多尺度的卷积层

    conv-3的低网络层,有更小的感受野,获取的是低层信息,对小目标的提取能力更好;而高层如conv-5,获取的是高层语义信息,对于大目标的检测更加准确。对于不同的输出层设计不同尺度的目标检测器,完成多尺度下的检测问题。卷积网络不同层得到的特征特点的不同,对不同层的特征采用不同的利用方式。

    3、SSD

    4、U-Net

    6、FPN(特征金字塔)

    FPN网络最开始是为目标检测而设计的,在之前的目标检测网络中通常是使用顶层特征做预测,但是低层语义信息少,对小目标检测不准确;后来有网络采用多尺度信息融合的方式,用融合后的特征做预测。FPN的特殊之处在于预测是在不同特征层独立进行的。

    (a)图像金字塔,即将图像做成不同的scale,然后不同scale的图像生成对应的不同scale的特征。这种方法的缺点在于增加了时间成本。有些算法会在测试时候采用图像金字塔。
    (b)像SPP net,Fast RCNN,Faster RCNN是采用这种方式,即仅采用网络最后一层的特征。
    (c)像SSD(Single Shot Detector)采用这种多尺度特征融合的方式,没有上采样过程,即从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。
    (d)本文作者是采用这种方式,顶层特征通过上采样和低层特征做融合,而且每层都是独立预测的。

     

    展开全文
  • 目录特征工程——特征提取1、特征提取1.1 定义1.2 特征提取API2、字典特征提取2.1 应用2.2 流程分析2.3 总结3、文本特征提取3.1 应用3.2 流程分析3.3 jieba分词处理3.4 案例分析3.5 Tf-idf文本特征提取3.5.1 公式...

    特征工程——特征提取

    特征提取是特征工程里面的一部分操作,下面开始介绍特征提取:

    什么是特征提取呢?
    在这里插入图片描述
    在这里插入图片描述

    1、特征提取

    1.1 定义

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

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

    • 特征提取分类:
      • 字典特征提取(特征离散化)
      • 文本特征提取
      • 图像特征提取(深度学习将介绍)

    1.2 特征提取API

    sklearn.feature_extraction
    

    2、字典特征提取

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

    sklearn.feature_extraction.DictVectorizer(sparse=True,…)
    
    • DictVectorizer.fit_transform(X)

      • X:字典或者包含字典的迭代器返回值
      • 返回sparse矩阵
    • DictVectorizer.get_feature_names() 返回类别名称

    2.1 应用

    我们对以下数据进行特征提取:

    [{'city': '北京','temperature':100},
    {'city': '上海','temperature':60},
    {'city': '深圳','temperature':30}]
    

    在这里插入图片描述

    2.2 流程分析

    • 实例化类DictVectorizer
    • 调用fit_transform方法输入数据并转换(注意返回格式)
    from sklearn.feature_extraction import DictVectorizer
    
    def dict_demo():
        """
        字典特征提取
        :return:None
        """
        # 1.获取数据
        data = [{'city': '北京', 'temperature': 100},
                {'city': '上海', 'temperature': 60},
                {'city': '深圳', 'temperature': 30}]
    
        # 2.字典特征提取
        # 2.1实例化
        transfer = DictVectorizer(sparse=True) # sparse好处是节省内存,提高访问效率
    
        # 2.2转换
        new_data = transfer.fit_transform(data)
        print(new_data)
    
        # 2.3获取具体属性名
        names = transfer.get_feature_names()
        print(names)
    
    if __name__ == "__main__":
        dict_demo()
    

    注意观察sparse=False参数的结果:

    返回的结果:
      (0, 1)    1.0
      (0, 3)    100.0
      (1, 0)    1.0
      (1, 3)    60.0
      (2, 2)    1.0
      (2, 3)    30.0
    特征名字:
     ['city=上海', 'city=北京', 'city=深圳', 'temperature']
    

    这个结果和我们平时的不一样,这个是稀疏矩阵的存储,那再看看sparse=True参数的结果:

    返回的结果:
     [[   0.    1.    0.  100.]
     [   1.    0.    0.   60.]
     [   0.    0.    1.   30.]]
    特征名字:
     ['city=上海', 'city=北京', 'city=深圳', 'temperature']
    

    我们把这个处理数据的技巧叫做”one-hot“编码:
    在这里插入图片描述
    转化为:
    在这里插入图片描述

    2.3 总结

    对于特征当中存在类别信息的我们都会做one-hot编码处理

    3、文本特征提取

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

    API:
    第一个:

    sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
    
    • stop_words:表示哪些词不用特征值化
    • 返回词频矩阵

    然后:

    • CountVectorizer.fit_transform(X)
      • X:文本或者包含文本字符串的可迭代对象
      • 返回值:返回sparse矩阵
    • CountVectorizer.get_feature_names() 返回值:单词列表

    第二个:

    sklearn.feature_extraction.text.TfidfVectorizer
    

    3.1 应用

    我们对以下数据进行特征提取:

    ["life is short,i like python",
    "life is too long,i dislike python"]
    

    在这里插入图片描述
    那怎么实现上面的编码呢?接着看:

    3.2 流程分析

    • 实例化类CountVectorizer
    • 调用fit_transform方法输入数据并转换 (注意返回格式,利用toarray()进行sparse矩阵转换array数组)
    from sklearn.feature_extraction.text import CountVectorizer
    
    def text_count_demo():
        """
        对文本进行特征抽取,countvetorizer
        :return: None
        """
        data = ["life is short,i like like python", "life is too long,i dislike python"]
        # 1、实例化一个转换器类
        # transfer = CountVectorizer(sparse=False) # 注意,没有sparse这个参数
        transfer = CountVectorizer() # 注意:有stop_words=[]这个参数,
        # 2、调用fit_transform
        data = transfer.fit_transform(data)
        print("文本特征抽取的结果:\n", data.toarray())
        print("返回特征名字:\n", transfer.get_feature_names())
    
        return None
    

    返回结果:

    文本特征抽取的结果:
     [[0 1 1 2 0 1 1 0]
     [1 1 1 0 1 1 0 1]]
    返回特征名字:
     ['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
    

    注意:返回的是特征名字出现的次数

    问题:如果我们将数据替换成中文?

    "人生苦短,我喜欢Python","生活太长久,我不喜欢Python"
    

    那么最终得到的结果是:

    在这里插入图片描述
    为什么会得到这样的结果呢,仔细分析之后会发现英文默认是以空格分开的。其实就达到了一个分词的效果,所以我们要对中文进行分词处理。

    3.3 jieba分词处理

    • jieba.cut()
      • 返回词语组成的生成器

    需要安装下jieba库

    pip3 install jieba
    

    3.4 案例分析

    对以下三句话进行特征值化

    今天很残酷,明天更残酷,后天很美好,
    但绝对大部分是死在明天晚上,所以每个人不要放弃今天。
    
    我们看到的从很远星系来的光是在几百万年之前发出的,
    这样当我们看到宇宙时,我们是在看它的过去。
    
    如果只用一种方式了解某样事物,你就不会真正了解它。
    了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。
    

    分析:

    • 准备句子,利用jieba.cut进行分词
    • 实例化CountVectorizer
    • 将分词结果变成字符串当作fit_transform的输入值

    在这里插入图片描述

    from sklearn.feature_extraction.text import CountVectorizer
    import jieba
    
    def cut_word(text):
        """
        对中文进行分词
        "我爱北京天安门"————>"我 爱 北京 天安门"
        :param text:
        :return: text
        """
        # 用jieba对中文字符串进行分词
        text = " ".join(list(jieba.cut(text)))
    
        return text
    
    def text_chinese_count_demo2():
        """
        对中文进行特征抽取
        :return: None
        """
        data = ["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。",
                "我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。",
                "如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]
        # 将原始数据转换成分好词的形式
        text_list = []
        for sent in data:
            text_list.append(cut_word(sent))
        print(text_list)
    
        # 1、实例化一个转换器类
        # transfer = CountVectorizer(sparse=False)
        transfer = CountVectorizer()
        # 2、调用fit_transform
        data = transfer.fit_transform(text_list)
        print("文本特征抽取的结果:\n", data.toarray())
        print("返回特征名字:\n", transfer.get_feature_names())
    
        return None
    

    返回结果:

    ['一种 还是 一种 今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 。', '我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。', '如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。']
    Prefix dict has been built succesfully.
    文本特征抽取的结果:
     [[2 0 1 0 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 2 0 1 0 2 1 0 0 0 1 1 0 0 1 0]
     [0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 3 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 1]
     [1 1 0 0 4 3 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 2 1 0 0 1 0 0 0]]
    返回特征名字:
     ['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '还是', '这样']
    

    但如果把这样的词语特征用于分类,会出现什么问题?

    请看问题:
    在这里插入图片描述
    该如何处理某个词或短语在多篇文章中出现的次数高这种情况

    3.5 Tf-idf文本特征提取

    • TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类
    • TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度

    3.5.1 公式

    • 词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率
    • 逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到
      在这里插入图片描述

    最终得出结果可以理解为重要程度。

    举例:
    假如一篇文章的总词语数是100个,而词语"非常"出现了5次,那么"非常"一词在该文件中的词频就是5/100=0.05。
    而计算文件频率(IDF)的方法是以文件集的文件总数,除以出现"非常"一词的文件数。
    所以,如果"非常"一词在1,0000份文件出现过,而文件总数是10,000,000份的话,
    其逆向文件频率就是lg(10,000,000 / 1,0000)=3。
    最后"非常"对于这篇文档的tf-idf的分数为0.05 * 3=0.15
    

    3.5.2 案例

    from sklearn.feature_extraction.text import TfidfVectorizer
    import jieba
    
    def cut_word(text):
        """
        对中文进行分词
        "我爱北京天安门"————>"我 爱 北京 天安门"
        :param text:
        :return: text
        """
        # 用结巴对中文字符串进行分词
        text = " ".join(list(jieba.cut(text)))
    
        return text
    
    def text_chinese_tfidf_demo():
        """
        对中文进行特征抽取
        :return: None
        """
        data = ["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。",
                "我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。",
                "如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]
        # 将原始数据转换成分好词的形式
        text_list = []
        for sent in data:
            text_list.append(cut_word(sent))
        print(text_list)
    
        # 1、实例化一个转换器类
        # transfer = CountVectorizer(sparse=False)
        transfer = TfidfVectorizer(stop_words=['一种', '不会', '不要'])
        # 2、调用fit_transform
        data = transfer.fit_transform(text_list)
        print("文本特征抽取的结果:\n", data.toarray())
        print("返回特征名字:\n", transfer.get_feature_names())
    
        return None
    

    返回结果:

    ['一种 还是 一种 今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 。', '我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。', '如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。']
    文本特征抽取的结果:
     [[ 0.          0.          0.          0.43643578  0.          0.          0.
       0.          0.          0.21821789  0.          0.21821789  0.          0.
       0.          0.          0.21821789  0.21821789  0.          0.43643578
       0.          0.21821789  0.          0.43643578  0.21821789  0.          0.
       0.          0.21821789  0.21821789  0.          0.          0.21821789
       0.        ]
     [ 0.2410822   0.          0.          0.          0.2410822   0.2410822
       0.2410822   0.          0.          0.          0.          0.          0.
       0.          0.2410822   0.55004769  0.          0.          0.          0.
       0.2410822   0.          0.          0.          0.          0.48216441
       0.          0.          0.          0.          0.          0.2410822
       0.          0.2410822 ]
     [ 0.          0.644003    0.48300225  0.          0.          0.          0.
       0.16100075  0.16100075  0.          0.16100075  0.          0.16100075
       0.16100075  0.          0.12244522  0.          0.          0.16100075
       0.          0.          0.          0.16100075  0.          0.          0.
       0.3220015   0.16100075  0.          0.          0.16100075  0.          0.
       0.        ]]
    返回特征名字:
     ['之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '还是', '这样']
    

    这里再解释一下文本特征提取的结果:返回的是tf-idf分数,也就是特征在每篇文章中的tf-idf分数,比如说:‘之前’这个特征在三篇文章中的tf-idf分数分别为0、0.2410822、0,那就说明在第二篇中的重要程度比其他两篇大。

    3.6 Tf-idf的重要性

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

    4、总结:

    在这里插入图片描述

    若有用,欢迎点赞,若有错,请指正,谢谢!

    展开全文
  • Gabor特征提取

    2021-04-20 10:00:32
    在图像处理中,Gabor函数是一个用于边缘提取的线性滤波器。在空间域中,一个二维Gabor滤波器是一个由正弦平面波调制的高斯核函数。Gabor分为实部和虚部,用实部进行滤波后图像会平滑;虚部滤波后用来检测边缘。Gabor...
  • MATLAB特征提取代码

    2021-05-06 06:39:59
    for i=1:26 f=strcat('D:\bishe\',num2str(i)); image=strcat(f,'.jpg'); PS=imread(image); PS=imresize(PS,[300,300],'bilinear');%归一化大小 PS=rgb2gray(PS);... %提取面积,矩形度,圆形度,拉伸度特征
  • 本文实例讲述了Python实现的特征提取操作。分享给大家供大家参考,具体如下:# -*- coding: utf-8 -*-"""Created on Mon Aug 21 10:57:29 2017@author: 飘的心"""#过滤式特征选择#根据方差进行选择,方差越小,代表...
  • Python进行特征提取的示例代码,特征,方差,数据,的是,流水线Python进行特征提取的示例代码易采站长站,站长之家为您整理了Python进行特征提取的示例代码的相关内容。#过滤式特征选择#根据方差进行选择,方差越小,...
  • CNN特征提取结果可视化——hooks简单应用

    千次阅读 多人点赞 2021-04-10 10:57:43
    文章目录CNN特征提取结果可视化——hooks简单应用Hooks简单介绍CNN特征提取的简单可视化创建CNN特征提取器创建保存hook内容的对象为卷积层注册hook读取图像并进行特整体提取查看卷积层特征提取效果查看卷积层数可视...
  • 常见的特征提取算法主要分为以下3类:基于颜色特征:如颜色直方图、颜色集、颜色矩、颜色聚合向量等;基于纹理特征:如Tamura纹理特征、自回归纹理模型、Gabor变换、小波变换、MPEG7边缘直方图等;基于形状特征:如...
  • GIST特征提取

    2021-11-12 13:12:23
    采用全局特征信息对场景进行识别与分类不需要对图像进行分割和局部特征提取,可以实现快速场景识别与分类。 1.1 什么是Gist特征 一种宏观意义的场景特征描述 对于“大街上有一些行人”这个场景,我们必须通过局部...
  • 一、特征提取和特征选择 1、特征选择和特征选择的区别 =特征选择和降维(特征提取)有些许的相似点=,这两者达到的效果是一样的,就是试图去减少特征数据集中的属性的数目;但是两者所采用的方式方法却不同: 降维的...
  • 《图像特征提取matlab程序》由会员分享,可在线阅读,更相关《图像特征提取matlab程序(2页珍藏版)》请在人人文库网上搜索。1、直接帧间差分,计算阈值并进行二值化处理(效果不好)clc;clear;Im1 = double(imread...
  • 文章目录引言一、图像切割二、特征提取1.各阶颜色矩的计算公式三、python实现 水质图像数据—百度网盘链接提取码:1234 引言   本文以水质图像为例,进行图像切割与特征提取 一、图像切割   一般情况下,采集...
  • 脑电信号特征提取方法研究

    千次阅读 2021-04-24 00:33:56
    本文主要从认知信号的提取、无创颅内压监测、运动想象特征提取三方面进行研究。 阵发性40Hz的脑电活动与人的思维密切相关,表征着短时记忆、集中警觉等认知功能,对老年痴呆症的早期发现、婴幼儿大脑发育状态监测等...
  • %% 1时域特征提取 for i=2:8 y=ct(:,i); a(1,i) = max(y); %最大值 a(2,i)= min(y); %最小值 a(3,i) = mean(y); %平均值 ma=a(1,i) ;mi=a(2,i); a(4,i) = ma-mi; %峰-峰值 a(5,i) = mean(abs(y)); %绝对值的平均值...
  • (八)特征选择与特征提取

    千次阅读 2021-01-12 14:31:01
    特征选择与特征提取 一、特征的选择 1、原始特征 在描述对象的时候 模式识别中把每个对象都量化为一组特征来描述,构建特征空间是解决模式识别问题的第一步,其中通过直接测量得到的特征称为原始特征。 如: - 人体...
  • LBP特征被用在人脸检测与识别的过程中。将人脸分成N个矩形区域,对图像进行LBP变换,求出每个区域的LBP直方图,将这N个直方图拼接成一个新的直方图,并用该直.圆形LBP算子基本的LBP算子的最大缺陷在于它只覆盖了一个...
  • OpenCV图像特征提取

    千次阅读 2021-04-18 07:27:57
    图像特征提取 本章中我们将讨论如何识别并可靠稳定的跟踪连续帧中的图像特征。主要内容包括: intensity gradients and image filtering basics and the properties required to describe suitable keypoints ...
  • 人脸特征提取

    千次阅读 2021-11-12 21:12:35
    文章目录人脸特征提取一、安装dlib及OPENCV1. dlib安装2. 安装opencv二、绘制人脸的68个特征点存储位置改变图片的亮度与对比度三、眼睛处绘制黑色实心圈三、总结 人脸特征提取 一、安装dlib及OPENCV 1. dlib安装 ...
  • 这里是使用“特征提取+BP神经网络,实现对图像的分类”,需要知道的是:1.对二维图像做完标签,制作数据集后,可以用CNN(一般输入是而惟独图片)来对图像做分类的。当前,在这之前要经过对模型的训练过程。2.也可以...
  • python实现cnn特征提取 python keras

    千次阅读 2021-01-14 23:23:17
    python keras CNN训练文字的一位特征向量怎么构造为什么幸福总是擦肩而过,偶尔想你的时候,就让回忆来陪小编。keras/imdb_cnn.py at master · fchollet/keras · GitHub '''This example demonstrates the use of ...
  • 对共生矩阵计算能量、熵、惯性矩、相关4个纹理参数,提取纹理图像的特征量.%基于共生矩阵纹理特征提取,d=1,θ=0°,45°,90°,135°共四个矩阵%所用图像灰度级均为256%function : T=Texture(Image)%Image : 输入图像...
  • SURF特征提取

    2021-01-17 16:46:47
    SURF特征提取概述算法流程相比SIFT改进的方面代码实现 概述 SURF,全称Speeded-up Robust Feature,是SIFT算法的改进版和加速版,综合性能更优。由Herbert Bay发表在2006年的欧洲计算机视觉国际会议(Europen ...
  • 而脑电位信号复杂且易受噪 音干扰,很多特征提取算法实现复杂、计算耗时、不易于在嵌入式设备中 实现(微型化)。技术实现要素:本发明针对现有技术的不足,提出了一种脑电信号实时特征提取方 法。本发明一...
  • 点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自 |AI深度学习视线 精彩内容计算机视觉需要图像预处理,比如特征提取,包括特征点,边缘和...
  • SIFT特征提取

    2021-01-17 15:25:13
    SIFT特征提取概述算法原理及流程建立高斯差分金字塔极值点检测确定关键点的主方向构建关键点描述符 概述 SIFT算法由D.G.Lowe 1999年提出,2004年完善总结。 SIFT (Scale-invariant feature transform), 尺度不变...
  • 基于模态3D_CNNs特征提取的MRI脑肿瘤分割方法基于模态3D-CNNs特征提取的MRI脑肿瘤分割方法靖*罗蔓黄杨丰(南方医科大学生物医学工程学院,广州510515)摘要针对目前MRI脑肿瘤分割中的无监督特征提取方法无法适应...
  • 从20世纪90年代末开始,这些音频特征也被应用于乐器识别等音乐信息检索任务中,更针对音频音乐设计的特征也应运而生。1. 音频特征的类别认识音频特征不同类别不在于对某一个特征精准分类而是加深理解特征的物理...
  • 图像特征提取技术

    2021-02-02 22:36:32
    基于颜色的特征提取:颜色空间;直方图以及特征提取;图像分块;颜色矩; 基于纹理的特征提取:灰度共生矩阵;tamura纹理; 基于深度神经网络的图像处理

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 323,647
精华内容 129,458
关键字:

多特征提取