scikit learn error - 100. * self.contamination) TypeError: unsupported operand type(s) for *: 'float' and 'type'

scikit learn error - 100. * self.contamination) TypeError: unsupported operand type(s) for *: 'float' and 'type'

我正在尝试为 csv 文件构建隔离林,我根据各种大小值预测 'pages'。 'pages' 值当前为 'low' 和 'high',我已将它们编码为 0 和 1,以便我可以检测异常。但是,我不断收到错误文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/ensemble/_iforest.py”,第 312 行,适合 100. * self.contamination) 类型错误:* 不支持的操作数类型:'float' 和 'type''

我附上了下面的代码,非常感谢你的帮助!

label_encoder = LabelEncoder()
integer_encoded=label_encoder.fit_transform(values)
print(integer_encoded)
print(len(integer_encoded))
df['pages']= integer_encoded
X = df.iloc[:, 0:101].values
y = df['pages']
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
model = IsolationForest(n_estimators = 50, max_samples = 'auto', contamination = float)
model.fit(df[['pages']])

所以SciKit是开源的,你可以在这里看到你需要的文件: https://github.com/scikit-learn/scikit-learn/blob/8feb04524caf78c6a84b56fc59917a0eadcb69c2/sklearn/ensemble/_iforest.py

_iforest.py

有问题的行是 2020 年 6 月 11 日的第 283 行

然后您可以在上面查看此文件的 init 并看到 contamination 是构造函数中的一个参数。如果您不传递它,它会使用 auto,默认值为 0.5

您需要确保在初始化森林时将浮点数作为 contamination 值传递

编辑:请注意,您不需要将任何内容传递给 contamination 的 constructor/initialization,因为它具有默认值