Работает ли линейная регрессия с категориальной независимой переменной и непрерывно зависимой переменной?

1

У меня есть набор данных, где:

X1 - категорически независимая переменная

X2 - непрерывная независимая переменная

y - непрерывная зависимая переменная

И я хочу использовать X1 и X2 для прогнозирования y. Является ли линейная регрессия подходящей для этого (имеет ли смысл даже регрессировать над категориальной независимой переменной?)? Если да, то как я могу использовать линейную регрессию, когда X1 является категориальной независимой переменной (например, цвет глаз)?

Должен ли я создать отдельную модель линейной регрессии для каждой из категорий в X1? Или попытайтесь создать модель с несколькими линейными регрессиями?

В режиме онлайн в основном есть ресурсы, касающиеся непрерывной независимой → непрерывной зависимости (линейная регрессия) или непрерывной независимой → категориальной зависимости (логистическая регрессия).

Было бы полезно указать на любые ресурсы/инструменты, которые могли бы мне помочь.

  • 0
    У тебя есть какой-нибудь код?
  • 0
    Нет, кроме очистки данных, чтобы начать использовать. Я просто пытаюсь выбрать лучший подход, прежде чем я начну.
Показать ещё 2 комментария
Теги:
machine-learning
linear-regression

2 ответа

0
Лучший ответ

Вы можете использовать линейную регрессию, но сначала вам нужно сначала кодировать X1 как ряд переменных.

Вот простой пример, используя метод "фиктивного кодирования":

┏━━━━━━━━━━━━┳━━━━━┳━━━━━┓
┃ Eye Colour ┃ x11 ┃ x12 ┃
┣━━━━━━━━━━━━╋━━━━━╋━━━━━┫
┃ Blue       ┃  0  ┃  0  ┃
┣━━━━━━━━━━━━╋━━━━━╋━━━━━┫
┃ Brown      ┃  1  ┃  0  ┃
┣━━━━━━━━━━━━╋━━━━━╋━━━━━┫
┃ Green      ┃  0  ┃  1  ┃
┗━━━━━━━━━━━━┻━━━━━┻━━━━━┛

Здесь статья, объясняющая различные методы кодирования:

https://stats.idre.ucla.edu/spss/faq/coding-systems-for-categorical-variables-in-regression-analysis-2/

0

При линейной регрессии с категориальными переменными вы должны быть осторожны с фиктивной переменной. Ловушка фиктивной переменной - это сценарий, в котором независимые переменные являются мультиколлинеарными - сценарий, в котором две или более переменных сильно коррелированы; Проще говоря, одну переменную можно предсказать из других. Это может привести к необычности модели, то есть ваша модель просто не будет работать. Читайте об этом здесь

Идея состоит в том, чтобы использовать фиктивную переменную с кодировкой drop_first=True, при этом будет исключен один столбец из каждой категории после преобразования категориальной переменной в фиктивные/индикаторные переменные. Делая это, вы НЕ БУДЕТЕ потерять и релевантную информацию просто потому, что весь ваш смысл в наборе данных может быть полностью объяснен остальными функциями.

Вот полный код того, как вы можете сделать это для своего набора данных жилья

Итак, у вас есть категорические особенности:

District, Condition, Material, Security, Type

И одна из числовых особенностей, которую вы пытаетесь предсказать:

Price

Сначала вам нужно разделить ваш начальный набор данных на входные переменные и прогнозирование, предполагая, что его кадр данных pandas будет выглядеть так:

Входные переменные:

X = housing[['District','Condition','Material','Security','Type']]

Прогноз:

Y = housing['Price']

Преобразуйте категориальные переменные в фиктивные/индикаторные переменные и поместите по одной в каждую категорию:

X = pd.get_dummies(data=X, drop_first=True)

Так что теперь, если вы проверите форму X с помощью drop_first=True вы увидите, что у него на 4 столбца меньше - по одному для каждой из ваших категориальных переменных.

Теперь вы можете продолжать использовать их в вашей линейной модели. Для реализации scikit-learn это может выглядеть так:

from sklearn import linear_model
from sklearn.model_selection import train_test_split
    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = .20, random_state = 40)
        regr = linear_model.LinearRegression() # Do not use fit_intercept = False if you have removed 1 column after dummy encoding
        regr.fit(X_train, Y_train)
    predicted = regr.predict(X_test)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню