99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)預(yù)處理--數(shù)據(jù)降維
數(shù)據(jù)預(yù)處理--數(shù)據(jù)降維
2018-03-01
收藏

數(shù)據(jù)預(yù)處理--數(shù)據(jù)降維


數(shù)據(jù)規(guī)約產(chǎn)生更小但保持數(shù)據(jù)完整性的新數(shù)據(jù)集。在規(guī)約后的數(shù)據(jù)集上進行數(shù)據(jù)分析和挖掘?qū)⒏行省?

機器學(xué)習(xí)領(lǐng)域中所謂的降維就是指采用某種映射方法,將原高維空間中的數(shù)據(jù)點映射到低維度的空間中。降維的本質(zhì)是學(xué)習(xí)一個映射函數(shù) f : x->y,其中x是原始數(shù)據(jù)點的表達,目前最多使用向量表達形式。 y是數(shù)據(jù)點映射后的低維向量表達,通常y的維度小于x的維度(當然提高維度也是可以的)。f可能是顯式的或隱式的、線性的或非線性的。

目前大部分降維算法處理向量表達的數(shù)據(jù),也有一些降維算法處理高階張量表達的數(shù)據(jù)。之所以使用降維后的數(shù)據(jù)表示是因為在原始的高維空間中,包含有冗余信息以及噪音信息,在實際應(yīng)用例如圖像識別中造成了誤差,降低了準確率;而通過降維,我們希望減少冗余信息所造成的誤差,提高識別(或其他應(yīng)用)的精度。又或者希望通過降維算法來尋找數(shù)據(jù)內(nèi)部的本質(zhì)結(jié)構(gòu)特征

在很多算法中,降維算法成為了數(shù)據(jù)預(yù)處理的一部分,如PCA。事實上,有一些算法如果沒有降維預(yù)處理,其實是很難得到很好的效果的。1

主要是介紹了PCA,還有其他降維算法:LDA(Linear Discriminant Analysis)2,LLE (Locally Linear Embedding) 局部線性嵌入3,拉普拉斯特征映射4。

主成分分析–PCA

主成分分析也稱為卡爾胡寧-勒夫變換(Karhunen-Loeve Transform),是一種用于探索高維數(shù)據(jù)結(jié)構(gòu)的技術(shù)。PCA通常用于高維數(shù)據(jù)集的探索與可視化。還可以用于數(shù)據(jù)壓縮,數(shù)據(jù)預(yù)處理等。PCA可以把可能具有相關(guān)性的高維變量合成線性無關(guān)的低維變量,稱為主成分( principal components)。新的低維數(shù)據(jù)集會經(jīng)可能的保留原始數(shù)據(jù)的變量。

PCA將數(shù)據(jù)投射到一個低維子空間實現(xiàn)降維。例如,二維數(shù)據(jù)集降維就是把點投射成一條線,數(shù)據(jù)集的每個樣本都可以用一個值表示,不需要兩個值。三維數(shù)據(jù)集可以降成二維,就是把變量映射成一個平面。一般情況下,n 維數(shù)據(jù)集可以通過映射降成k 維子空間。5

在Python中,主成分的函數(shù)位于Scikit-Learn下:
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

參數(shù)說明:

n_components

意義:PCA算法中所要保留的主成分個數(shù)n,也即保留下來的特征個數(shù)。也可以是設(shè)置解釋變量的比例。6如:pca =PCA(n_components=.98)

類型:int或者string,缺省時默認為None,所有成分保留。賦值為int,比如n_components=1,將把原始數(shù)據(jù)降到一個維度。賦值為string,比如n_components=’mle’,將自動選取特征個數(shù)n,使得滿足所要求的方差百分比。

copy

類型:bool,True或者False,缺省時默認為True

意義:表示是否在運行算法時,將原始數(shù)據(jù)復(fù)制一份。如果為True,則運行PCA算法后,原始數(shù)據(jù)的值不會有任何改變。因為是在原始數(shù)據(jù)的副本上進行運算的。

whiten

類型:bool,缺省時默認為False

意義:白化,是的每個特征具有相同的方差。

栗子

from sklearn.decomposition import PCA
import numpy as np
import pandas as pd

data=np.random.randn(10,4)

pca=PCA()
pca.fit(data)
pca.components_  #返回模型的各個特征向量
pca.explained_variance_ratio_  #返回各個成分各自的方差百分比(貢獻率)

通過計算累計貢獻率,可以確定找到一個合適的n值,比如累計達到97%時,是前3的值,那么下一步去降維時,確定n_components=3。那么,這3維數(shù)據(jù)占了原始數(shù)據(jù)95%以上的信息。7

下面,再重新建立PCA模型。

pca=PCA(3)
pca.fit(data)
low_d=pca.transform(data)  #用這個方法來降低維度
pd.DataFrame(low_d).to_excel('result.xlsx')  #保存結(jié)果
pca.inverse_transform(low_d)  #必要時,可以用這個函數(shù)來復(fù)原數(shù)據(jù)。



數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }