数据归一化处理

本文探讨了数据归一化的重要性,介绍了最值归一化和均值方差(标准差)归一化的原理,通过 Iris 数据集实例演示了如何使用sklearn进行数据预处理。重点在于如何使用StandardScaler进行标准差归一化,并展示了在KNN分类器中的应用。
摘要由CSDN通过智能技术生成

数据归一化
1、最值归一化
样本值 - 最小值 / (最大值 - 最小值)
将所有数据映射到 0 - 1 之间 如果存在极值比如收入大部分人收入在1W 有些人收入在1000W

2、均值方差(标准差)归一化
样本值 - 均值 / 方差
把所有数据归一到均值为0方差为1的分布中

s²=((x1-x)²+(x2-x)²+···+(xn-x)²)/n
np.var(x)
作用:衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。

标准层差:s = sqrt(s²)
np.std(x)

注意:数据归一化的目的是为了降低数据的离散程度,以便更好的拟合数据。
训练数据集的归一化:x_train = (x_train - x_train.mean()) / x_train.std()
测试数据集的归一化:x_test = (x_test - x_train.mean()) / x_train.std()
所以是需要保存训练数据集得到的均值和方差

# !/usr/bin/env python3
import matplotlib
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
'''最大值归一化'''
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import numpy as np
'''
数据归一化
1、最值归一化
样本值 - 最小值 / (最大值 - 最小值)
将所有数据映射到 0 - 1 之间   如果存在极值比如收入大部分人收入在1W 有些人收入在1000W

2、均值方差(标准差)归一化
样本值 - 均值 / 方差
把所有数据归一到均值为0方差为1的分布中

s²=((x1-x)²+(x2-x)²+···+(xn-x)²)/n
np.var(x)
作用:衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。

标准层差:s = sqrt(s²)
np.std(x)

注意:数据归一化的目的是为了降低数据的离散程度,以便更好的拟合数据。
训练数据集的归一化:x_train = (x_train - x_train.mean()) / x_train.std()
测试数据集的归一化:x_test = (x_test - x_train.mean()) / x_train.std()
所以是需要保存训练数据集得到的均值和方差
'''

iris = datasets.load_iris()
x = iris.data
y = iris.target
h = y.reshape(-1,1)
'''将特征值'''
data = np.concatenate((x,h),axis=1)
'''随机打乱数据'''
np.random.shuffle(data)
'''获取训练集和测试集'''
train_data = data[:int(len(data)*0.8)]
test_data = data[int(len(data)*0.8):]
'''训练集'''
X_train = train_data[:,0:4]
Y_train = train_data[:,4]
'''测试集'''
X_test = test_data[:,0:4]
Y_test = test_data[:,4]

standardScaler = StandardScaler()
standardScaler.fit(X_train)
'''均值'''
print(standardScaler.mean_)
'''数据分布范围(包含标准差等)'''
print(standardScaler.scale_)
X_train_standard = standardScaler.transform(X_train)
'''测试数据集也必须归一化处理'''
X_test_standard = standardScaler.transform(X_test)
print(X_test_standard)
KNeighborsClassifier_model = KNeighborsClassifier(n_neighbors=3)
KNeighborsClassifier_model.fit(X_train_standard,Y_train)
Y_predict = KNeighborsClassifier_model.predict(X_test_standard)
print(accuracy_score(Y_test,Y_predict))
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunnyboy_4

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值