數據預處理(Python&R)學習筆記


數據預處理(Python&R)學習筆記

  首先,讓我們先來看一下我們要處理的數據實例:

  我們的目的是讓這樣的原始數據處理成機器學習算法可以直接計算的額數據形式。對於該數據實例,有以下幾個操作關鍵:

  1.進行缺失數據處理

   對缺失值進行處理的一般思路是使用這一列數據的“平均數”,“中位數”或“眾數”來填充,這里我們利用“中位數”來填充。

  2.處理分類特征的數據(Country&Purchased)

   像Country和Purchased這兩列數據,其實質是分類,而不是數值大小,在這里使用虛擬編碼對其進行處理。比如,對於Country這一列數據,使用OnehotEncoder進行處理。

  3.將數據集分成訓練集和測試集

   將數據集分成訓練集和測試集是十分必要的,我們一般會隨機地將數據集的25%或20%(一般不超過40%)數據設置為測試集,剩下的為訓練集。這里我們設置20%為測試集。

  4.特征縮放

   特征縮放在一些機器學習算法中必要的,比如在涉及到歐氏距離計算的算法、決策樹算法中。是為了防止數值較大的自變量對數值較小的自變量的影響(比如例子中Salary這一列與Age這一列)或是為了在算法中使得收斂速度更快。關於特征縮放有以下兩種方法(標准化和正常化):

 

    很顯然,對於Salary&Age這兩列的數據進行特征縮放毋庸置疑,但對於像Country&Purchased這兩列進行虛擬編碼的數據是否需要特征縮放就需要視情況而定。在這里是對所有自變量的數據進行特征縮放。

 

  好了,現在可以開始使用Python&R進行操作了。

  一、數據預處理(Python)

  ①導入標准庫

# Data Preprocessing Template

# Importing the libraries
import numpy as np import matplotlib.pyplot as plt import pandas as pd

  ②導入數據集,並划分自變量矩陣和因變量向量

# Importing the dataset
dataset = pd.read_csv('Data.csv') X = dataset.iloc[:, :-1].values y = dataset.iloc[:, 3].values

  ③利用每列平均數填充缺失值

# Taking care of missing data
from sklearn.preprocessing import Imputer imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0) imputer = imputer.fit(X[:, 1:3]) X[:, 1:3] = imputer.transform(X[:, 1:3])

  ④對分類特征的數據(Country&Purchased)進行處理

# Encoding categorical data # Encoding the Independent Variable
from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) onehotencoder = OneHotEncoder(categorical_features = [0]) X = onehotencoder.fit_transform(X).toarray() # Encoding the Dependent Variable
labelencoder_y = LabelEncoder() y = labelencoder_y.fit_transform(y)

  ⑤將數據分成訓練集和測試集

# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

  ⑥特征縮放

# Feature Scaling
from sklearn.preprocessing import StandardScaler sc_X = StandardScaler() X_train = sc_X.fit_transform(X_train) X_test = sc_X.transform(X_test)

  以上步驟並不是每一步都是必需的,要視具體情況而定。

  二、數據預處理(R)

  ①導入數據集

# Data Preprocessing

# Importing the dataset
dataset = read.csv('Data.csv')

  ②對缺失數據進行處理

# Taking care of missing data
dataset$Age[is.na(dataset$Age)] = mean(dataset$Age, na.rm = T) dataset$Age[is.na(dataset$Salary)] = mean(dataset$Salary, na.rm = T)

  ③對分類特征的數據(Country&Purchased)進行處理

# Encoding categorical data
dataset$Country = factor(dataset$Country, levels = c('France', 'Spain', 'Germany'), labels = c(1, 2, 3)) dataset$Purchased = factor(dataset$Purchased, levels = c('No', 'Yes'), labels = c(0, 1))

  ④將數據分成訓練集和測試集

# Splitting the dataset into the Training set and Test set # install.packages('caTools')
library(caTools) set.seed(123) split = sample.split(dataset$Purchased, SplitRatio = 0.8) training_set = subset(dataset, split == TRUE) test_set = subset(dataset, split == FALSE)

  ⑤特征縮放

# Feature Scaling
training_set[, 2:3] = scale(training_set[, 2:3]) test_set[, 2:3] = scale(test_set[, 2:3])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM