====== 多值变量数据的处理 ======
对于存在多个值的变量处理,一般有两个方案:
- 使用MultiLabelBinarizer(),主要用于处理数据保存在不同列中的情况
- 使用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)