您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)怎么在python中實(shí)現(xiàn)數(shù)據(jù)抽樣解析,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
Python是一種編程語(yǔ)言,內(nèi)置了許多有效的工具,Python幾乎無(wú)所不能,該語(yǔ)言通俗易懂、容易入門、功能強(qiáng)大,在許多領(lǐng)域中都有廣泛的應(yīng)用,例如最熱門的大數(shù)據(jù)分析,人工智能,Web開發(fā)等。
何為數(shù)據(jù)抽樣:
抽樣是數(shù)據(jù)處理的一種基本方法,常常伴隨著計(jì)算資源不足、獲取全部數(shù)據(jù)困難、時(shí)效性要求等情況使用。
抽樣方法:
一般有四種方法:
隨機(jī)抽樣 直接從整體數(shù)據(jù)中等概率抽取n個(gè)樣本。這種方法優(yōu)勢(shì)是,簡(jiǎn)單、好操作、適用于分布均勻的場(chǎng)景;缺點(diǎn)是總體大時(shí)無(wú)法一一編號(hào)
系統(tǒng)抽樣 又稱機(jī)械、等距抽樣,將總體中個(gè)體按順序進(jìn)行編號(hào),然后計(jì)算出間隔,再按照抽樣間隔抽取個(gè)體。優(yōu)勢(shì),易于理解、簡(jiǎn)便易行。缺點(diǎn)是,如有明顯分布規(guī)律時(shí)容易產(chǎn)生偏差。
群體抽樣 總體分群,在隨機(jī)抽取幾個(gè)小群代表總體。優(yōu)點(diǎn)是簡(jiǎn)單易行、便與組織;缺點(diǎn)是群體劃分容易造成誤差
分層抽樣 先按照觀察指標(biāo)影響較大的某一種特征,將總體分若干個(gè)類別,再?gòu)拿恳粚与S機(jī)抽取一定數(shù)量的單位合并成總體。優(yōu)點(diǎn)樣本代表性好,少誤差
以上四種基本抽樣方法都屬單階段抽樣,實(shí)際應(yīng)用中常根據(jù)實(shí)際情況將整個(gè)抽樣過(guò)程分為若干階段來(lái)進(jìn)行,稱為多階段抽樣。
各種抽樣方法的抽樣誤差一般是:整群抽樣≥單純隨機(jī)抽樣≥系統(tǒng)抽樣≥分層抽樣
python代碼實(shí)現(xiàn)
import random import numpy as np import pandas as pd # 導(dǎo)入數(shù)據(jù) df = pd.read_csv('https://raw.githubusercontent.com/ffzs/dataset/master/glass.csv') df.index.size # 214 ##########隨機(jī)抽樣########## # # 使用pandas # DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None) # n是要抽取的行數(shù)。(例如n=20000時(shí),抽取其中的2W行) # frac是抽取的比列。(有一些時(shí)候,我們并對(duì)具體抽取的行數(shù)不關(guān)系,我們想抽取其中的百分比,這個(gè)時(shí)候就可以選擇使用frac,例如frac=0.8,就是抽取其中80%) # replace:是否為有放回抽樣,取replace=True時(shí)為有放回抽樣。 # weights這個(gè)是每個(gè)樣本的權(quán)重,具體可以看官方文檔說(shuō)明。 # random_state這個(gè)在之前的文章已經(jīng)介紹過(guò)了。 # axis是選擇抽取數(shù)據(jù)的行還是列。axis=0的時(shí)是抽取行,axis=1時(shí)是抽取列(也就是說(shuō)axis=1時(shí),在列中隨機(jī)抽取n列,在axis=0時(shí),在行中隨機(jī)抽取n行) df_0 = df.sample(n=20, replace=True) df_0.index.size # 20 # 數(shù)據(jù)準(zhǔn)備 data = df.values # 使用random data_sample = random.sample(list(data), 20) len(data_sample) # 20 ##########等距抽樣########## # 指定抽樣數(shù)量 sample_count = 50 # 獲取最大樣本量 record_count = data.shape[0] # 抽樣間距 width = record_count//sample_count data_sample = [] i = 0 # 本量小于等于指定抽樣數(shù)量并且矩陣索引在有效范圍內(nèi)是 while len(data_sample) <= sample_count and i * width <= record_count -1: data_sample.append(data[i*width]) i += 1 len(data_sample) # 51 ##########分層抽樣########## # 數(shù)據(jù)只是隨便找的分層僅限于演示 # 定義每個(gè)分層的抽樣數(shù)量 each_sample_count = 6 # 定義分層值域 label_data_unique = np.unique(data[:, -1]) # 定義一些數(shù)據(jù) sample_list, sample_data, sample_dict = [], [], {} # 遍歷每個(gè)分層標(biāo)簽 for label_data in label_data_unique: for data_tmp in data: # 讀取每條數(shù)據(jù) if data_tmp[-1] == label_data: sample_list.append(data_tmp) # 對(duì)每層數(shù)據(jù)都數(shù)據(jù)抽樣 each_sample_data = random.sample(sample_list, each_sample_count) sample_data.extend(each_sample_data) sample_dict[label_data] = len(each_sample_data) sample_dict # {1.0: 6, 2.0: 6, 3.0: 6, 5.0: 6, 6.0: 6, 7.0: 6} ##########整群抽樣########## # 數(shù)據(jù)分群僅限于演示,不符合實(shí)際情況 # 定義整群的標(biāo)簽 label_data_unique = np.unique(data[:, -1]) # 隨機(jī)抽取2個(gè)群 sample_label = random.sample(list(label_data_unique), 2) # 定義空列表 sample_data = [] # 遍歷每個(gè)整群標(biāo)簽值域 for each_label in sample_label: for data_tmp in data: if data_tmp[-1] == each_label: sample_data.append(data_tmp) len(sample_data) # 83
需要注意的問(wèn)題
數(shù)據(jù)抽樣過(guò)程中要注意一些問(wèn)題
數(shù)據(jù)時(shí)效性 不能用過(guò)時(shí)的數(shù)據(jù)來(lái)分析現(xiàn)在的運(yùn)營(yíng)狀態(tài)
關(guān)鍵因素?cái)?shù)據(jù) 整體數(shù)據(jù)的關(guān)鍵性數(shù)據(jù)必須要在模型中,如雙十一帶來(lái)的銷售增長(zhǎng)
業(yè)務(wù)隨機(jī)性 抽樣數(shù)據(jù)要使各個(gè)場(chǎng)景的數(shù)據(jù)分布均衡
數(shù)據(jù)來(lái)源多樣性 數(shù)據(jù)覆蓋要全面
抽樣數(shù)據(jù)量問(wèn)題
時(shí)間分布 能包含業(yè)務(wù)周期。月銷售預(yù)測(cè),至少包含12個(gè)月數(shù)據(jù);時(shí)間還要考慮季節(jié)、節(jié)假日、特定促銷日等周期性。
做預(yù)測(cè)分析 考慮特征數(shù)據(jù)和特征值域的分布,通常數(shù)據(jù)記錄要同時(shí)是特征數(shù)量和特征值域的100倍以上。例如數(shù)據(jù)集有5個(gè)特征值,每個(gè)特征有2個(gè)值域,那么數(shù)據(jù)記錄數(shù)需要至少1000(10052)條以上
做關(guān)聯(lián)規(guī)則分析 根據(jù)關(guān)聯(lián)前后項(xiàng)數(shù)量(每個(gè)前項(xiàng)或后項(xiàng)可包含多個(gè)要關(guān)聯(lián)的主體,例如品牌+商品+價(jià)格關(guān)聯(lián)),每個(gè)主體需要至少1000條數(shù)據(jù)。例如只做單品銷售關(guān)聯(lián),那么單品的銷售記錄需要在1000條以上;如果要同時(shí)做單品+品牌的關(guān)聯(lián),那么需要至少2000條數(shù)據(jù)。
異常檢測(cè) 無(wú)論是監(jiān)督室還是非監(jiān)督式建模,對(duì)于異常數(shù)據(jù)本來(lái)就是小概率分布的,因此異常數(shù)據(jù)記錄一般越多越好。
以上就是怎么在python中實(shí)現(xiàn)數(shù)據(jù)抽樣解析,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。