箱型图实现分割点选取

作者 : 开心源码 本文共889个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共190人阅读

在LOF算法中,对于k值的选取格外重要,它直接影响了最终结果的有效程度。
在这里采用箱型图实现数据的分层与k值选取。

源自https://zhuanlan.zhihu.com/p/37753692

def box(data, legend=True):    import matplotlib.pyplot as plt    import pandas as pd    plt.rcParams['axes.unicode_minus'] = False    plt.rcParams['font.sans-serif'] = ['SimHei']    plt.style.use("ggplot")    plt.figure()    # 假如不是DataFrame格式,先进行转化    if type(data) != pd.core.frame.DataFrame:        data = pd.DataFrame(data)    p = data.boxplot(return_type='dict')    warming = pd.DataFrame()    y = p['fliers'][0].get_ydata()    y.sort()    for i in range(len(y)):        if legend == True:            plt.text(1, y[i] - 1, y[i], fontsize=10, color='black', ha='right')        if y[i] < data.mean()[0]:            form = '低'        else:            form = '高'        warming = warming.append(pd.Series([y[i], '偏' + form]).T, ignore_index=True)    print(warming)    plt.show()box(outliers1['local outlier factor'].tolist()+inliers1['local outlier factor'].tolist(), legend=True)

其中outliers1、inliers1是选自LOF算法的代码实现中的训练集计算结果。
结果:



可以看到的是选择2.x的k值比较正当,其实选择7.4作为k值也是有道理的,原来在代码中通过不断的尝试我们采用了5。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 箱型图实现分割点选取

发表回复