pyod包如何进行异常值检测?

pyod包是异常值检测的重要集成工具,开发者使用的演示方式是.mat文件,那么如何用csv文件进行pyod包的使用,并绘制ROC曲线呢?
1.导包

from pyod.models.lof import LOF  # imprt LOF分类器
import pandas as pd
from sklearn.metrics import roc_auc_score,roc_curve,auc
import matplotlib.pyplot as plt

2.导入数据集,这里使用的是经典的PIma印第安人糖尿病数据集

df = pd.read_csv('Pima.csv')
X = df.drop(['label'], axis=1)  	##x自变量
y = df['label']						##y因变量

3.训练一个LOF检测器

clf_name = 'kNN'
clf = LOF()  # 初始化检测器
clf.fit(X)  # 使用X训练检测器clf

4.预测异常值

# 用训练好的clf来预测未知数据中的异常值
y_test_pred = clf.predict(X)  # 返回未知数据上的分类标签 (0: 正常值, 1: 异常值)
y_test_scores = clf.decision_function(X)  # 返回未知数据上的异常值
roc = roc_auc_score(y, y_test_scores)
print(roc)

5.绘制ROC曲线

fpr, tpr, threshold = roc_curve(y, y_test_scores)
roc_auc = auc(fpr, tpr)
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([-0.1, 1.05])
plt.ylim([-0.1, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值