I have a dataset of radio signals that i want to classify. So, I decided to extract features. After some googling, I have noticed that I have to calculate moments, cumulants, Kutosis and skewness to use them as features.

for the moments I found that there is a function called scipy.stats.moment/. But then, I found another code :

def moment(sample, p, q):
    m = np.mean((sample**(p-q)) * (np.conjugate(sample)**q))
    return m

what is the difference between the 2 functions? and do I calculate the cumulants basing on the moments?

for the skewness and Kurtosis what do they really represents? Are there any other features that could help?

  • $\begingroup$ I would assume scipy handles real-valued data, which is a special case of complex data - and your function is supposed to provide moments for a complex variable/signal. $\endgroup$
    – M529
    Aug 20 '19 at 14:21

Some of the more cutting edge signal classification techniques utilize deep neural networks (DNNs):


This particular paper utilizes a convolutional neural network (CNN) and a residual neural network. The convolutional "front-end" extracts its own nonlinear features prior to connection to the densely connected layers.

DNNs are typically very computationally expensive, so your approach to feature extraction approach might meet your requirements.

  • $\begingroup$ Actually I just read this paper. and it is the reason for this question. also I am testing PCA. But, I need theoretical background about how to calculate these features and what is there meaning. $\endgroup$
    – nechi
    Aug 21 '19 at 8:40

You can use various library available to extract features such as:

  1. Librosa
  2. audiolazy
  3. psafe
  4. pyAudioProcessing
  5. pyAudioAnalysis

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.