Python中有哪些數(shù)據(jù)預(yù)處理方法,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
成都創(chuàng)新互聯(lián)公司專注于江干企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),成都商城網(wǎng)站開發(fā)。江干網(wǎng)站建設(shè)公司,為江干等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
1.標(biāo)準(zhǔn)化:去均值,方差規(guī)?;?/strong>
Standardization標(biāo)準(zhǔn)化:將特征數(shù)據(jù)的分布調(diào)整成標(biāo)準(zhǔn)正態(tài)分布,也叫高斯分布,也就是使得數(shù)據(jù)的均值為0,方差為1.
標(biāo)準(zhǔn)化的原因在于如果有些特征的方差過大,則會主導(dǎo)目標(biāo)函數(shù)從而使參數(shù)估計器無法正確地去學(xué)習(xí)其他特征。
標(biāo)準(zhǔn)化的過程為兩步:去均值的中心化(均值變?yōu)?);方差的規(guī)?;ǚ讲钭?yōu)?)。
from sklearn import preprocessing from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target '''標(biāo)準(zhǔn)變換''' scaler = preprocessing.StandardScaler().fit(X) x_scaler=scaler.transform(X)
2. 最小-最大規(guī)范化
最小-最大規(guī)范化對原始數(shù)據(jù)進(jìn)行線性變換,變換到[0,1]區(qū)間(也可以是其他固定最小最大值的區(qū)間)
min_max_scaler = preprocessing.MinMaxScaler() x_train_minmax = min_max_scaler.fit_transform(X)
3.MaxAbsScaler
max_abs_scaler = preprocessing.MaxAbsScaler() x_train_maxabs = max_abs_scaler.fit_transform(X)
4.RobustScaler:帶有outlier的數(shù)據(jù)的標(biāo)準(zhǔn)化
transformer = preprocessing.RobustScaler().fit(X) x_robust_scaler=transformer.transform(X)
5.QuantileTransformer 分位數(shù)變換
quantile_transformer = preprocessing.QuantileTransformer(random_state=0) X_train_trans = quantile_transformer.fit_transform(X)
6.Box-Cox
Box-Cox變換是Box和Cox在1964年提出的一種廣義冪變換方法,是統(tǒng)計建模中常用的一種數(shù)據(jù)變換,用于連續(xù)的響應(yīng)變量不滿足正態(tài)分布的情況。Box-Cox變換之后,可以一定程度上減小不可觀測的誤差和預(yù)測變量的相關(guān)性。Box-Cox變換的主要特點(diǎn)是引入一個參數(shù),通過數(shù)據(jù)本身估計該參數(shù)進(jìn)而確定應(yīng)采取的數(shù)據(jù)變換形式,Box-Cox變換可以明顯地改善數(shù)據(jù)的正態(tài)性、對稱性和方差相等性,對許多實際數(shù)據(jù)都是行之有效。變化方式如下:
pt = preprocessing.PowerTransformer(method='box-cox', standardize=False) pt.fit_transform(X)
7.規(guī)范化(Normalization)
規(guī)范化是將不同變化范圍的值映射到相同的固定范圍,常見的是[0,1],此時也稱為歸一化。
X_normalized = preprocessing.normalize(X, norm='l2')
8.獨(dú)熱編碼
enc = preprocessing.OneHotEncoder(categories='auto') enc.fit(y.reshape(-1,1)) y_one_hot=enc.transform(y.reshape(-1,1)) y_one_hot.toarray()
9.Binarizer二值化
binarizer = preprocessing.Binarizer(threshold=1.1) binarizer.fit(X) binarizer.transform(X)
10.多項式變換
poly =preprocessing.PolynomialFeatures(2) poly.fit_transform(X)
11.自定義變換
transformer = preprocessing.FunctionTransformer(np.log1p, validate=True) transformer.fit(X) log1p_x=transformer.transform(X)
看完上述內(nèi)容,你們掌握Python中有哪些數(shù)據(jù)預(yù)處理方法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!