Python 数据特征提取

Python 数据特征提取好久没有写博客了 好怀念这里 自己的研究方向关于深度学习 机器学习 数据挖掘 传感器数据融合 室内定位技术 有兴趣一起进步不断学习的朋友们欢迎关注我 和我交流 在这里简单先说一下我处理数据的思路 1 数据真实性判断 可以通过 excel 来观察数据的整体趋势 周期性

大家好,我是讯享网,很高兴认识大家。

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

利用python实现大数据的特征提取,matlab版见https://blog.csdn.net/Melo0705/article/details/

# -*- 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\\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\\Desktop\机器学习数据集\f1.xls')#写入路径 data_f.to_excel(writer,'data_feature',float_format='%.2f') # data_feature为sheet名,float_format 数值精度 writer.save()#保存 

讯享网

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

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

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


讯享网

 

 

 

 

小讯
上一篇 2025-02-05 16:50
下一篇 2025-02-15 11:23

相关推荐

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