1. 程式人生 > >機器學習(一):用sklearn進行資料預處理:缺失值處理、資料標準化、歸一化

機器學習(一):用sklearn進行資料預處理:缺失值處理、資料標準化、歸一化

在我們平時進行資料資料探勘建模時,一般首先得對資料進行預處理,其中就包括資料缺失值、異常值處理、資料的標準化、歸一化等等。

下面主要介紹如何對一個數據檔案進行資料的缺失值處理、標準化和歸一化

MID_SP MID_AC MID_R25 MID_COND LITHO1
55.195 395.7 3.65 253.883 0.238
62.514 403.406 6.633 NAN 0.051
69.307 410.574 3.656 303.685 0.332
NAN 406.873 4.874 159.814 0.197
65.529 404.019 NAN 234.114 0.331
63.564 396.497 4.901 146.675 0.217
61.142 401.276 8.883 73.528 0
61.075 386.493 7.884 147.242 NAN
60.044 400.443 5.207 140.7292 0.084
首 先進行資料介紹:每一行表示一個樣本,每一列表示特徵,可以發現上述有些特徵存在無效值NAN,如果我們想用每一個特徵的全域性平均值來代替無效值,程式碼如下:
from sklearn。preprocessing import Imputer

import numpy as np

#匯入要進行缺失值處理的資料檔案,資料檔案上面有展示
data = np.genfromtxt('input.csv', skip_header=True, delimiter=',')

imp = Imputer(missing_values='NAN', strategy='mean', axis=0)
#上面'NAN'表示無效值在資料檔案中的標識是'NAN',strategy='mean'表示用全域性平均值代替無效值,axis=0表示對列進行處理

imp.fit(data)
#訓練一個缺失值處理模型

outfile = imp.transform(data)

#儲存到本地
np.savetxt('outfile.csv', outfile, delimiter=',')

效果如下:
MID_SP MID_AC MID_R25 MID_COND LITHO1
55.195 395.7 3.65 253.883 0.238
62.514 403.406 6.633 182.4588 0.051
69.307 410.574 3.656 303.685 0.332
62.29625 406.873 4.874 159.814 0.197
65.529 404.019 5.711 234.114 0.331
63.564 396.497 4.901 146.675 0.217
61.142 401.276 8.883 73.528 0
61.075 386.493 7.884 147.242 0.18125
60.044 400.443 5.207 140.7292 0.084
進行完缺失值處理後,其實在實際工作中,還需要對離群點進行處理,這裡先假設這步已進行完畢

接下來進行資料標準化,公式為:(x-x_mean)/ x_std 計算時對每個屬性/每列分別進行

# -*- coding: utf-8 -*-
"""
Created on Mon Nov 27 23:13:09 2017

@author: wq
"""


from sklearn import preprocessing

import numpy as np

data = np.genfromtxt('input.csv', skip_header=True, delimiter=',')


#對一個數據集進行Z標準化,每一行表示一個樣本,每一列表示一個特徵引數

zdata = preprocessing.scale(data)

np.savetxt('z_core_out.txt', zdata, delimiter=',')
效果如下:
MID_SP MID_AC MID_R25 MID_COND LITHO1
-1.94817 -0.73419 -1.21929 1.083537 0.515267
0.059738 0.423558 0.545455 -5.1E-10 -1.18262
1.923342 1.500474 -1.21574 1.839055 1.368749
0 0.944438 -0.49517 -0.34353 0.143004
0.886878 0.515655 0 0.783633 1.35967
0.347797 -0.61445 -0.4792 -0.54286 0.324596
-0.31666 0.103548 1.876553 -1.65253 -1.64568
-0.33504 -2.11744 1.285546 -0.53425 -2.5E-16
-0.61789 -0.0216 -0.29817 -0.63306 -0.88299
有時由於各特徵引數的數量級不在一個級別內,比如示例資料MID_COND和LITH0量級就不在一個級別內,當我們需要把每個特徵都縮到0-1之間時,可以用如下程式碼:
#對一個數據集進行歸一化,即資料縮至0-1之間,每一行表示一個樣本,每一列表示一個特徵引數

min_max_scale = preprocessing.MinMaxScaler()

min_max_data = min_max_scale.fit_transform(data)

np.savetxt('min_max_out1.csv', min_max_data, delimiter=',')
效果如下:
MID_SP MID_AC MID_R25 MID_COND LITHO1
0 0.382335 0 0.783617 0.716867
0.518637 0.702338 0.570036 0.473289 0.153614
1 1 0.001147 1 1
0.503206 0.84631 0.2339 0.374901 0.593373
0.732285 0.727794 0.393847 0.697724 0.996988
0.593041 0.415431 0.23906 0.317813 0.653614
0.421414 0.613886 1 0 0
0.416667 0 0.809096 0.320277 0.545934
0.343608 0.579295 0.297535 0.29198 0.253012

相關推薦

機器學習sklearn進行資料處理缺失處理資料標準化

在我們平時進行資料資料探勘建模時,一般首先得對資料進行預處理,其中就包括資料缺失值、異常值處理、資料的標準化、歸一化等等。 下面主要介紹如何對一個數據檔案進行資料的缺失值處理、標準化和歸一化 MID_SP MID_AC MID_R25 MID_COND LITHO1 55.

前置機器學習文掌握Pandas用法

> Pandas提供快速,靈活和富於表現力的**資料結構**,是強大的**資料分析**Python庫。 本文收錄於[機器學習前置教程系列](https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUxMjU4NjI4MQ=

Andrew Ng機器學習什麽是機器學習

中學 修正 style tar 輸入 color 情況 html 知識 1.什麽是機器學習? 自動化:讓計算機處理繁瑣和重復的工作。 編程:設計一種算法,適用於解決特定的問題。 機器學習:可以解決更廣泛的而不是特定的問題。類比於人類從經驗中學習這種活動,從已有的數據中發現自

Java虛擬機器學習1體系結構 記憶體模型

JVM記憶體區域模型 1.方法區 也稱”永久代” 、“非堆”,  它用於儲存虛擬機器載入的類資訊、常量、靜態變數、是各個執行緒共享的記憶體區域。預設最小值為16MB,最大值為64MB,可以通過-XX:PermSize 和 -XX:MaxPermSize 引數限制方法區的大小。

Python教程進擊機器學習--Scipy

Python教程:進擊機器學習(五)--Scipy 2017年08月05日 21:22:32 Whytin-Vicky 閱讀數:39876   Scipy簡介 檔案輸入和輸出scipyio 線性代數操作scipylinalg 快速傅立

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 神經網路引數的反向傳播演算法 代價函式 假設神經網路的訓練樣本有 m

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第六章 神經網路學習 特徵和直觀理解 從本質上講,神經網路能夠通過學習得出其自身的一系列特徵。 神經網路中,單層神經元( 無中間層)的計算可用來表示邏輯運算,比如邏輯與(AND)、邏輯或(OR)。 邏輯

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第六章 神經網路學習 非線性假設 無論是線性迴歸還是邏輯迴歸都有這樣一個缺點:當特徵太多時,計算的負荷會非常大。 使用非線性的多項式項,能夠幫助我們建立更好的分類模型。假設我們有非常多的特徵,例如大於 100 個

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第五章 正則化 過擬合問題 線性迴歸和邏輯迴歸能夠有效地解決許多問題,但是當將它們應用到某些特定的機器學習應用時,會遇到過擬合(over-fitting)的問題,可能會導致它們效果很差。 正則化(regulari

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第四章 Logistic迴歸 簡化代價函式與梯度下降 邏輯迴歸的代價函式: C

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第四章 Logistic迴歸 分類 在分類問題中,要預測的變數y是離散的值,邏輯迴歸 (Logistic Regression) 演算法是目前最流行使用最廣泛的一種學習演算法。 在分類問題中,我們嘗試預測的是結果

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第三章 多變數線性迴歸 多維特徵 現在我們對房價模型增加更多的特徵,例如房間數樓層等,構成一個含有多個變數的模型,模型中的特徵為

演算法工程師修仙之路吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第二章 單變數線性迴歸 模型描述 我們使用一個監督學習演算法的例子:預測住房價格。 我們要使用一個數據集,資料集包含俄勒岡州波特蘭市的住房價格。 在這裡,我要根據不同房屋尺寸所售出的價格,畫出我的資

機器學習與深度學習系列連載 第一部分 機器學習 生成概率模型Generative Model

生成概率模型(Generative Model) 1.概率分佈 我們還是從分類問題說起: 當我們把問題問題看做是一個迴歸問題, 分類是class 1 的時候結果是1 分類為class 2的時候結果是-1; 測試的時候,結果接近1的是class1

機器學習與深度學習系列連載 第一部分 機器學習支援向量機2Support Vector Machine

另一種視角定義SVM:hinge Loss +kennel trick SVM 可以理解為就是hingle Loss和kernel 的組合 1. hinge Loss 還是讓我們回到二分類的問題,為了方便起見,我們y=1 看做是一類,y=-1 看做是另一類

機器學習與深度學習系列連載 第一部分 機器學習十三半監督學習semi-supervised learning

在實際資料收集的過程中,帶標籤的資料遠遠少於未帶標籤的資料。 我們據需要用帶label 和不帶label的資料一起進行學習,我們稱作半監督學習。 Transductive learning:沒有標籤的資料是測試資料 Inductive learning:沒有標

機器學習logistic迴歸

基礎知識: logistic迴歸其實是一個分類問題,可以定義如下:c為2時是一個兩類分類問題. 當分佈為伯努利分佈時:    logistic迴歸和線性迴歸類似,不同的條件概率是不同的,方程如下: 其中:sigmoid函式定義如下: 使用logist

機器學習機器學習中的幾個基本概念

前言 對於《統計學習方法》中遇到的一些問題,以及機器學習中的一些自己沒有理解透徹的問題,希望通過梳理總結能夠有更深入的理解。 在上一章最開始我們已經概括了統計學習方法的三要素,即模型、策略、演算法,這裡就不再詳述了。 本文討論總結了如下幾個概念:損失函式與風險

Python教程進擊機器學習--Matplotlib

介紹 Matplotlib是Python庫中最經常用來繪製圖的,它可以快速的視覺化你的資料,並且匯出不同的格式。用Matplotlib繪製的圖可以達到出版書籍和論文的質量要求。我們開始探索在處理一些常見的資料時應用Matplotlib。 pyplo

演算法工程師修仙之路吳恩達機器學習十三

吳恩達機器學習筆記及作業程式碼實現中文版 第十章 支援向量機 優化目標 在監督學習中,許多學習演算法的效能都非常類似,因此,重要的不是你該選擇使用學習演算法 A 還是學習演算法 B,而更重要的是,所建立的大量資料在應用這些演算法時,表現情況通常依賴於你的水平。比如你