[英]Create Feature Using K-Nearest Neighbors
我是Python和機器學習的新手,但我一直在為按揭價格建立預測模型。 我苦苦掙扎的地方是使用K最近鄰居算法來創建要素。
這是我了解要完成的工作的方式:
我在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.