簡體   English   中英

使用K最近鄰居創建特征

[英]Create Feature Using K-Nearest Neighbors

我是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

  • 現在,訓練代碼將如下所示:

    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]

  • 請注意,應使用相同的Vectorizer / Transformer對X_train和X_test中的特征向量進行矢量化。 在此處閱讀有關Vectorizer的更多信息。

  • 預測代碼如下所示:

    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個元素:

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM