用户工具

站点工具


model:preprocess:multivalue

多值变量数据的处理

对于存在多个值的变量处理,一般有两个方案:

  1. 使用MultiLabelBinarizer(),主要用于处理数据保存在不同列中的情况
  2. 使用CountVectorizer,主要用于处理数据保存在相同列中的情况

MultiLabelBinarizer示例

# ########################################################
# File: 02-preprocess-02-MultiLabelBinarizer
# author: 郝金隆
# Date: 2019-12-04
# MultiLabelBinarizer: 
#     将多列离散型数据共同二进制化,转化为dummy变量,适用于类似
#     兴趣爱好1,兴趣爱好2,兴趣爱好3这样的数据
# 主要内容:
#     1. import语句
#     2. 加载示例数据
#     3. 基础用法
#     4. 与DataFrameMapper配合使用
# #############################################################
 
# 1. import语句
from sklearn.preprocessing import LabelBinarizer
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn_pandas import DataFrameMapper
from sklearn2pmml.preprocessing import CastTransformer
import numpy as np
import pandas as pd
 
# 2. 加载示例数据
df = pd.DataFrame({
    'pet_1': ['fish', 'dog', 'cat', 'dog', 'fish'],
    'pet_2': ['bird', 'goose', 'fish', 'cat', np.NaN]
})
 
# 4. 与DataFrameMapper协作使用 
# 4.1 使用MulbiLabelBinarizer(),分成了5列,两列中的重复内容合并了
dataFrameMapper = DataFrameMapper([
    (['pet_1', 'pet_2'], [CastTransformer(str), MultiLabelBinarizer()])
], df_out=True)
dataFrameMapper.fit_transform(df)
注意:MultiLabelBinarizer对空值处理不是特别的友好,需要首先进行转换,否则会报错

CountVectorizer示例

# ####################################################
# file: 02-preprocessing-10-CounterVectorizer
# author: jinlong.hao
# date: 2019-12-11
# desc: 文本向量化处理
# content:
#     1. import
#     2. 加载示例数据
#     3. 基础使用
#     4. 与DataFrameMapper结合使用
# ######################################################
 
# 1. import
from sklearn.feature_extraction.text import CountVectorizer
from sklearn_pandas import DataFrameMapper
import pandas as pd
import numpy as np
 
# 2. 加载数据
df = pd.DataFrame({
    'sources': [
        '汽车之家,易车',
        '汽车之家,易车,爱卡',
        '爱卡',
        '易车'
    ]
})
 
# 4. 与DataFrameMapper配合使用
dataFrameMapper=DataFrameMapper([
    ('sources', CountVectorizer())
], df_out=True)
 
dataFrameMapper.fit_transform(df)
model/preprocess/multivalue.txt · 最后更改: 2020/07/12 12:07 (外部编辑)