成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

海量樣本無從下手?五種抽樣算法分分鐘搞定

大數據 數據分析 算法
數據科學是研究算法的學科。本文介紹了一些常見的用于處理數據的抽樣技術。

數據科學是研究算法的學科。本文介紹了一些常見的用于處理數據的抽樣技術。

[[274956]]

1. 簡單隨機抽樣

假設要從一個群體中選出一個集合,該集合中的每個成員選中的概率相等。

下列代碼演示了如何從數據集中選擇100個采樣點。

  1. sample_df = df.sample(100) 

2. 分層抽樣

[[274957]]

假設需要估計選舉中每個候選人的平均票數。并且假設該國有3個城鎮:

A鎮有100萬名工人,B鎮有200萬名工人,C鎮有300萬名退休人員。

在所有選民中抽取60個隨機樣本,但隨機樣本有可能不能很好地與這些城鎮的特征相適應,因此會產生數據偏差,從而導致估算結果出現重大錯誤。

相反,如果分別從A,B和C鎮抽取10,20和30個隨機樣本,那么,在相同的樣本數的情況下,用該種方法估算的結果誤差較小。

使用python可以很容易地做到這一點:

  1. from sklearn.model_selection import train_test_split 
  2. X_train, X_test, y_train, y_test = train_test_split(X, y, 
  3.                                                     stratify=y,  
  4.                                                     test_size=0.25) 

3. 水塘抽樣

[[274958]]

假設有未知數量的大項目流,并且只供迭代一次。數據科學家可以創建一個算法,從項目流中隨機選擇一個項目以使每個項目抽中的概率相等。如何實現這一步驟?

假設必須從無限大的項目流中抽取5個對象,這樣每個對象被抽中的概率都相等。

  1. import randomdef generator(max): 
  2.  
  3.     number = 1 
  4.     while number < max: 
  5.         number += 1 
  6.         yield number 
  7.  
  8. # Create as stream generator 
  9. stream = generator(10000) 
  10.  
  11. # Doing Reservoir Sampling from the stream 
  12. k=5 
  13. reservoir = [] 
  14. for i, element in enumerate(stream): 
  15.     if i+1<= k: 
  16.         reservoir.append(element) 
  17.     else: 
  18.         probability = k/(i+1) 
  19.         if random.random() < probability: 
  20.             # Select item in stream and remove one of the k items already selected 
  21.              reservoir[random.choice(range(0,k))] = element 
  22.  
  23. print(reservoir) 
  24. ------------------------------------ 
  25. [1369, 4108, 9986, 828, 5589] 

從數學上可以證明,在樣本中,每個元素從項目流中被抽中的概率相等。

怎么做呢?

涉及到數學時,從小的問題著手總是有用的。

所以,假設要從一個只有3個項目的數據流中抽出其中2個。

由于水塘空間充足,可將項目1放入列表,同理,由于水塘空間仍然充足,可將項目2也放入列表。

再看項目3。事情就變得有趣了,項目3被抽中的概率為2/3.

現在來看看項目1被抽中的概率:

項目1被抽中的概率等于項目3被抽中的概率乘以項目1被隨機選為數據流中其他兩個項目的候補的概率,即:

  1. 2/3*1/2 = 1/3 

因此,抽中項目1的概率為:

  1. 1–1/3 = 2/3 

數據科學家可以對項目2使用完全相同的參數,并且將該參數運用于數據流中的其他更多項目。

因此,每個項目被抽中的概率相同:2/3或一般式k/n

4. 隨機欠采樣和過采樣

事實上,不均衡數據集十分常見。

重抽樣是一種廣泛用于處理極度不均衡數據集的技術。它指從多數類樣本中排除部分樣本(欠采樣)和/或從少數類樣本中添加更多樣本(過采樣)。

首先,創建一些不均衡數據的示例。

  1. from sklearn.datasets import make_classification 
  2.  
  3. X, y = make_classification
  4.     n_classes=2class_sep=1.5, weights=[0.9, 0.1], 
  5.     n_informative=3n_redundant=1flip_y=0
  6.     n_features=20n_clusters_per_class=1
  7.     n_samples=100random_state=10 
  8.  
  9. X = pd.DataFrame(X) 
  10. X['target'] = y 

現可以使用以下方法進行隨機過采樣和欠采樣:

  1. num_0 = len(X[X['target']==0]) 
  2. num_1 = len(X[X['target']==1]) 
  3. print(num_0,num_1) 
  4.  
  5. # random undersample 
  6.  
  7. undersampled_data = pd.concat([ X[X['target']==0].sample(num_1) , X[X['target']==1] ]) 
  8. print(len(undersampled_data)) 
  9.  
  10. # random oversample 
  11.  
  12. oversampled_data = pd.concat([ X[X['target']==0] , X[X['target']==1].sample(num_0, replace=True) ]) 
  13. print(len(oversampled_data)) 
  14.  
  15. ------------------------------------------------------------ 
  16. OUTPUT: 
  17. 90 10 
  18. 20 
  19. 180 

5. 使用Imbalanced-learn進行欠采樣和過采樣

Imbalanced-learn(imblearn)是一個解決不均衡數據集的Python語言包。

可提供多種方法進行欠采樣和過采樣。

(1) 使用Tomek Links進行欠采樣:

Imbalanced-learn提供的方法之一是Tomek Links,指的是在兩個不同類的樣本中最近鄰的對方。

在這個算法中,最終要將多數類樣本從Tomek Links中移除,這為分類器提供了一個更好的決策邊界。

  1. from imblearn.under_sampling import TomekLinks 
  2.  
  3. tl = TomekLinks(return_indices=Trueratio='majority'
  4. X_tl, y_tl, id_tl = tl.fit_sample(X, y) 

(2) 使用SMOTE算法進行過采樣

SMOTE算法(合成少數類過采樣技術),即在已有的樣本最近鄰中,為少數類樣本人工合成新樣本。

  1. from imblearn.over_sampling import SMOTE 
  2.  
  3. smote = SMOTE(ratio='minority'
  4. X_sm, y_sm = smote.fit_sample(X, y) 

Imblearn包中還有許多其他方法可用于欠采樣(Cluster Centroids,NearMiss等)和過采樣(ADASYN和bSMOTE)。

結語

算法是數據科學的生命線。

抽樣是數據科學中的一個重要課題。一個好的抽樣策略有時可以推動整個項目發展。而錯誤的抽樣策略可能會帶來錯誤的結果。因此,應當謹慎選擇抽樣策略。

 

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2018-06-14 09:53:07

移動端優化蘇寧

2016-01-22 11:40:07

2012-03-16 17:19:28

2010-09-06 11:32:48

無線上網設置

2024-07-15 09:08:51

源碼debug根節點

2022-12-13 10:05:27

定時任務任務調度操作系統

2022-08-12 10:41:57

接口性能優化

2010-08-25 09:46:05

無線網絡訪問故障

2010-09-09 10:11:11

無線網絡故障

2015-03-05 10:43:24

阿里云Azure遷移

2011-08-22 12:24:58

nagios

2021-03-23 09:06:34

下載神器文件下載插件

2021-07-08 06:30:03

Linux CPULinux 系統

2017-04-13 12:59:43

數據分析

2010-08-31 10:22:20

無線網絡訪問故障

2020-06-08 09:11:47

Linux 內核Linux內核

2021-10-20 20:24:53

辦公

2011-08-16 09:55:37

Juniper Ex系

2020-02-15 16:48:28

機器學習算法人工智能

2020-12-18 17:06:50

Windows工具開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美中文字幕一区 | 日本久久久久久久久 | 国产精品久久久久久久久久免费看 | 日韩中文字幕在线观看 | 91久久精品国产 | 国产一区二区三区高清 | 久草成人| 亚洲一区二区免费 | 亚洲免费久久久 | 一区二区三区电影在线观看 | 少妇一区在线观看 | 国产日产久久高清欧美一区 | 伊人精品 | 国产精品永久 | 成人在线免费电影 | 亚洲国产成人精品久久久国产成人一区 | 青青草原精品99久久精品66 | 亚洲视频在线观看免费 | jizz在线看片 | 久热精品在线播放 | 亚洲欧美精品 | 特级特黄特色的免费大片 | 亚洲午夜视频在线观看 | 欧美精品乱码久久久久久按摩 | 久久高清 | 日韩成人在线免费视频 | 99热国产免费 | 91精品在线看 | 国产乱码精品一品二品 | 久草视频网站 | 亚洲精品欧美一区二区三区 | 欧美h视频 | 国产成人精品免费视频大全最热 | 国产高清一区二区三区 | 56pao在线 | 在线观看国产www | 亚洲精美视频 | 亚洲在线一区二区三区 | 天天天插 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 国产色网 |