慕田峪4524236
2021-06-14 12:14:41
我已經(jīng)使用 sklearn 工具有一段時間了,但我現(xiàn)在遇到了這個奇怪的問題。我只是試圖用 sklearn 構(gòu)建一個 KNN 回歸器,但執(zhí)行需要永遠(yuǎn),并且在調(diào)試時看起來 fit 函數(shù)的執(zhí)行似乎永遠(yuǎn)需要執(zhí)行。我應(yīng)該提到數(shù)據(jù)集很大(約 25,000 條記錄,具有 10 個特征),但仍然 - 我現(xiàn)在等了一個小時還沒有結(jié)果。什么可能導(dǎo)致這種情況?相關(guān)的一段代碼: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 42)regressor = neighbors.KNeighborsRegressor(n_neighbors = n, algorithm = algorithm, weights = weights)regressor.fit(X_train, y_train)y_pred = regressor.predict(X_test)train_score = regressor.score(X_train, y_train)test_score = regressor.score(X_test, y_test)
1 回答

12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊
這就是 KNN 的本質(zhì)。算法時間復(fù)雜度是 KNN,O(nd)
其中 n 是數(shù)據(jù)點(diǎn)的數(shù)量,d 是維度(在您的情況下n = 25k, d = 10
)
KNN 將考慮所有數(shù)據(jù)點(diǎn)并選擇K
最接近的鄰居。因此,如果您的數(shù)據(jù)很大,則需要更多時間。K
是超參數(shù),您可以使用GridSearchCV或RandomizedSearchCV對其進(jìn)行調(diào)整
您擁有的選項(xiàng):
縮小您的數(shù)據(jù)(即,減少數(shù)據(jù)點(diǎn)的數(shù)量,比如 25k 到 15K)
增加系統(tǒng)內(nèi)存大小和處理器速度或在云中運(yùn)行 KNN
等待 KNN 完成
如果您有延遲限制,則不要使用 KNN
您也可以嘗試使用 RBF 內(nèi)核的SVM,因?yàn)樗?KNN 的一個很好的近似,而且花費(fèi)的時間更少
添加回答
舉報
0/150
提交
取消