基于python 等頻分箱qcut問題的解決
在python 較新的版本中,pandas.qcut()這個(gè)函數(shù)中是有duplicates這個(gè)參數(shù)的,它能解決在等頻分箱中遇到的重復(fù)值過多引起報(bào)錯(cuò)的問題;
在比較舊版本的python中,提供一下解決辦法:
import pandas as pd def pct_rank_qcut(series, n): ’’’ series:要分箱的列 n:箱子數(shù) ’’’ edages = pd.series([i/n for i in range(n)] # 轉(zhuǎn)換成百分比 func = lambda x: (edages >= x).argmax() #函數(shù):(edages >= x)返回fasle/true列表中第一次出現(xiàn)true的索引值 return series.rank(pct=1).astype(float).apply(func) #series.rank(pct=1)每個(gè)值對應(yīng)的百分位數(shù),最終返回對應(yīng)的組數(shù);rank()函數(shù)傳入的數(shù)據(jù)類型若為object,結(jié)果會(huì)有問題,因此進(jìn)行了astype
補(bǔ)充拓展:Python數(shù)據(jù)離散化:等寬及等頻
在處理數(shù)據(jù)時(shí),我們往往需要將連續(xù)性變量進(jìn)行離散化,最常用的方式便是等寬離散化,等頻離散化,在此處我們討論離散化的概念,只給出在python中的實(shí)現(xiàn)以供參考
1. 等寬離散化
使用pandas中的cut()函數(shù)進(jìn)行劃分
import numpy as npimport pandas as pd # Discretization: Equal Width ## Datas: Sample * Featuredef Discretization_EqualWidth(K, Datas, FeatureNumber): DisDatas = np.zeros_like(Datas) for i in range(FeatureNumber): DisOneFeature = pd.cut(Datas[:, i], K, labels=range(1, K+1)) DisDatas[:, i] = DisOneFeature return DisDatas
2. 等頻離散化
pandas中有qcut()可以使用,但是邊界易出現(xiàn)重復(fù)值,如果為了刪除重復(fù)值設(shè)置 duplicates=‘drop’,則易出現(xiàn)于分片個(gè)數(shù)少于指定個(gè)數(shù)的問題,因此在此處不使用qcut()
import numpy as npimport pandas as pd # Discretization: Equal Frequency ## vector: single featuredef Rank_qcut(vector, K): quantile = np.array([float(i) / K for i in range(K + 1)]) # Quantile: K+1 values funBounder = lambda x: (quantile >= x).argmax() return vector.rank(pct=True).apply(funBounder) # Discretization: Equal Frequency ## Datas: Sample * Featuredef Discretization_EqualFrequency(K, Datas, FeatureNumber): DisDatas = np.zeros_like(Datas) w = [float(i) / K for i in range(K + 1)] for i in range(FeatureNumber): DisOneFeature = Rank_qcut(pd.Series(Datas[:, i]), K) #print(DisOneFeature) DisDatas[:, i] = DisOneFeature return DisDatas
以上這篇基于python 等頻分箱qcut問題的解決就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 解決VUE 在IE下出現(xiàn)ReferenceError: Promise未定義的問題2. .NET使用YARP通過編碼方式配置域名轉(zhuǎn)發(fā)實(shí)現(xiàn)反向代理3. python GUI庫圖形界面開發(fā)之PyQt5打印控件QPrinter詳細(xì)使用方法與實(shí)例4. jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲5. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)6. 存儲于xml中需要的HTML轉(zhuǎn)義代碼7. Javaweb工程運(yùn)行報(bào)錯(cuò)HTTP Status 404解決辦法8. 解析原生JS getComputedStyle9. 表單中Readonly和Disabled的區(qū)別詳解10. CSS3中Transition屬性詳解以及示例分享

網(wǎng)公網(wǎng)安備