Samplers
Used to remove outliers and noisy data before classification. Samplers are useful in improving the robustness of the model.
Copyright 2017-2024 SensiML Corporation
This file is part of SensiML™ Piccolo AI™.
SensiML Piccolo AI is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
SensiML Piccolo AI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with SensiML Piccolo AI. If not, see <https://www.gnu.org/licenses/>.
-
Isolation Forest Filtering
Isolation Forest Algorithm returns the anomaly score of each sample using the IsolationForest algorithm. The “Isolation Forest” isolates observations by randomly selecting a feature and then randomly selecting a split value between the maximum and minimum values of the selected feature.
- Parameters
input_data – Dataframe, feature set that is results of generator_set or feature_selector
label_column (str) – Label column name.
filtering_label – List<String>, List of classes. if it is not defined, it use all classes.
feature_columns – List<String>, List of features. if it is not defined, it uses all features.
outliers_fraction (float) – Define the ratio of outliers.
assign_unknown (bool) – Assign unknown label to outliers.
- Returns
DataFrame containing features without outliers and noise.
Examples
>>> client.pipeline.reset(delete_cache=False) >>> df = client.datasets.load_activity_raw() >>> client.pipeline.set_input_data('test_data', df, force=True, data_columns = ['accelx', 'accely', 'accelz'], group_columns = ['Subject','Class'], label_column = 'Class') >>> client.pipeline.add_feature_generator([{'name':'Downsample', 'params':{"columns": ['accelx','accely','accelz'], "new_length": 5 }}]) >>> results, stats = client.pipeline.execute() # List of all data indices before the filtering algorithm >>> results.index.tolist() Out: [0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> client.pipeline.add_transform("Isolation Forest Filtering", params={ "outliers_fraction": 0.01})
>>> results, stats = client.pipeline.execute() # List of all data indices after the filtering algorithm >>>results.index.tolist() Out: [0, 1, 2, 3, 4, 5]
-
Local Outlier Factor Filtering
The local outlier factor (LOF) to measure the local deviation of a given data point with respect to its neighbors by comparing their local density.
The LOF algorithm is an unsupervised outlier detection method which computes the local density deviation of a given data point with respect to its neighbors. It considers as outlier samples that have a substantially lower density than their neighbors.
- Parameters
input_data – Dataframe, feature set that is results of generator_set or feature_selector
label_column (str) – Label column name.
filtering_label – List<String>, List of classes. if it is not defined, it use all classes.
feature_columns – List<String>, List of features. if it is not defined, it uses all features.
outliers_fraction (float) – Define the ratio of outliers.
number_of_neighbors (int) – Number of neighbors for a vector.
norm (string) – Metric that will be used for the distance computation.
assign_unknown (bool) – Assign unknown label to outliers.
- Returns
DataFrame containing features without outliers and noise.
Examples
>>> client.pipeline.reset(delete_cache=False) >>> df = client.datasets.load_activity_raw() >>> client.pipeline.set_input_data('test_data', df, force=True, data_columns = ['accelx', 'accely', 'accelz'], group_columns = ['Subject','Class'], label_column = 'Class') >>> client.pipeline.add_feature_generator([{'name':'Downsample', 'params':{"columns": ['accelx','accely','accelz'], "new_length": 5 }}]) >>> results, stats = client.pipeline.execute() # List of all data indices before the filtering algorithm >>> results.index.tolist() Out: [0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> client.pipeline.add_transform("Local Outlier Factor Filtering", params={"outliers_fraction": 0.05, "number_of_neighbors": 5})
>>> results, stats = client.pipeline.execute() # List of all data indices after the filtering algorithm >>>results.index.tolist() Out: [0, 1, 2, 3, 4, 5]
-
One Class SVM filtering
Unsupervised Outlier Detection. Estimate the support of a high-dimensional distribution. The implementation is based on libsvm.
- Parameters
input_data – Dataframe, feature set that is results of generator_set or feature_selector
label_column (str) – Label column name.
filtering_label – List<String>, List of classes. if it is not defined, it use all classes.
feature_columns – List<String>, List of features. if it is not defined, it uses all features.
outliers_fraction (float) – Define the ratio of outliers.
kernel (str) – Specifies the kernel type to be used in the algorithm. It must be one of ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’.
assign_unknown (bool) – Assign unknown label to outliers.
- Returns
DataFrame containing features without outliers and noise.
Examples
>>> client.pipeline.reset(delete_cache=False) >>> df = client.datasets.load_activity_raw() >>> client.pipeline.set_input_data('test_data', df, force=True, data_columns = ['accelx', 'accely', 'accelz'], group_columns = ['Subject','Class'], label_column = 'Class') >>> client.pipeline.add_feature_generator([{'name':'Downsample', 'params':{"columns": ['accelx','accely','accelz'], "new_length": 5 }}]) >>> results, stats = client.pipeline.execute() # List of all data indices before the filtering algorithm >>> results.index.tolist() Out: [0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> client.pipeline.add_transform("One Class SVM filtering", params={"outliers_fraction": 0.05})
>>> results, stats = client.pipeline.execute() # List of all data indices after the filtering algorithm >>>results.index.tolist() Out: [0, 1, 2, 3, 4, 5]
-
Robust Covariance Filtering
Unsupervised Outlier Detection. An object for detecting outliers in a Gaussian distributed dataset.
- Parameters
input_data – Dataframe, feature set that is results of generator_set or feature_selector
label_column (str) – Label column name.
filtering_label – List<String>, List of classes. if it is not defined, it use all classes.
feature_columns – List<String>, List of features. if it is not defined, it uses all features.
outliers_fraction (float) – An upper bound on the fraction of training errors and a lower bound of the fraction of support vectors. Should be in the interval (0, 1]. By default 0.5 will be taken.
assign_unknown (bool) – Assign unknown label to outliers.
- Returns
DataFrame containing features without outliers and noise.
Examples
>>> client.pipeline.reset(delete_cache=False) >>> df = client.datasets.load_activity_raw() >>> client.pipeline.set_input_data('test_data', df, force=True, data_columns = ['accelx', 'accely', 'accelz'], group_columns = ['Subject','Class'], label_column = 'Class') >>> client.pipeline.add_feature_generator([{'name':'Downsample', 'params':{"columns": ['accelx','accely','accelz'], "new_length": 5 }}]) >>> results, stats = client.pipeline.execute() # List of all data indices before the filtering algorithm >>> results.index.tolist() Out: [0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> client.pipeline.add_transform("Robust Covariance Filtering", params={"outliers_fraction": 0.05})
>>> results, stats = client.pipeline.execute() # List of all data indices after the filtering algorithm >>>results.index.tolist() Out: [0, 1, 2, 3, 4, 5]
-
Sample By Metadata
Select rows from the input DataFrame based on a metadata column. Rows that have a metadata value that is in the values list will be returned.
- Parameters
input_data (DataFrame) – Input DataFrame.
metadata_name (str) – Name of the metadata column to use for sampling.
metadata_values (list[str]) – List of values of the named column for which to select rows of the input data.
- Returns
The input_data DataFrame containing only the rows for which the metadata value is in the accepted list.
- Return type
DataFrame
-
Combine Labels
Select rows from the input DataFrame based on a metadata column. Rows that have a label value that is in the combined label list will be returned.
- Syntax:
- combine_labels = {‘group1’: [‘label1’, ‘label2’], ‘group2’: [‘label3’, ‘label4’],
‘group3’: [‘group5’]}
- Parameters
input_data (DataFrame) – Input DataFrame.
label_column (str) – Label column name.
combine_labels (dict) – Map of label columns to combine.
- Returns
The input_data containing only the rows for which the label value is in the combined list.
- Return type
DataFrame
-
Zscore Filter
A z-score filter is a way to standardize feature vectors by transforming each feature in the vector to have a mean of zero and a standard deviation of one. The z-score, or standard score, is a measure of how many standard deviations a data point is from the mean of the distribution. This features that have z-score outside of a cutoff threshold are removed.
- Parameters
input_data (DataFrame) – Input DataFrame.
label_column (str) – Label column name.
zscore_cutoff (int) – Cutoff for filtering features above z score.
feature_threshold (int) – The number of features in a feature vector that can be outside of the zscore_cutoff without removing the feature vector.
feature_columns (list) – List of features to filter by. If None, filters all.
assign_unknown (bool) – Assign unknown label to outliers.
- Returns
- The filtered DataFrame containing only the rows for which the metadata value is in
the accepted list.
- Return type
DataFrame
Examples
>>> client.pipeline.reset(delete_cache=False) >>> df = client.datasets.load_activity_raw() >>> client.pipeline.set_input_data('test_data', df, force=True, data_columns = ['accelx', 'accely', 'accelz'], group_columns = ['Subject','Class'], label_column = 'Class') >>> client.pipeline.add_feature_generator([{'name':'Downsample', 'params':{"columns": ['accelx','accely','accelz'], "new_length": 5 }}]) >>> results, stats = client.pipeline.execute() # List of all data indices before the filtering algorithm >>> results.index.tolist() Out: [0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> client.pipeline.add_transform("Zscore Filter", params={"zscore_cutoff": 3, "feature_threshold": 1})
>>> results, stats = client.pipeline.execute() # List of all data indices after the filtering algorithm >>>results.index.tolist() Out: [0, 1, 2, 3, 4, 5]
-
Sigma Outliers Filtering
A sigma outlier filter algorithm is a technique used to identify and remove outliers from feature vectors based on their deviation from the mean. In this algorithm, an outlier is defined as a data point that falls outside a certain number of standard deviations (sigma) from the mean of the distribution.
- Parameters
input_data (DataFrame) – The feature set that is a result of either a generator_set or feature_selector.
label_column (str) – The label column name.
filtering_label (str) – List of classes that will be filtered. If it is not defined, all classes will be filtered.
feature_columns (list of str) – List of features. If it is not defined, it uses all features.
sigma_threshold (float) – Defines the ratio of outliers.
assign_unknown (bool) – Assigns an unknown label to outliers.
- Returns
The filtered DataFrame containing features without outliers and noise.
Examples
client.pipeline.reset(delete_cache=False) df = client.datasets.load_activity_raw() client.pipeline.set_input_data('test_data', df, force=True, data_columns = ['accelx', 'accely', 'accelz'], group_columns = ['Subject','Class'], label_column = 'Class') client.pipeline.add_feature_generator([{'name':'Downsample', 'params':{"columns": ['accelx','accely','accelz'], "new_length": 5 }}]) results, stats = client.pipeline.execute() # List of all data indices before the filtering algorithm results.index.tolist() # Out: # [0, 1, 2, 3, 4, 5, 6, 7, 8] client.pipeline.add_transform("Sigma Outliers Filtering", params={ "sigma_threshold": 1.0 }) results, stats = client.pipeline.execute() # List of all data indices after the filtering algorithm results.index.tolist() # Out: # [0, 1, 2, 3, 4, 5]
- Return type
DataFrame
Sampling Techniques for Handling Imbalanced Data sigma_outliers_filtering
Copyright 2017-2024 SensiML Corporation
This file is part of SensiML™ Piccolo AI™.
SensiML Piccolo AI is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
SensiML Piccolo AI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with SensiML Piccolo AI. If not, see <https://www.gnu.org/licenses/>.
-
Combine Labels
Select rows from the input DataFrame based on a metadata column. Rows that have a label value that is in the combined label list will be returned.
- Syntax:
- combine_labels = {‘group1’: [‘label1’, ‘label2’], ‘group2’: [‘label3’, ‘label4’],
‘group3’: [‘group5’]}
- Parameters
input_data (DataFrame) – Input DataFrame.
label_column (str) – Label column name.
combine_labels (dict) – Map of label columns to combine.
- Returns
The input_data containing only the rows for which the label value is in the combined list.
- Return type
DataFrame
-
Undersample Majority Classes
Create a balanced data set by undersampling the majority classes using random sampling without replacement.
- Parameters
input_data (DataFrame) – input DataFrame
label_column (str) – The column to split against
target_class_size (int) – Specifies the size of the minimum class to use, if None we will use the min class size. If size is greater than min class size we use min class size (default: None)
seed (int) – Specifies a random seed to use for sampling
maximum_samples_size_per_class (int) – Specifies the size of the maximum class to use per class,
- Returns
DataFrame containing undersampled classes
Sampling Techniques for Augmenting Data Sets
Copyright 2017-2024 SensiML Corporation
This file is part of SensiML™ Piccolo AI™.
SensiML Piccolo AI is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
SensiML Piccolo AI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with SensiML Piccolo AI. If not, see <https://www.gnu.org/licenses/>.
-
Pad Segment
Pad a segment so that its length is equal to a specific sequence length
- Parameters
input_data (DataFrame) – input DataFrame
group_columns (str) – The column to group by against (should 283 SegmentID)
sequence_length (int) – Specifies the size of the minimum class to use, if None we will use the min class size. If size is greater than min class size we use min class size (default: None)
noise_level (int) – max amount of noise to add to augmentation
- Returns
DataFrame containing padded segments
-
Resampling by Majority Vote
For each group, perform max pooling on the specified metadata_name column and set the value of that metadata column to the maximum occurring value.
- Parameters
input_data (DataFrame) – Input DataFrame.
group_columns (list) – Columns to group over.
metadata_name (str) – Name of the metadata column to use for sampling.
- Returns
The modified input_data DataFrame with metadata_name column being modified by max pooling.
- Return type
DataFrame