資料預處理

2021-09-19 05:03:45 字數 3335 閱讀 9759

資料預處理分為三種形式:

資料格式化:資料可能並不是適合我們處理的那種格式

資料清理:資料中可能存在無效的或者丟失的條目,這些資料需要被清理或者移除

資料取樣:資料可能對於特定的目的過於龐大,需要把資料使用巧妙的方式進行取樣

特徵工程:

下面是一些具體的過程:

特徵標準化 - 每個資料點減去所有資料的平均值,然後除以資料的方差

# 4.2.1特徵標準化 - 每個資料點減去所有資料的平均值,然後除以資料的方差

from sklearn import preprocessing

import numpy as np

from numpy import nan

x = np.array([[1, -2, 2],

[3, 0, 0],

[0, 1, -1]])

# 使用scale函式完成資料矩陣x的標準化

x_scaled = preprocessing.scale(x)

print(x_scaled)

# 輸出:

[[-0.26726124 -1.33630621 1.33630621]

[ 1.33630621 0.26726124 -0.26726124]

[-1.06904497 1.06904497 -1.06904497]]

特徵歸一化 - 縮放單個樣本以使他們有單位範數

# 4.2.2特徵歸一化 - 縮放單個樣本以使他們有單位範數

# l1範數

x_normalized_l1 = preprocessing.normalize(x, norm='l1')

print(x_normalized_l1)

[[ 0.2 -0.4 0.4]

[ 1. 0. 0. ]

[ 0. 0.5 -0.5]]

# l2範數

x_normalized_l2 = preprocessing.normalize(x, norm='l2')

print(x_normalized_l2)

[[ 0.33333333 -0.66666667 0.66666667]

[ 1. 0. 0. ]

[ 0. 0.70710678 -0.70710678]]

特徵縮放到一定的範圍 - 將特徵縮放到乙個給定的最小值和最大值之間,一般來說這兩個值是0和1

# 4.2.3特徵縮放到一定的範圍 - 將特徵縮放到乙個給定的最小值和最大值之間,一般來說這兩個值是0和1

min_max_scaler = preprocessing.minmaxscaler()

x_min_max = min_max_scaler.fit_transform(x)

print(x_min_max)

[[0.33333333 0. 1. ]

[1. 0.66666667 0.33333333]

[0. 1. 0. ]]

# 預設情況下,資料將會縮放到0和1之間。可以通過傳入minmaxscaler建構函式乙個關鍵字引數feature_range來制定不同的範圍

min_max_scaler = preprocessing.minmaxscaler(feature_range=(-10, 10))

x_min_max2 = min_max_scaler.fit_transform(x)

print(x_min_max2)

[[ -3.33333333 -10. 10. ]

[ 10. 3.33333333 -3.33333333]

[-10. 10. -10. ]]

特徵二值化 - 確定資料是否存在 - 使用0和1表達

binarizer = preprocessing.binarizer(threshold=0.5)

x_binarized = binarizer.transform(x)

print(x_binarized)

[[1 0 1]

[1 0 0]

[0 1 0]]

缺失資料處理

# 大多數的機器學習演算法無法處理nan(非數,因此需要把所有的nan值替換為某個合適的填充值,稱為填充缺失值

# sklearn提供了三種不同的策略來填充缺失值

from sklearn.preprocessing import imputer

# 第一種:mean - 將所有的nan值替換為矩陣指定座標軸上元素的平均值(預設axis=0)

imp = imputer(strategy='mean')

x2 = imp.fit_transform(x)

print(x2)

[[ 3.75 0. 3. ]

[ 2. 9. -8. ]

[ 1. 4.25 1. ]

[ 5. 2. 4. ]

[ 7. 6. -3. ]]

# 第二種:most_frequent - 將所有的nan值替換為矩陣在指定座標軸上出現頻率最高的值(預設axis=0) - 如果只出現一次預設為最小的

imp = imputer(strategy='most_frequent')

x2 = imp.fit_transform(x)

print(x2)

[[ 1. 0. 3.]

[ 2. 9. -8.]

[ 1. 0. 1.]

[ 5. 2. 4.]

[ 7. 6. -3.]]

# 第三種:median - 將所有的nan值替換為矩陣指定座標軸上元素的中值(預設axis=0)

imp = imputer(strategy='median')

x2 = imp.fit_transform(x)

print(x2)

[[ 3.5 0. 3. ]

[ 2. 9. -8. ]

[ 1. 4. 1. ]

[ 5. 2. 4. ]

[ 7. 6. -3. ]]

以上

資料預處理

現實世界中資料大體上都是不完整,不一致的髒資料,無法直接進行資料探勘,或挖掘結果差強人意。為了提前資料探勘的質量產生了資料預處理技術。資料預處理有多種方法 資料清理,資料整合,資料變換,資料歸約等。這些資料處理技術在資料探勘之前使用,大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間。一 資料清...

資料預處理

常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。sklearn.preprocessing scale x 一般會把train和test集放在一起做標...

資料預處理

用cut函式分箱 有時把數值聚集在一起更有意義。例如,如果我們要為交通狀況 路上的汽車數量 根據時間 分鐘資料 建模。具體的分鐘可能不重要,而時段如 上午 下午 傍晚 夜間 深夜 更有利於 如此建模更直觀,也能避免過度擬合。這裡我們定義乙個簡單的 可復用的函式,輕鬆為任意變數分箱。def binni...