我有一个行:134000 和列:200 的数据集。我正在尝试使用LocalOutlierFactor
scikit-learn 识别数据集中的异常值。尽管我了解算法的工作原理,但我无法决定n_neighbors
我的数据集。
请建议。
我有一个行:134000 和列:200 的数据集。我正在尝试使用LocalOutlierFactor
scikit-learn 识别数据集中的异常值。尽管我了解算法的工作原理,但我无法决定n_neighbors
我的数据集。
请建议。
在这些情况下,通常使用网格搜索来计算最佳参数:
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
n = 30 # Max number of neighbours you want to consider
param_grid = {'n_neighbors': np.arange(n)}
grid = GridSearchCV(KNeighborsClassifier(), param_grid)
然后给定这个网格,您可以将其拟合到您的数据以计算其最佳值(根据您提供的值,它们可能不是全局最优值(如果返回值是输入范围的极值之一,甚至是局部值)):
grid.fit(X_train, y_train)
您可以通过调用从输入中查看最佳参数:
grid.best_params_
>>> {'n_neighbors': ?}
您可以通过调用自动选择具有所述最佳参数的估计器:
model = grid.best_estimator_
y_pred = model.fit(X_train, y_train).predict(X_test)
注意:您可以通过将它们添加到输入字典中来找到其他参数的最佳值param_grid
。