机器学习(4)特征预处理
目錄
一、基礎(chǔ)理論
1、定義
2、特征數(shù)據(jù)的無量綱化
3、歸一化、標(biāo)準(zhǔn)化分析
歸一化
標(biāo)準(zhǔn)化? ? ? ?
二、歸一化
1、歸一化基本原理
過程:
?1、讀取待處理數(shù)據(jù)
2、創(chuàng)建歸一化轉(zhuǎn)換器
3、歸一化處理(調(diào)用fit_transform)
代碼
三、標(biāo)準(zhǔn)化
1、標(biāo)準(zhǔn)化基本原理
2、API
過程:
1、讀取待處理數(shù)據(jù)
2、創(chuàng)建標(biāo)準(zhǔn)化轉(zhuǎn)換器
3、標(biāo)準(zhǔn)化處理
代碼
總代碼
一、基礎(chǔ)理論
1、定義
特征預(yù)處理:通過一些轉(zhuǎn)換函數(shù),將特征數(shù)據(jù)轉(zhuǎn)換成更加適合計算的算法模型。
2、特征數(shù)據(jù)的無量綱化
歸一化、標(biāo)準(zhǔn)化
3、歸一化、標(biāo)準(zhǔn)化分析
歸一化
????????歸一化要用到最大值、最小值對數(shù)據(jù)處理,那如果最大、最小值出了問題,歸一化結(jié)果很容易受到影響。 (魯棒性(健壯性)較差)
標(biāo)準(zhǔn)化? ? ? ?
????????標(biāo)準(zhǔn)化要用到均值、標(biāo)準(zhǔn)差對數(shù)據(jù)處理,有較強的魯棒性(健壯性)
缺點顯而易見,所以,標(biāo)準(zhǔn)化更常用。(標(biāo)準(zhǔn)化更適合嘈雜的大數(shù)據(jù)場景)
二、歸一化
1、歸一化基本原理
對原始數(shù)據(jù)進行變換,把數(shù)據(jù)映射到(0,1)之間。
?(max、min分別為某一特征最大、最小值)(默認值:mx為1,mi為0)
例:
過程:
?1、讀取待處理數(shù)據(jù)
讀取數(shù)據(jù):
# 1、讀取待歸一化的數(shù)據(jù)data = pd.read_csv('dating.txt')print(data)
保留待歸一化的數(shù)據(jù)(忽略掉不需要歸一化的部分):
# 保留需要歸一化的數(shù)據(jù)(前三列)data = data.iloc[:, :3]print(data)
2、創(chuàng)建歸一化轉(zhuǎn)換器
# 2、創(chuàng)建歸一化轉(zhuǎn)換器transfer = MinMaxScaler()
3、歸一化處理(調(diào)用fit_transform)
# 3、歸一化處理(調(diào)用fit_transform)new_data = transfer.fit_transform(data)print(new_data)
歸一化缺陷:由于本身是根據(jù)最大、最小值求出來的,那如果最大、最小值出了問題,歸一化結(jié)果很容易受到影響。 (魯棒性較差)
代碼
# 歸一化處理
def Normalize():# 1、讀取待歸一化的數(shù)據(jù)data = pd.read_csv('dating.txt')# print(data)# 保留需要歸一化的數(shù)據(jù)(前三列)data = data.iloc[:, :3]print(data)# 2、創(chuàng)建歸一化轉(zhuǎn)換器transfer = MinMaxScaler()# 3、歸一化處理(調(diào)用fit_transform)new_data = transfer.fit_transform(data)print(new_data)
三、標(biāo)準(zhǔn)化
1、標(biāo)準(zhǔn)化基本原理
定義:
通過對原始數(shù)據(jù)進行變換,把數(shù)據(jù)變換到均值為0,標(biāo)準(zhǔn)差為1的范圍。
公式:?
(即:result = (x-均值)/標(biāo)準(zhǔn)差)
標(biāo)準(zhǔn)化優(yōu)勢:
便于處理異常點。(少量異常點對均值和標(biāo)準(zhǔn)差影響不大)
?
2、API
sklearn.preprocessing.StandardScaler
?
過程:
1、讀取待處理數(shù)據(jù)
和上面一樣?
# 1、讀取待歸一化的數(shù)據(jù)data = pd.read_csv('dating.txt')# print(data)# 保留需要標(biāo)準(zhǔn)化的數(shù)據(jù)(前三列)data = data.iloc[:, :3]print(data)
2、創(chuàng)建標(biāo)準(zhǔn)化轉(zhuǎn)換器
# 2、創(chuàng)建標(biāo)準(zhǔn)化轉(zhuǎn)換器transfer = StandardScaler()
3、標(biāo)準(zhǔn)化處理
# 3、標(biāo)準(zhǔn)化處理(調(diào)用fit_transform)new_data = transfer.fit_transform(data)print(new_data)
代碼
# 標(biāo)準(zhǔn)化處理
def Standardize():# 1、讀取待歸一化的數(shù)據(jù)data = pd.read_csv('dating.txt')# print(data)# 保留需要標(biāo)準(zhǔn)化的數(shù)據(jù)(前三列)data = data.iloc[:, :3]print(data)# 2、創(chuàng)建標(biāo)準(zhǔn)化轉(zhuǎn)換器transfer = StandardScaler()# 3、標(biāo)準(zhǔn)化處理(調(diào)用fit_transform)new_data = transfer.fit_transform(data)print(new_data)
總代碼
# 數(shù)據(jù)預(yù)處理 -- 歸一化和標(biāo)準(zhǔn)化
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler# 數(shù)據(jù)集
data = ['我雖然是一只小菜雞', '目前比較菜', '但是在不斷干飯', '努力成為戰(zhàn)斗雞']# 歸一化處理
def Normalize():# 1、讀取待歸一化的數(shù)據(jù)data = pd.read_csv('dating.txt')# print(data)# 保留需要歸一化的數(shù)據(jù)(前三列)data = data.iloc[:, :3]print(data)# 2、創(chuàng)建歸一化轉(zhuǎn)換器transfer = MinMaxScaler()# 3、歸一化處理(調(diào)用fit_transform)new_data = transfer.fit_transform(data)print(new_data)# 標(biāo)準(zhǔn)化處理
def Standardize():# 1、讀取待歸一化的數(shù)據(jù)data = pd.read_csv('dating.txt')# print(data)# 保留需要標(biāo)準(zhǔn)化的數(shù)據(jù)(前三列)data = data.iloc[:, :3]print(data)# 2、創(chuàng)建標(biāo)準(zhǔn)化轉(zhuǎn)換器transfer = StandardScaler()# 3、標(biāo)準(zhǔn)化處理(調(diào)用fit_transform)new_data = transfer.fit_transform(data)print(new_data)if __name__ == '__main__':# 歸一化處理# Normalize()# 標(biāo)準(zhǔn)化處理Standardize()
總結(jié)
以上是生活随笔為你收集整理的机器学习(4)特征预处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(2)特征提取1 -- 字典特征
- 下一篇: 机器学习(5)降维 -- 特征选择(低方