欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)異常值自動(dòng)檢測(cè)的案例分享

 更新時(shí)間:2024年01月17日 10:53:38   作者:濤哥聊Python  
在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中,異常值的檢測(cè)是一個(gè)關(guān)鍵步驟,它有助于識(shí)別數(shù)據(jù)中的異常模式和離群點(diǎn),本文將介紹Python中異常值檢測(cè)的實(shí)戰(zhàn)案例,使用一些常見(jiàn)的技術(shù)和庫(kù),為大家提供全面的示例代碼和詳細(xì)解釋

異常值的定義

異常值是指與大多數(shù)數(shù)據(jù)明顯不同的觀測(cè)值,可能是由于測(cè)量錯(cuò)誤、數(shù)據(jù)錄入問(wèn)題或真實(shí)但罕見(jiàn)的事件引起。我們將使用一些統(tǒng)計(jì)方法和可視化工具來(lái)檢測(cè)這些異常值。

Z-Score方法

Z-Score是一種常用的異常值檢測(cè)方法,它通過(guò)計(jì)算數(shù)據(jù)點(diǎn)與均值的偏差來(lái)判斷是否為異常。

示例代碼如下:

import numpy as np
from scipy.stats import zscore

# 生成隨機(jī)數(shù)據(jù)
data = np.random.randn(100)

# 計(jì)算Z-Score
z_scores = zscore(data)

# 定義閾值,判斷是否為異常值
threshold = 2.5
outliers = np.where(np.abs(z_scores) > threshold)[0]

print("Z-Score Outliers:", outliers)

Isolation Forest方法

Isolation Forest是一種基于決策樹(shù)的異常值檢測(cè)方法,它通過(guò)將數(shù)據(jù)點(diǎn)隨機(jī)分割成孤立的子空間來(lái)尋找異常值。

以下是Isolation Forest的實(shí)例代碼:

from sklearn.ensemble import IsolationForest

# 生成隨機(jī)數(shù)據(jù)
data = np.random.randn(100, 1)

# 創(chuàng)建Isolation Forest模型
model = IsolationForest(contamination=0.1)  # contamination參數(shù)表示異常值的比例

# 訓(xùn)練模型并預(yù)測(cè)異常值
outliers = model.fit_predict(data)

print("Isolation Forest Outliers:", np.where(outliers == -1)[0])

可視化異常值

可視化是理解和識(shí)別異常值的強(qiáng)大工具。使用Matplotlib和Seaborn庫(kù),可以繪制直方圖和箱線圖,以更直觀地展示數(shù)據(jù)的分布和異常值。

import matplotlib.pyplot as plt
import seaborn as sns

# 生成帶有異常值的隨機(jī)數(shù)據(jù)
data = np.concatenate([np.random.randn(80), np.random.randn(20) * 5 + 10])

# 繪制直方圖
plt.figure(figsize=(10, 6))
sns.histplot(data, kde=True)
plt.title("Histogram with Outliers")
plt.show()

# 繪制箱線圖
plt.figure(figsize=(10, 6))
sns.boxplot(x=data)
plt.title("Boxplot with Outliers")
plt.show()

處理異常值

處理方法包括刪除異常值、替換為中位數(shù)或均值,或者采用更復(fù)雜的插值方法。具體處理方式應(yīng)根據(jù)數(shù)據(jù)和問(wèn)題的特點(diǎn)而定。

# 假設(shè)我們將異常值替換為中位數(shù)
median_value = np.median(data)
data_no_outliers = np.where(np.abs(z_scores) > threshold, median_value, data)

# 繪制處理后的數(shù)據(jù)
plt.figure(figsize=(10, 6))
sns.histplot(data_no_outliers, kde=True)
plt.title("Histogram without Outliers")
plt.show()

DBSCAN聚類方法

除了基于統(tǒng)計(jì)的方法外,聚類方法也常被用于異常值檢測(cè)。Density-Based Spatial Clustering of Applications with Noise (DBSCAN) 是一種基于密度的聚類算法,可以識(shí)別稀疏區(qū)域中的異常點(diǎn)。

以下是DBSCAN的示例代碼:

from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler

# 生成帶有異常值的隨機(jī)數(shù)據(jù)
data = np.concatenate([np.random.randn(80), np.random.randn(20) * 5 + 10])

# 使用DBSCAN進(jìn)行聚類
data = data.reshape(-1, 1)  # DBSCAN要求輸入是二維數(shù)組
data_scaled = StandardScaler().fit_transform(data)
dbscan = DBSCAN(eps=0.5, min_samples=5)
clusters = dbscan.fit_predict(data_scaled)

# 找出標(biāo)簽為-1的異常點(diǎn)
outliers = np.where(clusters == -1)[0]

print("DBSCAN Outliers:", outliers)

異常值檢測(cè)應(yīng)用于實(shí)際數(shù)據(jù)

通過(guò)使用一個(gè)真實(shí)的數(shù)據(jù)集,可以更直觀地了解異常值檢測(cè)在實(shí)際場(chǎng)景中的應(yīng)用。

以下示例使用seaborn庫(kù)加載鳶尾花數(shù)據(jù)集,然后應(yīng)用Z-Score方法檢測(cè)異常值。

import seaborn as sns

# 加載鳶尾花數(shù)據(jù)集
iris = sns.load_dataset("iris")

# 選擇一個(gè)特征進(jìn)行演示(這里選擇花萼長(zhǎng)度)
feature = "sepal_length"
data_iris = iris[feature]

# 計(jì)算Z-Score
z_scores_iris = zscore(data_iris)

# 定義閾值,判斷是否為異常值
threshold_iris = 2.5
outliers_iris = np.where(np.abs(z_scores_iris) > threshold_iris)[0]

print("Z-Score Outliers in Iris Dataset:", outliers_iris)

使用箱線圖識(shí)別異常值

箱線圖是另一種常用于識(shí)別異常值的可視化工具。通過(guò)觀察箱線圖的箱體和觸須,可以直觀地檢測(cè)到數(shù)據(jù)中的離群點(diǎn)。

以下是使用Seaborn庫(kù)創(chuàng)建箱線圖的示例代碼:

# 繪制箱線圖
plt.figure(figsize=(10, 6))
sns.boxplot(x=data_iris)
plt.title("Boxplot for Sepal Length in Iris Dataset")
plt.show()

在箱線圖中,位于箱體外部的點(diǎn)被認(rèn)為是異常值。通過(guò)結(jié)合箱線圖和Z-Score方法,可以更全面地了解數(shù)據(jù)的分布和異常情況。

異常值處理策略

對(duì)于檢測(cè)到的異常值,合理的處理策略是至關(guān)重要的。有幾種常見(jiàn)的處理方式,包括刪除異常值、替換為中位數(shù)或均值,或者采用更復(fù)雜的插值方法。

以下是一個(gè)簡(jiǎn)單的異常值處理示例:

# 假設(shè)我們將異常值替換為中位數(shù)
median_value_iris = np.median(data_iris)
data_iris_no_outliers = np.where(np.abs(z_scores_iris) > threshold_iris, median_value_iris, data_iris)

# 繪制處理后的數(shù)據(jù)
plt.figure(figsize=(10, 6))
sns.histplot(data_iris_no_outliers, kde=True)
plt.title("Histogram for Sepal Length without Outliers")
plt.show()

總結(jié)

本篇文章深入探討了Python中異常值檢測(cè)的實(shí)戰(zhàn)案例,涵蓋了多種常見(jiàn)的異常值檢測(cè)方法和處理策略。從統(tǒng)計(jì)學(xué)方法的Z-Score,到基于決策樹(shù)的Isolation Forest,再到基于密度的DBSCAN,展示了多樣性的異常值檢測(cè)工具。通過(guò)實(shí)際數(shù)據(jù)的示例,不僅學(xué)會(huì)了如何運(yùn)用這些方法,還了解了在不同情境下選擇合適的異常值處理策略的重要性。

可視化在異常值檢測(cè)中扮演了關(guān)鍵的角色,通過(guò)繪制直方圖、箱線圖等圖表,讀者可以更直觀地理解數(shù)據(jù)的分布和異常情況。異常值處理也被詳細(xì)探討,強(qiáng)調(diào)了合理而靈活的策略,如替換為中位數(shù)或均值。實(shí)際項(xiàng)目中,異常值檢測(cè)并非一勞永逸,需要結(jié)合領(lǐng)域知識(shí)和數(shù)據(jù)特點(diǎn)靈活運(yùn)用。本文通過(guò)綜合示例代碼和注意事項(xiàng),為大家提供了更全面的異常值檢測(cè)實(shí)戰(zhàn)指南。

總體而言,異常值的自動(dòng)檢測(cè)在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中是不可或缺的一環(huán)。通過(guò)掌握這些實(shí)用的技術(shù)和工具,能夠更熟練地處理數(shù)據(jù)中的異常情況,提高模型的準(zhǔn)確性和穩(wěn)定性。

以上就是Python中異常值自動(dòng)檢測(cè)的案例分享的詳細(xì)內(nèi)容,更多關(guān)于Python異常值自動(dòng)檢測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文帶你掌握Matplotlib風(fēng)格與樣式

    一文帶你掌握Matplotlib風(fēng)格與樣式

    學(xué)過(guò)Python的小伙伴都會(huì)知道,Matplotlib是Python生態(tài)最好用的可視化工具庫(kù),下面這篇文章主要給大家介紹了關(guān)于Matplotlib風(fēng)格與樣式的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • Selenium之模擬登錄鐵路12306的示例代碼

    Selenium之模擬登錄鐵路12306的示例代碼

    這篇文章主要介紹了Selenium之模擬登錄鐵路12306的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python通過(guò)郵件服務(wù)器端口發(fā)送郵件的方法

    python通過(guò)郵件服務(wù)器端口發(fā)送郵件的方法

    這篇文章主要介紹了python通過(guò)郵件服務(wù)器端口發(fā)送郵件的方法,涉及Python發(fā)送郵件的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)的簡(jiǎn)單文件傳輸服務(wù)器和客戶端

    Python實(shí)現(xiàn)的簡(jiǎn)單文件傳輸服務(wù)器和客戶端

    這篇文章主要介紹了Python實(shí)現(xiàn)的簡(jiǎn)單文件傳輸服務(wù)器和客戶端,本文直接給出Server和Client端的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • pycharm 代碼自動(dòng)補(bǔ)全的實(shí)現(xiàn)方法(圖文)

    pycharm 代碼自動(dòng)補(bǔ)全的實(shí)現(xiàn)方法(圖文)

    這篇文章主要介紹了pycharm 代碼自動(dòng)補(bǔ)全的實(shí)現(xiàn)方法(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 詳解python __init__.py 和 __all__作用

    詳解python __init__.py 和 __all__作用

    導(dǎo)入文件夾包的時(shí)候,會(huì)運(yùn)行寫(xiě)在該文件夾包下的__init__.py文件,這主要是__init__.py的作用,本文結(jié)合示例代碼介紹了python __init__.py 和 __all__作用,感興趣的朋友一起看看吧
    2023-02-02
  • python深度學(xué)習(xí)tensorflow訓(xùn)練好的模型進(jìn)行圖像分類

    python深度學(xué)習(xí)tensorflow訓(xùn)練好的模型進(jìn)行圖像分類

    這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow訓(xùn)練好的模型進(jìn)行圖像分類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • opencv+playwright滑動(dòng)驗(yàn)證碼的實(shí)現(xiàn)

    opencv+playwright滑動(dòng)驗(yàn)證碼的實(shí)現(xiàn)

    滑動(dòng)驗(yàn)證碼是常見(jiàn)的驗(yàn)證碼之一,本文主要介紹了opencv+playwright滑動(dòng)驗(yàn)證碼的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • Python?jiaba庫(kù)的使用詳解

    Python?jiaba庫(kù)的使用詳解

    這篇文章主要為大家介紹了Python jiaba庫(kù)的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助,希望能夠給你帶來(lái)幫助
    2021-11-11
  • 基于PyQt5制作Excel文件數(shù)據(jù)去重小工具

    基于PyQt5制作Excel文件數(shù)據(jù)去重小工具

    這篇文章主要介紹了如何利用PyQt5模塊制作一個(gè)Excel文件數(shù)據(jù)去重小工具,可以將單個(gè)或者多個(gè)Excel文件數(shù)據(jù)進(jìn)行去重操作,去重的列可以通過(guò)自定義制定,需要的可以參考一下
    2022-04-04

最新評(píng)論