День, когда вы стали Кагглером: Часть IV Магия создания полнометражных фильмов!

Цены на жилье: передовые методы регрессии

Ссылка на блокнот Jupyter: Github

Машинное обучение 101, больше данных = больше точности. В нашем случае данные ограничены. 1460 тренировочных рядов. Тем не менее, есть потенциал для режима с использованием создания функций.

Зачем беспокоиться?

Создание признаков дает нашей модели больше информации. Возьмите пример. У нас есть две функции Date и Customer_Count. В покупательских тенденциях преобладает день недели, а не месяц. Мы создадим функцию Week_Day. В нашей модели больше полезных данных. Это приводит к лучшему результату.

Магия создания функций!

Объединение WoodDeckSF, OpenPorchSF, EnclosedPorch, 3SsnPorch, ScreenPorch и ScreenPorch

Крыльцо: Крыльцо - это крытое укрытие, прикрепленное к передней части входа в дом или здание в целом. Мы добавляем все функции Porch для создания CombinedPorch.

df_train['CombinedPorch'] = df_train['WoodDeckSF'] + df_train['OpenPorchSF'] + df_train['EnclosedPorch'] + df_train['3SsnPorch'] + df_train['ScreenPorch']
df_test['CombinedPorch'] = df_test['WoodDeckSF'] + df_test['OpenPorchSF'] + df_test['EnclosedPorch'] + df_test['3SsnPorch'] + df_test['ScreenPorch']
df_train[['WoodDeckSF','OpenPorchSF','EnclosedPorch','3SsnPorch','ScreenPorch','CombinedPorch']].head()

Объединение GrLivArea, TotalBsmtSF, GarageArea и CombinedPorch

  • GrLivArea: площадь над землей
  • TotalBsmtSF: общая площадь подвала

Добавление, чтобы получить общую жилую площадь на имущество.

df_train['TotalUsable']=df_train['GrLivArea']+df_train['TotalBsmtSF']+df_train['GarageArea']+df_train['CombinedPorch']
df_test['TotalUsable']=df_test['GrLivArea']+df_test['TotalBsmtSF']+df_test['GarageArea']+df_test['CombinedPorch']
df_train[['GrLivArea','TotalBsmtSF','GarageArea','CombinedPorch','TotalUsable']].head()

Свободная площадь на участке

LotArea – общая площадь участка. Мы вычитаем 1stFlrSF (при условии, что это площадь, занятая домом), PoolArea, GarageArea, LotFrontage и CombinedPorch из LotArea, чтобы получить общую свободную площадь.

df_train['FreeArea'] = df_train['LotArea'] - (df_train['1stFlrSF']+df_train['PoolArea'] + df_train['GarageArea']+ df_train['LotFrontage'] + df_train['CombinedPorch'])
df_test['FreeArea'] = df_test['LotArea'] - (df_test['1stFlrSF']+ df_test['PoolArea'] + df_test['GarageArea']+ df_test['LotFrontage']+df_test['CombinedPorch'])
df_train[['LotArea','1stFlrSF','PoolArea','GarageArea','LotFrontage','CombinedPorch','FreeArea']].head()

Подвальный объем

  • BsmtQual: оценивает высоту подвала.
  • TotalBsmtSF: общая площадь подвала

Умножение их для получения оценки объема

df_train['BsmtVol']=df_train['TotalBsmtSF']*df_train['BsmtQual']
df_test['BsmtVol']=df_test['TotalBsmtSF']*df_test['BsmtQual']
df_train[['TotalBsmtSF','BsmtQual','BsmtVol']].head()

Всего ванн

  • BsmtFullBath, BsmtHalfBath: полные и половинные ванны в подвале
  • FullBath, HalfBath: полные и половинные ванны над землей (или уклоном).

Объединение их для создания TotalBath

df_train['TotalBaths'] = df_train['BsmtFullBath'] + df_train['FullBath'] + 0.5*(df_train['HalfBath'] + df_train['BsmtHalfBath'])
df_test['TotalBaths'] = df_test['BsmtFullBath'] + df_test['FullBath']+0.5*(df_test['HalfBath'] + df_test['BsmtHalfBath'])
df_train[['BsmtFullBath','FullBath','HalfBath','BsmtHalfBath','TotalBaths']].head()

Взвешенная площадь подвала

  • BsmtFinSF1, BsmtFinSF2 и BsmtUnfSF: цокольный этаж в зависимости от типа отделки
  • BsmtFinType1 и BsmtFinType2: качество отделки для BsmtFinSF1 и BsmtFinSF2

Вычисление площади WeightedBsmt как BsmtFinSF1*BsmtFinType1 + BsmtFinSF2*BsmtFinType2 + BsmtUnfSF

df_train['WeightedBsmt'] = df_train['BsmtFinSF1']*df_train['BsmtFinType1'] + df_train['BsmtFinSF2']*df_train['BsmtFinType2'] + df_train['BsmtUnfSF']
df_test['WeightedBsmt'] = df_test['BsmtFinSF1']*df_test['BsmtFinType1'] + df_test['BsmtFinSF2']*df_test['BsmtFinType2'] + df_test['BsmtUnfSF']
df_train[['BsmtFinSF1','BsmtFinSF2','BsmtFinType1','BsmtFinType2','BsmtUnfSF','WeightedBsmt']].head()

Утяжеленная площадь гаража

  • GarageFinish: качество отделки гаража.
  • GarageArea: площадь гаража.

Вычислить WeightedGarageArea как GarageFinish*GarageArea

df_train['WeightedGarageArea'] = df_train['GarageArea']*df_train['GarageFinish']
df_test['WeightedGarageArea'] = df_test['GarageArea']*df_test['GarageFinish']
df_train[['GarageArea','GarageFinish','WeightedGarageArea']].head()

Взвешенная внешняя отделка

  • ExterQual: качество материала снаружи.
  • MasVnrArea: область каменной кладки
  • Кирпичная кладка: Стильная кирпичная стена

Вычисление WeightedExtern как ExterQual*MasVnrArea

df_train['WeightedExtern']=df_train['MasVnrArea']*df_train['ExterQual']
df_test['WeightedExtern']=df_test['MasVnrArea']*df_test['ExterQual']
df_train[['MasVnrArea','ExterQual','WeightedExtern']].head()

Год Сумма

  • YearBuild : год постройки
  • YearRemodAdd : год переделки

Создание YearSum как YearBuilt+YearRemodAdd. YearSum будет высоким для недавно отремонтированных или недавно построенных домов.

df_train['YearSum'] = df_train['YearBuilt']+df_train['YearRemodAdd']
df_test['YearSum'] = df_test['YearBuilt']+df_test['YearRemodAdd']
df_train[['YearBuilt','YearRemodAdd','YearSum']].head()

Утяжеленная кухня

  • KitchenQual: качество кухни
  • KitchenAbvGr: #Кухни над землей

Создание WeightedKitchen как KitchenQual*KitchenAbvGr.

df_train['WeightedKitchen'] = df_train['KitchenQual']*df_train['KitchenAbvGr']
df_test['WeightedKitchen'] = df_test['KitchenQual']*df_test['KitchenAbvGr']
df_train[['KitchenQual','KitchenAbvGr','WeightedKitchen']].head()

Матрица корреляции для новых функций

Новые функции имеют высокую корреляцию с SalePrice.

Прокомментируйте вашу интересную функцию. Далее мы переходим к обработке перекоса