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

熱線(xiàn)電話(huà):13121318867

登錄
首頁(yè)精彩閱讀當(dāng)機(jī)器學(xué)習(xí)遇到數(shù)據(jù)量不夠時(shí),這幾個(gè)Python技巧為你化解難題
當(dāng)機(jī)器學(xué)習(xí)遇到數(shù)據(jù)量不夠時(shí),這幾個(gè)Python技巧為你化解難題
2022-06-01
收藏
當(dāng)<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>遇到數(shù)據(jù)量不夠時(shí),這幾個(gè)Python技巧為你化解難題

作者:俊欣

來(lái)源:關(guān)于數(shù)據(jù)分析與可視化

有時(shí)候我們?cè)谶M(jìn)行模型的訓(xùn)練與優(yōu)化的時(shí)候,是需要基于現(xiàn)有的數(shù)據(jù)集來(lái)操作的,要是數(shù)據(jù)量比較充足的情況下倒是還好說(shuō),但是要是遇到數(shù)據(jù)量不夠的情況,該怎么辦呢?今天小編就給大家來(lái)介紹幾個(gè)方法來(lái)處理這種情況。

Faker模塊

Python當(dāng)中的Faker模塊主要是用來(lái)生成偽數(shù)據(jù),包括了城市、姓名等等,并且還支持中文,在開(kāi)始使用該模塊之前我們先用pip命令來(lái)下載安裝完成

pip install faker

我們先隨機(jī)地生成一些中文數(shù)據(jù),代碼如下

from faker import Faker
fake = Faker(locale='zh_CN') ## 隨機(jī)生成一個(gè)城市 print(fake.city()) ## 隨機(jī)生成一個(gè)地址 print(fake.address())

output

柳州市 吉林省興安盟縣華龍任街P座 540041 

要是我們想要生成其他語(yǔ)言或者地區(qū)表示的數(shù)據(jù),只需要傳入相對(duì)應(yīng)的地區(qū)值,這里例舉幾個(gè)常用的,代碼如下

fr_FR - French es_ES - Spanish (Spain) en_US - English (United States) de_DE - German ja_JP - Japanese ko_KR - Korean zh_CN - Chinese (China Mainland) zh_TW - Chinese (China Taiwan) 

我們可以看到填入的值的模式基本上是語(yǔ)種的縮寫(xiě)加上“_”再加上地區(qū)的縮寫(xiě)。

除了可以隨機(jī)生成例如城市名稱(chēng)以及地址之外等模擬數(shù)據(jù),還有很多其他方法可用,這些方法分為以下幾類(lèi)

  • address: 地址
  • person:人物類(lèi):性別、姓名等等
  • color: 顏色類(lèi)
  • currency:貨幣
  • phone_number:手機(jī)號(hào)碼類(lèi)
  • 等等

具體使用的方法大家可以參考其官網(wǎng),鏈接是:faker.readthedocs.io/en/master/providers.html

SDV

另外我們也可以通過(guò)機(jī)器學(xué)習(xí)算法在基于真實(shí)數(shù)據(jù)的基礎(chǔ)上生成合成數(shù)據(jù),將后者應(yīng)用于模型的訓(xùn)練上,例如由MIT的DAI(Data to AI)實(shí)驗(yàn)室推出的合成數(shù)據(jù)開(kāi)源系統(tǒng)----Synthetic Data Vault(SDV),該模塊可以從真實(shí)數(shù)據(jù)庫(kù)中構(gòu)建一個(gè)機(jī)器學(xué)習(xí)模型來(lái)捕獲多個(gè)變量之間的相關(guān)性,要是原始的數(shù)據(jù)庫(kù)中存在著一些缺失值和一些極值,最后在合成的數(shù)據(jù)集當(dāng)中也會(huì)有一些缺失值與極值。

而測(cè)試表明,合成的數(shù)據(jù)能夠較好地取代真實(shí)數(shù)據(jù)。接下來(lái)我們來(lái)看一下如何使用吧,首先我們先下載該模塊

pip install sdv

我們會(huì)用到如下的數(shù)據(jù)集,

import pandas as pd data = pd.read_csv('data.csv') data.head()

output

當(dāng)<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>遇到數(shù)據(jù)量不夠時(shí),這幾個(gè)Python技巧為你化解難題

接下來(lái)的步驟和我們使用sklearn模塊時(shí)的步驟是類(lèi)似的,代碼如下

from sdv.tabular import GaussianCopula
model = GaussianCopula()
model.fit(data)

無(wú)非就是實(shí)例化具體的模型,然后將算法模型擬合到數(shù)據(jù)集中的數(shù)據(jù),我們可以嘗試生成一些數(shù)據(jù)

sample = model.sample(200)
sample.head()

output

當(dāng)<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>遇到數(shù)據(jù)量不夠時(shí),這幾個(gè)Python技巧為你化解難題

最后我們想要來(lái)評(píng)估一下模型的性能,看一下新生成的數(shù)據(jù)和真實(shí)數(shù)據(jù)相比相似性幾何,代碼如下

from sdv.evaluation import evaluate print(evaluate(sample, data))

output

0.533 

相似性的指標(biāo)范圍是“0-1”,“0”意味著是最差的結(jié)果,而“1”意味著是最理想的結(jié)果,而針對(duì)以上評(píng)估出來(lái)的結(jié)果意味著我們后續(xù)還需要進(jìn)一步的參數(shù)調(diào)優(yōu)。

CTGAN

隨著相關(guān)研究的進(jìn)一步深入,2019年在溫哥華舉行的第33屆神經(jīng)信息處理系統(tǒng)會(huì)議上,另外的研究員提出了新的神經(jīng)網(wǎng)絡(luò)Conditional Tabular Generative Adversarial Networks,簡(jiǎn)稱(chēng)CTGAN,簡(jiǎn)而言之就是通過(guò)生成對(duì)抗網(wǎng)絡(luò)GAN來(lái)建立和完善合成的數(shù)據(jù)表。

對(duì)于生成對(duì)抗的神經(jīng)網(wǎng)絡(luò)GANs而言,其中第一個(gè)網(wǎng)絡(luò)為生成器,而第二個(gè)網(wǎng)絡(luò)為鑒別器,最后生成器產(chǎn)生出來(lái)的數(shù)據(jù)表并沒(méi)有被鑒別器分辨出其中的差異。接下來(lái)我們來(lái)看一下其中的步驟。

import pandas as pd
## 這邊用到了和前面不一樣的數(shù)據(jù)集 data = pd.read_csv('train.csv') data.head()

output

當(dāng)<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>遇到數(shù)據(jù)量不夠時(shí),這幾個(gè)Python技巧為你化解難題

針對(duì)離散型的特征變量,CTGAN模型也可以合成類(lèi)似的數(shù)據(jù),代碼如下

discrete_columns = ['week', 'Center_id', 'Meal_id', 'Emailer_for_promotion', 'homepage_featured']
ctgan = CTGANSynthesizer(batch_size=50,epochs=5,verbose=False)
ctgan.fit(data,discrete_columns) ## 將訓(xùn)練好的模型保存下來(lái) ctgan.save('ctgan-food-demand.pkl') ## 生成200條數(shù)據(jù)集 samples = ctgan.sample(200)
samples.head()

output

當(dāng)<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>遇到數(shù)據(jù)量不夠時(shí),這幾個(gè)Python技巧為你化解難題

我們羅列出需要最后合成來(lái)依照的特征變量,上面的例子當(dāng)中是羅列出了一系列的離散型特征變量,然后我們?cè)O(shè)定好batch_size、epochs以及verbose參數(shù)進(jìn)行訓(xùn)練,最后我們還是通過(guò)相類(lèi)似的方法來(lái)評(píng)估模型的性能

from sdv.evaluation import evaluate
evaluate(new_data, data)

總結(jié)

本文主要是立足于在機(jī)器學(xué)習(xí)的過(guò)程中存在數(shù)據(jù)量不足的情況,介紹了Faker模塊和SDV模塊,以及CTGAN模型,通過(guò)機(jī)器學(xué)習(xí)深度學(xué)習(xí)等手段來(lái)生成一些數(shù)據(jù)供數(shù)據(jù)科學(xué)家使用。因?yàn)檫@些模型也是近年來(lái)剛出來(lái)屬于較為前沿的內(nèi)容,小編在對(duì)其進(jìn)行表述的時(shí)候存在理解有偏差的情況,這里也是建議讀者多去上網(wǎng)進(jìn)行查閱。

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

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

OK
客服在線(xiàn)
立即咨詢(xún)
客服在線(xiàn)
立即咨詢(xún)
') } 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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }