classification问题和regression问题类似,区别在于y值是一个离散值,例如binary classification,y值只取0或1。

方法来自Andrew Ng的Machine Learning课件的note1的PartII,Classification and logsitic regression.

实验表明,通过多次迭代,能够最大化Likehood,使得分类有效,实验数据为人工构建,没有实际物理意义,matrix的第一列为x0,取常数1,第二列为区分列,第三列,第四列为非区分列,最后对预测起到主导地位的参数是theta[0]和theta[1]。

  1. #include "stdio.h"
  2. #include "math.h"
  3. double matrix[6][4]={{1,47,76,24}, //include x0=1
  4. {1,46,77,23},
  5. {1,48,74,22},
  6. {1,34,76,21},
  7. {1,35,75,24},
  8. {1,34,77,25},
  9. };
  10. double result[]={1,1,1,0,0,0};
  11. double theta[]={1,1,1,1}; // include theta0
  12. double function_g(double x)
  13. {
  14. double ex = pow(2.718281828,x);
  15. return ex/(1+ex);
  16. }
  17. int main(void)
  18. {
  19. double likelyhood = 0.0;
  20. float sum=0.0;
  21. for(int j = 0;j<6;++j)
  22. {
  23. double xi = 0.0;
  24. for(int k=0;k<4;++k)
  25. {
  26. xi += matrix[j][k]*theta[k];
  27. }
  28. printf("sample %d,%f\n",j,function_g(xi));
  29. sum += result[j]*log(function_g(xi)) + (1-result[j])*log(1-function_g(xi)) ;
  30. }
  31. printf("%f\n",sum);
  32. for(int i =0 ;i<1000;++i)
  33. {
  34. double error_sum=0.0;
  35. int j=i%6;
  36. {
  37. double h = 0.0;
  38. for(int k=0;k<4;++k)
  39. {
  40. h += matrix[j][k]*theta[k];
  41. }
  42. error_sum = result[j]-function_g(h);
  43. for(int k=0;k<4;++k)
  44. {
  45. theta[k] = theta[k]+0.001*(error_sum)*matrix[j][k];
  46. }
  47. }
  48. printf("theta now:%f,%f,%f,%f\n",theta[0],theta[1],theta[2],theta[3]);
  49. float sum=0.0;
  50. for(int j = 0;j<6;++j)
  51. {
  52. double xi = 0.0;
  53. for(int k=0;k<4;++k)
  54. {
  55. xi += matrix[j][k]*theta[k];
  56. }
  57. printf("sample output now: %d,%f\n",j,function_g(xi));
  58. sum += result[j]*log(function_g(xi)) + (1-result[j])*log(1-function_g(xi)) ;
  59. }
  60. printf("maximize the log likelihood now:%f\n",sum);
  61. printf("************************************\n");
  62. }
  63. return 0;
  64. }

Logistic Regression求解classification问题的更多相关文章

  1. Logistic Regression and Classification

    分类(Classification)与回归都属于监督学习,两者的唯一区别在于,前者要预测的输出变量\(y\)只能取离散值,而后者的输出变量是连续的.这些离散的输出变量在分类问题中通常称之为标签(Lab ...

  2. 使用sklearn和caffe进行逻辑回归 | Brewing Logistic Regression then Going Deeper

    原文首发于个人博客https://kezunlin.me/post/c50b0018/,欢迎阅读! Brewing Logistic Regression then Going Deeper. Bre ...

  3. More 3D Graphics (rgl) for Classification with Local Logistic Regression and Kernel Density Estimates (from The Elements of Statistical Learning)(转)

    This post builds on a previous post, but can be read and understood independently. As part of my cou ...

  4. Some 3D Graphics (rgl) for Classification with Splines and Logistic Regression (from The Elements of Statistical Learning)(转)

    This semester I'm teaching from Hastie, Tibshirani, and Friedman's book, The Elements of Statistical ...

  5. 李宏毅机器学习笔记3:Classification、Logistic Regression

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  6. 机器学习理论基础学习3.3--- Linear classification 线性分类之logistic regression(基于经验风险最小化)

    一.逻辑回归是什么? 1.逻辑回归 逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的. logistic回归也称为逻辑回归,与线性回归这样输出 ...

  7. Logistic Regression Using Gradient Descent -- Binary Classification 代码实现

    1. 原理 Cost function Theta 2. Python # -*- coding:utf8 -*- import numpy as np import matplotlib.pyplo ...

  8. Classification week2: logistic regression classifier 笔记

    华盛顿大学 machine learning: Classification 笔记. linear classifier 线性分类器 多项式: Logistic regression & 概率 ...

  9. Classification and logistic regression

    logistic 回归 1.问题: 在上面讨论回归问题时.讨论的结果都是连续类型.但假设要求做分类呢?即讨论结果为离散型的值. 2.解答: 假设: 当中: g(z)的图形例如以下: 由此可知:当hθ( ...

随机推荐

  1. 《Java多线程编程核心技术》推荐

    写这篇博客主要是给猿友们推荐一本书<Java多线程编程核心技术>. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点 ...

  2. Udemy上免费的angualr2视频教程分享

    福利大分享 本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/52592518 一晚上听了10几节课程,整体感觉很不错的 ...

  3. Querying CRM data with LINQ

    http://www.powerxrm.com/querying-crm-data-with-linq/ 如果不喜欢看SDK中的示例,这篇里面讲的非常详细,值得一看.

  4. Cassandra 3.x官方文档(1)---关于Cassandra

    写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...

  5. J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())

    J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())   当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法. ...

  6. ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念

    ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 由于工作事 ...

  7. Linux & Windows 计时函数

    直接上代码: #if defined(_WIN32) && defined(_MSC_VER) #include <windows.h> double abtic() { ...

  8. java中的interface接口

    接口:java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法. java接口的特点如下: 1.java接口不能被实例化 2.java接口中声明的成员自动被设置为public,所以不存在pr ...

  9. 财务模块多组织,GL, SLA, SOB, COA, BSV, CCID, LE 概念的简单介绍

     GL=  General Ledger 指的是Oracle 的总帐系统. application_id = 101. 在uk似乎居然还有不同的解释(In the UK, it was refer ...

  10. 01基于配置文件方式的SpringMVC,三种HandlerMapping,三种控制器

     1 添加Spring MVC所需的jar包. 2 创建一个以下项目结构的springmvc项目 3 web.xml的配置如下: <?xmlversion="1.0"en ...