from sklearn.ensemble import IsolationForest model = IsolationForest(n_estimators=100, max_samples='auto', contamination=float(0.1), max_features=1.0) X = df2[['age','current_height']].values model.fit(X) df2['scores'] = model.decision_function(X) df2['anomaly'] = model.predict(X) outliers = inliers = plt.scatter(inliers[:, 0], inliers[:, 1], c='blue', label='Inliers') plt.scatter(outliers[:, 0], outliers[:, 1], c='red', label='Outliers') plt.xlabel('age') plt.ylabel('current_height') plt.legend() plt.show()
时间: 2024-01-23 12:03:00 浏览: 120
在你的代码中,你已经拟合了孤立森林模型并预测了异常值。现在你需要根据预测结果提取异常值和非异常值的数据,并进行散点图的可视化。
你可以使用以下代码来提取异常值和非异常值的数据,并进行散点图的可视化:
```python
outliers = df2[df2['anomaly'] == -1]
inliers = df2[df2['anomaly'] == 1]
plt.scatter(inliers['age'], inliers['current_height'], c='blue', label='Inliers')
plt.scatter(outliers['age'], outliers['current_height'], c='red', label='Outliers')
plt.xlabel('age')
plt.ylabel('current_height')
plt.legend()
plt.show()
```
在这段代码中,我们首先使用布尔条件筛选出异常值和非异常值的数据。对于异常值,我们筛选出 `df2['anomaly']` 列中值为 -1 的行;对于非异常值,我们筛选出 `df2['anomaly']` 列中值为 1 的行。
然后,我们使用散点图显示两个变量('age' 和 'current_height')之间的关系。异常值用红色表示,非异常值用蓝色表示。最后,我们添加了标签和图例来说明颜色的含义。
确保你已经导入了必要的库和模块,并且 `df2` 是包含了 'age'、'current_height'、'scores' 和 'anomaly' 列的 DataFrame。
希望这能解决你的问题!如有任何疑问,请随时追问。
阅读全文