猿问

带有 sklearn 的机器学习:KNeighborRegressor 拟合函数卡在大数据库上

我已经使用 sklearn 工具有一段时间了,但我现在遇到了这个奇怪的问题。我只是试图用 sklearn 构建一个 KNN 回归器,但执行需要永远,并且在调试时看起来 fit 函数的执行似乎永远需要执行。我应该提到数据集很大(约 25,000 条记录,具有 10 个特征),但仍然 - 我现在等了一个小时还没有结果。


什么可能导致这种情况?


相关的一段代码:


 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)


慕田峪4524236
浏览 127回答 1
1回答

12345678_0001

这就是 KNN 的本质。算法时间复杂度是 KNN,O(nd)其中 n 是数据点的数量,d 是维度(在您的情况下n = 25k, d = 10)KNN 将考虑所有数据点并选择K最接近的邻居。因此,如果您的数据很大,则需要更多时间。K是超参数,您可以使用GridSearchCV或RandomizedSearchCV对其进行调整您拥有的选项:缩小您的数据(即,减少数据点的数量,比如 25k 到 15K)增加系统内存大小和处理器速度或在云中运行 KNN等待 KNN 完成如果您有延迟限制,则不要使用 KNN您也可以尝试使用 RBF 内核的SVM,因为它是 KNN 的一个很好的近似,而且花费的时间更少
随时随地看视频慕课网APP

相关分类

Python
我要回答