python 实现年龄级别分类器

前言

年龄级别分类就是把用户在某一区间的放在一个级别,其实要实现这些并不难,一些简单的伪代码就能实现。但是当在处理大数据量的数据集时,由于数据集的数据来源不一,这时候要实现较为完善的年龄级别分类就不是那么容易了。简单的来说要分为以下几步

数据类型转换

因为数据集的来源不是统一的,所以数据的转换是至关重要的。
首先我们要定义一些特殊字符的含义,因为网络上一些流行用语的传播,所以首先要定义一个数据字典,代表特殊字符的意义。

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

后记

这样一个简单的年龄分级就写出来了,但是具体的年龄数值转换还较为粗糙,当然也会更新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值