分清规范化标准化、归一化、离散化、正则化、

       在机器学习中,特征与模型都很重要,因此在数据集中寻找本质特征有利于后面的工作,借鉴了以前上课的课件,今天总结一下机器学习的几种数据预处理方法。

1. 规范化(包括标准化和归一化)

        将特征值按比例缩放映射至指定的区间,例如[-1,0]、[0,1],从而克服不同特征之间的取值差异。

1.1 标准化(Standardization)

Z-score标准化

        μ为所有样本特征的平均值,σ为所有样本特征的标准差,处理后的样本特征符合标准正态分布(即均值为0、标准差为1),即:

#标准化
from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -4., 6.], [ 0., -4., 2.], [ 1., -1., 0.]])
scaler = preprocessing.StandardScaler().fit(X_train)
X_scaled = scaler.transform(X_train)
#处理后数据的均值和方差
print(X_scaled.mean(axis=0))
print(X_scaled.std(axis=0))
#直接使用模型对测试集数据进行转换
X_test=scaler.transform([[-1.,  6., 2.]])                
print(X_test)

 

1.2 归一化(Normalization)

min-max normalization:

通过对原始样本特征的进行以下线性变换,使结果值映射到[0,1]之间

        其中,xx*分别为原始特征与标准化后的特征,x_maxx_min分别为原理特征的最大值与最小值。

        缺点:当有新数据加入时,x_max和x_min可能会发生变化,需要重新定义。

#归一化(缩放特征值)
from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 2.,  -4.,  3.],
                    [ 4.,  -1.,  5.],
                    [ 1.,  0.,  -2.]])
min_max_scaler=preprocessing.MinMaxScaler(feature_range=(-1, 1))#设区间为[-1,1],默认为[0,1]
x_train_feature = min_max_scaler.fit_transform(X_train)
print('x_train_feature:\n',x_train_feature)
print('----------------------------------------')
X_test = np.array([[ -1.,  0.,  1.]])
X_test_feature = min_max_scaler.transform(X_test)
print('X_test_feature:\n',X_test_feature)

2.离散化(Discretization

        为解决特定的分类问题或为简化分类模型的复杂度,有时需要采用特定标记将特征原始取值进行离散化处理;如在成绩预测中,将小于60分成绩标记为C,将6080之间的成绩标记为B,将80100之间的成绩标记为A

scores=[20,70,60,100,80,66,88,92]
grade=[]
for i in scores:
    if i<60 and i>=0:
        grade.append('C')
    if i>=60 and i<80:
        grade.append('B')
    if i>=80 and i<=100:
       grade.append('A')
print(scores)  
print(grade)

 3.正则化(Regularization)

参考:规范化、标准化、归一化、正则化_代码_c的博客-CSDN博客_归一化和规范化

        在求解最优化问题中,调节拟合程度的参数一般称为正则项,越大表明欠拟合,越小表明过拟合

        为了解决过拟合问题,通常有两种方法,第一是减小样本的特征(即维度),第二是正则化(又称为惩罚penalty)

        正则化的一般形式是在整个平均损失函数的最后增加一个正则项(L2范数正则化,也有其他形式的正则化,作用不同)

        正则项越大表明惩罚力度越大,等于0表示不做惩罚。

        正则项越小,惩罚力度越小,极端为正则项为0,则会造成过拟合问题;正则化越大,惩罚力度越大,则容易出现欠拟合问题。




 了解更多特征工程的知识,可以看看大佬的文章:什么是特征工程?如何进行特征工程?_图灵的猫i的博客-CSDN博客_特征工程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340