SMOTE с отсутствующими значениями

Как насчет того, чтобы НЕ выбрасывать исключения и НЕ использовать медленное регулярное выражение?

return str1 != null && str2 != null 
    && typeof str1 === 'string' && typeof str2 === 'string'
    && str1.toUpperCase() === str2.toUpperCase();

Вышеприведенный фрагмент предполагает, что вы не хотите, чтобы строка была нулевой или неопределенной.

Если вы хотите совместить null / undefined, то:

return (str1 == null && str2 == null)
    || (str1 != null && str2 != null 
        && typeof str1 === 'string' && typeof str2 === 'string'
        && str1.toUpperCase() === str2.toUpperCase());

Если по какой-то причине вам небезразличен неопределенный vs null:

return (str1 === undefined && str2 === undefined)
    || (str1 === null && str2 === null)
    || (str1 != null && str2 != null 
        && typeof str1 === 'string' && typeof str2 === 'string'
        && str1.toUpperCase() === str2.toUpperCase());
3
задан Georgy 13 July 2018 в 11:57
поделиться

2 ответа

Простым примером является следующее:

# Imports
from collections import Counter
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import Imputer
from imblearn.over_sampling import SMOTE
from imblearn.pipeline import make_pipeline

# Load data
bc = load_breast_cancer()
X, y = bc.data, bc.target

# Initial number of samples per class
print('Number of samples for both classes: {} and {}.'.format(*Counter(y).values()))

# SMOTEd class distribution
print('Dataset has %s missing values.' % np.isnan(X).sum())
_, y_resampled = SMOTE().fit_sample(X, y)
print('Number of samples for both classes: {} and {}.'.format(*Counter(y_resampled).values()))

# Generate artificial missing values
X[X > 1.0] = np.nan
print('Dataset has %s missing values.' % np.isnan(X).sum())
_, y_resampled = make_pipeline(Imputer(), SMOTE()).fit_sample(X, y)
print('Number of samples for both classes: {} and {}.'.format(*Counter(y_resampled).values()))
0
ответ дан Georgios Douzas 17 August 2018 в 13:12
поделиться

SMOTE не выполняет заполнение ваших отсутствующих значений или значений NaN. Вам необходимо заполнить их, а затем подать на анализ SMOTE. Работа с отсутствующими значениями - совсем другая задача, вы можете взглянуть на Imputer из sklearn для начала. Вот еще одна запись в sklearn относительно отсутствующих значений: Ввод недостающих значений

Как только вы закончите работу с значениями NaN, затем подайте ваши измененные данные на SMOTE.

Ссылки

2
ответ дан Mohammed Kashif 17 August 2018 в 13:12
поделиться
  • 1
    Xgboost и lighgbm с отсутствующими значениями, поэтому я подумал, что возможно генерировать некоторые синтетические данные, даже если отсутствует значение. Возможно, не SMOTE, но я интуитивно думал, что может быть что-то в этом роде. Спасибо за Ваш ответ! – MJeremy 13 July 2018 в 12:55
Другие вопросы по тегам:

Похожие вопросы: