python归一化数据_Python 机器学习 数据归一化

数据归一化是使不同尺度的数据变得可比较的重要方法。通过使用StandardScaler(),可以方便地在Python中对数据进行归一化处理。以汽车数据集为例,展示了如何使用sklearn库对汽车的重量和体积进行归一化,使得数值在统一的尺度上,便于后续的分析和建模。此外,归一化后的数据在预测CO2排放量时也起到了关键作用。
摘要由CSDN通过智能技术生成

1、数据归一化

当您的数据具有不同的值,甚至具有不同的度量单位时,可能很难比较它们。与米相比,公斤是多少?还是海拔比时间?

这个问题的答案是扩展。我们可以将数据缩放为易于比较的新值。

看看下表,它与我们在多元回归一章中使用的数据集相同,但是这次,volume列包含的单位是升,而不是立方米(1.0而不是1000)。

CarModelVolumeWeightCO2ToyotaAygo1.079099

MitsubishiSpace Star1.2116095

SkodaCitigo1.092995

Fiat5000.986590

MiniCooper1.51140105

VWUp!1.0929105

SkodaFabia1.4110990

MercedesA-Class1.5136592

FordFiesta1.5111298

AudiA11.6115099

HyundaiI201.198099

SuzukiSwift1.3990101

FordFiesta1.0111299

HondaCivic1.6125294

HundaiI301.6132697

OpelAstra1.6133097

BMW11.6136599

Mazda32.21280104

SkodaRapid1.61119104

FordFocus2.01328105

FordMondeo1.6158494

OpelInsignia2.0142899

MercedesC-Class2.1136599

SkodaOctavia1.6141599

VolvoS602.0141599

MercedesCLA1.51465102

AudiA42.01490104

AudiA62.01725114

VolvoV701.61523109

BMW52.01705114

MercedesE-Class2.11605115

VolvoXC702.01746117

FordB-Max1.61235104

BMW21.61390108

OpelZafira1.61405109

MercedesSLK2.51395120

很难将体积1.0与权重790进行比较,但是如果将它们都缩放为可比较的值,我们可以很容易地看到一个值与另一个值相比较的多少。

缩放数据有多种方法,在本教程中,我们将使用一种称为数据归一的方法。

标准化方法使用以下公式:

z = (x - u) / s

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

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

(790 - 1292.23) / 238.74 = -2.1

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

(1.0 - 1.61) / 0.38 = -1.59

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

不必手动执行此操作,

Python sklearn模块有一个称为StandardScaler()的方法,该方法返回带有转换数据集方法的Scaler对象。

例如:

缩放“重量”和“体积”列中的所有值:请注意,前两个值为-2.1和-1.59,与我们的计算相对应:运行示例»import pandas

from sklearn import linear_model

from sklearn.preprocessing import StandardScaler

scale = StandardScaler()

df = pandas.read_csv("cars2.csv")

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

scaledX = scale.fit_transform(X)

print(scaledX)

Result:

[[-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]]

2、预测CO2值

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

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

例如:

预测1.3升重2300公斤的汽车的二氧化碳排放量:运行示例»import pandas

from sklearn import linear_model

from sklearn.preprocessing import StandardScaler

scale = StandardScaler()

df = pandas.read_csv("cars2.csv")

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

y = df['CO2']

scaledX = scale.fit_transform(X)

regr = linear_model.LinearRegression()

regr.fit(scaledX, y)

scaled = scale.transform([[2300, 1.3]])

predictedCO2 = regr.predict([scaled[0]])

print(predictedCO2)

Result:[107.2087328]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python归一化数据是将数据缩放到特定的范围内,通常是[0, 1]或[-1, 1]。这可以帮助我们处理不同尺度的特征,使得它们具有相似的数值范围,从而更好地进行数据分析和机器学习。 在Python,有多种方法可以实现数据归一化,下面介绍两种常用的方法: 1. 最小-最大归一化(Min-Max Scaling): 最小-最大归一化是将数据线性地缩放到指定的范围内。具体步骤如下: - 找到数据的最小值(min)和最大值(max)。 - 对于每个数据点x,使用公式进行归一化:(x - min) / (max - min)。 - 归一化后的数据范围为[0, 1]。 在Python,可以使用scikit-learn库的MinMaxScaler类来实现最小-最大归一化。以下是一个示例代码: ```python from sklearn.preprocessing import MinMaxScaler # 创建MinMaxScaler对象 scaler = MinMaxScaler() # 假设有一个数据集X,包含多个特征 X = [[x1, x2, ...], [x3, x4, ...], ...] # 对数据集进行归一化 normalized_X = scaler.fit_transform(X) ``` 2. 标准化(Standardization): 标准化是将数据转换为均值为0,标准差为1的分布。具体步骤如下: - 计算数据的均值(mean)和标准差(std)。 - 对于每个数据点x,使用公式进行标准化:(x - mean) / std。 - 标准化后的数据具有均值为0,标准差为1的分布。 在Python,可以使用scikit-learn库StandardScaler类来实现标准化。以下是一个示例代码: ```python from sklearn.preprocessing import StandardScaler # 创建StandardScaler对象 scaler = StandardScaler() # 假设有一个数据集X,包含多个特征 X = [[x1, x2, ...], [x3, x4, ...], ...] # 对数据集进行标准化 standardized_X = scaler.fit_transform(X) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值