K-近邻算法之特征工程-特征预处理

1 什么是特征预处理

1.1 特征预处理定义

scikit-learn的解释

provides several common utility functions and transformer classes to change raw feature vectors into a representation that is more suitable for the downstream estimators.

翻译过来:通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程   【简单理解:把数据转换成机器更加容易识别的数据】

为什么我们要进行归一化/标准化?

  • 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级容易影响(支配)目标结果,使得一些算法无法学习到其它的特征

举例:约会对象数据

我们需要用到一些方法进行无量纲化使不同规格的数据转换到同一规格

1.2 包含内容(数值型数据的无量纲化)

  • 归一化
  • 标准化

1.3 特征预处理API

sklearn.preprocessing

2 归一化

2.1 定义

通过对原始数据进行变换把数据映射到(默认为[0,1])之间

2.2 公式

作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0

那么怎么理解这个过程呢?我们通过一个例子

2.3 API

  • sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )  【feature_range范围,自己指定的范围,默认为0~1】

    • MinMaxScalar.fit_transform(X)

      • X:numpy array格式的数据[n_samples,n_features]
    • 返回值:转换后的形状相同的array

2.4 数据计算

我们对以下数据进行运算,在dating.txt中。保存的就是之前的约会对象数据

milage,Liters,Consumtime,target
40920,8.326976,0.953952,3
14488,7.153469,1.673904,2
26052,1.441871,0.805124,1
75136,13.147394,0.428964,1
38344,1.669788,0.134296,1
  • 分析

1、实例化MinMaxScalar

2、通过fit_transform转换

import pandas as pd
from sklearn.preprocessing import MinMaxScalerdef minmax_demo():"""归一化演示:return: None"""data = pd.read_csv("dating.txt")print(data)# 1、实例化一个转换器类transfer = MinMaxScaler(feature_range=(2, 3))# 2、调用fit_transformdata = transfer.fit_transform(data[['milage','Liters','Consumtime']])print("最小值最大值归一化处理的结果:\n", data)return None

返回结果:

问题:如果数据中异常点较多,会有什么影响?

2.5 归一化总结

注意最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

怎么办?

3 标准化

3.1 定义

通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内

3.2 公式

作用于每一列,mean为平均值,σ为标准差

所以回到刚才异常点的地方,我们再来看看标准化

  • 对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
  • 对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。

3.3 API

  • sklearn.preprocessing.StandardScaler( )

    • 处理之后每列来说所有数据都聚集在均值0附近标准差差为1
    • StandardScaler.fit_transform(X)
      • X:numpy array格式的数据[n_samples,n_features]
    • 返回值:转换后的形状相同的array

3.4 数据计算

同样对上面的数据进行处理

  • 分析

1、实例化StandardScaler

2、通过fit_transform转换

import pandas as pd
from sklearn.preprocessing import StandardScalerdef stand_demo():"""标准化演示:return: None"""data = pd.read_csv("dating.txt")print(data)# 1、实例化一个转换器类transfer = StandardScaler()# 2、调用fit_transformdata = transfer.fit_transform(data[['milage','Liters','Consumtime']])print("标准化的结果:\n", data)print("每一列特征的平均值:\n", transfer.mean_)print("每一列特征的方差:\n", transfer.var_)return None

返回结果:

3.5 标准化总结

在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。  【异常值对此影响比较小】

K-近邻算法之特征工程-特征预处理相关推荐

  1. ML之FE之FS:特征工程/数据预处理—特征选择之利用过滤式filter、包装式wrapper、嵌入式Embedded方法(RF/SF)进行特征选择(mushroom蘑菇数据集二分类预测)最全案例应用

    ML之FE之FS:特征工程/数据预处理-特征选择之利用过滤式filter.包装式wrapper.嵌入式Embedded方法(RF/SF)进行特征选择(mushroom蘑菇数据集二分类预测)案例应用 利 ...

  2. 机器学习之特征工程--特征预处理(上)

    机器学习特征工程--特征预处理(上) 最近又重新看了下常用的特征预处理方法,主要来源是sklearn官方文档,一些关键信息记录下,留存用,有些乱和杂,抽时间再整理. 此为上篇,主要包括:线性转化,非线 ...

  3. ML之FE:特征工程/数据预处理中的数据异常值的概述、检测方法、处理方法技巧总结之详细攻略

    ML之FE:特征工程/数据预处理中的数据异常值的概述.检测方法.处理方法技巧总结之详细攻略 目录 异常值 异常值的概述(简介/原因/影响) 异常值的检测方法

  4. 机器学习入门 | 【01】K近邻算法

    文章目录 1.K近邻算法[通过你的邻居来判断你的类别] 1.简介 2.电影案例分析 3.api的初步使用 3.1 一般的流程: 3.2 sklearn模块介绍 3.3 API的使用 3.4 距离度量 ...

  5. 基于k近邻算法的干豆品种分类

    摘 要 近年来,干豆由于其较高的营养价值和良好的口感越来越受到人们的欢迎.其种类繁多且易于种植,是世界食用作物中产量最高的一种.干豆品种分类对干豆培育方向.产量需求和品质改良具有重要意义.本文以k近邻 ...

  6. 机器学习算法---K近邻算法

    K近邻算法 1. K-近邻算法简介 1.1 什么是K-近邻算法 根据你的"邻居"来推断出你的类别 K Nearest Neighbor算法⼜叫KNN算法,这个算法是机器学习⾥⾯⼀个 ...

  7. 机器学习:K近邻算法

    一.K-近邻算法简介 1 什么是K-近邻算法 根据你的"邻居"来推断出你的类别 1.1 K-近邻算法(KNN)概念 K Nearest Neighbor算法又叫KNN算法,这个算法 ...

  8. 机器学习算法——系统性的学会使用 K近邻算法(KNN)

    目录 1.K-近邻算法简介 1.1 什么是K-近邻算法 1.2 K-近邻算法(KNN)概念 (1)定义: (2)距离公式: 1.3 电影类型分析 1.4 KNN算法流程总结 2.k近邻算法api初步使 ...

  9. 2 机器学习 K近邻算法(KNN) 学习曲线 交叉验证 手写数字识别

    机器学习 1 K-近邻算法介绍 1.1 分类问题 分类问题:根据已知样本的某些特征,判断一个未知样本属于哪种样本类别. 与回归问题相比,分类问题的输出结果是离散值,用于指定输入的样本数据属于哪个类别. ...

最新文章

  1. 深入Hotspot源码,搞清楚JVM的本质
  2. 【收藏】scala创建二维数组并赋值
  3. 银屑病与肠道菌群(调研手稿二)
  4. 分隔list,让页面成多行多列遍列
  5. 一起谈.NET技术,ASP.NET 请求处理流程
  6. node.js 爬虫入门总结
  7. Linux下pthread的读写锁的优先级问题
  8. PCL中把点云拟合成曲面(附源代码)
  9. 2021东北四省赛J. Transform(空间几何)
  10. 多少秒算长镜头_电影术语中长镜头是什么意思?
  11. 手机端微信发朋友圈功能测试点总结
  12. 关于Ubuntu多显卡服务器,掉显卡的问题
  13. 计算机开机进不去桌面,电脑开机进不了桌面,怎么破?
  14. qt tableWidget 去掉网格线
  15. Android应用设置系统情景模式
  16. pytorch上分之路——视频补全算法(onion peel network)
  17. 夏天到了,蚊子多了,下面给大家几个防蚊子的建议
  18. 2021年处暑是什么时候?处暑的习俗有哪些?
  19. androd 屏幕分辨率对照表
  20. java pdf加密文件,java使用itext为pdf文件设置密码保护

热门文章

  1. 摆脱 FM!这些推荐系统模型真香
  2. 穿山甲发布聚合产品GroMore,为开发者变现赋能
  3. 科大讯飞刷新纪录,机器阅读理解如何超越人类平均水平? | 技术头条
  4. 技术大佬们都推荐的vim学习指南来了,值得收藏!
  5. 深度分析蔡徐坤的百万流量数据,揭底哪些是假的!
  6. 重新定义 AI 服务器架构
  7. Arm 发布Mali多媒体套件,机器学习将不再是高端手机的专享
  8. 求你了,不要再在对外接口中使用枚举类型了!
  9. 面试官写了个双冒号::问我这是什么语法?Java中有这玩意?
  10. 直观讲解一下RPC调用和HTTP调用的区别