В Python - resulting train set will be empty: как "починить" размерность выборок?

Господа, вот какое дело: получаю ошибку при разделении датасета на тестовую и обучающую выборки (далее собираюсь применить метод регрессии). Ошибка намекает на пустые значения (хотя датасет виден - код его выводит):

With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empty. Adjust any of the aforementioned parameters

Сами данные взяты отсюда: https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data (train.csv).

Пошел простым путем: не стал смотреть, как заменить NaN по столбцам (хотя поначалу была мысль заполнить медианными значениями и даже реализация этого). Я сделал примитивней - удалил строки с пропусками. Получил переменную data_filtred. Далее вычленил переменные Х и y:

X = data_filtred[factor_feat.columns]  # определяем переменные X и y
y = data_filtred['SalePrice'] 

Что такое factor_feat? Это конкатенация столбцов числовых и категориальных признаков.

На следующем этапе приступил к разделению выборки на train и test. И вот здесь объявилась ошибка. Если смотрю размерность переменных, то вижу: в случае Х она составляет (0, 79), размер y - (0, ). Когда проверяю переменную y, она дает пустой список:

здесь пусто - data_filtred['SalePrice'],

здесь есть значения - data['SalePrice'].

Вот код:

# удалим пустые строки с записью NaN
data_filtred = data.dropna()

#Находим категориальные признаки
cat_feat = list(data_filtred.dtypes[data_filtred.dtypes == object].index)

#отфильтруем непрерывные признаки
num_feat = [f for f in data_filtred if f not in (cat_feat + ['Id', 'SalePrice'])]

# Смотрим, сколько у нас значений по каждому категориальному признаку
cat_nunique = data_filtred[cat_feat].nunique()                       # nunique() возвращает количество уникальных объектов
print(cat_nunique) # странно, но видим по данному принту нулевые уникальные значения; возможно, есть смысл отказаться от дальнейшего использования в обучении категориальных признаков

factor_feat = pd.concat((data_filtred[num_feat], data_filtred[cat_feat]), axis=1) # объединяем столбцы фрейма data - категориальные
                                                                  # признаки и непрерывные

X = data_filtred[factor_feat.columns]  # определяем переменные X и y
y = data_filtred['SalePrice'] 

# Разбиваем на train/test
D_train, D_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Ответы (0 шт):