Как предсказать пропущенные значения в Python, используя данные за 3 года линейной регрессии - PullRequest
0 голосов
/ 26 августа 2018

Привет, ребята, так что у меня есть данные за 3 года с 2012 по 2014, однако в 2014 году отсутствует значение (100 строк), я действительно не слишком уверен, как с этим справиться, это моепопытайтесь это сделать:

X = red2012Mob.values
y = red2014Mob.values
X = X.reshape(-1,1)
y = y.reshape(-1,1)
from sklearn.model_selection import train_test_split  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)  
from sklearn.linear_model import LinearRegression  
regressor = LinearRegression()  
regressor.fit(X_train, y_train)  
y_pred = regressor.predict(X_test)  

Я не изменяю никаких данных за 2014 год, где они имеют недостающее значение, я просто напрямую вводю их в модель

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Существует два способа:

  • Удаление экземпляров с отсутствующими данными (например, с использованием red2012Mob.dropna(), или, если это временной ряд, пропустить полные блоки отсутствующих данных, например, начать позже в 2014 г.).
  • Вменяем недостающие данные.Здесь, однако, вы не получите единый размер для всех ответов, так как это действительно зависит от ваших данных и вашей проблемы.Поскольку у вас, похоже, есть данные временных рядов, простейшие стратегии для «маленьких» дырок - это линейная или постоянная интерполяция.Если зависимость от времени не так важна, возможно, среднее значение столбца может быть хорошей стратегией.Для больших отверстий вы можете найти подходящую модель для заполнения данных.Иногда может работать «наивная» стратегия, например использование того же значения сезонности, что и раньше (например, данные последнего понедельника за текущий понедельник), или вы используете KNN Imputer (либо проверьте этот sklearn PR, либо рассмотренный пакет здесь ).Для простых стратегий в следующем выпуске sklearn есть модуль .

. На практике я обычно комбинирую методы.Например, до какого-то момента я попробую стратегии второго пункта, но если данные слишком плохие, обычно лучше иметь меньше «хороших» данных, чем большая часть вмененных данных.

0 голосов
/ 26 августа 2018

Я не знаю, есть ли у вас данные за 2013 год.Если он будет доступен, моя первая рекомендация будет также использовать это.Что касается данных для обучения, вы должны брать только данные за 2014 год с не пропущенными значениями, а затем подгонять вашу модель, используя эти значения.Получив приличную точность перекрестной проверки для модели, вы можете взять подмножество данных с пропущенными значениями за 2014 год и использовать их для прогнозирования значений за 2014 год.

Для лучшего понимания, вот небольшой фрагментПример кода для подстановки значений non nan для списка / столбца:

импортировать numpy как np
a1 = [v для v в a если не np.isnan (v)]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...