爱美容
当前位置: 首页 美容百科

换算单位1克等于多少毫升(千克毫升)

时间:2023-07-01 作者: 小编 阅读量: 1 栏目名: 美容百科

这是数据预处理阶段的关键部分,但很多初学者忽视了这一点,这会损害他们的机器学习模型。一些机器学习算法对特征缩放敏感,而另一些则几乎不变。特征范围的差异将导致每个特征的步长不同。这意味着特征的均值变为零,结果分布具有单位标准差。然而,最终使用归一化还是标准化将取决于问题和正在使用的机器学习算法。

全文共3819字,预计学习时长18分钟

图源:unsplash

你一定曾遇到过这样一个数据集,它具有多个特征,涵盖了不同程度的数量级、范围和单位。这会是一个巨大的阻碍,很少的机器学习算法对这些特征高度敏感。

其实类似的问题并不少见。例如,一个特征的单位是千克,另一个的单位是克,还有一个的单位是升。当它们所呈现的内容差异如此之大时,该如何使用这些特征呢?

该是特征缩放上场的时候了。这是数据预处理阶段的关键部分,但很多初学者忽视了这一点,这会损害他们的机器学习模型。

特性缩放可以显著提高某些机器学习算法的性能,而对其他算法则完全不起作用。这种怪事背后的原因可能是什么?

另外,归一化和标准化的区别是什么?这是机器学习中最常用的两种特征缩放技术,但它们不易理解。什么时候应该使用哪种技术?

本文将解答你关于特征缩放的疑问,将在Python中实现特性缩放,让你对它如何适用于不同的机器学习算法有一个实践上的理解。

为什么要使用特征缩放?

需要解决的第一个问题是,为什么需要缩放数据集中的变量。一些机器学习算法对特征缩放敏感,而另一些则几乎不变。

基于距离的算法

距离算法(例如KNN、K-means和SVM)受特征范围的影响最大。这是因为在后台,算法使用数据点之间的距离来确定它们的相似性。

例如,假如有一些数据,其中包含高中学生的CGPA分数(从0到5)和他们的未来收入(以千卢比为单位):

由于这两个特征具有不同的缩放程度,所以有可能给更高量级的特征更高的权重。这将影响机器学习算法的性能,显然,我们不希望算法偏向于一个特征。

因此,我们在使用基于距离的算法之前对数据进行缩放,这样所有的特征对结果的影响都是相等的。

当比较学生A和B的数据点之间的欧氏距离、B和C的数据点之间的欧氏距离,缩放前后的效果是明显的,如下所示:

· 缩放前AB距离 =>

· 缩放前BC距离 =>

· 缩放后AB距离 =>

· 缩放后BC距离 =>

缩放将所有特征都带入计算,并且现在的距离比缩放之前更具有可比性。

基于梯度下降的算法

使用梯度下降作为优化技术的机器学习算法(例如线性回归、逻辑回归、神经网络等)要求对数据进行缩放。请看下面的梯度下降公式:

公式中特征值X的存在将影响梯度下降的步长。特征范围的差异将导致每个特征的步长不同。为确保梯度下降平稳地向最小值移动,并确保所有特征的梯度下降步骤均以相同的速率更新,我们在将数据输入模型之前先对数据进行缩放。

具有相似缩放程度的特征可以帮助梯度下降更快地收敛到最小值。

基于树的算法

另一方面,基于树的算法对特征缩放非常不敏感。考虑一下,决策树仅基于单个特征拆分节点。决策树在特征上分割节点,从而增加了节点的同质性。特征上的拆分不受其他特征影响。

图源:unsplash

因此,其余特征对拆分几乎没有影响。这就是特征缩放不改变算法性能的原因!

什么是归一化?

归一化是一种缩放技术,对值进行移位和重新缩放,以使它们最终在0到1之间变化。这也称为“最小-最大”缩放。

这是归一化的公式:

其中,Xmax和Xmin分别为特征的最大值和最小值。

· 当X的值是列中的最小值时,分子为0,因此X '为0

· 相反,当X的值是列中的最大值时,分子等于分母,因此X '的值是1

· 如果X的值在最小值和最大值之间,那么X '的值在0和1之间

什么是标准化?

标准化是另一种缩放技术,其中值以具有单位标准偏差的平均值为中心。这意味着特征的均值变为零,结果分布具有单位标准差。

这是标准化的公式:

μ为特征值的均值,σ为特征值的标准差。注意,在这种情况下,值并不局限于特定的范围。

图源:unsplash

现在,你脑海中最大的问题一定是什么时候应该使用归一化,什么时候应该使用标准化?下面就来看看!

最大的问题——归一化还是标准化?

归一化与标准化是机器学习初学者的一个永恒的问题。

· 如果数据分布不遵循高斯分布,归一化是很有用的。这在不假设数据分布的算法(如k近邻和神经网络)中很有用。

· 相反,如果数据服从高斯分布,标准化是有用的。然而,这并不一定对。另外,与归一化不同,标准化没有边界范围。因此,即使数据中有异常值,也不会受到标准化的影响。

然而,最终使用归一化还是标准化将取决于问题和正在使用的机器学习算法。没有硬性的规则来确定何时将数据归一化或标准化。可以从将模型拟合为原始的、归一化的和标准化的数据开始,并比较性能以获得最佳结果。

好的做法是将缩放器与训练数据进行拟合,然后利用缩放器对测试数据进行转换。这将避免模型测试过程中的任何数据泄漏。此外,通常不需要调整目标值。

在Python中实现特征缩放

现在是有趣的部分,将学到的东西付诸实践。采用DataHack平台的BigMart数据集,可将特征缩放应用于一些机器学习算法。

图源:unsplash

跳过预处理步骤,因为它们超出了本教程的范围。但是可以在这篇文章中找到预处理的详细解释。这些步骤将使你能够在黑客马拉松排行榜上排名前20位,因此值得一试!

因此,首先将数据分为训练和测试集:

# spliting training and testing datafrom sklearn.model_selection import train_test_splitX= dfy= targetX_train, X_test, y_train, y_test =train_test_split(X,y,test_size=0.2,random_state=27)

在转到特征缩放部分之前,使用pd.describe()方法浏览有关数据的详细信息:

可以看到,特征的值范围存在巨大差异:Item_Visibility,Item_Weight,Item_MRP和Outlet_ Establishmentment_Year。尝试使用特征缩放来解决该问题!

注意:特征Item_Visibility中有负值,这是因为已采用对数转换来处理特征中的偏斜度。

使用sklearn进行归一化

为了归一化数据,需要从sklearn库导入MinMaxScalar并将其应用于数据集。所以,下面就开始吧!

# data normalization with sklearnfrom sklearn.preprocessing importMinMaxScaler# fitscaler on training datanorm=MinMaxScaler().fit(X_train)#transform training dataX_train_norm= norm.transform(X_train)#transform testing dataabsX_test_norm= norm.transform(X_test)

请看归一化如何影响数据集:

现在,所有特征的最小值均为0,最大值为1。完美!

接下来,尝试对数据进行标准化。

使用sklearn进行标准化

为了对数据进行标准化,需要从sklearn库中导入StandardScalar并将其应用于数据集。方法如下:

# data standardization with sklearnfrom sklearn.preprocessing importStandardScaler#numerical featuresnum_cols= ['Item_Weight','Item_Visibility','Item_MRP','Outlet_Establishment_Year']# applystandardization on numerical featuresfor i in num_cols:# fit on trainingdatascale =StandardScaler().fit(X_train[[i]])# transform thetraining dataX_train_stand[i] = scale.transform(X_train_stand[[i]])# transform thetesting dataX_test_stand[i] = scale.transform(X_test_stand[[i]])

可以发现,只对数字列应用了标准化,而没有对其他的单一热编码(One-HotEncoded)特征应用标准化。标准化单一热编码特征意味着将类别特征重新分布。你不会想这么做的!

但是为什么在对数据进行归一化时没有做同样的事情呢?因为单一热编码的特征已经在0到1之间了。所以,标准化不会影响它们的值。

好的,来看看标准化是如何改变数据的:

现在,特征的值以平均值为中心,具有单位标准偏差分布。太棒了!

比较未缩放、归一化和标准化的数据

可视化数据以了解当前分布总是很不错的。可以使用箱线图来比较未缩放数据和已缩放数据。

你会注意到,特征缩放考虑到了方方面面。这些特征现在更具可比性,并且会对学习模型产生类似的影响。

将缩放应用于机器学习算法

是时候在数据上训练一些机器学习算法,以比较不同缩放技术对算法性能的影响。特别注意缩放对三种算法的影响:K-近邻、支持向量回归和决策树。

K-近邻(KNN)

如前所述,KNN是一种基于距离的算法,受特征范围的影响。来看看缩放前后数据对性能的影响:

# training a KNN modelfrom sklearn.neighbors importKNeighborsRegressor# measuring RMSE scorefrom sklearn.metrics import mean_squared_error# knnknn=KNeighborsRegressor(n_neighbors=7)rmse= []# raw,normalized and standardized training and testing datatrainX= [X_train, X_train_norm, X_train_stand]testX= [X_test, X_test_norm, X_test_stand]# modelfitting and measuring RMSEfor i inrange(len(trainX)):# fitknn.fit(trainX[i],y_train)# predictpred = knn.predict(testX[i])# RMSErmse.append(np.sqrt(mean_squared_error(y_test,pred)))#visualizing the resultdf_knn= pd.DataFrame({'RMSE':rmse},index=['Original','Normalized','Standardized'])df_knn

可以看到,特征缩放降低了KNN模型的RMSE分数。具体来说,归一化数据的性能比标准化数据稍好一些。

注意:之所以测量RMSE,因为这个比赛中评估RMSE。

图源:unsplash

支持向量回归(SVR)

SVR是另一种基于距离的算法。所以,来看看它是在归一还是或标准化的情况下工作得更好:

# training an SVR modelfromsklearn.svm importSVR# measuring RMSE scorefrom sklearn.metrics import mean_squared_error# SVRsvr=SVR(kernel='rbf',C=5)rmse= []# raw,normalized and standardized training and testing datatrainX= [X_train, X_train_norm, X_train_stand]testX= [X_test, X_test_norm, X_test_stand]# modelfitting and measuring RMSEfor i inrange(len(trainX)):# fitsvr.fit(trainX[i],y_train)# predictpred = svr.predict(testX[i])# RMSErmse.append(np.sqrt(mean_squared_error(y_test,pred)))#visualizing the resultdf_svr= pd.DataFrame({'RMSE':rmse},index=['Original','Normalized','Standardized'])df_svr

可以看到特征缩放确实降低了RMSE的分数。标准化数据的表现优于归一化数据。为什么会这样呢?

sklearn文档表明,SVR使用RBF核,假设所有特征都以0为中心,方差相同。这是因为一个方差大于其他方差的特征会阻止评估器从这些特征中学习。

决策树

已知特征缩放对于决策树没有影响。此处展示一个实例,展示决策树是如何操作数据的:

# training a Decision Tree modelfrom sklearn.tree importDecisionTreeRegressor# measuring RMSE scorefrom sklearn.metrics import mean_squared_error#Decision treedt=DecisionTreeRegressor(max_depth=10,random_state=27)rmse= []# raw,normalized and standardized training and testing datatrainX= [X_train,X_train_norm,X_train_stand]testX= [X_test,X_test_norm,X_test_stand]# modelfitting and measuring RMSEfor i inrange(len(trainX)):# fitdt.fit(trainX[i],y_train)# predictpred = dt.predict(testX[i])# RMSErmse.append(np.sqrt(mean_squared_error(y_test,pred)))#visualizing the resultdf_dt= pd.DataFrame({'RMSE':rmse},index=['Original','Normalized','Standardized'])df_dt

可以看到,RMSE分数在特征缩放时并一点也没变。因此,可以放心在数据上使用基于树的算法!

图源:unsplash

要记住的是,何时使用归一化还是标准化永远没有标准答案。这完全取决于数据和使用的算法。接下来轮到你了,试试用其他算法进行特征缩放吧。

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

    推荐阅读
  • 怎么样让眼睛变大的最有效的方法(5种方法让你的眼睛变大)

    使用时先轻刷一层睫毛膏,趁睫毛膏尚未干掉时,将增长纤维的刷头转出,并将刷头上的白色细致纤维轻轻以滚动方式附着每根睫毛的尖端部位。再重复刷上黑头睫毛膏,电眼效果max。

  • 双减带给老师的挑战和机遇(双减之后教师面临的)

    7月24日,中共中央办公厅、国务院办公厅印发了《关于进一步减轻义务教育阶段学生作业负担和校外培训负担的意见》。面对教师陡然增加的负担,教育部相关负责人回应,将继续督促指导各地将教师减负工作同优化教师资源配置、深化教育教学改革等有机结合起来,健全教师减负长效机制,推动教师减负工作取得实效。“双减”政策明确提出,要构建教育良好生态,有效缓解家长焦虑情绪,促进学生全面发展、健康成长。

  • 我的世界橡胶甘蔗怎么杂交 我的世界粘性甘蔗种子

    杂交前需要合成作物架,用4个木棍合成,摆放成左右两列,合成2个作物架,由于杂交的几率比较低,所以需要准备多点作物架。拿着作物架在,每两个种了甘蔗的耕地的中间,放上两个作物架,作物架成十字交叉,代表此时在进行杂交。进行一段长时间的等待,等待甘蔗长大,等待杂交成功,注意杂交的地方很容易长杂草,如果长了杂草请尽快打掉,否则整个耕地都会蔓延杂草,需要重新杂交。

  • 娃哈哈新媒体营销策划(第13届娃哈哈营销策划大赛重磅来袭)

    为了丰富大学生的课余生活,引导和培养大学生创新精神和实践能力,4月23日18时30分,第十三届娃哈哈全国大学生营销策划大赛启动仪式于南宁职业技术学院大礼堂顺利举行。娃哈哈营销大赛为大学生提供了一个广阔的实践平台,推动教育与实践相结合,使同学们的创新意识得到激发。在此预祝娃哈哈营销策划大赛取得圆满成功,也祝本次参赛的团队都能够在比赛中取得佳绩!

  • 狮鹫怎么驯服(方舟生存进化手游狮鹫驯服技巧攻略)

    接下来我们就一起去研究一下吧!狮鹫怎么驯服方舟生存进化中狮鹫是高傲的守护兽,想要驯服狮鹫并不容易,必须获得狮鹫的尊重,这并不算容易的事,下面就来介绍一下怎么驯服狮鹫的方法吧。第一种方法:人物等级85级以上,并且不是可以获得全部尊重的!比如85级的,可能只能获取低等级狮鹫的尊重!

  • tabata间歇性训练的方法(什么是Tabata锻炼)

    各种研究得出结论,Tabata锻炼对健康有很多好处。有时您可能会达到最大强度,这可能会因肌肉松懈而导致受伤每周最多进行3-4次Tabata训练。Tabata锻炼以多种方式改善健康。此外,心脏病患者在开始Tabata锻炼之前还应听取医生的建议。在没有科学证据的情况下,对原始Tabata版本的修改可能弊大于利。人们可能会选择Tabata只是为了减肥,这不是它的实际用途。与传统HIIT相比,Tabata的强度水平更高,恢复时间更短。

  • s10和s9有什么区别(s10和s9有什么区别瑞思迈)

    vivoS9电池容量4000mAh,配置33W闪充。vivo官方宣布vivoS10系列于2021年7月15日正式发布,该手机代言人有Lisa、蔡徐坤、刘昊然。2021年7月15日,vivo召开了S10系列发布会,会上发布了新一代自拍旗舰vivoS10系列,其vivoS10系列依然采用了前置4400万像素AF双摄设计,仍然支持105度超广角,还有前置微缝式双柔光灯。

  • 专业版微博怎么设置(其实很简单)

    接下来我们就一起去了解一下吧!专业版微博怎么设置需要认证过才能成为专业版。专业版微博是为企业和机构定制的微博。新浪微博企业版是我们为企业、机构用户量身打造的服务平台。它具有更丰富的个性化页面展示功能设置,更精准的数据分析服务,以及更高效的沟通管理后台。我们期待新浪微博企业版能够帮助企业更便捷地与目标用户进行互动沟通,提升营销效果转化,挖掘更多商业机会。

  • 变速箱油到底多久换一次呢(变速箱油多久更换一次)

    如果需要更换变速箱油,查看用户的保养手册上如果有明确的更换周期,按照规定换油。如果变速箱油是终身免维护的,也一样要引起重视,终身免维护并不意味着变速箱油一直不用换。其实变速箱油不像机油那么黑,相比于机油甚至更为干净一点。所以车主千万不要忽略变速箱油,如果过长时间不更换,也会对变速箱造成一定的损伤,而且一些汽车的变速箱比发动机还要昂贵,修一次可能得要好几万元。

  • 恐惧症会遗传吗 幽闭恐惧症会遗传吗

    恐惧症是发病率非常高的一种心理疾病,而有许多患者并没有得到有效的治疗。导致恐惧症的因素恐惧症是各种因素的共同作用。恐惧症的典型症状是恐怖发作,并伴有强烈的生理反应。尽管患者知道这种恐惧是不合理的,但是没法控制。研究表明,在100名患者中40名患者可以彻底治疗,基本上没有什么后遗症。所以一定要及早治疗,效果好,造成的危害也小。