机器学习 -- 二元逻辑回归实例

来源:互联网 发布:淘宝上买单机游戏 编辑:程序博客网 时间:2024/05/21 15:46

二元逻辑回归可用于向量的概率预测,是一种分类算法。迭代方式可选择最小二乘法或梯度下降。
迭代之后会得到每个特征的系数。


公式(对于有N个特征的向量,其中w[i]为权):
f(x) = 1/(1+ e^[-(w0+w1*x1+w2*x2+...+wn*xn)])


例如有两个特征w1和w2(最小二乘后可得到,以及w0),即可使用公式来计算,在x1和x2的条件下,概率为多少。




实现代码 (C# with accord.net):


 
public class LogisticRegressionDemo    {        public static void Execute()        {            double[][] input =            {                new double[] { 55, 0 },                new double[] { 28, 0 },                new double[] { 65, 1 },                new double[] { 46, 0 },                new double[] { 86, 1 },                new double[] { 56, 1 },                new double[] { 85, 0 },                new double[] { 33, 0 },                new double[] { 21, 1 },                new double[] { 42, 1 },            };            double[] output =            {                0, 0, 0, 1, 1, 1, 0, 0, 0, 1            };            LogisticRegression regression = new LogisticRegression(2);            var trainer = new IterativeReweightedLeastSquares(regression);            double delta = 0;            do            {                // Perform an iteration                delta = trainer.Run(input, output);            } while (delta > 0.001);            var b1 = regression.Coefficients[1];            var b2 = regression.Coefficients[2];            var b0 = regression.Intercept;            var func = new Func<double, double, double>((x1, x2) =>            {                 var result = 1 / (1 + Math.Exp(-b0 - b1 * x1 - b2 * x2));                 return result;            });            var age = 79;            var smoking = 0;            var r = func(age, smoking);            Console.WriteLine("input x [age:{0}, smoking:{1}] is {2}", age, smoking, r);        }    }static void Main(string[] args)        {            LogisticRegressionDemo.Execute();            Console.ReadLine();        }





本例使用了accord.net framework ,是不错的.NET机器学习算法学习库。


http://accord-framework.net
1 0
原创粉丝点击