【发布时间】:2017-10-16 17:17:48
【问题描述】:
我想使用隔离森林来识别我的数据集中的异常值。
训练集包含 4000 条记录,其中 40 个特征列的值为 1 或 0。
通过 scikit learn 中给出的示例,我知道如何将隔离森林用于 2 个功能。
如何使用所有 40 个功能并查看异常值?
【问题讨论】:
我想使用隔离森林来识别我的数据集中的异常值。
训练集包含 4000 条记录,其中 40 个特征列的值为 1 或 0。
通过 scikit learn 中给出的示例,我知道如何将隔离森林用于 2 个功能。
如何使用所有 40 个功能并查看异常值?
【问题讨论】:
我稍微简化了 scikit 示例。 X 是具有 40 个特征和 4000 行的数据集。在此示例中,它是 3 个特征和 100 行。您将带有 clf.fit(X) 的分类器拟合到您的数值数据 X,以了解分类器数据的“边界”。在下一步中,您根据学习模型对相同的数据 X 进行分类,并获得一个包含 100 个条目的数组 y,每个条目对应数据集中的每一行。 y 中的每个条目都是 -1(离群值)或 1(内联)。
import numpy as np
from sklearn.ensemble import IsolationForest
rng = np.random.RandomState(42)
# Generate train data
s = rng.randn(100, 5)
X = np.r_[s + 2, s - 2, s - 5]
# fit the model
clf = IsolationForest(max_samples=100, random_state=rng)
clf.fit(X)
y = clf.predict(X)
【讨论】:
df = pd.DataFrame(X) 和df.shape 我得到(300, 5),意思是300 行5 列,包括索引,而你描述的是3 个特性和100 行!