机器学习之特征归一化

当数据集的数值属性具有非常大的比例差异,往往导致机器学习的算法表现不佳,当然也有极少数特例。在实际应用中,通过梯度下降法求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

  当数据集的数值属性具有非常大的比例差异,往往导致机器学习的算法表现不佳,当然也有极少数特例。在实际应用中,通过梯度下降法求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但对于决策树不使用,以C4.5为例,决策树在进行节点分裂时主要依据数据集D关于特征X的信息增益比,而信息增益比根特征是否经过归一化是无关的。

  同比例缩放所有属性常用的两种方法是:最小-最大缩放和标准化

  最小-最大缩放(又加归一化),将值重新缩放使其最终范围在0-1之间,(current – min)/ (max – min),Scikit-Learn提供了MinMaxSaler转换器可以完成该功能

  标准化,(current – mean) / var,使得得到的结果分布具备单位方差,相比最小-最大缩放,标准化的方法受异常值的影响更小,同样Scikit-Learn也提供了StandScaler转换器

1. MinMaxScaler和StandScaler类结构

  机器学习之特征归一化

2. MinMaxScaler示例

>>> from sklearn.preprocessing import MinMaxScaler
>>>
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler(copy=True, feature_range=(0, 1))
>>> print(scaler.data_max_)
[  1.  18.]
>>> print(scaler.transform(data))
[[ 0.    0.  ]
 [ 0.25  0.25]
 [ 0.5   0.5 ]
 [ 1.    1.  ]]
>>> print(scaler.transform([[2, 2]]))
[[ 1.5  0. ]]

3. StandScaler示例

>>> data = [[0, 0], [0, 0], [1, 1], [1, 1]]
>>> scaler = StandardScaler()
>>> print(scaler.fit(data))
    StandardScaler(copy=True, with_mean=True, with_std=True)
>>> print(scaler.mean_)
    [ 0.5  0.5]
>>> print(scaler.transform(data))
    [[-1. -1.]
    [-1. -1.]
    [ 1.  1.]
    [ 1.  1.]]
>>> print(scaler.transform([[2, 2]]))
    [[ 3.  3.]]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120028.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 实现watch命令

    实现watch命令

  • centos7下安装mysql5.7(rpm)「建议收藏」

    centos7下安装mysql5.7(rpm)「建议收藏」一查看linux操作系统版本和系统内核版本[root@nfs_client~]#cat/etc/redhat-release查看操作系统版本CentOSLinuxrelease7.5.1804(Core)[root@nfs_client~]#uname-r查看系统内核版本3.10.0-862.el7.x86_64…

  • Ubuntu18 安装yum

    Ubuntu18 安装yum一.先执行一下命令更新软件源sudoapt-getupdatesudoapt-getupgrade二.检测是否安装build-essential包sudoapt-getinstallbuild-essential

  • 深入浅出讲解Optional包装类

    深入浅出讲解Optional包装类Optional是JDK8的新特性,首先这个类是被final修饰的,并且这个类只有一个Object的超类,下面是这个类的结构。我们可以看到一共也没多少方法,所以我觉得就从这个类开始,养成阅读源码的习惯,再合适不过了。Optional的作用在写这篇博客之前,看过好多相关的资料,大体上来说这个类就是用来解决万恶的空指针异常,用来避免繁琐的!=null代码而存在的。那你也太…

  • python基础语法个人笔记_python基础常用语句

    python基础语法个人笔记_python基础常用语句python语法规范python的语法规范非常重要,简洁明了是python的特性,以下是python语法的一些说明python3的编码格式是unicode(utf-8)标识符的规则:由字母、数字

  • classcastingexception_class session

    classcastingexception_class sessionClassCastException是JVM在检测到两个类型间转换不兼容时引发的运行时异常。此类错误通常会终止用户请求。在执行任何子系统的应用程序代码时都有可能发生ClassCastException异常。通过转换,可以指示Java编译器将给定类型的变量作为另一种变量来处理。对基础类型和用户定义类型都可以转换。Java语言规范定义了允许的转换,其中大多数可在编译时进行验证。不过,某些转换还需要运行

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号