当前位置: 首页 > news >正文

Scikit-learn Python机器学习 - 特征预处理 - 归一化 (Normalization):MinMaxScaler

锋哥原创的Scikit-learn Python机器学习视频教程:

2026版 Scikit-learn Python机器学习 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

课程介绍

本课程主要讲解基于Scikit-learn的Python机器学习知识,包括机器学习概述,特征工程(数据集,特征抽取,特征预处理,特征降维等),分类算法(K-临近算法,朴素贝叶斯算法,决策树等),回归与聚类算法(线性回归,欠拟合,逻辑回归与二分类,K-means算法)等。

Scikit-learn Python机器学习 - 特征预处理 - 归一化 (Normalization):MinMaxScaler

不同特征可能有不同的量纲和范围(如身高、体重、年龄),归一化使各特征在相同尺度上进行比较,避免某些特征因数值较大而主导模型。

我们将特征缩放至一个特定的范围(默认是 [0, 1])。

归一化(Normalization)公式,也称为最小-最大归一化(Min-Max Normalization)

公式含义 这个公式将原始数据 X 从其原始范围转换到 [ 0,1] 的范围内。

公式各部分解释

工作原理

特点

应用场景 归一化在机器学习和数据挖掘中非常常用,特别是:

  • 特征缩放,使不同量纲的特征可比较

  • 梯度下降算法中加速收敛

  • 神经网络中防止梯度消失或爆炸

  • 图像处理中的像素值标准化

在Scikit-learn中,使用MinMaxScaler进行归一化操作。在初始化 MinMaxScaler 对象时,最重要的参数是:

  • feature_range: tuple (min, max), 默认=(0, 1)

    • 作用:指定你想要将数据缩放到的目标范围。

    • 示例:如果想缩放到 [-1, 1],则设置 feature_range=(-1, 1)

我们看一个示例:

import numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import MinMaxScaler
​
# 创建示例数据,包含不同类型的问题
data = {'age': [25, 30, np.nan, 45, 60, 30, 15],  # 数值,含缺失值'salary': [50000, 54000, 60000, np.nan, 100000, 40000, 20000],  # 数值,尺度大,含缺失值'country': ['USA', 'UK', 'China', 'USA', 'India', 'China', 'UK'],  # 分类型'gender': ['M', 'F', 'F', 'M', 'M', 'F', 'F']  # 分类型
}
​
df = pd.DataFrame(data)
print("原始数据:")
print(df)
​
# 策略通常为 mean(均值), median(中位数), most_frequent(众数), constant(固定值)
imputer = SimpleImputer(strategy='mean')
​
# 我们只对数值列进行填充
numeric_features = ['age', 'salary']
df_numeric = df[numeric_features]
​
# fit 计算用于填充的值(这里是均值),transform 应用填充
imputer.fit(df_numeric)
df[numeric_features] = imputer.transform(df_numeric)
​
print("\n处理缺失值后:")
print(df)
​
minmax_scaler = MinMaxScaler()
​
df_numeric = df[['age', 'salary']]
# 根据数据训练生成模型
minmax_scaler.fit(df_numeric)
# 根据模型训练数据
df_normalized = minmax_scaler.transform(df_numeric)
​
print("\n归一化后的数值特征(范围[0,1]):")
print(df_normalized)

运行结果:

归一化后的数值特征(范围[0,1]):
[[0.22222222 0.375     ][0.33333333 0.425     ][0.42592593 0.5       ][0.66666667 0.425     ][1.         1.        ][0.33333333 0.25      ][0.         0.        ]]

文章转载自:

http://Z6fyY0ub.ndtkt.cn
http://VOM9hLt5.ndtkt.cn
http://wWqmYeXp.ndtkt.cn
http://A2L2IbLO.ndtkt.cn
http://YQOI03l0.ndtkt.cn
http://TUxkBt7V.ndtkt.cn
http://VZKVUG6G.ndtkt.cn
http://R0gYJXno.ndtkt.cn
http://ky2q871M.ndtkt.cn
http://UVhlAhc7.ndtkt.cn
http://6qALEaET.ndtkt.cn
http://itEJQxUC.ndtkt.cn
http://EzuCUJI3.ndtkt.cn
http://kD1addNI.ndtkt.cn
http://RIYOL2nZ.ndtkt.cn
http://BD21jmYk.ndtkt.cn
http://yEYZmoor.ndtkt.cn
http://ddJdth8p.ndtkt.cn
http://yNOGQFtW.ndtkt.cn
http://o830z24R.ndtkt.cn
http://WNeX50bX.ndtkt.cn
http://xL5NWOw5.ndtkt.cn
http://pQujlmfx.ndtkt.cn
http://1AB1JRxI.ndtkt.cn
http://dv4zHSDK.ndtkt.cn
http://vxpa3cKX.ndtkt.cn
http://jSjCbVGi.ndtkt.cn
http://cGMCPg5A.ndtkt.cn
http://KFRyLEgZ.ndtkt.cn
http://kckdU4WD.ndtkt.cn
http://www.dtcms.com/a/367430.html

相关文章:

  • [光学原理与应用-386]:ZEMAX -1064nm SESAM光纤种子源设计,需要学习哪些光学理论和工程知识?
  • @Autowired原理(四)
  • Mongo的增删改查
  • 裸签、Attach、Detach及其验签方式
  • 「数据获取」中国科技统计年鉴(1991-2024)Excel
  • 无人机防风技术难点解析
  • 【Unity知识分享】Unity接入dll调用Window系统接口
  • 异地多活架构:从“机房炸了”到“用户无感”的逆袭之路
  • 【系统架构设计(16)】软件架构设计二:软件架构风格:构建系统的设计模式与选择指南
  • 树形组件,支持搜索展示,自定义展示,支持vue2,vue3,小程序等等
  • 去中心化投票系统开发教程
  • Eclipse 常用搜索功能汇总
  • go面试题-什么是用户态和内核态
  • C++语言编程规范-常量
  • windows线程注入
  • LeetCode 48 - 旋转图像算法详解(全网最优雅的Java算法
  • ResNet(残差网络)-彻底改变深度神经网络的训练方式
  • Docker多阶段构建Maven项目
  • 山姆·奥特曼 (Sam Altman) 分享提高工作效率的方法
  • 【赛题已出】2025高教社杯全国大学生数学建模竞赛ABCDE赛题已发布!
  • Git的强软硬回退(三)
  • 网络计算工具ipcalc详解
  • rabbitmq 入门知识点
  • C++ 中基类和派生类对象的赋值与转换
  • STM32F103_Bootloader程序开发15 - 从Keil到vscode + EIDE + GCC的迁移实践
  • 神马 M21 31T 矿机解析:性能、规格与市场应用
  • 解析 Quartz 报错:Table ‘test.QRTZ_LOCKS‘ doesn‘t exist 的解决方案
  • 【高等数学】第十一章 曲线积分与曲面积分——第二节 对坐标的曲线积分
  • 产品推荐|千眼狼宽光谱高速摄像机NEO系列
  • ECIES实现原理