ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2)

举报
一个处女座的程序猿 发表于 2021/03/26 23:26:39 2021/03/26
【摘要】 ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2)     目录 输出结果 设计思路 核心代码     输出结果         设计思路   核心代码 for iStep in range(nSteps): lam = lam * lamMult betaIRLS = l...

ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2)

 

 

目录

输出结果

设计思路

核心代码


 

 

输出结果

 

 

 

 

设计思路

 

核心代码


  
  1. for iStep in range(nSteps):
  2. lam = lam * lamMult
  3. betaIRLS = list(beta)
  4. beta0IRLS = beta0
  5. distIRLS = 100.0
  6. iterIRLS = 0
  7. while distIRLS > 0.01:
  8. iterIRLS += 1
  9. iterInner = 0.0
  10. betaInner = list(betaIRLS)
  11. beta0Inner = beta0IRLS
  12. distInner = 100.0
  13. while distInner > 0.01:
  14. iterInner += 1
  15. if iterInner > 100: break
  16. betaStart = list(betaInner)
  17. for iCol in range(ncol):
  18. sumWxr = 0.0
  19. sumWxx = 0.0
  20. sumWr = 0.0
  21. sumW = 0.0
  22. for iRow in range(nrow):
  23. x = list(xNormalized[iRow])
  24. y = labels[iRow]
  25. p = Pr(beta0IRLS, betaIRLS, x)
  26. if abs(p) < 1e-5:
  27. p = 0.0
  28. w = 1e-5
  29. elif abs(1.0 - p) < 1e-5:
  30. p = 1.0
  31. w = 1e-5
  32. else:
  33. w = p * (1.0 - p)
  34. z = (y - p) / w + beta0IRLS + sum([x[i] * betaIRLS[i] for i in range(ncol)])
  35. r = z - beta0Inner - sum([x[i] * betaInner[i] for i in range(ncol)])
  36. sumWxr += w * x[iCol] * r
  37. sumWxx += w * x[iCol] * x[iCol]
  38. sumWr += w * r
  39. sumW += w
  40. avgWxr = sumWxr / nrow
  41. avgWxx = sumWxx / nrow
  42. beta0Inner = beta0Inner + sumWr / sumW
  43. uncBeta = avgWxr + avgWxx * betaInner[iCol]
  44. betaInner[iCol] = S(uncBeta, lam * alpha) / (avgWxx + lam * (1.0 - alpha))
  45. sumDiff = sum([abs(betaInner[n] - betaStart[n]) for n in range(ncol)])
  46. sumBeta = sum([abs(betaInner[n]) for n in range(ncol)])
  47. distInner = sumDiff/sumBeta
  48. a = sum([abs(betaIRLS[i] - betaInner[i]) for i in range(ncol)])
  49. b = sum([abs(betaIRLS[i]) for i in range(ncol)])
  50. distIRLS = a / (b + 0.0001)
  51. dBeta = [betaInner[i] - betaIRLS[i] for i in range(ncol)]
  52. gradStep = 1.0
  53. temp = [betaIRLS[i] + gradStep * dBeta[i] for i in range(ncol)]
  54. betaIRLS = list(temp)
  55. beta = list(betaIRLS)
  56. beta0 = beta0IRLS
  57. betaMat.append(list(beta))
  58. beta0List.append(beta0)
  59. nzBeta = [index for index in range(ncol) if beta[index] != 0.0]
  60. for q in nzBeta:
  61. if not(q in nzList):
  62. nzList.append(q)

 

 

 

 

文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:yunyaniu.blog.csdn.net/article/details/85857823

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。