1. 程式人生 > >資料預處理的四種方式

資料預處理的四種方式

資料預處理

調整資料尺寸

  • 讓所有的屬性按照相同的尺度來度量資料;
  • 梯度下降演算法
  • 神經網路
  • SVM
  • 迴歸演算法
  • K 近鄰演算法
# 調整資料尺度(0..)
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler

# 匯入資料
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age'
, 'class'] data = pd.read_csv(filename, names=names) # 將資料分為輸入資料和輸出結果 array = data.values X = array[:, 0:8] Y = array[:, 8] scaler = MinMaxScaler(feature_range=(0, 1)) # 資料轉換 rescaledX = scaler.fit_transform(X) # 設定資料的列印格式 np.set_printoptions(precision=3) print(rescaledX)

正態化資料

  • 線性迴歸
  • Logistic 迴歸
  • 線性判別分析
# 標準化資料
import numpy as np
import pandas as pd
from sklearn.preprocessing import Normalizer

# 匯入資料
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pd.read_csv(filename, names=names)
# 將資料分為輸入資料和輸出結果
array = data.values
X =
array[:, 0:8] Y = array[:, 8] scaler = Normalizer().fit(X) # 資料轉換 rescaledX = scaler.transform(X) # 設定資料的列印格式 np.set_printoptions(precision=3) print(rescaledX)

標準化資料

  • 把每一行資料的距離處理成 1;
  • 適合處理稀疏資料(有很多為 0 的資料);
  • 對使用權重輸入的神經網路和使用距離輸入的 K 近鄰演算法的準確度的提升有顯著作用。
# 標準化資料
import numpy as np
import pandas as pd
from sklearn.preprocessing import Normalizer

# 匯入資料
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pd.read_csv(filename, names=names)
# 將資料分為輸入資料和輸出結果
array = data.values
X = array[:, 0:8]
Y = array[:, 8]
scaler = Normalizer().fit(X)
# 資料轉換
rescaledX = scaler.transform(X)
# 設定資料的列印格式
np.set_printoptions(precision=3)
print(rescaledX)

二值化資料

  • 大於閾值設定為 1 ,小於閾值的設定為 0;
  • 在生產明確值或特徵工程增加屬性的時候使用;
# 二值資料

import numpy as np
import pandas as pd
from sklearn.preprocessing import Binarizer

# 匯入資料
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pd.read_csv(filename, names=names)
# 將資料分為輸入資料和輸出結果
array = data.values
X = array[:, 0:8]
Y = array[:, 8]
transform = Binarizer(threshold=0.0).fit(X)
# 資料轉換
newX = transform.transform(X)
# 設定資料的列印格式
np.set_printoptions(precision=3)
print(newX)