День, когда вы стали Кагглером: Часть 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.
Прокомментируйте вашу интересную функцию. Далее мы переходим к обработке перекоса