前言:特征工程是机器学习的重点,他直接影响着模型的好坏。
在进行机器学习之前,收集数据的过程中,我们主要按照以下规则找出我们所需 要的数据:
image.png
特征转换主要指将原始数据中的字段数据进行转换操作,从而得到适合进行算法 模型构建的输入数据(数值型数据),在这个过程中主要包括但不限于以下几种数 据的处理: 文本数据转换为数值型数据 缺省值填充 定性特征属性哑编码 定量特征属性二值化 特征标准化与归一化
#-*- conding:utf-8 -*-
'''
亚编码,先把特征转为数字,再进行亚编码处理
'''
import numpy as np
import matplotlib as mpl
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import OneHotEncoder
path = "car.data"
data = pd.read_csv(path, header=None)
#查看数据
for i in range(7):
print(np.unique(data[i]))
#将字符串转化为数字,用pd.Categorical
# pd.Categorical(data)
x=data.apply(lambda x:pd.Categorical(x).codes)
print(x.head(5))
#进行亚编码操作,toarray()方法转化为数组
en=OneHotEncoder()
x = en.fit_transform(x)
print(x.toarray())
print(en.n_values_)
#在进行转化
df=pd.DataFrame(x.toarray())
print(df.head(5))
以后再说
当做完特征转换后,实际上可能会存在很多的特征属性,比如:多项式扩展转换、文本 数据转换等等,但是太多的特征属性的存在可能会导致模型构建效率降低,同时模型的 效果有可能会变的不好,那么这个时候就需要从这些特征属性中选择出影响最大的特征 属性作为最后构建模型的特征属性列表。 在选择模型的过程中,通常从两方面来选择特征: 特征是否发散:如果一个特征不发散,比如方差解决于0,也就是说这样的特征对于样本的 区分没有什么作用。 特征与目标的相关性:如果与目标相关性比较高,应当优先选择。 特征选择的方法主要有以下三种: