一文总结python的异常数据处理示例

AI应用开发相关目录

本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧
适用于具备一定算法及Python使用基础的人群

  1. AI应用开发流程概述
  2. Visual Studio Code及Remote Development插件远程开发
  3. git开源项目的一些问题及镜像解决办法
  4. python实现UDP报文通信
  5. python实现日志生成及定期清理
  6. Linux终端命令Screen常见用法
  7. python实现redis数据存储
  8. python字符串转字典
  9. python实现文本向量化及文本相似度计算
  10. python对MySQL数据的常见使用
  11. 一文总结python的异常数据处理示例


一、前言

数据是一切应用开发的基础,异常数据处理可以保障数据质量。
本文总结了基于数据分布、聚类算法、树、距离以及概率的异常数据处理算法及其示例。

二、代码示例

数据
在这里插入图片描述
基于数据分布的异常处理算法

# 基于箱线图的异常数据检测
KW_data = data['线路长度'].tolist()
Q1 = np.quantile(KW_data,0.25,interpolation='lower')#下四分位数
Q3 = np.quantile(KW_data,0.75,interpolation='higher')#上四分位数
QE = Q3-Q1

max_value = Q3+1.5*QE
min_value = Q3-1.5*QE
error_index = []
for i in range(len(KW_data)):
    if (KW_data[i]>= min_value) and (KW_data[i] <= max_value):
        pass
    else:
        error_index.append(i)

在这里插入图片描述

基于聚类算法的异常处理算法

# DBSCAN聚类
import numpy as np
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler

# 创建数据集
X = np.array(data[['线路长度','导线长度','塔材','挂线金具','混凝土','土石方熨','本体投资']])

# 对数据进行标准化处理
X = StandardScaler().fit_transform(X)

# 使用DBSCAN算法进行聚类
dbscan = DBSCAN(eps=0.3, min_samples=2)
dbscan.fit(X)

# 获取异常数据的索引
outliers_mask = dbscan.labels_ == -1
outliers_indices = np.where(outliers_mask)[0]

# 输出异常数据的索引
print("异常数据的索引:", outliers_indices)

在这里插入图片描述

基于树的异常处理算法

# 基于孤立森林的异常数据检测

import numpy as np  
from sklearn.ensemble import IsolationForest  
import matplotlib.pyplot as plt  
  
# 生成示例数据  
X = np.array(data[['塔材','本体投资']])# 可多
  
# 使用孤立森林算法进行异常检测  
clf = IsolationForest(contamination='auto')  
pred = clf.fit_predict(X)  
  
# 将预测结果可视化  
plt.scatter(X[:, 0], X[:, 1], c=pred)  
plt.show()

在这里插入图片描述
基于数据间距的异常处理算法

# 基于局部异常因子的异常检测算法

import numpy as np  
from sklearn.neighbors import LocalOutlierFactor  
  
# 生成示例数据  
X = np.array(data[['塔材','本体投资']])# 可多
  
# 使用局部异常因子算法进行异常检测  
clf = LocalOutlierFactor(n_neighbors=20, contamination='auto')  
pred = clf.fit_predict(X)  
  
# 将预测结果可视化  
plt.scatter(X[:, 0], X[:, 1], c=pred)  
plt.show()

在这里插入图片描述
基于概率的异常处理算法

# 示例数据集
db_path = os.getcwd()+'\\db.sqlite3'
# 数据读取
gradedb = sqlite3.connect(db_path)
cursor=gradedb.cursor()
cursor.execute("SELECT * FROM returning_files_table;")
Tables=cursor.fetchall()
raw_data  = []
for i in Tables:
    raw_data.append([i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8]])
raw_data = pd.DataFrame(raw_data, columns=['标段', '线路长度', '导线长度', '塔材', '挂线金具', '盘型绝缘子', '混凝土', '土石方熨', '本体投资'])
a0 = raw_data['标段'].tolist()
a1 = [float(i) for i in raw_data['线路长度']]
a2 = [float(i) for i in raw_data['导线长度']]
a3 = [float(i) for i in raw_data['塔材']]
a4 = [float(i) for i in raw_data['挂线金具']]
a5 = raw_data['盘型绝缘子'].tolist()
a6 = [float(i) for i in raw_data['混凝土']]
a7 = [float(i) for i in raw_data['土石方熨']]
a8 = [float(i) for i in raw_data['本体投资']]
data = []
for i in range(len(a0)):
    data.append([a0[i],a1[i],a2[i],a3[i],a4[i],a5[i],a6[i],a7[i],a8[i]])
data = pd.DataFrame(data, columns=['标段', '线路长度', '导线长度', '塔材', '挂线金具', '盘型绝缘子', '混凝土', '土石方熨', '本体投资'])
# 从数据集中删除PassengerId,Name变量
data.drop(['标段'], axis=1, inplace=True) 
data = data[['线路长度','导线长度','塔材','挂线金具','混凝土','土石方熨','本体投资']]
data.head()
import pandas as pd
from sksos import SOS

X = np.array(data[['塔材','本体投资']]) # 两个维度
detector = SOS()
data["score"] = detector.predict(X)
data.sort_values("score", ascending=False).head(10)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福安德信息科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值