diff --git a/cpp_package/src/inc/data_filter.h b/cpp_package/src/inc/data_filter.h
index 096af40a3..de66122de 100644
--- a/cpp_package/src/inc/data_filter.h
+++ b/cpp_package/src/inc/data_filter.h
@@ -193,7 +193,8 @@ class DataFilter
* @return oxygen level
*/
static double get_oxygen_level (double *ppg_ir, double *ppg_red, int data_len,
- int sampling_rate, double coef1 = 0.0, double coef2 = -37.663, double coef3 = 114.91);
+ int sampling_rate, double coef1 = 1.5958422, double coef2 = -34.6596622,
+ double coef3 = 112.6898759);
/**
* calculate heart rate
* @param ppg_ir input 1d array
diff --git a/csharp_package/brainflow/brainflow/data_filter.cs b/csharp_package/brainflow/brainflow/data_filter.cs
index 503ce7141..b8f14f429 100644
--- a/csharp_package/brainflow/brainflow/data_filter.cs
+++ b/csharp_package/brainflow/brainflow/data_filter.cs
@@ -306,7 +306,7 @@ public static double get_railed_percentage (double[] data, int gain)
/// approximation coef
/// /// intercept for approximation
/// stddev
- public static double get_oxygen_level (double[] ppg_ir, double[] ppg_red, int sampling_rate, double coef1 = 0.0, double coef2 = -37.663, double coef3 = 114.91)
+ public static double get_oxygen_level (double[] ppg_ir, double[] ppg_red, int sampling_rate, double coef1 = 1.5958422, double coef2 = -34.6596622, double coef3 = 112.6898759)
{
if (ppg_ir.Length != ppg_red.Length)
{
diff --git a/java_package/brainflow/src/main/java/brainflow/DataFilter.java b/java_package/brainflow/src/main/java/brainflow/DataFilter.java
index e337dda18..613729b04 100644
--- a/java_package/brainflow/src/main/java/brainflow/DataFilter.java
+++ b/java_package/brainflow/src/main/java/brainflow/DataFilter.java
@@ -251,7 +251,7 @@ public static double get_oxygen_level (double[] ppg_ir, double[] ppg_red, int sa
*/
public static double get_oxygen_level (double[] ppg_ir, double[] ppg_red, int sampling_rate) throws BrainFlowError
{
- return get_oxygen_level (ppg_ir, ppg_red, sampling_rate, 0.0, -37.663, 114.91);
+ return get_oxygen_level (ppg_ir, ppg_red, sampling_rate, 1.5958422, -34.6596622, 112.6898759);
}
/**
diff --git a/julia_package/brainflow/src/data_filter.jl b/julia_package/brainflow/src/data_filter.jl
index 145ca3445..fbfe5a0d2 100644
--- a/julia_package/brainflow/src/data_filter.jl
+++ b/julia_package/brainflow/src/data_filter.jl
@@ -253,7 +253,7 @@ end
return output[1]
end
-@brainflow_rethrow function get_oxygen_level(ppg_ir, ppg_red, sampling_rate::Integer, coef1=0.0, coef2=-37.663, coef3=114.91)
+@brainflow_rethrow function get_oxygen_level(ppg_ir, ppg_red, sampling_rate::Integer, coef1=1.5958422, coef2=-34.6596622, coef3=112.6898759)
if length(ppg_ir) != length(ppg_red)
throw(BrainFlowError(string("invalid size", INVALID_ARGUMENTS_ERROR), Integer(INVALID_ARGUMENTS_ERROR)))
end
diff --git a/python_package/brainflow/data_filter.py b/python_package/brainflow/data_filter.py
index 1d5141170..c9effa582 100644
--- a/python_package/brainflow/data_filter.py
+++ b/python_package/brainflow/data_filter.py
@@ -771,7 +771,7 @@ def get_railed_percentage(cls, data: NDArray[Float64], gain: int):
@classmethod
def get_oxygen_level(cls, ppg_ir: NDArray[Float64], ppg_red: NDArray[Float64], sampling_rate: int,
- coef1=0.0, coef2=-37.663, coef3=114.91):
+ coef1=1.5958422, coef2=-34.6596622, coef3=112.6898759):
"""get oxygen level from ppg
:param ppg_ir: input array
diff --git a/src/ml/generated/mindfulness_model.cpp b/src/ml/generated/mindfulness_model.cpp
index 2dfb82d23..56e8c9ad1 100644
--- a/src/ml/generated/mindfulness_model.cpp
+++ b/src/ml/generated/mindfulness_model.cpp
@@ -1,6 +1,6 @@
#include "mindfulness_model.h"
// clang-format off
-const double mindfulness_coefficients[5] = {2.6338144674136394,4.006742906593334,-34.51389221061297,1.1950604401540308,35.78022137767881};
-double mindfulness_intercept = 0.364078;
+const double mindfulness_coefficients[5] = {-1.4765769283767163,2.6620930328900974,-31.43942997194057,9.464066586727622,45.512106420941684};
+double mindfulness_intercept = 0.000000;
// clang-format on
diff --git a/src/ml/train/logreg_mindfulness.onnx b/src/ml/train/logreg_mindfulness.onnx
index 820ced959..e63a31b3c 100644
Binary files a/src/ml/train/logreg_mindfulness.onnx and b/src/ml/train/logreg_mindfulness.onnx differ
diff --git a/src/ml/train/train_classifiers.py b/src/ml/train/train_classifiers.py
index a76922b25..bd00e12f1 100644
--- a/src/ml/train/train_classifiers.py
+++ b/src/ml/train/train_classifiers.py
@@ -42,6 +42,8 @@ def prepare_data(first_class, second_class, blacklisted_channels=None):
dataset_y = list()
for data_type in (first_class, second_class):
for file in glob.glob(os.path.join('data', data_type, '*', '*.csv')):
+ data_x_temp = list()
+ data_y_temp = list()
logging.info(file)
board_id = os.path.basename(os.path.dirname(file))
try:
@@ -58,13 +60,17 @@ def prepare_data(first_class, second_class, blacklisted_channels=None):
feature_vector = bands[0]
feature_vector = feature_vector.astype(float)
dataset_x.append(feature_vector)
+ data_x_temp.append(feature_vector)
if data_type == first_class:
dataset_y.append(0)
+ data_y_temp.append(0)
else:
dataset_y.append(1)
+ data_y_temp.append(0)
cur_pos = cur_pos + int(window_size * overlaps[num] * sampling_rate)
except Exception as e:
logging.error(str(e), exc_info=True)
+ print_dataset_info((data_x_temp, data_y_temp))
logging.info('1st Class: %d 2nd Class: %d' % (len([x for x in dataset_y if x == 0]), len([x for x in dataset_y if x == 1])))
@@ -115,7 +121,7 @@ def print_dataset_info(data):
def train_regression_mindfulness(data):
model = LogisticRegression(solver='liblinear', max_iter=4000,
- penalty='l2', random_state=2, fit_intercept=True, intercept_scaling=0.2)
+ penalty='l2', random_state=2, fit_intercept=False, intercept_scaling=3)
logging.info('#### Logistic Regression ####')
scores = cross_val_score(model, data[0], data[1], cv=5, scoring='f1_macro', n_jobs=8)
logging.info('f1 macro %s' % str(scores))
@@ -207,14 +213,14 @@ def main():
dataset_y = pickle.load(f)
data = dataset_x, dataset_y
else:
- data = prepare_data('relaxed', 'focused', blacklisted_channels={'T3', 'T4'})
+ data = prepare_data('relaxed', 'focused')
print_dataset_info(data)
train_regression_mindfulness(data)
- train_svm_mindfulness(data)
- train_knn_mindfulness(data)
- train_random_forest_mindfulness(data)
- train_mlp_mindfulness(data)
- train_stacking_classifier(data)
+ #train_svm_mindfulness(data)
+ #train_knn_mindfulness(data)
+ #train_random_forest_mindfulness(data)
+ #train_mlp_mindfulness(data)
+ #train_stacking_classifier(data)
if __name__ == '__main__':