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