我有一个大型多维未标记的汽车数据集(价格,里程,马力......),我想找到异常值。我决定使用sklearn OneClassSVM构建决策边界,并且我的方法有两个主要问题:
答案 0 :(得分:0)
对于第一个问题。您可以使用sklearn.preprocessing.imputer以平均值或中位数来计算缺失值:
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Imputer.html
如果某些其他功能具有NaN,您可以添加一些布尔功能进行重新编码。因此,如果你有X_1,X_2特征,你可以添加布尔特征
X_1_was_NaN和X_2_was_NaN
如果X_1 == NaN或X_2 == NaN,则为1。如果X是您原来的pd.DataFrame,您可以通过
创建它 X = pd.DataFrame()
# Create your features here
# Get the locations of the NaNs
X_2 = 1.0 * X.isnull()
# Rename columns
X_2.rename(columns=lambda x: str(x)+"_has_NaN", inplace=True)
# Paste them together
X = pd.concat([X, X_2], axis=1)