【机器学习 - 3】:数据归一化(最值归一化、均值方差归一化)

news2024/10/7 16:17:09

文章目录

  • 数据归一化的使用
  • 最值归一化
  • 均值方差归一化(常用)
  • 在sklearn中调用归一化(鸢尾花数据归一化)

数据归一化的使用


为什么要使用数据归一化?
举个例子,例如我们要使用KNN算法来预测肿瘤为良性肿瘤或恶性肿瘤。以下是一些数据:

肿瘤大小(厘米)发现时间(天)肿瘤类型
样本11200良性肿瘤
样本25100恶性肿瘤
样本32150良性肿瘤

根据以上数据,画出散点图

import numpy as np
import matplotlib.pyplot as plt

# 训练集数据
X_train = np.array([
    [1, 200],
    [5, 100],
    [2, 150]
])
y_train = np.array([1,0,1]) # 1为良性,0为恶性

# 绘制散点图
plt.figure(dpi=100)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文
plt.scatter(X_train[y_train==1, 0], X_train[y_train==1,1], color='b') # 蓝色为良性
plt.scatter(X_train[y_train==0, 0], X_train[y_train==0,1], color='r')
plt.xlabel("肿瘤大小(厘米)")
plt.ylabel("发现时间(天)")
plt.legend(loc="best")
plt.show()

在这里插入图片描述
观察上图,并未发现任何问题。当我们计算样本1和样本2的距离时,公式为:
在这里插入图片描述
我们可发现纵坐标的数据远远大于横坐标的数据。这样在我们进行计算时,由于发现时间的影响远大于肿瘤大小的影响,所以预测相当于只采用了一个特征。

因此我们需要进行数据归一化

最值归一化


最值归一化:把所有数据映射到0-1之间。公式如下:
在这里插入图片描述
以上述例子为例:对发现时间的特征进行最值归一化。

import numpy as np
X = np.array([
    [1, 200],
    [5, 100],
    [2, 150]
])
X = np.array(X, dtype='float')
X[:,1] = (X[:,1]-np.min(X[:,1]))/(np.max(X[:,1])-np.min(X[:,1]))

在这里插入图片描述

均值方差归一化(常用)

均值方差归一化:它是把所有数据归到均值为0,方差为1的分布中。即确保最终得到的数据均值为0,方差为1。公式如下:
在这里插入图片描述
以上述例子为例:对发现时间的特征进行均值方差归一化。

import numpy as np
X = np.array([
    [1, 200],
    [5, 100],
    [2, 150]
])
X = np.array(X, dtype='float')
X[:,1] = (X[:,1]-np.mean(X[:,1]))/np.std(X[:,1]) #np.std()--求方差

在这里插入图片描述

在sklearn中调用归一化(鸢尾花数据归一化)

  1. 导入模块
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler # 均值方差归一化
from sklearn.model_selection import train_test_split
  1. 获取数据并预处理
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

std_scaler = StandardScaler()
std_scaler.fit(X_train) # 计算均值和方差

X_std_train = std_scaler.transform(X_train) # 对训练集特征进行归一化处理
X_std_test = std_scaler.transform(X_test) # 对测试集特征进行归一化处理

在这里插入图片描述
在这里插入图片描述

  1. 调用sklearn中的KNN算法,计算出准确率
from sklearn.neighbors import KNeighborsClassifier

knn_clf = KNeighborsClassifier()
knn_clf.fit(X_std_train, y_train)

knn_clf.score(X_std_test, y_test)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python算法:三种高级排序的方法

前言 声明:本文所有动图来源为菜鸟教程 🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:红中 🍂不就是蓝桥杯嘛,干他!&#…

Windows系统上的小知识点集合(收藏更新)

1.开机自动运行 如果你写了一段代码或者脚本,甚至某个程序。希望在windows开机之后自动执行,可以按照以下方法操作 对于Windows系统,开机之后当所有的软件初始化完毕之后,会自动运行 C:\Users\(你的用户名&#xff…

Elasticsearch入门—— Elasticsearch7.8.0版本索引操作

目录一、创建索引1.1、创建索引概述1.2、创建索引示例1.3、重复创建索引示例二、查看索引2.1、查看所有索引2.2、查看单个索引三、删除索引3.1、删除索引一、创建索引 1.1、创建索引概述 对比关系型数据库,创建索引就等同于创建数据库 1.2、创建索引示例 在 Pos…

matlab/simulink仿真数据的导出暨to workspace模块的使用

matlab/simulink仿真数据的导出 在用simulink仿真的时候,希望把数据导出,用其他软件进一步分析和处理,该如何做呢? 使用下面这个叫做to workspace的模块就可以实现 1 参数设置 把该模块拖出来。双击打开进行设置,会…

贪心策略(一)(选择排序、分割平衡串、买卖股票、跳跃游戏)

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心选择是指所求问题的整体最优解可以通过一系列…

4、Ubuntu20常用操作_文本编辑文件系统目录和文件操作用户管理和文件权限

Ubuntu系统操作 注销(退出Linux系统) 在每次使用完后,一定要进行注销(或者说退出),以防他人通过你的帐号进入系统。 在Linux提示符下,运行exit命令,即可退出本次登录 或直接按组…

代码随想录刷题训练营第七天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结

四数相加 看完题后的思路 首先想到了暴力解法,四重for循环,时间复杂度为0(n^4).接着往下想,四数相加不正好是(两数相加)(两数相加)吗,可以依次求出两数相加的结果存入hash表中 和-[下标1,下标2],然后再进行两数相加. 思路 上面的思路中,有两点疑问: (12)(34)(13)(24)吗? 1…

渗透测试基础入门【01】——测试流程(IPC$)

渗透测试基础入门【01】——测试流程(IPC$) 注意,攻击对方需要对方授权,本文章目的只为教学,不要拿去干违法的事 1 渗透测试流程 授权(获取目标用户授权,否则是违法行为)信息收集 …

【4 - 降维算法PCA和SVD - 原理部分】菜菜sklearn机器学习

课程地址:《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期:sklearn入门 & 决策树在sklearn中的实现第二期:随机森林在sklearn中的实现第三期:sklearn中的数据预处理和特征工程第四期:sklearn中的降维算法…

nacos注册源码分析

Nacos注册服务 cosumer启动的时候,从nacos server上读取指定服务名称的实例列表,缓存到本地内存中。 开启一个定时任务,每隔10s去nacos server上拉取服务列表 nacos的push机制: 通过心跳检测发现服务提供者出现心态超时的时候…

SpringCloud学习笔记 - 流控规则 - Sentinel

1. Sentinel流控规则简介 这里的流控指的是“流量控制”,进一步解释说明: 资源名:唯一名称,默认请求路径。 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不…

爬虫解析模块(bs4,selenium)

bs4文档 from bs4 import BeautifulSoupBeautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。 解析器 解析器使用方法优势劣势Python标准库BeautifulS…

Dubbo——入门介绍

目录1.概述1.1.什么是 Dubbo ?1.2.Dubbo 架构2.Dubbo 快速入门2.1.Zookeeper 安装2.2.创建项目2.3.代码实现2.3.1.dubbo-service 模块2.3.2.dubbo-web 模块2.4.本地启动2.5.使用 Dubbo 实现 PRC2.5.1.修改 dubbo-service 模块2.5.2.修改 dubbo-web 模块2.5.3.启动 d…

可免费编辑 PDF 内容的 7 大 PDF 编辑工具

有时您可能希望编辑 PDF 文档中的敏感信息,例如财务帐号和 ID 号,以便在不泄露隐私的情况下共享 PDF。编辑 PDF 是从 PDF 中删除私有内容。使用PDF 编辑工具可以轻松完成编辑。市场上有这么多工具,您需要选择最好的一种。 7 大 PDF 编辑工具 …

data analysis and predict

data anlysis and predict 谢邀,本人正在崩溃和兴奋间反复横跳(崩溃居多),anyway, 我心态超好的!besides, 仅供个人学习查阅,不具任何参考价值!!! (小边不想努…

路由信息协议RIP

文章目录路由信息协议RIP一、Routing Information Protocol的定义二、RIP的基本工作过程三、“坏消息传播得慢”的问题四、总结路由信息协议RIP 一、Routing Information Protocol的定义 RIP是分布式的基于距离向量的路由选择协议 协议RIP的特点是: 仅和相邻路由…

Java数据结构(泛型)

1、集合框架 Java 集合框架Java Collection Framework ,又被称为容器container ,是定义在 java.util 包下的一组接口interfaces 和其实现类classes 。 其主要表现为将多个元素element 置于一个单元中,用于对这些元素进行快速、便捷的存储sto…

【XML了解】xml与hxml 标记语言学习

XML与HXML的区别 XML 被设计用来传输和存储数据,结构化、存储以及传输信息(如:数据包) XML 被设计用来传输和存储数据,其焦点是数据的内容 XML 标签没有被预定义, 需要自行定义标签 HTML 被设计用来表现和展示数据&…

数组常用方法总结 (7) :copyWithin / fill / reduce / reduceRight

copyWithin 将指定位置的元素复制到数组的其他位置。返回值为移动后数组。原始数组的内容会被改变,原始数组的长度不会改变。arr.copyWithin(index, startIndex, endIndex)第一个参数为,期望被复制的内容将要插入的位置。第二个参数为,数组中…

SpringBoot 参数接收只看这一篇文章就够了

好久没有写过接口了,最近在写一些基础接口,在写参数接口接收参数的时候居然想不起来,会有那么一丝丝的怀疑,虽然并不会影响编码,但是说明一个问题,没有系统的总结知识,没有温故知新,…