房价通胀模型

人工智能 机器学习 梯度提升
2021-11-08 09:59:32

我有一组房价及其相应特征(房间、平方米等)的数据集。另一个特点是房子的出售日期。目的是创建一个模型,可以估计房子的价格,就好像它今天卖掉了一样。例如,具有一组特定功能(5 个房间,100 平方米)和今天的日期(28-1-2020)的房子,它会卖什么?时间是一个重要组成部分,因为价格会上涨(随着时间的推移而上涨)。我正在努力寻找一种方法将销售日期作为梯度提升模型中的一个特征。

我认为有几种方法:

  1. 将数据转换为整数,并将其作为特征直接包含在模型中。
  2. 创建一个单独的模型来模拟房价随时间的变化。让我们将其视为某种 AR(1) 模型。然后我可以调整所有观察到的通货膨胀,这样我们就可以得到今天的通货膨胀调整价格。这些通货膨胀调整后的价格将在特征集上进行训练。

您对这两个选项有何看法?有没有替代方法?

1个回答

销售日期与其他任何功能一样。您可以按以下方式执行此操作。我假设这些功能位于名为 df 的 pandas 数据框中,其中列日期称为日期。最简单的方法是使用 pandas to_datetime 函数。文档在这里。

def encode_dates(df, column):
    df = df.copy()
    df[column] = pd.to_datetime(df[column] )
    df[column + '_year'] = df[column].apply(lambda x: x.year)
    df[column + '_month'] = df[column].apply(lambda x: x.month)
    df[column + '_day'] = df[column].apply(lambda x: x.day)
    df = df.drop(column, axis=1)
    return df
df=encode_dates(df. 'date')

此函数将修改 df 数据框。它将创建 3 个标记为日期年、日期月和日期日的新列,并将从数据框中删除日期列。现在,这些新列以及其他功能可用于训练您的模型。