归一化

归一化也称标准化,是处理数据挖掘的一项基础工作,使用归一化的原因大体如下:

数据存在不同的评价指标,其量纲或量纲单位不同,处于不同的数量级。解决特征指标之间的可比性,经过归一化处理后,各指标处于同一数量级,便于综合对比。求最优解的过程会变得平缓,更容易正确收敛。即能提高梯度下降求最优解时的速度。提高计算精度。适合进行综合对比评价。

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加扰动_标准化和归一化对机器学习经典模型的影响相关推荐

  1. 【机器学习基础】Python数据预处理:彻底理解标准化和归一化

    数据预处理 数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放,使之落在一个特定的区域,便于进行综合分析. 常用的方法有两 ...

  2. python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...

  3. python变量后面加星号_计算与变量(一)跟杜老师一起,趣学Python编程

    好了,现在你的Python装好了,也知道如何启动PythonShell程序了,那么你就已经准备好用它来做点什么了.我们将从一些简单的计算开始,然后再使用变量.变量是计算机程序中用来保存东西的一种方式, ...

  4. python中字体加粗_全网python中xticks字体加粗搜索-第二电脑网

    第二电脑网 网页 电脑论坛 电脑知识 搜吧 问问 博客 新闻 更多» soso.mark('logo_start'); soso.mark('logo_end'); 帮助 | 第二电脑网为主页 | 提 ...

  5. python合并pdf 加书签_使用Python批量合并PDF文件(带书签功能)

    1 #!/usr/bin/env python3 2 #-*- coding: utf-8 -*- 3 ''' 4 #文件名:pdfmerge.py5 本脚本用来合并pdf文件,输出的pdf文件按输入 ...

  6. 慕课python就业班加微信_给初学python的朋友的一些忠告和建议

    从2013年开始接触python以来,我体验过阅读书籍,学习MOOC,查阅文档,谷歌搜索,逛编程社区.现在仍在学习python中,走了很多的弯路.成功的道路各有不同,失败的地方却是种种.我想把我学习p ...

  7. python蟒蛇绘制加眼睛_蟒蛇简笔画图片大全、教程

    昕薇棒形图为你提供了一个完整的画册和python棒形图教程. 巨蟒的棍形是分步骤画的:画出头部的形状,加上卷起的身体,画出眼睛和舌头,并在身体上加上图案.大蟒蛇最长约3.5米,头和脖子后面有一个深褐色 ...

  8. python输入如何加单位_如何处理以十为单位的动态输入大小

    我设法用一个小技巧找到了这个问题的解决办法.我创建了一个常量张量来保存变量的内容.张量的大小会限制sen_len的大小,但是如果我们选择它足够大,那就不是问题了.在 以下是我的解决方案的一个玩具示例& ...

  9. python给视频加水印_爬虫视频统一添加水印(moviepy实现)

    这不昨天刚解决一个问题我们部门老大又来提问题啦,要求给所有视频统一添加水印,心想这不是运营美工干的活嘛,我直接录视频不就行啦!哈哈哈 只能这里唠叨一下,该干还要撸起袖子干起来啊!谁让我们是程序媛呢!直 ...

  10. python怎么字体加阴影_如何在pythonptx中给文本添加阴影?

    我正在做一个项目,我必须用pythonptx创建一个PowerPoint.我需要添加有阴影的文本,使其显示如下: 如何在pythonptx中使用阴影格式化文本?在 下面是我使用的代码:from ppt ...

最新文章

  1. 在React Hook里使用history.push跳转
  2. vector机器人 WHAT DO I USE THE VECTOR APP FOR? 我使用 VECTOR 应用程序做什么?
  3. 重视细节,方能得到认可
  4. DB2 SQL查询结果集自动编号、返回条数范围控制研究
  5. 记录某对比软件注册 版本4
  6. mysql给指定数据增加前后缀update,替换replace字段值
  7. unexpected end of file while looking for precompiled header directive解决方法
  8. 一个简单的重命名,在git中也有这么多学问
  9. 二、VS插件之VassistX
  10. 深度学习中的优化算法如何理解--SGD
  11. 书籍之 Head First HTML与CSS
  12. LDA主题模型-TFIDF
  13. 知网html阅读怎么复制粘贴,网页文字不能复制粘贴怎么解决 网页文字不能复制粘贴的解决办法(推荐)...
  14. “记忆力争夺战”走向尾声,“潜意识记忆营销”将成破局利器
  15. c4d打开没反应_(图文+视频)C4D野教程:来制作一个类似蹦床的布料动画
  16. 9图工具 android,在线自动生成.9png图的Android设计切图工具推荐
  17. 利用GEPHI做网页排名计算
  18. vue 中哪些操作自动触发更新视图
  19. 工艺路线Routing
  20. 强化学习笔记-马尔可夫决策过程

热门文章

  1. lwip 动态修改IP
  2. 世界上有10种人,一种是懂二进制的人,一种是不懂二进制的人。
  3. 5.5 设置UITableView单元格背景色 [原创iOS开发-Xcode教程]
  4. 不忘初心Windows11精简版
  5. 用php上传头像的步骤,php怎么上传头像
  6. ABAQUS软件实训(四):Mesh模块之六面体网格划分技巧
  7. 股票市场交易中的强化学习
  8. 《浊酒一杯忆往昔, 似水流年探追忆》
  9. hdoj 5651 xiaoxin juju needs help 【组合数学】
  10. 排列熵(permutation entropy)