数据挖掘实战之天池精准医疗大赛(6)——特征工程2

Part 4-2:特征工程

2)特征工程示例

如何构造和选取不再赘述,下面列出我和一些大佬的特征,只看结果,如何实现出这些特征还需多下功夫亲自尝试。

引用一位大佬的一句话,“在看别人代码的时候,最终成果可能只有几百行,但是推理和尝试的代码量比成果多得多,这部分最终并没呈现出来,看似简单的答案只是冰山一角。因此,有时看了人家的答案,觉得每句都能理解,到了自己做的时候,还是照猫画虎,只能微调。

data['天门谷氨比'] = data['*天门冬氨酸氨基转换酶'] / data['*r-谷氨酰基转换酶']
    data['天门丙氨比'] = data['*天门冬氨酸氨基转换酶'] / data['*丙氨酸氨基转换酶']
    data['甘三比'] = data['甘油三酯'] / (data['甘油三酯'] + data['总胆固醇'])
    data['中粒比'] = data['中性粒细胞%'] / (data['中性粒细胞%'] + data['嗜酸细胞%']+ data['嗜碱细胞%'])
    data['红血红蛋白立方'] = data['红细胞平均血红蛋白量']*data['红细胞平均血红蛋白量']*data['红细胞平均血红蛋白量']
    data['new_feature_1'] = data[u'中性粒细胞%']/data[u'淋巴细胞%']
    data['new_feature_2'] = data[u'白蛋白']/data[u'*球蛋白']
    data['new_feature_3'] = np.square(100*data[u'低密度脂蛋白胆固醇']/data[u'高密度脂蛋白胆固醇'])
    data['new_feature_4'] = np.square(data[u'年龄'])
    data['new_feature_5'] = data[u'白蛋白']/data[u'白细胞计数']
    
    '''
    data['中性粒细胞方'] = data['中性粒细胞%'] *data['中性粒细胞%']
    data['嗜酸细胞%方'] =data['嗜酸细胞%']*data['嗜酸细胞%']
    data['低胆比'] = data['低密度脂蛋白胆固醇'] / data['年龄']
    data['白细胞比'] = data['白细胞计数']/ data['年龄']
    '''
    data = data.drop([u'中性粒细胞%',u'淋巴细胞%',u'白蛋白',u'*球蛋白',u'白细胞计数',
                u'嗜酸细胞%',u'嗜碱细胞%',u'低密度脂蛋白胆固醇',u'高密度脂蛋白胆固醇'],axis=1)

这是鄙人小组的所用特征,将看起来相关的特征进行了组合,做了一些筛选,起了像样的名字,有的特征效果很好,有的只是尝试了一下,好像没什么改进。下面是鄙人利用多项式特征和函数变换特征构造的模型,可以看一下具体可行办法;然而并没有进行特征选择,原因主要是下一步鄙人用的GBDT+LR的模型,L1正则起到筛选特征的作用,模型见下一节,此处只看特征。

print("_____________________________构造特征______________________________________________")
    for i in range(n_fea):

        all_x['squ%d' % i] = all_x.iloc[:, i] * all_x.iloc[:, i]
        all_x['log%d' % i] = np.log1p(all_x.iloc[:, i])
        all_x['sqrt%d' % i] = np.sqrt(all_x.iloc[:, i])

        all_x['cube%d' % i] = all_x.iloc[:, i] * all_x.iloc[:, i] * all_x.iloc[:, i]
        for j in range(i + 1, n_fea):
            all_x['poly%d%d' % (i, j)] = all_x.iloc[:, i] * all_x.iloc[:, j]
            # all_x['%d div %d' % (i, j)] = all_x.iloc[:, i] / all_x.iloc[:, j]
            # for k in range(i):
            #     all_x['%d & %d'%(i,k)] = np.logaddexp(all_x.iloc[:, i] , all_x.iloc[:,k])
    all_x['天门谷氨比'] = all_x['*天门冬氨酸氨基转换酶'] / all_x['*r-谷氨酰基转换酶']
    all_x['天门丙氨比'] = all_x['*天门冬氨酸氨基转换酶'] / all_x['*丙氨酸氨基转换酶']
    all_x['谷丙氨比'] = all_x['*r-谷氨酰基转换酶'] / all_x['*丙氨酸氨基转换酶']
    # all_x['红血红蛋白立方'] = all_x['红细胞平均血红蛋白量'] * all_x['红细胞平均血红蛋白量'] * all_x['红细胞平均血红蛋白量']

    # all_x['红计数立方'] = all_x['红细胞计数'] * all_x['红细胞计数'] * all_x['红细胞计数']
    # all_x['血小板比积方'] = all_x['血小板比积'] * all_x['血小板比积']

    all_x['球蛋白比例'] = all_x['*球蛋白'] / all_x['*总蛋白']
    all_x['白蛋白方'] = pow(all_x['白蛋白'] / 10,  10) / 1000
    # all_x['总蛋白立方'] = all_x['*总蛋白']*all_x['*总蛋白']*all_x['*总蛋白']

    all_x['高胆比例'] = all_x['高密度脂蛋白胆固醇'] / all_x['总胆固醇']
    all_x['高低胆比'] = all_x['高密度脂蛋白胆固醇'] / all_x['低密度脂蛋白胆固醇']

    all_x['甘三比'] = all_x['甘油三酯'] / (all_x['甘油三酯'] + all_x['总胆固醇'])
    all_x['尿特征1'] = all_x['肌酐'] / all_x['尿素']
    all_x['尿特征2'] = all_x['尿酸'] / all_x['尿素']
    all_x['中粒比'] = all_x['中性粒细胞%'] / (all_x['中性粒细胞%'] + all_x['嗜酸细胞%'] + all_x['嗜碱细胞%'])
    all_x['中淋比'] = all_x['中性粒细胞%'] / all_x['淋巴细胞%']
    all_x['单淋比'] = all_x['单核细胞%'] / all_x['淋巴细胞%']
    # all_x['中性粒细胞方'] = all_x['中性粒细胞%'] * all_x['中性粒细胞%']
    # all_x['嗜酸细胞方'] = all_x['嗜酸细胞%'] * all_x['嗜酸细胞%']
    all_x = all_x.drop(['白球比例', '白蛋白', '中性粒细胞%', '嗜酸细胞%'], axis=1)  # 白球比例重要性较低
    
    # 还想构造一些年龄的特征??
    all_x['低胆比'] = all_x['低密度脂蛋白胆固醇'] / all_x['年龄']
    all_x['白细胞比'] = all_x['白细胞计数'] / all_x['年龄']
    # all_x['红细胞比'] = all_x['红细胞计数'] / all_x['年龄']
    # all_x['血红蛋白比'] = all_x['血红蛋白'] / all_x['年龄']

    all_x = all_x.drop(['红细胞计数', '血小板比积', '红细胞平均血红蛋白量'], axis=1)

几点解释与不成熟的想法:

1,可见平方,立方,多项式特征及log(1+x)特征,除法特征代码注释掉了,原因是除数有接近0的会报错,建议将除法特征作一些转换?于是只能手动组合一些除法特征。大佬们有许多加减法的特征,还需要学习这些理论。

2,根据相关系数构造了一些三次方至8次方的特征,其中“红血红蛋白立方”确实有效果,其他的并不明显,但感觉是一个构造有效特征的思路,还需继续尝试。

3,结合领域知识:一些在生理上有一点含义的特征确有效果比如‘尿特征’等,可见构造这样的特征十分必要,我们这里做的还不够充分。最后有一些年龄相关的特征打算尝试构造一些(思路是年龄的相关性极高,希望从中挖掘更多特征)。

4,有进行批量生产特征的工作但是并没有进行好特征选择,还有待提升能力!

最后看一些大佬们的作品~

天池精准医疗糖尿病之特征瞎找瞎凑全看脸

下面是通过循环人工手动看特征重要度提取:

train["尿素尿酸比"] = train["尿素"]/train["尿酸"]

train["肌酐尿酸比"] = train["肌酐"]/train["尿酸"]

train["白红计数比"] = train["白细胞计数"]/train["红细胞计数"]

train["红细胞平均血红蛋白量"] = train["血红蛋白"]/train["红细胞计数"]

train["红细胞平均血红蛋体积"] = train["红细胞平均血红蛋白量"]/train["红细胞平均血红蛋白浓度"]

train["红细胞总体积"] = train["红细胞平均体积"]*train["红细胞计数"]

train["红细胞平均血红蛋体积分布宽度"] = train["红细胞平均血红蛋体积"]*train["红细胞体积分布宽度"]

train['嗜酸红白比'] = train['嗜酸细胞%']*train['白红计数比']

train['中性粒平均碱性磷酸'] = train['*碱性磷酸酶']*train['中性粒细胞%']

train['淋巴白比'] = train['淋巴细胞%']*train['白细胞计数']

train['中性粒平均血红蛋白浓度'] = train['红细胞平均血红蛋白浓度']*train['中性粒细胞%']

train["单个红细胞体积宽度差"] = train["红细胞体积分布宽度"]/train["红细胞计数"]

train["单个血小板体积宽度差"] = train["血小板体积分布宽度"]/train["血小板计数"]

train["红细胞宽度体积比"] = train["红细胞体积分布宽度"]/train["红细胞平均体积"]

train["尿酸天门比"] = train["尿酸"]/train["*天门冬氨酸氨基转换酶"]

train["天门白球比例"] = train["白球比例"]*train["*天门冬氨酸氨基转换酶"]

train["红细胞分布宽度天门白球比例"] = train["天门白球比例"]*train["红细胞体积分布宽度"]

train["尿酸谷氨比"] = train["尿酸"]/train["*r-谷氨酰基转换酶"]

train["尿酸碱性磷酸比"] = train["尿酸"]/train["*碱性磷酸酶"]

train["肌酐丙氨酸比"] = train["肌酐"]/train["*丙氨酸氨基转换酶"]

# #######方##################

train["白蛋白方"] = train["白蛋白"]*train["白蛋白"]

train["年龄方"] = train["年龄"]*train["年龄"]

train["红细胞平均血红蛋体积分布宽度lg"] = np.log1p(train['红细胞平均血红蛋体积分布宽度'])

train["红细胞平均血红蛋体积分布宽度lg"] = np.sqrt(train['红细胞平均血红蛋体积分布宽度'])

# # ###年龄###

train["年龄*甘油三酯"] = train["年龄"]*train["甘油三酯"]

train["年龄*嗜碱细胞"] = train["年龄"]*train["嗜碱细胞%"]

train["年龄*剩余胆固醇"] = train["年龄"]*train["剩余胆固醇"]

train["年龄*白细胞计数"] = train["年龄"]*train["白细胞计数"]

# # ###天门###

train["*天门冬氨酸氨基转换酶*甘油三酯"] = train["*天门冬氨酸氨基转换酶"]*train["甘油三酯"]

train["*天门冬氨酸氨基转换酶*单个红细胞体积宽度差"] = train["*天门冬氨酸氨基转换酶"]
                                                      *train["单个红细胞体积宽度差"]

train["*天门冬氨酸氨基转换酶*红细胞平均血红蛋体积分布宽度"] = train["*天门冬氨酸氨基转换酶"]
                                                    *train["红细胞平均血红蛋体积分布宽度"]

train["*天门冬氨酸氨基转换酶*白红计数比"] = train["*天门冬氨酸氨基转换酶"]*train["白红计数比"]

# # # ##丙氨酸###

train["*丙氨酸氨基转换酶*肌酐尿酸比"] = train["*丙氨酸氨基转换酶"]*train["肌酐尿酸比"]

train["*丙氨酸氨基转换酶*尿素尿酸比"] = train["*丙氨酸氨基转换酶"]*train["尿素尿酸比"]

# ###碱性磷酸酶###

train["*碱性磷酸酶*尿素尿酸比"] = train["*碱性磷酸酶"]*train["尿素尿酸比"]

train["*碱性磷酸酶*甘油三酯"] = train["*碱性磷酸酶"]*train["甘油三酯"]

# #高密度脂蛋白胆固醇###

train["高密度脂蛋白胆固醇*尿酸谷氨比"] = train["尿酸谷氨比"]*train["高密度脂蛋白胆固醇"]

train["高密度脂蛋白胆固醇*肌酐丙氨酸比"] = train["肌酐丙氨酸比"]*train["高密度脂蛋白胆固醇"]

# # #红细胞平均血红蛋白浓度###

train["红细胞平均血红蛋白浓度*红细胞平均血红蛋体积分布宽度"] = 
                 train["红细胞平均血红蛋体积分布宽度"]*train["红细胞平均血红蛋白浓度"]

train["红细胞平均血红蛋白浓度*尿素尿酸比"] = train["尿素尿酸比"]*train["红细胞平均血红蛋白浓度"]

train["红细胞平均血红蛋白浓度*年龄"] = train["年龄"]*train["红细胞平均血红蛋白浓度"]

train["红细胞平均血红蛋白浓度*年龄lg+sq"]=np.log1p(train['红细胞平均血红蛋白浓度*年龄'])
                                             +np.sqrt(train['红细胞平均血红蛋白浓度*年龄'])

# #差值#

train["红细胞平均血红蛋白浓度*年龄lg+sq-天门"]=train["红细胞平均血红蛋白浓度*年龄lg+sq"]
                                                       -train["*天门冬氨酸氨基转换酶"]

train["*丙氨酸氨基转换酶*尿素尿酸比-天门"]=train["*丙氨酸氨基转换酶*尿素尿酸比"]-train["*天门冬氨酸氨基转换酶"]

train["年龄*甘油三酯-天门"]=train["年龄*甘油三酯"]-train["*天门冬氨酸氨基转换酶"]

train["红细胞平均血红蛋白浓度-天门"]=train["红细胞平均血红蛋白浓度"]-train["*天门冬氨酸氨基转换酶"]

train["血小板体积分布宽度-天门"]=train["血小板体积分布宽度"]-train["*天门冬氨酸氨基转换酶"]

train["血小板平均体积-丙氨酸"]=train["血小板平均体积"]-train["*丙氨酸氨基转换酶"]

train["血小板平均体积-碱性"]=train["血小板平均体积"]-train["*碱性磷酸酶"]

train["尿酸*白球比例"]=train["尿酸"]*train["白球比例"]

train["年龄*甘油三酯-甘油三酯"]=train["年龄*甘油三酯"]*train["甘油三酯"]

train['谷氨酰基-高密度脂蛋白胆固醇'] = train['*r-谷氨酰基转换酶'] - train['高密度脂蛋白胆固醇']

train['红细胞计数-高密度脂蛋白胆固醇'] = train['红细胞计数'] - train['高密度脂蛋白胆固醇']

train['血红蛋白-肌酐'] = train['血红蛋白'] - train['肌酐']

train['年龄*白细胞计数-红细胞平均体积'] = train['年龄*白细胞计数'] - train['红细胞平均体积']

train['尿素-红细胞平均体积'] = train['尿素'] - train['红细胞平均体积']

# 缺失值填补为中位数

for name in train.columns:

    train[name] = train[name].fillna(train[name].median())

# 改变右偏长尾特征

for column in train.columns:

    if len(train[column].unique()) > 10 and train[column].mean() > 1:

        skew = train[column].skew()

        if abs(skew) > 1.0 and train[column].min() > -1:

            train[column] = np.log1p(train[column])

# #特征选择

train = train.drop('id', axis=1)

train = train.drop(["乙肝表面抗原", '乙肝表面抗体'], axis=1)

train['高低总胆固醇'] = train['高密度脂蛋白胆固醇'] + train['低密度脂蛋白胆固醇']

train = train.drop(["尿素", "肌酐"], axis=1)

train = train.drop(["血小板比积", "甘油三酯", "性别_女","性别_男",], axis=1)


还有 一篇不错的,糖尿病预测方案简介

data["yearmonth"] = data['体检日期'].dt.year*100 + data['体检日期'].dt.month

data["yearweek"] = data['体检日期'].dt.year*100 + data['体检日期'].dt.weekofyear

data["month_of_year"] = data['体检日期'].dt.month

data["week_of_year"] = data['体检日期'].dt.weekofyear

data["day_of_week"] =  data['体检日期'].dt.weekday

data['总酶'] = data['*天门冬氨酸氨基转换酶']+data['*丙氨酸氨基转换酶']+data['*碱性磷酸酶']+data['*r-谷氨酰基转换酶']

data['*天门冬氨酸氨基转换酶ratio'] = data['*天门冬氨酸氨基转换酶']/np.maximum(data["总酶"].astype("float"),1)

data['*天门冬氨酸氨基转换酶ratio'].loc[data['*天门冬氨酸氨基转换酶ratio']<0]=0

data['*天门冬氨酸氨基转换酶ratio'].loc[data['*天门冬氨酸氨基转换酶ratio']>1]=1

data['*丙氨酸氨基转换酶ratio'] = data['*丙氨酸氨基转换酶']/np.maximum(data["总酶"].astype("float"),1)

data['*丙氨酸氨基转换酶ratio'].loc[data['*丙氨酸氨基转换酶ratio']<0]=0

data['*丙氨酸氨基转换酶ratio'].loc[data['*丙氨酸氨基转换酶ratio']>1]=1

data['*碱性磷酸酶ratio'] = data['*碱性磷酸酶']/np.maximum(data["总酶"].astype("float"),1)

data['*碱性磷酸酶ratio'].loc[data['*碱性磷酸酶ratio']<0]=0

data['*碱性磷酸酶ratio'].loc[data['*碱性磷酸酶ratio']>1]=1

data['*r-谷氨酰基转换酶ratio'] = data['*r-谷氨酰基转换酶']/np.maximum(data["总酶"].astype("float"),1)

data['*r-谷氨酰基转换酶ratio'].loc[data['*r-谷氨酰基转换酶ratio']<0]=0

data['*r-谷氨酰基转换酶ratio'].loc[data['*r-谷氨酰基转换酶ratio']>1]=1

data['白蛋白ratio'] = data['白蛋白']/np.maximum(data["*总蛋白"].astype("float"),1)

data['白蛋白ratio'].loc[data['白蛋白ratio']<0]=0

data['白蛋白ratio'].loc[data['白蛋白ratio']>1]=1

data['*球蛋白ratio'] = data['*球蛋白']/np.maximum(data["*总蛋白"].astype("float"),1)

data['*球蛋白ratio'].loc[data['*球蛋白ratio']<0]=0

data['*球蛋白ratio'].loc[data['*球蛋白ratio']>1]=1

data['高密度脂蛋白胆固醇ratio'] = data['高密度脂蛋白胆固醇']/np.maximum(data["总胆固醇"].astype("float"),1)

data['高密度脂蛋白胆固醇ratio'].loc[data['高密度脂蛋白胆固醇ratio']<0]=0

data['高密度脂蛋白胆固醇ratio'].loc[data['高密度脂蛋白胆固醇ratio']>1]=1

data['低密度脂蛋白胆固醇ratio'] = data['低密度脂蛋白胆固醇']/np.maximum(data["总胆固醇"].astype("float"),1)

data['低密度脂蛋白胆固醇ratio'].loc[data['低密度脂蛋白胆固醇ratio']<0]=0

data['低密度脂蛋白胆固醇ratio'].loc[data['低密度脂蛋白胆固醇ratio']>1]=1

data['null_count'] = data.isnull().sum(axis=1)

data['*r-谷氨酰基转换酶-尿酸'] = data['*r-谷氨酰基转换酶'] - data['尿酸']

data['*r-谷氨酰基转换酶*年龄'] = data['*r-谷氨酰基转换酶'] * data['年龄']

data['*r-谷氨酰基转换酶*总胆固醇'] = data['*r-谷氨酰基转换酶'] * data['总胆固醇']

data['*丙氨酸氨基转换酶**天门冬氨酸氨基转换酶'] = data['*丙氨酸氨基转换酶'] * data['*天门冬氨酸氨基转换酶']

data['*丙氨酸氨基转换酶+*天门冬氨酸氨基转换酶'] = data['*丙氨酸氨基转换酶'] + data['*天门冬氨酸氨基转换酶']

data['*丙氨酸氨基转换酶/*天门冬氨酸氨基转换酶'] = data['*丙氨酸氨基转换酶'] / data['*天门冬氨酸氨基转换酶']

data['*天门冬氨酸氨基转换酶/*总蛋白'] = data['*天门冬氨酸氨基转换酶'] / data['*总蛋白']

data['*天门冬氨酸氨基转换酶-*球蛋白'] = data['*天门冬氨酸氨基转换酶'] - data['*球蛋白']

data['*球蛋白/甘油三酯'] = data['*球蛋白'] / data['甘油三酯']

data['年龄*红细胞计数/红细胞体积分布宽度-红细胞计数'] = data['年龄'] * data['红细胞计数'] / (data['红细胞体积分布宽度']
-data['红细胞计数'])
data['尿酸/肌酐'] = data['尿酸'] / data['肌酐']
data['肾'] = data['尿素'] + data['肌酐'] + data['尿酸']
data['红细胞计数*红细胞平均血红蛋白量'] = data['红细胞计数'] * data['红细胞平均血红蛋白量']
data['红细胞计数*红细胞平均血红蛋白浓度'] = data['红细胞计数'] * data['红细胞平均血红蛋白浓度']
data['红细胞计数*红细胞平均体积'] = data['红细胞计数'] * data['红细胞平均体积']
data['嗜酸细胞'] = data['嗜酸细胞%'] * 100
data['年龄*中性粒细胞%/尿酸*血小板比积'] = data['年龄'] * data['中性粒细胞%']/ (data['尿酸']*data['血小板比积'])
predictors1 = ['年龄',  '性别',  '高密度脂蛋白胆固醇',  '甘油三酯', 尿素',  '低密度脂蛋白胆固醇',                
'*天门冬氨酸氨基转换酶',*丙氨酸氨基转换酶',  '*r-谷氨酰基转换酶', '*碱性磷酸酶',                
'尿酸',    '中性粒细胞%',   '红细胞体积分布宽度',   '红细胞平均体积',                
'红细胞平均血红蛋白浓度',   '红细胞平均血红蛋白量',   '红细胞计数',  '血小板体积分布宽度',                
'血小板比积',   'yearweek', 'week_of_year',  'day_of_week',  '*天门冬氨酸氨基转换酶ratio',               
'*碱性磷酸酶ratio',  '*r-谷氨酰基转换酶-尿酸',  '*r-谷氨酰基转换酶*年龄',               
'*r-谷氨酰基转换酶*总胆固醇',  '*丙氨酸氨基转换酶**天门冬氨酸氨基转换酶',               
'*丙氨酸氨基转换酶+*天门冬氨酸氨基转换酶',  '*丙氨酸氨基转换酶/*天门冬氨酸氨基转换酶' ,
'*天门冬氨酸氨基转换酶/*总蛋白',    '*天门冬氨酸氨基转换酶-*球蛋白' ,'*球蛋白/甘油三酯']                      
#下面是麻婆豆腐开源的部分特征               
'尿酸/肌酐'  ,'红细胞计数*红细胞平均血红蛋白浓度' ,'红细胞计数*红细胞平均体积','肾','总酶' ,'嗜酸细胞%','淋巴细胞%'

不去解释大佬们的作品,特征确实就是那样的各种运算和组合,真正生成合适的特征是反复筛选的结果,还需多动手做才是。因此这一部分特征示例才格外重要。大佬们的特征如此之多可见特征工程的工作量确实很大!

特征工程介绍完了,数据挖掘的工作其实完成了80%,下一节介绍几个常用的模型~多谢诸位支持,还请大佬们指教~


天池精准医疗大赛糖尿病项目是天池平台主办的一个数据竞赛。糖尿病是一种慢性疾病,严重影响人们的健康和生活质量。为了寻找更好的糖尿病诊断和治疗方法,天池精准医疗大赛提供了一个开放的数据集供参赛者使用。 糖尿病的特点是血糖水平的异常升高,因此识别和预测糖尿病的关键在于建立一个有效的血糖预测模型。天池平台上的糖尿病数据集包含了大量的匿名化患者数据,如年龄、性别、血压、胰岛素水平等。参赛选手通过分析这些数据,可以建立一个机器学习模型,来预测一个人是否患有糖尿病或者糖尿病的严重程度。 GitHub是全球最大的开源社区平台之一,提供了一个便捷的代码托管和协作开发平台。在天池精准医疗大赛糖尿病项目中,参赛者可以使用GitHub存储和分享他们的代码、模型和解决方案。这不仅有助于开发者之间的交流和合作,还可以促进开源技术的共享和发展。 通过参与天池精准医疗大赛糖尿病项目,并在GitHub上分享相关代码和解决方案,有助于推动糖尿病诊断和治疗领域的发展。更多的开发者可以参与其中,分享他们的经验和观点,提供创新的解决方案,最终为糖尿病患者提供更准确、更个性化的诊疗服务。这个竞赛的举办和GitHub的使用,都进一步推动了精准医疗和人工智能在健康领域的应用,为我们的医疗事业带来了更多的希望和进步。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值