异常值检测-值域法 头歌代码解释

这关做得不是很明白,如果有清楚的同志可以在评论区里面讨论

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor
# 导入数据
abc = pd.read_csv('deaths.csv')
## 只分析其中的Population和Lat两个变量
abc = abc[["Population","Lat"]]

###begin###

# 使用LocalOutlierFactor对数据集进行异常检测
lof = LocalOutlierFactor(n_neighbors=10)  # 设置参数,n_neighbors表示邻居数量,contamination为异常值比例估计
# 计算样本的LOF得分(-1表示异常点)
abc_scores = lof.fit_predict(abc)

# 获取异常值索引
outliers_index = np.where(abc_scores == -1)[0]
print("检测出的异常值数量为:",len(outliers_index))

###end####

这一关中背景知识没有提很多函数的使用,需要大家在网上查找相应函数的用法。

LocalOutlierFactor()的参数使用

LocalOutlierFactor 是 scikit-learn 库中的一个用于局部离群值检测(LOF,Local Outlier Factor)的类。它通过比较数据点与其邻居的数据密度来识别潜在的异常点。以下是 LocalOutlierFactor 类的一些关键参数及其使用解释:

  1. n_neighbors (默认=20):

    这个参数指定了计算 LOF 分数时要考虑的邻居数量(k近邻)。更多的邻居可能会提供更稳定的结果,但计算成本也会更高。选择合适的 k 值对于算法的表现至关重要。
  2. contamination (默认="auto"):

    它表示数据集中被认为是离群点的比例估计。如果设置为 "auto",算法会尝试自动确定异常点比例;若给定一个浮点数(例如 0.1 表示 10% 的样本是离群点),则按照这个比例计算阈值。
  3. algorithm (默认="auto"):

    指定搜索最近邻的算法,可以是 "auto", "ball_tree", "kd_tree", "brute" 或 "metric"。根据输入数据和可用内存情况,scikit-learn会选择最佳实现。
  4. leaf_size (默认=30):

    当使用树型结构(如 BallTree 或 KDTree)时,这是构建树时的叶节点大小。较小的 leaf_size 可以提高精度,但会增加内存消耗和计算时间。
  5. metric (默认="minkowski"):

    距离度量方法。它可以是一个字符串指定内置的距离度量,也可以是一个可调用对象,该对象接受两个向量并返回它们之间的距离。
  6. p (默认=2):

    如果 metric 设置为 "minkowski",则 p 参数用于定义 Minkowski 距离的幂指数。当 p=2 时,Minkowski 距离就是欧氏距离;当 p=1 时,它是曼哈顿距离。
  7. ** novelty** (默认=False):

    是否启用新颖性检测模式。如果设置为 True,则在训练后可以对新样本进行离群值检测。
  8. metric_params (default=None):

    传递给所选距离度量函数的额外关键字参数字典。

这是我在网上通过chat找到的一些解答。说实话看不出来 n_neighbors要设置为10,设置为20的时候答案是26。如果知道的同志,欢迎在评论区中讨论交流。

除以上方法外还可以采用print,输出答案。(没有办法的办法)

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值