ML with sklearn:KNeighborRegressor 拟合函数卡在一个大数据库上
ML with sklearn: KNeighborRegressor fit function stuck on a big DB
我使用 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)
这就是 KNN 的本质。算法时间复杂度是 KNN 是 O(nd)
其中 n 是数据点的数量 & d 是维数(在你的情况下 n = 25k, d = 10
)
KNN 将考虑所有数据点并选取顶部 K
最近的邻居。因此,如果您的数据很大,则需要更多时间。 K
是超参数,您可以使用 GridSearchCV or RandomizedSearchCV
对其进行调整
您有以下选择:
- 缩减数据(即,将数据点的数量从 25k 减少到 15k)
- 增加系统内存大小和处理器速度或 运行 云中的 KNN
- 等到 KNN 完成
- 如果您有延迟限制,请不要使用 KNN
您也可以尝试 SVM 使用 RBF 内核,因为它是 KNN 的一个很好的近似值,而且它会花费更少的时间
我使用 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)
这就是 KNN 的本质。算法时间复杂度是 KNN 是 O(nd)
其中 n 是数据点的数量 & d 是维数(在你的情况下 n = 25k, d = 10
)
KNN 将考虑所有数据点并选取顶部 K
最近的邻居。因此,如果您的数据很大,则需要更多时间。 K
是超参数,您可以使用 GridSearchCV or RandomizedSearchCV
您有以下选择:
- 缩减数据(即,将数据点的数量从 25k 减少到 15k)
- 增加系统内存大小和处理器速度或 运行 云中的 KNN
- 等到 KNN 完成
- 如果您有延迟限制,请不要使用 KNN
您也可以尝试 SVM 使用 RBF 内核,因为它是 KNN 的一个很好的近似值,而且它会花费更少的时间