-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpredict_admission.html
More file actions
134 lines (132 loc) · 228 KB
/
predict_admission.html
File metadata and controls
134 lines (132 loc) · 228 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="generator" content="MATLAB R2018a"><meta http-equiv="X-UA-Compatible" content="IE=edge,IE=9,chrome=1"><title>Logistic Regression to predict student admission </title><style type="text/css">
* {margin: 0; padding: 0;}
body {text-align: start; line-height: 17.2339992523193px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-style: normal; font-size: 14px; font-weight: normal; text-decoration: none; white-space: normal; }
h1, h2 {font-weight: normal;}
.content { padding: 30px; }
.S0 { margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S1 { text-align: left; line-height: 26.3999996185303px; min-height: 24px; white-space: pre-wrap; color: rgb(213, 80, 0); font-family: Helvetica, Arial, sans-serif; font-size: 22px; white-space: pre-wrap; margin-left: 4px; margin-top: 3px; margin-bottom: 15px; margin-right: 10px; }
.S2 { min-height: 0px; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S3 { text-align: left; line-height: 20.576000213623px; min-height: 20px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-weight: bold; white-space: pre-wrap; margin-left: 4px; margin-top: 15px; margin-bottom: 9px; margin-right: 10px; }
.S4 { text-align: left; line-height: 21px; min-height: 17px; white-space: pre-wrap; font-family: Helvetica, Arial, sans-serif; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; }
.S5 { margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; }
.S6 { min-height: 18px; white-space: nowrap; white-space: nowrap; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S7 { min-height: 0px; white-space: pre; white-space: pre; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S8 { color: rgb(160, 32, 240); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S9 { color: rgb(34, 139, 34); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S10 { color: rgb(64, 64, 64); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S11 { text-align: center; line-height: 21px; min-height: 17px; white-space: pre-wrap; font-family: Helvetica, Arial, sans-serif; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; }
.S12 { font-style: italic; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S13 { font-weight: bold; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S14 { text-align: left; line-height: 21px; min-height: 17px; white-space: pre-wrap; font-family: Helvetica, Arial, sans-serif; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; }
.S15 { font-family: Helvetica, Arial, sans-serif; margin-left: 0px; margin-top: 10px; margin-bottom: 20px; margin-right: 0px; }
.S16 { text-align: left; line-height: 21px; white-space: pre-wrap; white-space: pre-wrap; margin-left: 56px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S17 { margin-left: 3px; margin-top: 10px; margin-bottom: 4px; margin-right: 3px; }
.S18 { text-align: left; line-height: 20.576000213623px; min-height: 20px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-weight: bold; white-space: pre-wrap; margin-left: 4px; margin-top: 3px; margin-bottom: 9px; margin-right: 10px; }
.S19 { color: rgb(0, 0, 255); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.CodeBlock {margin: 10px 0 10px 0; background-color: #F7F7F7;}
.CodeBlock+.paragraphNode {margin-top: 10px;}
.lineNode {padding-left: 10px; border-left: 1px solid #E9E9E9; border-right: 1px solid #E9E9E9;}
.inlineWrapper:first-child .lineNode,.inlineWrapper.outputs+.inlineWrapper .lineNode {padding-top: 5px; border-top: 1px solid #E9E9E9;}
.inlineWrapper:last-child .lineNode,.inlineWrapper.outputs .lineNode {padding-bottom: 5px; border-bottom: 1px solid #E9E9E9;}
.lineNode .textBox {white-space: pre;}
.outputGroup {margin: 2px 0 2px 0; padding: 2px 2px 2px 4px;}
.outputRegion {}
.outputParagraph {color: rgba(64, 64, 64, 1); padding: 10px 0 6px 17px; background: white; overflow-x: hidden;}
.inlineWrapper:last-child .outputParagraph {border-bottom-left-radius: 4px; border-bottom-right-radius: 4px;}
.outputParagraph:empty {margin: 0;}
.inlineElement .symbolicElement {margin-top: 1px; margin-bottom: 1px;}
.embeddedOutputsSymbolicElement .MathEquation {margin-top: 4px; margin-bottom: 4px;}
.embeddedOutputsSymbolicElement .MathEquation.displaySymbolicElement {margin-left: 15px;}
.embeddedOutputsSymbolicElement .MathEquation.inlineSymbolicElement {}
.embeddedOutputsSymbolicElement {overflow-x: auto; overflow-y: auto;}
.embeddedOutputsSymbolicElement { overflow: initial !important;}
.embeddedOutputsSymbolicElement { width: 100% !important; }
.embeddedOutputsTextElement,.embeddedOutputsVariableStringElement {white-space: pre; word-wrap: initial; min-height: 18px; max-height: 250px; overflow: auto;}
.textElement,.rtcDataTipElement .textElement {padding-top: 3px;}
.embeddedOutputsTextElement.inlineElement,.embeddedOutputsVariableStringElement.inlineElement {}
.inlineElement .textElement {}
.embeddedOutputsTextElement,.embeddedOutputsVariableStringElement { max-height: none !important; overflow: initial !important;}
.veSpecifier {}
.veContainer {}
.veSpecifierBox {height: 400px; width: 500px;}
.veSpecifier .veTable {padding-top: 3px; padding-bottom: 4px;}
.veSpecifierBox .veSpecifier .veContainer {position: relative; width: 100%; height: 370px;}
.veSpecifierBox .dijitDialogPaneContent {width: 97% !important; height: 88% !important;}
.veSpecifier .veTable .rowHeadersWrapper {padding-bottom: 0;}
.veSpecifier .veTable .scroller .variableEditorRenderers {padding-right: 3px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none;}
.veSpecifier .veTable .topHeaderWrapper,.veSpecifier .veTable .bottomRowHeaderWrapper {visibility: hidden; z-index: 0;}
.veMetaSummary {font-style: italic;}
.veSpecifier .veTable .scroller {overflow: hidden;}
.veSpecifier .veTable:hover .scroller {overflow: auto;}
.veSpecifier .veVariableName,.veSpecifier .veDimensionFont {font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px;}
.veSpecifier .veVariableName {padding-top: 2px;}
.veSpecifier .veDimensionFont {font-style: italic; color: #9A9A9A;}
.veSpecifier .scroller::-webkit-scrollbar-track {background-color: white;}
.veSpecifier .scroller::-webkit-scrollbar-corner {background-color: white;}
.veSpecifier .veTable .topRowHeaderWrapper {border: none; background-color: #F8F9FA;}
.veSpecifier .mw_type_ListBase.showCellBorders,.veSpecifier .veTable .topHeaderWrapper,.veSpecifier .veTable .bottomRowHeaderWrapper,.veSpecifier .veTable .verticalScrollSpacer,.veSpecifier .veTable .horizontalScrollSpacer {border: none;}
.veSpecifier .veTable .dataScrollerNode {border: 1px solid #BFBFBF;}
.veSpecifier .veTable .columnHeaderNode,.veSpecifier .veTable .rowHeaderNode,.veSpecifier .veTable .dataBody {font-family: Arial; font-size: 13px;}
.veSpecifier .veTable .columnHeaderNode,.veSpecifier .veTable .rowHeaderNode {color: #7F7F7F;}
.veSpecifier .veTable .dataBody {color: #000000;}
.veSpecifier .veTable .columnHeaderNode .cell .drag,.veSpecifier .veTable .columnHeaderNode .cell .header,.veSpecifier .veTable .topHeaderWrapper,.veSpecifier .veTable .bottomRowHeaderWrapper {background-color: #F8F9FA;}
.veSpecifier .veTable .columnHeaderNode .cell .dragBorder {border-right: 1px solid #F8F9FA;}
.veSpecifier .veTable .rowHeaderNode .cell {padding-top: 3px; text-align: center; border-bottom: 1px solid #F8F9FA;}
.veSpecifier .veTable .dataBody .cell .plainText {text-align: right;}
.veSpecifier .veTable .dataBody .row .cell {border-bottom: 1px solid #E9E9E9; border-right: 1px solid #E9E9E9;}
.embeddedOutputsVariableElement {white-space: pre-wrap; word-wrap: break-word; min-height: 18px; max-height: 250px; overflow: auto;}
.variableElement {}
.embeddedOutputsVariableElement.inlineElement {}
.inlineElement .variableElement {}
.variableNameElement {margin-bottom: 3px; display: inline-block;}
.variableValue { width: 100% !important; }
.embeddedOutputsMatrixElement,.eoOutputWrapper .matrixElement {min-height: 18px; box-sizing: border-box;}
.embeddedOutputsMatrixElement .matrixElement,.eoOutputWrapper .matrixElement,.rtcDataTipElement .matrixElement {position: relative;}
.matrixElement .variableValue,.rtcDataTipElement .matrixElement .variableValue {white-space: pre; display: inline-block; vertical-align: top; overflow: hidden;}
.embeddedOutputsMatrixElement.inlineElement {}
.embeddedOutputsMatrixElement.inlineElement .topHeaderWrapper {display: none;}
.embeddedOutputsMatrixElement.inlineElement .veTable .body {padding-top: 0 !important; max-height: 100px;}
.inlineElement .matrixElement {max-height: 300px;}
.embeddedOutputsMatrixElement .matrixElement .valueContainer,.eoOutputWrapper .matrixElement .valueContainer,.rtcDataTipElement .matrixElement .valueContainer {white-space: nowrap; margin-bottom: 3px;}
.embeddedOutputsMatrixElement .matrixElement .valueContainer .horizontalEllipsis.hide,.embeddedOutputsMatrixElement .matrixElement .verticalEllipsis.hide,.eoOutputWrapper .matrixElement .valueContainer .horizontalEllipsis.hide,.eoOutputWrapper .matrixElement .verticalEllipsis.hide,.rtcDataTipElement .matrixElement .valueContainer .horizontalEllipsis.hide,.rtcDataTipElement .matrixElement .verticalEllipsis.hide {display: none;}
.embeddedOutputsVariableMatrixElement .matrixElement .valueContainer.hideEllipses .verticalEllipsis, .embeddedOutputsVariableMatrixElement .matrixElement .valueContainer.hideEllipses .horizontalEllipsis {display:none;}
.embeddedOutputsMatrixElement .matrixElement .valueContainer .horizontalEllipsis,.eoOutputWrapper .matrixElement .valueContainer .horizontalEllipsis {margin-bottom: -3px;}
.eoOutputWrapper .embeddedOutputsVariableMatrixElement .matrixElement .valueContainer {cursor: default !important;}
.matrixElement { max-height: none !important; }
.embeddedOutputsVariableTableElement .ClientViewDiv table tr {height: 22px; white-space: nowrap;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr td,.embeddedOutputsVariableTableElement .ClientViewDiv table tr th {min-width : 75px; max-width : 75px; background-color:white; text-overflow: ellipsis; font-family: 'Arial', sans-serif; font-size: 12px; overflow : hidden;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tbody tr th {width: 34px; max-width: 100px;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr span {text-overflow: ellipsis; padding: 3px;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr th {color: rgba(0,0,0,0.5); padding: 3px; font-size: 9px;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr th:first-child {min-width: 28px; max-width: 250px;}
.dijitTooltipDialog .dijitTooltipContainer .dijitTooltipContents .alertPlugin-alertMessage {min-width: 12px; max-width: 400px; max-height: 300px; overflow: auto;}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar {width: 11px; height: 11px;}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-track {background-color: rgba(0, 0, 0, 0);}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-corner {background-color: rgba(0, 0, 0, 0);}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-thumb {border-radius: 7px; background-color: rgba(0, 0, 0, 0.1); border: 2px solid rgba(0, 0, 0, 0); background-clip: padding-box;}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-thumb:hover {background-color: rgba(0, 0, 0, 0.2);}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-thumb {background-color: rgba(0, 0, 0, 0);}
.dijitTooltipDialog .alertPlugin-alertMessage:hover::-webkit-scrollbar-thumb {background-color: rgba(0, 0, 0, 0.1);}
.dijitTooltipDialog .alertPlugin-alertMessage:hover::-webkit-scrollbar-thumb:hover {background-color: rgba(0, 0, 0, 0.2);}
.alertPlugin-alertLine {position: absolute; display: initial; width: 40px; text-align: right; cursor: text;}
.alertPlugin-onTextLine {visibility: hidden;}
.alertPlugin-hasTooltip .alertPlugin-warningImg,.alertPlugin-hasTooltip .alertPlugin-errorImg {cursor: pointer;}
.alertPlugin-alertLine .alertPlugin-warningElement,.alertPlugin-alertLine .alertPlugin-errorElement {display: inline-block; margin-right: 4px;}
.alertPlugin-isStale {-webkit-filter: opacity(0.4) grayscale(80%); filter: opacity(0.4) grayscale(80%);}
.diagnosticMessage-wrapper {font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px;}
.diagnosticMessage-wrapper.diagnosticMessage-warningType {color: rgb(255,100,0);}
.diagnosticMessage-wrapper.diagnosticMessage-warningType a {color: rgb(255,100,0); text-decoration: underline;}
.diagnosticMessage-wrapper.diagnosticMessage-errorType {color: rgb(230,0,0);}
.diagnosticMessage-wrapper.diagnosticMessage-errorType a {color: rgb(230,0,0); text-decoration: underline;}
.diagnosticMessage-wrapper .diagnosticMessage-messagePart {white-space: pre-wrap;}
.diagnosticMessage-wrapper .diagnosticMessage-stackPart {white-space: pre;}
.embeddedOutputsWarningElement{min-height: 18px; max-height: 250px; overflow: auto;}
.embeddedOutputsWarningElement.inlineElement {}
.embeddedOutputsErrorElement {min-height: 18px; max-height: 250px; overflow: auto;}
.embeddedOutputsErrorElement.inlineElement {}
.variableNameElement .headerElement {color: rgb(179, 179, 179); font-style: italic;}
.variableNameElement .headerElement .headerDataType {color: rgb(147, 176, 230);}
.matrixElement .horizontalEllipsis,.rtcDataTipElement .matrixElement .horizontalEllipsis {display: inline-block; margin-top: 3px; width: 30px; height: 12px; background-repeat: no-repeat; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAJCAYAAADO1CeCAAAAJUlEQVR42mP4//8/A70xw0i29BUDFPxnAEtTW37wWDqakIa4pQDvOOG89lHX2gAAAABJRU5ErkJggg==");}
.matrixElement .verticalEllipsis,.textElement .verticalEllipsis,.rtcDataTipElement .matrixElement .verticalEllipsis,.rtcDataTipElement .textElement .verticalEllipsis {margin-left: 35px; width: 12px; height: 30px; background-repeat: no-repeat; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAZCAYAAAAIcL+IAAAALklEQVR42mP4//8/AzGYgWyFMECMwv8QddRS+P//KyimlmcGUOFoOI6GI/UVAgDnd8Dd4+NCwgAAAABJRU5ErkJggg==");}
</style></head><body><div class = "content"><div class = 'SectionBlock containment active'><h1 class = "S1"><span class = "S2"><span class="S0">Logistic Regression to predict student admission </span></span></h1><h2 class = "S3"><span class = "S2"><span class="S0">Problem statement</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Suppose that you are the administrator of a university department and you want to determine each applicant’s chance of admission based on their results on two exams. You have historical data from previous applicants that you can use as a training set for logistic regression. For each training example, you have the applicant’s scores on two exams and the admissions decision. Your task is to build a classification model that estimates an applicant’s probability of admission based the scores from those two exams</span></span><span class = "S2"><span class="S0"> </span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Load Data</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">The file applicant_data.txt contains the dataset for our logistic regression problem. The first two columns contains the exam scores and the third column contains a label which indicateds admission verdict. The dataset is loaded from the data file into the variables X and y:</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">data = load(</span><span class="S8">'applicant_data.txt'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">X = data(:, [1, 2]); y = data(:, 3);</span></span></div></div></div><h2 class = "S3"><span class = "S2"><span class="S0">Plot Data</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Before starting to implement any learning algorithm, it is always good to visualize the data if possible. We start the exercise by first plotting the data to understand the problem we are working with.</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Implementaion of plotData is at the end of document</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">plotData(X, y);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Put some labels </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">hold </span><span class="S8">on</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Labels and Legend</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">xlabel(</span><span class="S8">'Exam 1 score'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">ylabel(</span><span class="S8">'Exam 2 score'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Specified in plot order</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">legend(</span><span class="S8">'Admitted'</span><span class="S0">, </span><span class="S8">'Not admitted'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">title(</span><span class="S8">'Scatter plot of training data'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">hold </span><span class="S8">off</span><span class="S0">;</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="6D8AE4F0" data-scroll-top="null" data-scroll-left="null" data-testid="output_0" style="width: 937px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_0" widgetid="uniqName_196_0" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_2" widgetid="uniqName_196_2" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAYAAAAv7h+nAAAgAElEQVR4AezBC3TW1Zno/+/8iAEhpWBEi9KuZ1twYyuKUouOBPMqtmiREi4CUqpClXod9YzjVEsh00WniGbVMYUZKYaoVbmFEAS5RF4IIOoRRYuYDSz3g4QiFYqEa0Ly5n9+nvX2ZPiDgxWRwP58ooYgCIIgCIImJiIIgiAIgqCJiQiCIAiCIGhiIoIgCIIgCJqYiCAIgiAIgiYmIgiCIAiCoImJCIIgCIIgaGIigiAIgiAImpiIIAiCIAiCJiYiCIIgCIKgiYkIgiAIgiBoYiKCIAiCIAiamIggCIIgCIImJiIIgv/mqaeeIpFI0KZNG8444wwGDhzIokWLONY2b97M5s2bSdu8eTObN2/mqzBs2DD69+/PgQMH+Dw2b97M5s2b+SI+/vhjbrzxRtq0acO3v/1tVq5cyeFs3ryZzZs380UNGzaM/v37c+DAAY7WsGHD6N+/PwcOHOB4GzlyJP379+fdd9/laG3evJnNmzcTBCeziCAI/mb06NGMGjWKpUuXkkqlqK2tZdasWfzwhz9kxowZHCsTJ06kU6dOOOeITZw4kU6dOuGc46swd+5cZs+eTV1dHUdr4sSJdOrUCeccX8S///u/M2PGDL7+9a/TrVs3WrRowaEmTpxIp06dcM7xRc2dO5fZs2dTV1fH0Zo7dy6zZ8+mrq6O423BggXMnj2bv/zlLxyNiRMn0qlTJ5xzBMHJLCIIgr8ZP348sbfffpvq6mr27NnDHXfcQWzcuHEcK7Nnz6ampoa02bNnU1NTQ1Mye/Zsampq+KK2bt1K7Le//S3Tp0+nW7duHGr27NnU1NRwLCxcuJCKigpatGjB0Vq4cCEVFRW0aNGCE93s2bOpqakhCE52EUEQfCqVSpFKpYh98MEHpD3yyCM899xz/OpXvyJWV1dHfn4+559/Pq1bt6Zr165MmTKFtMrKSvr160fr1q3Jysqia9euFBUVkZafn8+aNWuIjR49mt69e7NmzRpio0ePpqCggNiePXu49957Ofvss2nTpg1Dhw5l06ZNpPXp04eBAwcyZcoUzjjjDBKJBIfTr18/Bg4cyLJly7j00ktp3bo1ffv2ZdOmTXyWp556iu9973u0bt2a888/n/z8fGpra4nl5+ezZs0aYqNHj6agoIAjeeqpp/je975H69atOf/888nPz6e2tpbY6NGjqaioIDZhwgQGDhzIofLz81mzZg2x0aNHU1BQQKxPnz4MHDiQKVOmcMYZZ5BIJIhVVlbSr18/WrduTVZWFl27dqWoqIi0xx9/nPHjx1NXV0ds4MCB9OvXj9WrV5NIJGjdujVXXHEFK1euJO3xxx9n/Pjx1NXVERs4cCD9+vVj9erVJBIJWrduzRVXXMHKlStJq66u5u6776ZNmzZ8+9vfZuLEiYwbN44+ffqwZs0aDmfnzp3ceeedtGnThm9/+9sUFhZyqMrKSvr160fr1q3Jysqia9euFBUVEcvPz2fNmjXERo8eTUFBAbHKykr69etH69atycrKomvXrhQVFREETVlEEASfiqKIwYMHExswYABnn302w4YNY+nSpeTl5dG/f39iI0eOZOzYsdTU1PCDH/yADz/8kJ/97Gc8++yz1NXVcc011zBnzhyuvvpqrr/+etatW8eIESNYvXo1scrKSnbv3k3svffe44MPPmD37t3E3nvvPT744ANiN9xwA08++SQiQq9evXjxxRe5/PLL2bFjB7F58+ZRVlbGqFGjqK2tRUQ4nAULFlBWVsZ1111Hhw4d+Na3vsXcuXPp2bMn+/bt43DGjBnDqFGjWLt2Lbm5uezatYuxY8fSt29fYpWVlezevZvYe++9xwcffMDhjBkzhlGjRrF27Vpyc3PZtWsXY8eOpW/fvsScc+zcuZOYqrJ27VoOVVlZye7du4m99957fPDBB8TmzZtHWVkZo0aNora2FhGhrq6Oa665hjlz5nD11Vdz/fXXs27dOkaMGMHq1auJLVq0iHnz5lFXV0ds0aJFvPTSS/Tu3Zt27dpx3nnn8dprrzFw4EDSFi1axLx586irqyO2aNEiXnrpJXr37k27du0477zzeO211xg4cCBpN954I7///e9p27Ytl19+Ofn5+UyYMIF58+axfft2DufGG29k0qRJtG3blssvv5xf//rX/PnPfyatrq6Oa665hjlz5nD11Vdz/fXXs27dOkaMGMHq1auprKxk9+7dxN577z0++OAD6urquOaaa5gzZw5XX301119/PevWrWPEiBGsXr2aIGiqIoIg+Jv/+q//4q677uK0007jL3/5C88//zw/+clP6NChA4sWLWLTpk0888wznH766bz11lvMnDmTZ555hh/+8Ids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SiQSGGNIJBKICCKCiJAmIogIIoKIEASHSiaTeO9JJpMEEBEEQdDEiQgigoggIqSJCCKCiCAinCi893jv8d4jIqR57/He471HRAiCxkQEEUFECCAiCILg/0gmk3jvSSaTNEXee7z3eO8REdK893jv8d4jIgRBcHKICIIg+D9EBBFBRAi+OFXFGIMxBmMMqkpMVTHGYIzBGIOqEgTB5xcRBEEQfClUFVVFVWlMVVFVVJVkMon3nmQySRAERy8iCILgJJNMJvHek0wm+aqICCKCiCAipIkIIoKIICL/H3vwA6/1fD/+/9FbhBmhwoyeT2tSR0oU+Xeud19SxjYNpZWu80GbJmbzZxjXOfbni+IrfGyMnesYYmt8qE9T+vS+Lir/jlTy5/Kn17OaFumPELWd0+9ztt912/nss/nXOV3nz/N+R0QQEUQE59ynF+Gcc22MiCAiiAilFEIghEAIARGhKIRACIEQAiKCc+6zi3DOOeeca2UinHPOOedamQjnnHPNLkkSQggkSYJzbutFOOeca3YigoggIjjntl6Ec84551wrE+Gcc84518pEOOecc861MhHOOeecc61MhHPOOedcKxPhnHPOOdfKRDjnnHPOtTIRzjm3DZgZZoZzzjWFCOec2wbiOEZVUVWcc25rRTjnnHPOtTIRzjnnnHOtTIRzzjUDM0NVUVVUFTOjgZmhqqgqqoqZ4Zxzn1WEc841EzPDzDAzGjMzzAwzwznnPo+INszMmD17Ni+//DL/aMWKFcyePZtCoYBzrumJCCKCiCAiFIkIIoKIICI459znEdFGVVdX8+1vf5uZM2dy0UUX8eMf/5iiadOmMXLkSGbOnMl5553H5MmTcc41vRACIQRCCIgIRSEEQgiEEBARnHPus4pog+rr65k0aRLZbJaJEyfy29/+loceeoiXX36Zuro6MpkMNTU1TJw4kalTp1JdXY2Z4ZxzzrnWIaKN2rJlCzvuuCMNdtppJ6IoYvPmzTz++ON07tyZHj160GCPPfbguOOOY+7cuXycnj170rNnT3r27Mktt9yCc84550onog2KoohMJsP48eOZPHkyo0ePZsSIEfTt25f169dz0EEH0dguu+zCq6++yscpFAoUCgUKhQITJkzA/U9mRjabpaqqCuf+mSRJCCGQJAnOObe1Itqo2tpadt55Z7p27Urnzp1544032Lhx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ICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICJuJCCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICJuJCCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICH/605/43e/giCPghBPg0EOhXz/o1Qs2boQZM+CJJ9YgIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIm4kIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIm4kIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIvTt25fWKEMrlMlk6NGjBxs2bOD++++nurqa//iP/6BLly6sW7eOnj17srV27dqxZMkSPs3kyZNRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVV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" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div></div><h2 class = "S3"><span class = "S2"><span class="S0">Sigmoid function</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">The logistic regression hypothesis is defined as:</span></span></div><div class = "S11"><span style="vertical-align:-5px"><img src="data:image/png;base64,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" width="90" height="20" /></span></div><div class = "S4"><span class = "S2"><span class="S0">where function </span></span><span class = "S2"><span class="S12">g </span></span><span class = "S2"><span class="S0">is the sigmoid function. The sigmoid function is defined as:</span></span></div><div class = "S11"><span style="vertical-align:-16px"><img src="data:image/png;base64,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" width="88.5" height="36" /></span></div><div class = "S4"><span class = "S2"><span class="S0">For large positive values of </span></span><span class = "S2"><span class="S0">x</span></span><span class = "S2"><span class="S0">, the sigmoid should be close to 1, while for large negative values, the sigmoid should be close to 0. for 0 it should be exactly 0.5. Implementation of sigmoid function is given at the end of document.</span></span></div><div class = "S4"><span class = "S2"><span class="S13">Cost function and gradient</span></span></div><div class = "S4"><span class = "S2"><span class="S0">The cost function in logistic regression is</span></span></div><div class = "S11"><span style="vertical-align:-17px"><img src="data:image/png;base64,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" width="375.5" height="46" /></span></div><div class = "S4"><span class = "S2"><span class="S0">and the gradient of the cost is a vector of the same length as </span></span><span style="font-family: STIXGeneral, STIXGeneral-webfont, serif; font-style: italic; font-weight: normal;">θ</span><span class = "S2"><span class="S12"> </span></span><span class = "S2"><span class="S0">where the </span></span><span style="vertical-align:-5px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAmCAYAAABDClKtAAACYElEQVRYR+3XW6hMURzH8c9JbgkJzyJSiHekFBJRiojyQCi8UO65RC4ppCSJIhGFKA8ieSIlxaNcipQHlxcPQi79taa2ac85e6Y9M6ec9TJ7Zu9Z67v+6/f//f+7QzccHd2QSQ9U0VP5ryPVH2PwHN+6ilizIzUUm7AKj7EMn9oBNSot+jp9Dscl/GwX1AAcw3k8SFARrYvpuqmRmobT+IiVSSt9sREHMLXVUP1wBGvT7rfjMGan3+bgBN7hOj5nIrUXKzADb7EH9/E7q7NGhb4Ip/AhRapyVDsRC+dFajJO4jgG4kzKxOV4XwZUzNEnTfQ9M2FnUL2wNG0kgrE7HfcsPCoLKi+zO4OK57NCz3v275yNHl8tq2kLVGxiEEZiXBLx7YLHV3qkemMupiBEPiKBhB7utgsqe1yVI3qCJXiZubkmZeVq3MIEPMWFHPMsTVORcYewIS20Dl8yUFFiIuUj/cMywmDDvyLTYuzHTYzHFkxPnhZVoFKW6hb6sAQTC4VpHuyquDZyv97sm4irqQ2p1lMj6+f+p16oxbiMPD21BSoceR+21dBTW6AGp3q1sJl6qtfRW6KneqHmp3R+htBW9NtNGUWFXqnq4TdhhNX+VCpcUaisnsKJwwT/aczKpCoKNRZXMAlN86fKxopCzcQdPEyN2psyI1M9VxGoeGZH8qioUVuR7TZL56sFFW8mP/ALQ3A2NfsLcK90iqoJ86Dm4RyupW4gKvqN9H0zvrYDKtqSowksjmoXRmM9XjQbqJZ5xmt2pHz0RvEK9Sr1SHHdklFE6C0ByS7SA1U05H8AYWKQJ8ifDAAAAAAASUVORK5CYII=" width="18.5" height="19" /></span><span class = "S2"><span class="S0"> element (for </span></span><span class = "S2"><span class="S12">j </span></span><span class = "S2"><span class="S0">= 0, 1,...,</span></span><span class = "S2"><span class="S12">n</span></span><span class = "S2"><span class="S0">) is defined as follows:</span></span></div><div class = "S11"><span style="vertical-align:-17px"><img src="data:image/png;base64,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" width="219" height="46" /></span></div><div class = "S11"><span class = "S2"><span class="S0"></span></span></div><div class = "S4"><span class = "S2"><span class="S0">Let's compute initial cost and gradient</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Setup the data matrix appropriately, and add ones for the intercept term</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">[m, n] = size(X);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Add intercept term to x and X_test</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">X = [ones(m, 1) X];</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Initialize fitting parameters</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">initial_theta = zeros(n + 1, 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Compute and display initial cost and gradient</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">[cost, grad] = costFunction(initial_theta, X, y);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%Implementation of costFunction that computes cost and gradient is at the end of the document.</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">'Cost at initial theta (zeros): %f\n'</span><span class="S0">, cost);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="73A42372" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="18" data-testid="output_1" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Cost at initial theta (zeros): 0.693147</div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">'Gradient at initial theta (zeros): \n'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="90F2F88E" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="18" data-testid="output_2" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Gradient at initial theta (zeros): </div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">' %f \n'</span><span class="S0">, grad);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="E0DBA3D1" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="45" data-testid="output_3" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> -0.100000 <br> -12.009217 <br> -11.262842 </div></div></div></div></div><div class = "S14"><span class = "S2"><span class="S13">Learning parameters using builtin function</span></span></div><div class = "S4"><span class = "S2"><span class="S0">Octave/MATLAB’s </span></span><span class = "S2"><span class="S0">fminunc </span></span><span class = "S2"><span class="S0">is an optimization solver that finds the minimum of an unconstrained</span></span><span class = "S2"><span class="S0"> </span></span><span class = "S2"><span class="S0">function. For logistic regression, we want to optimize the cost function </span></span><span class = "S2"><span class="S12">J</span></span><span class = "S2"><span class="S0">(</span></span><span class = "S2"><span class="S12">θ</span></span><span class = "S2"><span class="S0">) with parameters </span></span><span class = "S2"><span class="S12">θ</span></span><span class = "S2"><span class="S0">.</span></span></div><div class = "S4"><span class = "S2"><span class="S0">Concretely, we are going to use fminunc </span></span><span class = "S2"><span class="S0">to find the best parameters </span></span><span class = "S2"><span class="S12">θ </span></span><span class = "S2"><span class="S0">for the logistic regression cost function, given a fixed dataset (of </span></span><span class = "S2"><span class="S12">X </span></span><span class = "S2"><span class="S0">and </span></span><span class = "S2"><span class="S12">y </span></span><span class = "S2"><span class="S0">values) we will pass to </span></span><span class = "S2"><span class="S0">fminunc </span></span><span class = "S2"><span class="S0">the following inputs:</span></span><span class = "S2"><span class="S0"> </span></span></div><ul class = "S15"><li class = "S16"><span class = "S0"><span class="S0">The initial values of the parameters we are trying to optimize.</span></span></li><li class = "S16"><span class = "S0"><span class="S0">A function that, when given the training set and a particular </span></span><span class = "S0"><span class="S12">θ</span></span><span class = "S0"><span class="S0">, computes the logistic regression cost and gradient with respect to </span></span><span class = "S0"><span class="S12">θ </span></span><span class = "S0"><span class="S0">for the dataset (</span></span><span class = "S0"><span class="S12">X</span></span><span class = "S0"><span class="S0">, </span></span><span class = "S0"><span class="S12">y</span></span><span class = "S0"><span class="S0">).</span></span></li></ul><div class = "S4"><span class = "S2"><span class="S0">We already implemented everything needed to use the builtin function so let's use that</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Set options for fminunc</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">options = optimset(</span><span class="S8">'GradObj'</span><span class="S0">, </span><span class="S8">'on'</span><span class="S0">, </span><span class="S8">'MaxIter'</span><span class="S0">, 400);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Run fminunc to obtain the optimal theta</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% This function will return theta and the cost </span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DB281F44" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="87" data-testid="output_4" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Local minimum found.<br><br>Optimization completed because the size of the gradient is less than<br>the default value of the optimality tolerance.<br><br><stopping criteria details></div></div></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Print theta to screen</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">'Cost at theta found by fminunc: %f\n'</span><span class="S0">, cost);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A7010861" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="18" data-testid="output_5" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Cost at theta found by fminunc: 0.203498</div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">'theta: \n'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="BA11937A" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="18" data-testid="output_6" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">theta: </div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">' %f \n'</span><span class="S0">, theta);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="15613C55" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="45" data-testid="output_7" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> -25.161343 <br> 0.206232 <br> 0.201472 </div></div></div></div></div><div class = "S14"><span class = "S2"><span class="S0">In this code snippet, we first defined the options to be used with </span></span><span class = "S2"><span class="S0">fminunc</span></span><span class = "S2"><span class="S0">. Specifically, we set the GradObj </span></span><span class = "S2"><span class="S0">option to </span></span><span class = "S2"><span class="S0">on</span></span><span class = "S2"><span class="S0">, which tells </span></span><span class = "S2"><span class="S0">fminunc </span></span><span class = "S2"><span class="S0">that our function returns both the cost and the gradient. This allows fminunc </span></span><span class = "S2"><span class="S0">to use the gradient when minimizing the function. Furthermore, we set the MaxIter </span></span><span class = "S2"><span class="S0">option to 400, so that </span></span><span class = "S2"><span class="S0">fminunc </span></span><span class = "S2"><span class="S0">will run for at most 400 steps before it terminates. To specify the actual function we are minimizing, we use a "short-hand" for specifying functions with the </span></span><span style="vertical-align:-5px"><img src="data:image/png;base64,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" width="172.5" height="19" /></span><span class = "S2"><span class="S0">. This creates a function, with argument t</span></span><span class = "S2"><span class="S0">, which calls your costFunction. This allows us to wrap the costFunction </span></span><span class = "S2"><span class="S0">for use with </span></span><span class = "S2"><span class="S0">fminunc</span></span><span class = "S2"><span class="S0">.</span></span></div><div class = "S4"><span class = "S2"><span class="S0">Using costFunction fminunc </span></span><span class = "S2"><span class="S0">will converge on the right optimization parameters and return the final values of the cost and </span></span><span class = "S2"><span class="S12">θ</span></span><span class = "S2"><span class="S0">. By using </span></span><span class = "S2"><span class="S0">fminunc</span></span><span class = "S2"><span class="S0">, we did not have to write any loops ourself, or set a learning rate like you did for gradient descent. This is all done by fminunc</span></span><span class = "S2"><span class="S0">: we only needed to provide a function calculating the cost and the gradient.</span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Plot decision boundary</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Using final </span></span><span class = "S2"><span class="S12">θ </span></span><span class = "S2"><span class="S0">value let's plot the decision boundary on the training data.</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Plot Boundary</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">plotDecisionBoundary(theta, X, y);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Implementation is given at the end of document</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Put some labels </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">hold </span><span class="S8">on</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Labels and Legend</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">xlabel(</span><span class="S8">'Exam 1 score'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">ylabel(</span><span class="S8">'Exam 2 score'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Specified in plot order</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">legend(</span><span class="S8">'Admitted'</span><span class="S0">, </span><span class="S8">'Not admitted'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">hold </span><span class="S8">off</span><span class="S0">;</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="19B6D6FF" data-scroll-top="null" data-scroll-left="null" data-testid="output_8" style="width: 937px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_3" widgetid="uniqName_196_3" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_5" widgetid="uniqName_196_5" src="data:image/png;base64,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IZAkqSBVVVXR29tLb28vvb299Pb20tvby6pVq/i2OHz4ME6nk5/85CcYjUYkSZK+KYEkSf+WIpEIK1asYHx8nGler5eenh6y/va3v9HV1cWll17K/Pnzuf7663nllVeYtmLFCkKhELfccgvz58+ntbWViYkJXn75ZRobGzGbzaxZs4b/ytDQECMjI2zZsoV58+bx3xkcHOTHP/4x8+fP58orr+Spp55i2pEjR1izZg2XX345NTU13H///Rw4cICsw4cP88tf/pLLLruMmpoaVq5cyfj4OLlWrFhBLBZj8eLFLFmyhCyXy0VDQwM1NTWsXLmSiYkJJEn6dhBIklSQDh48SDweJx6PE4/HicfjxONxJicnyVq0aBFHjhyhq6uLrB07drBu3Tquu+46VFWlvb2dL7/8Ep/Px5YtW6ipqeGhhx5icnKSrDfffBOHw8FNN91EX18fR48eZdmyZbz++us88sgj2O12fv/73/P666/zr1x11VVs3ryZuXPn8t+ZmJigo6ODlpYWhoaG6O7u5umnnyYQCJB19913s3PnTtavX08gEODLL79k+fLlZN1xxx3s3r0bj8fDH/7wB8444wxaWlr4+OOPmfbmm2+yevVqbr31VpYuXUpnZyfhcJjHH3+cP/3pT5hMJiwWC1NTU0iSdOoJJEkqSJFIhLa2Ntra2mhra6OtrY22tjZ8Ph/T1q5dSyqVwu1209XVxV133UVNTQ2HDx+mqamJhx9+mPPPP5+zzz6b7u5ussbHx5l22223sWTJEhYuXMiyZcv47LPPePzxx1m4cCHXX389F110EW+99Rb/ikaj4ZtKpVJoNBoWLlxISUkJV1xxBRs3bmTevHmMjY0RiUR4/PHHueSSSzj77LN59NFHmTdvHolEgrfffpu+vj5qamqoqKhgzZo1lJWV8eyzz5JryZIltLe3s2jRIv785z+zbt06ampqmD17Ng8//DAGg4HNmzcjSdKpJ5AkqSAtXbqURCJBIpEgkUiQSCRIJBKsWrWKabNmzcLhcLBhwwbKy8u55557yDr99NPp6urivffe47nnnqO7uxuLxcKJzjrrLKbNnDmTGTNmUFJSwrQzzjgDRVH4/2HRokVUVlbS2NhIa2sr69evZ8aMGcydO5cPPviA0047jYqKCqYZjUacTifJZJLTTz+d2bNnk+uiiy5i//795JozZw5Zo6OjZG3YsIGuri66urro6uriiy++4K9//SuSJJ16AkmSCpIQguLiYoqLiykuLqa4uJji4mI0Gg25Pv/8c7LS6TRHjhwh68svv+T6669n1apV7N27l/POO48HH3yQU0mj0RAIBPjNb37DOeecwx//+Eeuu+46Nm7cyPHjxxFCcDLHjh1Do9HwTWg0GrL+/ve/c9ppp2E2mzGbzZjNZsxmM3fddRctLS1IknTqCSRJ+reVSqX41a9+xdq1aykqKmL16tVkhUIhkskkr7zyCi6Xi+XLl1NeXs6pND4+zmuvvcYVV1zB6tWrGRwc5NZbb2XDhg2UlZXx1VdfcfDgQaYpisLy5cuZOXMmhw4d4vDhw+Tav38/3/nOdzgZg8HAsWPHaGho4MYbb+TGG2/kxhtvpLS0lJkzZyJJ0qknkCSpIH3yySeEw2HC4TDhcJhwOEw4HCYcDpPJZFBVlfvuu4/LLruMH/7whzidTl566SUGBwfRaDRkHTx4kKzDhw/zi1/8gixFUTgVDh48yAMPPMCuXbvIUlWV/fv3M2fOHBYsWMC5557L6tWrOX78OFlPPvkko6OjXHfddZSVldHb28vRo0fJ2rx5M2+99RZtbW2cTENDA+Xl5fT09HDkyBGyBgcHsdlspNNpJEk69QSSJBWknTt3YrPZsNls2Gw2bDYbNpsNm83Ge++9x69//Ws+/vhjHnnkEbLmzZvHnXfeSU9PD9dccw0Ni8PlXAAAAbZJREFUDQ0sXbqUSy+9lKuuuopLL72UOXPm8MEHH3AqLFiwgJUrV3Lbbbdx8cUXU1VVxYEDB1i7di1Z/f39pFIp5s+fT1VVFdu2baOvr4+sjRs38uGHHzJ//nyqqqp46qmn8Hg8XHjhhZyMEAKfz8fU1BRms5mLL76Y+++/n4ceeojFixcjSdKpJ5AkqeD4fD6SySTJZJJkMkkymSSZTJJMJkkmkyxcuJB7772XnTt3YjQamfbAAw8Qi8XI8nq97Nmzh23bthGNRmlvb+fVV1/lzjvvJCuZTNLY2Mi0a665hpGREXL19/fT29vLN9HX18djjz3Gf6Wzs5O9e/cSDAaJx+Ns2bKFWbNmkVVeXs6WLVuIx+O88cYbDA4Ocskll5B1zjnnsHXrVkZGRgiHw4TDYZqbm8mVTCZpaGhgWnl5OS+99BLvvPMOwWCQkZERbr/9diRJ+nYQSJIk/QvFxcUYDAa+TYQQlJWVodVqORmtVovRaORktFoter2e/4ni4mLKysoQQiBJ0reHQJIkSZIkKc8IJEmSJEmS8oxAkiRJkiQpzwgkSZIkSZLyjECSJEmSJCnP/F+w70QbahZ49QAAAABJRU5ErkJggg==" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div></div><h2 class = "S3"><span class = "S2"><span class="S0">Evaluating logistic regression</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">After learning the parameters, we can use the model to predict whether a particular student will be admitted.</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">prob = sigmoid([1 45 85] * theta);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">'For a student with scores 45 and 85, we predict an admission probability of %f\n\n'</span><span class="S0">, prob);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A2A9CD9C" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="18" data-testid="output_9" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">For a student with scores 45 and 85, we predict an admission probability of 0.776291</div></div></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Another way to evaluate the quality of the parameters we have found is to see how well the learned model predicts on our training set.</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Compute accuracy on our training set</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">p = predict(theta, X);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%Implementation is given at the end of document</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">'Train Accuracy: %f\n'</span><span class="S0">, mean(double(p == y)) * 100);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="8F546511" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="18" data-testid="output_10" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Train Accuracy: 89.000000</div></div></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S6 lineNode"><span class = "S7"><span class="S0">fprintf(</span><span class="S8">'\nProgram paused. Press enter to continue.\n'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="F58F0611" data-scroll-top="null" data-scroll-left="null" data-width="907" data-height="18" data-testid="output_11" style="max-height: 261px; width: 937px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Program paused. Press enter to continue.</div></div></div></div></div></div><div class = "S0"></div><div class = 'SectionBlock containment'><h2 class = "S18"><span class = "S2"><span class="S0">Implementation of functions</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Implementation of plotData</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">function </span><span class="S0">plotData(X, y)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%PLOTDATA Plots the data points X and y into a new figure </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% PLOTDATA(x,y) plots the data points with + for the positive examples</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% and o for the negative examples. X is assumed to be a Mx2 matrix.</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Create New Figure</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">figure; hold </span><span class="S8">on</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">pos = find(y==1); neg = find(y == 0);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Plot Examples</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">plot(X(pos, 1), X(pos, 2), </span><span class="S8">'k+'</span><span class="S0">,</span><span class="S8">'LineWidth'</span><span class="S0">, 2,</span><span class="S8">'MarkerSize'</span><span class="S0">, 7);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">plot(X(neg, 1), X(neg, 2), </span><span class="S8">'ko'</span><span class="S0">, </span><span class="S8">'MarkerFaceColor'</span><span class="S0">, </span><span class="S8">'y'</span><span class="S0">,</span><span class="S8">'MarkerSize'</span><span class="S0">, 7);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% =========================================================================</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">hold </span><span class="S8">off</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of sigmoid function</span></span></div><div class = "S4"><span class = "S2"><span class="S0">The code works with vectors and matrices. For a matrix, function performs the sigmoid function on every element</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">function </span><span class="S0">g = sigmoid(z)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%SIGMOID Compute sigmoid function</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% g = SIGMOID(z) computes the sigmoid of z.</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">g = zeros(size(z));</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">for </span><span class="S0">row_index = 1:size(z,1)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">for </span><span class="S0">col_index = 1: size(z,2)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> val = z(row_index, col_index);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> g(row_index, col_index) = 1/(1 + exp(-val));</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0"> Implementation of costFunction</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">function </span><span class="S0">[J, grad] = costFunction(theta, X, y)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%COSTFUNCTION Compute cost and gradient for logistic regression</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% parameter for logistic regression and the gradient of the cost</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% w.r.t. to the parameters.</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Initialize some useful values</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">m = length(y); </span><span class="S9">% number of training examples</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">J = 0;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">for </span><span class="S0">index = 1:m</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> y_i = y(index);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> x_i = X(index,:);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> h_theta_i = sigmoid(x_i * theta);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> J = J + ( -y_i * log(h_theta_i) - (1-y_i) * log(1-h_theta_i ) );</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">J = J/m;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">grad = zeros(size(theta));</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">for </span><span class="S0">j = 1:size(theta)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> sum = 0;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">for </span><span class="S0">i = 1:m</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> x_i = X(i,:);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> predicted = 1/ (1 + exp (- (x_i*theta)));</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> y_i = y(i);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> sum = sum + (predicted - y_i)* X(i,j);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> grad(j) = sum/m;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Note: grad should have the same dimensions as theta</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of plotDecisionBoundary</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">function </span><span class="S0">plotDecisionBoundary(theta, X, y)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%PLOTDECISIONBOUNDARY Plots the data points X and y into a new figure with</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%the decision boundary defined by theta</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% PLOTDECISIONBOUNDARY(theta, X,y) plots the data points with + for the </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% positive examples and o for the negative examples. X is assumed to be </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% a either </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% 1) Mx3 matrix, where the first column is an all-ones column for the </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% intercept.</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% 2) MxN, N>3 matrix, where the first column is all-ones</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% Plot Data</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">plotData(X(:,2:3), y);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">hold </span><span class="S8">on</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">if </span><span class="S0">size(X, 2) <= 3</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Only need 2 points to define a line, so choose two endpoints</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> plot_x = [min(X(:,2))-2, max(X(:,2))+2];</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Calculate the decision boundary line</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Plot, and adjust axes for better viewing</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> plot(plot_x, plot_y);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Legend, specific for the exercise</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> legend(</span><span class="S8">'Admitted'</span><span class="S0">, </span><span class="S8">'Not admitted'</span><span class="S0">, </span><span class="S8">'Decision Boundary'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> axis([30, 100, 30, 100]);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">else</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Here is the grid range</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> u = linspace(-1, 1.5, 50);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> v = linspace(-1, 1.5, 50);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> z = zeros(length(u), length(v));</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Evaluate z = theta*x over the grid</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">for </span><span class="S0">i = 1:length(u)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">for </span><span class="S0">j = 1:length(v)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> z(i,j) = mapFeature(u(i), v(j))*theta;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> z = z'; </span><span class="S9">% important to transpose z before calling contour</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Plot z = 0</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S9">% Notice you need to specify the range [0, 0]</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> contour(u, v, z, [0, 0], </span><span class="S8">'LineWidth'</span><span class="S0">, 2);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">hold </span><span class="S8">off</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of predict</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">function </span><span class="S0">p = predict(theta, X)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%PREDICT Predict whether the label is 0 or 1 using learned logistic </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">%regression parameters theta</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% p = PREDICT(theta, X) computes the predictions for X using a </span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% threshold at 0.5 (i.e., if sigmoid(theta'*x) >= 0.5, predict 1)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">m = size(X, 1); </span><span class="S9">% Number of training examples</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0">p = zeros(m, 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">for </span><span class="S0">index = 1:m</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> x_i = X(index,:);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> h_theta_i = sigmoid(x_i * theta);</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">if</span><span class="S0">(h_theta_i<.5)</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> p(index) = 0;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">else</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> p(index) = 1;</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"> </span><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S9">% =========================================================================</span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S6 lineNode"><span class = "S7"><span class="S19">end</span></span></div></div></div></div></div><br><!-- <br>##### SOURCE BEGIN #####<br>%% Logistic Regression to predict student admission <br>%% Problem statement<br>% Suppose that you are the administrator of a university department and you <br>% want to determine each applicant’s chance of admission based on their results <br>% on two exams. You have historical data from previous applicants that you can <br>% use as a training set for logistic regression. For each training example, you <br>% have the applicant’s scores on two exams and the admissions decision. Your task <br>% is to build a classification model that estimates an applicant’s probability <br>% of admission based the scores from those two exams <br>%% Load Data<br>% The file applicant_data.txt contains the dataset for our logistic regression <br>% problem. The first two columns contains the exam scores and the third column <br>% contains a label which indicateds admission verdict. The dataset is loaded from <br>% the data file into the variables X and y:<br><br>data = load('applicant_data.txt');<br>X = data(:, [1, 2]); y = data(:, 3);<br>%% Plot Data<br>% Before starting to implement any learning algorithm, it is always good to <br>% visualize the data if possible. We start the exercise by first plotting the <br>% data to understand the problem we are working with.<br><br>% Implementaion of plotData is at the end of document<br>plotData(X, y);<br><br>% Put some labels <br>hold on;<br>% Labels and Legend<br>xlabel('Exam 1 score');<br>ylabel('Exam 2 score');<br><br>% Specified in plot order<br>legend('Admitted', 'Not admitted');<br><br>title('Scatter plot of training data');<br>hold off;<br>%% Sigmoid function<br>% The logistic regression hypothesis is defined as:<br>% <br>% $$h\left(\theta \right)=g\left(\theta^T x\right)$$<br>% <br>% where function _g _is the sigmoid function. The sigmoid function is defined <br>% as:<br>% <br>% $$g\left(z\right)=\frac{1}{1+e^{-z} }$$<br>% <br>% For large positive values of x, the sigmoid should be close to 1, while <br>% for large negative values, the sigmoid should be close to 0. for 0 it should <br>% be exactly 0.5. Implementation of sigmoid function is given at the end of document.<br>% <br>% *Cost function and gradient*<br>% <br>% The cost function in logistic regression is<br>% <br>% $$J\left(\theta \right)=\frac{1}{m}\sum_{i=1}^m \left\lbrack -y^{\left(i\right)} <br>% \mathrm{log}\left(h_{\theta } \left(x^{\left(i\right)} \right)\right)-\left(1-y^{\left(i\right)} <br>% \right)\mathrm{log}\left(1-h_{\theta } \left(x^{\left(i\right)} \right)\right)\right\rbrack$$<br>% <br>% and the gradient of the cost is a vector of the same length as $\theta$_ <br>% _where the $j^{\mathrm{th}}$ element (for _j _= 0, 1,...,_n_) is defined as <br>% follows:<br>% <br>% $$\frac{\partial }{\partial \theta_j }J\left(\theta \right)=\frac{1}{m}\sum_{i=1}^m <br>% \left(h_{\theta } \left(x^{\left(i\right)} \right)-y^{\left(i\right)} \right)x_j^{\left(i\right)}$$<br>% <br>% <br>% <br>% Let's compute initial cost and gradient<br><br>% Setup the data matrix appropriately, and add ones for the intercept term<br>[m, n] = size(X);<br><br>% Add intercept term to x and X_test<br>X = [ones(m, 1) X];<br><br>% Initialize fitting parameters<br>initial_theta = zeros(n + 1, 1);<br><br>% Compute and display initial cost and gradient<br>[cost, grad] = costFunction(initial_theta, X, y);<br>%Implementation of costFunction that computes cost and gradient is at the end of the document.<br><br>fprintf('Cost at initial theta (zeros): %f\n', cost);<br>fprintf('Gradient at initial theta (zeros): \n');<br>fprintf(' %f \n', grad);<br>%% <br>% *Learning parameters using builtin function*<br>% <br>% Octave/MATLAB’s fminunc is an optimization solver that finds the minimum <br>% of an unconstrained function. For logistic regression, we want to optimize the <br>% cost function _J_(_θ_) with parameters _θ_.<br>% <br>% Concretely, we are going to use fminunc to find the best parameters _θ <br>% _for the logistic regression cost function, given a fixed dataset (of _X _and <br>% _y _values) we will pass to fminunc the following inputs: <br>% <br>% * The initial values of the parameters we are trying to optimize.<br>% * A function that, when given the training set and a particular _θ_, computes <br>% the logistic regression cost and gradient with respect to _θ _for the dataset <br>% (_X_, _y_).<br>% <br>% We already implemented everything needed to use the builtin function so <br>% let's use that<br><br>% Set options for fminunc<br>options = optimset('GradObj', 'on', 'MaxIter', 400);<br><br>% Run fminunc to obtain the optimal theta<br>% This function will return theta and the cost <br>[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);<br><br>% Print theta to screen<br>fprintf('Cost at theta found by fminunc: %f\n', cost);<br>fprintf('theta: \n');<br>fprintf(' %f \n', theta);<br>%% <br>% In this code snippet, we first defined the options to be used with fminunc. <br>% Specifically, we set the GradObj option to on, which tells fminunc that our <br>% function returns both the cost and the gradient. This allows fminunc to use <br>% the gradient when minimizing the function. Furthermore, we set the MaxIter option <br>% to 400, so that fminunc will run for at most 400 steps before it terminates. <br>% To specify the actual function we are minimizing, we use a "short-hand" for <br>% specifying functions with the $@\left(t\right)\;\left(\mathrm{costFunction}\left(t,X,y\right)\right)$. <br>% This creates a function, with argument t, which calls your costFunction. This <br>% allows us to wrap the costFunction for use with fminunc.<br>% <br>% Using costFunction fminunc will converge on the right optimization parameters <br>% and return the final values of the cost and _θ_. By using fminunc, we did not <br>% have to write any loops ourself, or set a learning rate like you did for gradient <br>% descent. This is all done by fminunc: we only needed to provide a function calculating <br>% the cost and the gradient.<br>%% Plot decision boundary<br>% Using final _θ _value let's plot the decision boundary on the training data.<br><br>% Plot Boundary<br>plotDecisionBoundary(theta, X, y);<br>% Implementation is given at the end of document<br><br>% Put some labels <br>hold on;<br>% Labels and Legend<br>xlabel('Exam 1 score');<br>ylabel('Exam 2 score');<br><br>% Specified in plot order<br>legend('Admitted', 'Not admitted');<br>hold off;<br>%% *Evaluating logistic regression*<br>% After learning the parameters, we can use the model to predict whether a particular <br>% student will be admitted.<br><br>prob = sigmoid([1 45 85] * theta);<br>fprintf('For a student with scores 45 and 85, we predict an admission probability of %f\n\n', prob);<br>%% <br>% Another way to evaluate the quality of the parameters we have found is <br>% to see how well the learned model predicts on our training set.<br><br>% Compute accuracy on our training set<br>p = predict(theta, X);<br>%Implementation is given at the end of document<br><br>fprintf('Train Accuracy: %f\n', mean(double(p == y)) * 100);<br><br>fprintf('\nProgram paused. Press enter to continue.\n');<br>%% Implementation of functions<br>% Implementation of plotData<br>%%<br>function plotData(X, y)<br>%PLOTDATA Plots the data points X and y into a new figure <br>% PLOTDATA(x,y) plots the data points with + for the positive examples<br>% and o for the negative examples. X is assumed to be a Mx2 matrix.<br><br>% Create New Figure<br>figure; hold on;<br><br>pos = find(y==1); neg = find(y == 0);<br>% Plot Examples<br>plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2,'MarkerSize', 7);<br>plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y','MarkerSize', 7);<br>% =========================================================================<br>hold off;<br><br>end<br>%% <br>% Implementation of sigmoid function<br>% <br>% The code works with vectors and matrices. For a matrix, function performs <br>% the sigmoid function on every element<br><br>function g = sigmoid(z)<br>%SIGMOID Compute sigmoid function<br>% g = SIGMOID(z) computes the sigmoid of z.<br><br>g = zeros(size(z));<br>for row_index = 1:size(z,1)<br> for col_index = 1: size(z,2)<br> val = z(row_index, col_index);<br> g(row_index, col_index) = 1/(1 + exp(-val));<br> end<br>end<br>end<br>%% <br>% Implementation of costFunction<br><br>function [J, grad] = costFunction(theta, X, y)<br>%COSTFUNCTION Compute cost and gradient for logistic regression<br>% J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the<br>% parameter for logistic regression and the gradient of the cost<br>% w.r.t. to the parameters.<br><br>% Initialize some useful values<br>m = length(y); % number of training examples<br><br>J = 0;<br><br>for index = 1:m<br> y_i = y(index);<br> x_i = X(index,:);<br> h_theta_i = sigmoid(x_i * theta);<br> J = J + ( -y_i * log(h_theta_i) - (1-y_i) * log(1-h_theta_i ) );<br>end<br><br>J = J/m;<br><br>grad = zeros(size(theta));<br><br>for j = 1:size(theta)<br> sum = 0;<br> for i = 1:m<br> x_i = X(i,:);<br> predicted = 1/ (1 + exp (- (x_i*theta)));<br> y_i = y(i);<br> sum = sum + (predicted - y_i)* X(i,j);<br> end<br> grad(j) = sum/m;<br>end<br>% Note: grad should have the same dimensions as theta<br><br>end<br>%% <br>% Implementation of plotDecisionBoundary<br><br>function plotDecisionBoundary(theta, X, y)<br>%PLOTDECISIONBOUNDARY Plots the data points X and y into a new figure with<br>%the decision boundary defined by theta<br>% PLOTDECISIONBOUNDARY(theta, X,y) plots the data points with + for the <br>% positive examples and o for the negative examples. X is assumed to be <br>% a either <br>% 1) Mx3 matrix, where the first column is an all-ones column for the <br>% intercept.<br>% 2) MxN, N>3 matrix, where the first column is all-ones<br><br>% Plot Data<br>plotData(X(:,2:3), y);<br>hold on<br><br>if size(X, 2) <= 3<br> % Only need 2 points to define a line, so choose two endpoints<br> plot_x = [min(X(:,2))-2, max(X(:,2))+2];<br><br> % Calculate the decision boundary line<br> plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));<br><br> % Plot, and adjust axes for better viewing<br> plot(plot_x, plot_y);<br> <br> % Legend, specific for the exercise<br> legend('Admitted', 'Not admitted', 'Decision Boundary');<br> axis([30, 100, 30, 100]);<br>else<br> % Here is the grid range<br> u = linspace(-1, 1.5, 50);<br> v = linspace(-1, 1.5, 50);<br><br> z = zeros(length(u), length(v));<br> % Evaluate z = theta*x over the grid<br> for i = 1:length(u)<br> for j = 1:length(v)<br> z(i,j) = mapFeature(u(i), v(j))*theta;<br> end<br> end<br> z = z'; % important to transpose z before calling contour<br><br> % Plot z = 0<br> % Notice you need to specify the range [0, 0]<br> contour(u, v, z, [0, 0], 'LineWidth', 2);<br>end<br>hold off<br><br>end<br>%% <br>% Implementation of predict<br><br>function p = predict(theta, X)<br>%PREDICT Predict whether the label is 0 or 1 using learned logistic <br>%regression parameters theta<br>% p = PREDICT(theta, X) computes the predictions for X using a <br>% threshold at 0.5 (i.e., if sigmoid(theta'*x) >= 0.5, predict 1)<br><br>m = size(X, 1); % Number of training examples<br><br>p = zeros(m, 1);<br><br>for index = 1:m<br> x_i = X(index,:);<br> h_theta_i = sigmoid(x_i * theta);<br> if(h_theta_i<.5)<br> p(index) = 0;<br> else<br> p(index) = 1;<br> end<br>end<br>% =========================================================================<br><br>end<br>##### SOURCE END #####<br>--></body></html>