您好,欢迎来到锐游网。
搜索
您的当前位置:首页第八章 变量选择与正则化 - 糖尿病人数据集

第八章 变量选择与正则化 - 糖尿病人数据集

来源:锐游网

from sklearn import datasets

diabetes = datasets.load_diabetes()  
pd.DataFrame(diabetes.target).head()

pd.DataFrame(diabetes.data).head()

diabetes.feature_names

print(diabetes.DESCR)

数据调整

0 载入库&加载数据

import numpy as np
import pandas as pd	
from sklearn.linear_model import Lasso, Ridge, ElasticNet

#导入数据
df = pd.read_csv('Regression/Regression8/diabetes.csv')
features = list(df.columns)
features.remove('y')
labels = ['y']

df.sample(n=5)

df.info()

1 用lasso求解

lamb = 0.5 #参数
lasso_reg = Lasso(alpha=lamb)
#对10个原始自变量做回归
lasso_reg.fit(df[features[1:11]], df[labels])

print('截距\n', lasso_reg.intercept_)
print('自变量系数\n', lasso_reg.coef_)

2 岭回归

lamb = 0.1 #参数
Ridge_reg = Ridge(alpha=lamb)
Ridge_reg.fit(df[features[1:11]], df[labels])

print('截距\n', Ridge_reg.intercept_)
print('自变量系数\n', Ridge_reg.coef_)

  1. 全部为非0项
  2. 只具有压缩功能
  3. 不具有变量选择功能

3 引入全部特征

lamb = 0.1
lasso_reg2 = Lasso(alpha=lamb)
lasso_reg2.fit(df[features], df[labels])

print('截距\n', lasso_reg2.intercept_)
print('自变量系数\n', lasso_reg2.coef_)

  1. 非0元个数21
  2. 0元个数43
  3. 大部分变量系数为0
  4. 一次项非0元较多
  5. 二次项非0元较少

4 弹性网络方法

lamb=0.1
ElasticNet_reg = ElasticNet(alpha=lamb, l1_ratio=0.95)
ElasticNet_reg.fit(df[features], df[labels])

print('截距\n', ElasticNet_reg.intercept_)
print('自变量系数\n', ElasticNet_reg.coef_.T)

  1. 非0元个数38
  2. 0元个数26
  3. 非0元素个数较为折中

5 超参数选择

from sklearn.linear_model import LassoCV,RidgeCV,ElasticNetCV

lasso_reg = LassoCV(cv=20).fit(df[features], df[labels])    
print('超参数\n', lasso_reg.alpha_)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ryyc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务