python - 使用 K 最近邻创建特征

标签 python machine-learning data-science knn nearest-neighbor

我对 Python 和机器学习比较陌生,但我一直在致力于构建抵押贷款价格的预测模型。我正在努力的地方是使用 K 最近邻算法来创建功能。

以下是我如何理解我想要完成的任务的机制:

  1. 我有两个数据文件:已售抵押贷款和已列出抵押贷款
  2. 在这两个数据文件中,我具有相同的特征(包括纬度/经度)。
  3. 我想在列出的抵押贷款中创建一个列,代表邻近地区最密切相关的房屋的中位价格。
  4. 我将使用 3 中列出的方法来创建 1-3 个月、4-6 个月、7-12 个月的专栏。
  5. 另一列是这三列的趋势。

我在 KNN 插补上找到了一些东西,但这似乎不是我要找的。

我该如何执行这个想法?是否有我可能错过的有帮助的资源?

任何指导将不胜感激。谢谢!

最佳答案

因此,据我了解,您希望使用已售抵押贷款数据拟合 KNN 模型来预测已列出抵押贷款数据的价格。 这是一个经典的 KNN 问题,您需要在“已售”数据中为“列出”数据中的每个特征向量找到最接近的特征向量,然后取这些特征向量的中值。

  • 假设 Sold 数据有 n 行,每行的特征向量为 X1,X2, ..., Xn,对应的价格为 P1, P2, ..., Pn

    X_train = [X1, X2, ..., Xn]

    y_train = [P1, P2, ..., Pn]

  • 这里注意,每个Xi本身就是一个特征向量,代表第i行

  • 现在,假设您希望在“已售出”数据中为“列出”数据中的每行提供 5 个最接近的行。因此,这里稍后可能需要优化的 KNN 模型参数是:

    NUMBER_OF_NEIGHBOURS = 5

  • 现在,训练代码将如下所示:

    从 sklearn.neighbors 导入 KNeighborsClassifier

    knn_model = KNeighborsClassifier(n_neighbors=NUMBER_OF_NEIGHBOURS)

    knn_model.fit(X_train, y_train)

  • 对于预测,假设列出的数据中有 m 行,每行的特征向量为 F1, F2, ..., Fm。需要确定相应的中位价格Z1,Z2,...,Zm。

    X_test = [F1, F2, ..., Fm]

  • 请注意,X_train 和 X_test 中的特征向量应使用相同的 Vectorizer/Transformer 进行矢量化。了解有关矢量化器的更多信息 here .

  • 预测代码将如下所示:

    y_predicted = knn_model.predict(X_test)

  • 此 y_predicted 列表的每个元素将包含(在本例中)与 y_train 最接近的 5 个价格。即:

    y_predicted = [(P11, P12, .., P15), (P21, P22, .., P25), .., (Pm1, Pm2, .., Pm5)]

  • 对于 y_predicted 的每个第 j 个元素:

    将 numpy 导入为 np

    Zj = np.median(np.array([Pj1, Pj2, .., Pj5]))

  • 因此,这样就可以找到每行Listing数据的中位价格Zj

  • 现在进入参数优化部分。 KNN 模型中唯一的超参数是 NUMBER_OF_NEIGHBOURS。您可以通过将 X_train 本身除以 80:20 的比例来找到此参数的最佳值。对 80% 的部分进行训练,对剩余的 20% 的部分进行交叉验证。一旦您确定准确度足够好,您就可以使用超参数 NUMBER_OF_NEIGHBOURS 的值对 y_test 进行预测。

  • 最后,对于按月分析,您需要创建按月模型。例如,M1 = 使用 1-3 个月的销售数据进行训练,M2 = 使用 4-6 个月的销售数据进行训练,M3 = 使用 7-12 个月的销售数据进行训练,等等。

引用:http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

关于python - 使用 K 最近邻创建特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45362482/

相关文章:

python - 从 for 循环中仅打印一次消息

tensorflow - 使用 Tensorflow 的 CNN 模型

python - 更改字典中特定键的特定值

python - 属性错误 : 'Int64Index' object has no attribute 'month'

python - 绘制 MNIST 样本

python - 有没有一种方法可以从这个连续的周期性日期时间时间序列中更新月平均值(加权)?

python - 使用 BeautifulSoup 进行网页抓取时出现问题

python - Matplotlib:切片 plt.imshow() 是否对应于切片源 numpy 数组?

python - 如何根据位置而不是标签对 Pandas df 列的值进行排序?

r - 如何使用 R 中的插入符号绘制多标签 SVM 问题的决策边界