pandas qcut 和cut 詳解
在機器學習中,連續變數的離散化過程,一般用pandas的 qcut或者cut函式來進行分箱。
關於這兩個函式的聯絡和區別,網上有各種說法,典型的有以下幾種:
- qcut用於指定箱子個數,cut用於指定分箱邊界。
- qcut用於等頻分箱,cut用於等距分箱。
- qcut用於值比較多的情況,cut用於值比較少。
這些說法都是不準確或者不對的,歸根結底來說,qcut和cut的區別,是分箱思路的不同。也就是分箱時,你關注的是箱子的容量(即箱子中樣本的多少),還是關注箱子的尺寸(即邊界值,以及邊界值之間的距離)。
如果關注的是箱子的容量,比如希望等頻分箱,或者第一個箱子裝50%,剩下的平分,那麼就用qcut。
如果關注的是箱子的尺寸,比如0-100的裝在一個箱子裡面,100-200的裝另外一個,或者說等距分箱,那麼就用cut。
具體解釋下qcut和cut的各個引數以及返回值的含義。
qcut 基於分位數的離散化方法
不僅可以等頻分箱,而且可以指定每個箱子的分位數。
out, bins = pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates=‘raise’)
引數名 | 取值 | 說明 |
---|---|---|
x | 1d ndarray or Series | 分箱物件陣列 |
q | int or list-like of float | int:分位數,比如10代表按照10分位分箱,4代表按照4分位分箱。 list-like of float:分位數陣列,比如[0, .25, .5, .75, 1.] 必須在0,1之間取值 |
labels | array or False, default None | 分箱的標籤陣列,False的時候返回代表分箱的整數 |
retbins | bool, optional | 是否把分箱結果作為返回值。 |
precision | int, optional | 精度 |
duplicates | {default ‘raise’, ‘drop’}, optional | 如果分箱邊界不是唯一的,指定raise ValueError ,或者是drop 非唯一值 |
返回值 | 取值 | 說明 |
---|---|---|
out | Categorical or Series or array of integers if labels is False | 如果x是series則out是category series,否則out是Categorical |
bins | ndarray of floats | 分位數陣列,只有retbins 為True才返回 |
cut 基於箱子長度的離散化方法
不僅可以等距分箱,還可以指定每個箱子的邊界,甚至可以留白
out, bins = pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates=‘raise’, ordered=True)
引數名 | 取值 | 說明 |
---|---|---|
x | 1d ndarray or Series | 分箱物件陣列 |
bins | int, sequence of scalars, or IntervalIndex | int:指定等距分箱的箱子數量,同時最左或者最右邊界再擴充套件0.1%(取決於right引數) sequence of scalars: IntervalIndex:指定分箱間隔值,不在間隔的樣本資料都設為NaN |
right | bool, default True | 分箱是否包括最右側的值 |
labels | array or False, default None | 分箱的標籤陣列,False的時候返回代表分箱的整數 |
retbins | bool, optional | 是否把分箱結果作為返回值。 |
precision | int, optional | 精度 |
include_lowest | bool, default False | 第一個分箱是否應該包括最小值 |
duplicates | {default ‘raise’, ‘drop’}, optional | 如果分箱邊界不是唯一的,指定raise ValueError ,或者是drop 非唯一值 |
ordered | bool, default True | 返回值out是否被排序 New in version 1.1.0. |
返回值 | 取值 | 說明 |
---|---|---|
out | Categorical or Series or array of integers if labels is False | 如果x是series則out是category series,否則out是Categorical |
bins | ndarray of floats | 分位數陣列,只有retbins 為True才返回 |
相關文章
- Python Pandas的使用 !!!!!詳解Python
- Pandas中resample方法詳解
- Python中Pandas 方法cut簡單講講Python
- Pandas 分組聚合操作詳解
- Pandas資料結構詳解 | 輕鬆玩轉Pandas(1)資料結構
- Pandas基本功能詳解 | 輕鬆玩轉Pandas(2)
- Pandas read_csv 引數詳解
- Pandas 資料分析——超好用的 Groupby 詳解
- pandas | 詳解DataFrame中的apply與applymap方法APP
- Pandas高階教程之:plot畫圖詳解
- Pandas 資料分析——Merge 資料拼接圖文詳解
- Python之pandas:pandas中to_csv()、read_csv()函式的index、index_col引數詳解之詳細攻略Python函式Index
- Pandas 資料處理三板斧——map、apply、applymap 詳解APP
- require 和 import 詳解UIImport
- 詳解 let 和 var
- HTTP和HTTPS詳解HTTP
- exp和imp詳解
- DR和BDR詳解
- python pandas庫讀取excel/csv中指定行或列資料詳解PythonExcel
- Vue $dispatch 和 $broadcast 詳解VueAST
- iOS KVC和KVO詳解iOS
- Promise和async await詳解PromiseAI
- 介面和抽象類詳解抽象
- RabbitMQ的詳解和使用MQ
- ROP漏洞詳解和利用
- MySQL explain 和 profiling 詳解MySqlAI
- WebRTC SDP 詳解和剖析Web
- linux的cutLinux
- 別找了,這是 Pandas 最詳細教程了
- Pandas 基礎 (12) - Stack 和 Unstack
- pandas索引和選擇資料索引
- mongodb和nodejs mongoose使用詳解MongoDBNodeJS
- 詳解 JavaScript的 call() 和 apply()JavaScriptAPP
- Blocks深入理解和詳解BloC
- pthread_once詳解和使用thread
- Java Comparable 和 Comparator 介面詳解Java
- konga新增service和rouce詳解
- Android PathMeasure詳解和應用Android