1、特征工程
1.1相關(guān)定義
1.1.1 數(shù)據(jù)集
數(shù)據(jù)集的構(gòu)成:特征值+目標(biāo)值(有些數(shù)據(jù)集是可以沒(méi)有目標(biāo)值的)
機(jī)器學(xué)習(xí)開發(fā)流程:1)獲取數(shù)據(jù)2)數(shù)據(jù)處理3)特征工程4)機(jī)器學(xué)習(xí)算法訓(xùn)練-得到模型
5)模型評(píng)估6)應(yīng)用
數(shù)據(jù)集分為訓(xùn)練集個(gè)測(cè)試集
1.1.2特征工程介紹
特征工程是使用專業(yè)背景知識(shí)和技巧處理數(shù)據(jù),使得特征能在機(jī)器學(xué)習(xí)算法上發(fā)揮更好的作用的過(guò)程。特征工程包括:
1)特征抽取/特征提取
2)特征預(yù)處理
3)特征降維
1.2特征抽取
1.2.1定義
特征提取就是把任意數(shù)據(jù)轉(zhuǎn)化為可用于機(jī)器學(xué)習(xí)的數(shù)據(jù)特征,特征值能夠更好的理解數(shù)據(jù),特征提取包括:字典特征提取(特征離散化)、文本特征提取、圖像特征提取
通俗的理解就是將我們所輸入的信息生成一個(gè)的向量數(shù)據(jù),從而使的機(jī)器能夠更好的理解數(shù)據(jù)。
特征提取的語(yǔ)句為:sklearn.feature_extraction
1.2.2字典特征提取
對(duì)字典數(shù)據(jù)進(jìn)行特征值化。語(yǔ)句為:sklearn.feature_extraction.DictVectorizer(sparse=True, …)
DictVectorizer.fit_transform(X), X:字典或者包含字典的迭代器返回值,返回sparse矩陣
DictVectorizer.inverse_transform(X), X:array數(shù)組或者sparse矩陣 返回值:轉(zhuǎn)換之前數(shù)據(jù)格式;DictVectorizer.get_feature_names():返回類別名稱
DictVectorizer是字典體征提取的方法
sparse矩陣為稀疏矩陣,指的是在數(shù)值分析中絕大多數(shù)數(shù)值為零的矩陣,能夠降低內(nèi)存

輸出結(jié)果為:

1.2.3文本特征提取
即對(duì)文本數(shù)據(jù)進(jìn)行特征值化,基本語(yǔ)句為:
sklearn.feature_extraction.text.CountVectorizer(stop_words=[]):
CountVectorizer是屬于常見的特征數(shù)值計(jì)算類,是一個(gè)文本特征提取方法
(1)處理英文

輸出結(jié)果為:

需要注意的點(diǎn)有:
1)導(dǎo)入的庫(kù)是sklearn.feature_extraction.text,而不是sklearn.feature_extraction
2)fit_transform會(huì)自動(dòng)去除單個(gè)詞,因此輸出的結(jié)果中是沒(méi)有i的
3)toarray是將特征值轉(zhuǎn)換為二維數(shù)組
(2)處理中文

輸出結(jié)果為:

(3)停用詞:stop_words=[ ]
輸出結(jié)果為:
即,stop_words中的詞不會(huì)再出現(xiàn)在特征名字中。
1.3特征預(yù)處理
就是通過(guò)一些轉(zhuǎn)換函數(shù),將特征數(shù)據(jù)轉(zhuǎn)化為更適合算法模型的特征數(shù)據(jù)的過(guò)。由于特征單位相差較大,很多時(shí)候不是同一個(gè)量級(jí),所以需要對(duì)數(shù)據(jù)進(jìn)行無(wú)量綱化處理,即歸一化和標(biāo)準(zhǔn)化
1.3.1 歸一化
將原始數(shù)據(jù)進(jìn)行變化將數(shù)據(jù)映射到[0,1]之間(默認(rèn)是0,1)公式為
基本語(yǔ)句為:sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)
處理數(shù)據(jù)時(shí)的代碼表達(dá)如下:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
def minmax_demo():
data = pd.read_csv(‘具體數(shù)據(jù)’)
? ? print("data:\n", data)
? ? transform = MinMaxScaler()
? ? data_new = transform.fit_transform(data)
? ? print("data_new:\n", data_new)
? ? return None
if __name__ == "__main__":
? ? minmax_demo()
由于一組數(shù)據(jù)之中最大值和最小值很容易收到異常值的影響,從而使得歸一化的結(jié)果不大穩(wěn)定,實(shí)際中可以用經(jīng)驗(yàn)常量來(lái)代替最大最小值。在不涉及距離度量、協(xié)方差計(jì)算、數(shù)據(jù)不大符合正態(tài)分布的時(shí)候,可以使用歸一化法。
1.3.2 標(biāo)準(zhǔn)化法
將數(shù)據(jù)變換為均值為0方差為1范圍內(nèi)的數(shù)據(jù),公式為:,在分類、聚類算法中,需要使用距離來(lái)度量相似性的時(shí)候,適合使用標(biāo)準(zhǔn)化法
基本語(yǔ)句為:sklearn.perprocessing.StandradScaler()
處理數(shù)據(jù)時(shí)的格式為:
from sklearn.preprocessing import MinMaxScaler, StandardScaler
def stand_demo():
? ? data = pd.read_csv('數(shù)據(jù)')
? ? print("data:\n", data)
? ? transform = StandardScaler()
? ? data_new = transform.fit_transform(data)
? ? print("data_new:\n", data_new)
? ? return None
if __name__ == "__main__":
stand_demo()
標(biāo)準(zhǔn)化數(shù)據(jù)處理在已有樣本足夠多的情況下比較穩(wěn)定。
1.4特征降維
降維是指在某些限定條件下,降低隨機(jī)變量(特征)個(gè)數(shù),得到一組“不相關(guān)”主變量的過(guò)程。通俗的理解就是,通過(guò)一些方法提取出一些較具有代表性的隨機(jī)變量,從而減少數(shù)據(jù)個(gè)數(shù),提升效率的同時(shí)又減少信息的損耗量。
特征降維的方法包括特征選擇和主成分分析。
1.4.1 特征選擇
特征選擇的目標(biāo)就是從原有特征中找到主要特征。主要包含以下方法:
Filter過(guò)濾式:主要探究特征本身特點(diǎn)、特征與特征和目標(biāo)值之間關(guān)聯(lián)
a.方差選擇法:低方差特征過(guò)濾
b.相關(guān)系數(shù):特征與特征之間的相關(guān)程度
Embedded嵌入式:算法自動(dòng)選擇特征(特征與目標(biāo)值之間的關(guān)聯(lián))
a.決策樹:信息熵、信息增益
b.正則化:L1,L2
c.深度學(xué)習(xí):卷積等
基本語(yǔ)句為:sklearn.feature_selection
1.4.2 過(guò)濾式
低方差過(guò)濾的基本語(yǔ)句為:from sklearn.feature_selection import VarianceThreshold

1.4.3 相關(guān)系數(shù)法
通過(guò)計(jì)算皮爾遜相關(guān)系數(shù)反應(yīng)變量之間的密切程度,所以基本語(yǔ)句為:
from scipy.stats import pearsonr
1.5主成分分析
主成分分析就是利用原始變量的線性組合形成幾個(gè)綜合指標(biāo)(主成分),從而在保留原始變量絕大多數(shù)信息的情況下達(dá)到降維的目的,從而簡(jiǎn)化問(wèn)題的復(fù)雜性,抓住主要矛盾。
基本語(yǔ)句為:sklearn.decomposition.PCA(n_components=None)

需要注意的點(diǎn)有:(1)n_components,后面對(duì)應(yīng)的是整數(shù)時(shí),就是減少到多少特征,如果是小數(shù)就是保留百分之多少的信息
(2)PCA.fit_transform(X),X:numpy array格式的數(shù)據(jù)[N_samples, n_features],返回值:轉(zhuǎn)換后指定維度的array