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

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

输出结果

image.png

设计思路

image.png

image.png

核心代码

for iStep in range(nSteps):

   lam = lam * lamMult

   betaIRLS = list(beta)

   beta0IRLS = beta0

   distIRLS = 100.0

   iterIRLS = 0

   while distIRLS > 0.01:

       iterIRLS += 1

       iterInner = 0.0

       betaInner = list(betaIRLS)

       beta0Inner = beta0IRLS

       distInner = 100.0

       while distInner > 0.01:

           iterInner += 1

           if iterInner > 100: break

           betaStart = list(betaInner)

           for iCol in range(ncol):

               sumWxr = 0.0

               sumWxx = 0.0

               sumWr = 0.0

               sumW = 0.0

               for iRow in range(nrow):

                   x = list(xNormalized[iRow])

                   y = labels[iRow]

                   p = Pr(beta0IRLS, betaIRLS, x)

                   if abs(p) < 1e-5:

                       p = 0.0

                       w = 1e-5

                   elif abs(1.0 - p) < 1e-5:

                       p = 1.0

                       w = 1e-5

                   else:

                       w = p * (1.0 - p)

                   z = (y - p) / w + beta0IRLS + sum([x[i] * betaIRLS[i] for i in range(ncol)])

                   r = z - beta0Inner - sum([x[i] * betaInner[i] for i in range(ncol)])

                   sumWxr += w * x[iCol] * r

                   sumWxx += w * x[iCol] * x[iCol]

                   sumWr += w * r

                   sumW += w

               avgWxr = sumWxr / nrow

               avgWxx = sumWxx / nrow

               beta0Inner = beta0Inner + sumWr / sumW

               uncBeta = avgWxr + avgWxx * betaInner[iCol]

               betaInner[iCol] = S(uncBeta, lam * alpha) / (avgWxx + lam * (1.0 - alpha))

           sumDiff = sum([abs(betaInner[n] - betaStart[n]) for n in range(ncol)])

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

           distInner = sumDiff/sumBeta

       a = sum([abs(betaIRLS[i] - betaInner[i]) for i in range(ncol)])

       b = sum([abs(betaIRLS[i]) for i in range(ncol)])

       distIRLS = a / (b + 0.0001)

       dBeta = [betaInner[i] - betaIRLS[i] for i in range(ncol)]

       gradStep = 1.0

       temp = [betaIRLS[i] + gradStep * dBeta[i] for i in range(ncol)]

       betaIRLS = list(temp)

   beta = list(betaIRLS)

   beta0 = beta0IRLS

   betaMat.append(list(beta))

   beta0List.append(beta0)

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

   for q in nzBeta:

       if not(q in nzList):

           nzList.append(q)


相关文章
|
11月前
|
机器学习/深度学习 算法 数据挖掘
【数据科学】Scikit-learn[Scikit-learn、加载数据、训练集与测试集数据、创建模型、模型拟合、拟合数据与模型、评估模型性能、模型调整]
【数据科学】Scikit-learn[Scikit-learn、加载数据、训练集与测试集数据、创建模型、模型拟合、拟合数据与模型、评估模型性能、模型调整]
|
PyTorch 算法框架/工具
EfficientNet 训练自己的分类数据集
EfficientNet 训练自己的分类数据集
EfficientNet 训练自己的分类数据集
|
算法 异构计算
ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参【2种方法,ShuffleSplit+GridSearchCV、TimeSeriesSplitGSCV】、模型评估)
ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参【2种方法,ShuffleSplit+GridSearchCV、TimeSeriesSplitGSCV】、模型评估)
|
算法 Python
ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分)
ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分)
ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分)
ML之分类预测之ElasticNet之OPLiR:在二分类数据集上训练OPLiR模型(T1)
ML之分类预测之ElasticNet之OPLiR:在二分类数据集上训练OPLiR模型(T1)
ML之分类预测之ElasticNet之OPLiR:在二分类数据集上训练OPLiR模型(T1)
|
算法 数据可视化 计算机视觉
ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测
ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测
ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练(模型保存+可视化)实现二分类预测
ML之xgboost&GBM:基于xgboost&GBM算法对HiggsBoson数据集(Kaggle竞赛)训练(两模型性能PK)实现二分类预测
ML之xgboost&GBM:基于xgboost&GBM算法对HiggsBoson数据集(Kaggle竞赛)训练(两模型性能PK)实现二分类预测
ML之xgboost&GBM:基于xgboost&GBM算法对HiggsBoson数据集(Kaggle竞赛)训练(两模型性能PK)实现二分类预测
|
机器学习/深度学习 计算机视觉 Python
ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK)
ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK)
ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK)