lightgbm处理类别特征

lightGBM的categorical_feature(类别特征)使用

http://www.luyixian.cn/news_show_253681.aspx

lightGBM比XGBoost的1个改进之处在于对类别特征的处理, 不再需要将类别特征转为one-hot形式, 具体可参考这里.

在使用python API时(参考官方文档)
1.可以使用pd.DataFrame存放特征X, 每一列表示1个特征, 将类别特征设置为X[cat_cols].astype('category'). 这样模型在fit时会自动识别类别特征.
2.在模型的fit方法中传入参数categorical_feature, 指明哪些列是类别特征.
3.类别特征的值必须是从0开始的连续整数, 比如0,1,2,..., 不能是负数.

import json
import os
import math
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import safe_config
import numpy as np

df = pd.read_csv('safe-0817-0822.csv')
import safe_config

df[safe_config.TEXT_CATEGORICAL_COLS] = df[safe_config.TEXT_CATEGORICAL_COLS].fillna('unkown')
# 缺失值填充
missing_value_dict = {}
for col in safe_config.NUMERIC_CATEGORICAL_COLS + safe_config.NUMERIC_COLS:
    fill_value = df[col].median()
    df[col] = df[col].fillna(fill_value)
    missing_value_dict[col] = fill_value
# 缺失值填充dict转json
with open("missing_value_fill.json", "w") as f:
    json.dump(missing_value_dict, f)
    print("缺失值填充json完成...")


def encodeColumns(sdf, colnames):
    df = sdf  # .copy()
    labelEncoderDict = {}
    for col in colnames:
        print(col)
        labelEncoderDict[col] = {}
        le = LabelEncoder()
        df[col] = le.f
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值