Вопрос или проблема
Я работаю с набором данных о качестве красного вина по этой ссылке. Я пытаюсь проверить корреляцию с помощью точечной диаграммы, но, похоже, она не является линейной.
Я применил этапы предобработки
ниже:
- Стандартизатор, так как диапазон значений во всех столбцах был разным.
- Обработка выбросов
Код стандартизатора выглядит следующим образом:
df_red = pd.read_csv('wine+quality/winequality-red.csv', sep=';')
def preprocess_data(df): # Пытаюсь стандартизировать данные, так как столбцы, вероятно, имеют разные диапазоны.
res_df = df.copy()
std = StandardScaler()
for i in list(res_df.columns):
res_df[i]= std.fit_transform(res_df[[i]].values)
return res_df
encoded_df = preprocess_data(df_red)
Исходные данные:
Данные выглядят следующим образом после применения стандартизатора:
Где quality
является целевой переменной.
Теперь ниже представлен мой код для обработки выбросов:
Q1 = encoded_df['fixed acidity'].quantile(0.25)
Q3 = encoded_df['fixed acidity'].quantile(0.75)
IQR = Q3 - Q1
LL = Q1 - 1.5 * IQR
UL = Q3 + 1.5 * IQR
ul_outlier_count = encoded_df[encoded_df['fixed acidity'] > UL].shape[0]
ll_outlier_count = encoded_df[encoded_df['fixed acidity'] < LL].shape[0]
total_outliers = ul_outlier_count + ll_outlier_count
perc_outliers = total_outliers * 100 / encoded_df.shape[0]
print(f'Количество выбросов UL: {ul_outlier_count} | Количество выбросов LL: {ll_outlier_count} | Общее количество выбросов: {total_outliers} | Процент выбросов: {perc_outliers}')
# так как мои выбросы составляют менее 5%
encoded_df.loc[encoded_df['fixed acidity'] > UL] = UL
encoded_df.loc[encoded_df['fixed acidity'] < LL] = LL
Итак, ниже представлен мой boxplot
до обработки выбросов:
Ниже представлен мой boxplot
после обработки выбросов:
Теперь я использовал pair plot
, чтобы определить, какая функция сильно коррелирует с целью, чтобы я мог использовать эту функцию для обучения модели.
Итак, глядя на этот pair plot
, могу ли я сказать, что данные не подходят для линейной регрессии
? Поскольку данные не подходят для линейной регрессии
, они также не будут подходить для логистической регрессии
, так как в логистической регрессии
сначала нужно создать модель линейной регрессии, а затем передать эту модель в функцию sigmoid
/logit
внутренно.
Или мне нужно получить больше признаков для обучения? Я не думаю, что признаки как-либо связаны с целевой переменной.
Ответ или решение
Подходит ли набор данных для линейной и логистической регрессии?
Ваша работа с набором данных о качестве красного вина подразумевает применение методов линейной и логистической регрессии для анализа связи между признаками и целевой переменной. Однако, чтобы определить, подходит ли данный набор данных для этих методов, необходимо учитывать несколько аспектов.
1. Качество данных и предварительная обработка
Вы уже применили некоторые важные этапы предварительной обработки данных, такие как стандартизация и обработка выбросов с использованием метода IQR. Эти шаги помогают привести данные к единому масштабу и улучшают их качество, что является важным условием для успешного применения методов регрессии.
Стандартизация данных позволяет избежать искажений, связанных с различиями в масштабах числовых признаков. Кроме того, вы отметили, что процент выбросов менее 5%, что обычно считается приемлемым значением и не должно существенно повлиять на результаты моделирования.
2. Анализ зависимости между переменными
Вы упомянули о проведении анализа зависимости с помощью графиков рассеяния и парных графиков, что является правильным подходом. На основании этих визуальных анализов можно сделать вывод о наличии или отсутствии линейной зависимости между признаками и целевой переменной, которая характеризует качество вина.
Если scatter plot показывает отсутствие линейной зависимости, это может указывать на то, что линейная регрессия не будет адекватной моделью. Линейная регрессия предполагает, что зависимость между независимыми и зависимой переменной может быть аппроксимирована линейной функцией. Если данные имеют нелинейные зависимости, стоит рассмотреть возможность использования полиномиальной регрессии или других методов моделирования, таких как деревья решений или случайные леса.
3. Логистическая регрессия
Что касается логистической регрессии, важно помнить, что этот метод применяется для предсказания бинарных результатов. Если ваша целевая переменная "quality" представляет собой категориальное значение (например, качество вина от 1 до 10), то вам потребуется либо привести ее к бинарному виду, либо использовать другие методы. Логистическая регрессия по сути строит линейную модель для предсказания вероятности принадлежности к классу и в этом контексте важно наличие линейной зависимости между признаками и логитом вероятности. Если линейная зависимость отсутствует, результат будет ненадежен.
4. Выбор дополнительных признаков
Вы также упомянули возможность недостатка признаков, что может оказать влияние на качество модели. Важно провести исследование признаков, чтобы определить, какие из них имеют наибольшее влияние на целевую переменную. Это можно сделать с помощью методов отбора признаков, таких как Lasso или Recursive Feature Elimination (RFE). Добавление или исключение определенных признаков может существенно улучшить качество модели.
Заключение
Подводя итог, можно сказать, что набор данных по качеству красного вина может не подходить для линейной регрессии, если визуальный анализ демонстрирует отсутствие линейных зависимостей. Это также может ограничить использование логистической регрессии, если целевая переменная не преобразована в бинарный формат. Рекомендуется исследовать дополнительные методы обработки данных и рассмотреть возможность применения более сложных моделей, которые лучше справляются с нелинейными зависимостями. Это обеспечит более точные и надежные результаты анализа.