在建模之前处理的数据里面,如果特征都是单一值,我们应该删除。这样的值没有意义,没有区分能力。
本次我们采取删除特征下面值全部唯一的;
'''删除维度占比过大值过高的比例的函数'''
def primaryvalue_ratio(data, ratiolimit = 1):
#按照命中率进行筛选
#首先计算每个变量的命中率,这个命中率是指 维度中占比最大的值的占比
recordcount = data.shape[0]
x = []
#循环每一个列,并取出出现频率最大的那个值;index[0]是取列名,iloc[0]是取列名对应的值
for col in data.columns:
primaryvalue = data[col].value_counts().index[0]
ratio = float(data[col].value_counts().iloc[0])/recordcount
x.append([ratio,primaryvalue])
feature_primaryvalue_ratio = pd.DataFrame(x,index = data.columns)
feature_primaryvalue_ratio.columns = ['primaryvalue_ratio','primaryvalue']
needcol = feature_primaryvalue_ratio[feature_primaryvalue_ratio['primaryvalue_ratio']<ratiolimit]
needcol = needcol.reset_index()
select_data = data[list(needcol['index'])]
return select_data
调用函数:
df2 = primaryvalue_ratio(df1)