====== 多值变量数据的处理 ====== 对于存在多个值的变量处理,一般有两个方案: - 使用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)