数据分箱python代码深入解读
之前介绍了分箱的理论:
https://blog.csdn.net/Andy_shenzl/article/details/88965169
https://blog.csdn.net/Andy_shenzl/article/details/89015772#3.1WOE
本次针对卡方分箱的代码进行解释
数据集及完整代码:https://github.com/Andyszl/Feature_Engineering/blob/master/卡方分箱.ipynb
分箱
分箱的定义
- 将连续变量离散化
- 将多状态的离散变量合并成少状态
- 相近合并
分箱的重要性
- 稳定性:避免特征中无意义的波动对评分带来的波动–变量的细微变动引起评分的波动是无意义的
- 健壮性:避免了极端值的影响
分箱的优势
- 可以将缺失值作为独立的一个箱代入模型中
- 将所有的变量变换到相似的尺度上–无量纲话即标准化
分箱的限制-缺点
- 计算量大
- 分箱后需要编码-信息丢失
KS分箱
- 原理:让分箱后组别的分布的差异最大化
KS的计算方式:
- 计算每个评分区间的好坏账户数。
- 计算各每个评分区间的累计好账户数占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%)。
- 计算每个评分区间累计坏账户比与累计好账户占比差的绝对值(累计good%-累计bad%),然后对这些绝对值取最大值记得到KS值。
-
对于连续性变量
- 1、 排序,
- 2、 计算每一点的KS值
- 3、 选取最大的KS对应的特征值,将X分为与两部分
- 4、 对于分好的两部分重复2、3,直到满足终止条件
-
终止条件
- 下一步分箱后,最小箱的占比低于设定的阈值(通常为0.05)
- 下一步分箱后,该箱对应的标签类别全部为1或者0
- 下一步分箱后,bad rate不单调
-
离散程度比较高的变量
1、编码
2、依据连续变量的方式进行分箱- 无序变量可以根据bad rate排序进行编码,比如职业
- 有序变量不可以根据bad rate排序,如学历,需要按照自身排序再计算KS值
卡方分箱
卡方分箱是依赖于卡方检验的分箱方法,在统计指标上选择卡方统计量(chi-Square)进行判别,分箱的基本思想是判断相邻的两个区间是否有分布差异,基于卡方统计量的结果进行自下而上的合并,直到满足分箱的限制条件为止。
KS只能二分类,卡方可以多分类
-
设定卡方阈值
-
初始化,根据离散的属性对实例进行排序,每个实例属于一个区间
-
合并区间
- 计算每一对相邻区间的卡方值
- 将卡方值最小的一对区间合并
第i区间第j类的实例的数量
:的期望频率,=,是第i组的样本数,是第j类样本再全体中的比例
卡方统计量衡量了区间内样本的频数分布与整体样本的频数分布的差异性,在做分箱处理时可以使用两种限制条件:
(1)分箱个数:限制最终的分箱个数结果,每次将样本中具有最小卡方值的区间与相邻的最小卡方区间进行合并,直到分箱个数达到限制条件为止。
(2)卡方阈值:根据自由度和显著性水平得到对应的卡方阈值,如果分箱的各区间最小卡方值小于卡方阈值,则继续合并,直到最小卡方值超过设定阈值为止。
再补充两点,
1、由于卡方分箱是思想是相邻区间合并,在初始化时对变量属性需先进行排序,要注意名义变量的排序顺序
2、卡方阈值的自由度为 分箱数-1,显著性水平可以取10%,5%或1%
注意
- 使用卡方分箱默认不超过5个箱
- 分享后需要bad rate具有单调性。如果不满足需要相邻进行合并,直到单调
- 分箱必须覆盖所有训练样本外可能存在的值
- 当该变量可以完全区分目标变量时,需要认真价差改变量的合理性
- 原始数据很多时,为了减少时间开销,通常选取较少的初始切分点(例如50), 注意数据分布不均匀。比如等距分布,可能大部分数据只分布在几个箱里,而大部分箱里面几乎没有数据,所以不建议等距分箱
- 对于类别变量,当类别很少时,原则上不需要分箱,比如婚姻状况;其次,当个别或者几个类别的bad rate为0时,需要很最小的非0的bad rate的箱进行合并有可能时事后变量
等距分箱
data['income_cut']=pd.cut(data['annual_inc'],8)
data['income_cut'].value_counts()(-1996.0, 753500.0] 39755
(753500.0, 1503000.0] 25
(1503000.0, 2252500.0] 3
(5250500.0, 6000000.0] 1
(3751500.0, 4501000.0] 1
(4501000.0, 5250500.0] 0
(3002000.0, 3751500.0] 0
(2252500.0, 3002000.0] 0
Name: income_cut, dtype: int64
等频分箱
data['income_cut4']=pd.qcut(data['annual_inc'],8,duplicates='drop')
#duplicates='drop'如果有重复值自动剔除
data['income_cut2'].value_counts()(40500.0, 50000.0] 5810
(82350.0, 107000.0] 4995
(31400.0, 40500.0] 4984
(3999.999, 31400.0] 4975
(69500.0, 82350.0] 4964
(59000.0, 69500.0] 4957
(107000.0, 6000000.0] 4951
(50000.0, 59000.0] 4149
Name: income_cut2, dtype: int64
编码
独热编码
- 维度灾难
WOE编码
WOE的全称是“Weight of Evidence”,即证据权重。WOE是对原始自变量的一种编码形式。
有监督的编码方式,将预测类别的集中度的属性作为编码的数值
优势:
- 将特征的值规范到相近的尺度上(WOE的绝对是波动范围在0.1~3中)
- 具有业务含义
缺点
- 每个箱中同时包含好、坏两个类别
计算公式
- 好样本和坏样本的数量需要大于0,如果B等于0,那么公式没有意义;G等于0,log没有意义
- WOE的取值可能是正的、负的,也可以是0
- 分子分母可以互换同一个模型里面的分子分母要保持一致
代码部分
卡方分箱
- 拆分数据
def SplitData(df, col, numOfSplit, special_attribute=[]):''':param df: 按照col排序后的数据集:param col: 待分箱的变量:param numOfSplit: 切分的组别数:param special_attribute: 在切分数据集的时候,某些特殊值需要排除在外:return: 在原数据集上增加一列,把原始细粒度的col重新划分成粗粒度的值,便于分箱中的合并处理'''df2 = df.copy()if special_attribute != []:df2 = df.loc[~df[col].isin(special_attribute)]N = df2.shape[0]#总样本数n = round(N/numOfSplit)#每一层有多少样本print(n)splitPointIndex = [i*n for i in range(1,numOfSplit)]#print(splitPointIndex)rawValues = sorted(list(df2[col]))#将所有的样本进行排序splitPoint = [rawValues[i] for i in splitPointIndex]#以样本排序的rank为索引,找到每个临界值的点的数值splitPoint = sorted(list(set(splitPoint)))return splitPoint
临界值的选取1
def AssignGroup(x, bin):N = len(bin)#如果值小于最小的分箱值,则取最小的分箱值if x<=min(bin):return min(bin)# 如果值大于最大的分箱值,则取10e10elif x>max(bin):return 10e10else:#介于中间的值取又边界值for i in range(N-1):if bin[i] < x <= bin[i+1]:return bin[i+1]
临界值的选取2
def AssignBin(x, cutOffPoints,special_attribute=[]):''':param x: the value of variable:param cutOffPoints: the ChiMerge result for continous variable:param special_attribute: the special attribute which should be assigned separately:return: bin number, indexing from 0for example, if cutOffPoints = [10,20,30], if x = 7, return Bin 0. If x = 35, return Bin 3'''numBin = len(cutOffPoints) + 1 + len(special_attribute)if x in special_attribute:i = special_attribute.index(x)+1return 'Bin {}'.format(0-i)if x<=cutOffPoints[0]:return 'Bin 0'elif x > cutOffPoints[-1]:return 'Bin {}'.format(numBin-1)else:for i in range(0,numBin-1):if cutOffPoints[i] < x <= cutOffPoints[i+1]:return 'Bin {}'.format(i+1)
- 计算坏样本率
def BinBadRate(df, col, target, grantRateIndicator=0):''':param df: 需要计算好坏比率的数据集:param col: 需要计算好坏比率的特征:param target: 好坏标签:param grantRateIndicator: 1返回总体的坏样本率,0不返回:return: 每箱的坏样本率,以及总体的坏样本率(当grantRateIndicator==1时)'''#先计算每个值的出现次数total = df.groupby([col])[target].count()#print("1",total)total = pd.DataFrame({'total': total})#先计算每个值中1[即坏样本]的出现次数bad = df.groupby([col])[target].sum()bad = pd.DataFrame({'bad': bad})#将每个值的总数和bad样本数合并regroup = total.merge(bad, left_index=True, right_index=True, how='left')regroup.reset_index(level=0, inplace=True)#计算每个值的坏样本率regroup['bad_rate'] = regroup.apply(lambda x: x.bad * 1.0 / x.total, axis=1)dicts = dict(zip(regroup[col],regroup['bad_rate']))if grantRateIndicator==0:return (dicts, regroup)N = sum(regroup['total'])B = sum(regroup['bad'])overallRate = B * 1.0 / Nreturn (dicts, regroup, overallRate)
- 计算卡方值
def Chi2(df, total_col, bad_col, overallRate):''':param df: 包含全部样本总计与坏样本总计的数据框:param total_col: 全部样本的个数:param bad_col: 坏样本的个数:param overallRate: 全体样本的坏样本占比:return: 卡方值'''df2 = df.copy()# 期望坏样本个数=全部样本个数*平均坏样本占比,即计算Eijdf2['expected'] = df[total_col].apply(lambda x: x*overallRate)combined = zip(df2['expected'], df2[bad_col])chi = [(i[0]-i[1])**2/i[0] for i in combined]chi2 = sum(chi)return chi2
- 计算分箱结果
### ChiMerge_MaxInterval: split the continuous variable using Chi-square value by specifying the max number of intervals
def ChiMerge1(df, col, target, max_interval=5,special_attribute=[],minBinPcnt=0):''':param df: 包含目标变量与分箱属性的数据框:param col: 需要分箱的属性:param target: 目标变量,取值0或1:param max_interval: 最大分箱数。如果原始属性的取值个数低于该参数,不执行这段函数:param special_attribute: 不参与分箱的属性取值:param minBinPcnt:最小箱的占比,默认为0:return: 分箱结果'''colLevels = sorted(list(set(df[col])))N_distinct = len(colLevels)if N_distinct <= max_interval: #如果原始属性的取值个数低于max_interval,不执行这段函数print ("The number of original levels for {} is less than or equal to max intervals".format(col))return colLevels[:-1]else:if len(special_attribute)>=1:df1 = df.loc[df[col].isin(special_attribute)]df2 = df.loc[~df[col].isin(special_attribute)]else:df2 = df.copy()N_distinct = len(list(set(df2[col])))# 步骤一: 通过col对数据集进行分组,求出每组的总样本数与坏样本数if N_distinct > 100:split_x = SplitData(df2, col, 100)df2['temp'] = df2[col].map(lambda x: AssignGroup(x, split_x))else:df2['temp'] = df[col]# 总体bad rate将被用来计算expected bad count(binBadRate, regroup, overallRate) = BinBadRate(df2, 'temp', target, grantRateIndicator=1)# 首先,每个单独的属性值将被分为单独的一组# 对属性值进行排序,然后两两组别进行合并colLevels = sorted(list(set(df2['temp'])))groupIntervals = [[i] for i in colLevels]# 步骤二:建立循环,不断合并最优的相邻两个组别,直到:# 1,最终分裂出来的分箱数<=预设的最大分箱数# 2,每箱的占比不低于预设值(可选)# 3,每箱同时包含好坏样本# 如果有特殊属性,那么最终分裂出来的分箱数=预设的最大分箱数-特殊属性的个数split_intervals = max_interval - len(special_attribute)while (len(groupIntervals) > split_intervals): # 终止条件: 当前分箱数=预设的分箱数# 每次循环时, 计算合并相邻组别后的卡方值。具有最小卡方值的合并方案,是最优方案chisqList = []for k in range(len(groupIntervals)-1):temp_group = groupIntervals[k] + groupIntervals[k+1]df2b = regroup.loc[regroup['temp'].isin(temp_group)]chisq = Chi2(df2b, 'total', 'bad', overallRate)chisqList.append(chisq)best_comnbined = chisqList.index(min(chisqList))groupIntervals[best_comnbined] = groupIntervals[best_comnbined] + groupIntervals[best_comnbined+1]# after combining two intervals, we need to remove one of themgroupIntervals.remove(groupIntervals[best_comnbined])groupIntervals = [sorted(i) for i in groupIntervals]print(groupIntervals)cutOffPoints = [max(i) for i in groupIntervals[:-1]]return cutOffPoints
分箱完成后需要对分箱进行检查
- 检查是否有箱没有好或者坏样本。如果有,需要跟相邻的箱进行合并,直到每箱同时包含好坏样本
groupedvalues = df2['temp'].apply(lambda x: AssignBin(x, cutOffPoints))
df2['temp_Bin'] = groupedvalues
(binBadRate,regroup) = BinBadRate(df2, 'temp_Bin', target)
[minBadRate, maxBadRate] = [min(binBadRate.values()),max(binBadRate.values())]
while minBadRate ==0 or maxBadRate == 1:# 找出全部为好/坏样本的箱indexForBad01 = regroup[regroup['bad_rate'].isin([0,1])].temp_Bin.tolist()bin=indexForBad01[0]# 如果是最后一箱,则需要和上一个箱进行合并,也就意味着分裂点cutOffPoints中的最后一个需要移除if bin == max(regroup.temp_Bin):cutOffPoints = cutOffPoints[:-1]# 如果是第一箱,则需要和下一个箱进行合并,也就意味着分裂点cutOffPoints中的第一个需要移除elif bin == min(regroup.temp_Bin):cutOffPoints = cutOffPoints[1:]# 如果是中间的某一箱,则需要和前后中的一个箱进行合并,依据是较小的卡方值else:# 和前一箱进行合并,并且计算卡方值currentIndex = list(regroup.temp_Bin).index(bin)prevIndex = list(regroup.temp_Bin)[currentIndex - 1]df3 = df2.loc[df2['temp_Bin'].isin([prevIndex, bin])](binBadRate, df2b) = BinBadRate(df3, 'temp_Bin', target)chisq1 = Chi2(df2b, 'total', 'bad', overallRate)# 和后一箱进行合并,并且计算卡方值laterIndex = list(regroup.temp_Bin)[currentIndex + 1]df3b = df2.loc[df2['temp_Bin'].isin([laterIndex, bin])](binBadRate, df2b) = BinBadRate(df3b, 'temp_Bin', target)chisq2 = Chi2(df2b, 'total', 'bad', overallRate)if chisq1 < chisq2:cutOffPoints.remove(cutOffPoints[currentIndex - 1])else:cutOffPoints.remove(cutOffPoints[currentIndex])# 完成合并之后,需要再次计算新的分箱准则下,每箱是否同时包含好坏样本groupedvalues = df2['temp'].apply(lambda x: AssignBin(x, cutOffPoints))df2['temp_Bin'] = groupedvalues(binBadRate, regroup) = BinBadRate(df2, 'temp_Bin', target)[minBadRate, maxBadRate] = [min(binBadRate.values()), max(binBadRate.values())]
- 需要检查分箱后的最小占比
if minBinPcnt > 0:groupedvalues = df2['temp'].apply(lambda x: AssignBin(x, cutOffPoints))df2['temp_Bin'] = groupedvaluesvalueCounts = groupedvalues.value_counts().to_frame()valueCounts['pcnt'] = valueCounts['temp'].apply(lambda x: x * 1.0 / N)valueCounts = valueCounts.sort_index()minPcnt = min(valueCounts['pcnt'])while minPcnt < 0.05 and len(cutOffPoints) > 2:# 找出占比最小的箱indexForMinPcnt = valueCounts[valueCounts['pcnt'] == minPcnt].index.tolist()[0]# 如果占比最小的箱是最后一箱,则需要和上一个箱进行合并,也就意味着分裂点cutOffPoints中的最后一个需要移除if indexForMinPcnt == max(valueCounts.index):cutOffPoints = cutOffPoints[:-1]# 如果占比最小的箱是第一箱,则需要和下一个箱进行合并,也就意味着分裂点cutOffPoints中的第一个需要移除elif indexForMinPcnt == min(valueCounts.index):cutOffPoints = cutOffPoints[1:]# 如果占比最小的箱是中间的某一箱,则需要和前后中的一个箱进行合并,依据是较小的卡方值else:# 和前一箱进行合并,并且计算卡方值currentIndex = list(valueCounts.index).index(indexForMinPcnt)prevIndex = list(valueCounts.index)[currentIndex - 1]df3 = df2.loc[df2['temp_Bin'].isin([prevIndex, indexForMinPcnt])](binBadRate, df2b) = BinBadRate(df3, 'temp_Bin', target)chisq1 = Chi2(df2b, 'total', 'bad', overallRate)# 和后一箱进行合并,并且计算卡方值laterIndex = list(valueCounts.index)[currentIndex + 1]df3b = df2.loc[df2['temp_Bin'].isin([laterIndex, indexForMinPcnt])](binBadRate, df2b) = BinBadRate(df3b, 'temp_Bin', target)chisq2 = Chi2(df2b, 'total', 'bad', overallRate)if chisq1 < chisq2:cutOffPoints.remove(cutOffPoints[currentIndex - 1])else:cutOffPoints.remove(cutOffPoints[currentIndex])
annual_inc is in processing
398
[[14400.0], [35142.0], [36000.0], [39192.0], [100000000000.0]]
regroup: annual_inc_Bin total bad bad_rate
0 Bin 0 423 104 0.245863
1 Bin 1 6344 1097 0.172919
2 Bin 2 736 149 0.202446
3 Bin 3 1254 215 0.171451
4 Bin 4 31028 4105 0.132300
combined: <zip object at 0x11718c8c8>
badRate: [0.2458628841607565, 0.17291929382093316, 0.20244565217391305, 0.17145135566188197, 0.13229985819260023]
badRateMonotone: [False, True, False, False]
398
[[14400.0], [35142.0], [36000.0], [100000000000.0]]
regroup: annual_inc_Bin total bad bad_rate
0 Bin 0 423 104 0.245863
1 Bin 1 6344 1097 0.172919
2 Bin 2 736 149 0.202446
3 Bin 3 32282 4320 0.133821
combined: <zip object at 0x1171d4548>
badRate: [0.2458628841607565, 0.17291929382093316, 0.20244565217391305, 0.13382070503686264]
badRateMonotone: [False, True, False]
398
[[14400.0], [36000.0], [100000000000.0]]
regroup: annual_inc_Bin total bad bad_rate
0 Bin 0 423 104 0.245863
1 Bin 1 7080 1246 0.175989
2 Bin 2 32282 4320 0.133821
combined: <zip object at 0x117111b48>
badRate: [0.2458628841607565, 0.17598870056497176, 0.13382070503686264]
badRateMonotone: [False, False]
计算WOE和IV
def CalcWOE(df, col, target):''':param df: dataframe containing feature and target:param col: the feature that needs to be calculated the WOE and iv, usually categorical type:param target: good/bad indicator:return: WOE and IV in a dictionary'''total = df.groupby([col])[target].count()total = pd.DataFrame({'total': total})bad = df.groupby([col])[target].sum()bad = pd.DataFrame({'bad': bad})regroup = total.merge(bad, left_index=True, right_index=True, how='left')regroup.reset_index(level=0, inplace=True)N = sum(regroup['total'])B = sum(regroup['bad'])regroup['good'] = regroup['total'] - regroup['bad']G = N - Bregroup['bad_pcnt'] = regroup['bad'].map(lambda x: x*1.0/B)regroup['good_pcnt'] = regroup['good'].map(lambda x: x * 1.0 / G)regroup['WOE'] = regroup.apply(lambda x: np.log(x.good_pcnt*1.0/x.bad_pcnt),axis = 1)WOE_dict = regroup[[col,'WOE']].set_index(col).to_dict(orient='index')for k, v in WOE_dict.items():WOE_dict[k] = v['WOE']IV = regroup.apply(lambda x: (x.good_pcnt-x.bad_pcnt)*np.log(x.good_pcnt*1.0/x.bad_pcnt),axis = 1)IV = sum(IV)return {"WOE": WOE_dict, 'IV':IV}
{‘IV’: 0.022499080659967422,
‘WOE’: {14400.0: -0.6737478488842542,
36000.0: -0.25078360144745787,
100000000000.0: 0.0730429907818877}}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- java 泛型实例化创建对象
//定义泛型抽象类 public abstract class TObjectFactory<T> {protected abstract T getTable();}//继承使用 public class TableFactory<Table,Value> extends TObjectFactory<Table>{ITableDataBase<Value> p_table_t;public TableFactory(ITableDat…...
2024/4/24 9:49:07 - 比特币(BSV)知识库:比特币协议-签名标识(SIGHASH flags)
特别提示:比特币(BSV)知识库-Bitcoin wiki-目前为全英文内容,暂无中文译文,并且仍在持续编写和补充中。欢迎中国的开发者在文章底部评论,进行阐述和探讨。SIGHASH flagsA SIGHASH flag is used to indicate which part of the transaction is signed by the ECDSA signatur…...
2024/5/8 5:51:44 - 解除网页选择、复制限制
1.打开网页 2.按下F12 3.切换到Console页面 4.输入下述代码后回车 document.onselectstart=new Function("event.returnValue=true"); document.oncopy=new Function("event.returnValue=true");5.不要刷新,即可进行选择和复制...
2024/4/24 9:49:05 - SpringBoot 整合Redis
SpringBoot 整合Redis 缓存的作用: 简单来说,不用重复调用数据库,保证效率 将方法的运行结果进行缓存;以后再要相同的数据,直接从缓存中获取,不用调用方法,不用调用数据库; 原理: 1、自动配置类: CacheAutoConfiguration 2、缓存的配置类org.springframework.boot.aut…...
2024/4/24 9:49:04 - 如何申请ISSN刊号,需要做哪些准备
国际刊号即ISSN,是国际连续出版物号的简称。由一组冠有"ISSN"代号的8位数字组成,总体分两段,段间以"-"相连接,校检号为最后一个数字。主要用于报纸,期刊,图鉴等。ISSN号在全世界大部分国家被使用,且具有唯一识别性。现今已经成为了标准期刊的显著标志…...
2024/4/24 9:49:07 - 用python中If-Else做奇偶数的判断
小明问了我一个问题: 如何用python来做奇偶数的判断呢?任务: 给定整数n,请执行以下条件操作:如果n是奇数,请打印Weird 如果n是偶数且在2-5的范围内,则打印Not Weird 如果n是偶数且在6-20的范围内,则打印Weird 如果n是偶数且大于等于20,则打印Not WeirdInput Format: A…...
2024/4/24 9:49:05 - 如何描述属性
什么是属性?前面我们说过,属性描述一个对象“什么样子”。当我们描述一个人或物的“样子”时,往往会说明其可测量的一些特征,例如一个人有多高、多重,一辆车有多长、什么颜色等等。 因此,当我们设计一个类时,可以先用我们人类的语言描述一下这个类,然后把描述特征的名词…...
2024/5/2 0:07:14 - C++基础——再谈继承与派生
C++基类和派生类的构造函数前面我们说基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成…...
2024/4/24 9:49:00 - 一元函数微分学的应用
一元函数微分学的应用(几何应用)1、极值与最值的概念 2、 3、 4、 5、 6、...
2024/4/24 9:49:02 - 泰迪公司助力湖北第二师范学院推行“校企云协作” 指导学生以赛促学
泰迪公司助力湖北第二师范学院推行“校企云协作” 指导学生以赛促学为了充分实践应用型、技术型人才培养要求,克服新冠疫情带来的影响,湖北第二师范学院数学与经济学院与泰迪科技公司深入协作,通过线上学习、线下实践的"项目化"云课堂方式,联合指导学生参加第八届…...
2024/4/24 9:48:58 - 产业安全专家谈 | 银行业小程序安全防护的实践路径
当前,随着网络业务与移动业务的兴起,银行业已经进入智能化、数字化的新时代。网上银行、移动客户端、小程序相继成为各个银行实现数字化转型的重要载体。其中,小程序凭借开发门槛低、上线速度快、平台覆盖率高等特点成为现阶段银行服务用户的重要移动渠道。然而小程序面向海…...
2024/4/24 9:49:00 - c# 实现虚拟软键盘以及注意的问题
一.焦点的问题 参考链接:https://www.cnblogs.com/loveclumsybaby/articles/3780099.html 软键盘的窗体和普通窗体是有一定的不同,该窗体不会影响其他进程下窗体的光标焦点。 要实现这个技术,必须要把当前窗体设置为浮动工具条才行。这里给出 C# Winform 的实现方法。privat…...
2024/4/24 9:48:56 - 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (五)
3. Creating Timing Exceptions创建好时钟、定义好输入输出延迟后,就可以按照这些约束对设计进行时序分析了。默认的情况下,软件按照1T 原则分析所有需要检查的timing path。在综合、布局布线时,工具也会根据时序约束,尽可能使所有timing path都满足1T的要求。但工具也不是…...
2024/5/2 2:37:34 - ios 屏幕适配 autolayout
1. autolayout 属性设置: autolyout 对齐方式autolayout 相对其他控件距离、宽高、相对于其他控件宽高, 如下图属性设置对齐方式: 设置距离、宽高属性。 2. 案例1: 设置控件水平、垂直居中 设置 垂直 水平 对齐、 设置控件宽高 【 注意:确定控件x,y坐标,以及宽、高那么…...
2024/5/4 3:48:02 - HBuilder安卓签名及证书生成
1、首先,确保是否已经安装Java的JDK,如果尚未安装,访问这里写链接内容 安装到本地;2、 安装 完成后,windows + R,进入Java下的bin目录,如: cd C:\Program Files\Java\jdk1.7.0_80\bin ;我这里是安装在D盘,如下所示:3、然后输入命令 keytool -genkey -v -keystore deb…...
2024/4/18 8:08:00 - 查看多台机器jps的脚本
首先所有机器已经配通SSH免密登录在某台机器上创建jpsall,并打开。touch jpsall vim jpsall写执行脚本#!/bin/bash# 执行jps命令查询每台服务器上的节点状态 echo ======================正在查询集群节点状态====================#2 关闭hadoop102-hadoop104 for i in hadoop1…...
2024/4/15 6:01:39 - day2 C++学习之namespace的使用
namespace的使用声明使用协作开发 声明 命名空间提供了在大项目中避免名字冲突的一种方法。 声明于命名空间块内的符号被放入一个具名的作用域中,避免这些符号被误认为其他作用域中的同名符号。 允许具有相同名字的多个命名空间块。这些块中的所有声明声明于该具名作用域。 声…...
2024/4/16 9:38:56 - SpringCloudAlibaba第四章(分布式事务RabbitMQ)
目录1:什么是MQ2:主流MQ中间间对比3:RabbitMQ安装4:RabbitMQ案例4.1:添加用户、添加Virtual Hosts4.1: 点对点发送(hello word模型)4.2:一个生产者和多个消费者(Work Queues)4.3:发布订阅模式4.4:Rooting路由模式4.5:Topics订阅模式4.6:总结5:springboot整合rabbitmq6:spri…...
2024/4/24 9:48:55 - python cmp()方法无法找到
python cmp()方法无法找到 如题。 python3中不再有cmp()函数,而是用operator包替代 import operatorlt(a,b) 相当于 a<b 从第一个数字或字母(ASCII)比大小 le(a,b)相当于a<=beq(a,b)相当于a==b 字母完全一样,返回True,ne(a,b)相当于a!=bgt(a,b)相当于a>bg…...
2024/4/24 9:48:53 - 从x到y的最少次数计算
题目描述给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y?例如: a=3,b=11: 可以通过3*2*2-1,3次操作得到11; a=5,b=8:可以通过(5-1)*2,2次操作得到8;======================================================================…...
2024/4/24 9:48:54
最新文章
- 设计模式——行为型模式——策略模式(含实际业务使用示例、可拷贝直接运行)
目录 策略模式 定义 组成和UML图 代码示例 实际业务场景下策略模式的使用 策略模式优缺点 使用场景 JDK中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化…...
2024/5/9 10:58:25 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - Stable Diffusion 本地部署教程
Stable Diffusion 是一个开源的本地部署的软件,用于在本地网络中进行消息传递和同步。下面是 Stable Diffusion 的本地部署教程: 安装稳定扩散软件:首先,您需要从 Stable Diffusion 的官方网站或 GitHub 页面上下载并安装 Stable …...
2024/5/9 4:30:20 - 流域生态系统水-碳-氮耦合过程模拟
流域是一个相对独立的自然地理单元,它是以水系为纽带,将系统内各自然地理要素连结成一个不可分割的整体。碳和氮是陆地生态系统中最重要的两种化学元素,而在流域系统内,水-碳-氮是相互联动、不可分割的耦合体。随着流域内人类活动…...
2024/5/9 9:57:09 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/9 7:32:17 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57