1. 程式人生 > >五、python 缺失值處理(Imputation)

五、python 缺失值處理(Imputation)

一、缺失值的處理方法

      由於各種各樣的原因,真實世界中的許多資料集都包含缺失資料,這些資料經常被編碼成空格、nans或者是其他的佔位符。但是這樣的資料集並不能被scikit - learn演算法相容,因為大多數的學習演算法都會預設陣列中的元素都是數值,因此素偶有的元素都有自己的代表意義。

       使用不完整的資料集的一個基本策略就是捨棄掉整行或者整列包含缺失值的數值,但是這樣處理會浪費大量有價值的資料。下面是處理缺失值的常用方法:

1.忽略元組

當缺少類別標籤時通常這樣做(假定挖掘任務涉及分類時),除非元組有多個屬性缺失值,否則該方法不是很有效。當每個屬性缺少值的百分比變化很大時,它的效能特別差。

2.人工填寫缺失值

一般該方法很費時,並且當資料集很大,缺少很多值時,該方法可能行不通。

3.使用一個全域性常量填充缺失值

將缺失的屬性值用同一個常數(如“Unknown”或 負無窮)替換。如果缺失值都用“unknown”替換,則挖掘程式可能會認為它們形成一個有趣的概念,因為它們都具有相同的值“unknown”。因此,雖然該方法很簡單,但是它十分不可靠。

4.使用與給定元組屬同一類的所有樣本的屬性均值

例如:將顧客按照credit_risk分類,則使用具有相同信用度的給定元組的顧客的平均收入替換income中的缺失值。

5.使用最可能的值填充缺失值

可以用迴歸、使用貝葉斯形式化的基於推理的工具或決策樹歸納確定。例如,利用資料集中其他顧客的屬性,可以構造一顆決策樹來預測income的缺失值。

注意:缺失值並不總是意味著資料的錯誤!!!!!!!

二、缺失值處理的程式碼實現

         class:`Imputer`類提供了缺失數值處理的基本策略,比如使用缺失數值所在行或列的均值、中位數、眾數來替代缺失值。該類也相容不同的缺失值編碼。

1、使用均值填充缺失值

import numpy as np

from sklearn.preprocessing import Imputer

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)

import numpy as np
from sklearn.preprocessing import Imputer

###1.使用均值填充缺失值
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])

X = [[np.nan, 2], [6, np.nan], [7, 6]]
print(imp.transform(X))  
[[4.         2.        ]
 [6.         3.66666667]
 [7.         6.        ]]

2、Imputer 類也支援稀疏矩陣:

import scipy.sparse as sp
X = sp.csc_matrix([[1, 2], [0, 3], [7, 6]])
imp = Imputer(missing_values=0, strategy='mean', axis=0)
imp.fit(X)

X_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]])
print(imp.transform(X_test))  

#注意,在這裡,缺失資料被編碼為0, 這種方式用在當缺失資料比觀察資料更多的情況時是非常合適的。

相關推薦

python 缺失處理Imputation

一、缺失值的處理方法       由於各種各樣的原因,真實世界中的許多資料集都包含缺失資料,這些資料經常被編碼成空格、nans或者是其他的佔位符。但是這樣的資料集並不能被scikit - learn演算法相容,因為大多數的學習演算法都會預設陣列中的元素都是數值,因此素偶有的

python 簡單影象處理13圖腐蝕和膨脹,開運算閉運算

我們直接看圖吧 我們把粗框內的區域看作原影象 假設有一個圓在影象空間移動,取一個點作為圓的中心,若圓的區域被完全包含在原影象中 則我們把它放到腐蝕後的區域中 若只有一部分在原影象區域或沒有一個點在原圖區域中,我們則不會把它放在腐蝕區中 顯然,粗框區域腐蝕後會變成內部填充框區域 而膨脹卻恰恰相反 把粗框線

Python時間序列缺失處理日期缺失填充完全教程-附Python完整例程

前言 因近期進行時間序列分析時遇到了資料預處理中的缺失值處理問題,其中日期缺失和填充在網上沒有找到較好較全資料,耗費了我一晚上工作時間,所以下面我對這次時間序列缺失值處理學習做了以下小結以供之後同行們參考指正。 時間序列缺失值處理 一、程式設計前準備        

python數字影象處理2:影象的讀取顯示與儲存

skimage提供了io模組,顧名思義,這個模組是用來圖片輸入輸出操作的。為了方便練習,也提供一個data模組,裡面嵌套了一些示例圖片,我們可以直接使用。 引入skimage模組可用: 1 from skimage import io

python自然語言處理之中文分詞預處理統計詞頻

一個小的嘗試。。資料來源資料集 一共200條關於手機的中文評論,以XML格式儲存。分詞工具 python-jieba預處理包括去停用詞、去標點符號和數字去停用詞:使用的是他人總結的 停用詞表去標點符號和數字:用正則表示式。原本打算的是中文標點符號從網上覆制,英文標點符號用st

python數字影象處理11:影象自動閾分割

影象閾值分割是一種廣泛應用的分割技術,利用影象中要提取的目標區域與其背景在灰度特性上的差異,把影象看作具有不同灰度級的兩類區域(目標區域和背景區域)的組合,選取一個比較合理的閾值,以確定影象中每個畫素點應該屬於目標區域還是背景區域,從而產生相應的二值影象。 在skimage庫中,閾值分割的功能是放在fi

python+OpenCV影象處理讀取複製顯示儲存

前 言       從2017年入坑人工智慧領域開始,就被這一領域深深的所吸引,雖然到現在已經踩了不少坑,但總算有了不少的收穫,深感不虛此行,藉助強大的python讓我快速的向著這一領域靠近,現在流行比較廣的人工智慧應用,比如:影象識別,語音識別,文字情感分析,人體行為分析等

【OpenCV影象處理影象的幾何變換

5.1 影象的縮放變換 影象的縮放指的是將影象的尺寸變小或變大的過程,也就是減少或增加原影象資料的畫素個數。簡單來說,就是通過增加或刪除畫素點來改變影象的尺寸。當影象縮小時,影象會變得更加清晰,當影象放大時,影象的質量會有所下降,因此需要進行插值處理。 在影象縮放中常常會用

MySQL:日期函數時間函數處理

減少 expr lec datetime style pan 獲取 相減 sel date_add() 增加MYSQL 獲取當前時間加上一個月 update user set leverstart=now(),leverover=date_add(NOW(), int

python圖像處理2圖像水印和PIL模式轉化

tex 我們 參考 height rom 設置 分享 show pen 模式轉化: PIL模式轉化:將圖片轉化成其他模式 1 # 我們將image圖像轉化為灰度圖像(python) 2 from PIL import Image 3 img = Image.open

python自然語言處理

1詞性標註 簡單的理解就是對詞性(POS)進行標註,但在不同的領域,詞性可能是不同的,Penn Treebank pos標記庫:https://blog.csdn.net/u010099495/article/details/46776617 其中程式需要安裝兩個依賴包 nlt

python自然語言處理

1標識化處理 何為標識化處理?實際上就是一個將原生字串分割成一系列有意義的分詞,其複雜性根據不同NLP應用而異,目標語言的複雜性也佔了很大部分,例如中文的標識化是要比英文要複雜。 word_tokenize()是一種通用的,面向所有語料庫的標識化方法,基本能應付絕大多數。 reg

吳裕雄 python 數據處理1

amp groupby http port enc nco img value print import time print(time.time())print(time.localtime())print(time.strftime(‘%Y-%m-%d %X‘,time

python數字影象處理3:影象畫素的訪問與裁剪

圖片讀入程式中後,是以numpy陣列存在的。因此對numpy陣列的一切功能,對圖片也適用。對陣列元素的訪問,實際上就是對圖片畫素點的訪問。 彩色圖片訪問方式為: img[i,j,c] i表示圖片的行數,j表示圖片的列數,c表示圖片的通道數(RGB三通道分別對應0,1

python數字影象處理18:高階形態學處理

形態學處理,除了最基本的膨脹、腐蝕、開/閉運算、黑/白帽處理外,還有一些更高階的運用,如凸包,連通區域標記,刪除小塊區域等。 1、凸包 凸包是指一個凸多邊形,這個凸多邊形將圖片中所有的白色畫素點都包含在內。 函式為: skimage.morphology.conv

Python+OpenCV影象處理—— 模板匹配

百度百科:模板匹配是一種最原始、最基本的模式識別方法,研究某一特定物件物的圖案位於影象的什麼地方,進而識別物件物,這就是一個匹配問題。它是影象處理中最基本、最常用的匹配方法。模板匹配具有自身的侷限性,主要表現在它只能進行平行移動,若原影象中的匹配目標發生旋轉或大小變化,該演算

Python——pygame影象處理

上接: Python——pygame影象處理(一) 4. 一直移到最右邊: import pygame,sys pygame.init() screen = pygame.display.set_mode([640,480]) screen.fill([255

Python 自然語言處理NLP工具庫彙總

6.spaCy 這是一個商業的開源軟體。結合了Python 和Cython 優異的 NLP 工具。是快速的,最先進的自然語言處理工具。 網站: 安裝: pip install spacy 7.Polyglot Polyglot 支援大規模多語言應用程式的處理。它支援165種語言的分詞,196中語言的辨識,

python數字影象處理5:影象的繪製

實際上前面我們就已經用到了影象的繪製,如: io.imshow(img)   這一行程式碼的實質是利用matplotlib包對圖片進行繪製,繪製成功後,返回一個matplotlib型別的資料。因此,我們也可以這樣寫: import matplotlib.pyplot as plt plt.imsh

學習爬蟲框架WebMagic---入門案例

一、WebMagic簡介   參見網上其他介紹。 二、新增依賴 <!-- webmagic 核心包 --> <dependency> <groupId>us.codecraft</groupId> <artif