簡單隨機與系統抽樣

Python 中的抽樣

James Chapman

Curriculum Manager, DataCamp

簡單隨機抽樣

手從摸彩罐中抽出一張摺起的紙條。

滾動的樂透球。

Python 中的抽樣

咖啡的簡單隨機抽樣

按列與行排列的咖啡豆。

按列與行排列的咖啡豆,其中部分呈灰色。

Python 中的抽樣

使用 pandas 進行簡單隨機抽樣

coffee_ratings.sample(n=5, random_state=19000113)
     total_cup_points         variety country_of_origin  aroma  flavor  \
437             83.25            None          Colombia   7.92    7.75   
285             83.83  Yellow Bourbon            Brazil   7.92    7.50   
784             82.08            None          Colombia   7.50    7.42   
648             82.58         Caturra          Colombia   7.58    7.50   
155             84.58         Caturra          Colombia   7.42    7.67  

     aftertaste  body  balance  
437        7.25  7.83     7.58  
285        7.33  8.17     7.50  
784        7.42  7.67     7.42  
648        7.42  7.67     7.42  
155        7.75  8.08     7.83 
Python 中的抽樣

系統抽樣

按列與行排列的咖啡豆。

按列與行排列的咖啡豆,多數呈灰色,僅對角線上的保留。

Python 中的抽樣

系統抽樣-定義間隔

sample_size = 5

pop_size = len(coffee_ratings)
print(pop_size)
1338
interval = pop_size // sample_size

print(interval)
267
Python 中的抽樣

系統抽樣-選取列

coffee_ratings.iloc[::interval]
      total_cup_points  variety country_of_origin  aroma  flavor  aftertaste  \
0                90.58     None          Ethiopia   8.67    8.83        8.67   
267              83.92     None          Colombia   7.83    7.75        7.58   
534              82.92  Bourbon       El Salvador   7.50    7.50        7.75   
801              82.00   Typica            Taiwan   7.33    7.50        7.17   
1068             80.50    Other            Taiwan   7.17    7.17        7.17   

      body  balance  
0     8.50     8.42  
267   7.75     7.75  
534   7.92     7.83  
801   7.50     7.33  
1068  7.17     7.25  
Python 中的抽樣

系統抽樣的風險

coffee_ratings_with_id = coffee_ratings.reset_index()
coffee_ratings_with_id.plot(x="index", y="aftertaste", kind="scatter")
plt.show()

後味分數與索引的散佈圖。

只有在這張散佈圖裡看不出規律時,系統抽樣才安全

Python 中的抽樣

讓系統抽樣更安全

shuffled = coffee_ratings.sample(frac=1)

shuffled = shuffled.reset_index(drop=True).reset_index()
shuffled.plot(x="index", y="aftertaste", kind="scatter") plt.show()

將資料集洗牌後,後味分數與索引的散佈圖。

先洗牌列,再用系統抽樣,就等同於簡單隨機抽樣

Python 中的抽樣

一起來練習吧!

Python 中的抽樣

Preparing Video For Download...