【发布时间】:2019-07-11 12:09:46
【问题描述】:
我目前正在使用 Python 中的 Isolation Forest 检测我的数据集中的异常值,但我并不完全理解 scikit-learn 文档中给出的示例和解释
是否可以使用 Isolation Forest 来检测包含 258 行和 10 列的数据集中的异常值?
我需要单独的数据集来训练模型吗?如果是,是否有必要让该训练数据集没有异常值?
这是我的代码:
rng = np.random.RandomState(42)
X = 0.3*rng.randn(100,2)
X_train = np.r_[X+2,X-2]
clf = IsolationForest(max_samples=100, random_state=rng, contamination='auto'
clf.fit(X_train)
y_pred_train = clf.predict(x_train)
y_pred_test = clf.predict(x_test)
print(len(y_pred_train))
我尝试将我的数据集加载到X_train,但这似乎不起作用。
【问题讨论】:
-
您的代码适用于您的玩具示例,但稍作修正。如果您在数据集上运行
IsolationForest时遇到问题,请向我们展示您已完成的所有预处理步骤以及您拥有的错误消息 -
你的“异常值”是否有真实标签?
-
@davidrpugh 对于
IsolationForest,您不需要任何“基本事实”,其背后的基本原理不同...... -
@SergeyBushmanov 我知道使用
IsolationForest不需要基本实况标签,但是如果 OP 有这样的标签,那么您可以使用此信息来调整超参数或在测试数据上评分IsolationForest用于与其他模型进行比较。
标签: python-3.x scikit-learn outliers anomaly-detection