python归一化nan加扰动_标准化和归一化对机器学习经典模型的影响
归一化
归一化也称标准化,是处理数据挖掘的一项基础工作,使用归一化的原因大体如下:
数据存在不同的评价指标,其量纲或量纲单位不同,处于不同的数量级。解决特征指标之间的可比性,经过归一化处理后,各指标处于同一数量级,便于综合对比。求最优解的过程会变得平缓,更容易正确收敛。即能提高梯度下降求最优解时的速度。提高计算精度。适合进行综合对比评价。
MinMaxScaler
线性归一化,也称为离差标准化,是对原始数据的线性变换,MinMax标准化方法的缺陷在当有新数据加入时,可能会导致X.max和X.min的值发生变化,需要重新计算。其转换函数如下:
StandardScaler
标准差归一化,也叫Z-score标准化,这种方法给予原始数据的均值(mean,μ)和标准差(standard deviation,σ)进行数据的标准化。经过处理后的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:
MaxAbsScaler
原理与MinMaxScaler很像,只是数据会被规模化到[-1,1]之间。也就是特征中,所有数据都会除以最大值。这个方法对那些已经中心化均值维0或者稀疏的数据有意义。
模型
本次实验使用了5个模型,分别为Lasso、Redige、SVR、RandomForest、XGBoost。
方法:
以不同方式划分数据集和测试集
使用不同的归一化(标准化)方式
使用不同的模型
通过比较MSE(均方误差,mean-square error)的大小来得出结论
部分代码及结果
1 import numpy asnp2 import pandas aspd3 import matplotlib.pyplot asplt4
5 #data = pd.read_csv('路径')6
7 data = data.sort_values(by='time',ascending=True)8 data.reset_index(inplace=True,drop=True)9
10 target = data['T1AOMW_AV']11 del data['T1AOMW_AV']12
View Code
数据处理:
去除缺失值
1 # 没有缺失值2 All_NaN =pd.DataFrame(data.isnull().sum()).reset_index()3 All_NaN.columns = ['name','times']4 All_NaN.describe()
View Code
所有数据中,干掉 方差小于1的属性
1 feature_describe_T =data.describe().T2 std_feature = feature_describe_T[feature_describe_T['std']<1].index3 feature = [column for column in data.columns if column not instd_feature] # 筛选方差大于1的属性4 data =data[feature]5
6 del data['time']
View Code
1 test_data = data[:5000]2
3 data1 = data[5000:16060]4 target1 = target[5000:16060]5 data2 = data[16060:]6 target2 = target[16060:]7
8 import scipy.stats asstats9 dict_corr ={10 'spearman': [],11 'pearson': [],12 'kendall': [],13 'columns': []14 }15
16 for i indata.columns:17 corr_pear,pval =stats.pearsonr(data[i],target)18 corr_spear,pval =stats.spearmanr(data[i],target)19 corr_kendall,pval =stats.kendalltau(data[i],target)20
21 dict_corr['pearson'].append(abs(corr_pear))22 dict_corr['spearman'].append(abs(corr_spear))23 dict_corr['kendall'].append(abs(corr_kendall))24
25 dict_corr['columns'].append(i)26
27 # 筛选新属性28 dict_corr =pd.DataFrame(dict_corr)29 new_fea = list(dict_corr[(dict_corr['pearson']>0.32) & (dict_corr['spearman']>0.48) & (dict_corr['kendall']>0.44)]['columns'].values)30 # 选取原则,选取25%分位数 以上的相关性系数31 dict_corr.describe()32 len(new_fea)
View Code
各种模型的测试:
1 fromsklearn.linear_model import LinearRegression,Lasso,Ridge2 fromsklearn.preprocessing import MinMaxScaler,StandardScaler,MaxAbsScaler3 from sklearn.metrics import mean_squared_error asmse4 fromsklearn.svm import SVR5
6 mm =MinMaxScaler()7 lr = Lasso(alpha=0.5)8
9 lr.fit(mm.fit_transform(data1[new_fea]), target1)10 lr_ans =lr.predict(mm.transform(data2[new_fea]))11
12 print("LR :", mse(lr_ans,target2) )##lr13 ridge = Ridge(alpha=0.5)14 ridge.fit(mm.fit_transform(data1[new_fea]),target1)15 ridge_ans =ridge.predict(mm.transform(data2[new_fea]))16
17 print("ridge :",mse(ridge_ans,target2 ))#ridge18 svr = SVR(kernel='rbf',C=100,epsilon=0.1).fit(mm.fit_transform(data1[new_fea]),target1)19 svr_ans =svr.predict(mm.transform(data2[new_fea]))20 print("svr :",mse(svr_ans,target2) )#svr21 fromsklearn.ensemble import RandomForestRegressor22 fromsklearn.model_selection import train_test_split23 X_train, X_test, y_train, y_test = train_test_split(data[new_fea],target,test_size=0.25,random_state=12345)24
25 ss =MaxAbsScaler()26 ss_x_train =ss.fit_transform(X_train)27 ss_x_test =ss.transform(X_test)28
29 estimator_lr = Lasso(alpha=0.5).fit(ss_x_train,y_train)30 predict_lr =estimator_lr.predict(ss_x_test)31 print('Lssao:',mse(predict_lr,y_test))32
33 estimator_rg = Ridge(alpha=0.5).fit(ss_x_train,y_train)34 predict_rg =estimator_rg.predict(ss_x_test)35 print('Ridge:',mse(predict_rg,y_test))36
37 estimator_svr = SVR(kernel='rbf',C=100,epsilon=0.1).fit(ss_x_train,y_train)38 predict_svr =estimator_svr.predict(ss_x_test)39 print('SVR:',mse(predict_svr,y_test))40
41 estimator_RF =RandomForestRegressor().fit(ss_x_train,y_train)42 predict_RF =estimator_RF.predict(ss_x_test)43 print('RF:',mse(predict_RF,y_test))44
45 predict_XG = xgb.XGBRegressor(learn_rate=0.1,n_estimators = 550,max_depth = 4,min_child_weight = 5,seed=0,subsample=0.7,gamma=0.1,reg_alpha=1,reg_lambda=1)46 predict_XG.fit(ss_x_train,y_train)47 predict_XG_ans=predict_XG.predict(ss_x_test)48 print("predict_XG :", mse(predict_XG_ans,y_test))49
50 结果:
View Code
结论:
对于Lasso模型,使用MaxAbsScaler方式时,mse增大十分明显,且归一化后结果高于不进行归一化时;
对于Redige模型,归一化结果也明显高于不归一化时的结果;
对于SVR模型,不进行归一化时,其MSE会非常大;
对于RandomForest和XGBoost来说,是否进行归一化对结果影响不大;
python归一化nan加扰动_标准化和归一化对机器学习经典模型的影响相关推荐
- 【机器学习基础】Python数据预处理:彻底理解标准化和归一化
数据预处理 数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放,使之落在一个特定的区域,便于进行综合分析. 常用的方法有两 ...
- python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...
基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...
- python变量后面加星号_计算与变量(一)跟杜老师一起,趣学Python编程
好了,现在你的Python装好了,也知道如何启动PythonShell程序了,那么你就已经准备好用它来做点什么了.我们将从一些简单的计算开始,然后再使用变量.变量是计算机程序中用来保存东西的一种方式, ...
- python中字体加粗_全网python中xticks字体加粗搜索-第二电脑网
第二电脑网 网页 电脑论坛 电脑知识 搜吧 问问 博客 新闻 更多» soso.mark('logo_start'); soso.mark('logo_end'); 帮助 | 第二电脑网为主页 | 提 ...
- python合并pdf 加书签_使用Python批量合并PDF文件(带书签功能)
1 #!/usr/bin/env python3 2 #-*- coding: utf-8 -*- 3 ''' 4 #文件名:pdfmerge.py5 本脚本用来合并pdf文件,输出的pdf文件按输入 ...
- 慕课python就业班加微信_给初学python的朋友的一些忠告和建议
从2013年开始接触python以来,我体验过阅读书籍,学习MOOC,查阅文档,谷歌搜索,逛编程社区.现在仍在学习python中,走了很多的弯路.成功的道路各有不同,失败的地方却是种种.我想把我学习p ...
- python蟒蛇绘制加眼睛_蟒蛇简笔画图片大全、教程
昕薇棒形图为你提供了一个完整的画册和python棒形图教程. 巨蟒的棍形是分步骤画的:画出头部的形状,加上卷起的身体,画出眼睛和舌头,并在身体上加上图案.大蟒蛇最长约3.5米,头和脖子后面有一个深褐色 ...
- python输入如何加单位_如何处理以十为单位的动态输入大小
我设法用一个小技巧找到了这个问题的解决办法.我创建了一个常量张量来保存变量的内容.张量的大小会限制sen_len的大小,但是如果我们选择它足够大,那就不是问题了.在 以下是我的解决方案的一个玩具示例& ...
- python给视频加水印_爬虫视频统一添加水印(moviepy实现)
这不昨天刚解决一个问题我们部门老大又来提问题啦,要求给所有视频统一添加水印,心想这不是运营美工干的活嘛,我直接录视频不就行啦!哈哈哈 只能这里唠叨一下,该干还要撸起袖子干起来啊!谁让我们是程序媛呢!直 ...
- python怎么字体加阴影_如何在pythonptx中给文本添加阴影?
我正在做一个项目,我必须用pythonptx创建一个PowerPoint.我需要添加有阴影的文本,使其显示如下: 如何在pythonptx中使用阴影格式化文本?在 下面是我使用的代码:from ppt ...
最新文章
- 在React Hook里使用history.push跳转
- vector机器人 WHAT DO I USE THE VECTOR APP FOR? 我使用 VECTOR 应用程序做什么?
- 重视细节,方能得到认可
- DB2 SQL查询结果集自动编号、返回条数范围控制研究
- 记录某对比软件注册 版本4
- mysql给指定数据增加前后缀update,替换replace字段值
- unexpected end of file while looking for precompiled header directive解决方法
- 一个简单的重命名,在git中也有这么多学问
- 二、VS插件之VassistX
- 深度学习中的优化算法如何理解--SGD
- 书籍之 Head First HTML与CSS
- LDA主题模型-TFIDF
- 知网html阅读怎么复制粘贴,网页文字不能复制粘贴怎么解决 网页文字不能复制粘贴的解决办法(推荐)...
- “记忆力争夺战”走向尾声,“潜意识记忆营销”将成破局利器
- c4d打开没反应_(图文+视频)C4D野教程:来制作一个类似蹦床的布料动画
- 9图工具 android,在线自动生成.9png图的Android设计切图工具推荐
- 利用GEPHI做网页排名计算
- vue 中哪些操作自动触发更新视图
- 工艺路线Routing
- 强化学习笔记-马尔可夫决策过程
热门文章
- lwip 动态修改IP
- 世界上有10种人,一种是懂二进制的人,一种是不懂二进制的人。
- 5.5 设置UITableView单元格背景色 [原创iOS开发-Xcode教程]
- 不忘初心Windows11精简版
- 用php上传头像的步骤,php怎么上传头像
- ABAQUS软件实训(四):Mesh模块之六面体网格划分技巧
- 股票市场交易中的强化学习
- 《浊酒一杯忆往昔, 似水流年探追忆》
- hdoj 5651 xiaoxin juju needs help 【组合数学】
- 排列熵(permutation entropy)