第一次课Q&A
1.如何将类别型变量引入线性回归,提出至少1种方案?
针对类别变量,想要将其引入线性回归,基本的思路就是重新编码,有这么几种重新编码的方法
一、replace&map法
相对而言,replace可能更加针对的是,有些时候,在我们要进行特征处理的变量中,并不是所有的取值都需要进行特征处理,只需要对其中部分不符合要求的取值进行替换的情况。
比如说在一列数据中,有个别值与其他值不统一,这时我就可以采取replace法
import pandas as pd
test_dict = {'id': [1, 2, 3, 4, 5, 6, 7, 8], # 构建测试数据``
'math':[96,70,65, 30, 93, 'A', 66, 88]}
test_df = pd.DataFrame(test_dict)
# 将math一列中的A替换93
test_df.replace({'math': {'A':93}}, inplace=True)
test_df
除了使用 replace() 方法,也可以应用内置的 map() 方法进行直接替换处理。
map() 可以对 Dataframe 中某列内的元素进行操作,在此情景下的作用是:根据映射关系,为指定列匹配结果并进行替换。其处理原理与使用 replace() 进行直接替换的方式一致,需要自行指定各类别取值应该如何转换为数值。
但其特别之处在于,map() 方法作用于整列变量的元素,因此需要对该列变量中所有可能出现的取值指定映射关系,否则没有指定映射关系的取值将会被转换成NaN。因此,不适用于取值类别特别多的时候。
借用讲述 replace() 部分的案例,我们要做的工作是将93转换成为A。
如果使用 map() 方法,并只对93进行转换,而没有对所有取值指定映射关系。上例案例可以修改为:
test_df['math'] = test_df['math'].map({93: 'A'})
test_df
二、 LabelEncoding 标签编码
上述map法和replace法的人工操作量很大,因此, 我们需要能够快速对整列变量的所有取值进行编码的方法。