ML之PLiR之Glmnet:利用Glmnet算法求解ElasticNet回归类型问题(实数值评分预测)

简介: ML之PLiR之Glmnet:利用Glmnet算法求解ElasticNet回归类型问题(实数值评分预测)

输出结果

0 2

1 2

2 2

3 3

4 3

5 3

6 3

7 3

8 3

9 2

10 2

11 2

12 2

13 3

14 3

15 2

16 2

17 2

18 2

19 2

20 2

21 2

22 2

23 2

24 2

25 2

26 2

27 2

28 2

29 3

30 3

31 3

32 2

33 3

34 2

35 2

36 2

37 2

38 2

39 2

40 2

41 2

42 1

43 1

44 2

45 2

46 2

47 1

48 2

49 1

50 1

51 1

52 1

53 1

54 1

55 1

……

95 1

96 1

97 1

98 1

99 1

['"alcohol"', '"volatile acidity"', '"sulphates"', '"total sulfur dioxide"', '"chlorides"', '"fixed acidity"', '"pH"', '"free sulfur dioxide"', '"residual sugar"', '"citric acid"', '"density"']


1、Glmnet算法

image.png


实现代码

#calculate starting value for lambda

lam = maxXY/alpha

#this value of lambda corresponds to beta = list of 0's

#initialize a vector of coefficients beta

beta = [0.0] * ncols

#initialize matrix of betas at each step

betaMat = []

betaMat.append(list(beta))

#begin iteration

nSteps = 100

lamMult = 0.93 #100 steps gives reduction by factor of 1000 in

              # lambda (recommended by authors)

nzList = []

for iStep in range(nSteps):

   #make lambda smaller so that some coefficient becomes non-zero

   lam = lam * lamMult

   deltaBeta = 100.0

   eps = 0.01

   iterStep = 0

   betaInner = list(beta)

   while deltaBeta > eps:

       iterStep += 1

       if iterStep > 100: break

       #cycle through attributes and update one-at-a-time

       #record starting value for comparison

       betaStart = list(betaInner)

       for iCol in range(ncols):

           xyj = 0.0

           for i in range(nrows):

               #calculate residual with current value of beta

               labelHat = sum([xNormalized[i][k]*betaInner[k]

                               for k in range(ncols)])

               residual = labelNormalized[i] - labelHat

               xyj += xNormalized[i][iCol] * residual

           uncBeta = xyj/nrows + betaInner[iCol]

           betaInner[iCol] = S(uncBeta, lam * alpha) / (1 +

                                           lam * (1 - alpha))

       sumDiff = sum([abs(betaInner[n] - betaStart[n])

                      for n in range(ncols)])

       sumBeta = sum([abs(betaInner[n]) for n in range(ncols)])

       deltaBeta = sumDiff/sumBeta

   print(iStep, iterStep)

   beta = betaInner

   #add newly determined beta to list

   betaMat.append(beta)

   #keep track of the order in which the betas become non-zero

   nzBeta = [index for index in range(ncols) if beta[index] != 0.0]

   for q in nzBeta:

       if (q in nzList) == False:

           nzList.append(q)


相关文章
|
7月前
|
算法 前端开发 调度
贪心算法适用于解决什么类型的问题?
贪心算法适用于解决什么类型的问题?
335 1
|
4月前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
13天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
6月前
|
算法
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
53 0
|
4月前
|
数据采集 前端开发 算法
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
|
6月前
|
存储 机器学习/深度学习 算法
使用决策树算法预测隐形眼镜类型
使用决策树算法预测隐形眼镜类型
47 2
|
6月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
63 0
|
6月前
|
存储 算法
数据结构和算法学习记录——特殊线性表之队列-队列的概念、队列结构体类型定义 、基本接口函数、初始化函数、销毁队列函数、入队列函数、判断队列是否为空、出队列函数、读取队头队尾的数据 、计算队列数据个数
数据结构和算法学习记录——特殊线性表之队列-队列的概念、队列结构体类型定义 、基本接口函数、初始化函数、销毁队列函数、入队列函数、判断队列是否为空、出队列函数、读取队头队尾的数据 、计算队列数据个数
47 0
|
7月前
|
机器学习/深度学习 算法 数据可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
|
7月前
|
机器学习/深度学习 算法 Serverless
基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真
基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真
下一篇
DataWorks