加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python数据科学:正则化方法

发布时间:2019-01-27 11:14:58 所属栏目:教程 来源:小F
导读:本文首要先容,Python数据科学:正则化要领。正则化要领的呈现,通过紧缩要领(正则化要领)举办回归。 正则化要领首要包罗岭回归与LASSO回归。 一、岭回归 岭回归通过工钱插手的处罚项(束缚项),对回归系数举办预计,为有偏预计。 有偏预计,应承预计有不大
副问题[/!--empirenews.page--]

本文首要先容,Python数据科学:正则化要领。正则化要领的呈现,通过紧缩要领(正则化要领)举办回归。

正则化要领首要包罗岭回归与LASSO回归。

一、岭回归

岭回归通过工钱插手的处罚项(束缚项),对回归系数举办预计,为有偏预计。

有偏预计,应承预计有不大的偏度,以调换预计的偏差明显减小,并在其残差平方和为最小的原则下预计回归系数。

凡是岭回归方程中的R²会稍低于线性回归说明,但回归系数的明显性每每明明高于平凡线性回归。

这里差池响应的理论常识举办细说,说真话小F也是晕乎乎...

以是选择先调包,看看结果是啥样的。

行使呆板进修框架scikit-learn举办岭回归参数的选择(正则化系数)。

数据是书中的数据,已上传网盘,公家号回覆「正则化」,即可获取。

scikit-learn傍边的模子不会默认对数据尺度化,必需手动执行。

尺度化后的数据可以消除量纲,让每个变量的系数在必然意义下举办直接较量。

  1. import numpy as np 
  2. import pandas as pd 
  3. import matplotlib.pyplot as plt 
  4. from sklearn.linear_model import Ridge 
  5. from sklearn.linear_model import RidgeCV 
  6. from sklearn.preprocessing import StandardScaler 
  7.  
  8. # 消除pandas输出省略号环境及换行环境 
  9. pd.set_option('display.max_columns', 500) 
  10. pd.set_option('display.width', 1000) 
  11. # 读取数据,skipinitialspace:忽略脱离符后的空缺 
  12. df = pd.read_csv('creditcard_exp.csv', skipinitialspace=True) 
  13. # 获守名誉卡有支出的行数据 
  14. exp = df[df['avg_exp'].notnull()].copy().iloc[:, 2:].drop('age2', axis=1) 
  15. # 获守名誉卡无支出的行数据,NaN 
  16. exp_new = df[df['avg_exp'].isnull()].copy().iloc[:, 2:].drop('age2', axis=1) 
  17.  
  18. # 选择4个持续变量,别离是年数 收入 内地小区价值 内地人均收入 
  19. continuous_xcols = ['Age', 'Income', 'dist_home_val', 'dist_avg_income'] 
  20. # 尺度化 
  21. scaler = StandardScaler() 
  22. # 表明变量,二维数组 
  23. X = scaler.fit_transform(exp[continuous_xcols]) 
  24. # 被表明变量,一维数组 
  25. y = exp['avg_exp_ln'] 
  26.  
  27. # 天生正则化系数 
  28. alphas = np.logspace(-2, 3, 100, base=10) 
  29. # 行使差异的正则化系数对模子举办交错验证 
  30. rcv = RidgeCV(alphas=alphas, store_cv_values=True) 
  31. # 行使数据集实习(fit) 
  32. rcv.fit(X, y) 
  33. # 输出最优参数,正则化系数及响应模子R² 
  34. print('The best alpha is {}'.format(rcv.alpha_)) 
  35. print('The r-square is {}'.format(rcv.score(X, y))) 
  36.  
  37. # 实习好后行使transform举办数据转换 
  38. X_new = scaler.transform(exp_new[continuous_xcols]) 
  39. # 行使模子对数据做猜测 
  40. print(np.exp(rcv.predict(X_new)[:5])) 

输出功效如下。

Python数据科学:正则化要领

最优正则化系数为0.29,模子R²为0.475。

并行使最优正则化系数下的岭回归模子猜测数据。

对差异正则化系数下模子的均方偏差举办可视化。

  1. # 正则化系数搜刮空间傍边每轮交错验证的功效,模子的均方偏差 
  2. cv_values = rcv.cv_values_ 
  3. n_fold, n_alphas = cv_values.shape 
  4. # 模子均方偏差上下颠簸值 
  5. cv_mean = cv_values.mean(axis=0) 
  6. cv_std = cv_values.std(axis=0) 
  7. ub = cv_mean + cv_std / np.sqrt(n_fold) 
  8. lb = cv_mean - cv_std / np.sqrt(n_fold) 
  9. # 绘制折线图,x轴是指数型情势 
  10. plt.semilogx(alphas, cv_mean, label='mean_score') 
  11. # y1(lb)和y2(ub)之间举办添补 
  12. plt.fill_between(alphas, lb, ub, alpha=0.2) 
  13. plt.xlabel('$alpha$') 
  14. plt.ylabel('mean squared errors') 
  15. plt.legend(loc='best') 
  16. plt.show() 

输出功效如下。

Python数据科学:正则化要领

发明正则化系数在40或50以下时,模子的均方偏差相差不大。

当系数高出该阈值时,均方偏差则快速上升。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读