久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

如何解決基于python等頻分箱qcut的問題-創(chuàng)新互聯(lián)

小編給大家分享一下如何解決基于python等頻分箱qcut的問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

成都創(chuàng)新互聯(lián)公司是專業(yè)的沾化網(wǎng)站建設(shè)公司,沾化接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行沾化網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

在python 較新的版本中,pandas.qcut()這個函數(shù)中是有duplicates這個參數(shù)的,它能解決在等頻分箱中遇到的重復(fù)值過多引起報錯的問題;

在比較舊版本的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)每個值對應(yīng)的百分位數(shù),最終返回對應(yīng)的組數(shù);rank()函數(shù)傳入的數(shù)據(jù)類型若為object,結(jié)果會有問題,因此進行了astype

補充拓展:Python數(shù)據(jù)離散化:等寬及等頻

在處理數(shù)據(jù)時,我們往往需要將連續(xù)性變量進行離散化,最常用的方式便是等寬離散化,等頻離散化,在此處我們討論離散化的概念,只給出在python中的實現(xiàn)以供參考

1. 等寬離散化

使用pandas中的cut()函數(shù)進行劃分

import numpy as np
import pandas as pd
 
# Discretization: Equal Width #
# Datas: Sample * Feature
def 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)于分片個數(shù)少于指定個數(shù)的問題,因此在此處不使用qcut()

import numpy as np
import pandas as pd
 
# Discretization: Equal Frequency #
# vector: single feature
def 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 * Feature
def 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的問題”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前題目:如何解決基于python等頻分箱qcut的問題-創(chuàng)新互聯(lián)
文章路徑:http://sd-ha.com/article48/cdhpep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航關(guān)鍵詞優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)