2.11 Feature Engineering
Contents
2.11 Feature Engineering#
1. Introduction#
The process of feature engineering involves manipulating, transforming, and selecting raw data into features that can be used in statistical analysis and prediction.
Key types of features include:
Statistical features#
Statistical features summarize the distribution of data values, providing insights into the central tendency, dispersion, and shape of the dataset.
Mean: Average value of the data points.
Variance/Standard Deviation: Measure of the spread of the data.
Skewness: Asymmetry in the distribution of values.
Kurtosis: “Tailedness” of the distribution.
Percentiles : Threshold values for different segments of the distribution.
Temporal Features#
Temporal features focus on the time-dependent patterns within the series.
Autocorrelation: Correlation of a time series with a lagged version of itself.
Trend: Long-term increase or decrease in the data.
Seasonality: Regular patterns that repeat over a specific period.
Change Points: Locations where statistical properties of the series change significantly.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Create a time series with trend and seasonality
t = np.arange(0, 365*3)
seasonal_series = np.random.randn(3*365) + np.linspace(0, 10, 3*365) + \
2* np.sin(2 * np.pi * np.linspace(0, 3, 3*365))
# fit a trend using least squares regression
t = np.arange(len(seasonal_series))
trend = np.polyfit(t, seasonal_series, 1)[0] * t + np.polyfit(t, seasonal_series, 1)[1]
# calculate the seasonal component by subtracting the trend
seasonal = seasonal_series - trend
# calculate the autocorrelation of the seasonal component
autocorr = np.corrcoef(seasonal[:-1], seasonal[1:])[0, 1]
print(f'The autocorrelation of the seasonal component is {autocorr:.2f}')
# Plot the original time series, trend and seasonal components
plt.figure(figsize=(10, 6))
plt.plot(seasonal_series, label='Original Time Series')
plt.plot(trend, label='Trend')
plt.plot(seasonal, label='Seasonal')
plt.legend()
The autocorrelation of the seasonal component is 0.63
<matplotlib.legend.Legend at 0x319ac7fd0>
crap = np.random.randn(3*365)
autocorr = np.corrcoef(crap[:-1], crap[1:])[0, 1]
print(f'The autocorrelation of the seasonal component is {autocorr:.2f}')
The autocorrelation of the seasonal component is 0.01
Spatial features#
For geospatial data, spatial features capture the relationships between different locations in an image or dataset.
Texture: Patterns in the local intensity variations (e.g., smooth, rough).
Spatial Correlation: Measures how similar nearby locations are in terms of intensity values.
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import gaussian_filter
from scipy.fft import fft2, ifft2, fftshift
# Generate a 2D grid (e.g., geospatial data, such as a topographic map)
n = 100 # Size of the grid
x = np.linspace(0, 10, n)
y = np.linspace(0, 10, n)
X, Y = np.meshgrid(x, y)
# Generate 2D white noise
white_noise_2d = np.random.normal(0, 1, (n, n))
# Generate spatially correlated noise using a Gaussian filter
spatially_correlated_noise = gaussian_filter(white_noise_2d, sigma=3)
# Plot the synthetic 2D white noise, correlated noise, and autocorrelation function
plt.figure(figsize=(18, 6))
plt.subplot(1, 2, 1)
plt.imshow(white_noise_2d, extent=[0, 10, 0, 10], cmap='viridis')
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(label='Amplitude')
plt.title('2D White Noise')
# Spatially correlated noise
plt.subplot(1, 2, 2)
plt.imshow(spatially_correlated_noise, extent=[0, 10, 0, 10], cmap='viridis')
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(label='Amplitude')
plt.title('2D Spatially Correlated Noise')
Text(0.5, 1.0, '2D Spatially Correlated Noise')
spatial correlation of the white noise
# Compute the 2D Fourier Transform of the spatially correlated noise
fft_white_noise = fft2(white_noise_2d)
# Compute the power spectrum
power_spectrum = np.abs(fft_white_noise) ** 2
# Compute the inverse 2D Fourier Transform of the power spectrum to get the autocorrelation function
autocorrelation_white = np.real(ifft2(power_spectrum))
# Shift the zero-frequency component to the center of the spectrum
autocorrelation_white = fftshift(autocorrelation_white)
# Normalize the autocorrelation function
autocorrelation_white /= autocorrelation_white.max()
spatial correlation of the correlated noise
# Compute the 2D Fourier Transform of the spatially correlated noise
fft_noise = fft2(spatially_correlated_noise)
# Compute the power spectrum
power_spectrum = np.abs(fft_noise) ** 2
# Compute the inverse 2D Fourier Transform of the power spectrum to get the autocorrelation function
autocorrelation = np.real(ifft2(power_spectrum))
# Shift the zero-frequency component to the center of the spectrum
autocorrelation = fftshift(autocorrelation)
# Normalize the autocorrelation function
autocorrelation /= autocorrelation.max()
# Plot the synthetic 2D white noise, correlated noise, and autocorrelation function
plt.figure(figsize=(11, 6))
# White noise (unfiltered)
plt.subplot(2, 2, 1)
plt.imshow(white_noise_2d, extent=[0, 10, 0, 10], cmap='viridis')
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(label='Amplitude')
plt.title('2D White Noise')
plt.subplot(2, 2, 2)
plt.imshow(autocorrelation_white, extent=[-5, 5, -5, 5], cmap='viridis')
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(label='Amplitude')
plt.title('2D White Noise Autocorrelation')
# Spatially correlated noise
plt.subplot(2, 2, 3)
plt.imshow(spatially_correlated_noise, extent=[0, 10, 0, 10], cmap='viridis')
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(label='Amplitude')
plt.title('2D Spatially Correlated Noise')
# Autocorrelation function
plt.subplot(2, 2, 4)
plt.imshow(autocorrelation, extent=[-5, 5, -5, 5], cmap='viridis')
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(label='Normalized Amplitude')
plt.title('Autocorrelation Function')
plt.tight_layout()
plt.show()
Estimate the feature “correlation length” of the two images. The correlation length is often measured as the distance at which the autocorelation function decays to 1/e of its maximum value.
center = n // 2
# calculate correlation length for the white noise
autocorr_center = autocorrelation_white[center, center:]
distances = np.linspace(0, 5, center)
correlation_length_white = np.interp(1/np.e, autocorr_center[::-1], distances[::-1])
# calculate correlation length for the spatially correlated noise
autocorr_center = autocorrelation[center, center:]
distances = np.linspace(0, 5, center)
correlation_length = np.interp(1/np.e, autocorr_center[::-1], distances[::-1])
print(f'Estimated correlation length for white noise: {correlation_length_white:.2f} and for spatially correlated noise: {correlation_length:.2f}')
Estimated correlation length for white noise: 0.06 and for spatially correlated noise: 0.66
Fractal Features#
Fractal features describe the self-similarity or complexity of the data at different scales. A common fractal feature is the Fractal Dimension, which quantifies the complexity of a dataset, especially useful in understanding geospatial structures and irregular patterns.
2. Seismic Time Series Data Example#
This lecture will demonstrate how to automatically extract features using a popular and simple Python package, tsfel
, to extract common time series features. We will apply this to the example of seismic waveforms recorded in the Pacific Northwest.
An example will follow. The Pacific Northwest data includes labeled seismic waveforms for events of various origins:
Earthquakes
Explosions (mostly quarry blasts)
Surface events (such as avalanches and landslides)
Seismic noise (ambient Earth vibrations between events)
We will explore how these features vary across the four categories, or classes, of seismic events.
# Import modules for seismic data and feature extraction
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy
import scipy.stats as st
import os
import h5py # for reading .h5 files
We download 2 files from the class storage: a CSV file with the waveforms themselves as an HDF5 file and their associated metadata as a CSV file:
#make sure to install wget
!pip install wget
import wget
Requirement already satisfied: wget in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (3.2)
[notice] A new release of pip is available: 23.3.1 -> 24.2
[notice] To update, run: pip install --upgrade pip
wget.download("https://dasway.ess.washington.edu/shared/niyiyu/PNW-ML/miniPNW_metadata.csv")
wget.download("https://dasway.ess.washington.edu/shared/niyiyu/PNW-ML/miniPNW_waveforms.hdf5")
'miniPNW_waveforms.hdf5'
Metadata#
We first read the metadata and arange them into a Pandas Data frame
import pandas as pd
# Handle irregular rows by skipping them
df = pd.read_csv("miniPNW_metadata.csv")
# Display the first few rows of the DataFrame
df.head()
Unnamed: 0 | event_id | source_origin_time | source_latitude_deg | source_longitude_deg | source_type | source_depth_km | preferred_source_magnitude | preferred_source_magnitude_type | preferred_source_magnitude_uncertainty | ... | trace_S_onset | trace_P_onset | trace_snr_db | year | source_type_pnsn_label | source_local_magnitude | source_local_magnitude_uncertainty | source_duration_magnitude | source_duration_magnitude_uncertainty | source_hand_magnitude | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | uw61669232 | 2020-09-07T03:44:14.690000Z | 46.560 | -119.797 | earthquake | 23.300 | 1.30 | ml | 0.241000 | ... | impulsive | impulsive | -1.444|2.612|9.921 | 2020.0 | eq | 1.30 | 0.241273 | 1.17 | 0.187840 | NaN |
1 | 1 | uw60888282 | 2014-10-08T15:39:31.330000Z | 45.371 | -121.708 | earthquake | -0.947 | 1.67 | ml | 0.128000 | ... | impulsive | impulsive | 0.368|3.526|5.981 | 2014.0 | eq | 1.67 | 0.128000 | 1.63 | 0.099000 | NaN |
2 | 2 | uw61361706 | 2017-12-30T04:37:46.870000Z | 46.165 | -120.543 | earthquake | 13.520 | 2.46 | ml | 0.158000 | ... | impulsive | emergent | 11.274|13.32|15.828 | 2017.0 | eq | 2.46 | 0.158000 | 3.37 | 0.389000 | NaN |
3 | 3 | uw61639436 | 2020-06-09T23:37:10.420000Z | 46.542 | -119.589 | earthquake | 16.370 | 1.59 | ml | 0.157000 | ... | impulsive | emergent | 27.007|20.797|19.252 | 2020.0 | eq | 1.59 | 0.156750 | 1.69 | 0.354773 | NaN |
4 | 4 | uw61735446 | 2021-05-24T10:42:37.810000Z | 46.857 | -121.941 | earthquake | 12.380 | 0.83 | ml | 0.082983 | ... | impulsive | emergent | 18.579|18.912|7.609 | 2021.0 | eq | 0.83 | 0.082983 | 0.50 | 0.381880 | NaN |
5 rows × 37 columns
The nature of the event source is located in one of the metadata attributes
df['source_type'].unique()
array(['earthquake', 'explosion', 'sonic_boom', 'thunder',
'surface_event'], dtype=object)
Let’s assume that we are exploring features to classify the waveforms into the categories of the event types. We will attribute the *labels as the source_type
attribute.
labels=df['source_type']
print(labels.value_counts())
source_type
earthquake 500
explosion 500
surface_event 500
sonic_boom 126
thunder 94
Name: count, dtype: int64
How many seismic waveforms are there in each of the category?
##
Would you say that this is a balanced data set with respect to the four classes of interest?
Now we will look at the seismic data, taking a random waveform from each of the categories
plt.hist(labels)
(array([500., 0., 500., 0., 0., 126., 0., 94., 0., 500.]),
array([0. , 0.4, 0.8, 1.2, 1.6, 2. , 2.4, 2.8, 3.2, 3.6, 4. ]),
<BarContainer object of 10 artists>)
Now are read the data. It is stored in an HDF5 files under a finite number of groups. Each groups has an array of datasets that correspond to the waveforms. To link the metadata to the waveform files, the key trace_name has the dataset ID. The address is labeled as follows:
bucketX$i,:3,:n
where X
is the HDF5 group number, i
is the index. The file has typically 3 waveforms from each direction of ground motions N, E, Z. In the following exercise, we will focus on the vertical waveforms.
f = h5py.File("miniPNW_waveforms.hdf5", "r")
chan_list = ['N','E','Z']
Below a function to read the file in the data
def read_data(tn,f):
"""
Function to read the waveform data from the .h5 file
tn: trace_name of the waveform
f: file object of the .h5 file
"""
bucket, narray = tn.split('$') # split the string of trace_name into bucket and narray
x, y, z = iter([int(i) for i in narray.split(',:')]) # split the narray into x, y, z
data = f['/data/%s' % bucket][x, :y, :z] # read the data as a 3D array
return data
The trace name is stored as data attriobute in the metadata.
ldata=list(df['trace_name'])
ldata[0]
'bucket1$0,:3,:15001'
crap=read_data(ldata[530],f)
#print the dimension of a givan data
print(f'The first dimension of the data is {crap.shape[0]}')
print(f'The second dimension of the data is {crap.shape[1]}')
# the time vector of the data goes from 0 to 150 seconds with a sampling rate of 100Hz
t = np.linspace(-50, 100, crap.shape[1])
# plot an example of the data in a 3 row subplot
fig, ax = plt.subplots(3, 1, figsize=(10, 6))
for i in range(3):
ax[i].plot(t,crap[i, :])
ax[i].set_title(f'Channel {chan_list[i]}')
ax[i].set_xlabel('Time (s)')
ax[i].set_ylabel('Amplitude')
ax[i].grid(True)
ax[i].set_xlim(-50, 100)
plt.tight_layout()
The first dimension of the data is 3
The second dimension of the data is 15001
We will just extract the Z component and reshape them into a single array.
nt=crap.shape[-1]
ndata=len(labels)
Z=np.zeros(shape=(ndata,nt))
for i in range(ndata-1):
Z[i,:]=read_data(df.iloc[i]["trace_name"],f)[2,:nt]
Now we have data and its attributes, in particular the label as source type.
We are going to extract features automatically from tsfel and explore how varied the
!pip install tsfel
import tsfel
Requirement already satisfied: tsfel in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (0.1.6)
Requirement already satisfied: ipython>=7.4.0 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from tsfel) (8.16.1)
Requirement already satisfied: numpy>=1.18.5 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from tsfel) (1.26.0)
Requirement already satisfied: pandas>=1.5.3 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from tsfel) (2.1.1)
Requirement already satisfied: scipy>=1.7.3 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from tsfel) (1.11.3)
Requirement already satisfied: setuptools>=47.1.1 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from tsfel) (68.2.2)
Requirement already satisfied: backcall in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (0.2.0)
Requirement already satisfied: decorator in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (5.1.1)
Requirement already satisfied: jedi>=0.16 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (0.19.1)
Requirement already satisfied: matplotlib-inline in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (0.1.6)
Requirement already satisfied: pickleshare in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (0.7.5)
Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (3.0.39)
Requirement already satisfied: pygments>=2.4.0 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (2.16.1)
Requirement already satisfied: stack-data in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (0.6.2)
Requirement already satisfied: traitlets>=5 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (5.11.2)
Requirement already satisfied: typing-extensions in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (4.5.0)
Requirement already satisfied: exceptiongroup in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (1.1.3)
Requirement already satisfied: pexpect>4.3 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (4.8.0)
Requirement already satisfied: appnope in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from ipython>=7.4.0->tsfel) (0.1.3)
Requirement already satisfied: python-dateutil>=2.8.2 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from pandas>=1.5.3->tsfel) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from pandas>=1.5.3->tsfel) (2023.3.post1)
Requirement already satisfied: tzdata>=2022.1 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from pandas>=1.5.3->tsfel) (2023.3)
Requirement already satisfied: parso<0.9.0,>=0.8.3 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from jedi>=0.16->ipython>=7.4.0->tsfel) (0.8.3)
Requirement already satisfied: ptyprocess>=0.5 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from pexpect>4.3->ipython>=7.4.0->tsfel) (0.7.0)
Requirement already satisfied: wcwidth in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=7.4.0->tsfel) (0.2.8)
Requirement already satisfied: six>=1.5 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pandas>=1.5.3->tsfel) (1.16.0)
Requirement already satisfied: executing>=1.2.0 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from stack-data->ipython>=7.4.0->tsfel) (1.2.0)
Requirement already satisfied: asttokens>=2.1.0 in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from stack-data->ipython>=7.4.0->tsfel) (2.4.0)
Requirement already satisfied: pure-eval in /Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages (from stack-data->ipython>=7.4.0->tsfel) (0.2.2)
[notice] A new release of pip is available: 23.3.1 -> 24.2
[notice] To update, run: pip install --upgrade pip
We need to format for input into tsfresh. It needs 1 column with the id
(or label), one column for the time stamps (sort
)
cfg = tsfel.get_features_by_domain()
print(cfg)
{'spectral': {'FFT mean coefficient': {'complexity': 'constant', 'description': 'Computes the mean value of each spectrogram frequency.', 'function': 'tsfel.fft_mean_coeff', 'parameters': {'fs': 100, 'nfreq': 256}, 'n_features': 'nfreq', 'use': 'yes'}, 'Fundamental frequency': {'complexity': 'log', 'description': 'Computes the fundamental frequency.', 'function': 'tsfel.fundamental_frequency', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Human range energy': {'complexity': 'log', 'description': 'Computes the human range energy ratio given by the ratio between the energy in frequency 0.6-2.5Hz and the whole energy band.', 'function': 'tsfel.human_range_energy', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes', 'tag': 'inertial'}, 'LPCC': {'complexity': 'log', 'description': 'Computes the linear prediction cepstral coefficients.', 'function': 'tsfel.lpcc', 'parameters': {'n_coeff': 12}, 'n_features': 'n_coeff', 'use': 'yes', 'tag': 'audio'}, 'MFCC': {'complexity': 'constant', 'description': 'Computes the MEL cepstral coefficients.', 'function': 'tsfel.mfcc', 'parameters': {'cep_lifter': 22, 'fs': 100, 'nfft': 512, 'nfilt': 40, 'num_ceps': 12, 'pre_emphasis': 0.97}, 'n_features': 'num_ceps', 'use': 'yes', 'tag': ['audio', 'emg']}, 'Max power spectrum': {'complexity': 'log', 'description': 'Computes the maximum power spectrum density.', 'function': 'tsfel.max_power_spectrum', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Maximum frequency': {'complexity': 'log', 'description': 'Computes the maximum frequency.', 'function': 'tsfel.max_frequency', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Median frequency': {'complexity': 'log', 'description': 'Computes the median frequency.', 'function': 'tsfel.median_frequency', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Power bandwidth': {'complexity': 'log', 'description': 'Computes power spectrum density bandwidth of the signal.', 'function': 'tsfel.power_bandwidth', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral centroid': {'complexity': 'linear', 'description': 'Computes the barycenter of the spectrum.', 'function': 'tsfel.spectral_centroid', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes', 'tag': 'audio'}, 'Spectral decrease': {'complexity': 'log', 'description': 'Computes the amount of decreasing of the spectra amplitude.', 'function': 'tsfel.spectral_decrease', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral distance': {'complexity': 'log', 'description': 'Computes the signal spectral distance.', 'function': 'tsfel.spectral_distance', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral entropy': {'complexity': 'log', 'description': 'Computes the spectral entropy of the signal based on Fourier transform.', 'function': 'tsfel.spectral_entropy', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes', 'tag': 'eeg'}, 'Spectral kurtosis': {'complexity': 'linear', 'description': 'Computes the flatness of a distribution around its mean value.', 'function': 'tsfel.spectral_kurtosis', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral positive turning points': {'complexity': 'log', 'description': 'Computes number of positive turning points of the fft magnitude signal', 'function': 'tsfel.spectral_positive_turning', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral roll-off': {'complexity': 'log', 'description': 'Computes the frequency where 95% of the signal magnitude is contained below of this value.', 'function': 'tsfel.spectral_roll_off', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes', 'tag': 'audio'}, 'Spectral roll-on': {'complexity': 'log', 'description': 'Computes the frequency where 5% of the signal magnitude is contained below of this value.', 'function': 'tsfel.spectral_roll_on', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral skewness': {'complexity': 'linear', 'description': 'Computes the asymmetry of a distribution around its mean value.', 'function': 'tsfel.spectral_skewness', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral slope': {'complexity': 'log', 'description': 'Computes the spectral slope, obtained by linear regression of the spectral amplitude.', 'function': 'tsfel.spectral_slope', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral spread': {'complexity': 'linear', 'description': 'Computes the spread of the spectrum around its mean value.', 'function': 'tsfel.spectral_spread', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Spectral variation': {'complexity': 'log', 'description': 'Computes the amount of variation of the spectrum along time.', 'function': 'tsfel.spectral_variation', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Wavelet absolute mean': {'complexity': 'linear', 'description': 'Computes CWT absolute mean value of each wavelet scale.', 'function': 'tsfel.wavelet_abs_mean', 'parameters': {'function': 'scipy.signal.ricker', 'widths': 'np.arange(1,10)'}, 'n_features': 'widths', 'use': 'yes', 'tag': ['eeg', 'ecg']}, 'Wavelet energy': {'complexity': 'linear', 'description': 'Computes CWT energy of each wavelet scale.', 'function': 'tsfel.wavelet_energy', 'parameters': {'function': 'scipy.signal.ricker', 'widths': 'np.arange(1,10)'}, 'n_features': 'widths', 'use': 'yes', 'tag': 'eeg'}, 'Wavelet entropy': {'complexity': 'linear', 'description': 'Computes CWT entropy of the signal.', 'function': 'tsfel.wavelet_entropy', 'parameters': {'function': 'scipy.signal.ricker', 'widths': 'np.arange(1,10)'}, 'n_features': 1, 'use': 'yes', 'tag': 'eeg'}, 'Wavelet standard deviation': {'complexity': 'linear', 'description': 'Computes CWT std value of each wavelet scale.', 'function': 'tsfel.wavelet_std', 'parameters': {'function': 'scipy.signal.ricker', 'widths': 'np.arange(1,10)'}, 'n_features': 'widths', 'use': 'yes', 'tag': 'eeg'}, 'Wavelet variance': {'complexity': 'linear', 'description': 'Computes CWT variance value of each wavelet scale.', 'function': 'tsfel.wavelet_var', 'parameters': {'function': 'scipy.signal.ricker', 'widths': 'np.arange(1,10)'}, 'n_features': 'widths', 'use': 'yes', 'tag': 'eeg'}}, 'statistical': {'Absolute energy': {'complexity': 'log', 'description': 'Computes the absolute energy of the signal.', 'function': 'tsfel.abs_energy', 'parameters': '', 'n_features': 1, 'use': 'yes', 'tag': 'audio'}, 'Average power': {'complexity': 'constant', 'description': 'Computes the average power of the signal.', 'function': 'tsfel.average_power', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes', 'tag': 'audio'}, 'ECDF': {'complexity': 'log', 'description': 'Computes the values of ECDF (empirical cumulative distribution function) along the time axis.', 'function': 'tsfel.ecdf', 'parameters': {'d': 10}, 'n_features': 'd', 'use': 'yes'}, 'ECDF Percentile': {'complexity': 'log', 'description': 'Determines the percentile value of the ECDF.', 'function': 'tsfel.ecdf_percentile', 'parameters': {'percentile': '[0.2, 0.8]'}, 'n_features': 'percentile', 'use': 'yes'}, 'ECDF Percentile Count': {'complexity': 'log', 'description': 'Determines the cumulative sum of samples that are less than the percentile.', 'function': 'tsfel.ecdf_percentile_count', 'parameters': {'percentile': '[0.2, 0.8]'}, 'n_features': 'percentile', 'use': 'yes'}, 'Entropy': {'complexity': 'log', 'description': 'Computes the entropy of the signal using the Shannon Entropy.', 'function': 'tsfel.entropy', 'parameters': {'prob': 'standard'}, 'n_features': 1, 'use': 'yes', 'tag': 'eeg'}, 'Histogram': {'complexity': 'log', 'description': 'Computes histogram of the signal.', 'function': 'tsfel.hist', 'parameters': {'nbins': 10, 'r': 1}, 'n_features': 'nbins', 'use': 'yes'}, 'Interquartile range': {'complexity': 'constant', 'description': 'Computes interquartile range of the signal.', 'function': 'tsfel.interq_range', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Kurtosis': {'complexity': 'constant', 'description': 'Computes kurtosis of the signal.', 'function': 'tsfel.kurtosis', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Max': {'complexity': 'constant', 'description': 'Computes the maximum value of the signal.', 'function': 'tsfel.calc_max', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Mean': {'complexity': 'constant', 'description': 'Computes the mean value of the signal.', 'function': 'tsfel.calc_mean', 'parameters': '', 'n_features': 1, 'use': 'yes', 'tag': 'inertial'}, 'Mean absolute deviation': {'complexity': 'log', 'description': 'Computes mean absolute deviation of the signal.', 'function': 'tsfel.mean_abs_deviation', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Median': {'complexity': 'constant', 'description': 'Computes median of the signal.', 'function': 'tsfel.calc_median', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Median absolute deviation': {'complexity': 'constant', 'description': 'Computes median absolute deviation of the signal.', 'function': 'tsfel.median_abs_deviation', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Min': {'complexity': 'constant', 'description': 'Computes the minimum value of the signal.', 'function': 'tsfel.calc_min', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Peak to peak distance': {'complexity': 'constant', 'description': 'Computes the peak to peak distance.', 'function': 'tsfel.pk_pk_distance', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Root mean square': {'complexity': 'constant', 'description': 'Computes root mean square of the signal.', 'function': 'tsfel.rms', 'parameters': '', 'n_features': 1, 'use': 'yes', 'tag': ['emg', 'inertial']}, 'Skewness': {'complexity': 'constant', 'description': 'Computes skewness of the signal.', 'function': 'tsfel.skewness', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Standard deviation': {'complexity': 'constant', 'description': 'Computes standard deviation of the signal.', 'function': 'tsfel.calc_std', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Variance': {'complexity': 'constant', 'description': 'Computes variance of the signal.', 'function': 'tsfel.calc_var', 'parameters': '', 'n_features': 1, 'use': 'yes'}}, 'temporal': {'Area under the curve': {'complexity': 'log', 'description': 'Computes the area under the curve of the signal computed with trapezoid rule.', 'function': 'tsfel.auc', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Autocorrelation': {'complexity': 'constant', 'description': 'Computes autocorrelation of the signal.', 'function': 'tsfel.autocorr', 'parameters': '', 'n_features': 1, 'use': 'yes', 'tag': 'inertial'}, 'Centroid': {'complexity': 'constant', 'description': 'Computes the centroid along the time axis.', 'function': 'tsfel.calc_centroid', 'parameters': {'fs': 100}, 'n_features': 1, 'use': 'yes'}, 'Mean absolute diff': {'complexity': 'constant', 'description': 'Computes mean absolute differences of the signal.', 'function': 'tsfel.mean_abs_diff', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Mean diff': {'complexity': 'constant', 'description': 'Computes mean of differences of the signal.', 'function': 'tsfel.mean_diff', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Median absolute diff': {'complexity': 'constant', 'description': 'Computes median absolute differences of the signal.', 'function': 'tsfel.median_abs_diff', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Median diff': {'complexity': 'constant', 'description': 'Computes median of differences of the signal.', 'function': 'tsfel.median_diff', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Negative turning points': {'complexity': 'constant', 'description': 'Computes number of negative turning points of the signal.', 'function': 'tsfel.negative_turning', 'parameters': '', 'n_features': 1, 'use': 'yes', 'tag': 'emg'}, 'Neighbourhood peaks': {'complexity': 'constant', 'description': 'Computes the number of peaks from a defined neighbourhood of the signal.', 'function': 'tsfel.neighbourhood_peaks', 'parameters': {'n': 10}, 'n_features': 1, 'use': 'yes'}, 'Positive turning points': {'complexity': 'constant', 'description': 'Computes number of positive turning points of the signal.', 'function': 'tsfel.positive_turning', 'parameters': '', 'n_features': 1, 'use': 'yes', 'tag': 'emg'}, 'Signal distance': {'complexity': 'constant', 'description': 'Computes signal traveled distance.', 'function': 'tsfel.distance', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Slope': {'complexity': 'log', 'description': 'Computes the slope of the signal by fitting a linear equation to the observed data.', 'function': 'tsfel.slope', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Sum absolute diff': {'complexity': 'constant', 'description': 'Computes sum of absolute differences of the signal.', 'function': 'tsfel.sum_abs_diff', 'parameters': '', 'n_features': 1, 'use': 'yes'}, 'Zero crossing rate': {'complexity': 'constant', 'description': 'Computes Zero-crossing rate of the signal.', 'function': 'tsfel.zero_cross', 'parameters': '', 'n_features': 1, 'use': 'yes', 'tag': ['audio', 'emg']}}}
print(f'We have a total of {Z.shape[0]} data sample and each has {Z.shape[1]} data poins')
We have a total of 1720 data sample and each has 15001 data poins
for i in range(10): #Z.shape[0]):
print(f'Extracting features from sample {i}/{Z.shape[0]}')
if i==0:
X=tsfel.time_series_features_extractor(cfg, Z[i,:],fs=100., verbose = 0)
X['source_type']=df.iloc[i]['source_type']
else:
XX = tsfel.time_series_features_extractor(cfg, Z[i,:],fs=100., verbose = 0)
XX['source_type']=df.iloc[i]['source_type']
X=pd.concat([XX,X],axis=0,ignore_index=True)
# change the column names to remove the prefix 0_
X.columns = X.columns.str.replace('0_', '')
Extracting features from sample 0/1720
Extracting features from sample 1/1720
Extracting features from sample 2/1720
Extracting features from sample 3/1720
Extracting features from sample 4/1720
Extracting features from sample 5/1720
Extracting features from sample 6/1720
Extracting features from sample 7/1720
Extracting features from sample 8/1720
Extracting features from sample 9/1720
X.head()
Absolute energy | Area under the curve | Autocorrelation | Average power | Centroid | ECDF Percentile Count_0 | ECDF Percentile Count_1 | ECDF Percentile_0 | ECDF Percentile_1 | ECDF_0 | ... | Wavelet variance_1 | Wavelet variance_2 | Wavelet variance_3 | Wavelet variance_4 | Wavelet variance_5 | Wavelet variance_6 | Wavelet variance_7 | Wavelet variance_8 | Zero crossing rate | source_type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 9.742864e+08 | 31207.637387 | 9.742864e+08 | 6.495243e+06 | 78.466491 | 3000.0 | 12000.0 | -298.208729 | 151.301746 | 0.000067 | ... | 1395.348318 | 2495.550398 | 3674.667437 | 5530.106304 | 8072.751642 | 11149.616998 | 14670.487177 | 18719.058340 | 235.0 | earthquake |
1 | 8.402399e+07 | 9063.005871 | 8.402399e+07 | 5.601600e+05 | 58.830080 | 3000.0 | 12000.0 | -77.708776 | 48.153323 | 0.000067 | ... | 921.217046 | 1395.363737 | 1567.561286 | 1256.932809 | 880.666612 | 682.995650 | 637.912389 | 674.893518 | 272.0 | earthquake |
2 | 9.015331e+07 | 6910.552647 | 9.015331e+07 | 6.010221e+05 | 63.002674 | 3000.0 | 12000.0 | -29.206673 | 47.147688 | 0.000067 | ... | 12754.759956 | 23536.460101 | 26033.368648 | 22937.003326 | 18408.577823 | 14822.361811 | 12640.580469 | 11471.174193 | 1085.0 | earthquake |
3 | 7.096144e+08 | 24553.426193 | 7.096144e+08 | 4.730763e+06 | 66.389598 | 3000.0 | 12000.0 | -114.501055 | 213.176390 | 0.000067 | ... | 27267.403246 | 55930.185792 | 66419.654741 | 64470.555161 | 60589.434231 | 58693.473343 | 60371.152906 | 66502.811011 | 803.0 | earthquake |
4 | 9.082897e+08 | 28869.941529 | 9.082897e+08 | 6.055265e+06 | 50.864641 | 3000.0 | 12000.0 | -294.543856 | 38.136901 | 0.000067 | ... | 5822.304317 | 10699.777184 | 15313.786784 | 17756.953569 | 18258.559868 | 18086.534963 | 17987.856997 | 18139.370933 | 1361.0 | earthquake |
5 rows × 390 columns
In a general code, you may package this into a function.
def calculate_features(Z):
"""
Function to calculate features from the data
Z: 2D array of seismic data data
Returns:
X: DataFrame of the features
"""
for i in range(Z.shape[0]):
print(f'Extracting features from sample {i}/{Z.shape[0]}')
if i==0:
X=tsfel.time_series_features_extractor(cfg, Z[i,:],fs=100., verbose = 0)
X['source_type']=df.iloc[i]['source_type']
else:
XX = tsfel.time_series_features_extractor(cfg, Z[i,:],fs=100., verbose = 0)
XX['source_type']=df.iloc[i]['source_type']
X=pd.concat([XX,X],axis=0,ignore_index=True)
# change the column names to remove the prefix 0_
X.columns = X.columns.str.replace('0_', '')
return X
# Calculate features from the seismic data and time it
import time
start = time.time()
X = calculate_features(Z)
end = time.time()
print(f'Time taken to calculate features: {end - start:.2f} seconds')
Extracting features from sample 0/1720
Extracting features from sample 1/1720
Extracting features from sample 2/1720
Extracting features from sample 3/1720
Extracting features from sample 4/1720
Extracting features from sample 5/1720
Extracting features from sample 6/1720
Extracting features from sample 7/1720
Extracting features from sample 8/1720
Extracting features from sample 9/1720
Extracting features from sample 10/1720
Extracting features from sample 11/1720
Extracting features from sample 12/1720
Extracting features from sample 13/1720
Extracting features from sample 14/1720
Extracting features from sample 15/1720
Extracting features from sample 16/1720
Extracting features from sample 17/1720
Extracting features from sample 18/1720
Extracting features from sample 19/1720
Extracting features from sample 20/1720
Extracting features from sample 21/1720
Extracting features from sample 22/1720
Extracting features from sample 23/1720
Extracting features from sample 24/1720
Extracting features from sample 25/1720
Extracting features from sample 26/1720
Extracting features from sample 27/1720
Extracting features from sample 28/1720
Extracting features from sample 29/1720
Extracting features from sample 30/1720
Extracting features from sample 31/1720
Extracting features from sample 32/1720
Extracting features from sample 33/1720
Extracting features from sample 34/1720
Extracting features from sample 35/1720
Extracting features from sample 36/1720
Extracting features from sample 37/1720
Extracting features from sample 38/1720
Extracting features from sample 39/1720
Extracting features from sample 40/1720
Extracting features from sample 41/1720
Extracting features from sample 42/1720
Extracting features from sample 43/1720
Extracting features from sample 44/1720
Extracting features from sample 45/1720
Extracting features from sample 46/1720
Extracting features from sample 47/1720
Extracting features from sample 48/1720
Extracting features from sample 49/1720
Extracting features from sample 50/1720
Extracting features from sample 51/1720
Extracting features from sample 52/1720
Extracting features from sample 53/1720
Extracting features from sample 54/1720
Extracting features from sample 55/1720
Extracting features from sample 56/1720
Extracting features from sample 57/1720
Extracting features from sample 58/1720
Extracting features from sample 59/1720
Extracting features from sample 60/1720
Extracting features from sample 61/1720
Extracting features from sample 62/1720
Extracting features from sample 63/1720
Extracting features from sample 64/1720
Extracting features from sample 65/1720
Extracting features from sample 66/1720
Extracting features from sample 67/1720
Extracting features from sample 68/1720
Extracting features from sample 69/1720
Extracting features from sample 70/1720
Extracting features from sample 71/1720
Extracting features from sample 72/1720
Extracting features from sample 73/1720
Extracting features from sample 74/1720
Extracting features from sample 75/1720
Extracting features from sample 76/1720
Extracting features from sample 77/1720
Extracting features from sample 78/1720
Extracting features from sample 79/1720
Extracting features from sample 80/1720
Extracting features from sample 81/1720
Extracting features from sample 82/1720
Extracting features from sample 83/1720
Extracting features from sample 84/1720
Extracting features from sample 85/1720
Extracting features from sample 86/1720
Extracting features from sample 87/1720
Extracting features from sample 88/1720
Extracting features from sample 89/1720
Extracting features from sample 90/1720
Extracting features from sample 91/1720
Extracting features from sample 92/1720
Extracting features from sample 93/1720
Extracting features from sample 94/1720
Extracting features from sample 95/1720
Extracting features from sample 96/1720
Extracting features from sample 97/1720
Extracting features from sample 98/1720
Extracting features from sample 99/1720
Extracting features from sample 100/1720
Extracting features from sample 101/1720
Extracting features from sample 102/1720
Extracting features from sample 103/1720
Extracting features from sample 104/1720
Extracting features from sample 105/1720
Extracting features from sample 106/1720
Extracting features from sample 107/1720
Extracting features from sample 108/1720
Extracting features from sample 109/1720
Extracting features from sample 110/1720
Extracting features from sample 111/1720
Extracting features from sample 112/1720
Extracting features from sample 113/1720
Extracting features from sample 114/1720
Extracting features from sample 115/1720
Extracting features from sample 116/1720
Extracting features from sample 117/1720
Extracting features from sample 118/1720
Extracting features from sample 119/1720
Extracting features from sample 120/1720
Extracting features from sample 121/1720
Extracting features from sample 122/1720
Extracting features from sample 123/1720
Extracting features from sample 124/1720
Extracting features from sample 125/1720
Extracting features from sample 126/1720
Extracting features from sample 127/1720
Extracting features from sample 128/1720
Extracting features from sample 129/1720
Extracting features from sample 130/1720
Extracting features from sample 131/1720
Extracting features from sample 132/1720
Extracting features from sample 133/1720
Extracting features from sample 134/1720
Extracting features from sample 135/1720
Extracting features from sample 136/1720
Extracting features from sample 137/1720
Extracting features from sample 138/1720
Extracting features from sample 139/1720
Extracting features from sample 140/1720
Extracting features from sample 141/1720
Extracting features from sample 142/1720
Extracting features from sample 143/1720
Extracting features from sample 144/1720
Extracting features from sample 145/1720
Extracting features from sample 146/1720
Extracting features from sample 147/1720
Extracting features from sample 148/1720
Extracting features from sample 149/1720
Extracting features from sample 150/1720
Extracting features from sample 151/1720
Extracting features from sample 152/1720
Extracting features from sample 153/1720
Extracting features from sample 154/1720
Extracting features from sample 155/1720
Extracting features from sample 156/1720
Extracting features from sample 157/1720
Extracting features from sample 158/1720
Extracting features from sample 159/1720
Extracting features from sample 160/1720
Extracting features from sample 161/1720
Extracting features from sample 162/1720
Extracting features from sample 163/1720
Extracting features from sample 164/1720
Extracting features from sample 165/1720
Extracting features from sample 166/1720
Extracting features from sample 167/1720
Extracting features from sample 168/1720
Extracting features from sample 169/1720
Extracting features from sample 170/1720
Extracting features from sample 171/1720
Extracting features from sample 172/1720
Extracting features from sample 173/1720
Extracting features from sample 174/1720
Extracting features from sample 175/1720
Extracting features from sample 176/1720
Extracting features from sample 177/1720
Extracting features from sample 178/1720
Extracting features from sample 179/1720
Extracting features from sample 180/1720
Extracting features from sample 181/1720
Extracting features from sample 182/1720
Extracting features from sample 183/1720
Extracting features from sample 184/1720
Extracting features from sample 185/1720
Extracting features from sample 186/1720
Extracting features from sample 187/1720
Extracting features from sample 188/1720
Extracting features from sample 189/1720
Extracting features from sample 190/1720
Extracting features from sample 191/1720
Extracting features from sample 192/1720
Extracting features from sample 193/1720
Extracting features from sample 194/1720
Extracting features from sample 195/1720
Extracting features from sample 196/1720
Extracting features from sample 197/1720
Extracting features from sample 198/1720
Extracting features from sample 199/1720
Extracting features from sample 200/1720
Extracting features from sample 201/1720
Extracting features from sample 202/1720
Extracting features from sample 203/1720
Extracting features from sample 204/1720
Extracting features from sample 205/1720
Extracting features from sample 206/1720
Extracting features from sample 207/1720
Extracting features from sample 208/1720
Extracting features from sample 209/1720
Extracting features from sample 210/1720
Extracting features from sample 211/1720
Extracting features from sample 212/1720
Extracting features from sample 213/1720
Extracting features from sample 214/1720
Extracting features from sample 215/1720
Extracting features from sample 216/1720
Extracting features from sample 217/1720
Extracting features from sample 218/1720
Extracting features from sample 219/1720
Extracting features from sample 220/1720
Extracting features from sample 221/1720
Extracting features from sample 222/1720
Extracting features from sample 223/1720
Extracting features from sample 224/1720
Extracting features from sample 225/1720
Extracting features from sample 226/1720
Extracting features from sample 227/1720
Extracting features from sample 228/1720
Extracting features from sample 229/1720
Extracting features from sample 230/1720
Extracting features from sample 231/1720
Extracting features from sample 232/1720
Extracting features from sample 233/1720
Extracting features from sample 234/1720
Extracting features from sample 235/1720
Extracting features from sample 236/1720
Extracting features from sample 237/1720
Extracting features from sample 238/1720
Extracting features from sample 239/1720
Extracting features from sample 240/1720
Extracting features from sample 241/1720
Extracting features from sample 242/1720
Extracting features from sample 243/1720
Extracting features from sample 244/1720
Extracting features from sample 245/1720
Extracting features from sample 246/1720
Extracting features from sample 247/1720
Extracting features from sample 248/1720
Extracting features from sample 249/1720
Extracting features from sample 250/1720
Extracting features from sample 251/1720
Extracting features from sample 252/1720
Extracting features from sample 253/1720
Extracting features from sample 254/1720
Extracting features from sample 255/1720
Extracting features from sample 256/1720
Extracting features from sample 257/1720
Extracting features from sample 258/1720
Extracting features from sample 259/1720
Extracting features from sample 260/1720
Extracting features from sample 261/1720
Extracting features from sample 262/1720
Extracting features from sample 263/1720
Extracting features from sample 264/1720
Extracting features from sample 265/1720
Extracting features from sample 266/1720
Extracting features from sample 267/1720
Extracting features from sample 268/1720
Extracting features from sample 269/1720
Extracting features from sample 270/1720
Extracting features from sample 271/1720
Extracting features from sample 272/1720
Extracting features from sample 273/1720
Extracting features from sample 274/1720
Extracting features from sample 275/1720
Extracting features from sample 276/1720
Extracting features from sample 277/1720
Extracting features from sample 278/1720
Extracting features from sample 279/1720
Extracting features from sample 280/1720
Extracting features from sample 281/1720
Extracting features from sample 282/1720
Extracting features from sample 283/1720
Extracting features from sample 284/1720
Extracting features from sample 285/1720
Extracting features from sample 286/1720
Extracting features from sample 287/1720
Extracting features from sample 288/1720
Extracting features from sample 289/1720
Extracting features from sample 290/1720
Extracting features from sample 291/1720
Extracting features from sample 292/1720
Extracting features from sample 293/1720
Extracting features from sample 294/1720
Extracting features from sample 295/1720
Extracting features from sample 296/1720
Extracting features from sample 297/1720
Extracting features from sample 298/1720
Extracting features from sample 299/1720
Extracting features from sample 300/1720
Extracting features from sample 301/1720
Extracting features from sample 302/1720
Extracting features from sample 303/1720
Extracting features from sample 304/1720
Extracting features from sample 305/1720
Extracting features from sample 306/1720
Extracting features from sample 307/1720
Extracting features from sample 308/1720
Extracting features from sample 309/1720
Extracting features from sample 310/1720
Extracting features from sample 311/1720
Extracting features from sample 312/1720
Extracting features from sample 313/1720
Extracting features from sample 314/1720
Extracting features from sample 315/1720
Extracting features from sample 316/1720
Extracting features from sample 317/1720
Extracting features from sample 318/1720
Extracting features from sample 319/1720
Extracting features from sample 320/1720
Extracting features from sample 321/1720
Extracting features from sample 322/1720
Extracting features from sample 323/1720
Extracting features from sample 324/1720
Extracting features from sample 325/1720
Extracting features from sample 326/1720
Extracting features from sample 327/1720
Extracting features from sample 328/1720
Extracting features from sample 329/1720
Extracting features from sample 330/1720
Extracting features from sample 331/1720
Extracting features from sample 332/1720
Extracting features from sample 333/1720
Extracting features from sample 334/1720
Extracting features from sample 335/1720
Extracting features from sample 336/1720
Extracting features from sample 337/1720
Extracting features from sample 338/1720
Extracting features from sample 339/1720
Extracting features from sample 340/1720
Extracting features from sample 341/1720
Extracting features from sample 342/1720
Extracting features from sample 343/1720
Extracting features from sample 344/1720
Extracting features from sample 345/1720
Extracting features from sample 346/1720
Extracting features from sample 347/1720
Extracting features from sample 348/1720
Extracting features from sample 349/1720
Extracting features from sample 350/1720
Extracting features from sample 351/1720
Extracting features from sample 352/1720
Extracting features from sample 353/1720
Extracting features from sample 354/1720
Extracting features from sample 355/1720
Extracting features from sample 356/1720
Extracting features from sample 357/1720
Extracting features from sample 358/1720
Extracting features from sample 359/1720
Extracting features from sample 360/1720
Extracting features from sample 361/1720
Extracting features from sample 362/1720
Extracting features from sample 363/1720
Extracting features from sample 364/1720
Extracting features from sample 365/1720
Extracting features from sample 366/1720
Extracting features from sample 367/1720
Extracting features from sample 368/1720
Extracting features from sample 369/1720
Extracting features from sample 370/1720
Extracting features from sample 371/1720
Extracting features from sample 372/1720
Extracting features from sample 373/1720
Extracting features from sample 374/1720
Extracting features from sample 375/1720
Extracting features from sample 376/1720
Extracting features from sample 377/1720
Extracting features from sample 378/1720
Extracting features from sample 379/1720
Extracting features from sample 380/1720
Extracting features from sample 381/1720
Extracting features from sample 382/1720
Extracting features from sample 383/1720
Extracting features from sample 384/1720
Extracting features from sample 385/1720
Extracting features from sample 386/1720
Extracting features from sample 387/1720
Extracting features from sample 388/1720
Extracting features from sample 389/1720
Extracting features from sample 390/1720
Extracting features from sample 391/1720
Extracting features from sample 392/1720
Extracting features from sample 393/1720
Extracting features from sample 394/1720
Extracting features from sample 395/1720
Extracting features from sample 396/1720
Extracting features from sample 397/1720
Extracting features from sample 398/1720
Extracting features from sample 399/1720
Extracting features from sample 400/1720
Extracting features from sample 401/1720
Extracting features from sample 402/1720
Extracting features from sample 403/1720
Extracting features from sample 404/1720
Extracting features from sample 405/1720
Extracting features from sample 406/1720
Extracting features from sample 407/1720
Extracting features from sample 408/1720
Extracting features from sample 409/1720
Extracting features from sample 410/1720
Extracting features from sample 411/1720
Extracting features from sample 412/1720
Extracting features from sample 413/1720
Extracting features from sample 414/1720
Extracting features from sample 415/1720
Extracting features from sample 416/1720
Extracting features from sample 417/1720
Extracting features from sample 418/1720
Extracting features from sample 419/1720
Extracting features from sample 420/1720
Extracting features from sample 421/1720
Extracting features from sample 422/1720
Extracting features from sample 423/1720
Extracting features from sample 424/1720
Extracting features from sample 425/1720
Extracting features from sample 426/1720
Extracting features from sample 427/1720
Extracting features from sample 428/1720
Extracting features from sample 429/1720
Extracting features from sample 430/1720
Extracting features from sample 431/1720
Extracting features from sample 432/1720
Extracting features from sample 433/1720
Extracting features from sample 434/1720
Extracting features from sample 435/1720
Extracting features from sample 436/1720
Extracting features from sample 437/1720
Extracting features from sample 438/1720
Extracting features from sample 439/1720
Extracting features from sample 440/1720
Extracting features from sample 441/1720
Extracting features from sample 442/1720
Extracting features from sample 443/1720
Extracting features from sample 444/1720
Extracting features from sample 445/1720
Extracting features from sample 446/1720
Extracting features from sample 447/1720
Extracting features from sample 448/1720
Extracting features from sample 449/1720
Extracting features from sample 450/1720
Extracting features from sample 451/1720
Extracting features from sample 452/1720
Extracting features from sample 453/1720
Extracting features from sample 454/1720
Extracting features from sample 455/1720
Extracting features from sample 456/1720
Extracting features from sample 457/1720
Extracting features from sample 458/1720
Extracting features from sample 459/1720
Extracting features from sample 460/1720
Extracting features from sample 461/1720
Extracting features from sample 462/1720
Extracting features from sample 463/1720
Extracting features from sample 464/1720
Extracting features from sample 465/1720
Extracting features from sample 466/1720
Extracting features from sample 467/1720
Extracting features from sample 468/1720
Extracting features from sample 469/1720
Extracting features from sample 470/1720
Extracting features from sample 471/1720
Extracting features from sample 472/1720
Extracting features from sample 473/1720
Extracting features from sample 474/1720
Extracting features from sample 475/1720
Extracting features from sample 476/1720
Extracting features from sample 477/1720
Extracting features from sample 478/1720
Extracting features from sample 479/1720
Extracting features from sample 480/1720
Extracting features from sample 481/1720
Extracting features from sample 482/1720
Extracting features from sample 483/1720
Extracting features from sample 484/1720
Extracting features from sample 485/1720
Extracting features from sample 486/1720
Extracting features from sample 487/1720
Extracting features from sample 488/1720
Extracting features from sample 489/1720
Extracting features from sample 490/1720
Extracting features from sample 491/1720
Extracting features from sample 492/1720
Extracting features from sample 493/1720
Extracting features from sample 494/1720
Extracting features from sample 495/1720
Extracting features from sample 496/1720
Extracting features from sample 497/1720
Extracting features from sample 498/1720
Extracting features from sample 499/1720
Extracting features from sample 500/1720
Extracting features from sample 501/1720
Extracting features from sample 502/1720
Extracting features from sample 503/1720
Extracting features from sample 504/1720
Extracting features from sample 505/1720
Extracting features from sample 506/1720
Extracting features from sample 507/1720
Extracting features from sample 508/1720
Extracting features from sample 509/1720
Extracting features from sample 510/1720
Extracting features from sample 511/1720
Extracting features from sample 512/1720
Extracting features from sample 513/1720
Extracting features from sample 514/1720
Extracting features from sample 515/1720
Extracting features from sample 516/1720
Extracting features from sample 517/1720
Extracting features from sample 518/1720
Extracting features from sample 519/1720
Extracting features from sample 520/1720
Extracting features from sample 521/1720
Extracting features from sample 522/1720
Extracting features from sample 523/1720
Extracting features from sample 524/1720
Extracting features from sample 525/1720
Extracting features from sample 526/1720
Extracting features from sample 527/1720
Extracting features from sample 528/1720
Extracting features from sample 529/1720
Extracting features from sample 530/1720
Extracting features from sample 531/1720
Extracting features from sample 532/1720
Extracting features from sample 533/1720
Extracting features from sample 534/1720
Extracting features from sample 535/1720
Extracting features from sample 536/1720
Extracting features from sample 537/1720
Extracting features from sample 538/1720
Extracting features from sample 539/1720
Extracting features from sample 540/1720
Extracting features from sample 541/1720
Extracting features from sample 542/1720
Extracting features from sample 543/1720
Extracting features from sample 544/1720
Extracting features from sample 545/1720
Extracting features from sample 546/1720
Extracting features from sample 547/1720
Extracting features from sample 548/1720
Extracting features from sample 549/1720
Extracting features from sample 550/1720
Extracting features from sample 551/1720
Extracting features from sample 552/1720
Extracting features from sample 553/1720
Extracting features from sample 554/1720
Extracting features from sample 555/1720
Extracting features from sample 556/1720
Extracting features from sample 557/1720
Extracting features from sample 558/1720
Extracting features from sample 559/1720
Extracting features from sample 560/1720
Extracting features from sample 561/1720
Extracting features from sample 562/1720
Extracting features from sample 563/1720
Extracting features from sample 564/1720
Extracting features from sample 565/1720
Extracting features from sample 566/1720
Extracting features from sample 567/1720
Extracting features from sample 568/1720
Extracting features from sample 569/1720
Extracting features from sample 570/1720
Extracting features from sample 571/1720
Extracting features from sample 572/1720
Extracting features from sample 573/1720
Extracting features from sample 574/1720
Extracting features from sample 575/1720
Extracting features from sample 576/1720
Extracting features from sample 577/1720
Extracting features from sample 578/1720
Extracting features from sample 579/1720
Extracting features from sample 580/1720
Extracting features from sample 581/1720
Extracting features from sample 582/1720
Extracting features from sample 583/1720
Extracting features from sample 584/1720
Extracting features from sample 585/1720
Extracting features from sample 586/1720
Extracting features from sample 587/1720
Extracting features from sample 588/1720
Extracting features from sample 589/1720
Extracting features from sample 590/1720
Extracting features from sample 591/1720
Extracting features from sample 592/1720
Extracting features from sample 593/1720
Extracting features from sample 594/1720
Extracting features from sample 595/1720
Extracting features from sample 596/1720
Extracting features from sample 597/1720
Extracting features from sample 598/1720
Extracting features from sample 599/1720
Extracting features from sample 600/1720
Extracting features from sample 601/1720
Extracting features from sample 602/1720
Extracting features from sample 603/1720
Extracting features from sample 604/1720
Extracting features from sample 605/1720
Extracting features from sample 606/1720
Extracting features from sample 607/1720
Extracting features from sample 608/1720
Extracting features from sample 609/1720
Extracting features from sample 610/1720
Extracting features from sample 611/1720
Extracting features from sample 612/1720
Extracting features from sample 613/1720
Extracting features from sample 614/1720
Extracting features from sample 615/1720
Extracting features from sample 616/1720
Extracting features from sample 617/1720
Extracting features from sample 618/1720
Extracting features from sample 619/1720
Extracting features from sample 620/1720
Extracting features from sample 621/1720
Extracting features from sample 622/1720
Extracting features from sample 623/1720
Extracting features from sample 624/1720
Extracting features from sample 625/1720
Extracting features from sample 626/1720
Extracting features from sample 627/1720
Extracting features from sample 628/1720
Extracting features from sample 629/1720
Extracting features from sample 630/1720
Extracting features from sample 631/1720
Extracting features from sample 632/1720
Extracting features from sample 633/1720
Extracting features from sample 634/1720
Extracting features from sample 635/1720
Extracting features from sample 636/1720
Extracting features from sample 637/1720
Extracting features from sample 638/1720
Extracting features from sample 639/1720
Extracting features from sample 640/1720
Extracting features from sample 641/1720
Extracting features from sample 642/1720
Extracting features from sample 643/1720
Extracting features from sample 644/1720
Extracting features from sample 645/1720
Extracting features from sample 646/1720
Extracting features from sample 647/1720
Extracting features from sample 648/1720
Extracting features from sample 649/1720
Extracting features from sample 650/1720
Extracting features from sample 651/1720
Extracting features from sample 652/1720
Extracting features from sample 653/1720
Extracting features from sample 654/1720
Extracting features from sample 655/1720
Extracting features from sample 656/1720
Extracting features from sample 657/1720
Extracting features from sample 658/1720
Extracting features from sample 659/1720
Extracting features from sample 660/1720
Extracting features from sample 661/1720
Extracting features from sample 662/1720
Extracting features from sample 663/1720
Extracting features from sample 664/1720
Extracting features from sample 665/1720
Extracting features from sample 666/1720
Extracting features from sample 667/1720
Extracting features from sample 668/1720
Extracting features from sample 669/1720
Extracting features from sample 670/1720
Extracting features from sample 671/1720
Extracting features from sample 672/1720
Extracting features from sample 673/1720
Extracting features from sample 674/1720
Extracting features from sample 675/1720
Extracting features from sample 676/1720
Extracting features from sample 677/1720
Extracting features from sample 678/1720
Extracting features from sample 679/1720
Extracting features from sample 680/1720
Extracting features from sample 681/1720
Extracting features from sample 682/1720
Extracting features from sample 683/1720
Extracting features from sample 684/1720
Extracting features from sample 685/1720
Extracting features from sample 686/1720
Extracting features from sample 687/1720
Extracting features from sample 688/1720
Extracting features from sample 689/1720
Extracting features from sample 690/1720
Extracting features from sample 691/1720
Extracting features from sample 692/1720
Extracting features from sample 693/1720
Extracting features from sample 694/1720
Extracting features from sample 695/1720
Extracting features from sample 696/1720
Extracting features from sample 697/1720
Extracting features from sample 698/1720
Extracting features from sample 699/1720
Extracting features from sample 700/1720
Extracting features from sample 701/1720
Extracting features from sample 702/1720
Extracting features from sample 703/1720
Extracting features from sample 704/1720
Extracting features from sample 705/1720
Extracting features from sample 706/1720
Extracting features from sample 707/1720
Extracting features from sample 708/1720
Extracting features from sample 709/1720
Extracting features from sample 710/1720
Extracting features from sample 711/1720
Extracting features from sample 712/1720
Extracting features from sample 713/1720
Extracting features from sample 714/1720
Extracting features from sample 715/1720
Extracting features from sample 716/1720
Extracting features from sample 717/1720
Extracting features from sample 718/1720
Extracting features from sample 719/1720
Extracting features from sample 720/1720
Extracting features from sample 721/1720
Extracting features from sample 722/1720
Extracting features from sample 723/1720
Extracting features from sample 724/1720
Extracting features from sample 725/1720
Extracting features from sample 726/1720
Extracting features from sample 727/1720
Extracting features from sample 728/1720
Extracting features from sample 729/1720
Extracting features from sample 730/1720
Extracting features from sample 731/1720
Extracting features from sample 732/1720
Extracting features from sample 733/1720
Extracting features from sample 734/1720
Extracting features from sample 735/1720
Extracting features from sample 736/1720
Extracting features from sample 737/1720
Extracting features from sample 738/1720
Extracting features from sample 739/1720
Extracting features from sample 740/1720
Extracting features from sample 741/1720
Extracting features from sample 742/1720
Extracting features from sample 743/1720
Extracting features from sample 744/1720
Extracting features from sample 745/1720
Extracting features from sample 746/1720
Extracting features from sample 747/1720
Extracting features from sample 748/1720
Extracting features from sample 749/1720
Extracting features from sample 750/1720
Extracting features from sample 751/1720
Extracting features from sample 752/1720
Extracting features from sample 753/1720
Extracting features from sample 754/1720
Extracting features from sample 755/1720
Extracting features from sample 756/1720
Extracting features from sample 757/1720
Extracting features from sample 758/1720
Extracting features from sample 759/1720
Extracting features from sample 760/1720
Extracting features from sample 761/1720
Extracting features from sample 762/1720
Extracting features from sample 763/1720
Extracting features from sample 764/1720
Extracting features from sample 765/1720
Extracting features from sample 766/1720
Extracting features from sample 767/1720
Extracting features from sample 768/1720
Extracting features from sample 769/1720
Extracting features from sample 770/1720
Extracting features from sample 771/1720
Extracting features from sample 772/1720
Extracting features from sample 773/1720
Extracting features from sample 774/1720
Extracting features from sample 775/1720
Extracting features from sample 776/1720
Extracting features from sample 777/1720
Extracting features from sample 778/1720
Extracting features from sample 779/1720
Extracting features from sample 780/1720
Extracting features from sample 781/1720
Extracting features from sample 782/1720
Extracting features from sample 783/1720
Extracting features from sample 784/1720
Extracting features from sample 785/1720
Extracting features from sample 786/1720
Extracting features from sample 787/1720
Extracting features from sample 788/1720
Extracting features from sample 789/1720
Extracting features from sample 790/1720
Extracting features from sample 791/1720
Extracting features from sample 792/1720
Extracting features from sample 793/1720
Extracting features from sample 794/1720
Extracting features from sample 795/1720
Extracting features from sample 796/1720
Extracting features from sample 797/1720
Extracting features from sample 798/1720
Extracting features from sample 799/1720
Extracting features from sample 800/1720
Extracting features from sample 801/1720
Extracting features from sample 802/1720
Extracting features from sample 803/1720
Extracting features from sample 804/1720
Extracting features from sample 805/1720
Extracting features from sample 806/1720
Extracting features from sample 807/1720
Extracting features from sample 808/1720
Extracting features from sample 809/1720
Extracting features from sample 810/1720
Extracting features from sample 811/1720
Extracting features from sample 812/1720
Extracting features from sample 813/1720
Extracting features from sample 814/1720
Extracting features from sample 815/1720
Extracting features from sample 816/1720
Extracting features from sample 817/1720
Extracting features from sample 818/1720
Extracting features from sample 819/1720
Extracting features from sample 820/1720
Extracting features from sample 821/1720
Extracting features from sample 822/1720
Extracting features from sample 823/1720
Extracting features from sample 824/1720
Extracting features from sample 825/1720
Extracting features from sample 826/1720
Extracting features from sample 827/1720
Extracting features from sample 828/1720
Extracting features from sample 829/1720
Extracting features from sample 830/1720
Extracting features from sample 831/1720
Extracting features from sample 832/1720
Extracting features from sample 833/1720
Extracting features from sample 834/1720
Extracting features from sample 835/1720
Extracting features from sample 836/1720
Extracting features from sample 837/1720
Extracting features from sample 838/1720
Extracting features from sample 839/1720
Extracting features from sample 840/1720
Extracting features from sample 841/1720
Extracting features from sample 842/1720
Extracting features from sample 843/1720
Extracting features from sample 844/1720
Extracting features from sample 845/1720
Extracting features from sample 846/1720
Extracting features from sample 847/1720
Extracting features from sample 848/1720
Extracting features from sample 849/1720
Extracting features from sample 850/1720
Extracting features from sample 851/1720
Extracting features from sample 852/1720
Extracting features from sample 853/1720
Extracting features from sample 854/1720
Extracting features from sample 855/1720
Extracting features from sample 856/1720
Extracting features from sample 857/1720
Extracting features from sample 858/1720
Extracting features from sample 859/1720
Extracting features from sample 860/1720
Extracting features from sample 861/1720
Extracting features from sample 862/1720
Extracting features from sample 863/1720
Extracting features from sample 864/1720
Extracting features from sample 865/1720
Extracting features from sample 866/1720
Extracting features from sample 867/1720
Extracting features from sample 868/1720
Extracting features from sample 869/1720
Extracting features from sample 870/1720
Extracting features from sample 871/1720
Extracting features from sample 872/1720
Extracting features from sample 873/1720
Extracting features from sample 874/1720
Extracting features from sample 875/1720
Extracting features from sample 876/1720
Extracting features from sample 877/1720
Extracting features from sample 878/1720
Extracting features from sample 879/1720
Extracting features from sample 880/1720
Extracting features from sample 881/1720
Extracting features from sample 882/1720
Extracting features from sample 883/1720
Extracting features from sample 884/1720
Extracting features from sample 885/1720
Extracting features from sample 886/1720
Extracting features from sample 887/1720
Extracting features from sample 888/1720
Extracting features from sample 889/1720
Extracting features from sample 890/1720
Extracting features from sample 891/1720
Extracting features from sample 892/1720
Extracting features from sample 893/1720
Extracting features from sample 894/1720
Extracting features from sample 895/1720
Extracting features from sample 896/1720
Extracting features from sample 897/1720
Extracting features from sample 898/1720
Extracting features from sample 899/1720
Extracting features from sample 900/1720
Extracting features from sample 901/1720
Extracting features from sample 902/1720
Extracting features from sample 903/1720
Extracting features from sample 904/1720
Extracting features from sample 905/1720
Extracting features from sample 906/1720
Extracting features from sample 907/1720
Extracting features from sample 908/1720
Extracting features from sample 909/1720
Extracting features from sample 910/1720
Extracting features from sample 911/1720
Extracting features from sample 912/1720
Extracting features from sample 913/1720
Extracting features from sample 914/1720
Extracting features from sample 915/1720
Extracting features from sample 916/1720
Extracting features from sample 917/1720
Extracting features from sample 918/1720
Extracting features from sample 919/1720
Extracting features from sample 920/1720
Extracting features from sample 921/1720
Extracting features from sample 922/1720
Extracting features from sample 923/1720
Extracting features from sample 924/1720
Extracting features from sample 925/1720
Extracting features from sample 926/1720
Extracting features from sample 927/1720
Extracting features from sample 928/1720
Extracting features from sample 929/1720
Extracting features from sample 930/1720
Extracting features from sample 931/1720
Extracting features from sample 932/1720
Extracting features from sample 933/1720
Extracting features from sample 934/1720
Extracting features from sample 935/1720
Extracting features from sample 936/1720
Extracting features from sample 937/1720
Extracting features from sample 938/1720
Extracting features from sample 939/1720
Extracting features from sample 940/1720
Extracting features from sample 941/1720
Extracting features from sample 942/1720
Extracting features from sample 943/1720
Extracting features from sample 944/1720
Extracting features from sample 945/1720
Extracting features from sample 946/1720
Extracting features from sample 947/1720
Extracting features from sample 948/1720
Extracting features from sample 949/1720
Extracting features from sample 950/1720
Extracting features from sample 951/1720
Extracting features from sample 952/1720
Extracting features from sample 953/1720
Extracting features from sample 954/1720
Extracting features from sample 955/1720
Extracting features from sample 956/1720
Extracting features from sample 957/1720
Extracting features from sample 958/1720
Extracting features from sample 959/1720
Extracting features from sample 960/1720
Extracting features from sample 961/1720
Extracting features from sample 962/1720
Extracting features from sample 963/1720
Extracting features from sample 964/1720
Extracting features from sample 965/1720
Extracting features from sample 966/1720
Extracting features from sample 967/1720
Extracting features from sample 968/1720
Extracting features from sample 969/1720
Extracting features from sample 970/1720
Extracting features from sample 971/1720
Extracting features from sample 972/1720
Extracting features from sample 973/1720
Extracting features from sample 974/1720
Extracting features from sample 975/1720
Extracting features from sample 976/1720
Extracting features from sample 977/1720
Extracting features from sample 978/1720
Extracting features from sample 979/1720
Extracting features from sample 980/1720
Extracting features from sample 981/1720
Extracting features from sample 982/1720
Extracting features from sample 983/1720
Extracting features from sample 984/1720
Extracting features from sample 985/1720
Extracting features from sample 986/1720
Extracting features from sample 987/1720
Extracting features from sample 988/1720
Extracting features from sample 989/1720
Extracting features from sample 990/1720
Extracting features from sample 991/1720
Extracting features from sample 992/1720
Extracting features from sample 993/1720
Extracting features from sample 994/1720
Extracting features from sample 995/1720
Extracting features from sample 996/1720
Extracting features from sample 997/1720
Extracting features from sample 998/1720
Extracting features from sample 999/1720
Extracting features from sample 1000/1720
Extracting features from sample 1001/1720
Extracting features from sample 1002/1720
Extracting features from sample 1003/1720
Extracting features from sample 1004/1720
Extracting features from sample 1005/1720
Extracting features from sample 1006/1720
Extracting features from sample 1007/1720
Extracting features from sample 1008/1720
Extracting features from sample 1009/1720
Extracting features from sample 1010/1720
Extracting features from sample 1011/1720
Extracting features from sample 1012/1720
Extracting features from sample 1013/1720
Extracting features from sample 1014/1720
Extracting features from sample 1015/1720
Extracting features from sample 1016/1720
Extracting features from sample 1017/1720
Extracting features from sample 1018/1720
Extracting features from sample 1019/1720
Extracting features from sample 1020/1720
Extracting features from sample 1021/1720
Extracting features from sample 1022/1720
Extracting features from sample 1023/1720
Extracting features from sample 1024/1720
Extracting features from sample 1025/1720
Extracting features from sample 1026/1720
Extracting features from sample 1027/1720
Extracting features from sample 1028/1720
Extracting features from sample 1029/1720
Extracting features from sample 1030/1720
Extracting features from sample 1031/1720
Extracting features from sample 1032/1720
Extracting features from sample 1033/1720
Extracting features from sample 1034/1720
Extracting features from sample 1035/1720
Extracting features from sample 1036/1720
Extracting features from sample 1037/1720
Extracting features from sample 1038/1720
Extracting features from sample 1039/1720
Extracting features from sample 1040/1720
Extracting features from sample 1041/1720
Extracting features from sample 1042/1720
Extracting features from sample 1043/1720
Extracting features from sample 1044/1720
Extracting features from sample 1045/1720
Extracting features from sample 1046/1720
Extracting features from sample 1047/1720
Extracting features from sample 1048/1720
Extracting features from sample 1049/1720
Extracting features from sample 1050/1720
Extracting features from sample 1051/1720
Extracting features from sample 1052/1720
Extracting features from sample 1053/1720
Extracting features from sample 1054/1720
Extracting features from sample 1055/1720
Extracting features from sample 1056/1720
Extracting features from sample 1057/1720
Extracting features from sample 1058/1720
Extracting features from sample 1059/1720
Extracting features from sample 1060/1720
Extracting features from sample 1061/1720
Extracting features from sample 1062/1720
Extracting features from sample 1063/1720
Extracting features from sample 1064/1720
Extracting features from sample 1065/1720
Extracting features from sample 1066/1720
Extracting features from sample 1067/1720
Extracting features from sample 1068/1720
Extracting features from sample 1069/1720
Extracting features from sample 1070/1720
Extracting features from sample 1071/1720
Extracting features from sample 1072/1720
Extracting features from sample 1073/1720
Extracting features from sample 1074/1720
Extracting features from sample 1075/1720
Extracting features from sample 1076/1720
Extracting features from sample 1077/1720
Extracting features from sample 1078/1720
Extracting features from sample 1079/1720
Extracting features from sample 1080/1720
Extracting features from sample 1081/1720
Extracting features from sample 1082/1720
Extracting features from sample 1083/1720
Extracting features from sample 1084/1720
Extracting features from sample 1085/1720
Extracting features from sample 1086/1720
Extracting features from sample 1087/1720
Extracting features from sample 1088/1720
Extracting features from sample 1089/1720
Extracting features from sample 1090/1720
Extracting features from sample 1091/1720
Extracting features from sample 1092/1720
Extracting features from sample 1093/1720
Extracting features from sample 1094/1720
Extracting features from sample 1095/1720
Extracting features from sample 1096/1720
Extracting features from sample 1097/1720
Extracting features from sample 1098/1720
Extracting features from sample 1099/1720
Extracting features from sample 1100/1720
Extracting features from sample 1101/1720
Extracting features from sample 1102/1720
Extracting features from sample 1103/1720
Extracting features from sample 1104/1720
Extracting features from sample 1105/1720
Extracting features from sample 1106/1720
Extracting features from sample 1107/1720
Extracting features from sample 1108/1720
Extracting features from sample 1109/1720
Extracting features from sample 1110/1720
Extracting features from sample 1111/1720
Extracting features from sample 1112/1720
Extracting features from sample 1113/1720
Extracting features from sample 1114/1720
Extracting features from sample 1115/1720
Extracting features from sample 1116/1720
Extracting features from sample 1117/1720
Extracting features from sample 1118/1720
Extracting features from sample 1119/1720
Extracting features from sample 1120/1720
Extracting features from sample 1121/1720
Extracting features from sample 1122/1720
Extracting features from sample 1123/1720
Extracting features from sample 1124/1720
Extracting features from sample 1125/1720
Extracting features from sample 1126/1720
Extracting features from sample 1127/1720
Extracting features from sample 1128/1720
Extracting features from sample 1129/1720
Extracting features from sample 1130/1720
Extracting features from sample 1131/1720
Extracting features from sample 1132/1720
Extracting features from sample 1133/1720
Extracting features from sample 1134/1720
Extracting features from sample 1135/1720
Extracting features from sample 1136/1720
Extracting features from sample 1137/1720
Extracting features from sample 1138/1720
Extracting features from sample 1139/1720
Extracting features from sample 1140/1720
Extracting features from sample 1141/1720
Extracting features from sample 1142/1720
Extracting features from sample 1143/1720
Extracting features from sample 1144/1720
Extracting features from sample 1145/1720
Extracting features from sample 1146/1720
Extracting features from sample 1147/1720
Extracting features from sample 1148/1720
Extracting features from sample 1149/1720
Extracting features from sample 1150/1720
Extracting features from sample 1151/1720
Extracting features from sample 1152/1720
Extracting features from sample 1153/1720
Extracting features from sample 1154/1720
Extracting features from sample 1155/1720
Extracting features from sample 1156/1720
Extracting features from sample 1157/1720
Extracting features from sample 1158/1720
Extracting features from sample 1159/1720
Extracting features from sample 1160/1720
Extracting features from sample 1161/1720
Extracting features from sample 1162/1720
Extracting features from sample 1163/1720
Extracting features from sample 1164/1720
Extracting features from sample 1165/1720
Extracting features from sample 1166/1720
Extracting features from sample 1167/1720
Extracting features from sample 1168/1720
Extracting features from sample 1169/1720
Extracting features from sample 1170/1720
Extracting features from sample 1171/1720
Extracting features from sample 1172/1720
Extracting features from sample 1173/1720
Extracting features from sample 1174/1720
Extracting features from sample 1175/1720
Extracting features from sample 1176/1720
Extracting features from sample 1177/1720
Extracting features from sample 1178/1720
Extracting features from sample 1179/1720
Extracting features from sample 1180/1720
Extracting features from sample 1181/1720
Extracting features from sample 1182/1720
Extracting features from sample 1183/1720
Extracting features from sample 1184/1720
Extracting features from sample 1185/1720
Extracting features from sample 1186/1720
Extracting features from sample 1187/1720
Extracting features from sample 1188/1720
Extracting features from sample 1189/1720
Extracting features from sample 1190/1720
Extracting features from sample 1191/1720
Extracting features from sample 1192/1720
Extracting features from sample 1193/1720
Extracting features from sample 1194/1720
Extracting features from sample 1195/1720
Extracting features from sample 1196/1720
Extracting features from sample 1197/1720
Extracting features from sample 1198/1720
Extracting features from sample 1199/1720
Extracting features from sample 1200/1720
Extracting features from sample 1201/1720
Extracting features from sample 1202/1720
Extracting features from sample 1203/1720
Extracting features from sample 1204/1720
Extracting features from sample 1205/1720
Extracting features from sample 1206/1720
Extracting features from sample 1207/1720
Extracting features from sample 1208/1720
Extracting features from sample 1209/1720
Extracting features from sample 1210/1720
Extracting features from sample 1211/1720
Extracting features from sample 1212/1720
Extracting features from sample 1213/1720
Extracting features from sample 1214/1720
Extracting features from sample 1215/1720
Extracting features from sample 1216/1720
Extracting features from sample 1217/1720
Extracting features from sample 1218/1720
Extracting features from sample 1219/1720
Extracting features from sample 1220/1720
Extracting features from sample 1221/1720
Extracting features from sample 1222/1720
Extracting features from sample 1223/1720
Extracting features from sample 1224/1720
Extracting features from sample 1225/1720
Extracting features from sample 1226/1720
Extracting features from sample 1227/1720
Extracting features from sample 1228/1720
Extracting features from sample 1229/1720
Extracting features from sample 1230/1720
Extracting features from sample 1231/1720
Extracting features from sample 1232/1720
Extracting features from sample 1233/1720
Extracting features from sample 1234/1720
Extracting features from sample 1235/1720
Extracting features from sample 1236/1720
Extracting features from sample 1237/1720
Extracting features from sample 1238/1720
Extracting features from sample 1239/1720
Extracting features from sample 1240/1720
Extracting features from sample 1241/1720
Extracting features from sample 1242/1720
Extracting features from sample 1243/1720
Extracting features from sample 1244/1720
Extracting features from sample 1245/1720
Extracting features from sample 1246/1720
Extracting features from sample 1247/1720
Extracting features from sample 1248/1720
Extracting features from sample 1249/1720
Extracting features from sample 1250/1720
Extracting features from sample 1251/1720
Extracting features from sample 1252/1720
Extracting features from sample 1253/1720
Extracting features from sample 1254/1720
Extracting features from sample 1255/1720
Extracting features from sample 1256/1720
Extracting features from sample 1257/1720
Extracting features from sample 1258/1720
Extracting features from sample 1259/1720
Extracting features from sample 1260/1720
Extracting features from sample 1261/1720
Extracting features from sample 1262/1720
Extracting features from sample 1263/1720
Extracting features from sample 1264/1720
Extracting features from sample 1265/1720
Extracting features from sample 1266/1720
Extracting features from sample 1267/1720
Extracting features from sample 1268/1720
Extracting features from sample 1269/1720
Extracting features from sample 1270/1720
Extracting features from sample 1271/1720
Extracting features from sample 1272/1720
Extracting features from sample 1273/1720
Extracting features from sample 1274/1720
Extracting features from sample 1275/1720
Extracting features from sample 1276/1720
Extracting features from sample 1277/1720
Extracting features from sample 1278/1720
Extracting features from sample 1279/1720
Extracting features from sample 1280/1720
Extracting features from sample 1281/1720
Extracting features from sample 1282/1720
Extracting features from sample 1283/1720
Extracting features from sample 1284/1720
Extracting features from sample 1285/1720
Extracting features from sample 1286/1720
Extracting features from sample 1287/1720
Extracting features from sample 1288/1720
Extracting features from sample 1289/1720
Extracting features from sample 1290/1720
Extracting features from sample 1291/1720
Extracting features from sample 1292/1720
Extracting features from sample 1293/1720
Extracting features from sample 1294/1720
Extracting features from sample 1295/1720
Extracting features from sample 1296/1720
Extracting features from sample 1297/1720
Extracting features from sample 1298/1720
Extracting features from sample 1299/1720
Extracting features from sample 1300/1720
Extracting features from sample 1301/1720
Extracting features from sample 1302/1720
Extracting features from sample 1303/1720
Extracting features from sample 1304/1720
Extracting features from sample 1305/1720
Extracting features from sample 1306/1720
Extracting features from sample 1307/1720
Extracting features from sample 1308/1720
Extracting features from sample 1309/1720
Extracting features from sample 1310/1720
Extracting features from sample 1311/1720
Extracting features from sample 1312/1720
Extracting features from sample 1313/1720
Extracting features from sample 1314/1720
Extracting features from sample 1315/1720
Extracting features from sample 1316/1720
Extracting features from sample 1317/1720
Extracting features from sample 1318/1720
Extracting features from sample 1319/1720
Extracting features from sample 1320/1720
Extracting features from sample 1321/1720
Extracting features from sample 1322/1720
Extracting features from sample 1323/1720
Extracting features from sample 1324/1720
Extracting features from sample 1325/1720
Extracting features from sample 1326/1720
Extracting features from sample 1327/1720
Extracting features from sample 1328/1720
Extracting features from sample 1329/1720
Extracting features from sample 1330/1720
Extracting features from sample 1331/1720
Extracting features from sample 1332/1720
Extracting features from sample 1333/1720
Extracting features from sample 1334/1720
Extracting features from sample 1335/1720
Extracting features from sample 1336/1720
Extracting features from sample 1337/1720
Extracting features from sample 1338/1720
Extracting features from sample 1339/1720
Extracting features from sample 1340/1720
Extracting features from sample 1341/1720
Extracting features from sample 1342/1720
Extracting features from sample 1343/1720
Extracting features from sample 1344/1720
Extracting features from sample 1345/1720
Extracting features from sample 1346/1720
Extracting features from sample 1347/1720
Extracting features from sample 1348/1720
Extracting features from sample 1349/1720
Extracting features from sample 1350/1720
Extracting features from sample 1351/1720
Extracting features from sample 1352/1720
Extracting features from sample 1353/1720
Extracting features from sample 1354/1720
Extracting features from sample 1355/1720
Extracting features from sample 1356/1720
Extracting features from sample 1357/1720
Extracting features from sample 1358/1720
Extracting features from sample 1359/1720
Extracting features from sample 1360/1720
Extracting features from sample 1361/1720
Extracting features from sample 1362/1720
Extracting features from sample 1363/1720
Extracting features from sample 1364/1720
Extracting features from sample 1365/1720
Extracting features from sample 1366/1720
Extracting features from sample 1367/1720
Extracting features from sample 1368/1720
Extracting features from sample 1369/1720
Extracting features from sample 1370/1720
Extracting features from sample 1371/1720
Extracting features from sample 1372/1720
Extracting features from sample 1373/1720
Extracting features from sample 1374/1720
Extracting features from sample 1375/1720
Extracting features from sample 1376/1720
Extracting features from sample 1377/1720
Extracting features from sample 1378/1720
Extracting features from sample 1379/1720
Extracting features from sample 1380/1720
Extracting features from sample 1381/1720
Extracting features from sample 1382/1720
Extracting features from sample 1383/1720
Extracting features from sample 1384/1720
Extracting features from sample 1385/1720
Extracting features from sample 1386/1720
Extracting features from sample 1387/1720
Extracting features from sample 1388/1720
Extracting features from sample 1389/1720
Extracting features from sample 1390/1720
Extracting features from sample 1391/1720
Extracting features from sample 1392/1720
Extracting features from sample 1393/1720
Extracting features from sample 1394/1720
Extracting features from sample 1395/1720
Extracting features from sample 1396/1720
Extracting features from sample 1397/1720
Extracting features from sample 1398/1720
Extracting features from sample 1399/1720
Extracting features from sample 1400/1720
Extracting features from sample 1401/1720
Extracting features from sample 1402/1720
Extracting features from sample 1403/1720
Extracting features from sample 1404/1720
Extracting features from sample 1405/1720
Extracting features from sample 1406/1720
Extracting features from sample 1407/1720
Extracting features from sample 1408/1720
Extracting features from sample 1409/1720
Extracting features from sample 1410/1720
Extracting features from sample 1411/1720
Extracting features from sample 1412/1720
Extracting features from sample 1413/1720
Extracting features from sample 1414/1720
Extracting features from sample 1415/1720
Extracting features from sample 1416/1720
Extracting features from sample 1417/1720
Extracting features from sample 1418/1720
Extracting features from sample 1419/1720
Extracting features from sample 1420/1720
Extracting features from sample 1421/1720
Extracting features from sample 1422/1720
Extracting features from sample 1423/1720
Extracting features from sample 1424/1720
Extracting features from sample 1425/1720
Extracting features from sample 1426/1720
Extracting features from sample 1427/1720
Extracting features from sample 1428/1720
Extracting features from sample 1429/1720
Extracting features from sample 1430/1720
Extracting features from sample 1431/1720
Extracting features from sample 1432/1720
Extracting features from sample 1433/1720
Extracting features from sample 1434/1720
Extracting features from sample 1435/1720
Extracting features from sample 1436/1720
Extracting features from sample 1437/1720
Extracting features from sample 1438/1720
Extracting features from sample 1439/1720
Extracting features from sample 1440/1720
Extracting features from sample 1441/1720
Extracting features from sample 1442/1720
Extracting features from sample 1443/1720
Extracting features from sample 1444/1720
Extracting features from sample 1445/1720
Extracting features from sample 1446/1720
Extracting features from sample 1447/1720
Extracting features from sample 1448/1720
Extracting features from sample 1449/1720
Extracting features from sample 1450/1720
Extracting features from sample 1451/1720
Extracting features from sample 1452/1720
Extracting features from sample 1453/1720
Extracting features from sample 1454/1720
Extracting features from sample 1455/1720
Extracting features from sample 1456/1720
Extracting features from sample 1457/1720
Extracting features from sample 1458/1720
Extracting features from sample 1459/1720
Extracting features from sample 1460/1720
Extracting features from sample 1461/1720
Extracting features from sample 1462/1720
Extracting features from sample 1463/1720
Extracting features from sample 1464/1720
Extracting features from sample 1465/1720
Extracting features from sample 1466/1720
Extracting features from sample 1467/1720
Extracting features from sample 1468/1720
Extracting features from sample 1469/1720
Extracting features from sample 1470/1720
Extracting features from sample 1471/1720
Extracting features from sample 1472/1720
Extracting features from sample 1473/1720
Extracting features from sample 1474/1720
Extracting features from sample 1475/1720
Extracting features from sample 1476/1720
Extracting features from sample 1477/1720
Extracting features from sample 1478/1720
Extracting features from sample 1479/1720
Extracting features from sample 1480/1720
Extracting features from sample 1481/1720
Extracting features from sample 1482/1720
Extracting features from sample 1483/1720
Extracting features from sample 1484/1720
Extracting features from sample 1485/1720
Extracting features from sample 1486/1720
Extracting features from sample 1487/1720
Extracting features from sample 1488/1720
Extracting features from sample 1489/1720
Extracting features from sample 1490/1720
Extracting features from sample 1491/1720
Extracting features from sample 1492/1720
Extracting features from sample 1493/1720
Extracting features from sample 1494/1720
Extracting features from sample 1495/1720
Extracting features from sample 1496/1720
Extracting features from sample 1497/1720
Extracting features from sample 1498/1720
Extracting features from sample 1499/1720
Extracting features from sample 1500/1720
Extracting features from sample 1501/1720
Extracting features from sample 1502/1720
Extracting features from sample 1503/1720
Extracting features from sample 1504/1720
Extracting features from sample 1505/1720
Extracting features from sample 1506/1720
Extracting features from sample 1507/1720
Extracting features from sample 1508/1720
Extracting features from sample 1509/1720
Extracting features from sample 1510/1720
Extracting features from sample 1511/1720
Extracting features from sample 1512/1720
Extracting features from sample 1513/1720
Extracting features from sample 1514/1720
Extracting features from sample 1515/1720
Extracting features from sample 1516/1720
Extracting features from sample 1517/1720
Extracting features from sample 1518/1720
Extracting features from sample 1519/1720
Extracting features from sample 1520/1720
Extracting features from sample 1521/1720
Extracting features from sample 1522/1720
Extracting features from sample 1523/1720
Extracting features from sample 1524/1720
Extracting features from sample 1525/1720
Extracting features from sample 1526/1720
Extracting features from sample 1527/1720
Extracting features from sample 1528/1720
Extracting features from sample 1529/1720
Extracting features from sample 1530/1720
Extracting features from sample 1531/1720
Extracting features from sample 1532/1720
Extracting features from sample 1533/1720
Extracting features from sample 1534/1720
Extracting features from sample 1535/1720
Extracting features from sample 1536/1720
Extracting features from sample 1537/1720
Extracting features from sample 1538/1720
Extracting features from sample 1539/1720
Extracting features from sample 1540/1720
Extracting features from sample 1541/1720
Extracting features from sample 1542/1720
Extracting features from sample 1543/1720
Extracting features from sample 1544/1720
Extracting features from sample 1545/1720
Extracting features from sample 1546/1720
Extracting features from sample 1547/1720
Extracting features from sample 1548/1720
Extracting features from sample 1549/1720
Extracting features from sample 1550/1720
Extracting features from sample 1551/1720
Extracting features from sample 1552/1720
Extracting features from sample 1553/1720
Extracting features from sample 1554/1720
Extracting features from sample 1555/1720
Extracting features from sample 1556/1720
Extracting features from sample 1557/1720
Extracting features from sample 1558/1720
Extracting features from sample 1559/1720
Extracting features from sample 1560/1720
Extracting features from sample 1561/1720
Extracting features from sample 1562/1720
Extracting features from sample 1563/1720
Extracting features from sample 1564/1720
Extracting features from sample 1565/1720
Extracting features from sample 1566/1720
Extracting features from sample 1567/1720
Extracting features from sample 1568/1720
Extracting features from sample 1569/1720
Extracting features from sample 1570/1720
Extracting features from sample 1571/1720
Extracting features from sample 1572/1720
Extracting features from sample 1573/1720
Extracting features from sample 1574/1720
Extracting features from sample 1575/1720
Extracting features from sample 1576/1720
Extracting features from sample 1577/1720
Extracting features from sample 1578/1720
Extracting features from sample 1579/1720
Extracting features from sample 1580/1720
Extracting features from sample 1581/1720
Extracting features from sample 1582/1720
Extracting features from sample 1583/1720
Extracting features from sample 1584/1720
Extracting features from sample 1585/1720
Extracting features from sample 1586/1720
Extracting features from sample 1587/1720
Extracting features from sample 1588/1720
Extracting features from sample 1589/1720
Extracting features from sample 1590/1720
Extracting features from sample 1591/1720
Extracting features from sample 1592/1720
Extracting features from sample 1593/1720
Extracting features from sample 1594/1720
Extracting features from sample 1595/1720
Extracting features from sample 1596/1720
Extracting features from sample 1597/1720
Extracting features from sample 1598/1720
Extracting features from sample 1599/1720
Extracting features from sample 1600/1720
Extracting features from sample 1601/1720
Extracting features from sample 1602/1720
Extracting features from sample 1603/1720
Extracting features from sample 1604/1720
Extracting features from sample 1605/1720
Extracting features from sample 1606/1720
Extracting features from sample 1607/1720
Extracting features from sample 1608/1720
Extracting features from sample 1609/1720
Extracting features from sample 1610/1720
Extracting features from sample 1611/1720
Extracting features from sample 1612/1720
Extracting features from sample 1613/1720
Extracting features from sample 1614/1720
Extracting features from sample 1615/1720
Extracting features from sample 1616/1720
Extracting features from sample 1617/1720
Extracting features from sample 1618/1720
Extracting features from sample 1619/1720
Extracting features from sample 1620/1720
Extracting features from sample 1621/1720
Extracting features from sample 1622/1720
Extracting features from sample 1623/1720
Extracting features from sample 1624/1720
Extracting features from sample 1625/1720
Extracting features from sample 1626/1720
Extracting features from sample 1627/1720
Extracting features from sample 1628/1720
Extracting features from sample 1629/1720
Extracting features from sample 1630/1720
Extracting features from sample 1631/1720
Extracting features from sample 1632/1720
Extracting features from sample 1633/1720
Extracting features from sample 1634/1720
Extracting features from sample 1635/1720
Extracting features from sample 1636/1720
Extracting features from sample 1637/1720
Extracting features from sample 1638/1720
Extracting features from sample 1639/1720
Extracting features from sample 1640/1720
Extracting features from sample 1641/1720
Extracting features from sample 1642/1720
Extracting features from sample 1643/1720
Extracting features from sample 1644/1720
Extracting features from sample 1645/1720
Extracting features from sample 1646/1720
Extracting features from sample 1647/1720
Extracting features from sample 1648/1720
Extracting features from sample 1649/1720
Extracting features from sample 1650/1720
Extracting features from sample 1651/1720
Extracting features from sample 1652/1720
Extracting features from sample 1653/1720
Extracting features from sample 1654/1720
Extracting features from sample 1655/1720
Extracting features from sample 1656/1720
Extracting features from sample 1657/1720
Extracting features from sample 1658/1720
Extracting features from sample 1659/1720
Extracting features from sample 1660/1720
Extracting features from sample 1661/1720
Extracting features from sample 1662/1720
Extracting features from sample 1663/1720
Extracting features from sample 1664/1720
Extracting features from sample 1665/1720
Extracting features from sample 1666/1720
Extracting features from sample 1667/1720
Extracting features from sample 1668/1720
Extracting features from sample 1669/1720
Extracting features from sample 1670/1720
Extracting features from sample 1671/1720
Extracting features from sample 1672/1720
Extracting features from sample 1673/1720
Extracting features from sample 1674/1720
Extracting features from sample 1675/1720
Extracting features from sample 1676/1720
Extracting features from sample 1677/1720
Extracting features from sample 1678/1720
Extracting features from sample 1679/1720
Extracting features from sample 1680/1720
Extracting features from sample 1681/1720
Extracting features from sample 1682/1720
Extracting features from sample 1683/1720
Extracting features from sample 1684/1720
Extracting features from sample 1685/1720
Extracting features from sample 1686/1720
Extracting features from sample 1687/1720
Extracting features from sample 1688/1720
Extracting features from sample 1689/1720
Extracting features from sample 1690/1720
Extracting features from sample 1691/1720
Extracting features from sample 1692/1720
Extracting features from sample 1693/1720
Extracting features from sample 1694/1720
Extracting features from sample 1695/1720
Extracting features from sample 1696/1720
Extracting features from sample 1697/1720
Extracting features from sample 1698/1720
Extracting features from sample 1699/1720
Extracting features from sample 1700/1720
Extracting features from sample 1701/1720
Extracting features from sample 1702/1720
Extracting features from sample 1703/1720
Extracting features from sample 1704/1720
Extracting features from sample 1705/1720
Extracting features from sample 1706/1720
Extracting features from sample 1707/1720
Extracting features from sample 1708/1720
Extracting features from sample 1709/1720
Extracting features from sample 1710/1720
Extracting features from sample 1711/1720
Extracting features from sample 1712/1720
Extracting features from sample 1713/1720
Extracting features from sample 1714/1720
Extracting features from sample 1715/1720
Extracting features from sample 1716/1720
Extracting features from sample 1717/1720
Extracting features from sample 1718/1720
Extracting features from sample 1719/1720
Time taken to calculate features: 1115.64 seconds
X.head()
Absolute energy | Area under the curve | Autocorrelation | Average power | Centroid | ECDF Percentile Count_0 | ECDF Percentile Count_1 | ECDF Percentile_0 | ECDF Percentile_1 | ECDF_0 | ... | Wavelet variance_1 | Wavelet variance_2 | Wavelet variance_3 | Wavelet variance_4 | Wavelet variance_5 | Wavelet variance_6 | Wavelet variance_7 | Wavelet variance_8 | Zero crossing rate | source_type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000 | 0.0 | 0.0 | 0.000000 | 0.000000 | 0.000067 | ... | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.0 | surface_event |
1 | 2.325603e+09 | 5.627850e+04 | 2.325603e+09 | 1.550402e+07 | 76.418530 | 3000.0 | 12000.0 | 292.999790 | 450.250905 | 0.000067 | ... | 6.678689e+02 | 1.055538e+03 | 2.530908e+03 | 5.790352e+03 | 1.165462e+04 | 2.118641e+04 | 3.548474e+04 | 5.549514e+04 | 28.0 | surface_event |
2 | 8.705101e+11 | 7.477590e+05 | 8.705101e+11 | 5.803400e+09 | 74.967691 | 3000.0 | 12000.0 | 2434.988468 | 5493.021391 | 0.000067 | ... | 9.263918e+07 | 2.386667e+08 | 2.936940e+08 | 2.466776e+08 | 1.717919e+08 | 1.109657e+08 | 6.954319e+07 | 4.344068e+07 | 258.0 | surface_event |
3 | 9.606099e+11 | 1.168706e+06 | 9.606099e+11 | 6.404066e+09 | 74.660640 | 3000.0 | 12000.0 | -9228.169002 | -6414.699254 | 0.000067 | ... | 2.431281e+06 | 7.334504e+06 | 1.268369e+07 | 1.649068e+07 | 1.778231e+07 | 1.683463e+07 | 1.469724e+07 | 1.235497e+07 | 16.0 | surface_event |
4 | 3.595338e+11 | 7.343233e+05 | 3.595338e+11 | 2.396892e+09 | 74.976185 | 3000.0 | 12000.0 | -4927.503218 | -4863.251218 | 0.000067 | ... | 4.896885e+03 | 1.023186e+04 | 1.774939e+04 | 2.750474e+04 | 3.936635e+04 | 5.330725e+04 | 6.934682e+04 | 8.750847e+04 | 0.0 | surface_event |
5 rows × 390 columns
New DataFrame Clean up#
Removing the samples with NaN or Infinity
print(f'no of samples in the dataframe:{X.shape[0]}')
# Replace infinities with NaN
new_X = X.replace([np.inf, -np.inf], np.nan, inplace= False)
# Drop rows with NaN values
new_X = new_X.dropna(inplace= False)
print(f'no of samples in the new dataframe:{new_X.shape[0]}')
no of samples in the dataframe:1720
no of samples in the new dataframe:1717
X.head()
Absolute energy | Area under the curve | Autocorrelation | Average power | Centroid | ECDF Percentile Count_0 | ECDF Percentile Count_1 | ECDF Percentile_0 | ECDF Percentile_1 | ECDF_0 | ... | Wavelet variance_1 | Wavelet variance_2 | Wavelet variance_3 | Wavelet variance_4 | Wavelet variance_5 | Wavelet variance_6 | Wavelet variance_7 | Wavelet variance_8 | Zero crossing rate | source_type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000 | 0.0 | 0.0 | 0.000000 | 0.000000 | 0.000067 | ... | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.0 | surface_event |
1 | 2.325603e+09 | 5.627850e+04 | 2.325603e+09 | 1.550402e+07 | 76.418530 | 3000.0 | 12000.0 | 292.999790 | 450.250905 | 0.000067 | ... | 6.678689e+02 | 1.055538e+03 | 2.530908e+03 | 5.790352e+03 | 1.165462e+04 | 2.118641e+04 | 3.548474e+04 | 5.549514e+04 | 28.0 | surface_event |
2 | 8.705101e+11 | 7.477590e+05 | 8.705101e+11 | 5.803400e+09 | 74.967691 | 3000.0 | 12000.0 | 2434.988468 | 5493.021391 | 0.000067 | ... | 9.263918e+07 | 2.386667e+08 | 2.936940e+08 | 2.466776e+08 | 1.717919e+08 | 1.109657e+08 | 6.954319e+07 | 4.344068e+07 | 258.0 | surface_event |
3 | 9.606099e+11 | 1.168706e+06 | 9.606099e+11 | 6.404066e+09 | 74.660640 | 3000.0 | 12000.0 | -9228.169002 | -6414.699254 | 0.000067 | ... | 2.431281e+06 | 7.334504e+06 | 1.268369e+07 | 1.649068e+07 | 1.778231e+07 | 1.683463e+07 | 1.469724e+07 | 1.235497e+07 | 16.0 | surface_event |
4 | 3.595338e+11 | 7.343233e+05 | 3.595338e+11 | 2.396892e+09 | 74.976185 | 3000.0 | 12000.0 | -4927.503218 | -4863.251218 | 0.000067 | ... | 4.896885e+03 | 1.023186e+04 | 1.774939e+04 | 2.750474e+04 | 3.936635e+04 | 5.330725e+04 | 6.934682e+04 | 8.750847e+04 | 0.0 | surface_event |
5 rows × 390 columns
Explore correlation among features#
import seaborn as sns
import matplotlib.pyplot as plt
# Compute pairwise correlation of columns
corr_matrix = new_X.drop('source_type',axis=1).corr().abs()
# Create a mask to only show the lower triangle of the matrix (since it's mirrored around its
# top-left to bottom-right diagonal)
mask = np.triu(np.ones_like(corr_matrix, dtype=bool))
# Draw the heatmap with the mask
plt.figure(figsize=(15, 10))
sns.heatmap(corr_matrix, mask=mask, cmap='coolwarm', vmax=1, vmin=-1, center=0, square=True, linewidths=.5,
#cbar_kws={"shrink": .5},
annot= False)
plt.show()
Exploring the feature space for classification purpose#
Here we will plot distributions of certain features among the four classes. And we will explore what features are most correlated with each others in each of the categories.
def plot_feature_histograms(new_X, feature):
# Get unique source types
source_types = new_X['source_type'].unique()
# Define colorblind-friendly palette
colors = sns.color_palette('colorblind')
for i, source_type in enumerate(source_types):
# Select data for this source type
data = new_X[new_X['source_type'] == source_type][feature]
# Plot histogram for this source type
plt.hist(np.log10(data), color=colors[i % len(colors)], alpha=0.5, label=source_type)
# Add title
plt.title(f'np.log10({feature})')
# Add x-axis label
plt.xlabel(f'np.log10({feature})')
# Add y-axis label
plt.ylabel('Count')
# Add legend
plt.legend()
# Show plot
plt.show()
feature = 'Area under the curve'
plot_feature_histograms(new_X, feature)
feature = 'Kurtosis'
plot_feature_histograms(new_X, feature)
feature = 'Spectral variation'
plot_feature_histograms(new_X, feature)
/Users/marinedenolle/opt/miniconda3/envs/mlgeo/lib/python3.9/site-packages/pandas/core/arraylike.py:396: RuntimeWarning: invalid value encountered in log10
result = getattr(ufunc, method)(*inputs, **kwargs)
Student exercise#
Which of the features will be best to classify among the event type classes?