机器学习3—数据的特征工程之特征处理

1191-杨同学

发表文章数:32

首页 » 算法 » 正文

特征处理

概念

特征处理是指通过特定的统计方法(数学方法)将数据转换成算法要求的数据。

  1. 数值型数据归一化标准化缺失值处理
  2. 类别型数据one-hot编码
  3. 时间类型:时间的切分。

sklearn特征处理API

sklearn.preprocessing

归一化

  1. 概念:通过对原始数据进行变换把数据映射到(默认为[0, 1])指定范围。
    机器学习3---数据的特征工程之特征处理
  2. sklearn归一化APIsklearn.preprocessing.MinMaxScaler
    语法:
    (1)实例化:MinMaxScalar(feature_range = (0, 1),……)
    即每个特征值缩放到指定范围(默认[0, 1])
    (2)MinMaxScalar.fit_transform(X)
    X:numpy array格式的数据[n_samples, n_features]
    返回值:与转换前相同的array
  3. 归一化步骤
    (1)实例化MinMaxScalar
    (2)通过fit_transform转换
from sklearn.preprocessing import MinMaxScaler

def mm():
    """
    归一化处理
    :return: None
    """
    # 实例化
    mm = MinMaxScaler(feature_range=(2, 3))

    # fit_transform
    data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
    print(data)

    return None


if __name__ == '__main__':
    mm()

运行结果:
机器学习3---数据的特征工程之特征处理

  1. 归一化适用场景:
    例:
    机器学习3---数据的特征工程之特征处理
    若不进行归一化,在进行后续的数据处理时,如k近邻算法,会发现里程数相比其他两个特征对最终结果的影响更大。因此,在认为几个特征同等重要时,有必要对数据进行归一化处理(归一化的目的即是使某一个特征对结果不会造成更大影响)。
  2. 归一化存在的问题
    当数据中存在异常点(如下图所示)时,会影响数据的最大值和最小值,所以这种方法鲁棒性较差,只适合传统精确小数据场景。
    机器学习3---数据的特征工程之特征处理

标准化

标准化能解决上面提出的异常点问题。

  1. 概念
    标准化通过对原始数据进行变换,将数据变换到均值为0,方差为1的范围内:
    机器学习3---数据的特征工程之特征处理
    机器学习3---数据的特征工程之特征处理
    机器学习3---数据的特征工程之特征处理

  2. sklearn标准化API:
    sklearn.preprocessing.StandardScaler
    (1)StandardScaler.fit_transform(X)
    X: numpy格式的数据[n_samples, n_features]
    返回值:与转换前形状相同的array
    (2)StandardScaler.mean
    原始数据中每列特征的平均值
    (3)StandardScaler.std
    原始数据中每列特征的方差

  3. 标准化步骤
    (1)实例化StandardScaler
    (2)通过fit_transform转换

  4. 标准化适用场景
    标准化在已有样本足够过的情况比较稳定,适合现代嘈杂大数据场景。

缺失值处理

  1. 缺失值处理方法
删除 若每列或者行数据缺失值达到一定比例,建议放弃整行或者整列
插补 可以通过缺失值每行或者每列的平均值、中位数来填充
  1. 缺失值处理API:
    sklearn.preprocessing.Imputer
    (1)实例化:
    Imputer(missing_values = “NaN”, strategy = “mean”, axis = 0)
    注:axis=0为列方向
    (2)Imputer.fit_transform(X)
    X: numpy array格式的数据[n_samples, n_features]
    返回值:与转换前形状相同的array

  2. Imputer流程:
    (1)初始化Imputer,指定“缺失值”,指定填补策略,指定行或列(缺失值也可以是别的指定要替换的值)
    (2)调用fit_transform()

  3. 关于np.nan(np.NaN)
    (1)numpy的数组中可以使用np.nan或者np.NaN来代替缺失值,属于float类型
    (2)如果是文件中的一些缺失值,可以替换成nan,通过np.array转换成float类型的数据即可。如:replace(“?”,np.nan)

from sklearn.preprocessing import Imputer
import numpy as np

def im():
    """
    缺失值处理
    :return:
    """
    im = Imputer(missing_values="NaN", strategy="mean", axis=0)
    data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
    print(data)

    return None


if __name__ == '__main__':
    im()

运行结果:
机器学习3---数据的特征工程之特征处理

拜师教育学员文章:作者:1191-杨同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《机器学习3—数据的特征工程之特征处理》 发布于2020-07-23

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录