** Описание проблемы: **
В Цена дома Kaggle набор данных, я пытаюсь использовать NeighborHood
в качестве номинальной функции (возможно, но пока предполагается, что она номинальная). Ниже представлены результаты 25 levels
:
array(['CollgCr', 'Veenker', 'Crawfor', 'NoRidge', 'Mitchel', 'Somerst', 'NWAmes', 'OldTown', 'BrkSide', 'Sawyer', 'NridgHt', 'NAmes', 'SawyerW', 'IDOTRR', 'MeadowV', 'Edwards', 'Timber', 'Gilbert', 'StoneBr', 'ClearCr', 'NPkVill', 'Blmngtn', 'BrDale', 'SWISU', 'Blueste'], dtype=object)
sb.violinplot(x=houseData['Neighborhood'], y=response)
. Чтобы уменьшить уровни, скажем ниже 10, я пытаюсь сгруппировать уровни на основе медианы распределения каждого уровня. Например, распределения NridgHt
и NoRidge
a, видимые в violinplot
, почти одинаковы. Мне кажется, что они не должны быть двух разных уровней, а объединены в один уровень: NridgHt_NoRidge
.
Явные вопросы:
- Есть ли лучший способ получить медиану
logSalePrice
для каждого уровня, кроме этого:
response = np.log(houseData['SalePrice'])
feature = pd.concat([houseData, response], axis = 1)
levels = feature.groupby(['Neighborhood']).describe()
median = levels['logSalePrice', '50%'].sort_values(ascending=False)
median
- Возможно ли групповые уровни основаны на медиане? (псевдокод ниже)
if abs(median('CollgCr') - median('Veenker')) < threshold:
merge('CollgCr', 'Veenker')
Ожидаемый результат - 10 уровней в houseData['Neighborhood'].unique()
, причем на каждом уровне медианы имеют как минимум пороговое значение.
Надеюсь, я четко объяснил свою проблему, кто-то может указать мне правильное направление?