前言
年龄级别分类就是把用户在某一区间的放在一个级别,其实要实现这些并不难,一些简单的伪代码就能实现。但是当在处理大数据量的数据集时,由于数据集的数据来源不一,这时候要实现较为完善的年龄级别分类就不是那么容易了。简单的来说要分为以下几步
数据类型转换
因为数据集的来源不是统一的,所以数据的转换是至关重要的。
首先我们要定义一些特殊字符的含义,因为网络上一些流行用语的传播,所以首先要定义一个数据字典,代表特殊字符的意义。
age_dict = {
"十":10,
"岁":1,
"碎":1,
"半":1
}
其次我们要找出年龄中含有的特征词,比如20岁含有岁,比如10岁半含有的半
def find_features(num):
feature_dic = {}
for feature,value in age_dict.items():
if feature in num:
count_dic['feature'] = feature
count_dic['value'] = value
break
return feature_dic
其次就是年龄标准格式的转换了
def data_to_int(age):
try:
if age == None:
actual_age = 0
elif type(line) == int:
actual_age = age
elif type(line) == float:
actual_age = int(line)
else:
age_dic = find_features(age)
actual_age = conversion_int(age, age_dic) if len(coun_dic) > 0 else int(line)
except:
actual_age = 0
return actual_age
def conversion_int(orginal,coun_dic):
feature,value = coun_dic['feature'],coun_dic['value']
num = int(float(orginal.split(identi)[0]) * value)
return num
年龄的初始判断
虽然上面已经把年龄的类型转变过来了但是,也需要对年龄做一些大致的判断,比如如果是网站的注册用户来说他的年纪如果小于6岁或者大于60岁就明显数据不是那么可靠了。那么我们要把他标记为一个异常值。
def deal_age(age):
age= int(data_to_int(age))
age = -1 if age> 80 or line < 6 else line
return age
年龄分级
age_span = 3 #定义每一个级别的年龄跨度
level_range = range(20) #标明要分为多少级别
def make_age_dic():
age_level_start = 16
age_dic = {}
for level in level_range:
age_dic[level] = list(range(age_level_start,age_level_start+age_span))
age_level_start += age_span
return age_dic
def process_age(line,**kwargs):
age = deal_age(line['age'])
age_level = 0
for level,age_ in make_age_dic().items():
if age in age_:
age_level = level
break
return age_level
后记
这样一个简单的年龄分级就写出来了,但是具体的年龄数值转换还较为粗糙,当然也会更新。