如果您正在寻找代码,我不熟悉 C#。我的回答将集中在理论上。
tl; dr大多数与机器学习相关的软件包都具有某种内置的逻辑回归功能。这就是我在这里推荐的。
更多详情:
我会从一个基本模型开始,然后逐步上升。听起来这是您可以使用回归模型计算出来的。
基于您的问题:“根据位置、日期(日、月)、开始时间、结束时间、等级、小时费率和小时数,我如何计算出轮班被填补的百分比?”,我了解您想要:
- 输出:班次被填满的概率
- 输入:位置、日期、开始时间、结束时间、成绩、每小时费率、小时数(这些是x的下面)
如果您熟悉逻辑回归:
log(p1−p)=β0+β1x1+β2x2+...+βkxk
该模型的输出是单个班次被填充(相对于未填充)的对数几率。请注意,这可以重写为:
p=eβ0+β1x1+β2x2+...+βkxk1−eβ0+β1x1+β2x2+...+βkxk
在哪里p是班次被填补的概率。
我会首先为每个班次拟合一个逻辑回归模型。
请注意:多项式回归会给您在 k 个可能的班次中 1 个班次被填充的概率,但我认为这不是您要寻找的。
在看到效果如何(将模型预测结果与数据中的实际百分比进行比较)之后,如果有必要,我会建立一个条件模型来考虑填补班次的概率,因为其他班次已经被填补了。不知道我会怎么做,但希望这能给你一个起点!
根据 Vikram Murthy 的回答进行编辑:
我意识到我忘了提及:在这种情况下,您的响应变量将是 0 或 1,表示是否填充了班次。因此,对于每个班次,您将有一列指示该班次是否已满。那是被预测的列。这类似于使用“虚拟变量”。
例如,如果您有两个班次,您的列将是:
loc, day, month, starttime, endtime, grade, hourlyrate, hours, shift1_f, shift2_f
所以你的数据可能看起来像这样:
loc, day, month, starttime, endtime, grade, hourlyrate, hours, shift1_f, shift2_f
A, 1, 2, 12:00, 8:00, 1, 34.25, 8, 1, 0
A, 1, 2, 12:00, 8:00, 1, 34.25, 8, 0, 1
A, 1, 2, 12:00, 8:00, 1, 34.25, 8, 1, 1
A, 1, 2, 12:00, 8:00, 1, 34.25, 8, 0, 0
在此设置中,这将表明在第一种情况下填充了班次 1,在第二种情况下填充了班次 2,在第三种情况下都进行了班次,而在最后一种情况下没有班次。
您的两个逻辑回归模型将像这样设置:
shift1_f = loc + day + month + starttime + endtime + grade + hourlyrate + hours
和
shift2_f = loc + day + month + starttime + endtime + grade + hourlyrate + hours
比例将由程序自动计算出来;没有必要自己弄清楚它们并将它们输入到我见过的任何逻辑回归应用程序中。