大師兄的數(shù)據(jù)分析學習筆記(十二):特征預處理(三)
大師兄的數(shù)據(jù)分析學習筆記(十四):機器學習與數(shù)據(jù)建模
五瑟匆、特征降維
- 在探索性數(shù)據(jù)分析中窥妇,特征降維的方法通常分為線性降維和非線性降維埠胖。
- 而在這里,我們將特征降維的方法分為無監(jiān)督和監(jiān)督學習方法:
1. 無監(jiān)督方法
- 通尘旨裕可以考慮采取PCA變換和奇異值分解等方式宝踪。
- PCA變換和奇異值分解都屬于無監(jiān)督的降維方法箭昵,即不會考慮標注税朴,而是讓特征與特征間的相關(guān)性強弱來決定降維后的分布形態(tài)。
- PCA變化的流程如下:
- 求特征協(xié)方差矩陣;
- 求協(xié)方差的特征值和特征向量正林;
- 將特征值按照從大到小的順序排列泡一,選擇其中最大的k個;
- 將樣本點投影到選取的特征向量上
2. 監(jiān)督學習方法
- 非線性降維通常采取LDA降維(Linear Discriminant Analysis, 線性判別式分析)。
- LDA的核心思想:投影變換后觅廓,同一標準內(nèi)距離盡可能斜侵摇;不同標注間距離盡可能大杈绸。
- 方法如下:
- 首先計算每個標注下帖蔓,每個特征的均值:
- 接下來最大化一個函數(shù),函數(shù)變量為參數(shù):
- 為了解決兩個子矩陣尺寸大小不一致的情況瞳脓,需要將公式進行等效:
- 計算出后塑娇,就確定了新的空間下,分離程度最大的方向:
>>>import os
>>>import pandas as pd
>>>from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
>>>df = pd.read_csv(os.path.join(".", "data", "WA_Fn-UseC_-HR-Employee-Attrition.csv"))
>>>data = pd.concat([df.HourlyRate,df.Education,df.JobSatisfaction],axis=1)
>>>print(data)
HourlyRate Education JobSatisfaction
0 94 2 4
1 61 1 2
2 92 2 3
3 56 4 3
4 40 1 2
... ... ...
1465 41 2 4
1466 42 1 1
1467 87 3 2
1468 63 3 2
1469 82 3 3
>>>LDA = LinearDiscriminantAnalysis(n_components= 1 ).fit_transform(data,df.HourlyRate)
>>>print(LDA)
[[-0.6015412 ]
[-1.96727988]
[-0.80987762]
...
[-0.06914822]
[-0.06914822]
[ 0.1391882 ]]
六劫侧、特征衍生
- 因為通過采集得到的特征埋酬,未必能夠反應數(shù)據(jù)的全部信息,所以需要通過數(shù)據(jù)組合來發(fā)現(xiàn)新的含義板辽。
- 特征衍生就是對現(xiàn)有的特征進行組合奇瘦,形成某個新的有含義的特征。
- 特征衍生常見方法如下:
- 加減乘除
- 求導或高階求導
- 人工歸納劲弦,也就是引入常識性相關(guān)的特征因素。