python数据特征提取_python如何提取列表中的数据[通俗易懂]

python数据特征提取_python如何提取列表中的数据[通俗易懂]好久没有写博客了,好怀念这里

python数据特征提取_python如何提取列表中的数据[通俗易懂]"

好久没有写博客了,好怀念这里。自己的研究方向关于深度学习,机器学习,数据挖掘,传感器数据融合,室内定位技术,有兴趣一起进步不断学习的朋友们欢迎关注我,和我交流。在这里简单先说一下我处理数据的思路: (1)数据真实性判断:可以通过excel来观察数据的整体趋势周期性波峰波谷,或者用利用拟合技术等手段实现数据的真实性的验证。(2)数据异常值处理:对于NAN数据或者奇异点,可以采取基于拉依达准则的数据异常值处理。关于拉依达准则的原理,大家百度就可以了。我简单说一下就是当样本点的样本偏差大于3倍标准差对该样本点进行处理。(3)数据去噪平滑处理:为了尽可能避免噪声带来的干扰,常用的除噪技术包括,滑动平均滤波,低通高通滤波,中值滤波,卡尔曼滤波,小波阈值滤波等。(4)数据分割:这一项常用的有基于滑动窗口,基于阈值检测,模型匹配等。(5)数据特征提取:分三类:时域特征,频域特征,时频域特征。时域特征包括:最大值,最小值,方差,标准差,RMSE,均值,熵等。频域特征包括:the output of FFT(bias coefficients),光谱分布,FFT系数平方之和等。  时频域特征包括:小波分解,小波包分解重构等。

利用python实现大数据的特征提取,matlab版见Python 数据特征提取

# -*- coding: utf-8 -*-
"""
Created on Sun Mar  3 14:35:57 2019
@author: Melo琦
"""
import pandas as pd
import numpy as np
#Read data
Raw_data=pd.read_excel(r'C:\Users\201810\Desktop\机器学习数据集\1.xls',sheet_name='Sheet1',index_col=None)
Raw_data=Raw_data.values#取值,且转化为二维数组
data=np.array(Raw_data)#二维数组(矩阵) 这里的np.array()是为了下面使用numpy包,转化为nummpy数据标准 ,并不改变维度
(m,n)=Raw_data.shape #矩阵的行数m列数n,返回一个元组

def entropy(vector,segnment): #自定义一个求解信息熵的函数,vector为向量,segment分段数值
    x_min=np.min(vector)
    x_max=np.max(vector)
    x_dis=np.abs(x_max-x_min)
    x_lower=x_min
    seg=1.0/segnment
    ternal=x_dis*seg
    list1=[]
    List1=[]
    #
    for i in range(len(vector)):
        if vector[i]>=x_lower+ternal:
            list1.append(vector[i])
    len_list1=len(list1)
    List1.append(len_list1)
    #
    for j in range(1,segnment):
        list1=[]
        for i in range(len(vector)):
            if vector[i]>=x_lower+j*ternal and vector[i]<x_lower+(j+1)*ternal:
                list1.append(vector[i])
        len_list1=len(list1)
        List1.append(len_list1)
    #
    list1=[]
    for i in range(len(vector)):
        if vector[i]>=x_lower+(segnment-1)*ternal :
            list1.append(vector[i])
    len_list1=len(list1)
    List1.append(len_list1)
    List1=List1/np.sum(List1) 
    
    y=0
    Y=[]
    for i in range(segnment):
        if List1[i]==0:
            y=0
            Y.append(y)
        else:
            y=-List1[i]*np.log2(List1[i]);
            Y.append(y)
    result=np.sum(Y) 
    return result
 
#数据预处理
data_feature=np.zeros(shape=(6,n)) #特征二维数组(矩阵)的初始化 np.zeros(shape=(行,列))
for i in range(n):
    data_ave=np.mean(data[:,i])
    data_std=np.std(data[:,i],ddof=1)
    for j in range(1,m-1): #基于拉伊达准则的数据异常值处理
        if np.abs(data[j,i])>3*data_std:
            data[j,i]=0.5*(data[j-1][i]+data[j+1][i])
        else:
           continue
    data_ave=np.mean(data[:,i]) #均值
    data_std=np.std(data[:,i]) #标准差
    data_max=np.max(data[:,i]) #最大值
    data_min=np.min(data[:,i]) #最小值
    data_energy=np.sum(np.abs(data[:,i])) #能量:数据绝对值之和表示能量
    data_normal = (data[:,i]-data_min) / (data_max-data_min)#数据归一化(0,1)
    segnment=int(0.5*m);
    data_etropy=entropy(data_normal,segnment)#信息熵
    data_feature[:,i]=[data_ave,data_std,data_max,data_min,data_energy,data_etropy]#特征二维数组

#写入数据
data_f = pd.DataFrame(data_feature)#写入数据
data_f.columns = ['Ax','Ay','Az','Gx','Gy','Gz','Mx','My','Mz']#列标题
data_f.index = ['ave','std','max','min','energy','entropy']#行标题
writer = pd.ExcelWriter(r'C:\Users\201810\Desktop\机器学习数据集\f1.xls')#写入路径
data_f.to_excel(writer,'data_feature',float_format='%.2f') # data_feature为sheet名,float_format 数值精度
writer.save()#保存
       
     
            

下面将对程序中的一些代码和原理进行解释:

本次python代码实现的数据的时域特征提取,包括均值,标准差,最大值,最小值,能量,信息熵。

其中主要依赖pandas 和 numpy 包实现一些特定的功能。

 

 

 

 

今天的文章python数据特征提取_python如何提取列表中的数据[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/89232.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注