特征缩放(Scale Features)、特征缩放预测​CO2 值、df列索引扩展

news2025/1/13 7:41:35

目录

1、特征缩放

2、预测CO2 值

 3、df列索引扩展


1、特征缩放

特征缩放可以用于不同的度量单位。度量单位不同的情况下,特征的数值大小也会有所不同,这可能会影响到某些机器学习算法的表现。例如,如果一个特征的单位是英寸,而另一个特征的单位是千克,那么这两个特征的数值大小就不能直接进行比较。 在这种情况下,可以使用特征缩放将特特特征的取值范围缩放到相同的范围内,以便更好地利用它们

当然也可以用于不同属性的比较,比如很难将排量 1.0 与车重 790 进行比较,但是如果将它们都缩放为可比较的值,我们可以很容易地看到一个值与另一个值相比有多少

缩放数据有多种方法,在这里我们将使用一种称为标准化(standardization)的方法

标准化方法使用以下公式:z = (x - u) / s

其中 z 是新值,x 是原始值,u 是平均值,s 是标准差

CarModelVolumeWeightCO2
ToyotaAygo1.079099

如果从上述数据集中获取 weight 列,则第一个值为 790,缩放后的值为:

(790 - 1292.23) / 238.74 = -2.1

如果从上面的数据集中获取 volume 列,则第一个值为 1.0,缩放后的值为:

(1.0 - 1.61) / 0.38 = -1.59

现在,我们可以将 -2.1 与 -1.59 相比较,而不是比较 790 与 1.0

缩放 Weight 和 Volume 列中的所有值

# 创建StandardScaler() 对象

scale = StandardScaler()

df = pandas.read_csv("C:\\Users\\ml\\Desktop\\cars.csv")

X = df[['Weight', 'Volume']]

# `fit_transform(X)` 是 Scikit-learn 中估计器(estimator)类对象的一个方法,用于一次性完成对数据集进行拟合和转换的过程

scaledX = scale.fit_transform(X)

print(scaledX)

G:\python_files\DeepLearning\Scripts\python.exe F:/测试/one.py
[[-2.10389253 -1.59336644]
 [-0.55407235 -1.07190106]
 [-1.52166278 -1.59336644]
 [-1.78973979 -1.85409913]
 [-0.63784641 -0.28970299]
 [-1.52166278 -1.59336644]
 [-0.76769621 -0.55043568]
 [ 0.3046118  -0.28970299]
 [-0.7551301  -0.28970299]
 [-0.59595938 -0.0289703 ]
 [-1.30803892 -1.33263375]
 [-1.26615189 -0.81116837]
 [-0.7551301  -1.59336644]
 [-0.16871166 -0.0289703 ]
 [ 0.14125238 -0.0289703 ]
 [ 0.15800719 -0.0289703 ]
 [ 0.3046118  -0.0289703 ]
 [-0.05142797  1.53542584]
 [-0.72580918 -0.0289703 ]
 [ 0.14962979  1.01396046]
 [ 1.2219378  -0.0289703 ]
 [ 0.5685001   1.01396046]
 [ 0.3046118   1.27469315]
 [ 0.51404696 -0.0289703 ]
 [ 0.51404696  1.01396046]
 [ 0.72348212 -0.28970299]
 [ 0.8281997   1.01396046]
 [ 1.81254495  1.01396046]
 [ 0.96642691 -0.0289703 ]
 [ 1.72877089  1.01396046]
 [ 1.30990057  1.27469315]
 [ 1.90050772  1.01396046]
 [-0.23991961 -0.0289703 ]
 [ 0.40932938 -0.0289703 ]
 [ 0.47215993 -0.0289703 ]
 [ 0.4302729   2.31762392]]

Process finished with exit code 0

上面是对两列数据进行转化之后的值,其中前两个值是 -2.1 和 -1.59,与我们的计算相对应

2、预测CO2 值

在多元回归一章的任务是在仅知道汽车的重量和排量的情况下预测其排放的二氧化碳。

缩放数据集后,在预测值时必须使用缩放比例

预测一辆重 2300 公斤的 1.3 升汽车的二氧化碳排放量

未缩放之前的代码(多元回归预测中使用到)

import pandas
from sklearn import linear_model
 
df = pandas.read_csv("C:\\Users\\ml\\Desktop\\cars.csv")
 
X = df[['Weight', 'Volume']]
y = df['CO2']
 
regr = linear_model.LinearRegression()
regr.fit(X, y)
 
# 预测重量为 2300kg、排量为 1300ccm 的汽车的二氧化碳排放量:
 
predictedCO2 = regr.predict([[2300, 1300]])
 
print(predictedCO2)

 缩放之后的代码

import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()

df = pandas.read_csv("C:\\Users\\ml\\Desktop\\cars.csv")

X = df[['Weight', 'Volume']]     # 进行列索引,使用数组传递多列
y = df['CO2']

# 这行代码结合了 `fit()` 和 `transform()` 两个步骤,首先使用 `fit()` 方法对数据 `X` 进行拟合,计算出平均值和标准差等统计信息,
# 然后使用 `transform()` 方法将数据进行标准化处理,得到标准化后的数据 `scaledX`

scaledX = scale.fit_transform(X)

# 实例化 `LinearRegression` 对象 `regr`
regr = linear_model.LinearRegression()
regr.fit(scaledX, y)

# 这行代码使用 `transform()` 方法将新数据 `[[2300, 1.3]]` 进行标准化处理,得到标准化后的数据 `scaled`。
# 注意,这里的输入数据必须是一个二维数组,即使只有一个样本也要将其整理成二维数组的形式
#`scaled = scale.transform([[2300, 1.3]])` 是将数据集 `[[2300, 1.3]]` 进行标准化处理的操作。
# 其返回值是一个 NumPy 数组,包含了标准化后的数据
scaled = scale.transform([[2300, 1.3]])

print([scaled[0]])  # [array([ 4.22104928, -4.19730382])]

print(scaled[0])    # [ 4.22104928 -4.19730382]

# `predictedCO2 = regr.predict([scaled[0]])` 中参数为 `[scaled[0]]` 是因为 `predict()` 方法的参数需要是一个二维数组,
# 其中每行表示一个样本,每列表示一个特征。而在这个例子中,只有一个样本,因此需要创建一个只有一行的二维数组。由于 `scaled` 是一个只有一行的二维数组,
# 因此需要将其整体放入一个包含一个元素的列表中,即 `[scaled[0]]`
predictedCO2 = regr.predict([scaled[0]])
print(predictedCO2)

但是经过实际测试,缩放前后不是一个值哇?

 3、df列索引扩展

如果没有列,则不能使用列索引对 DataFrame 进行操作

此时可以先将数据存储为一维数组或二维数组,然后再将其转换为 DataFrame。

例如,如果数据是一维数组,可以使用 `numpy` 库中的 `array` 函数将其转换为二维数组,然后再使用 `pd.DataFrame()` 函数将其转换为 DataFrame

import numpy as np
import pandas as pd

# 将一维数组转换为二维数组

# reshape(-1, 1) 中 -1 是系统自动计算转化的数组有多少行,1转化为1列

data = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)

# 将二维数组转换为 DataFrame
df = pd.DataFrame(data, columns=['Value'])

在这个例子中,我们首先将一维数组 `[1, 2, 3, 4, 5]` 使用 `reshape(-1, 1)` 转换为一个只有一列的二维数组,然后使用 `pd.DataFrame()` 函数将其转换为一个 DataFrame `df`,其中列名为 `Value`

如果数据是二维数组,则可以直接使用 `pd.DataFrame()` 函数将其转换为 DataFrame,例如

import pandas as pd

# 定义二维数组
data = [[1, 2], [3, 4], [5, 6]]

# 将二维数组转换为 DataFrame
df = pd.DataFrame(data, columns=['Value1', 'Value2'])

在这个例子中,我们定义了一个二维数组 `data`,其中包含两列数据。我们使用 `pd.DataFrame()` 函数将其转换为一个 DataFrame `df`,其中列名分别为 `Value1` 和 `Value2`

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

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

相关文章

DAB-DETR代码学习笔记

先上一张整体架构图 : 代码地址:GitHub - IDEA-Research/DAB-DETR: [ICLR 2022] DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR 论文地址: https://arxiv.org/pdf/2201.12329.pdf 文章全名《DYNAMIC ANCHOR BOXES ARE BETTER …

建模杂谈系列223 Q-Learning示例的代码拆解分析

说明 找到了一个合适的例子,然后我对其中的内容进行了拆解分析。我觉得代码表达的内容比伪代码清晰多了。 这次算是补砖了(监督无监督强化),过去实际上接触过很多强化体系内的基本工具,但一直没有开始做,部分原因是没时间&#…

Java 与排序算法(5):归并排序

一、归并排序 归并排序(Merge Sort)是一种基于分治思想的排序算法。它将待排序的数组分成两个长度相等的子数组,然后对这两个子数组分别进行归并排序,最后将两个排好序的子数组合并成一个有序的数组。 具体实现过程如下&#xf…

【国内chatgpt使用方法合集】(5月22日已更新)

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

Elasticsearch文档操作:初学者指南(2023年最新版包含DSL语句的使用和RestHighLevelClient在Java中的使用)

2023年还没有学习Elasticsearch?,那么您将错过最强大、最通用的编程语言之一。 本文将介绍在Elasticsearch对文档分别使用DSL语句和Java High Level REST ClientAPI来对文档进行操作。获取更多信息查看官网帮助文档 运行环境: Linux,docke…

驱动开发DAY6

非阻塞IO 在应用程序中读取硬件数据时,无论硬件数据是否准备完毕,read()函数不会阻塞,继续向下执行 阻塞IO 当应用程序中读取硬件数据时,在硬件数据没有准备好时,进程会阻塞在read(&…

C语言——如何写出好的代码?

哈喽,大家好,今天我们来学习如何才能写出优秀的代码,主要讲的是assert和const的用法。 首先,什么样的代码才算的上是优秀的代码呢?应该符合下面的要求: 1. 代码运行正常 2. bug很少 3. 效率高 4. 可读性高 …

自抗扰PID(梯形图源代码)

有关ADRC的详细算法和源代码,请参看专栏的系列文章,这里不再赘述,常用链接如下: ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-CSDN博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-CSDN博客_adrc算法1、自抗扰控制算法,网上很多文章有所…

x210---根文件系统制作

一、busybox的移植 1.1、busybox源码下载 (1)busybox是一个开源项目,所以源代码可以直接从网上下载。 (2)busybox的版本差异不大,版本新旧无所谓。 (3)下载busybox可以去linuxidc等镜像网站,也可以去www.busybox.net官方网站下载。 1.2、修…

技术人如何写简历?(文末有福利)

前言 笔者在滴滴、阿里和字节时候也面试了不少人,看过形形色色的简历没有上百也有大几十份了。校招季也快到了,这里总结自身经验聊一下 技术人的简历如何去写面试官是怎么样从一份简历去开展后续的面试 简历的作用 简历是你向一家公司求职的“敲门砖…

数据结构学习之路-集合

集合Set 集合的特点集合的内部实现(使用链表)集合的内部实现(使用红黑树)复杂度分析使用红黑树实现集合的限制 集合的特点 不存放重复的元素常用于去重 例如:存放新增的IP地址,统计新增IP量;存…

torch中的model.eval()、model.train()详解

👨‍💻个人简介: 深度学习图像领域工作者 🎉工作总结链接:https://blog.csdn.net/qq_28949847/article/details/128552785 链接中主要是个人工作的总结,每个链接都是一些常用demo&#xff0c…

Laravel框架05:模型和自动验证

Laravel框架05:模型和自动验证 一、模型(AR模式)概述二、定义模型三、调用模型四、基本操作1. 添加数据① AR模式② Request 2. 查询数据3. 修改操作① AR模式② update 4. 删除操作 五、控制器验证1. 基本语法2. 输出错误信息 一、模型&…

今麦郎跻身“我最喜欢中国品牌”榜,致力领航中国品牌发展新范式

在中国经济探寻高质量发展的当下,中国民营企业肩负着推动经济发展的重任。在当前中国经济向上向前的大背景下,展示中国特色、传播中国文化、践行社会责任多位一体的高质量品牌越来越受到重视。但冰冻三尺非一日之功,唯有经历时间考验&#xf…

Spring:Spring 整合 MyBatis 的具体过程

文章目录 Spring:Day 04整合 MyBatis一、配置环境1. 导入依赖2. 准备一个数据库 二、用 Spring 整合 MyBatis1. 编写通用配置文件2. 编写实现类3. 编写 Spring 配置文件4. 测试5. 分析总结 三、拓展1. 实现2. 总结 四、事务1. 概述2. 没有事务时3. 声明式事务4. 总结…

“Shell“SNAT,DNAT

文章目录 一.SNAT1.1 SNAT原理1.2 SNAT的应用环境1.3 SNAT工作原理1.4 进行SNAT转换后1.5 配置SNAT策略1.6SNAT实验 二.DNAT2.1 DNAT工作原理2.2 配置DNAT策略2.3 DNAT实验 一.SNAT 1.1 SNAT原理 SNAT原理:修改数据包的源地址。SNAT 应用环境:局域网主…

基础学习——关于卷积层的记录

文章目录 前言一、功能层1、池化层2、nn.BatchNorm2d()3、全连接层4、softmax层 二、卷积层1、普通卷积2、空洞卷积3、多尺度卷积4、分组卷积5、深度可分离卷积6、形变卷积 前言 老是忘有些模块的具体作用,记录一下。 一、功能层 1、池化层 池化层夹在连续的卷积…

总结最全面的TCP、UDP、Socket、HTTP网络编程面试题

先看一天面试的经验: 第一场: 面试官:你说一下TCP的三次握手 我:第一次Client将SYN置1......、第二次Server收........、 第三次........ 面试官:很难背吧? 我:......是啊,很难&…

harbor安装

文章目录 先决条件硬件软件网络端口 安装docker签发证书生成证书颁发机构证书 生成服务器证书向 Harbor 和 Docker 提供证书 下载harbor安装包containerd 配置私有仓库(二选一)分发证书(如上文只是路径变了)配置登录加密登录打标签并推送与拉取 docker 配…

【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 用…