Python ML与sklearn:KNeighborRegressor拟合功能卡在一个大DB上
我已经使用sklearn工具有一段时间了,但是我现在有一个奇怪的问题。我只是想用sklearn构建一个KNN回归器,但是执行过程要花很长时间,在调试时,fit函数的执行似乎要花很长时间。 我应该提到数据集很大(大约25000条记录,有10个功能),但我还是等了一个小时,没有结果 这是什么原因造成的 相关代码:Python ML与sklearn:KNeighborRegressor拟合功能卡在一个大DB上,python,scikit-learn,nearest-neighbor,Python,Scikit Learn,Nearest Neighbor,我已经使用sklearn工具有一段时间了,但是我现在有一个奇怪的问题。我只是想用sklearn构建一个KNN回归器,但是执行过程要花很长时间,在调试时,fit函数的执行似乎要花很长时间。 我应该提到数据集很大(大约25000条记录,有10个功能),但我还是等了一个小时,没有结果 这是什么原因造成的 相关代码: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 42
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)
这就是KNN的本质。算法时间复杂度为KNN为
O(nd)
,其中n为数据点数量,d为维度(在您的案例中n=25k,d=10
)
KNN将考虑所有的数据点并拾取上面的代码<代码> k>代码>最近邻居。因此,如果您的数据很大,则需要更多的时间
K
是超参数&您可以使用或对其进行调整
您可以选择:
您也可以尝试使用RBF内核,因为它是KNN的一个很好的近似值&它将花费更少的时间您在其中使用的是哪个
“算法”
?你试过改变它吗?你的数据集稀疏吗?谢谢你的完整答案,它帮助很大。