Стандартизация только числовых столбцов
У меня есть 2 функции для стандартизации моих данных, например:
def standartChanger(dataFrame):
stdSc = preprocessing.StandardScaler()
cols = dataFrame.columns
dfscaled = stdSc.fit_transform(dataFrame)
dfscaled = pd.DataFrame(dfscaled, columns=cols)
return dfscaled, stdSc
def standartChangerwithMeanVar(dataFrame,stdSc):
cols = dataFrame.columns
dataFrame = stdSc.transform(dataFrame)
dfscaled = pd.DataFrame(dataFrame, columns=cols)
return dfscaled
Один для стандартизации поезда, а другой для тестирования. У меня есть несколько фиктивных переменных в моем фрейме данных, которые я не хочу стандартизировать. Теперь мне нужно изменить эти функции, чтобы они не касались фиктивных переменных, равных 0-1. Как я могу это сделать?
Кроме того, в линейной регрессии у меня есть проблема, что коэффициенты моих фиктивных переменных слишком велики, что создает бессмысленные точки в прогнозах. У тебя есть идеи на этот счет?
1 ответ
Я бы предложил использовать MinMaxScaler, так как он оставит ваши фиктивные переменные такими, какие они есть, поскольку они уже "нормализованы".
Если вы решаете задачу регрессии, вам, возможно, следует попытаться создать модель, которая штрафует большие коэффициенты, например Лассо. Что дает ценную информацию об особенностях. В регрессии лассо у вас есть гиперпараметр для настройки: альфа, так же как быстрое примечание, чем больше альфа, тем больше модель штрафует большие коэффициенты, если вы установите альфа = 0, вы вернетесь к линейной регрессии. Лассо похоже на обычную регрессию, но с альфой, которая дает более разумные оценки и позволяет избежать больших коэффициентов.