2017-07-27 127 views
0

我对Python和机器学习相对较新,但我一直在努力构建抵押价格的预测模型。我在挣扎的地方是使用K-最近邻算法来创建一个特征。使用K最近邻居创建特征

这就是我所理解的机制就是我要完成的任务:

  1. 我有两个数据文件:出售抵押贷款和上市
  2. 在这两个数据文件我也有同样的功能抵押贷款(包括纬度/长)。
  3. 我想创建一个列在抵押贷款上市列表,表示最紧密相关的家庭在中区价格的中间地区。
  4. 我将使用3中列出的方法创建1-3个月,4-6个月,7-12个月的列。
  5. 另一列将是这三列的趋势。

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

我该如何去执行这个想法?有没有我可能错过的资源会有所帮助?

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

+1

“邻近地区最密切相关的住宅”:您是否只将距离视为您的关系测量? –

+0

Hey Yuval。不,我认为它必须比这更广泛。彼此相距1英尺和4英尺的地方可能会有非常不同的价格。我的目标是考虑多种功能,包括距离,找到最喜欢的。 – Shad

回答

1

所以,据我所知,你想使用抵押贷款销售数据来拟合KNN模型来预测抵押贷款列表数据的价格。 这是一个经典的KNN问题,您需要在已售数据中找到列出数据中每个特征向量的最近特征向量,然后取这些特征向量的中值。

  • 考虑有在已售出的数据N行,并且每行的特征向量是X1,X2,...,Xn和相应的价格是P1,P2,... ...,PN

    这里

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

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

  • 注意,每个曦本身是排特征向量和第i代表

  • 现在,考虑您需要列出数据中每行的已售数据中最近的5行。所以,在这里可能需要稍后优化的KNN模型的参数是:

    NUMBER_OF_NEIGHBOURS = 5

  • 现在,训练码会是这个样子:

    from sklearn.neighbors import 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的特征向量应该使用相同的矢量器/变压器进行量化。阅读更多关于Vectorizers here

  • 预测码会是这个样子:

    y_predicted = knn_model.predict(X_test)

  • 这个y_predicted列表中的每个元素将包含(在这种情况下)5个最接近的价格从y_train。那就是:

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

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

    import numpy as np

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

  • 因此,以这种方式,你可以找到中间价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