onehot编码——类别字段
机器学习中,对于一些类别字段,计算机是不能直接进行识别的。例如某个数据集中,动物类别分为cat、dog、turtle、fish等,可以通过onehot编码将其转换成计算机所能识别的数字。
pet |
cat |
dog |
turtle |
fish |
cat |
cat | dog | turtle | fish |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 |
#分类字段处理
df = pd.readcsv('d:/1.csv')
cat_columns = ["cat","dog","turtle","fish"] #需要进行one-hot编码的分类字段的名字
from sklearn.preprocessing import OneHotEncoder #导入包
oneHotEncoder = OneHotEncoder(drop = 'first') #删除每一组独热变量中的第一列变量(通常用于防止线性回归出现多重共线性的问题)
cat_features = oneHotEncoder.fit_transform(df[cat_columns]).toarray() #将数据中的类别特征进行训练。
数字列——去均值和方差归一化
目的:加快求解速度,提升预估精度
方案:(X-mean)/std
num_columns=["1","2","3","4"] #数值列名
from sklearn.preprocessing import StandardScaler #导入数据包
standardScaler = StandardScaler() #创建一个标准化的对象
num_features = standardScaler.fit_transform(df[num_columns]) #对数值列进行标准化
将类别特征和数值特征进行拼接
X = np.hstack([cat_features,num_features])