diff --git a/Octave/2-Logistic Regression/ex2.pdf b/Octave/2-Logistic Regression/ex2.pdf new file mode 100644 index 0000000..39c31da Binary files /dev/null and b/Octave/2-Logistic Regression/ex2.pdf differ diff --git a/Octave/2-Logistic Regression/ex2/costFunction.m b/Octave/2-Logistic Regression/ex2/costFunction.m new file mode 100644 index 0000000..04ffc56 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/costFunction.m @@ -0,0 +1,35 @@ +function [J, grad] = costFunction(theta, X, y) +%COSTFUNCTION Compute cost and gradient for logistic regression +% J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the +% parameter for logistic regression and the gradient of the cost +% w.r.t. to the parameters. + +% Initialize some useful values +m = length(y); % number of training examples + +% You need to return the following variables correctly +J = 0; +grad = zeros(size(theta)); + +% ====================== YOUR CODE HERE ====================== +% Instructions: Compute the cost of a particular choice of theta. +% You should set J to the cost. +% Compute the partial derivatives and set grad to the partial +% derivatives of the cost w.r.t. each parameter in theta +% +% Note: grad should have the same dimensions as theta +% + + + +J = (-1 / m) * sum(y.*log(sigmoid(X * theta)) + (1 - y).*log(1 - sigmoid(X * theta))); +temp = sigmoid (X * theta); +error = temp - y; +grad = (1 / m) * (X' * error); + + + + +% ============================================================= + +end diff --git a/Octave/2-Logistic Regression/ex2/costFunctionReg.m b/Octave/2-Logistic Regression/ex2/costFunctionReg.m new file mode 100644 index 0000000..ddcf0cb --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/costFunctionReg.m @@ -0,0 +1,32 @@ +function [J, grad] = costFunctionReg(theta, X, y, lambda) +%COSTFUNCTIONREG Compute cost and gradient for logistic regression with regularization +% J = COSTFUNCTIONREG(theta, X, y, lambda) computes the cost of using +% theta as the parameter for regularized logistic regression and the +% gradient of the cost w.r.t. to the parameters. + +% Initialize some useful values +m = length(y); % number of training examples + +% You need to return the following variables correctly +J = 0; +grad = zeros(size(theta)); + +% ====================== YOUR CODE HERE ====================== +% Instructions: Compute the cost of a particular choice of theta. +% You should set J to the cost. +% Compute the partial derivatives and set grad to the partial +% derivatives of the cost w.r.t. each parameter in theta + +tempTheta = theta; +tempTheta(1) = 0; + +J = (-1 / m) * sum(y.*log(sigmoid(X * theta)) + (1 - y).*log(1 - sigmoid(X * theta))) + (lambda / (2 * m))*sum(tempTheta.^2); +temp = sigmoid (X * theta); +error = temp - y; +grad = (1 / m) * (X' * error) + (lambda/m)*tempTheta; + + + +% ============================================================= + +end diff --git a/Octave/2-Logistic Regression/ex2/ex2.m b/Octave/2-Logistic Regression/ex2/ex2.m new file mode 100644 index 0000000..794a2c9 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/ex2.m @@ -0,0 +1,135 @@ +%% Machine Learning Online Class - Exercise 2: Logistic Regression +% +% Instructions +% ------------ +% +% This file contains code that helps you get started on the logistic +% regression exercise. You will need to complete the following functions +% in this exericse: +% +% sigmoid.m +% costFunction.m +% predict.m +% costFunctionReg.m +% +% For this exercise, you will not need to change any code in this file, +% or any other files other than those mentioned above. +% + +%% Initialization +clear ; close all; clc + +%% Load Data +% The first two columns contains the exam scores and the third column +% contains the label. + +data = load('ex2data1.txt'); +X = data(:, [1, 2]); +y = data(:, 3); + +%% ==================== Part 1: Plotting ==================== +% We start the exercise by first plotting the data to understand the +% the problem we are working with. + +fprintf(['Plotting data with + indicating (y = 1) examples and o ' ... + 'indicating (y = 0) examples.\n']); + +plotData(X, y); + +% Put some labels +hold on; +% Labels and Legend +xlabel('Exam 1 score') +ylabel('Exam 2 score') + +% Specified in plot order +legend('Admitted', 'Not admitted') +hold off; + +fprintf('\nProgram paused. Press enter to continue.\n'); +pause; + + +%% ============ Part 2: Compute Cost and Gradient ============ +% In this part of the exercise, you will implement the cost and gradient +% for logistic regression. You neeed to complete the code in +% costFunction.m + +% Setup the data matrix appropriately, and add ones for the intercept term +[m, n] = size(X); + +% Add intercept term to x and X_test +X = [ones(m, 1) X]; + +% Initialize fitting parameters +initial_theta = zeros(n + 1, 1); +% Compute and display initial cost and gradient +[cost, grad] = costFunction(initial_theta, X, y); + +fprintf('Cost at initial theta (zeros): %f\n', cost); +fprintf('Gradient at initial theta (zeros): \n'); +fprintf(' %f \n', grad); + +fprintf('\nProgram paused. Press enter to continue.\n'); +pause; + + +%% ============= Part 3: Optimizing using fminunc ============= +% In this exercise, you will use a built-in function (fminunc) to find the +% optimal parameters theta. + +% Set options for fminunc +options = optimset('GradObj', 'on', 'MaxIter', 400); + +% Run fminunc to obtain the optimal theta +% This function will return theta and the cost +[theta, cost] = ... + fminunc(@(t)(costFunction(t, X, y)), initial_theta, options); + +% Print theta to screen +fprintf('Cost at theta found by fminunc: %f\n', cost); +fprintf('theta: \n'); +fprintf(' %f \n', theta); + +% Plot Boundary +plotDecisionBoundary(theta, X, y); + +% Put some labels +hold on; +% Labels and Legend +xlabel('Exam 1 score') +ylabel('Exam 2 score') + +% Specified in plot order +legend('Admitted', 'Not admitted') +hold off; + +fprintf('\nProgram paused. Press enter to continue.\n'); +pause; + +%% ============== Part 4: Predict and Accuracies ============== +% After learning the parameters, you'll like to use it to predict the outcomes +% on unseen data. In this part, you will use the logistic regression model +% to predict the probability that a student with score 45 on exam 1 and +% score 85 on exam 2 will be admitted. +% +% Furthermore, you will compute the training and test set accuracies of +% our model. +% +% Your task is to complete the code in predict.m + +% Predict probability for a student with score 45 on exam 1 +% and score 85 on exam 2 + +prob = sigmoid([1 45 85] * theta); +fprintf(['For a student with scores 45 and 85, we predict an admission ' ... + 'probability of %f\n\n'], prob); + +% Compute accuracy on our training set +p = predict(theta, X); + +fprintf('Train Accuracy: %f\n', mean(double(p == y)) * 100); + +fprintf('\nProgram paused. Press enter to continue.\n'); +pause; + diff --git a/Octave/2-Logistic Regression/ex2/ex2_reg.m b/Octave/2-Logistic Regression/ex2/ex2_reg.m new file mode 100644 index 0000000..d83dffe --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/ex2_reg.m @@ -0,0 +1,116 @@ +%% Machine Learning Online Class - Exercise 2: Logistic Regression +% +% Instructions +% ------------ +% +% This file contains code that helps you get started on the second part +% of the exercise which covers regularization with logistic regression. +% +% You will need to complete the following functions in this exericse: +% +% sigmoid.m +% costFunction.m +% predict.m +% costFunctionReg.m +% +% For this exercise, you will not need to change any code in this file, +% or any other files other than those mentioned above. +% + +%% Initialization +clear ; close all; clc + +%% Load Data +% The first two columns contains the X values and the third column +% contains the label (y). + +data = load('ex2data2.txt'); +X = data(:, [1, 2]); y = data(:, 3); + +plotData(X, y); + +% Put some labels +hold on; + +% Labels and Legend +xlabel('Microchip Test 1') +ylabel('Microchip Test 2') + +% Specified in plot order +legend('y = 1', 'y = 0') +hold off; + + +%% =========== Part 1: Regularized Logistic Regression ============ +% In this part, you are given a dataset with data points that are not +% linearly separable. However, you would still like to use logistic +% regression to classify the data points. +% +% To do so, you introduce more features to use -- in particular, you add +% polynomial features to our data matrix (similar to polynomial +% regression). +% + +% Add Polynomial Features + +% Note that mapFeature also adds a column of ones for us, so the intercept +% term is handled +X = mapFeature(X(:,1), X(:,2)); + +% Initialize fitting parameters +initial_theta = zeros(size(X, 2), 1); + +% Set regularization parameter lambda to 1 +lambda = 1; + +% Compute and display initial cost and gradient for regularized logistic +% regression +[cost, grad] = costFunctionReg(initial_theta, X, y, lambda); + +fprintf('Cost at initial theta (zeros): %f\n', cost); + +fprintf('\nProgram paused. Press enter to continue.\n'); +pause; + +%% ============= Part 2: Regularization and Accuracies ============= +% Optional Exercise: +% In this part, you will get to try different values of lambda and +% see how regularization affects the decision coundart +% +% Try the following values of lambda (0, 1, 10, 100). +% +% How does the decision boundary change when you vary lambda? How does +% the training set accuracy vary? +% + +% Initialize fitting parameters +initial_theta = zeros(size(X, 2), 1); + +% Set regularization parameter lambda to 1 (you should vary this) +lambda = 1; + +% Set Options +options = optimset('GradObj', 'on', 'MaxIter', 400); + +% Optimize +[theta, J, exit_flag] = ... + fminunc(@(t)(costFunctionReg(t, X, y, lambda)), initial_theta, options); + +% Plot Boundary +plotDecisionBoundary(theta, X, y); +hold on; +title(sprintf('lambda = %g', lambda)) + +% Labels and Legend +xlabel('Microchip Test 1') +ylabel('Microchip Test 2') + +legend('y = 1', 'y = 0', 'Decision boundary') +hold off; + +% Compute accuracy on our training set +p = predict(theta, X); + +fprintf('Train Accuracy: %f\n', mean(double(p == y)) * 100); + + diff --git a/Octave/2-Logistic Regression/ex2/ex2data1.txt b/Octave/2-Logistic Regression/ex2/ex2data1.txt new file mode 100644 index 0000000..3a5f952 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/ex2data1.txt @@ -0,0 +1,100 @@ +34.62365962451697,78.0246928153624,0 +30.28671076822607,43.89499752400101,0 +35.84740876993872,72.90219802708364,0 +60.18259938620976,86.30855209546826,1 +79.0327360507101,75.3443764369103,1 +45.08327747668339,56.3163717815305,0 +61.10666453684766,96.51142588489624,1 +75.02474556738889,46.55401354116538,1 +76.09878670226257,87.42056971926803,1 +84.43281996120035,43.53339331072109,1 +95.86155507093572,38.22527805795094,0 +75.01365838958247,30.60326323428011,0 +82.30705337399482,76.48196330235604,1 +69.36458875970939,97.71869196188608,1 +39.53833914367223,76.03681085115882,0 +53.9710521485623,89.20735013750205,1 +69.07014406283025,52.74046973016765,1 +67.94685547711617,46.67857410673128,0 +70.66150955499435,92.92713789364831,1 +76.97878372747498,47.57596364975532,1 +67.37202754570876,42.83843832029179,0 +89.67677575072079,65.79936592745237,1 +50.534788289883,48.85581152764205,0 +34.21206097786789,44.20952859866288,0 +77.9240914545704,68.9723599933059,1 +62.27101367004632,69.95445795447587,1 +80.1901807509566,44.82162893218353,1 +93.114388797442,38.80067033713209,0 +61.83020602312595,50.25610789244621,0 +38.78580379679423,64.99568095539578,0 +61.379289447425,72.80788731317097,1 +85.40451939411645,57.05198397627122,1 +52.10797973193984,63.12762376881715,0 +52.04540476831827,69.43286012045222,1 +40.23689373545111,71.16774802184875,0 +54.63510555424817,52.21388588061123,0 +33.91550010906887,98.86943574220611,0 +64.17698887494485,80.90806058670817,1 +74.78925295941542,41.57341522824434,0 +34.1836400264419,75.2377203360134,0 +83.90239366249155,56.30804621605327,1 +51.54772026906181,46.85629026349976,0 +94.44336776917852,65.56892160559052,1 +82.36875375713919,40.61825515970618,0 +51.04775177128865,45.82270145776001,0 +62.22267576120188,52.06099194836679,0 +77.19303492601364,70.45820000180959,1 +97.77159928000232,86.7278223300282,1 +62.07306379667647,96.76882412413983,1 +91.56497449807442,88.69629254546599,1 +79.94481794066932,74.16311935043758,1 +99.2725269292572,60.99903099844988,1 +90.54671411399852,43.39060180650027,1 +34.52451385320009,60.39634245837173,0 +50.2864961189907,49.80453881323059,0 +49.58667721632031,59.80895099453265,0 +97.64563396007767,68.86157272420604,1 +32.57720016809309,95.59854761387875,0 +74.24869136721598,69.82457122657193,1 +71.79646205863379,78.45356224515052,1 +75.3956114656803,85.75993667331619,1 +35.28611281526193,47.02051394723416,0 +56.25381749711624,39.26147251058019,0 +30.05882244669796,49.59297386723685,0 +44.66826172480893,66.45008614558913,0 +66.56089447242954,41.09209807936973,0 +40.45755098375164,97.53518548909936,1 +49.07256321908844,51.88321182073966,0 +80.27957401466998,92.11606081344084,1 +66.74671856944039,60.99139402740988,1 +32.72283304060323,43.30717306430063,0 +64.0393204150601,78.03168802018232,1 +72.34649422579923,96.22759296761404,1 +60.45788573918959,73.09499809758037,1 +58.84095621726802,75.85844831279042,1 +99.82785779692128,72.36925193383885,1 +47.26426910848174,88.47586499559782,1 +50.45815980285988,75.80985952982456,1 +60.45555629271532,42.50840943572217,0 +82.22666157785568,42.71987853716458,0 +88.9138964166533,69.80378889835472,1 +94.83450672430196,45.69430680250754,1 +67.31925746917527,66.58935317747915,1 +57.23870631569862,59.51428198012956,1 +80.36675600171273,90.96014789746954,1 +68.46852178591112,85.59430710452014,1 +42.0754545384731,78.84478600148043,0 +75.47770200533905,90.42453899753964,1 +78.63542434898018,96.64742716885644,1 +52.34800398794107,60.76950525602592,0 +94.09433112516793,77.15910509073893,1 +90.44855097096364,87.50879176484702,1 +55.48216114069585,35.57070347228866,0 +74.49269241843041,84.84513684930135,1 +89.84580670720979,45.35828361091658,1 +83.48916274498238,48.38028579728175,1 +42.2617008099817,87.10385094025457,1 +99.31500880510394,68.77540947206617,1 +55.34001756003703,64.9319380069486,1 +74.77589300092767,89.52981289513276,1 diff --git a/Octave/2-Logistic Regression/ex2/ex2data2.txt b/Octave/2-Logistic Regression/ex2/ex2data2.txt new file mode 100644 index 0000000..a888992 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/ex2data2.txt @@ -0,0 +1,118 @@ +0.051267,0.69956,1 +-0.092742,0.68494,1 +-0.21371,0.69225,1 +-0.375,0.50219,1 +-0.51325,0.46564,1 +-0.52477,0.2098,1 +-0.39804,0.034357,1 +-0.30588,-0.19225,1 +0.016705,-0.40424,1 +0.13191,-0.51389,1 +0.38537,-0.56506,1 +0.52938,-0.5212,1 +0.63882,-0.24342,1 +0.73675,-0.18494,1 +0.54666,0.48757,1 +0.322,0.5826,1 +0.16647,0.53874,1 +-0.046659,0.81652,1 +-0.17339,0.69956,1 +-0.47869,0.63377,1 +-0.60541,0.59722,1 +-0.62846,0.33406,1 +-0.59389,0.005117,1 +-0.42108,-0.27266,1 +-0.11578,-0.39693,1 +0.20104,-0.60161,1 +0.46601,-0.53582,1 +0.67339,-0.53582,1 +-0.13882,0.54605,1 +-0.29435,0.77997,1 +-0.26555,0.96272,1 +-0.16187,0.8019,1 +-0.17339,0.64839,1 +-0.28283,0.47295,1 +-0.36348,0.31213,1 +-0.30012,0.027047,1 +-0.23675,-0.21418,1 +-0.06394,-0.18494,1 +0.062788,-0.16301,1 +0.22984,-0.41155,1 +0.2932,-0.2288,1 +0.48329,-0.18494,1 +0.64459,-0.14108,1 +0.46025,0.012427,1 +0.6273,0.15863,1 +0.57546,0.26827,1 +0.72523,0.44371,1 +0.22408,0.52412,1 +0.44297,0.67032,1 +0.322,0.69225,1 +0.13767,0.57529,1 +-0.0063364,0.39985,1 +-0.092742,0.55336,1 +-0.20795,0.35599,1 +-0.20795,0.17325,1 +-0.43836,0.21711,1 +-0.21947,-0.016813,1 +-0.13882,-0.27266,1 +0.18376,0.93348,0 +0.22408,0.77997,0 +0.29896,0.61915,0 +0.50634,0.75804,0 +0.61578,0.7288,0 +0.60426,0.59722,0 +0.76555,0.50219,0 +0.92684,0.3633,0 +0.82316,0.27558,0 +0.96141,0.085526,0 +0.93836,0.012427,0 +0.86348,-0.082602,0 +0.89804,-0.20687,0 +0.85196,-0.36769,0 +0.82892,-0.5212,0 +0.79435,-0.55775,0 +0.59274,-0.7405,0 +0.51786,-0.5943,0 +0.46601,-0.41886,0 +0.35081,-0.57968,0 +0.28744,-0.76974,0 +0.085829,-0.75512,0 +0.14919,-0.57968,0 +-0.13306,-0.4481,0 +-0.40956,-0.41155,0 +-0.39228,-0.25804,0 +-0.74366,-0.25804,0 +-0.69758,0.041667,0 +-0.75518,0.2902,0 +-0.69758,0.68494,0 +-0.4038,0.70687,0 +-0.38076,0.91886,0 +-0.50749,0.90424,0 +-0.54781,0.70687,0 +0.10311,0.77997,0 +0.057028,0.91886,0 +-0.10426,0.99196,0 +-0.081221,1.1089,0 +0.28744,1.087,0 +0.39689,0.82383,0 +0.63882,0.88962,0 +0.82316,0.66301,0 +0.67339,0.64108,0 +1.0709,0.10015,0 +-0.046659,-0.57968,0 +-0.23675,-0.63816,0 +-0.15035,-0.36769,0 +-0.49021,-0.3019,0 +-0.46717,-0.13377,0 +-0.28859,-0.060673,0 +-0.61118,-0.067982,0 +-0.66302,-0.21418,0 +-0.59965,-0.41886,0 +-0.72638,-0.082602,0 +-0.83007,0.31213,0 +-0.72062,0.53874,0 +-0.59389,0.49488,0 +-0.48445,0.99927,0 +-0.0063364,0.99927,0 +0.63265,-0.030612,0 diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/AUTHORS.txt b/Octave/2-Logistic Regression/ex2/lib/jsonlab/AUTHORS.txt new file mode 100644 index 0000000..9dd3fc7 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/AUTHORS.txt @@ -0,0 +1,41 @@ +The author of "jsonlab" toolbox is Qianqian Fang. Qianqian +is currently an Assistant Professor at Massachusetts General Hospital, +Harvard Medical School. + +Address: Martinos Center for Biomedical Imaging, + Massachusetts General Hospital, + Harvard Medical School + Bldg 149, 13th St, Charlestown, MA 02129, USA +URL: http://nmr.mgh.harvard.edu/~fangq/ +Email: or + + +The script loadjson.m was built upon previous works by + +- Nedialko Krouchev: http://www.mathworks.com/matlabcentral/fileexchange/25713 + date: 2009/11/02 +- François Glineur: http://www.mathworks.com/matlabcentral/fileexchange/23393 + date: 2009/03/22 +- Joel Feenstra: http://www.mathworks.com/matlabcentral/fileexchange/20565 + date: 2008/07/03 + + +This toolbox contains patches submitted by the following contributors: + +- Blake Johnson + part of revision 341 + +- Niclas Borlin + various fixes in revision 394, including + - loadjson crashes for all-zero sparse matrix. + - loadjson crashes for empty sparse matrix. + - Non-zero size of 0-by-N and N-by-0 empty matrices is lost after savejson/loadjson. + - loadjson crashes for sparse real column vector. + - loadjson crashes for sparse complex column vector. + - Data is corrupted by savejson for sparse real row vector. + - savejson crashes for sparse complex row vector. + +- Yul Kang + patches for svn revision 415. + - savejson saves an empty cell array as [] instead of null + - loadjson differentiates an empty struct from an empty array diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/ChangeLog.txt b/Octave/2-Logistic Regression/ex2/lib/jsonlab/ChangeLog.txt new file mode 100644 index 0000000..07824f5 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/ChangeLog.txt @@ -0,0 +1,74 @@ +============================================================================ + + JSONlab - a toolbox to encode/decode JSON/UBJSON files in MATLAB/Octave + +---------------------------------------------------------------------------- + +JSONlab ChangeLog (key features marked by *): + +== JSONlab 1.0 (codename: Optimus - Final), FangQ == + + 2015/01/02 polish help info for all major functions, update examples, finalize 1.0 + 2014/12/19 fix a bug to strictly respect NoRowBracket in savejson + +== JSONlab 1.0.0-RC2 (codename: Optimus - RC2), FangQ == + + 2014/11/22 show progress bar in loadjson ('ShowProgress') + 2014/11/17 add Compact option in savejson to output compact JSON format ('Compact') + 2014/11/17 add FastArrayParser in loadjson to specify fast parser applicable levels + 2014/09/18 start official github mirror: https://github.com/fangq/jsonlab + +== JSONlab 1.0.0-RC1 (codename: Optimus - RC1), FangQ == + + 2014/09/17 fix several compatibility issues when running on octave versions 3.2-3.8 + 2014/09/17 support 2D cell and struct arrays in both savejson and saveubjson + 2014/08/04 escape special characters in a JSON string + 2014/02/16 fix a bug when saving ubjson files + +== JSONlab 0.9.9 (codename: Optimus - beta), FangQ == + + 2014/01/22 use binary read and write in saveubjson and loadubjson + +== JSONlab 0.9.8-1 (codename: Optimus - alpha update 1), FangQ == + + 2013/10/07 better round-trip conservation for empty arrays and structs (patch submitted by Yul Kang) + +== JSONlab 0.9.8 (codename: Optimus - alpha), FangQ == + 2013/08/23 *universal Binary JSON (UBJSON) support, including both saveubjson and loadubjson + +== JSONlab 0.9.1 (codename: Rodimus, update 1), FangQ == + 2012/12/18 *handling of various empty and sparse matrices (fixes submitted by Niclas Borlin) + +== JSONlab 0.9.0 (codename: Rodimus), FangQ == + + 2012/06/17 *new format for an invalid leading char, unpacking hex code in savejson + 2012/06/01 support JSONP in savejson + 2012/05/25 fix the empty cell bug (reported by Cyril Davin) + 2012/04/05 savejson can save to a file (suggested by Patrick Rapin) + +== JSONlab 0.8.1 (codename: Sentiel, Update 1), FangQ == + + 2012/02/28 loadjson quotation mark escape bug, see http://bit.ly/yyk1nS + 2012/01/25 patch to handle root-less objects, contributed by Blake Johnson + +== JSONlab 0.8.0 (codename: Sentiel), FangQ == + + 2012/01/13 *speed up loadjson by 20 fold when parsing large data arrays in matlab + 2012/01/11 remove row bracket if an array has 1 element, suggested by Mykel Kochenderfer + 2011/12/22 *accept sequence of 'param',value input in savejson and loadjson + 2011/11/18 fix struct array bug reported by Mykel Kochenderfer + +== JSONlab 0.5.1 (codename: Nexus Update 1), FangQ == + + 2011/10/21 fix a bug in loadjson, previous code does not use any of the acceleration + 2011/10/20 loadjson supports JSON collections - concatenated JSON objects + +== JSONlab 0.5.0 (codename: Nexus), FangQ == + + 2011/10/16 package and release jsonlab 0.5.0 + 2011/10/15 *add json demo and regression test, support cpx numbers, fix double quote bug + 2011/10/11 *speed up readjson dramatically, interpret _Array* tags, show data in root level + 2011/10/10 create jsonlab project, start jsonlab website, add online documentation + 2011/10/07 *speed up savejson by 25x using sprintf instead of mat2str, add options support + 2011/10/06 *savejson works for structs, cells and arrays + 2011/09/09 derive loadjson from JSON parser from MATLAB Central, draft savejson.m diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/LICENSE_BSD.txt b/Octave/2-Logistic Regression/ex2/lib/jsonlab/LICENSE_BSD.txt new file mode 100644 index 0000000..32d66cb --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/LICENSE_BSD.txt @@ -0,0 +1,25 @@ +Copyright 2011-2015 Qianqian Fang . All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of the copyright holders. diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/README.txt b/Octave/2-Logistic Regression/ex2/lib/jsonlab/README.txt new file mode 100644 index 0000000..7b4f732 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/README.txt @@ -0,0 +1,394 @@ +=============================================================================== += JSONLab = += An open-source MATLAB/Octave JSON encoder and decoder = +=============================================================================== + +*Copyright (C) 2011-2015 Qianqian Fang +*License: BSD License, see License_BSD.txt for details +*Version: 1.0 (Optimus - Final) + +------------------------------------------------------------------------------- + +Table of Content: + +I. Introduction +II. Installation +III.Using JSONLab +IV. Known Issues and TODOs +V. Contribution and feedback + +------------------------------------------------------------------------------- + +I. Introduction + +JSON ([http://www.json.org/ JavaScript Object Notation]) is a highly portable, +human-readable and "[http://en.wikipedia.org/wiki/JSON fat-free]" text format +to represent complex and hierarchical data. It is as powerful as +[http://en.wikipedia.org/wiki/XML XML], but less verbose. JSON format is widely +used for data-exchange in applications, and is essential for the wild success +of [http://en.wikipedia.org/wiki/Ajax_(programming) Ajax] and +[http://en.wikipedia.org/wiki/Web_2.0 Web2.0]. + +UBJSON (Universal Binary JSON) is a binary JSON format, specifically +optimized for compact file size and better performance while keeping +the semantics as simple as the text-based JSON format. Using the UBJSON +format allows to wrap complex binary data in a flexible and extensible +structure, making it possible to process complex and large dataset +without accuracy loss due to text conversions. + +We envision that both JSON and its binary version will serve as part of +the mainstream data-exchange formats for scientific research in the future. +It will provide the flexibility and generality achieved by other popular +general-purpose file specifications, such as +[http://www.hdfgroup.org/HDF5/whatishdf5.html HDF5], with significantly +reduced complexity and enhanced performance. + +JSONLab is a free and open-source implementation of a JSON/UBJSON encoder +and a decoder in the native MATLAB language. It can be used to convert a MATLAB +data structure (array, struct, cell, struct array and cell array) into +JSON/UBJSON formatted strings, or to decode a JSON/UBJSON file into MATLAB +data structure. JSONLab supports both MATLAB and +[http://www.gnu.org/software/octave/ GNU Octave] (a free MATLAB clone). + +------------------------------------------------------------------------------- + +II. Installation + +The installation of JSONLab is no different than any other simple +MATLAB toolbox. You only need to download/unzip the JSONLab package +to a folder, and add the folder's path to MATLAB/Octave's path list +by using the following command: + + addpath('/path/to/jsonlab'); + +If you want to add this path permanently, you need to type "pathtool", +browse to the jsonlab root folder and add to the list, then click "Save". +Then, run "rehash" in MATLAB, and type "which loadjson", if you see an +output, that means JSONLab is installed for MATLAB/Octave. + +------------------------------------------------------------------------------- + +III.Using JSONLab + +JSONLab provides two functions, loadjson.m -- a MATLAB->JSON decoder, +and savejson.m -- a MATLAB->JSON encoder, for the text-based JSON, and +two equivallent functions -- loadubjson and saveubjson for the binary +JSON. The detailed help info for the four functions can be found below: + +=== loadjson.m === +
+  data=loadjson(fname,opt)
+     or
+  data=loadjson(fname,'param1',value1,'param2',value2,...)
+ 
+  parse a JSON (JavaScript Object Notation) file or string
+ 
+  authors:Qianqian Fang (fangq nmr.mgh.harvard.edu)
+  created on 2011/09/09, including previous works from 
+ 
+          Nedialko Krouchev: http://www.mathworks.com/matlabcentral/fileexchange/25713
+             created on 2009/11/02
+          François Glineur: http://www.mathworks.com/matlabcentral/fileexchange/23393
+             created on  2009/03/22
+          Joel Feenstra:
+          http://www.mathworks.com/matlabcentral/fileexchange/20565
+             created on 2008/07/03
+ 
+  $Id: loadjson.m 452 2014-11-22 16:43:33Z fangq $
+ 
+  input:
+       fname: input file name, if fname contains "{}" or "[]", fname
+              will be interpreted as a JSON string
+       opt: a struct to store parsing options, opt can be replaced by 
+            a list of ('param',value) pairs - the param string is equivallent
+            to a field in opt. opt can have the following 
+            fields (first in [.|.] is the default)
+ 
+            opt.SimplifyCell [0|1]: if set to 1, loadjson will call cell2mat
+                          for each element of the JSON data, and group 
+                          arrays based on the cell2mat rules.
+            opt.FastArrayParser [1|0 or integer]: if set to 1, use a
+                          speed-optimized array parser when loading an 
+                          array object. The fast array parser may 
+                          collapse block arrays into a single large
+                          array similar to rules defined in cell2mat; 0 to 
+                          use a legacy parser; if set to a larger-than-1
+                          value, this option will specify the minimum
+                          dimension to enable the fast array parser. For
+                          example, if the input is a 3D array, setting
+                          FastArrayParser to 1 will return a 3D array;
+                          setting to 2 will return a cell array of 2D
+                          arrays; setting to 3 will return to a 2D cell
+                          array of 1D vectors; setting to 4 will return a
+                          3D cell array.
+            opt.ShowProgress [0|1]: if set to 1, loadjson displays a progress bar.
+ 
+  output:
+       dat: a cell array, where {...} blocks are converted into cell arrays,
+            and [...] are converted to arrays
+ 
+  examples:
+       dat=loadjson('{"obj":{"string":"value","array":[1,2,3]}}')
+       dat=loadjson(['examples' filesep 'example1.json'])
+       dat=loadjson(['examples' filesep 'example1.json'],'SimplifyCell',1)
+
+ +=== savejson.m === + +
+  json=savejson(rootname,obj,filename)
+     or
+  json=savejson(rootname,obj,opt)
+  json=savejson(rootname,obj,'param1',value1,'param2',value2,...)
+ 
+  convert a MATLAB object (cell, struct or array) into a JSON (JavaScript
+  Object Notation) string
+ 
+  author: Qianqian Fang (fangq nmr.mgh.harvard.edu)
+  created on 2011/09/09
+ 
+  $Id: savejson.m 458 2014-12-19 22:17:17Z fangq $
+ 
+  input:
+       rootname: the name of the root-object, when set to '', the root name
+         is ignored, however, when opt.ForceRootName is set to 1 (see below),
+         the MATLAB variable name will be used as the root name.
+       obj: a MATLAB object (array, cell, cell array, struct, struct array).
+       filename: a string for the file name to save the output JSON data.
+       opt: a struct for additional options, ignore to use default values.
+         opt can have the following fields (first in [.|.] is the default)
+ 
+         opt.FileName [''|string]: a file name to save the output JSON data
+         opt.FloatFormat ['%.10g'|string]: format to show each numeric element
+                          of a 1D/2D array;
+         opt.ArrayIndent [1|0]: if 1, output explicit data array with
+                          precedent indentation; if 0, no indentation
+         opt.ArrayToStruct[0|1]: when set to 0, savejson outputs 1D/2D
+                          array in JSON array format; if sets to 1, an
+                          array will be shown as a struct with fields
+                          "_ArrayType_", "_ArraySize_" and "_ArrayData_"; for
+                          sparse arrays, the non-zero elements will be
+                          saved to _ArrayData_ field in triplet-format i.e.
+                          (ix,iy,val) and "_ArrayIsSparse_" will be added
+                          with a value of 1; for a complex array, the 
+                          _ArrayData_ array will include two columns 
+                          (4 for sparse) to record the real and imaginary 
+                          parts, and also "_ArrayIsComplex_":1 is added. 
+         opt.ParseLogical [0|1]: if this is set to 1, logical array elem
+                          will use true/false rather than 1/0.
+         opt.NoRowBracket [1|0]: if this is set to 1, arrays with a single
+                          numerical element will be shown without a square
+                          bracket, unless it is the root object; if 0, square
+                          brackets are forced for any numerical arrays.
+         opt.ForceRootName [0|1]: when set to 1 and rootname is empty, savejson
+                          will use the name of the passed obj variable as the 
+                          root object name; if obj is an expression and 
+                          does not have a name, 'root' will be used; if this 
+                          is set to 0 and rootname is empty, the root level 
+                          will be merged down to the lower level.
+         opt.Inf ['"$1_Inf_"'|string]: a customized regular expression pattern
+                          to represent +/-Inf. The matched pattern is '([-+]*)Inf'
+                          and $1 represents the sign. For those who want to use
+                          1e999 to represent Inf, they can set opt.Inf to '$11e999'
+         opt.NaN ['"_NaN_"'|string]: a customized regular expression pattern
+                          to represent NaN
+         opt.JSONP [''|string]: to generate a JSONP output (JSON with padding),
+                          for example, if opt.JSONP='foo', the JSON data is
+                          wrapped inside a function call as 'foo(...);'
+         opt.UnpackHex [1|0]: conver the 0x[hex code] output by loadjson 
+                          back to the string form
+         opt.SaveBinary [0|1]: 1 - save the JSON file in binary mode; 0 - text mode.
+         opt.Compact [0|1]: 1- out compact JSON format (remove all newlines and tabs)
+ 
+         opt can be replaced by a list of ('param',value) pairs. The param 
+         string is equivallent to a field in opt and is case sensitive.
+  output:
+       json: a string in the JSON format (see http://json.org)
+ 
+  examples:
+       jsonmesh=struct('MeshNode',[0 0 0;1 0 0;0 1 0;1 1 0;0 0 1;1 0 1;0 1 1;1 1 1],... 
+                'MeshTetra',[1 2 4 8;1 3 4 8;1 2 6 8;1 5 6 8;1 5 7 8;1 3 7 8],...
+                'MeshTri',[1 2 4;1 2 6;1 3 4;1 3 7;1 5 6;1 5 7;...
+                           2 8 4;2 8 6;3 8 4;3 8 7;5 8 6;5 8 7],...
+                'MeshCreator','FangQ','MeshTitle','T6 Cube',...
+                'SpecialData',[nan, inf, -inf]);
+       savejson('jmesh',jsonmesh)
+       savejson('',jsonmesh,'ArrayIndent',0,'FloatFormat','\t%.5g')
+ 
+ +=== loadubjson.m === + +
+  data=loadubjson(fname,opt)
+     or
+  data=loadubjson(fname,'param1',value1,'param2',value2,...)
+ 
+  parse a JSON (JavaScript Object Notation) file or string
+ 
+  authors:Qianqian Fang (fangq nmr.mgh.harvard.edu)
+  created on 2013/08/01
+ 
+  $Id: loadubjson.m 436 2014-08-05 20:51:40Z fangq $
+ 
+  input:
+       fname: input file name, if fname contains "{}" or "[]", fname
+              will be interpreted as a UBJSON string
+       opt: a struct to store parsing options, opt can be replaced by 
+            a list of ('param',value) pairs - the param string is equivallent
+            to a field in opt. opt can have the following 
+            fields (first in [.|.] is the default)
+ 
+            opt.SimplifyCell [0|1]: if set to 1, loadubjson will call cell2mat
+                          for each element of the JSON data, and group 
+                          arrays based on the cell2mat rules.
+            opt.IntEndian [B|L]: specify the endianness of the integer fields
+                          in the UBJSON input data. B - Big-Endian format for 
+                          integers (as required in the UBJSON specification); 
+                          L - input integer fields are in Little-Endian order.
+ 
+  output:
+       dat: a cell array, where {...} blocks are converted into cell arrays,
+            and [...] are converted to arrays
+ 
+  examples:
+       obj=struct('string','value','array',[1 2 3]);
+       ubjdata=saveubjson('obj',obj);
+       dat=loadubjson(ubjdata)
+       dat=loadubjson(['examples' filesep 'example1.ubj'])
+       dat=loadubjson(['examples' filesep 'example1.ubj'],'SimplifyCell',1)
+
+ +=== saveubjson.m === + +
+  json=saveubjson(rootname,obj,filename)
+     or
+  json=saveubjson(rootname,obj,opt)
+  json=saveubjson(rootname,obj,'param1',value1,'param2',value2,...)
+ 
+  convert a MATLAB object (cell, struct or array) into a Universal 
+  Binary JSON (UBJSON) binary string
+ 
+  author: Qianqian Fang (fangq nmr.mgh.harvard.edu)
+  created on 2013/08/17
+ 
+  $Id: saveubjson.m 440 2014-09-17 19:59:45Z fangq $
+ 
+  input:
+       rootname: the name of the root-object, when set to '', the root name
+         is ignored, however, when opt.ForceRootName is set to 1 (see below),
+         the MATLAB variable name will be used as the root name.
+       obj: a MATLAB object (array, cell, cell array, struct, struct array)
+       filename: a string for the file name to save the output UBJSON data
+       opt: a struct for additional options, ignore to use default values.
+         opt can have the following fields (first in [.|.] is the default)
+ 
+         opt.FileName [''|string]: a file name to save the output JSON data
+         opt.ArrayToStruct[0|1]: when set to 0, saveubjson outputs 1D/2D
+                          array in JSON array format; if sets to 1, an
+                          array will be shown as a struct with fields
+                          "_ArrayType_", "_ArraySize_" and "_ArrayData_"; for
+                          sparse arrays, the non-zero elements will be
+                          saved to _ArrayData_ field in triplet-format i.e.
+                          (ix,iy,val) and "_ArrayIsSparse_" will be added
+                          with a value of 1; for a complex array, the 
+                          _ArrayData_ array will include two columns 
+                          (4 for sparse) to record the real and imaginary 
+                          parts, and also "_ArrayIsComplex_":1 is added. 
+         opt.ParseLogical [1|0]: if this is set to 1, logical array elem
+                          will use true/false rather than 1/0.
+         opt.NoRowBracket [1|0]: if this is set to 1, arrays with a single
+                          numerical element will be shown without a square
+                          bracket, unless it is the root object; if 0, square
+                          brackets are forced for any numerical arrays.
+         opt.ForceRootName [0|1]: when set to 1 and rootname is empty, saveubjson
+                          will use the name of the passed obj variable as the 
+                          root object name; if obj is an expression and 
+                          does not have a name, 'root' will be used; if this 
+                          is set to 0 and rootname is empty, the root level 
+                          will be merged down to the lower level.
+         opt.JSONP [''|string]: to generate a JSONP output (JSON with padding),
+                          for example, if opt.JSON='foo', the JSON data is
+                          wrapped inside a function call as 'foo(...);'
+         opt.UnpackHex [1|0]: conver the 0x[hex code] output by loadjson 
+                          back to the string form
+ 
+         opt can be replaced by a list of ('param',value) pairs. The param 
+         string is equivallent to a field in opt and is case sensitive.
+  output:
+       json: a binary string in the UBJSON format (see http://ubjson.org)
+ 
+  examples:
+       jsonmesh=struct('MeshNode',[0 0 0;1 0 0;0 1 0;1 1 0;0 0 1;1 0 1;0 1 1;1 1 1],... 
+                'MeshTetra',[1 2 4 8;1 3 4 8;1 2 6 8;1 5 6 8;1 5 7 8;1 3 7 8],...
+                'MeshTri',[1 2 4;1 2 6;1 3 4;1 3 7;1 5 6;1 5 7;...
+                           2 8 4;2 8 6;3 8 4;3 8 7;5 8 6;5 8 7],...
+                'MeshCreator','FangQ','MeshTitle','T6 Cube',...
+                'SpecialData',[nan, inf, -inf]);
+       saveubjson('jsonmesh',jsonmesh)
+       saveubjson('jsonmesh',jsonmesh,'meshdata.ubj')
+
+ + +=== examples === + +Under the "examples" folder, you can find several scripts to demonstrate the +basic utilities of JSONLab. Running the "demo_jsonlab_basic.m" script, you +will see the conversions from MATLAB data structure to JSON text and backward. +In "jsonlab_selftest.m", we load complex JSON files downloaded from the Internet +and validate the loadjson/savejson functions for regression testing purposes. +Similarly, a "demo_ubjson_basic.m" script is provided to test the saveubjson +and loadubjson pairs for various matlab data structures. + +Please run these examples and understand how JSONLab works before you use +it to process your data. + +------------------------------------------------------------------------------- + +IV. Known Issues and TODOs + +JSONLab has several known limitations. We are striving to make it more general +and robust. Hopefully in a few future releases, the limitations become less. + +Here are the known issues: + +# 3D or higher dimensional cell/struct-arrays will be converted to 2D arrays; +# When processing names containing multi-byte characters, Octave and MATLAB \ +can give different field-names; you can use feature('DefaultCharacterSet','latin1') \ +in MATLAB to get consistant results +# savejson can not handle class and dataset. +# saveubjson converts a logical array into a uint8 ([U]) array +# an unofficial N-D array count syntax is implemented in saveubjson. We are \ +actively communicating with the UBJSON spec maintainer to investigate the \ +possibility of making it upstream +# loadubjson can not parse all UBJSON Specification (Draft 9) compliant \ +files, however, it can parse all UBJSON files produced by saveubjson. + +------------------------------------------------------------------------------- + +V. Contribution and feedback + +JSONLab is an open-source project. This means you can not only use it and modify +it as you wish, but also you can contribute your changes back to JSONLab so +that everyone else can enjoy the improvement. For anyone who want to contribute, +please download JSONLab source code from it's subversion repository by using the +following command: + + svn checkout svn://svn.code.sf.net/p/iso2mesh/code/trunk/jsonlab jsonlab + +You can make changes to the files as needed. Once you are satisfied with your +changes, and ready to share it with others, please cd the root directory of +JSONLab, and type + + svn diff > yourname_featurename.patch + +You then email the .patch file to JSONLab's maintainer, Qianqian Fang, at +the email address shown in the beginning of this file. Qianqian will review +the changes and commit it to the subversion if they are satisfactory. + +We appreciate any suggestions and feedbacks from you. Please use iso2mesh's +mailing list to report any questions you may have with JSONLab: + +http://groups.google.com/group/iso2mesh-users?hl=en&pli=1 + +(Subscription to the mailing list is needed in order to post messages). diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/jsonopt.m b/Octave/2-Logistic Regression/ex2/lib/jsonlab/jsonopt.m new file mode 100644 index 0000000..0bebd8d --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/jsonopt.m @@ -0,0 +1,32 @@ +function val=jsonopt(key,default,varargin) +% +% val=jsonopt(key,default,optstruct) +% +% setting options based on a struct. The struct can be produced +% by varargin2struct from a list of 'param','value' pairs +% +% authors:Qianqian Fang (fangq nmr.mgh.harvard.edu) +% +% $Id: loadjson.m 371 2012-06-20 12:43:06Z fangq $ +% +% input: +% key: a string with which one look up a value from a struct +% default: if the key does not exist, return default +% optstruct: a struct where each sub-field is a key +% +% output: +% val: if key exists, val=optstruct.key; otherwise val=default +% +% license: +% BSD, see LICENSE_BSD.txt files for details +% +% -- this function is part of jsonlab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) +% + +val=default; +if(nargin<=2) return; end +opt=varargin{1}; +if(isstruct(opt) && isfield(opt,key)) + val=getfield(opt,key); +end + diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/loadjson.m b/Octave/2-Logistic Regression/ex2/lib/jsonlab/loadjson.m new file mode 100644 index 0000000..169aa61 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/loadjson.m @@ -0,0 +1,566 @@ +function data = loadjson(fname,varargin) +% +% data=loadjson(fname,opt) +% or +% data=loadjson(fname,'param1',value1,'param2',value2,...) +% +% parse a JSON (JavaScript Object Notation) file or string +% +% authors:Qianqian Fang (fangq nmr.mgh.harvard.edu) +% created on 2011/09/09, including previous works from +% +% Nedialko Krouchev: http://www.mathworks.com/matlabcentral/fileexchange/25713 +% created on 2009/11/02 +% François Glineur: http://www.mathworks.com/matlabcentral/fileexchange/23393 +% created on 2009/03/22 +% Joel Feenstra: +% http://www.mathworks.com/matlabcentral/fileexchange/20565 +% created on 2008/07/03 +% +% $Id: loadjson.m 460 2015-01-03 00:30:45Z fangq $ +% +% input: +% fname: input file name, if fname contains "{}" or "[]", fname +% will be interpreted as a JSON string +% opt: a struct to store parsing options, opt can be replaced by +% a list of ('param',value) pairs - the param string is equivallent +% to a field in opt. opt can have the following +% fields (first in [.|.] is the default) +% +% opt.SimplifyCell [0|1]: if set to 1, loadjson will call cell2mat +% for each element of the JSON data, and group +% arrays based on the cell2mat rules. +% opt.FastArrayParser [1|0 or integer]: if set to 1, use a +% speed-optimized array parser when loading an +% array object. The fast array parser may +% collapse block arrays into a single large +% array similar to rules defined in cell2mat; 0 to +% use a legacy parser; if set to a larger-than-1 +% value, this option will specify the minimum +% dimension to enable the fast array parser. For +% example, if the input is a 3D array, setting +% FastArrayParser to 1 will return a 3D array; +% setting to 2 will return a cell array of 2D +% arrays; setting to 3 will return to a 2D cell +% array of 1D vectors; setting to 4 will return a +% 3D cell array. +% opt.ShowProgress [0|1]: if set to 1, loadjson displays a progress bar. +% +% output: +% dat: a cell array, where {...} blocks are converted into cell arrays, +% and [...] are converted to arrays +% +% examples: +% dat=loadjson('{"obj":{"string":"value","array":[1,2,3]}}') +% dat=loadjson(['examples' filesep 'example1.json']) +% dat=loadjson(['examples' filesep 'example1.json'],'SimplifyCell',1) +% +% license: +% BSD, see LICENSE_BSD.txt files for details +% +% -- this function is part of JSONLab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) +% + +global pos inStr len esc index_esc len_esc isoct arraytoken + +if(regexp(fname,'[\{\}\]\[]','once')) + string=fname; +elseif(exist(fname,'file')) + fid = fopen(fname,'rb'); + string = fread(fid,inf,'uint8=>char')'; + fclose(fid); +else + error('input file does not exist'); +end + +pos = 1; len = length(string); inStr = string; +isoct=exist('OCTAVE_VERSION','builtin'); +arraytoken=find(inStr=='[' | inStr==']' | inStr=='"'); +jstr=regexprep(inStr,'\\\\',' '); +escquote=regexp(jstr,'\\"'); +arraytoken=sort([arraytoken escquote]); + +% String delimiters and escape chars identified to improve speed: +esc = find(inStr=='"' | inStr=='\' ); % comparable to: regexp(inStr, '["\\]'); +index_esc = 1; len_esc = length(esc); + +opt=varargin2struct(varargin{:}); + +if(jsonopt('ShowProgress',0,opt)==1) + opt.progressbar_=waitbar(0,'loading ...'); +end +jsoncount=1; +while pos <= len + switch(next_char) + case '{' + data{jsoncount} = parse_object(opt); + case '[' + data{jsoncount} = parse_array(opt); + otherwise + error_pos('Outer level structure must be an object or an array'); + end + jsoncount=jsoncount+1; +end % while + +jsoncount=length(data); +if(jsoncount==1 && iscell(data)) + data=data{1}; +end + +if(~isempty(data)) + if(isstruct(data)) % data can be a struct array + data=jstruct2array(data); + elseif(iscell(data)) + data=jcell2array(data); + end +end +if(isfield(opt,'progressbar_')) + close(opt.progressbar_); +end + +%% +function newdata=jcell2array(data) +len=length(data); +newdata=data; +for i=1:len + if(isstruct(data{i})) + newdata{i}=jstruct2array(data{i}); + elseif(iscell(data{i})) + newdata{i}=jcell2array(data{i}); + end +end + +%%------------------------------------------------------------------------- +function newdata=jstruct2array(data) +fn=fieldnames(data); +newdata=data; +len=length(data); +for i=1:length(fn) % depth-first + for j=1:len + if(isstruct(getfield(data(j),fn{i}))) + newdata(j)=setfield(newdata(j),fn{i},jstruct2array(getfield(data(j),fn{i}))); + end + end +end +if(~isempty(strmatch('x0x5F_ArrayType_',fn)) && ~isempty(strmatch('x0x5F_ArrayData_',fn))) + newdata=cell(len,1); + for j=1:len + ndata=cast(data(j).x0x5F_ArrayData_,data(j).x0x5F_ArrayType_); + iscpx=0; + if(~isempty(strmatch('x0x5F_ArrayIsComplex_',fn))) + if(data(j).x0x5F_ArrayIsComplex_) + iscpx=1; + end + end + if(~isempty(strmatch('x0x5F_ArrayIsSparse_',fn))) + if(data(j).x0x5F_ArrayIsSparse_) + if(~isempty(strmatch('x0x5F_ArraySize_',fn))) + dim=data(j).x0x5F_ArraySize_; + if(iscpx && size(ndata,2)==4-any(dim==1)) + ndata(:,end-1)=complex(ndata(:,end-1),ndata(:,end)); + end + if isempty(ndata) + % All-zeros sparse + ndata=sparse(dim(1),prod(dim(2:end))); + elseif dim(1)==1 + % Sparse row vector + ndata=sparse(1,ndata(:,1),ndata(:,2),dim(1),prod(dim(2:end))); + elseif dim(2)==1 + % Sparse column vector + ndata=sparse(ndata(:,1),1,ndata(:,2),dim(1),prod(dim(2:end))); + else + % Generic sparse array. + ndata=sparse(ndata(:,1),ndata(:,2),ndata(:,3),dim(1),prod(dim(2:end))); + end + else + if(iscpx && size(ndata,2)==4) + ndata(:,3)=complex(ndata(:,3),ndata(:,4)); + end + ndata=sparse(ndata(:,1),ndata(:,2),ndata(:,3)); + end + end + elseif(~isempty(strmatch('x0x5F_ArraySize_',fn))) + if(iscpx && size(ndata,2)==2) + ndata=complex(ndata(:,1),ndata(:,2)); + end + ndata=reshape(ndata(:),data(j).x0x5F_ArraySize_); + end + newdata{j}=ndata; + end + if(len==1) + newdata=newdata{1}; + end +end + +%%------------------------------------------------------------------------- +function object = parse_object(varargin) + parse_char('{'); + object = []; + if next_char ~= '}' + while 1 + str = parseStr(varargin{:}); + if isempty(str) + error_pos('Name of value at position %d cannot be empty'); + end + parse_char(':'); + val = parse_value(varargin{:}); + eval( sprintf( 'object.%s = val;', valid_field(str) ) ); + if next_char == '}' + break; + end + parse_char(','); + end + end + parse_char('}'); + +%%------------------------------------------------------------------------- + +function object = parse_array(varargin) % JSON array is written in row-major order +global pos inStr isoct + parse_char('['); + object = cell(0, 1); + dim2=[]; + arraydepth=jsonopt('JSONLAB_ArrayDepth_',1,varargin{:}); + pbar=jsonopt('progressbar_',-1,varargin{:}); + + if next_char ~= ']' + if(jsonopt('FastArrayParser',1,varargin{:})>=1 && arraydepth>=jsonopt('FastArrayParser',1,varargin{:})) + [endpos, e1l, e1r, maxlevel]=matching_bracket(inStr,pos); + arraystr=['[' inStr(pos:endpos)]; + arraystr=regexprep(arraystr,'"_NaN_"','NaN'); + arraystr=regexprep(arraystr,'"([-+]*)_Inf_"','$1Inf'); + arraystr(arraystr==sprintf('\n'))=[]; + arraystr(arraystr==sprintf('\r'))=[]; + %arraystr=regexprep(arraystr,'\s*,',','); % this is slow,sometimes needed + if(~isempty(e1l) && ~isempty(e1r)) % the array is in 2D or higher D + astr=inStr((e1l+1):(e1r-1)); + astr=regexprep(astr,'"_NaN_"','NaN'); + astr=regexprep(astr,'"([-+]*)_Inf_"','$1Inf'); + astr(astr==sprintf('\n'))=[]; + astr(astr==sprintf('\r'))=[]; + astr(astr==' ')=''; + if(isempty(find(astr=='[', 1))) % array is 2D + dim2=length(sscanf(astr,'%f,',[1 inf])); + end + else % array is 1D + astr=arraystr(2:end-1); + astr(astr==' ')=''; + [obj, count, errmsg, nextidx]=sscanf(astr,'%f,',[1,inf]); + if(nextidx>=length(astr)-1) + object=obj; + pos=endpos; + parse_char(']'); + return; + end + end + if(~isempty(dim2)) + astr=arraystr; + astr(astr=='[')=''; + astr(astr==']')=''; + astr(astr==' ')=''; + [obj, count, errmsg, nextidx]=sscanf(astr,'%f,',inf); + if(nextidx>=length(astr)-1) + object=reshape(obj,dim2,numel(obj)/dim2)'; + pos=endpos; + parse_char(']'); + if(pbar>0) + waitbar(pos/length(inStr),pbar,'loading ...'); + end + return; + end + end + arraystr=regexprep(arraystr,'\]\s*,','];'); + else + arraystr='['; + end + try + if(isoct && regexp(arraystr,'"','once')) + error('Octave eval can produce empty cells for JSON-like input'); + end + object=eval(arraystr); + pos=endpos; + catch + while 1 + newopt=varargin2struct(varargin{:},'JSONLAB_ArrayDepth_',arraydepth+1); + val = parse_value(newopt); + object{end+1} = val; + if next_char == ']' + break; + end + parse_char(','); + end + end + end + if(jsonopt('SimplifyCell',0,varargin{:})==1) + try + oldobj=object; + object=cell2mat(object')'; + if(iscell(oldobj) && isstruct(object) && numel(object)>1 && jsonopt('SimplifyCellArray',1,varargin{:})==0) + object=oldobj; + elseif(size(object,1)>1 && ndims(object)==2) + object=object'; + end + catch + end + end + parse_char(']'); + + if(pbar>0) + waitbar(pos/length(inStr),pbar,'loading ...'); + end +%%------------------------------------------------------------------------- + +function parse_char(c) + global pos inStr len + skip_whitespace; + if pos > len || inStr(pos) ~= c + error_pos(sprintf('Expected %c at position %%d', c)); + else + pos = pos + 1; + skip_whitespace; + end + +%%------------------------------------------------------------------------- + +function c = next_char + global pos inStr len + skip_whitespace; + if pos > len + c = []; + else + c = inStr(pos); + end + +%%------------------------------------------------------------------------- + +function skip_whitespace + global pos inStr len + while pos <= len && isspace(inStr(pos)) + pos = pos + 1; + end + +%%------------------------------------------------------------------------- +function str = parseStr(varargin) + global pos inStr len esc index_esc len_esc + % len, ns = length(inStr), keyboard + if inStr(pos) ~= '"' + error_pos('String starting with " expected at position %d'); + else + pos = pos + 1; + end + str = ''; + while pos <= len + while index_esc <= len_esc && esc(index_esc) < pos + index_esc = index_esc + 1; + end + if index_esc > len_esc + str = [str inStr(pos:len)]; + pos = len + 1; + break; + else + str = [str inStr(pos:esc(index_esc)-1)]; + pos = esc(index_esc); + end + nstr = length(str); switch inStr(pos) + case '"' + pos = pos + 1; + if(~isempty(str)) + if(strcmp(str,'_Inf_')) + str=Inf; + elseif(strcmp(str,'-_Inf_')) + str=-Inf; + elseif(strcmp(str,'_NaN_')) + str=NaN; + end + end + return; + case '\' + if pos+1 > len + error_pos('End of file reached right after escape character'); + end + pos = pos + 1; + switch inStr(pos) + case {'"' '\' '/'} + str(nstr+1) = inStr(pos); + pos = pos + 1; + case {'b' 'f' 'n' 'r' 't'} + str(nstr+1) = sprintf(['\' inStr(pos)]); + pos = pos + 1; + case 'u' + if pos+4 > len + error_pos('End of file reached in escaped unicode character'); + end + str(nstr+(1:6)) = inStr(pos-1:pos+4); + pos = pos + 5; + end + otherwise % should never happen + str(nstr+1) = inStr(pos), keyboard + pos = pos + 1; + end + end + error_pos('End of file while expecting end of inStr'); + +%%------------------------------------------------------------------------- + +function num = parse_number(varargin) + global pos inStr len isoct + currstr=inStr(pos:end); + numstr=0; + if(isoct~=0) + numstr=regexp(currstr,'^\s*-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+\-]?\d+)?','end'); + [num, one] = sscanf(currstr, '%f', 1); + delta=numstr+1; + else + [num, one, err, delta] = sscanf(currstr, '%f', 1); + if ~isempty(err) + error_pos('Error reading number at position %d'); + end + end + pos = pos + delta-1; + +%%------------------------------------------------------------------------- + +function val = parse_value(varargin) + global pos inStr len + true = 1; false = 0; + + pbar=jsonopt('progressbar_',-1,varargin{:}); + if(pbar>0) + waitbar(pos/len,pbar,'loading ...'); + end + + switch(inStr(pos)) + case '"' + val = parseStr(varargin{:}); + return; + case '[' + val = parse_array(varargin{:}); + return; + case '{' + val = parse_object(varargin{:}); + if isstruct(val) + if(~isempty(strmatch('x0x5F_ArrayType_',fieldnames(val), 'exact'))) + val=jstruct2array(val); + end + elseif isempty(val) + val = struct; + end + return; + case {'-','0','1','2','3','4','5','6','7','8','9'} + val = parse_number(varargin{:}); + return; + case 't' + if pos+3 <= len && strcmpi(inStr(pos:pos+3), 'true') + val = true; + pos = pos + 4; + return; + end + case 'f' + if pos+4 <= len && strcmpi(inStr(pos:pos+4), 'false') + val = false; + pos = pos + 5; + return; + end + case 'n' + if pos+3 <= len && strcmpi(inStr(pos:pos+3), 'null') + val = []; + pos = pos + 4; + return; + end + end + error_pos('Value expected at position %d'); +%%------------------------------------------------------------------------- + +function error_pos(msg) + global pos inStr len + poShow = max(min([pos-15 pos-1 pos pos+20],len),1); + if poShow(3) == poShow(2) + poShow(3:4) = poShow(2)+[0 -1]; % display nothing after + end + msg = [sprintf(msg, pos) ': ' ... + inStr(poShow(1):poShow(2)) '' inStr(poShow(3):poShow(4)) ]; + error( ['JSONparser:invalidFormat: ' msg] ); + +%%------------------------------------------------------------------------- + +function str = valid_field(str) +global isoct +% From MATLAB doc: field names must begin with a letter, which may be +% followed by any combination of letters, digits, and underscores. +% Invalid characters will be converted to underscores, and the prefix +% "x0x[Hex code]_" will be added if the first character is not a letter. + pos=regexp(str,'^[^A-Za-z]','once'); + if(~isempty(pos)) + if(~isoct) + str=regexprep(str,'^([^A-Za-z])','x0x${sprintf(''%X'',unicode2native($1))}_','once'); + else + str=sprintf('x0x%X_%s',toascii(str(1)),str(2:end)); + end + end + if(isempty(regexp(str,'[^0-9A-Za-z_]', 'once' ))) return; end + if(~isoct) + str=regexprep(str,'([^0-9A-Za-z_])','_0x${sprintf(''%X'',unicode2native($1))}_'); + else + pos=regexp(str,'[^0-9A-Za-z_]'); + if(isempty(pos)) return; end + str0=str; + pos0=[0 pos(:)' length(str)]; + str=''; + for i=1:length(pos) + str=[str str0(pos0(i)+1:pos(i)-1) sprintf('_0x%X_',toascii(str0(pos(i))))]; + end + if(pos(end)~=length(str)) + str=[str str0(pos0(end-1)+1:pos0(end))]; + end + end + %str(~isletter(str) & ~('0' <= str & str <= '9')) = '_'; + +%%------------------------------------------------------------------------- +function endpos = matching_quote(str,pos) +len=length(str); +while(pos1 && str(pos-1)=='\')) + endpos=pos; + return; + end + end + pos=pos+1; +end +error('unmatched quotation mark'); +%%------------------------------------------------------------------------- +function [endpos, e1l, e1r, maxlevel] = matching_bracket(str,pos) +global arraytoken +level=1; +maxlevel=level; +endpos=0; +bpos=arraytoken(arraytoken>=pos); +tokens=str(bpos); +len=length(tokens); +pos=1; +e1l=[]; +e1r=[]; +while(pos<=len) + c=tokens(pos); + if(c==']') + level=level-1; + if(isempty(e1r)) e1r=bpos(pos); end + if(level==0) + endpos=bpos(pos); + return + end + end + if(c=='[') + if(isempty(e1l)) e1l=bpos(pos); end + level=level+1; + maxlevel=max(maxlevel,level); + end + if(c=='"') + pos=matching_quote(tokens,pos+1); + end + pos=pos+1; +end +if(endpos==0) + error('unmatched "]"'); +end + diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/loadubjson.m b/Octave/2-Logistic Regression/ex2/lib/jsonlab/loadubjson.m new file mode 100644 index 0000000..0155115 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/loadubjson.m @@ -0,0 +1,528 @@ +function data = loadubjson(fname,varargin) +% +% data=loadubjson(fname,opt) +% or +% data=loadubjson(fname,'param1',value1,'param2',value2,...) +% +% parse a JSON (JavaScript Object Notation) file or string +% +% authors:Qianqian Fang (fangq nmr.mgh.harvard.edu) +% created on 2013/08/01 +% +% $Id: loadubjson.m 460 2015-01-03 00:30:45Z fangq $ +% +% input: +% fname: input file name, if fname contains "{}" or "[]", fname +% will be interpreted as a UBJSON string +% opt: a struct to store parsing options, opt can be replaced by +% a list of ('param',value) pairs - the param string is equivallent +% to a field in opt. opt can have the following +% fields (first in [.|.] is the default) +% +% opt.SimplifyCell [0|1]: if set to 1, loadubjson will call cell2mat +% for each element of the JSON data, and group +% arrays based on the cell2mat rules. +% opt.IntEndian [B|L]: specify the endianness of the integer fields +% in the UBJSON input data. B - Big-Endian format for +% integers (as required in the UBJSON specification); +% L - input integer fields are in Little-Endian order. +% +% output: +% dat: a cell array, where {...} blocks are converted into cell arrays, +% and [...] are converted to arrays +% +% examples: +% obj=struct('string','value','array',[1 2 3]); +% ubjdata=saveubjson('obj',obj); +% dat=loadubjson(ubjdata) +% dat=loadubjson(['examples' filesep 'example1.ubj']) +% dat=loadubjson(['examples' filesep 'example1.ubj'],'SimplifyCell',1) +% +% license: +% BSD, see LICENSE_BSD.txt files for details +% +% -- this function is part of JSONLab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) +% + +global pos inStr len esc index_esc len_esc isoct arraytoken fileendian systemendian + +if(regexp(fname,'[\{\}\]\[]','once')) + string=fname; +elseif(exist(fname,'file')) + fid = fopen(fname,'rb'); + string = fread(fid,inf,'uint8=>char')'; + fclose(fid); +else + error('input file does not exist'); +end + +pos = 1; len = length(string); inStr = string; +isoct=exist('OCTAVE_VERSION','builtin'); +arraytoken=find(inStr=='[' | inStr==']' | inStr=='"'); +jstr=regexprep(inStr,'\\\\',' '); +escquote=regexp(jstr,'\\"'); +arraytoken=sort([arraytoken escquote]); + +% String delimiters and escape chars identified to improve speed: +esc = find(inStr=='"' | inStr=='\' ); % comparable to: regexp(inStr, '["\\]'); +index_esc = 1; len_esc = length(esc); + +opt=varargin2struct(varargin{:}); +fileendian=upper(jsonopt('IntEndian','B',opt)); +[os,maxelem,systemendian]=computer; + +jsoncount=1; +while pos <= len + switch(next_char) + case '{' + data{jsoncount} = parse_object(opt); + case '[' + data{jsoncount} = parse_array(opt); + otherwise + error_pos('Outer level structure must be an object or an array'); + end + jsoncount=jsoncount+1; +end % while + +jsoncount=length(data); +if(jsoncount==1 && iscell(data)) + data=data{1}; +end + +if(~isempty(data)) + if(isstruct(data)) % data can be a struct array + data=jstruct2array(data); + elseif(iscell(data)) + data=jcell2array(data); + end +end + + +%% +function newdata=parse_collection(id,data,obj) + +if(jsoncount>0 && exist('data','var')) + if(~iscell(data)) + newdata=cell(1); + newdata{1}=data; + data=newdata; + end +end + +%% +function newdata=jcell2array(data) +len=length(data); +newdata=data; +for i=1:len + if(isstruct(data{i})) + newdata{i}=jstruct2array(data{i}); + elseif(iscell(data{i})) + newdata{i}=jcell2array(data{i}); + end +end + +%%------------------------------------------------------------------------- +function newdata=jstruct2array(data) +fn=fieldnames(data); +newdata=data; +len=length(data); +for i=1:length(fn) % depth-first + for j=1:len + if(isstruct(getfield(data(j),fn{i}))) + newdata(j)=setfield(newdata(j),fn{i},jstruct2array(getfield(data(j),fn{i}))); + end + end +end +if(~isempty(strmatch('x0x5F_ArrayType_',fn)) && ~isempty(strmatch('x0x5F_ArrayData_',fn))) + newdata=cell(len,1); + for j=1:len + ndata=cast(data(j).x0x5F_ArrayData_,data(j).x0x5F_ArrayType_); + iscpx=0; + if(~isempty(strmatch('x0x5F_ArrayIsComplex_',fn))) + if(data(j).x0x5F_ArrayIsComplex_) + iscpx=1; + end + end + if(~isempty(strmatch('x0x5F_ArrayIsSparse_',fn))) + if(data(j).x0x5F_ArrayIsSparse_) + if(~isempty(strmatch('x0x5F_ArraySize_',fn))) + dim=double(data(j).x0x5F_ArraySize_); + if(iscpx && size(ndata,2)==4-any(dim==1)) + ndata(:,end-1)=complex(ndata(:,end-1),ndata(:,end)); + end + if isempty(ndata) + % All-zeros sparse + ndata=sparse(dim(1),prod(dim(2:end))); + elseif dim(1)==1 + % Sparse row vector + ndata=sparse(1,ndata(:,1),ndata(:,2),dim(1),prod(dim(2:end))); + elseif dim(2)==1 + % Sparse column vector + ndata=sparse(ndata(:,1),1,ndata(:,2),dim(1),prod(dim(2:end))); + else + % Generic sparse array. + ndata=sparse(ndata(:,1),ndata(:,2),ndata(:,3),dim(1),prod(dim(2:end))); + end + else + if(iscpx && size(ndata,2)==4) + ndata(:,3)=complex(ndata(:,3),ndata(:,4)); + end + ndata=sparse(ndata(:,1),ndata(:,2),ndata(:,3)); + end + end + elseif(~isempty(strmatch('x0x5F_ArraySize_',fn))) + if(iscpx && size(ndata,2)==2) + ndata=complex(ndata(:,1),ndata(:,2)); + end + ndata=reshape(ndata(:),data(j).x0x5F_ArraySize_); + end + newdata{j}=ndata; + end + if(len==1) + newdata=newdata{1}; + end +end + +%%------------------------------------------------------------------------- +function object = parse_object(varargin) + parse_char('{'); + object = []; + type=''; + count=-1; + if(next_char == '$') + type=inStr(pos+1); % TODO + pos=pos+2; + end + if(next_char == '#') + pos=pos+1; + count=double(parse_number()); + end + if next_char ~= '}' + num=0; + while 1 + str = parseStr(varargin{:}); + if isempty(str) + error_pos('Name of value at position %d cannot be empty'); + end + %parse_char(':'); + val = parse_value(varargin{:}); + num=num+1; + eval( sprintf( 'object.%s = val;', valid_field(str) ) ); + if next_char == '}' || (count>=0 && num>=count) + break; + end + %parse_char(','); + end + end + if(count==-1) + parse_char('}'); + end + +%%------------------------------------------------------------------------- +function [cid,len]=elem_info(type) +id=strfind('iUIlLdD',type); +dataclass={'int8','uint8','int16','int32','int64','single','double'}; +bytelen=[1,1,2,4,8,4,8]; +if(id>0) + cid=dataclass{id}; + len=bytelen(id); +else + error_pos('unsupported type at position %d'); +end +%%------------------------------------------------------------------------- + + +function [data adv]=parse_block(type,count,varargin) +global pos inStr isoct fileendian systemendian +[cid,len]=elem_info(type); +datastr=inStr(pos:pos+len*count-1); +if(isoct) + newdata=int8(datastr); +else + newdata=uint8(datastr); +end +id=strfind('iUIlLdD',type); +if(id<=5 && fileendian~=systemendian) + newdata=swapbytes(typecast(newdata,cid)); +end +data=typecast(newdata,cid); +adv=double(len*count); + +%%------------------------------------------------------------------------- + + +function object = parse_array(varargin) % JSON array is written in row-major order +global pos inStr isoct + parse_char('['); + object = cell(0, 1); + dim=[]; + type=''; + count=-1; + if(next_char == '$') + type=inStr(pos+1); + pos=pos+2; + end + if(next_char == '#') + pos=pos+1; + if(next_char=='[') + dim=parse_array(varargin{:}); + count=prod(double(dim)); + else + count=double(parse_number()); + end + end + if(~isempty(type)) + if(count>=0) + [object adv]=parse_block(type,count,varargin{:}); + if(~isempty(dim)) + object=reshape(object,dim); + end + pos=pos+adv; + return; + else + endpos=matching_bracket(inStr,pos); + [cid,len]=elem_info(type); + count=(endpos-pos)/len; + [object adv]=parse_block(type,count,varargin{:}); + pos=pos+adv; + parse_char(']'); + return; + end + end + if next_char ~= ']' + while 1 + val = parse_value(varargin{:}); + object{end+1} = val; + if next_char == ']' + break; + end + %parse_char(','); + end + end + if(jsonopt('SimplifyCell',0,varargin{:})==1) + try + oldobj=object; + object=cell2mat(object')'; + if(iscell(oldobj) && isstruct(object) && numel(object)>1 && jsonopt('SimplifyCellArray',1,varargin{:})==0) + object=oldobj; + elseif(size(object,1)>1 && ndims(object)==2) + object=object'; + end + catch + end + end + if(count==-1) + parse_char(']'); + end + +%%------------------------------------------------------------------------- + +function parse_char(c) + global pos inStr len + skip_whitespace; + if pos > len || inStr(pos) ~= c + error_pos(sprintf('Expected %c at position %%d', c)); + else + pos = pos + 1; + skip_whitespace; + end + +%%------------------------------------------------------------------------- + +function c = next_char + global pos inStr len + skip_whitespace; + if pos > len + c = []; + else + c = inStr(pos); + end + +%%------------------------------------------------------------------------- + +function skip_whitespace + global pos inStr len + while pos <= len && isspace(inStr(pos)) + pos = pos + 1; + end + +%%------------------------------------------------------------------------- +function str = parseStr(varargin) + global pos inStr esc index_esc len_esc + % len, ns = length(inStr), keyboard + type=inStr(pos); + if type ~= 'S' && type ~= 'C' && type ~= 'H' + error_pos('String starting with S expected at position %d'); + else + pos = pos + 1; + end + if(type == 'C') + str=inStr(pos); + pos=pos+1; + return; + end + bytelen=double(parse_number()); + if(length(inStr)>=pos+bytelen-1) + str=inStr(pos:pos+bytelen-1); + pos=pos+bytelen; + else + error_pos('End of file while expecting end of inStr'); + end + +%%------------------------------------------------------------------------- + +function num = parse_number(varargin) + global pos inStr len isoct fileendian systemendian + id=strfind('iUIlLdD',inStr(pos)); + if(isempty(id)) + error_pos('expecting a number at position %d'); + end + type={'int8','uint8','int16','int32','int64','single','double'}; + bytelen=[1,1,2,4,8,4,8]; + datastr=inStr(pos+1:pos+bytelen(id)); + if(isoct) + newdata=int8(datastr); + else + newdata=uint8(datastr); + end + if(id<=5 && fileendian~=systemendian) + newdata=swapbytes(typecast(newdata,type{id})); + end + num=typecast(newdata,type{id}); + pos = pos + bytelen(id)+1; + +%%------------------------------------------------------------------------- + +function val = parse_value(varargin) + global pos inStr len + true = 1; false = 0; + + switch(inStr(pos)) + case {'S','C','H'} + val = parseStr(varargin{:}); + return; + case '[' + val = parse_array(varargin{:}); + return; + case '{' + val = parse_object(varargin{:}); + if isstruct(val) + if(~isempty(strmatch('x0x5F_ArrayType_',fieldnames(val), 'exact'))) + val=jstruct2array(val); + end + elseif isempty(val) + val = struct; + end + return; + case {'i','U','I','l','L','d','D'} + val = parse_number(varargin{:}); + return; + case 'T' + val = true; + pos = pos + 1; + return; + case 'F' + val = false; + pos = pos + 1; + return; + case {'Z','N'} + val = []; + pos = pos + 1; + return; + end + error_pos('Value expected at position %d'); +%%------------------------------------------------------------------------- + +function error_pos(msg) + global pos inStr len + poShow = max(min([pos-15 pos-1 pos pos+20],len),1); + if poShow(3) == poShow(2) + poShow(3:4) = poShow(2)+[0 -1]; % display nothing after + end + msg = [sprintf(msg, pos) ': ' ... + inStr(poShow(1):poShow(2)) '' inStr(poShow(3):poShow(4)) ]; + error( ['JSONparser:invalidFormat: ' msg] ); + +%%------------------------------------------------------------------------- + +function str = valid_field(str) +global isoct +% From MATLAB doc: field names must begin with a letter, which may be +% followed by any combination of letters, digits, and underscores. +% Invalid characters will be converted to underscores, and the prefix +% "x0x[Hex code]_" will be added if the first character is not a letter. + pos=regexp(str,'^[^A-Za-z]','once'); + if(~isempty(pos)) + if(~isoct) + str=regexprep(str,'^([^A-Za-z])','x0x${sprintf(''%X'',unicode2native($1))}_','once'); + else + str=sprintf('x0x%X_%s',char(str(1)),str(2:end)); + end + end + if(isempty(regexp(str,'[^0-9A-Za-z_]', 'once' ))) return; end + if(~isoct) + str=regexprep(str,'([^0-9A-Za-z_])','_0x${sprintf(''%X'',unicode2native($1))}_'); + else + pos=regexp(str,'[^0-9A-Za-z_]'); + if(isempty(pos)) return; end + str0=str; + pos0=[0 pos(:)' length(str)]; + str=''; + for i=1:length(pos) + str=[str str0(pos0(i)+1:pos(i)-1) sprintf('_0x%X_',str0(pos(i)))]; + end + if(pos(end)~=length(str)) + str=[str str0(pos0(end-1)+1:pos0(end))]; + end + end + %str(~isletter(str) & ~('0' <= str & str <= '9')) = '_'; + +%%------------------------------------------------------------------------- +function endpos = matching_quote(str,pos) +len=length(str); +while(pos1 && str(pos-1)=='\')) + endpos=pos; + return; + end + end + pos=pos+1; +end +error('unmatched quotation mark'); +%%------------------------------------------------------------------------- +function [endpos e1l e1r maxlevel] = matching_bracket(str,pos) +global arraytoken +level=1; +maxlevel=level; +endpos=0; +bpos=arraytoken(arraytoken>=pos); +tokens=str(bpos); +len=length(tokens); +pos=1; +e1l=[]; +e1r=[]; +while(pos<=len) + c=tokens(pos); + if(c==']') + level=level-1; + if(isempty(e1r)) e1r=bpos(pos); end + if(level==0) + endpos=bpos(pos); + return + end + end + if(c=='[') + if(isempty(e1l)) e1l=bpos(pos); end + level=level+1; + maxlevel=max(maxlevel,level); + end + if(c=='"') + pos=matching_quote(tokens,pos+1); + end + pos=pos+1; +end +if(endpos==0) + error('unmatched "]"'); +end + diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/mergestruct.m b/Octave/2-Logistic Regression/ex2/lib/jsonlab/mergestruct.m new file mode 100644 index 0000000..6de6100 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/mergestruct.m @@ -0,0 +1,33 @@ +function s=mergestruct(s1,s2) +% +% s=mergestruct(s1,s2) +% +% merge two struct objects into one +% +% authors:Qianqian Fang (fangq nmr.mgh.harvard.edu) +% date: 2012/12/22 +% +% input: +% s1,s2: a struct object, s1 and s2 can not be arrays +% +% output: +% s: the merged struct object. fields in s1 and s2 will be combined in s. +% +% license: +% BSD, see LICENSE_BSD.txt files for details +% +% -- this function is part of jsonlab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) +% + +if(~isstruct(s1) || ~isstruct(s2)) + error('input parameters contain non-struct'); +end +if(length(s1)>1 || length(s2)>1) + error('can not merge struct arrays'); +end +fn=fieldnames(s2); +s=s1; +for i=1:length(fn) + s=setfield(s,fn{i},getfield(s2,fn{i})); +end + diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/savejson.m b/Octave/2-Logistic Regression/ex2/lib/jsonlab/savejson.m new file mode 100644 index 0000000..7e84076 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/savejson.m @@ -0,0 +1,475 @@ +function json=savejson(rootname,obj,varargin) +% +% json=savejson(rootname,obj,filename) +% or +% json=savejson(rootname,obj,opt) +% json=savejson(rootname,obj,'param1',value1,'param2',value2,...) +% +% convert a MATLAB object (cell, struct or array) into a JSON (JavaScript +% Object Notation) string +% +% author: Qianqian Fang (fangq nmr.mgh.harvard.edu) +% created on 2011/09/09 +% +% $Id: savejson.m 460 2015-01-03 00:30:45Z fangq $ +% +% input: +% rootname: the name of the root-object, when set to '', the root name +% is ignored, however, when opt.ForceRootName is set to 1 (see below), +% the MATLAB variable name will be used as the root name. +% obj: a MATLAB object (array, cell, cell array, struct, struct array). +% filename: a string for the file name to save the output JSON data. +% opt: a struct for additional options, ignore to use default values. +% opt can have the following fields (first in [.|.] is the default) +% +% opt.FileName [''|string]: a file name to save the output JSON data +% opt.FloatFormat ['%.10g'|string]: format to show each numeric element +% of a 1D/2D array; +% opt.ArrayIndent [1|0]: if 1, output explicit data array with +% precedent indentation; if 0, no indentation +% opt.ArrayToStruct[0|1]: when set to 0, savejson outputs 1D/2D +% array in JSON array format; if sets to 1, an +% array will be shown as a struct with fields +% "_ArrayType_", "_ArraySize_" and "_ArrayData_"; for +% sparse arrays, the non-zero elements will be +% saved to _ArrayData_ field in triplet-format i.e. +% (ix,iy,val) and "_ArrayIsSparse_" will be added +% with a value of 1; for a complex array, the +% _ArrayData_ array will include two columns +% (4 for sparse) to record the real and imaginary +% parts, and also "_ArrayIsComplex_":1 is added. +% opt.ParseLogical [0|1]: if this is set to 1, logical array elem +% will use true/false rather than 1/0. +% opt.NoRowBracket [1|0]: if this is set to 1, arrays with a single +% numerical element will be shown without a square +% bracket, unless it is the root object; if 0, square +% brackets are forced for any numerical arrays. +% opt.ForceRootName [0|1]: when set to 1 and rootname is empty, savejson +% will use the name of the passed obj variable as the +% root object name; if obj is an expression and +% does not have a name, 'root' will be used; if this +% is set to 0 and rootname is empty, the root level +% will be merged down to the lower level. +% opt.Inf ['"$1_Inf_"'|string]: a customized regular expression pattern +% to represent +/-Inf. The matched pattern is '([-+]*)Inf' +% and $1 represents the sign. For those who want to use +% 1e999 to represent Inf, they can set opt.Inf to '$11e999' +% opt.NaN ['"_NaN_"'|string]: a customized regular expression pattern +% to represent NaN +% opt.JSONP [''|string]: to generate a JSONP output (JSON with padding), +% for example, if opt.JSONP='foo', the JSON data is +% wrapped inside a function call as 'foo(...);' +% opt.UnpackHex [1|0]: conver the 0x[hex code] output by loadjson +% back to the string form +% opt.SaveBinary [0|1]: 1 - save the JSON file in binary mode; 0 - text mode. +% opt.Compact [0|1]: 1- out compact JSON format (remove all newlines and tabs) +% +% opt can be replaced by a list of ('param',value) pairs. The param +% string is equivallent to a field in opt and is case sensitive. +% output: +% json: a string in the JSON format (see http://json.org) +% +% examples: +% jsonmesh=struct('MeshNode',[0 0 0;1 0 0;0 1 0;1 1 0;0 0 1;1 0 1;0 1 1;1 1 1],... +% 'MeshTetra',[1 2 4 8;1 3 4 8;1 2 6 8;1 5 6 8;1 5 7 8;1 3 7 8],... +% 'MeshTri',[1 2 4;1 2 6;1 3 4;1 3 7;1 5 6;1 5 7;... +% 2 8 4;2 8 6;3 8 4;3 8 7;5 8 6;5 8 7],... +% 'MeshCreator','FangQ','MeshTitle','T6 Cube',... +% 'SpecialData',[nan, inf, -inf]); +% savejson('jmesh',jsonmesh) +% savejson('',jsonmesh,'ArrayIndent',0,'FloatFormat','\t%.5g') +% +% license: +% BSD, see LICENSE_BSD.txt files for details +% +% -- this function is part of JSONLab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) +% + +if(nargin==1) + varname=inputname(1); + obj=rootname; + if(isempty(varname)) + varname='root'; + end + rootname=varname; +else + varname=inputname(2); +end +if(length(varargin)==1 && ischar(varargin{1})) + opt=struct('FileName',varargin{1}); +else + opt=varargin2struct(varargin{:}); +end +opt.IsOctave=exist('OCTAVE_VERSION','builtin'); +rootisarray=0; +rootlevel=1; +forceroot=jsonopt('ForceRootName',0,opt); +if((isnumeric(obj) || islogical(obj) || ischar(obj) || isstruct(obj) || iscell(obj)) && isempty(rootname) && forceroot==0) + rootisarray=1; + rootlevel=0; +else + if(isempty(rootname)) + rootname=varname; + end +end +if((isstruct(obj) || iscell(obj))&& isempty(rootname) && forceroot) + rootname='root'; +end + +whitespaces=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n')); +if(jsonopt('Compact',0,opt)==1) + whitespaces=struct('tab','','newline','','sep',','); +end +if(~isfield(opt,'whitespaces_')) + opt.whitespaces_=whitespaces; +end + +nl=whitespaces.newline; + +json=obj2json(rootname,obj,rootlevel,opt); +if(rootisarray) + json=sprintf('%s%s',json,nl); +else + json=sprintf('{%s%s%s}\n',nl,json,nl); +end + +jsonp=jsonopt('JSONP','',opt); +if(~isempty(jsonp)) + json=sprintf('%s(%s);%s',jsonp,json,nl); +end + +% save to a file if FileName is set, suggested by Patrick Rapin +if(~isempty(jsonopt('FileName','',opt))) + if(jsonopt('SaveBinary',0,opt)==1) + fid = fopen(opt.FileName, 'wb'); + fwrite(fid,json); + else + fid = fopen(opt.FileName, 'wt'); + fwrite(fid,json,'char'); + end + fclose(fid); +end + +%%------------------------------------------------------------------------- +function txt=obj2json(name,item,level,varargin) + +if(iscell(item)) + txt=cell2json(name,item,level,varargin{:}); +elseif(isstruct(item)) + txt=struct2json(name,item,level,varargin{:}); +elseif(ischar(item)) + txt=str2json(name,item,level,varargin{:}); +else + txt=mat2json(name,item,level,varargin{:}); +end + +%%------------------------------------------------------------------------- +function txt=cell2json(name,item,level,varargin) +txt=''; +if(~iscell(item)) + error('input is not a cell'); +end + +dim=size(item); +if(ndims(squeeze(item))>2) % for 3D or higher dimensions, flatten to 2D for now + item=reshape(item,dim(1),numel(item)/dim(1)); + dim=size(item); +end +len=numel(item); +ws=jsonopt('whitespaces_',struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n')),varargin{:}); +padding0=repmat(ws.tab,1,level); +padding2=repmat(ws.tab,1,level+1); +nl=ws.newline; +if(len>1) + if(~isempty(name)) + txt=sprintf('%s"%s": [%s',padding0, checkname(name,varargin{:}),nl); name=''; + else + txt=sprintf('%s[%s',padding0,nl); + end +elseif(len==0) + if(~isempty(name)) + txt=sprintf('%s"%s": []',padding0, checkname(name,varargin{:})); name=''; + else + txt=sprintf('%s[]',padding0); + end +end +for j=1:dim(2) + if(dim(1)>1) txt=sprintf('%s%s[%s',txt,padding2,nl); end + for i=1:dim(1) + txt=sprintf('%s%s',txt,obj2json(name,item{i,j},level+(dim(1)>1)+1,varargin{:})); + if(i1) txt=sprintf('%s%s%s]',txt,nl,padding2); end + if(j1) txt=sprintf('%s%s%s]',txt,nl,padding0); end + +%%------------------------------------------------------------------------- +function txt=struct2json(name,item,level,varargin) +txt=''; +if(~isstruct(item)) + error('input is not a struct'); +end +dim=size(item); +if(ndims(squeeze(item))>2) % for 3D or higher dimensions, flatten to 2D for now + item=reshape(item,dim(1),numel(item)/dim(1)); + dim=size(item); +end +len=numel(item); +ws=struct('tab',sprintf('\t'),'newline',sprintf('\n')); +ws=jsonopt('whitespaces_',ws,varargin{:}); +padding0=repmat(ws.tab,1,level); +padding2=repmat(ws.tab,1,level+1); +padding1=repmat(ws.tab,1,level+(dim(1)>1)+(len>1)); +nl=ws.newline; + +if(~isempty(name)) + if(len>1) txt=sprintf('%s"%s": [%s',padding0,checkname(name,varargin{:}),nl); end +else + if(len>1) txt=sprintf('%s[%s',padding0,nl); end +end +for j=1:dim(2) + if(dim(1)>1) txt=sprintf('%s%s[%s',txt,padding2,nl); end + for i=1:dim(1) + names = fieldnames(item(i,j)); + if(~isempty(name) && len==1) + txt=sprintf('%s%s"%s": {%s',txt,padding1, checkname(name,varargin{:}),nl); + else + txt=sprintf('%s%s{%s',txt,padding1,nl); + end + if(~isempty(names)) + for e=1:length(names) + txt=sprintf('%s%s',txt,obj2json(names{e},getfield(item(i,j),... + names{e}),level+(dim(1)>1)+1+(len>1),varargin{:})); + if(e1) txt=sprintf('%s%s%s]',txt,nl,padding2); end + if(j1) txt=sprintf('%s%s%s]',txt,nl,padding0); end + +%%------------------------------------------------------------------------- +function txt=str2json(name,item,level,varargin) +txt=''; +if(~ischar(item)) + error('input is not a string'); +end +item=reshape(item, max(size(item),[1 0])); +len=size(item,1); +ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n')); +ws=jsonopt('whitespaces_',ws,varargin{:}); +padding1=repmat(ws.tab,1,level); +padding0=repmat(ws.tab,1,level+1); +nl=ws.newline; +sep=ws.sep; + +if(~isempty(name)) + if(len>1) txt=sprintf('%s"%s": [%s',padding1,checkname(name,varargin{:}),nl); end +else + if(len>1) txt=sprintf('%s[%s',padding1,nl); end +end +isoct=jsonopt('IsOctave',0,varargin{:}); +for e=1:len + if(isoct) + val=regexprep(item(e,:),'\\','\\'); + val=regexprep(val,'"','\"'); + val=regexprep(val,'^"','\"'); + else + val=regexprep(item(e,:),'\\','\\\\'); + val=regexprep(val,'"','\\"'); + val=regexprep(val,'^"','\\"'); + end + val=escapejsonstring(val); + if(len==1) + obj=['"' checkname(name,varargin{:}) '": ' '"',val,'"']; + if(isempty(name)) obj=['"',val,'"']; end + txt=sprintf('%s%s%s%s',txt,padding1,obj); + else + txt=sprintf('%s%s%s%s',txt,padding0,['"',val,'"']); + end + if(e==len) sep=''; end + txt=sprintf('%s%s',txt,sep); +end +if(len>1) txt=sprintf('%s%s%s%s',txt,nl,padding1,']'); end + +%%------------------------------------------------------------------------- +function txt=mat2json(name,item,level,varargin) +if(~isnumeric(item) && ~islogical(item)) + error('input is not an array'); +end +ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n')); +ws=jsonopt('whitespaces_',ws,varargin{:}); +padding1=repmat(ws.tab,1,level); +padding0=repmat(ws.tab,1,level+1); +nl=ws.newline; +sep=ws.sep; + +if(length(size(item))>2 || issparse(item) || ~isreal(item) || ... + isempty(item) ||jsonopt('ArrayToStruct',0,varargin{:})) + if(isempty(name)) + txt=sprintf('%s{%s%s"_ArrayType_": "%s",%s%s"_ArraySize_": %s,%s',... + padding1,nl,padding0,class(item),nl,padding0,regexprep(mat2str(size(item)),'\s+',','),nl); + else + txt=sprintf('%s"%s": {%s%s"_ArrayType_": "%s",%s%s"_ArraySize_": %s,%s',... + padding1,checkname(name,varargin{:}),nl,padding0,class(item),nl,padding0,regexprep(mat2str(size(item)),'\s+',','),nl); + end +else + if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1 && level>0) + numtxt=regexprep(regexprep(matdata2json(item,level+1,varargin{:}),'^\[',''),']',''); + else + numtxt=matdata2json(item,level+1,varargin{:}); + end + if(isempty(name)) + txt=sprintf('%s%s',padding1,numtxt); + else + if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1) + txt=sprintf('%s"%s": %s',padding1,checkname(name,varargin{:}),numtxt); + else + txt=sprintf('%s"%s": %s',padding1,checkname(name,varargin{:}),numtxt); + end + end + return; +end +dataformat='%s%s%s%s%s'; + +if(issparse(item)) + [ix,iy]=find(item); + data=full(item(find(item))); + if(~isreal(item)) + data=[real(data(:)),imag(data(:))]; + if(size(item,1)==1) + % Kludge to have data's 'transposedness' match item's. + % (Necessary for complex row vector handling below.) + data=data'; + end + txt=sprintf(dataformat,txt,padding0,'"_ArrayIsComplex_": ','1', sep); + end + txt=sprintf(dataformat,txt,padding0,'"_ArrayIsSparse_": ','1', sep); + if(size(item,1)==1) + % Row vector, store only column indices. + txt=sprintf(dataformat,txt,padding0,'"_ArrayData_": ',... + matdata2json([iy(:),data'],level+2,varargin{:}), nl); + elseif(size(item,2)==1) + % Column vector, store only row indices. + txt=sprintf(dataformat,txt,padding0,'"_ArrayData_": ',... + matdata2json([ix,data],level+2,varargin{:}), nl); + else + % General case, store row and column indices. + txt=sprintf(dataformat,txt,padding0,'"_ArrayData_": ',... + matdata2json([ix,iy,data],level+2,varargin{:}), nl); + end +else + if(isreal(item)) + txt=sprintf(dataformat,txt,padding0,'"_ArrayData_": ',... + matdata2json(item(:)',level+2,varargin{:}), nl); + else + txt=sprintf(dataformat,txt,padding0,'"_ArrayIsComplex_": ','1', sep); + txt=sprintf(dataformat,txt,padding0,'"_ArrayData_": ',... + matdata2json([real(item(:)) imag(item(:))],level+2,varargin{:}), nl); + end +end +txt=sprintf('%s%s%s',txt,padding1,'}'); + +%%------------------------------------------------------------------------- +function txt=matdata2json(mat,level,varargin) + +ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'),'sep',sprintf(',\n')); +ws=jsonopt('whitespaces_',ws,varargin{:}); +tab=ws.tab; +nl=ws.newline; + +if(size(mat,1)==1) + pre=''; + post=''; + level=level-1; +else + pre=sprintf('[%s',nl); + post=sprintf('%s%s]',nl,repmat(tab,1,level-1)); +end + +if(isempty(mat)) + txt='null'; + return; +end +floatformat=jsonopt('FloatFormat','%.10g',varargin{:}); +%if(numel(mat)>1) + formatstr=['[' repmat([floatformat ','],1,size(mat,2)-1) [floatformat sprintf('],%s',nl)]]; +%else +% formatstr=[repmat([floatformat ','],1,size(mat,2)-1) [floatformat sprintf(',\n')]]; +%end + +if(nargin>=2 && size(mat,1)>1 && jsonopt('ArrayIndent',1,varargin{:})==1) + formatstr=[repmat(tab,1,level) formatstr]; +end + +txt=sprintf(formatstr,mat'); +txt(end-length(nl):end)=[]; +if(islogical(mat) && jsonopt('ParseLogical',0,varargin{:})==1) + txt=regexprep(txt,'1','true'); + txt=regexprep(txt,'0','false'); +end +%txt=regexprep(mat2str(mat),'\s+',','); +%txt=regexprep(txt,';',sprintf('],\n[')); +% if(nargin>=2 && size(mat,1)>1) +% txt=regexprep(txt,'\[',[repmat(sprintf('\t'),1,level) '[']); +% end +txt=[pre txt post]; +if(any(isinf(mat(:)))) + txt=regexprep(txt,'([-+]*)Inf',jsonopt('Inf','"$1_Inf_"',varargin{:})); +end +if(any(isnan(mat(:)))) + txt=regexprep(txt,'NaN',jsonopt('NaN','"_NaN_"',varargin{:})); +end + +%%------------------------------------------------------------------------- +function newname=checkname(name,varargin) +isunpack=jsonopt('UnpackHex',1,varargin{:}); +newname=name; +if(isempty(regexp(name,'0x([0-9a-fA-F]+)_','once'))) + return +end +if(isunpack) + isoct=jsonopt('IsOctave',0,varargin{:}); + if(~isoct) + newname=regexprep(name,'(^x|_){1}0x([0-9a-fA-F]+)_','${native2unicode(hex2dec($2))}'); + else + pos=regexp(name,'(^x|_){1}0x([0-9a-fA-F]+)_','start'); + pend=regexp(name,'(^x|_){1}0x([0-9a-fA-F]+)_','end'); + if(isempty(pos)) return; end + str0=name; + pos0=[0 pend(:)' length(name)]; + newname=''; + for i=1:length(pos) + newname=[newname str0(pos0(i)+1:pos(i)-1) char(hex2dec(str0(pos(i)+3:pend(i)-1)))]; + end + if(pos(end)~=length(name)) + newname=[newname str0(pos0(end-1)+1:pos0(end))]; + end + end +end + +%%------------------------------------------------------------------------- +function newstr=escapejsonstring(str) +newstr=str; +isoct=exist('OCTAVE_VERSION','builtin'); +if(isoct) + vv=sscanf(OCTAVE_VERSION,'%f'); + if(vv(1)>=3.8) isoct=0; end +end +if(isoct) + escapechars={'\a','\f','\n','\r','\t','\v'}; + for i=1:length(escapechars); + newstr=regexprep(newstr,escapechars{i},escapechars{i}); + end +else + escapechars={'\a','\b','\f','\n','\r','\t','\v'}; + for i=1:length(escapechars); + newstr=regexprep(newstr,escapechars{i},regexprep(escapechars{i},'\\','\\\\')); + end +end diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/saveubjson.m b/Octave/2-Logistic Regression/ex2/lib/jsonlab/saveubjson.m new file mode 100644 index 0000000..eaec433 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/saveubjson.m @@ -0,0 +1,504 @@ +function json=saveubjson(rootname,obj,varargin) +% +% json=saveubjson(rootname,obj,filename) +% or +% json=saveubjson(rootname,obj,opt) +% json=saveubjson(rootname,obj,'param1',value1,'param2',value2,...) +% +% convert a MATLAB object (cell, struct or array) into a Universal +% Binary JSON (UBJSON) binary string +% +% author: Qianqian Fang (fangq nmr.mgh.harvard.edu) +% created on 2013/08/17 +% +% $Id: saveubjson.m 460 2015-01-03 00:30:45Z fangq $ +% +% input: +% rootname: the name of the root-object, when set to '', the root name +% is ignored, however, when opt.ForceRootName is set to 1 (see below), +% the MATLAB variable name will be used as the root name. +% obj: a MATLAB object (array, cell, cell array, struct, struct array) +% filename: a string for the file name to save the output UBJSON data +% opt: a struct for additional options, ignore to use default values. +% opt can have the following fields (first in [.|.] is the default) +% +% opt.FileName [''|string]: a file name to save the output JSON data +% opt.ArrayToStruct[0|1]: when set to 0, saveubjson outputs 1D/2D +% array in JSON array format; if sets to 1, an +% array will be shown as a struct with fields +% "_ArrayType_", "_ArraySize_" and "_ArrayData_"; for +% sparse arrays, the non-zero elements will be +% saved to _ArrayData_ field in triplet-format i.e. +% (ix,iy,val) and "_ArrayIsSparse_" will be added +% with a value of 1; for a complex array, the +% _ArrayData_ array will include two columns +% (4 for sparse) to record the real and imaginary +% parts, and also "_ArrayIsComplex_":1 is added. +% opt.ParseLogical [1|0]: if this is set to 1, logical array elem +% will use true/false rather than 1/0. +% opt.NoRowBracket [1|0]: if this is set to 1, arrays with a single +% numerical element will be shown without a square +% bracket, unless it is the root object; if 0, square +% brackets are forced for any numerical arrays. +% opt.ForceRootName [0|1]: when set to 1 and rootname is empty, saveubjson +% will use the name of the passed obj variable as the +% root object name; if obj is an expression and +% does not have a name, 'root' will be used; if this +% is set to 0 and rootname is empty, the root level +% will be merged down to the lower level. +% opt.JSONP [''|string]: to generate a JSONP output (JSON with padding), +% for example, if opt.JSON='foo', the JSON data is +% wrapped inside a function call as 'foo(...);' +% opt.UnpackHex [1|0]: conver the 0x[hex code] output by loadjson +% back to the string form +% +% opt can be replaced by a list of ('param',value) pairs. The param +% string is equivallent to a field in opt and is case sensitive. +% output: +% json: a binary string in the UBJSON format (see http://ubjson.org) +% +% examples: +% jsonmesh=struct('MeshNode',[0 0 0;1 0 0;0 1 0;1 1 0;0 0 1;1 0 1;0 1 1;1 1 1],... +% 'MeshTetra',[1 2 4 8;1 3 4 8;1 2 6 8;1 5 6 8;1 5 7 8;1 3 7 8],... +% 'MeshTri',[1 2 4;1 2 6;1 3 4;1 3 7;1 5 6;1 5 7;... +% 2 8 4;2 8 6;3 8 4;3 8 7;5 8 6;5 8 7],... +% 'MeshCreator','FangQ','MeshTitle','T6 Cube',... +% 'SpecialData',[nan, inf, -inf]); +% saveubjson('jsonmesh',jsonmesh) +% saveubjson('jsonmesh',jsonmesh,'meshdata.ubj') +% +% license: +% BSD, see LICENSE_BSD.txt files for details +% +% -- this function is part of JSONLab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) +% + +if(nargin==1) + varname=inputname(1); + obj=rootname; + if(isempty(varname)) + varname='root'; + end + rootname=varname; +else + varname=inputname(2); +end +if(length(varargin)==1 && ischar(varargin{1})) + opt=struct('FileName',varargin{1}); +else + opt=varargin2struct(varargin{:}); +end +opt.IsOctave=exist('OCTAVE_VERSION','builtin'); +rootisarray=0; +rootlevel=1; +forceroot=jsonopt('ForceRootName',0,opt); +if((isnumeric(obj) || islogical(obj) || ischar(obj) || isstruct(obj) || iscell(obj)) && isempty(rootname) && forceroot==0) + rootisarray=1; + rootlevel=0; +else + if(isempty(rootname)) + rootname=varname; + end +end +if((isstruct(obj) || iscell(obj))&& isempty(rootname) && forceroot) + rootname='root'; +end +json=obj2ubjson(rootname,obj,rootlevel,opt); +if(~rootisarray) + json=['{' json '}']; +end + +jsonp=jsonopt('JSONP','',opt); +if(~isempty(jsonp)) + json=[jsonp '(' json ')']; +end + +% save to a file if FileName is set, suggested by Patrick Rapin +if(~isempty(jsonopt('FileName','',opt))) + fid = fopen(opt.FileName, 'wb'); + fwrite(fid,json); + fclose(fid); +end + +%%------------------------------------------------------------------------- +function txt=obj2ubjson(name,item,level,varargin) + +if(iscell(item)) + txt=cell2ubjson(name,item,level,varargin{:}); +elseif(isstruct(item)) + txt=struct2ubjson(name,item,level,varargin{:}); +elseif(ischar(item)) + txt=str2ubjson(name,item,level,varargin{:}); +else + txt=mat2ubjson(name,item,level,varargin{:}); +end + +%%------------------------------------------------------------------------- +function txt=cell2ubjson(name,item,level,varargin) +txt=''; +if(~iscell(item)) + error('input is not a cell'); +end + +dim=size(item); +if(ndims(squeeze(item))>2) % for 3D or higher dimensions, flatten to 2D for now + item=reshape(item,dim(1),numel(item)/dim(1)); + dim=size(item); +end +len=numel(item); % let's handle 1D cell first +if(len>1) + if(~isempty(name)) + txt=[S_(checkname(name,varargin{:})) '[']; name=''; + else + txt='['; + end +elseif(len==0) + if(~isempty(name)) + txt=[S_(checkname(name,varargin{:})) 'Z']; name=''; + else + txt='Z'; + end +end +for j=1:dim(2) + if(dim(1)>1) txt=[txt '[']; end + for i=1:dim(1) + txt=[txt obj2ubjson(name,item{i,j},level+(len>1),varargin{:})]; + end + if(dim(1)>1) txt=[txt ']']; end +end +if(len>1) txt=[txt ']']; end + +%%------------------------------------------------------------------------- +function txt=struct2ubjson(name,item,level,varargin) +txt=''; +if(~isstruct(item)) + error('input is not a struct'); +end +dim=size(item); +if(ndims(squeeze(item))>2) % for 3D or higher dimensions, flatten to 2D for now + item=reshape(item,dim(1),numel(item)/dim(1)); + dim=size(item); +end +len=numel(item); + +if(~isempty(name)) + if(len>1) txt=[S_(checkname(name,varargin{:})) '[']; end +else + if(len>1) txt='['; end +end +for j=1:dim(2) + if(dim(1)>1) txt=[txt '[']; end + for i=1:dim(1) + names = fieldnames(item(i,j)); + if(~isempty(name) && len==1) + txt=[txt S_(checkname(name,varargin{:})) '{']; + else + txt=[txt '{']; + end + if(~isempty(names)) + for e=1:length(names) + txt=[txt obj2ubjson(names{e},getfield(item(i,j),... + names{e}),level+(dim(1)>1)+1+(len>1),varargin{:})]; + end + end + txt=[txt '}']; + end + if(dim(1)>1) txt=[txt ']']; end +end +if(len>1) txt=[txt ']']; end + +%%------------------------------------------------------------------------- +function txt=str2ubjson(name,item,level,varargin) +txt=''; +if(~ischar(item)) + error('input is not a string'); +end +item=reshape(item, max(size(item),[1 0])); +len=size(item,1); + +if(~isempty(name)) + if(len>1) txt=[S_(checkname(name,varargin{:})) '[']; end +else + if(len>1) txt='['; end +end +isoct=jsonopt('IsOctave',0,varargin{:}); +for e=1:len + val=item(e,:); + if(len==1) + obj=['' S_(checkname(name,varargin{:})) '' '',S_(val),'']; + if(isempty(name)) obj=['',S_(val),'']; end + txt=[txt,'',obj]; + else + txt=[txt,'',['',S_(val),'']]; + end +end +if(len>1) txt=[txt ']']; end + +%%------------------------------------------------------------------------- +function txt=mat2ubjson(name,item,level,varargin) +if(~isnumeric(item) && ~islogical(item)) + error('input is not an array'); +end + +if(length(size(item))>2 || issparse(item) || ~isreal(item) || ... + isempty(item) || jsonopt('ArrayToStruct',0,varargin{:})) + cid=I_(uint32(max(size(item)))); + if(isempty(name)) + txt=['{' S_('_ArrayType_'),S_(class(item)),S_('_ArraySize_'),I_a(size(item),cid(1)) ]; + else + if(isempty(item)) + txt=[S_(checkname(name,varargin{:})),'Z']; + return; + else + txt=[S_(checkname(name,varargin{:})),'{',S_('_ArrayType_'),S_(class(item)),S_('_ArraySize_'),I_a(size(item),cid(1))]; + end + end +else + if(isempty(name)) + txt=matdata2ubjson(item,level+1,varargin{:}); + else + if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1) + numtxt=regexprep(regexprep(matdata2ubjson(item,level+1,varargin{:}),'^\[',''),']',''); + txt=[S_(checkname(name,varargin{:})) numtxt]; + else + txt=[S_(checkname(name,varargin{:})),matdata2ubjson(item,level+1,varargin{:})]; + end + end + return; +end +if(issparse(item)) + [ix,iy]=find(item); + data=full(item(find(item))); + if(~isreal(item)) + data=[real(data(:)),imag(data(:))]; + if(size(item,1)==1) + % Kludge to have data's 'transposedness' match item's. + % (Necessary for complex row vector handling below.) + data=data'; + end + txt=[txt,S_('_ArrayIsComplex_'),'T']; + end + txt=[txt,S_('_ArrayIsSparse_'),'T']; + if(size(item,1)==1) + % Row vector, store only column indices. + txt=[txt,S_('_ArrayData_'),... + matdata2ubjson([iy(:),data'],level+2,varargin{:})]; + elseif(size(item,2)==1) + % Column vector, store only row indices. + txt=[txt,S_('_ArrayData_'),... + matdata2ubjson([ix,data],level+2,varargin{:})]; + else + % General case, store row and column indices. + txt=[txt,S_('_ArrayData_'),... + matdata2ubjson([ix,iy,data],level+2,varargin{:})]; + end +else + if(isreal(item)) + txt=[txt,S_('_ArrayData_'),... + matdata2ubjson(item(:)',level+2,varargin{:})]; + else + txt=[txt,S_('_ArrayIsComplex_'),'T']; + txt=[txt,S_('_ArrayData_'),... + matdata2ubjson([real(item(:)) imag(item(:))],level+2,varargin{:})]; + end +end +txt=[txt,'}']; + +%%------------------------------------------------------------------------- +function txt=matdata2ubjson(mat,level,varargin) +if(isempty(mat)) + txt='Z'; + return; +end +if(size(mat,1)==1) + level=level-1; +end +type=''; +hasnegtive=(mat<0); +if(isa(mat,'integer') || isinteger(mat) || (isfloat(mat) && all(mod(mat(:),1) == 0))) + if(isempty(hasnegtive)) + if(max(mat(:))<=2^8) + type='U'; + end + end + if(isempty(type)) + % todo - need to consider negative ones separately + id= histc(abs(max(mat(:))),[0 2^7 2^15 2^31 2^63]); + if(isempty(find(id))) + error('high-precision data is not yet supported'); + end + key='iIlL'; + type=key(find(id)); + end + txt=[I_a(mat(:),type,size(mat))]; +elseif(islogical(mat)) + logicalval='FT'; + if(numel(mat)==1) + txt=logicalval(mat+1); + else + txt=['[$U#' I_a(size(mat),'l') typecast(swapbytes(uint8(mat(:)')),'uint8')]; + end +else + if(numel(mat)==1) + txt=['[' D_(mat) ']']; + else + txt=D_a(mat(:),'D',size(mat)); + end +end + +%txt=regexprep(mat2str(mat),'\s+',','); +%txt=regexprep(txt,';',sprintf('],[')); +% if(nargin>=2 && size(mat,1)>1) +% txt=regexprep(txt,'\[',[repmat(sprintf('\t'),1,level) '[']); +% end +if(any(isinf(mat(:)))) + txt=regexprep(txt,'([-+]*)Inf',jsonopt('Inf','"$1_Inf_"',varargin{:})); +end +if(any(isnan(mat(:)))) + txt=regexprep(txt,'NaN',jsonopt('NaN','"_NaN_"',varargin{:})); +end + +%%------------------------------------------------------------------------- +function newname=checkname(name,varargin) +isunpack=jsonopt('UnpackHex',1,varargin{:}); +newname=name; +if(isempty(regexp(name,'0x([0-9a-fA-F]+)_','once'))) + return +end +if(isunpack) + isoct=jsonopt('IsOctave',0,varargin{:}); + if(~isoct) + newname=regexprep(name,'(^x|_){1}0x([0-9a-fA-F]+)_','${native2unicode(hex2dec($2))}'); + else + pos=regexp(name,'(^x|_){1}0x([0-9a-fA-F]+)_','start'); + pend=regexp(name,'(^x|_){1}0x([0-9a-fA-F]+)_','end'); + if(isempty(pos)) return; end + str0=name; + pos0=[0 pend(:)' length(name)]; + newname=''; + for i=1:length(pos) + newname=[newname str0(pos0(i)+1:pos(i)-1) char(hex2dec(str0(pos(i)+3:pend(i)-1)))]; + end + if(pos(end)~=length(name)) + newname=[newname str0(pos0(end-1)+1:pos0(end))]; + end + end +end +%%------------------------------------------------------------------------- +function val=S_(str) +if(length(str)==1) + val=['C' str]; +else + val=['S' I_(int32(length(str))) str]; +end +%%------------------------------------------------------------------------- +function val=I_(num) +if(~isinteger(num)) + error('input is not an integer'); +end +if(num>=0 && num<255) + val=['U' data2byte(swapbytes(cast(num,'uint8')),'uint8')]; + return; +end +key='iIlL'; +cid={'int8','int16','int32','int64'}; +for i=1:4 + if((num>0 && num<2^(i*8-1)) || (num<0 && num>=-2^(i*8-1))) + val=[key(i) data2byte(swapbytes(cast(num,cid{i})),'uint8')]; + return; + end +end +error('unsupported integer'); + +%%------------------------------------------------------------------------- +function val=D_(num) +if(~isfloat(num)) + error('input is not a float'); +end + +if(isa(num,'single')) + val=['d' data2byte(num,'uint8')]; +else + val=['D' data2byte(num,'uint8')]; +end +%%------------------------------------------------------------------------- +function data=I_a(num,type,dim,format) +id=find(ismember('iUIlL',type)); + +if(id==0) + error('unsupported integer array'); +end + +% based on UBJSON specs, all integer types are stored in big endian format + +if(id==1) + data=data2byte(swapbytes(int8(num)),'uint8'); + blen=1; +elseif(id==2) + data=data2byte(swapbytes(uint8(num)),'uint8'); + blen=1; +elseif(id==3) + data=data2byte(swapbytes(int16(num)),'uint8'); + blen=2; +elseif(id==4) + data=data2byte(swapbytes(int32(num)),'uint8'); + blen=4; +elseif(id==5) + data=data2byte(swapbytes(int64(num)),'uint8'); + blen=8; +end + +if(nargin>=3 && length(dim)>=2 && prod(dim)~=dim(2)) + format='opt'; +end +if((nargin<4 || strcmp(format,'opt')) && numel(num)>1) + if(nargin>=3 && (length(dim)==1 || (length(dim)>=2 && prod(dim)~=dim(2)))) + cid=I_(uint32(max(dim))); + data=['$' type '#' I_a(dim,cid(1)) data(:)']; + else + data=['$' type '#' I_(int32(numel(data)/blen)) data(:)']; + end + data=['[' data(:)']; +else + data=reshape(data,blen,numel(data)/blen); + data(2:blen+1,:)=data; + data(1,:)=type; + data=data(:)'; + data=['[' data(:)' ']']; +end +%%------------------------------------------------------------------------- +function data=D_a(num,type,dim,format) +id=find(ismember('dD',type)); + +if(id==0) + error('unsupported float array'); +end + +if(id==1) + data=data2byte(single(num),'uint8'); +elseif(id==2) + data=data2byte(double(num),'uint8'); +end + +if(nargin>=3 && length(dim)>=2 && prod(dim)~=dim(2)) + format='opt'; +end +if((nargin<4 || strcmp(format,'opt')) && numel(num)>1) + if(nargin>=3 && (length(dim)==1 || (length(dim)>=2 && prod(dim)~=dim(2)))) + cid=I_(uint32(max(dim))); + data=['$' type '#' I_a(dim,cid(1)) data(:)']; + else + data=['$' type '#' I_(int32(numel(data)/(id*4))) data(:)']; + end + data=['[' data]; +else + data=reshape(data,(id*4),length(data)/(id*4)); + data(2:(id*4+1),:)=data; + data(1,:)=type; + data=data(:)'; + data=['[' data(:)' ']']; +end +%%------------------------------------------------------------------------- +function bytes=data2byte(varargin) +bytes=typecast(varargin{:}); +bytes=bytes(:)'; diff --git a/Octave/2-Logistic Regression/ex2/lib/jsonlab/varargin2struct.m b/Octave/2-Logistic Regression/ex2/lib/jsonlab/varargin2struct.m new file mode 100644 index 0000000..9a5c2b6 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/lib/jsonlab/varargin2struct.m @@ -0,0 +1,40 @@ +function opt=varargin2struct(varargin) +% +% opt=varargin2struct('param1',value1,'param2',value2,...) +% or +% opt=varargin2struct(...,optstruct,...) +% +% convert a series of input parameters into a structure +% +% authors:Qianqian Fang (fangq nmr.mgh.harvard.edu) +% date: 2012/12/22 +% +% input: +% 'param', value: the input parameters should be pairs of a string and a value +% optstruct: if a parameter is a struct, the fields will be merged to the output struct +% +% output: +% opt: a struct where opt.param1=value1, opt.param2=value2 ... +% +% license: +% BSD, see LICENSE_BSD.txt files for details +% +% -- this function is part of jsonlab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) +% + +len=length(varargin); +opt=struct; +if(len==0) return; end +i=1; +while(i<=len) + if(isstruct(varargin{i})) + opt=mergestruct(opt,varargin{i}); + elseif(ischar(varargin{i}) && i3 matrix, where the first column is all-ones + +% Plot Data +plotData(X(:,2:3), y); +hold on + +if size(X, 2) <= 3 + % Only need 2 points to define a line, so choose two endpoints + plot_x = [min(X(:,2))-2, max(X(:,2))+2]; + + % Calculate the decision boundary line + plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1)); + + % Plot, and adjust axes for better viewing + plot(plot_x, plot_y) + + % Legend, specific for the exercise + legend('Admitted', 'Not admitted', 'Decision Boundary') + axis([30, 100, 30, 100]) +else + % Here is the grid range + u = linspace(-1, 1.5, 50); + v = linspace(-1, 1.5, 50); + + z = zeros(length(u), length(v)); + % Evaluate z = theta*x over the grid + for i = 1:length(u) + for j = 1:length(v) + z(i,j) = mapFeature(u(i), v(j))*theta; + end + end + z = z'; % important to transpose z before calling contour + + % Plot z = 0 + % Notice you need to specify the range [0, 0] + contour(u, v, z, [0, 0], 'LineWidth', 2) +end +hold off + +end diff --git a/Octave/2-Logistic Regression/ex2/predict.m b/Octave/2-Logistic Regression/ex2/predict.m new file mode 100644 index 0000000..d5d0620 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/predict.m @@ -0,0 +1,27 @@ +function p = predict(theta, X) +%PREDICT Predict whether the label is 0 or 1 using learned logistic +%regression parameters theta +% p = PREDICT(theta, X) computes the predictions for X using a +% threshold at 0.5 (i.e., if sigmoid(theta'*x) >= 0.5, predict 1) + +m = size(X, 1); % Number of training examples + +% You need to return the following variables correctly +p = zeros(m, 1); +p = round(sigmoid(X * theta)); +% ====================== YOUR CODE HERE ====================== +% Instructions: Complete the following code to make predictions using +% your learned logistic regression parameters. +% You should set p to a vector of 0's and 1's +% + + + + + + + +% ========================================================================= + + +end diff --git a/Octave/2-Logistic Regression/ex2/sigmoid.m b/Octave/2-Logistic Regression/ex2/sigmoid.m new file mode 100644 index 0000000..cb99f5e --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/sigmoid.m @@ -0,0 +1,18 @@ +function g = sigmoid(z) +%SIGMOID Compute sigmoid functoon +% J = SIGMOID(z) computes the sigmoid of z. + +% You need to return the following variables correctly +g = zeros(size(z)); + +% ====================== YOUR CODE HERE ====================== +% Instructions: Compute the sigmoid of each value of z (z can be a matrix, +% vector or scalar). + + + + + +% ============================================================= +g = 1./(1 + exp(-1*z)); +end diff --git a/Octave/2-Logistic Regression/ex2/submit.m b/Octave/2-Logistic Regression/ex2/submit.m new file mode 100644 index 0000000..8ae80d6 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/submit.m @@ -0,0 +1,62 @@ +function submit() + addpath('./lib'); + + conf.assignmentSlug = 'logistic-regression'; + conf.itemName = 'Logistic Regression'; + conf.partArrays = { ... + { ... + '1', ... + { 'sigmoid.m' }, ... + 'Sigmoid Function', ... + }, ... + { ... + '2', ... + { 'costFunction.m' }, ... + 'Logistic Regression Cost', ... + }, ... + { ... + '3', ... + { 'costFunction.m' }, ... + 'Logistic Regression Gradient', ... + }, ... + { ... + '4', ... + { 'predict.m' }, ... + 'Predict', ... + }, ... + { ... + '5', ... + { 'costFunctionReg.m' }, ... + 'Regularized Logistic Regression Cost', ... + }, ... + { ... + '6', ... + { 'costFunctionReg.m' }, ... + 'Regularized Logistic Regression Gradient', ... + }, ... + }; + conf.output = @output; + + submitWithConfiguration(conf); +end + +function out = output(partId, auxstring) + % Random Test Cases + X = [ones(20,1) (exp(1) * sin(1:1:20))' (exp(0.5) * cos(1:1:20))']; + y = sin(X(:,1) + X(:,2)) > 0; + if partId == '1' + out = sprintf('%0.5f ', sigmoid(X)); + elseif partId == '2' + out = sprintf('%0.5f ', costFunction([0.25 0.5 -0.5]', X, y)); + elseif partId == '3' + [cost, grad] = costFunction([0.25 0.5 -0.5]', X, y); + out = sprintf('%0.5f ', grad); + elseif partId == '4' + out = sprintf('%0.5f ', predict([0.25 0.5 -0.5]', X)); + elseif partId == '5' + out = sprintf('%0.5f ', costFunctionReg([0.25 0.5 -0.5]', X, y, 0.1)); + elseif partId == '6' + [cost, grad] = costFunctionReg([0.25 0.5 -0.5]', X, y, 0.1); + out = sprintf('%0.5f ', grad); + end +end diff --git a/Octave/2-Logistic Regression/ex2/token.mat b/Octave/2-Logistic Regression/ex2/token.mat new file mode 100644 index 0000000..6d653d3 --- /dev/null +++ b/Octave/2-Logistic Regression/ex2/token.mat @@ -0,0 +1,15 @@ +# Created by Octave 4.0.0, Sat May 21 01:06:03 2016 IST +# name: email +# type: sq_string +# elements: 1 +# length: 26 +avaispagarkar123@gmail.com + + +# name: token +# type: sq_string +# elements: 1 +# length: 16 +Y39wURrES4bJjByo + + diff --git a/Python/1-Linear Regression/.ipynb_checkpoints/intuition-checkpoint.ipynb b/Python/1-Linear Regression/.ipynb_checkpoints/intuition-checkpoint.ipynb new file mode 100644 index 0000000..2228eb6 --- /dev/null +++ b/Python/1-Linear Regression/.ipynb_checkpoints/intuition-checkpoint.ipynb @@ -0,0 +1,468 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "datafile = 'data/ex1data1.txt'\n", + "cols = np.loadtxt(datafile,delimiter=',',usecols=(0,1),unpack=True) #Read in comma separated data\n", + "#Form the usual \"X\" matrix and \"y\" vector\n", + "X = np.transpose(np.array(cols[:-1]))\n", + "y = np.transpose(np.array(cols[-1:]))\n", + "m = y.size # number of training examples\n", + "#Insert the usual column of 1's into the \"X\" matrix\n", + "X = np.insert(X,0,1,axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0, 'Population of City in 10,000s')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Plot the data to see what it looks like\n", + "plt.figure(figsize=(10,6))\n", + "plt.plot(X[:,1],y[:,0],'rx',markersize=10)\n", + "plt.grid(True) #Always plot.grid true!\n", + "plt.ylabel('Profit in $10,000s')\n", + "plt.xlabel('Population of City in 10,000s')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#gradient decent\n", + "iterations = 1500\n", + "alpha = 0.01" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "32.072733877455676\n" + ] + } + ], + "source": [ + "def h(theta,X): #Linear hypothesis function\n", + " return np.dot(X,theta)\n", + "\n", + "def computeCost(mytheta,X,y): #Cost function\n", + " \"\"\"\n", + " theta_start is an n- dimensional vector of initial theta guess\n", + " X is matrix with n- columns and m- rows\n", + " y is a matrix with m- rows and 1 column\n", + " \"\"\"\n", + " #note to self: *.shape is (rows, columns)\n", + " return float((1./(2*m)) * np.dot((h(mytheta,X)-y).T,(h(mytheta,X)-y)))\n", + "\n", + "#Test that running computeCost with 0's as theta returns 32.07:\n", + "\n", + "initial_theta = np.zeros((X.shape[1],1)) #(theta is a vector with n rows and 1 columns (if X has n features) )\n", + "print(computeCost(initial_theta,X,y))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#Actual gradient descent minimizing routine\n", + "def descendGradient(X, theta_start = np.zeros(2)):\n", + " \"\"\"\n", + " theta_start is an n- dimensional vector of initial theta guess\n", + " X is matrix with n- columns and m- rows\n", + " \"\"\"\n", + " theta = theta_start\n", + " jvec = [] #Used to plot cost as function of iteration\n", + " thetahistory = [] #Used to visualize the minimization path later on\n", + " for meaninglessvariable in range(iterations):\n", + " tmptheta = theta\n", + " jvec.append(computeCost(theta,X,y))\n", + " # Buggy line\n", + " #thetahistory.append(list(tmptheta))\n", + " # Fixed line\n", + " thetahistory.append(list(theta[:,0]))\n", + " #Simultaneously updating theta values\n", + " for j in range(len(tmptheta)):\n", + " tmptheta[j] = theta[j] - (alpha/m)*np.sum((h(theta,X) - y)*np.array(X[:,j]).reshape(m,1))\n", + " theta = tmptheta\n", + " return theta, thetahistory, jvec" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Actually run gradient descent to get the best-fit theta values\n", + "initial_theta = np.zeros((X.shape[1],1))\n", + "theta, thetahistory, jvec = descendGradient(X,initial_theta)\n", + "\n", + "#Plot the convergence of the cost function\n", + "def plotConvergence(jvec):\n", + " plt.figure(figsize=(10,6))\n", + " plt.plot(range(len(jvec)),jvec,'bo')\n", + " plt.grid(True)\n", + " plt.title(\"Convergence of Cost Function\")\n", + " plt.xlabel(\"Iteration number\")\n", + " plt.ylabel(\"Cost function\")\n", + " dummy = plt.xlim([-0.05*iterations,1.05*iterations])\n", + " #dummy = plt.ylim([4,8])\n", + "\n", + "\n", + "plotConvergence(jvec)\n", + "dummy = plt.ylim([4,7])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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fR5qPPXUU5GXl4eTTjoJxx57LM4+++yEv8ZNN92E0aNHIy8vr/bWoUMHy3OvuOIKtGzZEvv378f555+PpUuXAgAGDx6MBx54AHl5eejRowdOP/302sf85je/Qe/evXHKKadgwYIFtucRERGlpNgsEAolb7pRKZXyt4KCAhVr7dq19Y7VU1amVKdO+qPL/Tt37nR/vhR18OBBtXfvXqWUUp988onq3r27OnjwYMJfJ537KEip0k+e/o8kUTgcTnYT0gL7yRv2kzdZ2U92WcDmeCL6CMAqZZNpMnvEq6LCOc0aI18VFUBfyy2V0sLu3bsxcOBAHDp0CEop3H///bVThERERFnL6erFAGe/zDL73XniRPdzjCHHXbv8b49PcnNzsXr16mQ3g4iIKLXEMwDD4EVERETUCPEMwAQkO65qJCIiIkoBDF5EREREAWHwIiIiIgoIg1cj5OTkRH398MMP43e/+11CX6O8vLx2M2wAuPrqq/Hkk082+nmvu+46T4VWYzl9j0opnHvuudi5c6ft47ds2YILL7ww7td1s2/fPpx22mm1WyZNmzbN9twlS5YgLy8PPXv2xK9//euo+3bu3ImuXbsm5N9x69atCIVCyMnJcXy+J554Aj179kSTJk2watWq2uOLFi1Cnz59am9NmjRx3fyciIhSGxfXp7jy8nLk5OTgrLPOSujzPvjggwl9PgB4/vnnccopp6B9+/a25xxxxBHo0qUL3nrrrYQWk23ZsiXKysqQk5ODgwcPol+/fhg0aBDOOOOMqPPWr1+PWbNm4a233sJhhx2G7777Lur+4uJinHPOOZ5es3v37rZ7agJAq1atMHPmTKxZswZr1qyxPa9Xr15YunQprr/++qjjI0aMwIgRIwDoHQmKiorQp08fT20jIqLUxBEvH+zatQvHHXccDh48CECPohhfDxgwADfffDP69OmDXr164Z133gEAbNu2DUVFRejduzfOOOMMvP/++9i4cSPmz5+Pe+65B3369MEbb7wBAHj99ddx1lln4fjjj48a/br77rtRWFiI3r1714747NmzB4MHD8Ypp5yCXr16YfHixQCAAQMGYNWqVaiursbVV1+NXr164eSTT8Y999zj+v19/fXXuPDCC3HiiSdioumKkUWLFuFXv/oVAKCiogK9e/fGvn37sGfPHvTs2bM2fBQVFWHRokWN7eYoIlI7Annw4EEcPHgQIlLvvL///e+48cYbcdhhhwEAjjzyyNr7Vq9ejW+//Rbnn39+QtrUtm1b9OvXD61atXI87+c//zl69OjheM7jjz9euxH6F198gRNPPBHff/89ampq0L9/f6xcuTIhbSaiBCopcd+WJhzW51HWyIgRr9//HmjsDEx1dWs0bVr3dZ8+wJ/+5PyYvXv3Ro1AbNu2DUOGDEG7du0wYMAAPPfccygqKkJpaSmGDRuG5s2bAwB+/PFHVFVV4fXXX8e1116LNWvWYNq0acjPz8fy5ctRVlaG0aNHo6qqCjfccANycnIwYcIEAMA//vEPbN68GW+++SbWrVuHIUOG4LLLLsPKlSuxfv16vPPOO1BKYciQIXj99dexZcsWHH300XjuuecA6L0WzaqqqvDVV1/VhqLt27cDAObPnw8AuOGGG+p931VVVaisrETLli3Ro0cP3HTTTejWrRveeust3H///QCAwsJCDBkyBFOmTMHevXsxcuRI9OrVCwDQt29fTJkypd7z7tq1C/3797fs63/+85/Iy8tz/Peorq5GQUEBPv30U9x4442W2xl98sknAPT+ltXV1bj99ttx4YUXoqamBrfeeisWLlyIV155xfF1kmHx4sV4+umnAQDHHnssJk2ahHHjxuG0005DXl5ewsIiESVQYaFzcU5zcU/KGhkRvJKldevWUWtuHn744do1Otdddx1KSkpQVFSEBQsW4O9//3vteVdddRUA4JxzzsHOnTuxfft2vPnmm3jqqacAAOeeey62bt1qu1aqqKgITZo0QV5eHr799lsAwMqVK7Fy5Urk5+cD0NXs169fj/79++PWW2/FpEmTcPHFF9cLNscffzw+++wz3HTTTRg8eHDtG7hV4DIMHDiwdi/IvLw8fPHFF+jWrRu2bduGdu3a1Z43depUFBYWolWrVvjzn/9ce/zII4/E119/Xe9527Vr16g1TE2bNkVVVRW2b9+OoUOHYs2aNbVhz3Do0CGsX78e5eXl2LRpE8455xx88MEHWLhwIS666CJ07drV8TVuvPFGvPXWWwD0yJ8RvC+//HL88Y9/bHDbnfz73/9GmzZtor6X6667Dk888QTmz5/PdV9EqcqpMrpTRXXKaBkRvNxGprzYtWtvVGhorLPPPhsbN25EeXk5qquro940Y6fArKbEnLRs2bL2c70llP44efLkeuuEAODdd9/F888/jylTpmDgwIGYOnVq7X2HHXYY3nvvPbz00kuYP38+lixZgoceesjz6zdt2hSHDh0CADRr1gw1NTVo0kTPYG/duhW7d+/GwYMHsW/fPrRt2xaAXgjfunXres8bz4jXl19+iUsuuQSADonmoJibm4tQKIQXX3yxXvDq2rUrTj/9dDRv3hzHHXccfvazn2H9+vX4v//7P7zxxhv429/+ht27d+PAgQPIycnBnXfeGfX4++67r/bz7t27BxJ6SktLa8O64ccff8SmTZsA6JCdyJ9dIkogq/DF0JXVMiJ4parRo0fj17/+NYqLi6OOL168GKFQCG+++SY6dOiADh06oH///li0aBGKi4tRXl6OTp06oX379mjXrp3jVYKGCy64AMXFxRgxYgRycnLw1VdfoXnz5jh06BAOP/xwjBw5Erm5ufUW1X///fdo0aIFLr30UvTo0QMjR45s8Pfbo0cPfPbZZzjhhBMAANdffz1mzpyJzz//HJMmTcJf//pXAHq6LzYQAfGNeHXr1i3q3C1btqB58+bIzc3F3r178fLLL2PSpEn1HldUVITHH38c11xzDb7//nt88sknOP7446PWnBkjl7GhKxlqamqwZMmS2vV9hkmTJmHEiBE49thj8dvf/hbPPvtsklpIRK7M4WvcOGDePIauLMbg5aMRI0ZgypQp9UYrWrVqhfz8fBw8eLB2dOn222/Htddei969e6NNmzZ45JFHAACXXHIJLrvsMjz99NP4y1/+Yvta559/Pj766COceeaZAHSpi4ULF+LTTz/FH/7wBzRp0gTNmzfHvHnzoh731Vdf4ZprrkFNTQ0AYNasWQCc13jZGTx4MMrLy3HCCSfg0UcfRfPmzfHrX/8a1dXVOOuss1BWVoZzzz0X4XAYgwcP9vy8XmzevBljxoxBdXU1ampqMHz4cFx88cUA9JRn3759MWTIEFxwwQVYuXIl8vLy0LRpU9x9993o2LFjQtti1r17d+zcuRMHDhzA8uXLa1/7uuuuww033IC+ffti2bJluOmmm7BlyxYMHjwYffr0wUsvvQRAX0jRrVs3HH/88bXP+dprr6GiogJvvfUWmjZtiqeeegoLFizANddc49v3QUSNFArp0DVzJlBczNCVzZRSKX8rKChQsdauXVvvWGPs3Lkzoc+nlFJPPPGEGjlyZNSx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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Plot the line on top of the data to ensure it looks correct\n", + "def myfit(xval):\n", + " return theta[0] + theta[1]*xval\n", + "plt.figure(figsize=(10,6))\n", + "plt.plot(X[:,1],y[:,0],'rx',markersize=10,label='Training Data')\n", + "plt.plot(X[:,1],myfit(X[:,1]),'b-',label = 'Hypothesis: h(x) = %0.2f + %0.2fx'%(theta[0],theta[1]))\n", + "plt.grid(True) #Always plot.grid true!\n", + "plt.ylabel('Profit in $10,000s')\n", + "plt.xlabel('Population of City in 10,000s')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Import necessary matplotlib tools for 3d plots\n", + "from mpl_toolkits.mplot3d import axes3d, Axes3D\n", + "from matplotlib import cm\n", + "import itertools\n", + "\n", + "fig = plt.figure(figsize=(12,12))\n", + "ax = fig.gca(projection='3d')\n", + "\n", + "xvals = np.arange(-10,10,.5)\n", + "yvals = np.arange(-1,4,.1)\n", + "myxs, myys, myzs = [], [], []\n", + "for david in xvals:\n", + " for kaleko in yvals:\n", + " myxs.append(david)\n", + " myys.append(kaleko)\n", + " myzs.append(computeCost(np.array([[david], [kaleko]]),X,y))\n", + "\n", + "scat = ax.scatter(myxs,myys,myzs,c=np.abs(myzs),cmap=plt.get_cmap('YlOrRd'))\n", + "\n", + "plt.xlabel(r'$\\theta_0$',fontsize=30)\n", + "plt.ylabel(r'$\\theta_1$',fontsize=30)\n", + "plt.title('Cost (Minimization Path Shown in Blue)',fontsize=30)\n", + "plt.plot([x[0] for x in thetahistory],[x[1] for x in thetahistory],jvec,'bo-')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "datafile = 'data/ex1data2.txt'\n", + "#Read into the data file\n", + "cols = np.loadtxt(datafile,delimiter=',',usecols=(0,1,2),unpack=True) #Read in comma separated data\n", + "#Form the usual \"X\" matrix and \"y\" vector\n", + "X = np.transpose(np.array(cols[:-1]))\n", + "y = np.transpose(np.array(cols[-1:]))\n", + "m = y.size # number of training examples\n", + "#Insert the usual column of 1's into the \"X\" matrix\n", + "X = np.insert(X,0,1,axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Quick visualize data\n", + "plt.grid(True)\n", + "plt.xlim([-100,5000])\n", + "dummy = plt.hist(X[:,0],label = 'col1')\n", + "dummy = plt.hist(X[:,1],label = 'col2')\n", + "dummy = plt.hist(X[:,2],label = 'col3')\n", + "plt.title('Clearly we need feature normalization.')\n", + "plt.xlabel('Column Value')\n", + "plt.ylabel('Counts')\n", + "dummy = plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "#Feature normalizing the columns (subtract mean, divide by standard deviation)\n", + "#Store the mean and std for later use\n", + "#Note don't modify the original X matrix, use a copy\n", + "stored_feature_means, stored_feature_stds = [], []\n", + "Xnorm = X.copy()\n", + "for icol in range(Xnorm.shape[1]):\n", + " stored_feature_means.append(np.mean(Xnorm[:,icol]))\n", + " stored_feature_stds.append(np.std(Xnorm[:,icol]))\n", + " #Skip the first column\n", + " if not icol: continue\n", + " #Faster to not recompute the mean and std again, just used stored values\n", + " Xnorm[:,icol] = (Xnorm[:,icol] - stored_feature_means[-1])/stored_feature_stds[-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Quick visualize the feature-normalized data\n", + "plt.grid(True)\n", + "plt.xlim([-5,5])\n", + "dummy = plt.hist(Xnorm[:,0],label = 'col1')\n", + "dummy = plt.hist(Xnorm[:,1],label = 'col2')\n", + "dummy = plt.hist(Xnorm[:,2],label = 'col3')\n", + "plt.title('Feature Normalization Accomplished')\n", + "plt.xlabel('Column Value')\n", + "plt.ylabel('Counts')\n", + "dummy = plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Run gradient descent with multiple variables, initial theta still set to zeros\n", + "#(Note! This doesn't work unless we feature normalize! \"overflow encountered in multiply\")\n", + "initial_theta = np.zeros((Xnorm.shape[1],1))\n", + "theta, thetahistory, jvec = descendGradient(Xnorm,initial_theta)\n", + "\n", + "#Plot convergence of cost function:\n", + "plotConvergence(jvec)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Check of result: What is price of house with 1650 square feet and 3 bedrooms?\n", + "$293098.15\n" + ] + } + ], + "source": [ + "#print \"Final result theta parameters: \\n\",theta\n", + "print(\"Check of result: What is price of house with 1650 square feet and 3 bedrooms?\")\n", + "ytest = np.array([1650.,3.])\n", + "#To \"undo\" feature normalization, we \"undo\" 1650 and 3, then plug it into our hypothesis\n", + "ytestscaled = [(ytest[x]-stored_feature_means[x+1])/stored_feature_stds[x+1] for x in range(len(ytest))]\n", + "ytestscaled.insert(0,1)\n", + "print(\"$%0.2f\" % float(h(theta,ytestscaled)))" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy.linalg import inv\n", + "#Implementation of normal equation to find analytic solution to linear regression\n", + "def normEqtn(X,y):\n", + " #restheta = np.zeros((X.shape[1],1))\n", + " return np.dot(np.dot(inv(np.dot(X.T,X)),X.T),y)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normal equation prediction for price of house with 1650 square feet and 3 bedrooms\n", + "$293081.46\n" + ] + } + ], + "source": [ + "print (\"Normal equation prediction for price of house with 1650 square feet and 3 bedrooms\")\n", + "print (\"$%0.2f\" % float(h(normEqtn(X,y),[1,1650.,3])))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Python/1-Linear Regression/data/.ipynb_checkpoints/ex1data1-checkpoint.txt b/Python/1-Linear Regression/data/.ipynb_checkpoints/ex1data1-checkpoint.txt new file mode 100644 index 0000000..0f88ccb --- /dev/null +++ b/Python/1-Linear Regression/data/.ipynb_checkpoints/ex1data1-checkpoint.txt @@ -0,0 +1,97 @@ +6.1101,17.592 +5.5277,9.1302 +8.5186,13.662 +7.0032,11.854 +5.8598,6.8233 +8.3829,11.886 +7.4764,4.3483 +8.5781,12 +6.4862,6.5987 +5.0546,3.8166 +5.7107,3.2522 +14.164,15.505 +5.734,3.1551 +8.4084,7.2258 +5.6407,0.71618 +5.3794,3.5129 +6.3654,5.3048 +5.1301,0.56077 +6.4296,3.6518 +7.0708,5.3893 +6.1891,3.1386 +20.27,21.767 +5.4901,4.263 +6.3261,5.1875 +5.5649,3.0825 +18.945,22.638 +12.828,13.501 +10.957,7.0467 +13.176,14.692 +22.203,24.147 +5.2524,-1.22 +6.5894,5.9966 +9.2482,12.134 +5.8918,1.8495 +8.2111,6.5426 +7.9334,4.5623 +8.0959,4.1164 +5.6063,3.3928 +12.836,10.117 +6.3534,5.4974 +5.4069,0.55657 +6.8825,3.9115 +11.708,5.3854 +5.7737,2.4406 +7.8247,6.7318 +7.0931,1.0463 +5.0702,5.1337 +5.8014,1.844 +11.7,8.0043 +5.5416,1.0179 +7.5402,6.7504 +5.3077,1.8396 +7.4239,4.2885 +7.6031,4.9981 +6.3328,1.4233 +6.3589,-1.4211 +6.2742,2.4756 +5.6397,4.6042 +9.3102,3.9624 +9.4536,5.4141 +8.8254,5.1694 +5.1793,-0.74279 +21.279,17.929 +14.908,12.054 +18.959,17.054 +7.2182,4.8852 +8.2951,5.7442 +10.236,7.7754 +5.4994,1.0173 +20.341,20.992 +10.136,6.6799 +7.3345,4.0259 +6.0062,1.2784 +7.2259,3.3411 +5.0269,-2.6807 +6.5479,0.29678 +7.5386,3.8845 +5.0365,5.7014 +10.274,6.7526 +5.1077,2.0576 +5.7292,0.47953 +5.1884,0.20421 +6.3557,0.67861 +9.7687,7.5435 +6.5159,5.3436 +8.5172,4.2415 +9.1802,6.7981 +6.002,0.92695 +5.5204,0.152 +5.0594,2.8214 +5.7077,1.8451 +7.6366,4.2959 +5.8707,7.2029 +5.3054,1.9869 +8.2934,0.14454 +13.394,9.0551 +5.4369,0.61705 diff --git a/Python/1-Linear Regression/ex1.pdf b/Python/1-Linear Regression/ex1.pdf new file mode 100644 index 0000000..dda3e96 Binary files /dev/null and b/Python/1-Linear Regression/ex1.pdf differ diff --git a/Python/1-Linear Regression/intuition.ipynb b/Python/1-Linear Regression/intuition.ipynb index 207a929..b6a9635 100644 --- a/Python/1-Linear Regression/intuition.ipynb +++ b/Python/1-Linear Regression/intuition.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 17, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -57,7 +57,7 @@ "source": [ "#Plot the data to see what it looks like\n", "plt.figure(figsize=(10,6))\n", - "plt.plot(df.A,df.B,'rx',markersize=10)\n", + "plt.plot(X[:,1],y[:,0],'rx',markersize=10)\n", "plt.grid(True) #Always plot.grid true!\n", "plt.ylabel('Profit in $10,000s')\n", "plt.xlabel('Population of City in 10,000s')" @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -76,15 +76,19 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 22, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "32.072733877455676\n" - ] + "data": { + "text/plain": [ + "array([[0.],\n", + " [0.]])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -108,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -137,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -176,16 +180,16 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 35, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, @@ -217,7 +221,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 21, "metadata": {}, "outputs": [ { diff --git a/Python/2-Logistic Regression/.ipynb_checkpoints/1. logistic_regression_v1-checkpoint.ipynb b/Python/2-Logistic Regression/.ipynb_checkpoints/1. logistic_regression_v1-checkpoint.ipynb new file mode 100644 index 0000000..44363ec --- /dev/null +++ b/Python/2-Logistic Regression/.ipynb_checkpoints/1. logistic_regression_v1-checkpoint.ipynb @@ -0,0 +1,1887 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. logistic_regression\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "plt.style.use('fivethirtyeight')\n", + "import matplotlib.pyplot as plt\n", + "# import tensorflow as tf\n", + "from sklearn.metrics import classification_report" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
exam1exam2admitted
034.62366078.0246930
130.28671143.8949980
235.84740972.9021980
360.18259986.3085521
479.03273675.3443761
\n", + "
" + ], + "text/plain": [ + " exam1 exam2 admitted\n", + "0 34.623660 78.024693 0\n", + "1 30.286711 43.894998 0\n", + "2 35.847409 72.902198 0\n", + "3 60.182599 86.308552 1\n", + "4 79.032736 75.344376 1" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('ex2data1.txt', names=['exam1', 'exam2', 'admitted'])\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
exam1exam2admitted
count100.000000100.000000100.000000
mean65.64427466.2219980.600000
std19.45822218.5827830.492366
min30.05882230.6032630.000000
25%50.91951148.1792050.000000
50%67.03298867.6823811.000000
75%80.21252979.3606051.000000
max99.82785898.8694361.000000
\n", + "
" + ], + "text/plain": [ + " exam1 exam2 admitted\n", + "count 100.000000 100.000000 100.000000\n", + "mean 65.644274 66.221998 0.600000\n", + "std 19.458222 18.582783 0.492366\n", + "min 30.058822 30.603263 0.000000\n", + "25% 50.919511 48.179205 0.000000\n", + "50% 67.032988 67.682381 1.000000\n", + "75% 80.212529 79.360605 1.000000\n", + "max 99.827858 98.869436 1.000000" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set(context=\"notebook\", style=\"darkgrid\", palette=sns.color_palette(\"RdBu\", 2))\n", + "\n", + "sns.lmplot('exam1', 'exam2', hue='admitted', data=data, \n", + " size=6, \n", + " fit_reg=False, \n", + " scatter_kws={\"s\": 50}\n", + " )\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def get_X(df):\n", + "# \"\"\"\n", + "# use concat to add intersect feature to avoid side effect\n", + "# not efficient for big dataset though\n", + "# \"\"\"\n", + " ones = pd.DataFrame({'ones': np.ones(len(df))})\n", + " data = pd.concat([ones, df], axis=1) \n", + " return data.iloc[:, :-1].as_matrix() \n", + "\n", + "\n", + "def get_y(df):\n", + "# '''assume the last column is the target'''\n", + " return np.array(df.iloc[:, -1])#df.iloc[:, -1]\n", + "\n", + "\n", + "def normalize_feature(df):\n", + "# \"\"\"Applies function along input axis(default 0) of DataFrame.\"\"\"\n", + " return df.apply(lambda column: (column - column.mean()) / column.std())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(100, 3)\n", + "(100,)\n" + ] + } + ], + "source": [ + "X = get_X(data)\n", + "print(X.shape)\n", + "\n", + "y = get_y(data)\n", + "print(y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " return 1 / (1 + np.exp(-z))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGmCAYAAABbQQ/3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8FPXh//H37Mxu7kASAnIFIQLWogJq1a8iFkXrfaAC\nKrFK61WtWopH+9V6IKjVflW8rdXWeoBoW/HXaouiWKwWUFSsULkiAYUkJCSba4/5/P4IrIQkSEKS\nye6+no8Hj92d2Z19T5bdvDOfmVnLGGMEAAAQB3xeBwAAANhTFBcAABA3KC4AACBuUFwAAEDcoLgA\nAIC4QXEBAABxg+ICJJgbb7xRw4cP9zpGi2bPnq3hw4erpKSkQ+733nvv6aSTTtKIESN0/vnnd2TU\nNnFdt0nWDz74QMOHD9crr7ziWSYgUTleBwDQsSZOnKgjjzzS6xgtGj9+vAoKCpSbm7vXy3JdV9Om\nTZNt27rpppu0zz77dEDCtgsGg/rhD3+osWPH6uqrr5YkFRYW6p577tHo0aM9yQQkMooLkGBGjRql\nUaNGeR2jRfvvv7/233//DllWaWmptm7dqosvvlgXXHBBhyyzPSorK/Xpp59q7NixsWm9evXSGWec\n4VkmIJExVAQgLoXDYUlSRkaGx0kAdCWKCxBHtm3bphtvvFHHHnusRowYoeOPP1733XefGhoaYvdp\naR+XtWvX6oorrtChhx6qww8/XDNmzNDcuXOb7Ecye/ZsjRo1SqtXr9bFF1+skSNHasyYMXryySdl\njNFTTz2lY489VqNGjdLUqVOb7X+yceNGTZ8+XUcccYQOPPBAnX766Zo7d26T+7S078qXX36pq6++\nWocddpgOP/xw3X333bFS0prZs2fruOOOkyQ99NBDGj58uD744INW943Zdfrs2bN14IEHav369brs\nsss0atQoHXbYYbrhhhtUUVHR5LHBYFAzZ87Uscceq4MPPlinnXaaXnrpJUmN+7LsmqOkpKTFfVyi\n0ah++9vf6sQTT9SIESN09NFH61e/+pW2bt0au8+Oxy1evFi33XabjjzySB188MG66KKLtHLlyt3+\nTIBkwVAREEeuvfZa/ec//1FRUZF69+6tjz76SE888YQqKyt1xx13tPiYTZs2xXZcveSSS+Q4jp57\n7jnNnz+/2X3D4bAuuugiHX/88TrhhBP08ssv695779X777+vjRs36oc//KEqKir029/+VjfddJOe\nffZZSdKGDRt03nnnqaGhQRdeeKHy8/P197//XTfffLPWr1+v66+/vsVsZWVlmjRpUux5U1NT9fzz\nzzcrD7saP368srKyNGvWLI0fP17jx49XYWGh/v3vf+/xz9J1XRUVFenQQw/VDTfcoE8//VTz5s1T\nfX29HnjgAUlSKBTSBRdcoC+++ELnnXee9t9/f73zzjv63//9X9XV1enkk0/WTTfd1CRHbm6uNm7c\n2Oz5rrvuOr3xxhs64YQTVFRUpHXr1umFF17Q+++/r5deeknZ2dmx+/7v//6vevfurSuvvFLbtm3T\nb3/7W/34xz/WwoUL5Th8bCO58Q4A4kR5ebnee+89XX/99Zo6daok6dxzz5UxRhs2bGj1cQ899JCq\nq6v16quvqrCwUJJ0xhln6Ac/+EGz+4bDYZ1++um64YYbJEmHHXaYTjnlFH300UdasGBBbKfajRs3\n6rXXXlMoFFIgENBvfvMbVVZWat68efrud78rSbrgggt05ZVX6ne/+53OOussDR06tNnzPfXUU9q6\ndatefvnl2OPOOussnXrqqaqtrW11nfbff39lZmZq1qxZGj58eLv2J4lEIjr55JN14403SpImTZqk\nzZs3a8GCBaqrq1NaWprmzZunlStX6t5779Vpp50mqXHn5wsvvFBPPPGELrzwQh1//PHfmmPRokV6\n4403VFRUpF/+8pex6YcccoiuvfZaPfbYY03KXV5enp5//nnZti1JCgQCuu+++/TBBx/oqKOOavO6\nAomEoSIgTmRlZSk9PV3PP/+83njjjdgv9lmzZumZZ55p8THGGL355psaM2ZMrLRIUp8+fXT66ae3\n+Jjjjz8+dn3fffeVJI0ePbrJkUADBgyQMUZlZWWKRqN6++23dfTRR8fKhyT5fD5dfvnlMsborbfe\navG5Fi1apAMPPLDJ4/Ly8nTKKafs/ofRQU466aQmt7/zne8oEomosrJSkvT2228rNzdXp556auw+\nlmXpnnvu0XPPPSfLsvboeXas/2WXXdbs+QcPHqw333yzyfQTTjghVlp25JIad0gGkh3FBYgTgUBA\nt99+u8rLy/XTn/5Uhx9+uKZOnao5c+Y02cdlZ5WVlaqsrIwVkJ0NGTKkxcf06tUrdn3HsEReXl6T\n++z4peq6rioqKlRbW6vBgwc3W9aOstTS0MmO6QUFBXucraPtelh2IBCQ1Lg/ivRNvl0LSv/+/TVo\n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\njNExxxyjfffdV5I0cuRITZs2rcl95s6dqxdffFGO4+iKK67Q97//fQ+Stk91dbWmT5+uYDCocDis\nG2+8UaNGjWpyn3h9DV3X1a233qpVq1YpEAhoxowZGjRoUGz+W2+9pYcffliO42jChAk677zzPEzb\nPuFwWL/4xS+0ceNGhUIhXXHFFTruuONi85955hm99NJLsc+T2267TUOGDPEqbrudddZZyszMlCQN\nGDBAs2bNis1LhNfxlVde0Z/+9CdJUkNDgz7//HMtXrxY2dnZkuL/dfz4449177336tlnn1VxcbFu\nvPFGWZaloUOH6le/+pV8vm+2f3zb+7bDGMTccccd5sQTTzTXXnttbNrpp59uiouLjeu65kc/+pH5\n7LPPmjzmd7/7nXnwwQeNMca89tpr5o477ujSzB3h0ksvNe+++26z6ZMmTTLl5eUeJOoY69evN5dd\ndlmr87ds2WJOPfVU09DQYKqqqmLX48UDDzxgnn76aWOMMWvWrDFnnnlms/vE62v4xhtvmBtuuMEY\nY8xHH31kLr/88ti8UChkjj/+eFNZWWkaGhrM2WefbUpLS72K2m7z5s0zM2bMMMYYU1FRYcaOHdtk\n/rRp08ynn37qQbKOU19fb84444wW5yXK67izW2+91bz44otNpsXz6/jEE0+YU0891Zx77rnGGGMu\nu+wy8/777xtjjLn55pvN3//+9yb33937tiMxVLST0aNH69Zbb43dDgaDCoVCKigokGVZOvroo/Xe\ne+81ecyyZcs0ZswYSdIxxxyjf/3rX10Zea/9/e9/V3Z2to4++ugm013XVXFxsW655RZNmjRJ8+bN\n8yhh+3322WfavHmzpkyZoh//+Mdau3Ztk/mffPKJRo0apUAgoKysLBUUFGjlypUepW27H/7wh5o0\naZIkKRqNKiUlpcn8eH4Nd35fjRw5UitWrIjNW7NmjQoKCtSjRw8FAgEdcsghWrJkiVdR2+0HP/iB\nrrnmGkmNWwdt224y/7PPPtMTTzyhyZMn6/HHH/ci4l5buXKl6urqdMkll6ioqEjLly+PzUuU13GH\nTz/9VKtXr9bEiRObTI/n17GgoECzZ8+O3f7ss8/0ve99T1Lj77vd/T7c9X3bkZJyqOill17S73//\n+ybTZs6cqZNPPlkffPBBbFowGIxt4pSkjIwMbdiwocnjgsFgbNN7RkaGqqurOzF5+7S2vgcddJAe\nf/xx/eY3v2n2mNraWl144YW6+OKLFY1GVVRUpBEjRmj//ffvqtht0tI63nLLLbr00kt10kknaenS\npZo+fbpefvnl2PydXzup8fULBoNdlrktdvcalpaWavr06frFL37RZH68vYY72/W9Z9u2IpGIHMeJ\nq9dtd3YM3wWDQf30pz/Vtdde22T+KaecovPPP1+ZmZm66qqrtHDhwrgaypSk1NRUTZ06Veeee67W\nr1+vH//4x3r99dcT6nXc4fHHH9dPfvKTZtPj+XU88cQTVVJSErttjJFlWZJa/n23u/dtR0rK4nLu\nuefq3HPP/db7ZWZmqqamJna7pqYmNm7Z0n1amt8dtLa+q1evVnZ2dotjkGlpaSoqKlJaWpok6Ygj\njtDKlSu77S+9ltaxrq4u9lfsoYceqi1btjR547X0+nbX/T9aew1XrVqln/3sZ7r++utjfwntEG+v\n4c52fW1c1419+MXT6/ZtvvrqK/3kJz/R+eefr9NOOy023Rijiy66KLZeY8eO1X/+85+4+YW3w+DB\ngzVo0CBZlqXBgwerZ8+eKi0tVd++fRPqdayqqtK6det0xBFHNJmeKK/jDjvvz/Jtvw+lpu/bDs3R\n4UtMIJmZmfL7/fryyy9ljNE///lPHXrooU3uM3r0aL3zzjuSpEWLFumQQw7xImq7vPfeezrmmGNa\nnLd+/XpNnjxZ0WhU4XBYH374ob773e92ccK989BDD8W2UqxcuVJ9+/aNlRZJOuigg7Rs2TI1NDSo\nurpaa9as0bBhw7yK22arV6/WNddco/vuu09jx45tNj+eX8PRo0dr0aJFkhp3kN/5dSksLFRxcbEq\nKysVCoW0dOnSZjslx4OysjJdcsklmj59us4555wm84LBoE499VTV1NTIGKMPPvhAI0aM8Chp+82b\nN0933XWXJGnz5s0KBoPKz8+XlDivoyQtWbJERx55ZLPpifI67nDAAQfERiUWLVrU4u/D1t63HSkp\nt7i0xW233aaf//znikajOvroo3XwwQdLki655BI99thjmjx5sm644QZNnjxZfr8/djRSPFi3bp2O\nOuqoJtOefvppFRQU6LjjjtMZZ5yh8847T36/X2eccYaGDh3qUdL2ufTSSzV9+nS98847sm07djTD\nzus4ZcoUnX/++TLG6Lrrrmu2n0h3dt999ykUCunOO++U1Fi0H3300YR4DcePH6/Fixdr0qRJMsZo\n5syZmj9/vmprazVx4kTdeOONmjp1qowxmjBhgvr06eN15DZ77LHHVFVVpUceeUSPPPKIpMYta3V1\ndZo4caKuu+46FRUVKRAI6Mgjj2yxnHZ355xzjm666SZNnjxZlmVp5syZ+tvf/pZQr6PU+Fk6YMCA\n2O2d/68mwuu4ww033KCbb75Zv/nNbzRkyBCdeOKJkqTrr79e1157bYvv287At0MDAIC4wVARAACI\nGxQXAAAQNyguAAAgblBcAABA3KC4AACAuEFxAQAAcYPiAgAA4gbFBQAAxA2KCwAAiBuc8h9At/bB\nBx+oqKio1fmzZs3S2Wef3YWJAHiJU/4D6NbKysq0ePHiJtMikYjuueceRaNRvfLKKyooKPAoHYCu\nxhYXAN1ar169dMYZZzSZdtttt2nbtm165JFHKC1AkmEfFwBx5aWXXtLzzz+vK664QuPGjfM6DoAu\nxlARgLjx4YcfqqioSEcccYSeeOIJ+Xz87QUkG4oLgLiwefNmTZgwQYFAQK+88op69uzpdSQAHmAf\nFwDdXkNDg6688kpVVVXpxRdfpLQASYziAqDbu/nmm7VixQrdfffdOuCAA7yOA8BDFBcA3dpzzz2n\nv/zlLzrssMOUlpamV199VTuPcBcUFGjUqFEeJgTQlSguALq1Tz/9VJK0ZMkSLVmypNn8s846i+IC\nJBF2zgUAAHGDYwkBAEDcoLgAAIC4QXEBAABxg+ICAADiBsUFAADEDYoLAACIGxQXAAAQNyguAAAg\nblBcAABA3KC4AACAuPH/AcjaArQEMTkZAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(8, 6))\n", + "ax.plot(np.arange(-10, 10, step=0.01),\n", + " sigmoid(np.arange(-10, 10, step=0.01)))\n", + "ax.set_ylim((-0.1,1.1))\n", + "ax.set_xlabel('z', fontsize=18)\n", + "ax.set_ylabel('g(z)', fontsize=18)\n", + "ax.set_title('sigmoid function', fontsize=18)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# cost function\n", + "> * $max(\\ell(\\theta)) = min(-\\ell(\\theta))$ \n", + "> * choose $-\\ell(\\theta)$ as the cost function\n", + "\n", + "$$\\begin{align}\n", + " & J\\left( \\theta \\right)=-\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)+\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]} \\\\ \n", + " & =\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[-{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)-\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]} \\\\ \n", + "\\end{align}$$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 0., 0.])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "theta = theta=np.zeros(3) # X(m*n) so theta is n*1\n", + "theta" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "def cost(theta, X, y):\n", + " ''' cost fn is -l(theta) for you to minimize'''\n", + " return np.mean(-y * np.log(sigmoid(X @ theta)) - (1 - y) * np.log(1 - sigmoid(X @ theta)))\n", + "\n", + "# X @ thetaX.dot(theta)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.69314718055994529" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cost(theta, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# gradient descent\n", + "(batch gradient descent) \n", + ": $\\frac{1}{m} X^T( Sigmoid(X\\theta) - y )$\n", + "$$\\frac{\\partial J\\left( \\theta \\right)}{\\partial {{\\theta }_{j}}}=\\frac{1}{m}\\sum\\limits_{i=1}^{m}{({{h}_{\\theta }}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}})x_{_{j}}^{(i)}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def gradient(theta, X, y):\n", + "# '''just 1 batch gradient'''\n", + " return (1 / len(X)) * X.T @ (sigmoid(X @ theta) - y)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ -0.1 , -12.00921659, -11.26284221])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gradient(theta, X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "import scipy.optimize as opt" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "res = opt.minimize(fun=cost, x0=theta, args=(X, y), method='Newton-CG', jac=gradient)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " fun: 0.20349770172083584\n", + " jac: array([ 1.98942032e-06, 1.34698328e-04, 1.47259166e-04])\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 73\n", + " nhev: 0\n", + " nit: 30\n", + " njev: 270\n", + " status: 0\n", + " success: True\n", + " x: array([-25.16227358, 0.20623923, 0.20147921])\n" + ] + } + ], + "source": [ + "print(res)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def predict(x, theta):\n", + " prob = sigmoid(x @ theta)\n", + " return (prob >= 0.5).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.87 0.85 0.86 40\n", + " 1 0.90 0.92 0.91 60\n", + "\n", + "avg / total 0.89 0.89 0.89 100\n", + "\n" + ] + } + ], + "source": [ + "final_theta = res.x\n", + "y_pred = predict(X, final_theta)\n", + "\n", + "print(classification_report(y, y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "http://stats.stackexchange.com/questions/93569/why-is-logistic-regression-a-linear-classifier\n", + "> $X \\times \\theta = 0$ (this is the line)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-25.16227358 0.20623923 0.20147921]\n" + ] + } + ], + "source": [ + "print(res.x) # this is final theta" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 124.88769463 -1.0236254 -1. ]\n" + ] + } + ], + "source": [ + "coef = -(res.x / res.x[2]) # find the equation\n", + "print(coef)\n", + "\n", + "x = np.arange(130, step=0.1)\n", + "y = coef[0] + coef[1]*x" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
exam1exam2admitted
count100.000000100.000000100.000000
mean65.64427466.2219980.600000
std19.45822218.5827830.492366
min30.05882230.6032630.000000
25%50.91951148.1792050.000000
50%67.03298867.6823811.000000
75%80.21252979.3606051.000000
max99.82785898.8694361.000000
\n", + "
" + ], + "text/plain": [ + " exam1 exam2 admitted\n", + "count 100.000000 100.000000 100.000000\n", + "mean 65.644274 66.221998 0.600000\n", + "std 19.458222 18.582783 0.492366\n", + "min 30.058822 30.603263 0.000000\n", + "25% 50.919511 48.179205 0.000000\n", + "50% 67.032988 67.682381 1.000000\n", + "75% 80.212529 79.360605 1.000000\n", + "max 99.827858 98.869436 1.000000" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.describe() # find the range of x and y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> you know the intercept would be around 125 for both x and y" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nzh1lAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set(context=\"notebook\", style=\"ticks\", font_scale=1.5)\n", + "\n", + "sns.lmplot('exam1', 'exam2', hue='admitted', data=data, \n", + " size=6, \n", + " fit_reg=False, \n", + " scatter_kws={\"s\": 25}\n", + " )\n", + "\n", + "plt.plot(x, y, 'grey')\n", + "plt.xlim(0, 130)\n", + "plt.ylim(0, 130)\n", + "plt.title('Decision Boundary')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3- 正则化逻辑回归" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
test1test2accepted
00.0512670.699561
1-0.0927420.684941
2-0.2137100.692251
3-0.3750000.502191
4-0.5132500.465641
\n", + "
" + ], + "text/plain": [ + " test1 test2 accepted\n", + "0 0.051267 0.69956 1\n", + "1 -0.092742 0.68494 1\n", + "2 -0.213710 0.69225 1\n", + "3 -0.375000 0.50219 1\n", + "4 -0.513250 0.46564 1" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('ex2data2.txt', names=['test1', 'test2', 'accepted'])\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nH+5xT+gQTWpoAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set(context=\"notebook\", style=\"ticks\", font_scale=1.5)\n", + "\n", + "sns.lmplot('test1', 'test2', hue='accepted', data=df, \n", + " size=6, \n", + " fit_reg=False, \n", + " scatter_kws={\"s\": 50}\n", + " )\n", + "\n", + "plt.title('Regularized Logistic Regression')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# feature mapping(特å¾æ˜ å°„)\n", + "\n", + "polynomial expansion\n", + "\n", + "```\n", + "for i in 0..i\n", + " for p in 0..i:\n", + " output x^(i-p) * y^p\n", + "```\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def feature_mapping(x, y, power, as_ndarray=False):\n", + "# \"\"\"return mapped features as ndarray or dataframe\"\"\"\n", + " # data = {}\n", + " # # inclusive\n", + " # for i in np.arange(power + 1):\n", + " # for p in np.arange(i + 1):\n", + " # data[\"f{}{}\".format(i - p, p)] = np.power(x, i - p) * np.power(y, p)\n", + "\n", + " data = {\"f{}{}\".format(i - p, p): np.power(x, i - p) * np.power(y, p)\n", + " for i in np.arange(power + 1)\n", + " for p in np.arange(i + 1)\n", + " }\n", + "\n", + " if as_ndarray:\n", + " return pd.DataFrame(data).as_matrix()\n", + " else:\n", + " return pd.DataFrame(data)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "x1 = np.array(df.test1)\n", + "x2 = np.array(df.test2)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(118, 28)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
f00f01f02f03f04f05f06f10f11f12...f30f31f32f33f40f41f42f50f51f60
01.00.699560.4893840.3423540.2394970.1675420.1172060.0512670.0358640.025089...0.0001350.0000940.0000660.0000460.0000070.0000050.0000033.541519e-072.477505e-071.815630e-08
11.00.684940.4691430.3213350.2200950.1507520.103256-0.092742-0.063523-0.043509...-0.000798-0.000546-0.000374-0.0002560.0000740.0000510.000035-6.860919e-06-4.699318e-066.362953e-07
21.00.692250.4792100.3317330.2296420.1589700.110047-0.213710-0.147941-0.102412...-0.009761-0.006757-0.004677-0.0032380.0020860.0014440.001000-4.457837e-04-3.085938e-049.526844e-05
31.00.502190.2521950.1266500.0636020.0319400.016040-0.375000-0.188321-0.094573...-0.052734-0.026483-0.013299-0.0066790.0197750.0099310.004987-7.415771e-03-3.724126e-032.780914e-03
41.00.465640.2168210.1009600.0470110.0218900.010193-0.513250-0.238990-0.111283...-0.135203-0.062956-0.029315-0.0136500.0693930.0323120.015046-3.561597e-02-1.658422e-021.827990e-02
\n", + "

5 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " f00 f01 f02 f03 f04 f05 f06 f10 \\\n", + "0 1.0 0.69956 0.489384 0.342354 0.239497 0.167542 0.117206 0.051267 \n", + "1 1.0 0.68494 0.469143 0.321335 0.220095 0.150752 0.103256 -0.092742 \n", + "2 1.0 0.69225 0.479210 0.331733 0.229642 0.158970 0.110047 -0.213710 \n", + "3 1.0 0.50219 0.252195 0.126650 0.063602 0.031940 0.016040 -0.375000 \n", + "4 1.0 0.46564 0.216821 0.100960 0.047011 0.021890 0.010193 -0.513250 \n", + "\n", + " f11 f12 ... f30 f31 f32 f33 \\\n", + "0 0.035864 0.025089 ... 0.000135 0.000094 0.000066 0.000046 \n", + "1 -0.063523 -0.043509 ... -0.000798 -0.000546 -0.000374 -0.000256 \n", + "2 -0.147941 -0.102412 ... -0.009761 -0.006757 -0.004677 -0.003238 \n", + "3 -0.188321 -0.094573 ... -0.052734 -0.026483 -0.013299 -0.006679 \n", + "4 -0.238990 -0.111283 ... -0.135203 -0.062956 -0.029315 -0.013650 \n", + "\n", + " f40 f41 f42 f50 f51 f60 \n", + "0 0.000007 0.000005 0.000003 3.541519e-07 2.477505e-07 1.815630e-08 \n", + "1 0.000074 0.000051 0.000035 -6.860919e-06 -4.699318e-06 6.362953e-07 \n", + "2 0.002086 0.001444 0.001000 -4.457837e-04 -3.085938e-04 9.526844e-05 \n", + "3 0.019775 0.009931 0.004987 -7.415771e-03 -3.724126e-03 2.780914e-03 \n", + "4 0.069393 0.032312 0.015046 -3.561597e-02 -1.658422e-02 1.827990e-02 \n", + "\n", + "[5 rows x 28 columns]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = feature_mapping(x1, x2, power=6)\n", + "print(data.shape)\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
f00f01f02f03f04f05f06f10f11f12...f30f31f32f33f40f41f42f50f51f60
count118.0118.000000118.000000118.0000001.180000e+02118.0000001.180000e+02118.000000118.000000118.000000...1.180000e+02118.0000001.180000e+02118.0000001.180000e+02118.0000001.180000e+021.180000e+02118.0000001.180000e+02
mean1.00.1831020.3013700.1423501.710985e-010.1157101.257256e-010.054779-0.0254720.015483...5.983333e-02-0.0052519.432094e-03-0.0017051.225384e-010.0118121.893340e-025.196507e-02-0.0007037.837118e-02
std0.00.5197430.2845360.3261342.815658e-010.2990922.964416e-010.4966540.2240750.150143...2.746459e-010.0967385.455787e-020.0374432.092709e-010.0722743.430092e-022.148098e-010.0582711.938621e-01
min1.0-0.7697400.000026-0.4560716.855856e-10-0.2702221.795116e-14-0.830070-0.484096-0.483743...-5.719317e-01-0.296854-1.592528e-01-0.1134481.612020e-09-0.2460682.577297e-10-3.940702e-01-0.2039716.472253e-14
25%1.0-0.2543850.061086-0.0164923.741593e-03-0.0010722.298277e-04-0.372120-0.178209-0.042980...-5.155632e-02-0.029360-3.659760e-03-0.0057491.869975e-03-0.0019261.258285e-04-7.147973e-03-0.0063818.086369e-05
50%1.00.2134550.2521950.0097346.360222e-020.0004441.604015e-02-0.006336-0.016521-0.000039...-2.544062e-07-0.000512-1.473547e-07-0.0000052.736163e-020.0002053.387050e-03-1.021440e-11-0.0000044.527344e-03
75%1.00.6465620.4641890.2703102.155453e-010.1130201.001215e-010.4789700.1007950.079510...1.099616e-010.0150501.370560e-020.0010241.520801e-010.0191832.090875e-022.526861e-020.0021045.932959e-02
max1.01.1089001.2296591.3635691.512062e+001.6767251.859321e+001.0709000.5683070.505577...1.228137e+000.3698052.451845e-010.1835481.315212e+000.3044092.018260e-011.408460e+000.2505771.508320e+00
\n", + "

8 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " f00 f01 f02 f03 f04 f05 \\\n", + "count 118.0 118.000000 118.000000 118.000000 1.180000e+02 118.000000 \n", + "mean 1.0 0.183102 0.301370 0.142350 1.710985e-01 0.115710 \n", + "std 0.0 0.519743 0.284536 0.326134 2.815658e-01 0.299092 \n", + "min 1.0 -0.769740 0.000026 -0.456071 6.855856e-10 -0.270222 \n", + "25% 1.0 -0.254385 0.061086 -0.016492 3.741593e-03 -0.001072 \n", + "50% 1.0 0.213455 0.252195 0.009734 6.360222e-02 0.000444 \n", + "75% 1.0 0.646562 0.464189 0.270310 2.155453e-01 0.113020 \n", + "max 1.0 1.108900 1.229659 1.363569 1.512062e+00 1.676725 \n", + "\n", + " f06 f10 f11 f12 ... \\\n", + "count 1.180000e+02 118.000000 118.000000 118.000000 ... \n", + "mean 1.257256e-01 0.054779 -0.025472 0.015483 ... \n", + "std 2.964416e-01 0.496654 0.224075 0.150143 ... \n", + "min 1.795116e-14 -0.830070 -0.484096 -0.483743 ... \n", + "25% 2.298277e-04 -0.372120 -0.178209 -0.042980 ... \n", + "50% 1.604015e-02 -0.006336 -0.016521 -0.000039 ... \n", + "75% 1.001215e-01 0.478970 0.100795 0.079510 ... \n", + "max 1.859321e+00 1.070900 0.568307 0.505577 ... \n", + "\n", + " f30 f31 f32 f33 f40 \\\n", + "count 1.180000e+02 118.000000 1.180000e+02 118.000000 1.180000e+02 \n", + "mean 5.983333e-02 -0.005251 9.432094e-03 -0.001705 1.225384e-01 \n", + "std 2.746459e-01 0.096738 5.455787e-02 0.037443 2.092709e-01 \n", + "min -5.719317e-01 -0.296854 -1.592528e-01 -0.113448 1.612020e-09 \n", + "25% -5.155632e-02 -0.029360 -3.659760e-03 -0.005749 1.869975e-03 \n", + "50% -2.544062e-07 -0.000512 -1.473547e-07 -0.000005 2.736163e-02 \n", + "75% 1.099616e-01 0.015050 1.370560e-02 0.001024 1.520801e-01 \n", + "max 1.228137e+00 0.369805 2.451845e-01 0.183548 1.315212e+00 \n", + "\n", + " f41 f42 f50 f51 f60 \n", + "count 118.000000 1.180000e+02 1.180000e+02 118.000000 1.180000e+02 \n", + "mean 0.011812 1.893340e-02 5.196507e-02 -0.000703 7.837118e-02 \n", + "std 0.072274 3.430092e-02 2.148098e-01 0.058271 1.938621e-01 \n", + "min -0.246068 2.577297e-10 -3.940702e-01 -0.203971 6.472253e-14 \n", + "25% -0.001926 1.258285e-04 -7.147973e-03 -0.006381 8.086369e-05 \n", + "50% 0.000205 3.387050e-03 -1.021440e-11 -0.000004 4.527344e-03 \n", + "75% 0.019183 2.090875e-02 2.526861e-02 0.002104 5.932959e-02 \n", + "max 0.304409 2.018260e-01 1.408460e+00 0.250577 1.508320e+00 \n", + "\n", + "[8 rows x 28 columns]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# regularized cost\n", + "\n", + "$$J\\left( \\theta \\right)=\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[-{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)-\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]}+\\frac{\\lambda }{2m}\\sum\\limits_{j=1}^{n}{\\theta _{j}^{2}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(118, 28)\n", + "(118,)\n" + ] + } + ], + "source": [ + "theta = np.zeros(data.shape[1])\n", + "X = feature_mapping(x1, x2, power=6, as_ndarray=True)\n", + "print(X.shape)\n", + "\n", + "y = get_y(df)\n", + "print(y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def regularized_cost(theta, X, y, l=1):\n", + "# '''you don't penalize theta_0'''\n", + " theta_j1_to_n = theta[1:]\n", + " regularized_term = (l / (2 * len(X))) * np.power(theta_j1_to_n, 2).sum()\n", + "\n", + " return cost(theta, X, y) + regularized_term\n", + "#正则化代价函数" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6931471805599454" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regularized_cost(theta, X, y, l=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "this is the same as the not regularized cost because we init theta as zeros..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# regularized gradient\n", + "$$\\frac{\\partial J\\left( \\theta \\right)}{\\partial {{\\theta }_{j}}}=\\left( \\frac{1}{m}\\sum\\limits_{i=1}^{m}{\\left( {{h}_{\\theta }}\\left( {{x}^{\\left( i \\right)}} \\right)-{{y}^{\\left( i \\right)}} \\right)} \\right)+\\frac{\\lambda }{m}{{\\theta }_{j}}\\text{ }\\text{ for j}\\ge \\text{1}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def regularized_gradient(theta, X, y, l=1):\n", + "# '''still, leave theta_0 alone'''\n", + " theta_j1_to_n = theta[1:]\n", + " regularized_theta = (l / len(X)) * theta_j1_to_n\n", + "\n", + " # by doing this, no offset is on theta_0\n", + " regularized_term = np.concatenate([np.array([0]), regularized_theta])\n", + "\n", + " return gradient(theta, X, y) + regularized_term" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 8.47457627e-03, 7.77711864e-05, 3.76648474e-02,\n", + " 2.34764889e-02, 3.93028171e-02, 3.10079849e-02,\n", + " 3.87936363e-02, 1.87880932e-02, 1.15013308e-02,\n", + " 8.19244468e-03, 3.09593720e-03, 4.47629067e-03,\n", + " 1.37646175e-03, 5.03446395e-02, 7.32393391e-03,\n", + " 1.28600503e-02, 5.83822078e-03, 7.26504316e-03,\n", + " 1.83559872e-02, 2.23923907e-03, 3.38643902e-03,\n", + " 4.08503006e-04, 3.93486234e-02, 4.32983232e-03,\n", + " 6.31570797e-03, 1.99707467e-02, 1.09740238e-03,\n", + " 3.10312442e-02])" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regularized_gradient(theta, X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "import scipy.optimize as opt" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "init cost = 0.6931471805599454\n" + ] + }, + { + "data": { + "text/plain": [ + " fun: 0.5290027297127737\n", + " jac: array([ 1.05541650e-07, 6.13738958e-08, -7.04772465e-08,\n", + " -1.36777274e-08, -2.84652117e-08, -3.41659162e-08,\n", + " -5.15630062e-08, -1.74645557e-08, 7.50726574e-09,\n", + " 1.18564041e-08, 1.78853446e-08, 1.12436692e-08,\n", + " 8.73092759e-09, 5.56139873e-08, 4.12686771e-09,\n", + " -2.49410770e-08, -6.34978298e-09, -1.34271390e-08,\n", + " -2.13487848e-09, 4.54710087e-10, -4.37439525e-09,\n", + " -1.26745782e-09, -3.40985521e-09, 7.34158338e-09,\n", + " -7.74561697e-09, -9.84723852e-11, 9.65250750e-10,\n", + " -1.18501368e-08])\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 7\n", + " nhev: 0\n", + " nit: 6\n", + " njev: 66\n", + " status: 0\n", + " success: True\n", + " x: array([ 1.27273981, 1.18108974, -1.43166669, -0.17513036, -1.19281478,\n", + " -0.45635758, -0.9246528 , 0.62527237, -0.9174247 , -0.35723884,\n", + " -0.27470605, -0.29537769, -0.14388711, -2.0199599 , -0.36553508,\n", + " -0.61555685, -0.27778507, -0.32738029, 0.12400668, -0.05098942,\n", + " -0.04473108, 0.01556645, -1.45815829, -0.20600596, -0.29243192,\n", + " -0.24218804, 0.02777165, -1.04320421])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('init cost = {}'.format(regularized_cost(theta, X, y)))\n", + "\n", + "res = opt.minimize(fun=regularized_cost, x0=theta, args=(X, y), method='Newton-CG', jac=regularized_gradient)\n", + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.90 0.75 0.82 60\n", + " 1 0.78 0.91 0.84 58\n", + "\n", + "avg / total 0.84 0.83 0.83 118\n", + "\n" + ] + } + ], + "source": [ + "final_theta = res.x\n", + "y_pred = predict(X, final_theta)\n", + "\n", + "print(classification_report(y, y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# $\\lambda$\n", + "# \n", + "* $X\\times \\theta = 0$ \n", + "* instead of solving polynomial equation, just create a coridate x,y grid that is dense enough, and find all those $X\\times \\theta$ that is close enough to 0, then plot them" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def draw_boundary(power, l):\n", + "# \"\"\"\n", + "# power: polynomial power for mapped feature\n", + "# l: lambda constant\n", + "# \"\"\"\n", + " density = 1000\n", + " threshhold = 2 * 10**-3\n", + "\n", + " final_theta = feature_mapped_logistic_regression(power, l)\n", + " x, y = find_decision_boundary(density, power, final_theta, threshhold)\n", + "\n", + " df = pd.read_csv('ex2data2.txt', names=['test1', 'test2', 'accepted'])\n", + " sns.lmplot('test1', 'test2', hue='accepted', data=df, size=6, fit_reg=False, scatter_kws={\"s\": 100})\n", + "\n", + " plt.scatter(x, y, c='R', s=10)\n", + " plt.title('Decision boundary')\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def feature_mapped_logistic_regression(power, l):\n", + "# \"\"\"for drawing purpose only.. not a well generealize logistic regression\n", + "# power: int\n", + "# raise x1, x2 to polynomial power\n", + "# l: int\n", + "# lambda constant for regularization term\n", + "# \"\"\"\n", + " df = pd.read_csv('ex2data2.txt', names=['test1', 'test2', 'accepted'])\n", + " x1 = np.array(df.test1)\n", + " x2 = np.array(df.test2)\n", + " y = get_y(df)\n", + "\n", + " X = feature_mapping(x1, x2, power, as_ndarray=True)\n", + " theta = np.zeros(X.shape[1])\n", + "\n", + " res = opt.minimize(fun=regularized_cost,\n", + " x0=theta,\n", + " args=(X, y, l),\n", + " method='TNC',\n", + " jac=regularized_gradient)\n", + " final_theta = res.x\n", + "\n", + " return final_theta" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def find_decision_boundary(density, power, theta, threshhold):\n", + " t1 = np.linspace(-1, 1.5, density)\n", + " t2 = np.linspace(-1, 1.5, density)\n", + "\n", + " cordinates = [(x, y) for x in t1 for y in t2]\n", + " x_cord, y_cord = zip(*cordinates)\n", + " mapped_cord = feature_mapping(x_cord, y_cord, power) # this is a dataframe\n", + "\n", + " inner_product = mapped_cord.as_matrix() @ theta\n", + "\n", + " decision = mapped_cord[np.abs(inner_product) < threshhold]\n", + "\n", + " return decision.f10, decision.f01" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_boundary(power=6, l=1)#lambda=1" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_boundary(power=6, l=0) # no regularization, over fitting,#lambda=0" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nLCGEECKQ/w/oZEhiy3ciggAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_boundary(power=6, l=100) # underfitting,#lambda=100" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Python/2-Logistic Regression/.ipynb_checkpoints/ML-Exercise2-checkpoint.ipynb b/Python/2-Logistic Regression/.ipynb_checkpoints/ML-Exercise2-checkpoint.ipynb new file mode 100644 index 0000000..3197f9c --- /dev/null +++ b/Python/2-Logistic Regression/.ipynb_checkpoints/ML-Exercise2-checkpoint.ipynb @@ -0,0 +1,1193 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 机器学习练习 2 - 逻辑回归" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "这个笔记包å«äº†ä»¥Python为编程语言的Coursera上机器学习的第二次编程练习。请å‚考 [作业文件](ex2.pdf) 详细æ述和方程。\n", + "在这一次练习中,我们将è¦å®žçŽ°é€»è¾‘回归并且应用到一个分类任务。我们还将通过将正则化加入训练算法,æ¥æ高算法的é²æ£’性,并用更å¤æ‚的情形æ¥æµ‹è¯•å®ƒã€‚\n", + "\n", + "代ç ä¿®æ”¹å¹¶æ³¨é‡Šï¼šé»„海广,haiguang2000@qq.com" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 逻辑回归" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "在训练的åˆå§‹é˜¶æ®µï¼Œæˆ‘们将è¦æž„建一个逻辑回归模型æ¥é¢„测,æŸä¸ªå­¦ç”Ÿæ˜¯å¦è¢«å¤§å­¦å½•å–。设想你是大学相关部分的管ç†è€…,想通过申请学生两次测试的评分,æ¥å†³å®šä»–们是å¦è¢«å½•å–。现在你拥有之å‰ç”³è¯·å­¦ç”Ÿçš„å¯ä»¥ç”¨äºŽè®­ç»ƒé€»è¾‘回归的训练样本集。对于æ¯ä¸€ä¸ªè®­ç»ƒæ ·æœ¬ï¼Œä½ æœ‰ä»–们两次测试的评分和最åŽæ˜¯è¢«å½•å–的结果。为了完æˆè¿™ä¸ªé¢„测任务,我们准备构建一个å¯ä»¥åŸºäºŽä¸¤æ¬¡æµ‹è¯•è¯„分æ¥è¯„估录å–å¯èƒ½æ€§çš„分类模型。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "让我们从检查数æ®å¼€å§‹ã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Exam 1Exam 2Admitted
034.62366078.0246930
130.28671143.8949980
235.84740972.9021980
360.18259986.3085521
479.03273675.3443761
\n", + "
" + ], + "text/plain": [ + " Exam 1 Exam 2 Admitted\n", + "0 34.623660 78.024693 0\n", + "1 30.286711 43.894998 0\n", + "2 35.847409 72.902198 0\n", + "3 60.182599 86.308552 1\n", + "4 79.032736 75.344376 1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = 'ex2data1.txt'\n", + "data = pd.read_csv(path, header=None, names=['Exam 1', 'Exam 2', 'Admitted'])\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "让我们创建两个分数的散点图,并使用颜色编ç æ¥å¯è§†åŒ–,如果样本是正的(被接纳)或负的(未被接纳)。" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAHjCAYAAADojTN7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X943XV9///HM/yqJJkIdnyhrCuj0YkIdYtMtFKggqwq\nhOoI6rS6zrp9UPtDZ8u16/LXtQmiH2vUbX5YGeLGahhLA9fs/FVxWnS4VKsgxaW6grXlhyDzJP6C\n5vn943XezUl6TnJyzvuc96/77bp6nZz3OUleeSdNHu/Xeb6eL3N3AQAAAGheR9IDAAAAAPKCcA0A\nAADEhHANAAAAxIRwDQAAAMSEcA0AAADEhHANAAAAxIRwDQAAAMSEcA0AAADEhHANAAAAxOTopAfQ\njGc+85m+aNGipIcBAACAnNu1a9dP3H3+bM/LdLhetGiRRkZGkh4GAAAAcs7MHqjneZSFAAAAADEh\nXAMAAAAxIVwDAAAAMcl0zTUAAEBWPfnkk9q/f79++ctfJj0UVJg3b55OO+00HXPMMQ29P+EaAAAg\nAfv371d3d7cWLVokM0t6OJDk7nrssce0f/9+nX766Q19DMpCAAAAEvDLX/5SJ510EsE6RcxMJ510\nUlOvJhCuAQAAEkKwTp9mvyeEawAAACAmhGsAAIAMKJWkLVukjRvDbakU38ceHh6Wmen++++v+vgb\n3/hG3XbbbXV/vAMHDujVr361JGn37t3avn374ce+8pWv6Otf//qcx7ho0SL95Cc/mfP7tRvhGgAA\nIOV27pQWLJDWrZOuvz7cLlgQjsdh69atWrp0qbZu3RrLxzv11FMPh/G4wnVWEK4BAABSrFSSVqwI\nt+Pj4dj4+OTxsbHmPv7Y2Jh27typG2+8UZ/5zGckha4Zb33rW/XsZz9bL33pS/XII48cfv6iRYt0\nzTXXaMmSJert7dW3vvUtvexlL9MZZ5yhT37yk5Kkffv26ayzztKvf/1rvfvd79bg4KCWLFmiD37w\ng/rkJz+pzZs3a8mSJfra176mRx99VK961av0ghe8QC94wQt01113SZIee+wxXXLJJXruc5+rP/3T\nP5W7N/eFtknLWvGZ2T9IeoWkR9z9rPKxEyUNSlokaZ+kK939p+XHrpG0WtIhSW9398+3amwAAABZ\nMTgoTUxUf2xiIjy+enXjH//222/XpZdeqmc961k66aSTtGvXLj3wwAP6/ve/r/vuu08PP/ywzjzz\nTP3Jn/zJ4fdZuHChdu/erfXr1+uNb3yj7rrrLv3yl7/UWWedpT/7sz87/Lxjjz1W73//+zUyMqJP\nfOITkqRf/OIX6urq0jvf+U5J0mtf+1qtX79eS5cu1YMPPqiXvexl2rNnj973vvdp6dKleve7363P\nfvazuvHGGxv/ItuolX2uPyXpE5I+XXFsk6Qd7n6dmW0q399oZmdKukrScyWdKulLZvYsdz/UwvEB\nAACk3ujo5Iz1dOPj0t69zX38rVu3au3atZKkq666Slu3btVTTz2l17zmNTrqqKN06qmn6qKLLpry\nPpdddpkk6XnPe57GxsbU3d2t7u5uHXfccXriiSfm9Pm/9KUv6b777jt8/2c/+5nGxsb01a9+VUND\nQ5Kkl7/85XrGM57RzJfZNi0L1+7+VTNbNO3w5ZIuKL99s6SvSNpYPv4Zd/+VpP8xs72SzpX0jVaN\nDwAAIAt6eqTOzuoBu7NTWry48Y/9+OOP68tf/rLuuecemZkOHTokM9MVV1wx4/sdd9xxkqSOjo7D\nb0f3n3rqqTmNYWJiQv/5n/+pefPmzf0LSKF211yf7O4Hy28/JOnk8tsLJP2o4nn7y8eOYGZrzGzE\nzEYeffTR1o0UAAAgBfr7pY4aia2jIzzeqNtuu02vf/3r9cADD2jfvn360Y9+pNNPP10nnXSSBgcH\ndejQIR08eFB33nlnw5+ju7tbpYrWJtPvX3LJJfr4xz9++P7u3bslSeeff77++Z//WZL07//+7/rp\nT3/a8BjaKbEFjR6q0udcme7uN7h7r7v3zp8/vwUjAwAASI/ubmn79nDb2RmOdXZOHu/qavxjb926\n9YhZ6le96lU6ePCgenp6dOaZZ+oNb3iDzjvvvIY/x4UXXqj77rtPS5Ys0eDgoF75yldq27Zthxc0\nfuxjH9PIyIjOPvtsnXnmmYcXRb7nPe/RV7/6VT33uc/V0NCQFi5c2PgX2kbWypWX5bKQf6tY0Ph9\nSRe4+0EzO0XSV9z92eXFjHL3a8vP+7yk97r7jGUhvb29PjIy0rLxp5q7NDws9fVJlTsJ1ToOAABS\nZc+ePXrOc55T9/PHxsLixb17QylIf39zwRq1VfvemNkud++d7X3bPXN9h6RV5bdXSbq94vhVZnac\nmZ0uqUfSN9s8tmwZHpZWrpTWrw+BWgq369eH48PDyY4PAADEqqsrdAW59tpwS7BOp1a24tuqsHjx\n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\ncC1JkiT15BuusxrFcxyTBwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "positive = data[data['Admitted'].isin([1])]\n", + "negative = data[data['Admitted'].isin([0])]\n", + "\n", + "fig, ax = plt.subplots(figsize=(12,8))\n", + "ax.scatter(positive['Exam 1'], positive['Exam 2'], s=50, c='b', marker='o', label='Admitted')\n", + "ax.scatter(negative['Exam 1'], negative['Exam 2'], s=50, c='r', marker='x', label='Not Admitted')\n", + "ax.legend()\n", + "ax.set_xlabel('Exam 1 Score')\n", + "ax.set_ylabel('Exam 2 Score')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "看起æ¥åœ¨ä¸¤ç±»é—´ï¼Œæœ‰ä¸€ä¸ªæ¸…晰的决策边界。现在我们需è¦å®žçŽ°é€»è¾‘回归,那样就å¯ä»¥è®­ç»ƒä¸€ä¸ªæ¨¡åž‹æ¥é¢„测结果。方程实现在下é¢çš„代ç ç¤ºä¾‹åœ¨\"exercises\" 文件夹的 \"ex2.pdf\" 中。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# sigmoid 函数\n", + "g 代表一个常用的逻辑函数(logistic function)为S形函数(Sigmoid function),公å¼ä¸ºï¼š \\\\[g\\left( z \\right)=\\frac{1}{1+{{e}^{-z}}}\\\\] \n", + "åˆèµ·æ¥ï¼Œæˆ‘们得到逻辑回归模型的å‡è®¾å‡½æ•°ï¼š \n", + "\t\\\\[{{h}_{\\theta }}\\left( x \\right)=\\frac{1}{1+{{e}^{-{{\\theta }^{T}}X}}}\\\\] " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " return 1 / (1 + np.exp(-z))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "让我们åšä¸€ä¸ªå¿«é€Ÿçš„检查,æ¥ç¡®ä¿å®ƒå¯ä»¥å·¥ä½œã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nK7EYS1JveeklmDIFxoyBPn1yp5EkrcRiLEm95eqri63aHKOQpJpkMZak3pASXHwx7LQTvOtdudNI\nkjrRN3cASWoK110Hd90FP/85ROROI0nqhCvGklRtra1wxhnFavFJJ+VOI0nqgivGklRtl1wC06bB\nVVdBv36500iSuuCKsSRV08KF8LWvwV57wdFH504jSVoNV4wlqZrOOw/mzCn2L3a2WJJqmivGklQt\nL74I55wDhx0G731v7jSSpG5YjCWpWs4+G+bPh+98J3cSSVIZLMaSVA1PPgnnnw///u+w666500iS\nymAxlqRqOOssWGcd+MY3cieRJJXJYixJlfbAA3DppfD5z8OQIbnTSJLKZDGWpEo7/XTYdNPioySp\nbrhdmyRV0i23wO9/D9//Pmy2We40kqQ14IqxJFVKWxucemoxPnHKKbnTSJLWkCvGklQpV14J994L\nv/41rLde7jSSpDXkirEkVcLixXDmmbDbbnDCCbnTSJLWgivGklQJF14IM2bA734HffrkTiNJWguu\nGEtST82fD9/8Juy/P4walTuNJGktWYwlqad+8AOYOxe++12IyJ1GkrSWLMaS1BPPPgs//CEceyyM\nGJE7jSSpByzGktQT3/wmLFoE3/527iSSpB6yGEvS2nr88eJNdyefDDvumDuNJKmHLMaStLbOPLPY\nr/irX82dRJJUARZjSVobd98NV10FX/oSDBqUO40kqQIsxpK0plKC006DLbaAL34xdxpJUoWUVYwj\nYmREPBYR0yPi9E6e/0hEPBgRD0XEnRGxe+WjSlKNmDIFbrutGKHYaKPcaSRJFdJtMY6IPsAFwCjg\nbcDYiHjbSof9E3hfSmk34FvAhZUOKkk1YenSYrV4hx2KN91JkhpGOZeEHgFMTynNBIiI8cCRwLRl\nB6SU7uxw/F3ANpUMKUk149JL4eGH4fLLoV+/3GkkSRVUzijFYGBWh89ntz/WlZOAKZ09EREnR8TU\niJg6d+7c8lNKUi144w046yzYc8/igh6SpIZSzopx2SLiAIpivG9nz6eULqR9zGL48OGpkl9bkqru\n/PNh1iy45BIv/SxJDaicYjwHGNLh823aH1tBRLwD+BUwKqX0YmXiSVKNePllOPtsGDUKDjggdxpJ\nUhWUM0pxD7BjRGwbEf2BMcCkjgdExFBgAnBiSunxyseUpMzOOQdeeaX4KElqSN2uGKeUWiPiFOAG\n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\nD/iWfPodA7wwAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nums = np.arange(-10, 10, step=1)\n", + "\n", + "fig, ax = plt.subplots(figsize=(12,8))\n", + "ax.plot(nums, sigmoid(nums), 'r')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "棒æžäº†ï¼çŽ°åœ¨ï¼Œæˆ‘们需è¦ç¼–写代价函数æ¥è¯„估结果。\n", + "代价函数:\n", + "$J\\left( \\theta \\right)=\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[-{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)-\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]}$" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def cost(theta, X, y):\n", + " theta = np.matrix(theta)\n", + " X = np.matrix(X)\n", + " y = np.matrix(y)\n", + " first = np.multiply(-y, np.log(sigmoid(X * theta.T)))\n", + " second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))\n", + " return np.sum(first - second) / (len(X))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "现在,我们è¦åšä¸€äº›è®¾ç½®ï¼Œå’Œæˆ‘们在练习1在线性回归的练习很相似。" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# add a ones column - this makes the matrix multiplication work out easier\n", + "data.insert(0, 'Ones', 1)\n", + "\n", + "# set X (training data) and y (target variable)\n", + "cols = data.shape[1]\n", + "X = data.iloc[:,0:cols-1]\n", + "y = data.iloc[:,cols-1:cols]\n", + "\n", + "# convert to numpy arrays and initalize the parameter array theta\n", + "X = np.array(X.values)\n", + "y = np.array(y.values)\n", + "theta = np.zeros(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "让我们æ¥æ£€æŸ¥çŸ©é˜µçš„维度æ¥ç¡®ä¿ä¸€åˆ‡è‰¯å¥½ã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 0., 0.])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "theta" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((100, 3), (3,), (100, 1))" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X.shape, theta.shape, y.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "让我们计算åˆå§‹åŒ–å‚数的代价函数(theta为0)。" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.69314718055994529" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cost(theta, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "看起æ¥ä¸é”™ï¼ŒæŽ¥ä¸‹æ¥ï¼Œæˆ‘们需è¦ä¸€ä¸ªå‡½æ•°æ¥è®¡ç®—我们的训练数æ®ã€æ ‡ç­¾å’Œä¸€äº›å‚æ•°thata的梯度。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# gradient descent(梯度下é™)\n", + "* 这是批é‡æ¢¯åº¦ä¸‹é™ï¼ˆbatch gradient descent) \n", + "* 转化为å‘é‡åŒ–计算: $\\frac{1}{m} X^T( Sigmoid(X\\theta) - y )$\n", + "$$\\frac{\\partial J\\left( \\theta \\right)}{\\partial {{\\theta }_{j}}}=\\frac{1}{m}\\sum\\limits_{i=1}^{m}{({{h}_{\\theta }}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}})x_{_{j}}^{(i)}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def gradient(theta, X, y):\n", + " theta = np.matrix(theta)\n", + " X = np.matrix(X)\n", + " y = np.matrix(y)\n", + " \n", + " parameters = int(theta.ravel().shape[1])\n", + " grad = np.zeros(parameters)\n", + " \n", + " error = sigmoid(X * theta.T) - y\n", + " \n", + " for i in range(parameters):\n", + " term = np.multiply(error, X[:,i])\n", + " grad[i] = np.sum(term) / len(X)\n", + " \n", + " return grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "注æ„,我们实际上没有在这个函数中执行梯度下é™ï¼Œæˆ‘们仅仅在计算一个梯度步长。在练习中,一个称为“fminuncâ€çš„Octave函数是用æ¥ä¼˜åŒ–函数æ¥è®¡ç®—æˆæœ¬å’Œæ¢¯åº¦å‚数。由于我们使用Python,我们å¯ä»¥ç”¨SciPy的“optimizeâ€å‘½å空间æ¥åšåŒæ ·çš„事情。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "我们看看用我们的数æ®å’Œåˆå§‹å‚数为0的梯度下é™æ³•çš„结果。" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ -0.1 , -12.00921659, -11.26284221])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gradient(theta, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "现在å¯ä»¥ç”¨SciPy's truncated newton(TNC)实现寻找最优å‚数。" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([-25.1613186 , 0.20623159, 0.20147149]), 36, 0)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import scipy.optimize as opt\n", + "result = opt.fmin_tnc(func=cost, x0=theta, fprime=gradient, args=(X, y))\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "让我们看看在这个结论下代价函数计算结果是什么个样å­~" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.20349770158947464" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cost(result[0], X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "接下æ¥ï¼Œæˆ‘们需è¦ç¼–写一个函数,用我们所学的å‚æ•°thetaæ¥ä¸ºæ•°æ®é›†X输出预测。然åŽï¼Œæˆ‘们å¯ä»¥ä½¿ç”¨è¿™ä¸ªå‡½æ•°æ¥ç»™æˆ‘们的分类器的训练精度打分。\n", + "逻辑回归模型的å‡è®¾å‡½æ•°ï¼š \n", + "\t\\\\[{{h}_{\\theta }}\\left( x \\right)=\\frac{1}{1+{{e}^{-{{\\theta }^{T}}X}}}\\\\] \n", + "当${{h}_{\\theta }}$大于等于0.5时,预测 y=1\n", + "\n", + "当${{h}_{\\theta }}$å°äºŽ0.5时,预测 y=0 。" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def predict(theta, X):\n", + " probability = sigmoid(X * theta.T)\n", + " return [1 if x >= 0.5 else 0 for x in probability]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy = 89%\n" + ] + } + ], + "source": [ + "theta_min = np.matrix(result[0])\n", + "predictions = predict(theta_min, X)\n", + "correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y)]\n", + "accuracy = (sum(map(int, correct)) % len(correct))\n", + "print ('accuracy = {0}%'.format(accuracy))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "我们的逻辑回归分类器预测正确,如果一个学生被录å–或没有录å–,达到89%的精确度。ä¸åï¼è®°ä½ï¼Œè¿™æ˜¯è®­ç»ƒé›†çš„准确性。我们没有ä¿æŒä½äº†è®¾ç½®æˆ–使用交å‰éªŒè¯å¾—到的真实逼近,所以这个数字有å¯èƒ½é«˜äºŽå…¶çœŸå®žå€¼ï¼ˆè¿™ä¸ªè¯é¢˜å°†åœ¨ä»¥åŽè¯´æ˜Žï¼‰ã€‚" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 正则化逻辑回归" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "在训练的第二部分,我们将è¦é€šè¿‡åŠ å…¥æ­£åˆ™é¡¹æå‡é€»è¾‘回归算法。如果你对正则化有点眼生,或者喜欢这一节的方程的背景,请å‚考在\"exercises\"文件夹中的\"ex2.pdf\"。简而言之,正则化是æˆæœ¬å‡½æ•°ä¸­çš„一个术语,它使算法更倾å‘于“更简å•â€çš„模型(在这ç§æƒ…况下,模型将更å°çš„系数)。这个ç†è®ºåŠ©äºŽå‡å°‘过拟åˆï¼Œæ高模型的泛化能力。这样,我们开始å§ã€‚" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "设想你是工厂的生产主管,你有一些芯片在两次测试中的测试结果。对于这两次测试,你想决定是å¦èŠ¯ç‰‡è¦è¢«æŽ¥å—或抛弃。为了帮助你åšå‡ºè‰°éš¾çš„决定,你拥有过去芯片的测试数æ®é›†ï¼Œä»Žå…¶ä¸­ä½ å¯ä»¥æž„建一个逻辑回归模型。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "和第一部分很åƒï¼Œä»Žæ•°æ®å¯è§†åŒ–开始å§ï¼" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Test 1Test 2Accepted
00.0512670.699561
1-0.0927420.684941
2-0.2137100.692251
3-0.3750000.502191
4-0.5132500.465641
\n", + "
" + ], + "text/plain": [ + " Test 1 Test 2 Accepted\n", + "0 0.051267 0.69956 1\n", + "1 -0.092742 0.68494 1\n", + "2 -0.213710 0.69225 1\n", + "3 -0.375000 0.50219 1\n", + "4 -0.513250 0.46564 1" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = 'ex2data2.txt'\n", + "data2 = pd.read_csv(path, header=None, names=['Test 1', 'Test 2', 'Accepted'])\n", + "data2.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuMAAAHjCAYAAACJlRE5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X14pHV59//PGcAbycYHHkTIQqG/3SpaYVkjFd2a4iOs\nD2S3YEBFb92j+Fh32V/bXWt7a6s9aNfWNLa03HRF0Vtha5sE2q6KqL0xUh+y/EAQkCy6KLs8CaiT\nUFsx5++P71ybK5OZZJKZuR7fr+PIMZnrmkm+c2Uyc873Or/nae4uAAAAAMnrSnsAAAAAQFkRjAMA\nAAApIRgHAAAAUkIwDgAAAKSEYBwAAABICcE4AAAAkBKCcQAAACAlBOMAAABASgjGAQAAgJQcmvYA\nknT00Uf7SSedlPYwAAAAUHB79uz5sbsfs9jtShWMn3TSSZqYmEh7GAAAACg4M7u3mduRpgIAAACk\nhGAcAAAASAnBOAAAAJCSUuWMAwAAIPjFL36h++67Tz//+c/THkquHX744Vq5cqUOO+ywZd2fYBwA\nAKCE7rvvPvX09Oikk06SmaU9nFxydz3yyCO67777dPLJJy/rZ5CmAgAAUEI///nPddRRRxGIt8DM\ndNRRR7V0doFgHAAAoKQIxFvX6jEkGAcAAABSQjAOAACARVUq0s6d0rZt4bJSac/PHRsbk5nprrvu\nas8PXMRf//Vf6/HHH1/Sff793/9dr3nNazoyHoJxAAAALGh8XOrtlbZskXbsCJe9vWF7q66++mqt\nW7dOV199des/rAnLCcY7iWAcAAAADVUq0vr14XJ6Omybnp7dPjW1/J89NTWl8fFxffzjH9c111xz\ncPtf/MVf6HnPe55OO+00bd++XZK0d+9evfzlL9dpp52mtWvX6p577pEkfeQjH9ELXvACnXrqqfrA\nBz4gSdq3b5+e/exn641vfKNOOeUUnXfeeXr88cf1sY99TAcOHNBZZ52ls846S5J0/fXX68wzz9Ta\ntWt1/vnna6r6gL7whS/o2c9+ttauXauRkZHlP8hFEIwDAACgoV27pJmZ+vtmZsL+5br22mt19tln\n69d+7dd01FFHac+ePfr85z+va6+9Vt/85jd166236g/+4A8kSW984xv17ne/W7feeqtuuukmHXfc\ncbr++us1OTmpb33rW7rlllu0Z88e3XjjjZKk733ve3rXu96lO++8U095ylP0d3/3d3rve9+r448/\nXl/96lf11a9+VT/+8Y/14Q9/WDfccINuvvlm9fX16aMf/ah+/vOf63d+53f0L//yL9qzZ48eeOCB\n5T/IRRCMAwAAoKHJydkZ8VrT09Levcv/2VdffbUuuOACSdIFF1ygq6++WjfccIPe+ta36ogjjpAk\nHXnkkapUKtq/f782bNggKTTaOeKII3T99dfr+uuv1+mnn661a9fqrrvu0uTkpCTphBNO0Itf/GJJ\n0pve9CaN18mp+cY3vqE77rhDL37xi7VmzRpdddVVuvfee3XXXXfp5JNP1urVq2VmetOb3rT8B7kI\nmv4AAACgodWrpe7u+gF5d7e0atXyfu6jjz6qr3zlK7rttttkZvrlL38pM9P555/f9M9wd73vfe/T\n29/+9jnb9+3bN6/kYL0ShO6uV7ziFfPy1W+55ZYlPJLWMDMOAACAhgYHpa4GEWNXV9i/HP/0T/+k\niy66SPfee6/27dunH/3oRzr55JP11Kc+VZ/4xCcOLrJ89NFH1dPTo5UrV2psbEyS9F//9V96/PHH\n9apXvUpXXnnlwTzv/fv366GHHpIk/fCHP9R//Md/SJI++9nPat26dZKknp4eVaqlYF74whfq61//\nuvZWp/enp6d1991369nPfrb27dt3MC+9k4tLCcYBAADQUE+PtHt3uOzuDtu6u2e3r1ixvJ979dVX\nH0w7ifz2b/+27r//fr3uda9TX1+f1qxZo7/8y7+UJH3605/Wxz72MZ166ql60YtepAceeECvfOUr\n9YY3vEFnnnmmnve85+m88847GGg/61nP0mWXXaZTTjlFjz32mN75zndKki6++GKdffbZOuuss3TM\nMcfok5/8pC688EKdeuqpOvPMM3XXXXfp8MMP1xVXXKFXv/rVWrt2rZ7xjGcs70E2wdy9Yz88a/r6\n+nxiYiLtYQAAAKTuzjvv1CmnnNL07aemwmLNvXtDasrg4PID8U7bt2+fXvOa1+j2229P5PfVO5Zm\ntsfd+xa7LznjAFDLXRobkwYGpHiOYaPtAFACK1ZImzalPYriIU0FAGqNjUkbN0qXXBICcClcXnJJ\n2F7NWQQAZNNJJ52U2Kx4q5gZB4BaAwPS5s3S8HC4PjQUAvHh4bB9YCDd8QEACoNgHABqmYUAXAoB\neBSUb94ctpOiAgBoE9JUAKCeeEAeIRDPL3dpdHQ27Wix7QCQEIJxAKgnyhGPi+eQI19YBwAgowjG\nAaBWFKRFOeIzM7M55ATk+RRfBxD9DVkHADSng2eWDjnkEK1Zs0a//uu/rte+9rX6yU9+suh9XvSi\nFy3rd42NjemOO+5Y8v1WdLh+I8E4ANQaG5sN0qLUlKGh2WCOWdT8qf0bdnXN/xsDqK+DZ5ae/OQn\n65ZbbtHtt9+uI488Updddtmi97npppuW9buWG4x3GsE4ANQaGJBGRuYGaVEwNzLCLGpesQ4AWJ6E\nziydeeaZ2r9//8HrH/nIR/SCF7xAp556qj7wgQ8c3B6fqW50m0996lM69dRTddppp+miiy7STTfd\npOuuu06///u/rzVr1uiee+7RPffco7PPPlvPf/7z9Zu/+Zu66667JEk/+MEPDnb0/KM/+qO2PLaF\nUE0FAGqZSTUtmhfcjnxotA6AgBxYWAIVpn75y1/qy1/+sjZVuwpdf/31mpyc1Le+9S25u173utfp\nxhtv1Ete8pKD92l0m6OOOkof/vCHddNNN+noo4/Wo48+qiOPPFKve93r9JrXvEbnnXeeJOllL3uZ\nLr/8cq1evVrf/OY39a53vUtf+cpXtHnzZr3zne/Um9/85qZm6lvFzDgAoPhYBwC0pkNnlv7zP/9T\na9as0TOf+Uw9+OCDesUrXiEpBNrXX3+9Tj/9dK1du1Z33XWXJicn59y30W2+8pWv6Pzzz9fRRx8t\nSTryyCPn/d6pqSnddNNNOv/887VmzRq9/e1v1/333y9J+vrXv64LL7xQknTRRRe19Piawcw4AKD4\nGq0DkML2/n7OegAL6dCZpShn/PHHH9erXvUqXXbZZXrve98rd9f73vc+vf3tb19gSPVv8zd/8zeL\n/t6ZmRk97WlP0y233FJ3vyV4toyZcQBA8bEOAFi+BM4sHXHEEfrYxz6mv/qrv9ITTzyhV73qVbry\nyis1NTUlSdq/f78eeuihOfdpdJuXvvSl+tznPqdHHnlEkvToo49Kknp6elSpVCRJT3nKU3TyySfr\nc5/7XPUhum699VZJ0otf/GJdc801kqTPfOYzLT+2xRCMAwCKL8r3r53tarQdwKyEKkydfvrpOvXU\nU3X11Vfrla98pd7whjccXEh53nnnHQyko1nrRrd57nOfq/e///3q7+/Xaaedpq1bt0qSLrjgAn3k\nIx/R6aefrnvuuUef+cxn9PGPf1ynnXaanvvc5+raa6+VJA0PD+uyyy7T8573vDkLSjvFvER5cn19\nfT4xMZH2MAAAAFJ355136pRTTln8hu4h4B4YmPvBtdH2DnrkkUe0du1a3XvvvYn8vmbVO5Zmtsfd\n+xa7LzPjAAAAaCwjZ5YOHDigM888U7/3e7+XyO9LCgs4AQAAkHnHH3+87r777rSH0XbMjAMAAJRU\nmdKVO6XVY0gwDgAAUEKHH364HnnkEQLyFri7HnnkER1++OHL/hmkqQAAAJTQypUrdd999+nhhx9O\neyi5dvjhh2vlypXLvj/BOAAAQAkddthhOvnkk9MeRumRpgIAAACkhGAcqMddGh2d31Ws0XZgKXh+\nAQCqUg3GzexKM3vIzG5vsN/M7GNmttfMvmNma2P7zjaz71X3bU9u1CiFsTFp48a5bX6jdsAbN7at\n2xhKiucXAKAq7ZnxT0o6e4H950haXf26WNLfS5KZHSLpsur+50i60Mye09GRolwGBmbb/EYB0yWX\nzLYDHhhIe4RoRdoz0zy/AABVqQbj7n6jpEcXuMm5kj7lwTckPc3MjpN0hqS97v59d/9vSddUbwu0\nh5k0NDQbMHV1zQZKQ0OJdRtDh6Q9M83zCwBQlfbM+GJ6Jf0odv2+6rZG2+cxs4vNbMLMJijdgyWJ\nAqY4AqViyMLMNM8vAICyH4y3zN2vcPc+d+875phj0h4O8iQK0OLiM6nIryzMTPP8AgAo+8H4fkkn\nxK6vrG5rtB1oj9qZ0pmZ+TOpyLc0Z6Z5fgEAqrIejF8n6c3VqiovlPRTd79f0rclrTazk83sSZIu\nqN4WaI+xsfkzpfGZVKpd5F+aM9M8vwAAVal24DSzqyX9lqSjzew+SR+QdJgkufvlknZLWi9pr6TH\nJb21uu8JM3uPpC9KOkTSle7+3cQfAIprYEAaGQmX0UxpFDD195e62kWlIu3aJU1OSqtXS4ODUk9P\n2qNaotqZ6aGh2etS52fIeX4BAKrMS3Q6tK+vzycmJtIeBpBb4+PS+vUhq2J6WuruDunWu3dL69al\nPbolGB0NVVPiM9PxAH1kRNqwIe1RAgByzMz2uHvforcjGAfQjEpF6u0Nl7V6eqQDB6QVK5If17K4\nh1SQ+Mz0QtsBAFiiZoPxrOeMA8iIXbvCjHg9MzNhf26YhZnv2oC70XYAADqEYBxAUyYnQ2pKPdPT\n0t69yY4HAIAiIBgH0JTVq0OOeD3d3dKqVcmOBwCAIiAYB9CUwcGwWLOerq6wH6jLPSyarV2j1Gg7\nAJQIwTiApvT0hKopPT2zM+Td3bPbc7N4E8kbGwvVa+J13KPqNRs3UlcdQKmlWmccQL6sWxeqpuza\nFXLEV60KM+IE4ljQwMBsQyNpbl33zZupqw6g1ChtCGQV5ffQrDw8V+J13CPxOu8AUDCUNgTyjlP7\naFYenitRh9E4AnEAIBgHMit+aj8Ksji1j3ry8FyJxhQX//AAACVFMI5yykN1h2gmMQqyurpmgytm\nFBGX9edK7YeDmZn5Hx4AoKTIGUc5jY6G0/fxYCUeMIyMhE6MWeA+t6bgzEz6wRWyKavPlTz9vwFA\nm5AzDiwkD6f1JU7to3lZfq4MDISAOz5LH83mj4xk5/8NAFJAMI5yyvppfYlT+2he1p8rZmHmu/b/\nqtF2IC4PaYVACwjGUV5Zr+4wNjb/A0L8A0QWKmQgG3iuoMjyUC0IaAHBOMory6f1JU7to3k8V1Bk\neUkrBJaJBZwop9oX89qOgFmaIQeAsqNpFHKo2QWcBOMoJ6o7AEC+ZLVaENAA1VSAhXBaHwDyI+tp\nhUALCMZRTlR3AIB8yHq1IKBFh6Y9AAAAgIYaVQuSwvb+ftIKkWsE4wAAILuitMKBgflphf39pBUi\n9wjGAQBAdkXpg81uB3KGnHEAAAAgJQTjAAAAQEoIxgEAAICUEIwDAAAAKSEYBwAgSe6hC3BtfexG\n2wEUGsE4ALRBpSLt3Clt2xYuK5W0R4TMGhuTNm6c27AmamyzcWPYD6A0KG0IAC0aH5fWrw+NAaen\npe5uaetWafduad26tEeHzBkYmO0gKYV62fEOk9TNBkrFvESnw/r6+nxiYiLtYQAokEpF6u2tPxPe\n0yMdOCCtWJH8uJBx8RbvkXiHSQC5Z2Z73L1vsduRpgIgd7KUErJrV5gRr2dmJuwH5om3dI8QiAOl\nRDAOIFfGx8NM9JYt0o4d4bK3N2xPw+RkSE2pZ3pa2rs32fEgJ6KZ8bh4DjmA0iAYB5AblUrIza5U\nZgPg6enZ7VNTyY9p9eqQI15Pd7e0alWy40EOxFNUNm8Op1CiHHICcqB0CMYB5EYWU0IGB6WuBq+k\nXV1hPzDH2NhsIB6lpgwNzQbkVFMBSoVgHEBuZDElpKcnVE3p6ZmdIe/unt3O4k3MMzAgjYzMzRGP\nAvKREaqpACVDMA7goCwtjKwnqykh69aFqinDw9L27eHywIEclDXMcvOZLI+tVWbShg3zF2s22g6g\n0AjGAUjK3sLIerKcErJihbRpk3TppeEyFzPiWW4+k+WxAUAbEYwDyOTCyHpICWmzePOZKOjNSvOZ\nLI8NANqIDpwAmloYuWlTsmNqJEoJ2bUr5IivWhVmxAnElyFe63p4eLYBTRaaz2R5bADQRnTgBKBt\n20JqSiPbt4f0CxSU+9z8n5mZ7AS7WR5b3rmHdJ+BgbnHtNF2AEtCB04ATcvqwkgkIMvNZ7I8tiIg\nLx/IBIJxAJleGIkOynLzmSyPrSjIywcyIdWccTM7W9KwpEMk7XT3P6/Z//uS3li9eqikUyQd4+6P\nmtk+SRVJv5T0RDOnAQDUFy2AXL8+xDzT02FGvKuLhZGF1qj5jBS29/eHUnuMrZjIywcyIbWccTM7\nRNLdkl4h6T5J35Z0obvf0eD2r5V0ibu/tHp9n6Q+d/9xs7+TnHFgYVNTLIwslSznDGd5bEVDXj7Q\nEc3mjKc5M36GpL3u/n1JMrNrJJ0rqW4wLulCSVcnNDaglKJa2SiJqMlMs9uTlOWxFUmjvHxmxoHE\npJkz3ivpR7Hr91W3zWNmR0g6W9I/xza7pBvMbI+ZXdzol5jZxWY2YWYTDz/8cBuGDQBAAWQpL7/I\nHVeBReRlAedrJX3d3R+NbVvn7msknSPp3Wb2knp3dPcr3L3P3fuOOeaYJMYKAED2NcrLjwLyJKup\nUNkFJZZmmsp+SSfErq+sbqvnAtWkqLj7/urlQ2Y2qpD2cmMHxgkAQPEMDEgjI3Pz76OAvL8/2Woq\n8couUhgDlV1QEmku4DxUYQHnyxSC8G9LeoO7f7fmdk+V9ANJJ7j7dHVbt6Qud69Uv/+SpD919y8s\n9DtZwAkAQEbF02YiVHZBjmW+6Y+7PyHpPZK+KOlOSf/o7t81s3eY2TtiN90g6fooEK86VtK4md0q\n6VuS/m2xQBwAAGRYvNRihEAcJZBqzri773b3X3P3/8fd/6y67XJ3vzx2m0+6+wU19/u+u59W/Xpu\ndF+UWB4X/+RxzADQKXRcRUnlZQEnsLA8Lv7J45hTUqlIO3dK27aFy0ol7RFlC8cHuZelyi5A0ty9\nNF/Pf/7zHQU1M+O+ebO7FC7rXc+aPI45BV/7mntPj3t3dzg03d3h+te+lvbIsoHjg0IYGZn/2hd/\nTRwZSXd8wDJImvAm4tPUFnCmgQWcBZfHxT95HHMbVCqh0+fkpLR6dej02dNT/3a9vfVnent6pAMH\nyt0hlOPTWc0+T9EGdFxFATW7gJNgHMWSx7bOeRxzC8bHpfXrw8Ocnpa6u8PD371bWrdu7m137pS2\nbAm3q9XdHT7DlLljKMenc5byPAWAejJfTQUZU4TFhHlc/JPHMbegUgkBTqUyG0BOT89un5qae/vJ\nyfqBZnS/vXvbP7485V4nfXzKYqnPUwBoBcE4grwvJszj4p88jrlFu3aFh1nPzEzYH7d6dZiRrKe7\nW1q1qn1jGx8PKR9btkg7doTL3t6wPauSPD5lstTnKQC0gmAcQbz7WRQI5qn7WZbaOjcrj2Nu0VJn\ncgcH52bwxHV1hf3tkNeZ0KSOT9lwxgFAkg5NewDIiHizheHh2QWFeVlMmKW2zs3K45hbFM3kNspx\nrp3J7ekJObqNcnfbtTixmZnQLOZeJ3V8ymapz9OksbAUKBYWcGKuki0mRLKWW/1jaioEH3v3hkBo\ncLC9gea2bSE1pZHt26VLL23f72u3Th+fsslylRoWlhYcVWUKpdkFnMyMY1ajxYR5mBlHLix3JnfF\nis7OTGd9JnQxnT4+ZZPVMw7xdKpI9Jxdv55SloUQrd+Kn5WOp42OjEgbNqQ9SrQZwTiC2hzxoaG5\n9a8JyNEm69aFoCFLM7mDg9LWrfX3kXtdTll8nuY1nQpLEF+/Jc19L87D+i0sC8E4gkaLCaWwvb+f\nT+Nom6XO5HY6RzarM6FIV9bOOLCwtATyvn4Ly0LOOALy1JBRSebIknuNLKPJU4mwfqsQ6MBZB8E4\nkC9ZXkgHJI3/hyYUYWIpnjYaYWY8l+jACbRR3jozFgXNV4BZUTpVT89ss6fu7tntpQ/EJRrYIZfI\nGQcWUS9NYutWSoklgRxZYK4sLizNlLwvgGT9VikRjAMLoJRYuvJechDohKwtLM2UvC+ALGEzOJCm\nAiyINIl00e4dHeEujY7OP+XfaDvyJR6QR/IQiEthjBs2zB9ro+0oBIJxYAGkSaSLHFl0RN7zirGw\nRg3s+JCFjCJNBVgAaRLpI0cWbZf3vGI0RgM75BClDYEFUEoMKCjKxxXT6Cjt5JEZ1Bmvg2Acy5Fk\n0xkACaKxSvEUoc44CoM648iNrNfwjtIkhoel7dvD5YEDBOJArpFXnK5OLaJlASRyiJxxpCovNbwp\nJQYUCHnF6YsW0ZJOAhCMIz3U8AaQChqrpI9FtMBBBONITTM1vJmNBtB2TTZWqVTC69DkZKisNDgY\nFm6jDfLenAdoIxZwIjXbtkk7djTev327dOmlyY0HwOLKEqCycDshLKJFgbGAE5kX1fCuhxreQPaM\nj4dSn1u2hA/SW7aE6+PjaY+sveIpdFHq3PT07PapqXTHVxgsogUkEYwjRbQ6B/KjTAFqMyl0aFHt\nItqZmdkccgJylAzBOFJDq3MgP8oUoE5O1u+6K4Xte/cmO55CarSINgrIx8bSHiGQGBZwIlW0Ogfy\noUwBapRCV+/xkkLXJk0uogXKgGAcqaOGN7KiLIsTl6NMAergYOh3UA8pdG0SNeFpdjtQYFRTAVAo\nyw2oqZ6xsEolLNas1yG3p6d4fQF4PgBoVbPVVAjGARTGcgOosgWay1W2AHVqihQ6AMvXbDBOmkqZ\nuIdFMfEcvYW2AznSSkdXGlA1p9k1HkVJ9yGFDkASCMbLZGxM2rhx7ur1eHmpkRFy9ZBbrQTUZVqc\n2KrFAtR6s+dbtxZ39hwAWkVpwzIZGJhfxzVe55XV68ixVgJqGlC1R5lqkQNAuxCMl0ltHdeurvl1\nXoGcaiWgpgFVe3SiFnmlIu3cKW3bFi7r5fUDQJ4RjJdNFJDHEYijAFoJqGlA1R7tTvcZHw8La7ds\nkXbsCJe9vWE7ABQFwXjZRKkpcbQeRgG0GlBHixOHh6Xt28PlgQPkOS9FO9N9SHkBUBYs4CyT2hzx\noaHZ6xIz5Mi9Vju6Uj2jNe1slkOFGwBlQTBeJmNj83PEo5SV4eHQgphqKplUlFJxSSCgTk90FqJR\nLfKlpPtQ4Qa5QulgtIBgvEwGBkL5wviLQhSQ9/dTTSWjKBWHPGn17EQkSnmpF5BT4QaZQ+lgtCDV\nDpxmdrakYUmHSNrp7n9es/+3JF0r6QfVTSPu/qfN3LceOnBmHDML89AZEmXFcx+5slAaKBXLSqvZ\nDpypLeA0s0MkXSbpHEnPkXShmT2nzk2/5u5rql9/usT7Ik+imYX4gtLoBW7jxrC/ZDpRKg7IAyrc\nZBslJ2tQOhgtSDNN5QxJe939+5JkZtdIOlfSHR2+L7Iq3pRImj+zUMI0GvJmUWbtSnlBe5E610AU\nkEfvYRKBOJqSZjDeK+lHsev3SfqNOrd7kZl9R9J+Sb/n7t9dwn1lZhdLuliSTjzxxDYMGx1Tu6A0\nekEr8cwCebMoOxbkZku85GQken1av77k6UONSgeX9P0Lzct6nfGbJZ3o7qdK+htJS85TcPcr3L3P\n3fuOOeaYtg8QbUZTojnS7gzJqWgAcaTONVCbMz4zM3uml14eWESawfh+SSfErq+sbjvI3X/m7lPV\n73dLOszMjm7mvsgpmhLNkWbeLN0PAdQida6BRqWDo4C8hGue0Lw001S+LWm1mZ2sEEhfIOkN8RuY\n2TMlPejubmZnKHx4eETSTxa7L3Io4aZEeandnUbeLKeiAdRD6lwDlA5GC9Iubbhe0l8rlCe80t3/\nzMzeIUnufrmZvUfSOyU9Iek/JW1195sa3Xex30dpw4wbHU2sTmu9BUhRY5JSL0Cq2rkzzIQ3esMd\nHiaPFygjSk4CzWu2tGGqTX+qqSe7a7ZdHvv+byX9bbP3Rc4lNLPArO/iOBUNoJ52dlkFENCBE9lh\nVn/mu9H2ZWpmAVLZZ305FQ2gEUpOAu1FMI7SYdZ3cYODoW5wPUlUcQGQbZScBNqHYBylw6zv4jgV\nDaDs8rLIH/mX6gLOpLGAExILkJZiaopT0QDKh0X+aIdcLOAE0sCsb/M4FQ2gbFjkj6QRjKOUWIAE\nAKiHRf5IGsE4SotZXwBALRb5I2ldaQ8AAAAgK6JF/vWwyB+dQDAOAABQNTgY1hDVQ2lXdALBOAAA\nQFW0yL+nZ3aGvLt7djtri9Bu5IwDAADEsMgfSSIYB4CU0FQEyC4W+SMpBOMAkIJ6TUW2bqWpCACU\nDTnjAJCweFORqITa9PTs9qmpdMcHAEgOwTgAJKyZpiIAgHIgGAeAhNFUBAAQIRgHgITRVAQAECEY\nB4CE0VQEABAhGAeAhNFUBEBmuUujo+Gyme1oGcE4AKQgaioyPCxt3x4uDxygrCGAlI2NSRs3Spdc\nMht4u4frGzeG/Wgr6owDSAUNb2gqAiCDBgakzZvDDIEkDQ2FQHx4OGwfGEh3fAVkXqLTDX19fT4x\nMZH2MIDSq9fwpquLhjcAkAnRTHgUkEshEB8akszSG1fOmNked+9b9HYE4wCSVKlIvb3hslZPT0jV\nIGcaAFLmPnel+cwMgfgSNRuMkzMOIFE0vAGAjItmxuPiOeRoK4JxJKJSkXbulLZtC5f1ZkVRDjS8\nAYAMi6eobN4cZkmiHHIC8o5gASc6rl5+8Nat5AeXVdTwpl5ATsMbAEjZ2NhsIB7liA8NhX3Dw1J/\nv7RhQ7pjLBhyxtFR5AejFs8JAMgw9xCQDwzMzRFvtB0NkTOOTCA/GLVoeAMAGWYWZr5rA+5G29Ey\n0lTQUeQHo56o4c2uXeE5sGpVqDNOIA4AKBuC8U4r+eke8oM7owgNc2h4AwAAaSqdV/K2soODc8uU\nxnV1hf1xzcWEAAAgAElEQVRYmvHxkHO9ZYu0Y0e47O0N2wEAQL4QjHdavK1sFJCXqK0s+cHtVamE\nyjSVyuzZhunp2e1TU+mODwAALA1pKp1WWxIoai1boray5Ae3TzMLYkn9AAAgP5qaGTezlWZ2VvX7\n/2Fm3Z0dVsHEA/JIuwJxd2l0dH4R/kbbUxLlB196abgkEF8eFsQCAFAsiwbjZvY2SddJ2lnd9CuS\nru3koAqnk21lS56TXjbRgth6WBALAED+NDMz/l5JL5T0M0ly97slPaOTgyqUTreVLXlOetmwIBYA\ngGJpJhj/ubv/d3TFzA6RVPxE53Zp1FY2CqBbnbmu/XldXfN/HwqDBbEAUGA5ST1Fe5kv8oc1s7+S\n9KCkt0p6l6R3S5p09/d1fnjt1dfX5xMTE8n+0qTqjLvPnTKdmSEQL7CpKRbEAkDhjI6GFNP4hFr8\njPfISOiCiVwwsz3u3rfY7ZqppvIHki6WdJekzZK+KOl/tza8Eonaxza7fTka5aQzM15YNMwBkHVF\naE6WuHjqqRTex0k9LbwFg/FqSson3P3Nkv4+mSFhSWpzxOP/uBIBOQAgcePjoffBzEyo9NTdLW3d\nGtLp1q1Le3QZRjnkUmomTWVc0lnu/otkhtQ5qaSpdBqntAAAGVKphK7Alcr8fT09oe8EaXWLIPW0\nEJpNU2lmAec9kr5mZu8zs/dGX60PEW0xMBAC7vgn5uiT9cgIp7QAAIlqpjkZFtDJcsjIpGaC8R9K\n+pKkIyQdE/tqmZmdbWbfM7O9Zra9zv43mtl3zOw2M7vJzE6L7dtX3X6LmRVsunsJotzz2k/MjbYD\nANBBNCdrQafLISOTFl3A6e5/LElm9uTq9f9sxy+u5qNfJukVku6T9G0zu87d74jd7AeS+t39MTM7\nR9IVkn4jtv8sd/9xO8YDAABaFzUnqxeQ05xsEY3KIUthe38/qacF1EwHzueY2bclTUqaNLNvmtkp\nbfjdZ0ja6+7fr9Yxv0bSufEbuPtN7v5Y9eo3JK1sw+8FAAAdQnOyFpB6WkrNpKlcIekP3X2lu6+U\n9H5J/9CG390r6Uex6/dVtzWySdLnY9dd0g1mtsfMLm7DeAAAQItoTtYCUk9LqZk64z3u/qXoirvf\nUG0ElBgzO0shGI8XRFrn7vvN7BmSvmRmd7n7jXXue7FCnXSdeOKJiYwXAIAyW7cuVE2hORmwuGaC\n8X1m9j5Jn65ef5OkfW343fslnRC7vrK6bQ4zO1XSTknnuPsj0XZ331+9fMjMRhXSXuYF4+5+hcLs\nvvr6+lj5AABAAmhOBjSnmTSVtykEzbsl/ZtC0Py2Nvzub0tabWYnm9mTJF0g6br4DczsREkjki5y\n97tj27vNrCf6XtIrJd3ehjEBAAAAiWmmmsojkt7V7l/s7k+Y2XskfVHSIZKudPfvmtk7qvsvl/S/\nJB0l6e8s5Ek9US2efqyk0eq2QyV91t2/0O4xAstFG2gAANCMZjpwfkHSBe7+k+r1p0v6P+7+6gTG\n11aF7MCJpiUVINdrA93VRRtoAADKpNkOnM3kjB8bBeKSVK35fXxLowMSVi9A3rq1/QFypRJ+T7wN\ndFRrd/162kADAIC5mskZnzGzg/W9q3ncQG7EA+QoMJ6ent0+NdW+30UbaAAAsBTNBOP/S9LXzewT\nZvZJhYolf9jRUQFtlGSATBtoAACwFM0s4Pw3MztD0pkKjXb+wN0f6vjIgDZJMkCmDTQAAFiKhjPj\nZnaCmT1Fktz9QUmPSnqJpAvM7LCExge0LAqQ62l3gEwbaAAAsBQLpal8TtJTJMnMTpM0KukhheY6\nl3V+aEB7JBkg0wYaAAAsxUJpKke4+33V79+kUAf8L8ysS9KtnR8a0B5RINyo3GC7A2TaQAMAgGYt\nFIxb7PuXSnq/JLn7jJnRVh65knSATBvoxdEYCQCAhYPx/2tmn5V0v0IXzK9Ikpk9U9IvEhgb0FYE\nyNmRVN13AACybqGc8fdK2i3pAUm/6e7/Xd1+vKQ/7vTAABRTknXfAQDIuoYz4+4+I+n/1Nl+c0dH\nBKDQmqn7zhkMABLpbCiHReuMA0A70RgJQDNIZ0NZNNOBEwDaJsm67wDyiXQ2lAnBOIBE0RgJwGKa\nSWcDimKhDpw9ZvYhM/uEmb2+Zt/fdH5oAIqIxkgAFkM6G8pkoZzxKyXdK+nfJL3NzH5b0pvc/ReS\nXpzE4AAUE42RACwkSmerF5CTzoaiMff6/XvM7BZ3XxO7/gFJL5f0Oklfdve1yQyxffr6+nxiYiLt\nYQAAgAVUKlJvb7is1dMTPszz4R1ZZ2Z73L1vsdstlDN+uJkd3O/ufyLpk5JulHRkyyMEAACog3Q2\nlMlCaSr/Jullkr4UbXD3j5vZA5L+ttMDAwAA5UU6G8qiYZpKEZGmAgAAgCS0I00FAAAAQAcRjAMA\nAAApWTQYN7N5eeX1tgEAAACpcJdGR8NlM9szpJmZ8W81uQ0AAABI3tiYtHGjdMkls4G3e7i+cWPY\nn1ENZ7jN7BmSjpP0ZDN7niSr7nqKpCMSGBsAAACwuIEBafNmaXg4XB8aCoH48HDYPjCQ7vgWsFC6\nyaslvU3SSkmXaTYYr0j64w6PCwAAAFnmHmacBwYks8W3d5JZCMClEIBHQfnmzWF7UuNYhkVLG5rZ\n6939HxMaT0dR2hAAAKBNRkdDCkg84I1SQ4aHpZERacOGZMfkLnXFsrBnZlILxNtZ2vAZZvaU6g+9\n3My+ZWYva3mEAAAAyK94akiUq51makj0++PiOeQZ1UwwfrG7/8zMXqmQQ/47knZ0dlgAAADItCg1\nJArIu7pmA/GkU0NqPwjMzMz/oJBRzQTj0ejXS/qUu9/a5P0AAABQZPFc7UgaOdpjY/M/CMQ/KGS4\nmkozQfWtZrZb0mskfd7MVmg2QAcAAEBZZSU1ZGAg5KjHPwhEAfnISKarqTQTjL9V0gclneHuj0s6\nXNKmTg4KAAAAGZel1BCzsFi0dka+0fYMWbSTprv/0sx+VdIrJP2ZpCeLNBUAAIBya5QaIoXt/f3J\nV1PJoWZKG/6tpMMkvcTdTzGzIyV90d1fkMQA24nShgAAAG2SpTrjGdTO0oYvcve3S/q5JLn7o5Ke\n1OL4kDXuoV5o7YezRtsBAEC55Tg1JEuaCcZ/YWZdqi7aNLOjJM10dFRI3thYKNwfz/GKcsE2bsz0\nKuSiqFSknTulbdvCZaWS9ogAAECnNcwZN7ND3f0JSZdJ+mdJx5jZn0h6vaQ/SWh8SEq8cL8Ucr7S\nLNxfMuPj0vr1Ye3L9LTU3S1t3Srt3i2tW5f26AAAQKc0zBk3s5vdfW31++dKerkkk3SDu9+e3BDb\nh5zxRcRXRUfSKNxfMpWK1Ntbfya8p0c6cEBasaLzY9i1S5qclFavlgYHw+8GAADL02zO+ELB+P/n\n7qe3fWQpIhhvgnvooBWZmSEQ77CdO6UtW8KMeK3u7vDZaFMHi4nWm5Xv6mJWHgCAVjQbjC9U2vAY\nM9vaaKe7f3RZI0N2NSrcz8x4R01O1g/EpbB9797O/e5KJQTi8Vn5aCzr1yczKw8AQJkttIDzEEkr\nJPU0+EKRZKlwf8msXh1mo+vp7pZWrerc7961K/yp65mZCfsB5AOLwNF2VFpLxEIz4/e7+58mNhKk\nK0OF+8uWvzw4GBZr1tPVFfZ3Spqz8gDah0Xg6Iio0lo8NohP3o2M0NSnDRYKxslLKJOBgfBPFS/Q\nHwXk/f2JVVMp4xtKT094fI3ytjuZJhLNyjfKV+/krDyA9iDdDB1DpbVELLSA88hqg5/O/XKzsyUN\nK6TE7HT3P6/Zb9X96yU9Lul/uvvNzdy3HhZwZlsWqoqkaWoqnBHYuzcEwYODyVRRKfMxB4og7UXg\nKDgqrS1byx04EwjED1GoYX6OpOdIutDMnlNzs3Mkra5+XSzp75dwX+RM2fOXV6wIb5iXXhoukwiC\no1n5np7ZvPXu7tntBOJA9pFuho6Kp61GCMTbaqE0lU47Q9Jed/++JJnZNZLOlXRH7DbnSvqUh+n7\nb5jZ08zsOEknNXFf5AxvKOlYty7MgCc9Kw+gPUg3Q0dRaa3j0gzGeyX9KHb9Pkm/0cRtepu8L3KG\nN5T0RLPynVa2xblAEtJcBI6Cq620Fs8ZlwjI22Sh0oaFYGYXm9mEmU08/PDDaQ8HCxgcnNtvKI43\nlPwbHw/56Vu2SDt2hMve3rAdwPKRboaOaVRpLVrUOTaW9ggLIc2Z8f2STohdX1nd1sxtDmvivpIk\nd79C0hVSWMDZ2pDRSWlWFUFnUe0B6CzSzdARGam0VnRpBuPflrTazE5WCKQvkPSGmttcJ+k91Zzw\n35D0U3e/38webuK+yCHeUIqpmcW5VHsAWpNUulli3MPMazwQXGg72s+sfh3xRtuxLKkF4+7+hJm9\nR9IXFcoTXunu3zWzd1T3Xy5pt0JZw70KpQ3futB9U3gY6IDCvaGAxbkAlo6GMyiJNGfG5e67FQLu\n+LbLY9+7pHc3e18A2cTiXABLRsMZlETDpj9FRNMfIB00FwKwLDScQY613PQHANqFag8AloWGMyiB\nVNNUAJQHi3MBLBkNZ1ACzIwDmOUujY6Gy2a2L1G0OPfSS8MlgTiAhmobzszMzOaQX3JJy69HQFYQ\njAOYFVUviL/RRW+IGzfS4AFAcmg4g5IgGEfyOjz7ihbEqxdEATnVCwCkIWo4E09JiQLyqBENUAAE\n40ges6/ZVTvz1NU1f2YKAJIQNZapfd1ptB3IKYJxJI/Z12yjegEAAIkhGC+DrKWFMPuabY2qF5A+\nBADZk7X3eCwZwXgZZDEthNnXbKJ6AQDkSxbf47EkBONlkMW0EGZfs4nqBQCQL1l8j8eSmJco+Onr\n6/OJiYm0h5GOLLUUrn2hGBqaf50Z8nS4h4B7YGDu36DRdgBA+rL0Ho+DzGyPu/ctejuC8RJxD/nZ\nkZmZdP5JR0fDqbP4C0X8hWRkJKyUBwAAzcnKezwOajYYJ02lLLKUFkLtWAAA2idL7/FYMoLxMsja\nojxqxwIA0B5Ze4/Hkh2a9gCQgEaL8qSwvb+ftBAAAPKI9/jcI2e8DFiUBwBAMfEen1ks4KyjtME4\nAAAAEsUCTqDd6HIGAADajGAcaBZdzgAAQJuxgBNoVrzLmTS/WRElGQGg4yoVadcuaXJSWr1aGhyU\nenrSHhWwfOSMA0tBlzMASM34uLR+fajeNz0tdXeHPje7d0vr1qU9OmAuFnDWQTCOtqDLGQAkrlKR\nenvDZa2eHunAAWnFiuTHBTTCAk6gE+hyBgCp2LUrzH3UMzMT9gN5RDAONIsuZ8iBSkXauVPati1c\n1ptFBPJocjKkptQzPS3t3ZvseIB2YQEn0Cy6nCHj6uXTbt1KPi2KYfXq8JyuF5B3d0urViU/JqAd\nyBkHmkWXM2QY+bQoOp7jyBtyxoF2Mwsz37UBd6PtQILIp0XR9fSEszw9PWEmXAqX0XYCceQVaSoA\nUADk06IM1q0LM+C7doXn9KpVoc44gTjyjGAcAJYgqw1HyKfFQrL6vF2OFSukTZuS/Z1FOn7IHnLG\ngRLjDWZpstxwhHxaNJLl520ecPywXDT9qYNgHJjFG8zS5CHY5W+KWnl43mYZxw+tYAEngIYqlRC0\nVSqzaQ3T07Pbp6bSHV8W5WGBZJRPOzwsbd8eLg8cIBAvszw8b7OM44ckEIwDJcQbzNLlZYFklE97\n6aXhklm7csvL8zarCnf83KXR0flN6hptRyIIxoESKtwbTAKiBZL1sEASWcXztjWFO35jY9LGjXO7\nRkfdpTduDPuROIJxLB2frHOv028wRWzJPjgY8q/r6eoK+4Gs4XnbmsIdv4GB0EV6eHg2IL/kktnu\n0gMDaY+wlAjGsXR8ss69Tr7BjI+HBU9btkg7doTL3t6wPc9oOII84nnbmsIdPzNpaGg2IO/qmg3E\nh4ZoXpcSqqlg6Wo/SQ8Nzb/OP3TmdaLyRhkqD0xN0XAE+cPztjWFO37uc2dkZmZ43+4AShvWQTDe\nRvGAPEIgnjvtfoPZuTPMhDdqPDM8nHyzDqAeauyjtHj/TkyzwTgdOLE80amu+D8z/8i50+5OdiwM\nRR7UOyu0dSv12FECC53ZlngfTwk541ie6B86Lp5DjlIqXOUBFA419lFqY2PzU0rjOeSs+UoFwTiW\nrvaT9czM/NXZKKXCVR5A4VBjP7+KWKUpcQMD0sjI3BnwKCAfGaGaSkpIU8HSNfpkLYXt/f3Shg3p\njhGpiCoMNFoYmusFTygEUqnyidSiNjGr//7caDsSkUowbmZHStol6SRJ+yS93t0fq7nNCZI+JelY\nSS7pCncfru77oKTfkfRw9eZ/6O67kxg7NPvJemBg/ifr/n4+WZdc1JK9UJUHUBhRKlWjRcakUmVP\nPLUoEv391q8vRpUmlFtaaSrbJX3Z3VdL+nL1eq0nJP2/7v4cSS+U9G4ze05s/5C7r6l+EYhLyTXj\niT5B1y7yaLQdzSlQMyVasiOrSKXKH1KLUHRpBePnSrqq+v1VkuZNpbr7/e5+c/X7iqQ7JfUmNsI8\nohlPvvH3AzqucE1cSoDUIhRdWjnjx7r7/dXvH1BIRWnIzE6SdLqkb8Y2/66ZvVnShMIM+mN17ioz\nu1jSxZJ04okntjbqrIu3uZXmN+MhfSTb+PsBiSCVKl9ILULRdazpj5ndIOmZdXa9X9JV7v602G0f\nc/enN/g5KyT9X0l/5u4j1W3HSvqxQi75hyQd5+5vW2xMpWj6QzH/TFu00Qh/v5bRzAUoljJ09kUx\nZboDp5l9T9Jvufv9ZnacpH9392fVud1hkv5V0hfd/aMNftZJkv7V3X99sd9bimBcos1tRjXdfp6/\n37I1fYwB5Ar/28ijZoPxtHLGr5P0lur3b5F0be0NzMwkfVzSnbWBeDWAj2yQdHuHxpk/NOPJpKYb\njfD3WzaauQDFFaUWDQ9L27eHywMHCMRRDGkF438u6RVmNinp5dXrMrPjzSyqjPJiSRdJeqmZ3VL9\nWl/dt8PMbjOz70g6S1JN9FJSNOPJrKaqAfD3awkVF4Bio0oTiiqVBZzu/oikl9XZfkDS+ur345Lq\nnpt394s6OsC8ohlPZjVVDYC/X0uouAAAyCM6cBYJzXgyq6lqAPz9WkLFBQBAHqWygDMtpVnAieVz\nDzPU8YB4oe1NohpA53GMAQBZkvUFnEA2dajxDo1GOo9jDADII9JUgLgONt6h0UjncYwBAHlDmgpQ\ni8Y7AACgRZlu+pMWgnE0jcY7AACgBeSMA8tF4x0AAJAQgnEgjsY7AAAgQSzgBOJovAMAABJEMA7E\n0XgHAAAkiGAciDOrP/PdaDsAAEALyBkHAAAAUkIwDgAAAKSEYBwAAABICcE4AAAAkBKCcQD55S6N\njs6v/95oOwDkHa97hUMwDiC/xsakjRvnNmSKGjdt3Bj2A0CR8LpXOJQ2BJBfAwOzHVKlUA8+3kGV\nuvAAiobXvcIxL9HpjL6+Pp+YmEh7GADaKZoRit6YpLkdVAGgaHjdywUz2+PufYvejmAcQO65S12x\nrLuZGd6QABQbr3uZ12wwTs44gHyLZoji4rmUAFA0vO4VCsE4gPyKn6rdvDnMDEW5lA3emCoVaedO\nadu2cFmppDBuAFiuZbzuIdtYwAkgv8bGZt+QolzJoaGwb3hY6u+XNmw4ePPxcWn9+vDeNT0tdXdL\nW7dKu3dL69al9BgaqFSkXbukyUlp9WppcFDq6Ul7VABSt8TXPWQfOeMA8ss9vDENDMzNlayzvVKR\nenvrz4T39EgHDkgrViQ07kXU+9DQ1ZXNDw0AEraE1z2ki5xxIKto2NA+ZmEGqPaNp872XbtCcFvP\nzEzYnwWVSgjEK5UQiEvhMto+NZXu+NJAahEQs4TXPeQDwTjSV7bglIYNqZicnA1ua01PS3v3Jjue\nRvLyoSEp4+PhjMaWLdKOHeGytzdsR0zZXkeBAiEYR/rKFpzGGzZEj5mGDR23enVI96inu1tatSrZ\n8TSSlw8NSeAswRKU7XUUKBCCcaSvbMFptNgmesxdXfMX46DtBgfnluSN6+oK+7MgLx8aksBZgiUo\n2+soUCAs4EQ2lLGbGA0bEpeHhZF5Wmjaadu2hdSURrZvly69NLnxZF4ZX0eBDGMBJ/IlXpopUuQ3\nEBo2pGLduhDMDg+HQG54OFzPSiAuhYB79+5wGc2Qd3fPbi9LIC5xlmDJyvY6ChQEwTiyoUzBKQ0b\nUrVihbRpU5hR3bQpm8FtHj40JCEvqUWZUabXUaBACMaRvrIFp40aNkSPmYVWrSlIVYk8fGjoNM4S\nLEHZXkeBAiFnHOkbHQ2r/ePBafyNZWSkWN3EaNjQWWV7PpXA1FRYrLl3b0hNGRwkEJ+H5z2QOc3m\njBOMI30Ep2in2hnCoaH513k+oWh4HQUyh2C8DoJxoCSoKgEASBnBeB0E40CJUDoSAJAiShsCKC+q\nSgAAcoJgHECxUFUCAJAjh6Y9AABoq0alI6Wwvb+fqhIAgMwgGAdQLAMDoYxbvHpEFJD394ftAABk\nBME4gGIxqz/z3Wg7AAApImccAAAASAnBOAAAAJCSVIJxMzvSzL5kZpPVy6c3uN0+M7vNzG4xs4ml\n3h8AAADIsrRmxrdL+rK7r5b05er1Rs5y9zU1RdOXcn8AAAAgk9IKxs+VdFX1+6skLbW8Qav3BwAs\nQaUi7dwpbdsWLiuVtEcEAMVgnkIDDDP7ibs/rfq9SXosul5zux9I+qmkX0r63+5+xVLuX91/saSL\nJenEE098/r333tuJhwQAhTU+Lq1fH/onTU9L3d1SV5e0e7e0bl3aowOAbDKzPTWZHXV1bGbczG4w\ns9vrfJ0bv52HTwONPhGsc/c1ks6R9G4ze0ntDRa5v9z9Cnfvc/e+Y445poVHBADlU6mEQLxSCYG4\nFC6j7VNT6Y4PncdZkRS4S6Oj8zsGN9qOXOtYMO7uL3f3X6/zda2kB83sOEmqXj7U4Gfsr14+JGlU\n0hnVXU3dHwDQml27wox4PTMzYT+Ka3xc6u2VtmyRduwIl729YTs6aGxM2rhRuuSS2cDbPVzfuDHs\nR2GklTN+naS3VL9/i6Rra29gZt1m1hN9L+mVkm5v9v4AgNZNTs7OiNeanpb27k12PEgOZ0VSNDAg\nbd4sDQ/PBuSXXBKub95MJ+GCSasD559L+kcz2yTpXkmvlyQzO17STndfL+lYSaMhJVyHSvqsu39h\nofsDANpr9eqQI14vIO/ullatSn5MaKxSCWcrJifD325wUOrpWd7PauasyKZNyx9rJ7XzOKTCTBoa\nCt8PD4cvKQTiQ0NhPwojlQWcaenr6/OJiYnFbwgAkBSCmt7e+nnCPT3SgQPSihXJjwvztXuh7bZt\nITWlke3bpUsvXf54O6VQC47dw+AjMzME4jmS+gJOAED+9fSEIKanJwQ1UriMthOIZ0MnUkqisyL1\nZPWsSKFSa6LUlLh4DjkKg2AcALCgdevCDPjwcJgNHR4O13M3y1hgnVhoOzg4d1I2rqsr7M+awiw4\nrs0Rn5mZn0OOwkgrZxwAkCMrVmQ3PxidWWgbnf1olPKRxbMimV5w7B6qoAwMzE01qbd9bGw2EI9y\nxOM55P390oYNyT8GdAQz4wAA5FynUkrydlYk06k1SylXODAgjYzMXawZBeQjI1RTKRgWcAIAkIBO\nVvhgoW2Q6eNQm3oyNDT/OoszC6XZBZykqQAA0GH1Knxs3dq+Ch95TCnphEwfB8oVogFmxgEA6KAk\nZ2unpsLs+969ISVjcLA8gXhcpo8D5QpLg9KGAJAEd2l0dH51g0bbi6KsjzuyhMefZIWPaKHtpZeG\ny8wEoAnL7HGgXCHqIBgHgFYsZVFWkZT1cUeW8PgzXeEDyaFcIRogZxwAWjEwMPuGKs1flFXUqgdl\nfdyRJTz+qMJHvYA89QofSA7lCtEAOeMA0Kr4jFekDIuyyvq4I00+/kxX+IhbSh1sLB3Ht3SazRkn\nGAeAdijroqwWH3cny/0losnHX6+aSlThIzM1u0dHQ4pN/ANF/APHyAgzt8ASsIATAJJS1kVZLT7u\n8fEwY7xli7RjR7js7Q3bc2EJjz8XzXPiqTfR4yhT6hGQFncvzdfzn/98B4C2mplx37zZXQqX9a4X\nUYuP+2c/c+/pCTev/erpca9UEnocy1XUv3v8cURfeX48QIokTXgT8Skz4wDQikaLsqIZxqJWFWnx\ncSdZ7q8jivp3jy8qjJRlDQCQEqqpAEArBgZCLm188VUU0PT3F/fUfouPO/fl/or6d2+UekNADnQM\nM+MA0AqzsKitNlBptL0oWnzcUbm/enJR7q+If3fqYAOpIBgHACRucHBuEZK4rq6wHwkrauoNkHEE\n4wCAxPX0hLJ+PT2zM+Td3bPbM1F3u2yi1Jt4SkoUkEcpOQDajjrjANqHphZYoqmpsFhz796QmjI4\nSCAOoBiarTPOAk4A7TM2RtMQLMmKFdKmTWmPAgDSQzAOoH3iTUOkEJDTNAQAgIYIxgG0T7xG8fDw\nbFAenykHAAAHkTMOoP3c55bKmJkhEAcAlEqzOeNUUwHQXo2ahpTogz8AAM0iGAfQPjQNAQBgScgZ\nB9A+jZqGSGF7fz/VVAAAiCEYB9A+UdOQeD3xKCDv76eaCgAANQjGAbSPWf2Z70bbAQAoOXLGAQAA\ngJQQjAMAAAApIRgHAAAAUkIwDgAAAKSEYBwAAABICcE4AAAAkBKCcQAAACAlBOMAAABASgjGAQAA\ngJQQjAMAAAApIRgHAAAAUkIwDgAAOs9dGh0Nl81sB0qCYBwAAHTe2Ji0caN0ySWzgbd7uL5xY9gP\nlNChaQ8AAACUwMCAtHmzNDwcrg8NhUB8eDhsHxhId3xASlKZGTezI83sS2Y2Wb18ep3bPMvMbol9\n/czMtlT3fdDM9sf2rU/+UQBAjpAigLSZhQA8Csi7umYD8aGhsB8oobTSVLZL+rK7r5b05er1Odz9\ne/K36qIAAAtmSURBVO6+xt3XSHq+pMcljcZuMhTtd/fdiYwaAPKKFAFkQRSQxxGIo+TSCsbPlXRV\n9furJC12buplku5x93s7OioAKKp4ikAUkJMigKRFz7u4+AdEoITSCsaPdff7q98/IOnYRW5/gaSr\na7b9rpl9x8yurJfmEjGzi81swswmHn744RaGDAA5VvYUAdJ00lf7AXBmZv4HRKCEzDv05DezGyQ9\ns86u90u6yt2fFrvtY+5eN6A2sydJOiDpue7+YHXbsZJ+LMklfUjSce7+tsXG1NfX5xMTE0t+LABQ\nGO4hEI/MzBQ/EJdCwL1x49wPH/HgcGRE2rAh7VEWG38DlIyZ7XH3vsVu17FqKu7+8kb7zOxBMzvO\n3e83s+MkPbTAjzpH0s1RIF792Qe/N7N/kPSv7RgzABRaoxSBMsyMU8kjfQMDIeAeGJh9vkVnbPr7\n+RugtNJKU7lO0luq379F0rUL3PZC1aSoVAP4yAZJt7d1dABQNGVPESh7mk4WmIWZ79pj3Wg7UBId\nS1NZ8JeaHSXpHyWdKOleSa9390fN7HhJO919ffV23ZJ+KOlX3f2nsft/WtIahTSVfZLeHstBb4g0\nFQClRYpAUNY0HQCJazZNJZVgPC0E4wBKyz2UL4ynCCy0vYjiHz4izIwD6JBmg/G00lQAAEkqe4pA\n2dN0AGRWxxZwAgCQGWNj83PEo+Yzw8NhAWEZ0nQAZA7BOACg+KjkASCjCMYBAMUXpeM0ux0AEkLO\nOAAAAJASgnEAAAAgJQTjAAAAQEoIxgEAAICUEIwDAAAAKSEYBwAAAFJCMA4AAACkhGAcAAAASAnB\nOAAAAJASgnEAAAAgJQTjAAAAQEoIxgEAAICUEIwDAAAAKSEYBwAAAFJCMA4AAACkhGAcAAAASAnB\nOAAAAJASc/e0x5AYM3tY0r1pjyMBR0v6cdqDyDGO3/Jx7FrD8Vs+jt3ycexaw/FbvqIfu19x92MW\nu1GpgvGyMLMJd+9Lexx5xfFbPo5dazh+y8exWz6OXWs4fsvHsQtIUwEAAABSQjAOAAAApIRgvJiu\nSHsAOcfxWz6OXWs4fsvHsVs+jl1rOH7Lx7ETOeMAAABAapgZBwAAAFJCMA4AAACkhGA8p8zsSDP7\nkplNVi+fXuc2zzKzW2JfPzOzLdV9HzSz/bF965N/FOlo5thVb7fPzG6rHp+Jpd6/qJp87p1gZl81\nszvM7Ltmtjm2r3TPPTM728y+Z2Z7zWx7nf1mZh+r7v+Oma1t9r5F18Sxe2P1mN1mZjeZ2WmxfXX/\nh8ukieP3W2b209j/4/9q9r5F18Sx+/3YcbvdzH5pZkdW95X6uWdmV5rZQ2Z2e4P9vObFuTtfOfyS\ntEPS9ur32yX9xSK3P0TSAwoF6CXpg5J+L+3HkeVjJ2mfpKNbPfZF+2rm8Us6TtLa6vc9ku6W9Jzq\n9VI996r/e/dI+lVJT5J0a3QsYrdZL+nzkkzSCyV9s9n7FvmryWP3IklPr35/TnTsqtfr/g+X5avJ\n4/dbkv51Ofct8tdSH7+k10r6Sux62Z97L5G0VtLtDfbzmhf7YmY8v86VdFX1+6skDSxy+5dJusfd\ny9CBdDFLPXbtvn/eLfr43f1+d7+5+n1F0p2SehMbYbacIWmvu3/f3f9b0jUKxzDuXEmf8uAbkp5m\nZsc1ed8iW/Txu/tN7v5Y9eo3JK1MeIxZ1srzh+fe0h7/hZKuTmRkOeDuN0p6dIGb8JoXQzCeX8e6\n+/3V7x+QdOwit79A818ofrd6eujKkqVaNHvsXNINZrbHzC5exv2LakmP38xOknS6pG/GNpfpudcr\n6Uex6/dp/geTRrdp5r5FttTHv0lhti3S6H+4LJo9fi+q/j9+3syeu8T7FlXTj9/MjpB0tqR/jm0u\n+3NvMbzmxRya9gDQmJndIOmZdXa9P37F3d3MGtaoNLMnSXqdpPfFNv+9pA8pvGB8SNJfSXpbq2PO\nijYdu3Xuvt/MniHpS2Z2V/XTfrP3z602PvdWKLxBbXH3n1U3F/q5h3SY2VkKwfi62OZF/4ehmyWd\n6O5T1fUbY5JWpzymvHmtpK+7e3wmmOcemkYwnmHu/vJG+8zsQTM7zt3vr57aeWiBH3WOpJvd/cHY\nzz74vZn9g6R/bceYs6Idx87d91cvHzKzUYXTZzdKWsqxz6V2HD8zO0whEP+Mu4/Efnahn3t17Jd0\nQuz6yuq2Zm5zWBP3LbJmjp3M7FRJOyWd4+6PRNsX+B8ui0WPX+xDstx9t5n9nZkd3cx9C24pj3/e\nmWeee4viNS+GNJX8uk7SW6rfv0XStQvcdl4uWzWIimyQVHfFc0EteuzMrNvMeqLvJb1Ss8doKce+\niJo5fibp45LudPeP1uwr23Pv25JWm9nJ1bNUFygcw7jrJL25WmHghZJ+Wk0Faua+Rbbo4zezEyWN\nSLrI3e+ObV/of7gsmjl+z6z+v8rMzlCICx5p5r4F19TjN7OnSupX7HWQ515TeM2LS3sFKV/L+5J0\nlKQvS5qUdIOkI6vbj5e0O3a7boUX1qfW3P/Tkm6T9B2FJ/pxaT+mLB07hZXct1a/vivp/Yvdvyxf\nTR6/dQppKN+RdEv1a31Zn3sKlQPuVqgS8P7qtndIekf1e5N0WXX/bZL6Frpvmb6aOHY7JT0We55N\nVLc3/B8u01cTx+891eNzq8IC2Bfx3Gvu2FWv/09J19Tcr/TPPYUJwPsl/UIh73sTr3mNv6z6wAEA\nAAAkjDQVAAAAICUE4wAAAEBKCMYBAACAlBCMAwAAACkhGAcAAABSQjAOADlgZkeZ2S3VrwfMbH/s\n+pOW8HPeZmb1uqvKzAbN7A4zmzGzNQ1uc4iZXWZmt5vZbWb2LTP7leU+LgAoOzpwAkAOeOgsuUaS\nzOyDkqbc/S+X8aPeptAC/YE6+26TNCDpygXu/waFWvOnuvtMtenOzxa4/aLM7FB3f6KVnwEAeUUw\nDgA5Z2ZvkfRuSU+SdJNCI5cuSZ9QCOBN0hWSHqxe32Vm/ynpDHf/7+jnuPsd1Z+30K87TtL97j5T\nvc8PY+N4taQPSTpE0oPu/spqa/UrJZ0kaUrSxe5+u5n9/+3dP2hWVxzG8e9TClakqKWCLllKSYXG\nQdtOWrSIUAJKKJaCS7sUDXV2UpB2chFcpK1Ghw6FTg4VDJGAGVTIEOwsJZZ2CFIECURs+XW4Rwj+\nWV4Clzf9fuCF+9577j33faeHw++c8x0wArwD/J7kS+Ac3YZRbwAXqurS4P+KJA0Hw7gkDbEk7wMT\ndDsn/pPkB7otpO8Db1fVWGu3paoeJTkJfFNVCwN2+TMwl2Q/3U6sP1XVQit9uQjsq6rFJG+19t8C\nd6vqcJJDwFXgg3btPeDjqlpJMgksVdVHSTYAd5JMrw77krQeGcYlabgdBD4E5tuI9kbgD+AGMJrk\nAvArML0WnVXVgySjwCftM5tkAtgKzFbVYmv3d7tlLzDezk0nuZpkU7t2rapW2vEhYGeSL9r3zcC7\ngGFc0rpmGJek4RZgqqpOv3Ah2QV8SlfC8hnw9Vp02AL0deB6kofAEeDWAI9aXnUcYLKqbq7BK0rS\n0HA1FUkabjPA5602+9mqKyNJtgGpql+AM8Du1v4x8OagnSXZk2RHO34NGAMW6WrVDzxbWWVVmcoc\ncKydOwj8WVXLLzy4G8mfTPJ6azuaZOOg7ylJw8KRcUkaYlX1W5KzwEwLx0+B48C/wOV0tSsFnGq3\nXAEuvWwCZ5KjwHlgG3AjyXxVjT/X5Xbgx7acYoDbwMWqepLkBHCt9fkX3aj8GWAqyT26CZxfveKn\nfE83oXOhldss0Y24S9K6lqrq+x0kSZKk/yXLVCRJkqSeGMYlSZKknhjGJUmSpJ4YxiVJkqSeGMYl\nSZKknhjGJUmSpJ4YxiVJkqSe/AeUxWiWnpvoUgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "positive = data2[data2['Accepted'].isin([1])]\n", + "negative = data2[data2['Accepted'].isin([0])]\n", + "\n", + "fig, ax = plt.subplots(figsize=(12,8))\n", + "ax.scatter(positive['Test 1'], positive['Test 2'], s=50, c='b', marker='o', label='Accepted')\n", + "ax.scatter(negative['Test 1'], negative['Test 2'], s=50, c='r', marker='x', label='Rejected')\n", + "ax.legend()\n", + "ax.set_xlabel('Test 1 Score')\n", + "ax.set_ylabel('Test 2 Score')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "哇,这个数æ®çœ‹èµ·æ¥å¯æ¯”å‰ä¸€æ¬¡çš„å¤æ‚得多。特别地,你会注æ„到其中没有线性决策界é™ï¼Œæ¥è‰¯å¥½çš„分开两类数æ®ã€‚一个方法是用åƒé€»è¾‘回归这样的线性技术æ¥æž„造从原始特å¾çš„多项å¼ä¸­å¾—到的特å¾ã€‚让我们通过创建一组多项å¼ç‰¹å¾å…¥æ‰‹å§ã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AcceptedOnesF10F20F21F30F31F32F40F41F42F43
0110.0512670.0026280.0358640.0001350.0018390.0250890.0000070.0000940.0012860.017551
111-0.0927420.008601-0.063523-0.0007980.005891-0.0435090.000074-0.0005460.004035-0.029801
211-0.2137100.045672-0.147941-0.0097610.031616-0.1024120.002086-0.0067570.021886-0.070895
311-0.3750000.140625-0.188321-0.0527340.070620-0.0945730.019775-0.0264830.035465-0.047494
411-0.5132500.263426-0.238990-0.1352030.122661-0.1112830.069393-0.0629560.057116-0.051818
\n", + "
" + ], + "text/plain": [ + " Accepted Ones F10 F20 F21 F30 F31 F32 \\\n", + "0 1 1 0.051267 0.002628 0.035864 0.000135 0.001839 0.025089 \n", + "1 1 1 -0.092742 0.008601 -0.063523 -0.000798 0.005891 -0.043509 \n", + "2 1 1 -0.213710 0.045672 -0.147941 -0.009761 0.031616 -0.102412 \n", + "3 1 1 -0.375000 0.140625 -0.188321 -0.052734 0.070620 -0.094573 \n", + "4 1 1 -0.513250 0.263426 -0.238990 -0.135203 0.122661 -0.111283 \n", + "\n", + " F40 F41 F42 F43 \n", + "0 0.000007 0.000094 0.001286 0.017551 \n", + "1 0.000074 -0.000546 0.004035 -0.029801 \n", + "2 0.002086 -0.006757 0.021886 -0.070895 \n", + "3 0.019775 -0.026483 0.035465 -0.047494 \n", + "4 0.069393 -0.062956 0.057116 -0.051818 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "degree = 5\n", + "x1 = data2['Test 1']\n", + "x2 = data2['Test 2']\n", + "\n", + "data2.insert(3, 'Ones', 1)\n", + "\n", + "for i in range(1, degree):\n", + " for j in range(0, i):\n", + " data2['F' + str(i) + str(j)] = np.power(x1, i-j) * np.power(x2, j)\n", + "\n", + "data2.drop('Test 1', axis=1, inplace=True)\n", + "data2.drop('Test 2', axis=1, inplace=True)\n", + "\n", + "data2.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "现在,我们需è¦ä¿®æ”¹ç¬¬1部分的æˆæœ¬å’Œæ¢¯åº¦å‡½æ•°ï¼ŒåŒ…括正则化项。首先是æˆæœ¬å‡½æ•°ï¼š" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# regularized cost(正则化代价函数)\n", + "$$J\\left( \\theta \\right)=\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[-{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)-\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]}+\\frac{\\lambda }{2m}\\sum\\limits_{j=1}^{n}{\\theta _{j}^{2}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def cost(theta, X, y, learningRate):\n", + " theta = np.matrix(theta)\n", + " X = np.matrix(X)\n", + " y = np.matrix(y)\n", + " first = np.multiply(-y, np.log(sigmoid(X * theta.T)))\n", + " second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))\n", + " reg = (learningRate / (2 * len(X))) * np.sum(np.power(theta[:,1:theta.shape[1]], 2))\n", + " return np.sum(first - second) / len(X) + reg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "请注æ„ç­‰å¼ä¸­çš„\"reg\" 项。还注æ„到å¦å¤–的一个“学习率â€å‚数。这是一ç§è¶…å‚数,用æ¥æŽ§åˆ¶æ­£åˆ™åŒ–项。现在我们需è¦æ·»åŠ æ­£åˆ™åŒ–梯度函数:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "如果我们è¦ä½¿ç”¨æ¢¯åº¦ä¸‹é™æ³•ä»¤è¿™ä¸ªä»£ä»·å‡½æ•°æœ€å°åŒ–,因为我们未对${{\\theta }_{0}}$ 进行正则化,所以梯度下é™ç®—法将分两ç§æƒ…形:\n", + "\\begin{align}\n", + " & Repeat\\text{ }until\\text{ }convergence\\text{ }\\!\\!\\{\\!\\!\\text{ } \\\\ \n", + " & \\text{ }{{\\theta }_{0}}:={{\\theta }_{0}}-a\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}}]x_{_{0}}^{(i)}} \\\\ \n", + " & \\text{ }{{\\theta }_{j}}:={{\\theta }_{j}}-a\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}}]x_{j}^{(i)}}+\\frac{\\lambda }{m}{{\\theta }_{j}} \\\\ \n", + " & \\text{ }\\!\\!\\}\\!\\!\\text{ } \\\\ \n", + " & Repeat \\\\ \n", + "\\end{align}\n", + "\n", + "对上é¢çš„算法中 j=1,2,...,n 时的更新å¼å­è¿›è¡Œè°ƒæ•´å¯å¾—: \n", + "${{\\theta }_{j}}:={{\\theta }_{j}}(1-a\\frac{\\lambda }{m})-a\\frac{1}{m}\\sum\\limits_{i=1}^{m}{({{h}_{\\theta }}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}})x_{j}^{(i)}}$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def gradientReg(theta, X, y, learningRate):\n", + " theta = np.matrix(theta)\n", + " X = np.matrix(X)\n", + " y = np.matrix(y)\n", + " \n", + " parameters = int(theta.ravel().shape[1])\n", + " grad = np.zeros(parameters)\n", + " \n", + " error = sigmoid(X * theta.T) - y\n", + " \n", + " for i in range(parameters):\n", + " term = np.multiply(error, X[:,i])\n", + " \n", + " if (i == 0):\n", + " grad[i] = np.sum(term) / len(X)\n", + " else:\n", + " grad[i] = (np.sum(term) / len(X)) + ((learningRate / len(X)) * theta[:,i])\n", + " \n", + " return grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "å°±åƒåœ¨ç¬¬ä¸€éƒ¨åˆ†ä¸­åšçš„一样,åˆå§‹åŒ–å˜é‡ã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# set X and y (remember from above that we moved the label to column 0)\n", + "cols = data2.shape[1]\n", + "X2 = data2.iloc[:,1:cols]\n", + "y2 = data2.iloc[:,0:1]\n", + "\n", + "# convert to numpy arrays and initalize the parameter array theta\n", + "X2 = np.array(X2.values)\n", + "y2 = np.array(y2.values)\n", + "theta2 = np.zeros(11)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "让我们åˆå§‹å­¦ä¹ çŽ‡åˆ°ä¸€ä¸ªåˆç†å€¼ã€‚,果有必è¦çš„è¯ï¼ˆå³å¦‚果惩罚太强或ä¸å¤Ÿå¼ºï¼‰,我们å¯ä»¥ä¹‹åŽå†æŠ˜è…¾è¿™ä¸ªã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "learningRate = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "现在,让我们å°è¯•è°ƒç”¨æ–°çš„默认为0çš„theta的正则化函数,以确ä¿è®¡ç®—工作正常。" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6931471805599454" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "costReg(theta2, X2, y2, learningRate)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.00847458, 0.01878809, 0.05034464, 0.01150133, 0.01835599,\n", + " 0.00732393, 0.00819244, 0.03934862, 0.00223924, 0.01286005,\n", + " 0.00309594])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gradientReg(theta2, X2, y2, learningRate)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "现在我们å¯ä»¥ä½¿ç”¨å’Œç¬¬ä¸€éƒ¨åˆ†ç›¸åŒçš„优化函数æ¥è®¡ç®—优化åŽçš„结果。" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 1.22702519e-04, 7.19894617e-05, -3.74156201e-04,\n", + " -1.44256427e-04, 2.93165088e-05, -5.64160786e-05,\n", + " -1.02826485e-04, -2.83150432e-04, 6.47297947e-07,\n", + " -1.99697568e-04, -1.68479583e-05]), 96, 1)" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result2 = opt.fmin_tnc(func=costReg, x0=theta2, fprime=gradientReg, args=(X2, y2, learningRate))\n", + "result2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "最åŽï¼Œæˆ‘们å¯ä»¥ä½¿ç”¨ç¬¬1部分中的预测函数æ¥æŸ¥çœ‹æˆ‘们的方案在训练数æ®ä¸Šçš„准确度。" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy = 77%\n" + ] + } + ], + "source": [ + "theta_min = np.matrix(result2[0])\n", + "predictions = predict(theta_min, X2)\n", + "correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y2)]\n", + "accuracy = (sum(map(int, correct)) % len(correct))\n", + "print ('accuracy = {0}%'.format(accuracy))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "虽然我们实现了这些算法,值得注æ„的是,我们还å¯ä»¥ä½¿ç”¨é«˜çº§Python库åƒscikit-learnæ¥è§£å†³è¿™ä¸ªé—®é¢˜ã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", + " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n", + " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", + " verbose=0, warm_start=False)" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn import linear_model#调用sklearn的线性回归包\n", + "model = linear_model.LogisticRegression(penalty='l2', C=1.0)\n", + "model.fit(X2, y2.ravel())" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.66101694915254239" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.score(X2, y2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "这个准确度和我们刚刚实现的差了好多,ä¸è¿‡è¯·è®°ä½è¿™ä¸ªç»“æžœå¯ä»¥ä½¿ç”¨é»˜è®¤å‚数下计算的结果。我们å¯èƒ½éœ€è¦åšä¸€äº›å‚数的调整æ¥èŽ·å¾—和我们之å‰ç»“果相åŒçš„精确度。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "这就是练习2çš„å…¨éƒ¨ï¼ æ•¬è¯·æœŸå¾…ä¸‹ä¸€ä¸ªç»ƒä¹ ï¼šå¤šç±»å›¾åƒåˆ†ç±»ã€‚" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/Python/2-Logistic Regression/2. logistic_regression_v1.ipynb b/Python/2-Logistic Regression/2. logistic_regression_v1.ipynb new file mode 100644 index 0000000..44363ec --- /dev/null +++ b/Python/2-Logistic Regression/2. logistic_regression_v1.ipynb @@ -0,0 +1,1887 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. logistic_regression\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "plt.style.use('fivethirtyeight')\n", + "import matplotlib.pyplot as plt\n", + "# import tensorflow as tf\n", + "from sklearn.metrics import classification_report" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
exam1exam2admitted
034.62366078.0246930
130.28671143.8949980
235.84740972.9021980
360.18259986.3085521
479.03273675.3443761
\n", + "
" + ], + "text/plain": [ + " exam1 exam2 admitted\n", + "0 34.623660 78.024693 0\n", + "1 30.286711 43.894998 0\n", + "2 35.847409 72.902198 0\n", + "3 60.182599 86.308552 1\n", + "4 79.032736 75.344376 1" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('ex2data1.txt', names=['exam1', 'exam2', 'admitted'])\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
exam1exam2admitted
count100.000000100.000000100.000000
mean65.64427466.2219980.600000
std19.45822218.5827830.492366
min30.05882230.6032630.000000
25%50.91951148.1792050.000000
50%67.03298867.6823811.000000
75%80.21252979.3606051.000000
max99.82785898.8694361.000000
\n", + "
" + ], + "text/plain": [ + " exam1 exam2 admitted\n", + "count 100.000000 100.000000 100.000000\n", + "mean 65.644274 66.221998 0.600000\n", + "std 19.458222 18.582783 0.492366\n", + "min 30.058822 30.603263 0.000000\n", + "25% 50.919511 48.179205 0.000000\n", + "50% 67.032988 67.682381 1.000000\n", + "75% 80.212529 79.360605 1.000000\n", + "max 99.827858 98.869436 1.000000" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set(context=\"notebook\", style=\"darkgrid\", palette=sns.color_palette(\"RdBu\", 2))\n", + "\n", + "sns.lmplot('exam1', 'exam2', hue='admitted', data=data, \n", + " size=6, \n", + " fit_reg=False, \n", + " scatter_kws={\"s\": 50}\n", + " )\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def get_X(df):\n", + "# \"\"\"\n", + "# use concat to add intersect feature to avoid side effect\n", + "# not efficient for big dataset though\n", + "# \"\"\"\n", + " ones = pd.DataFrame({'ones': np.ones(len(df))})\n", + " data = pd.concat([ones, df], axis=1) \n", + " return data.iloc[:, :-1].as_matrix() \n", + "\n", + "\n", + "def get_y(df):\n", + "# '''assume the last column is the target'''\n", + " return np.array(df.iloc[:, -1])#df.iloc[:, -1]\n", + "\n", + "\n", + "def normalize_feature(df):\n", + "# \"\"\"Applies function along input axis(default 0) of DataFrame.\"\"\"\n", + " return df.apply(lambda column: (column - column.mean()) / column.std())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(100, 3)\n", + "(100,)\n" + ] + } + ], + "source": [ + "X = get_X(data)\n", + "print(X.shape)\n", + "\n", + "y = get_y(data)\n", + "print(y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " return 1 / (1 + np.exp(-z))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGmCAYAAABbQQ/3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8FPXh//H37Mxu7kASAnIFIQLWogJq1a8iFkXrfaAC\nKrFK61WtWopH+9V6IKjVflW8rdXWeoBoW/HXaouiWKwWUFSsULkiAYUkJCSba4/5/P4IrIQkSEKS\nye6+no8Hj92d2Z19T5bdvDOfmVnLGGMEAAAQB3xeBwAAANhTFBcAABA3KC4AACBuUFwAAEDcoLgA\nAIC4QXEBAABxg+ICJJgbb7xRw4cP9zpGi2bPnq3hw4erpKSkQ+733nvv6aSTTtKIESN0/vnnd2TU\nNnFdt0nWDz74QMOHD9crr7ziWSYgUTleBwDQsSZOnKgjjzzS6xgtGj9+vAoKCpSbm7vXy3JdV9Om\nTZNt27rpppu0zz77dEDCtgsGg/rhD3+osWPH6uqrr5YkFRYW6p577tHo0aM9yQQkMooLkGBGjRql\nUaNGeR2jRfvvv7/233//DllWaWmptm7dqosvvlgXXHBBhyyzPSorK/Xpp59q7NixsWm9evXSGWec\n4VkmIJExVAQgLoXDYUlSRkaGx0kAdCWKCxBHtm3bphtvvFHHHnusRowYoeOPP1733XefGhoaYvdp\naR+XtWvX6oorrtChhx6qww8/XDNmzNDcuXOb7Ecye/ZsjRo1SqtXr9bFF1+skSNHasyYMXryySdl\njNFTTz2lY489VqNGjdLUqVOb7X+yceNGTZ8+XUcccYQOPPBAnX766Zo7d26T+7S078qXX36pq6++\nWocddpgOP/xw3X333bFS0prZs2fruOOOkyQ99NBDGj58uD744INW943Zdfrs2bN14IEHav369brs\nsss0atQoHXbYYbrhhhtUUVHR5LHBYFAzZ87Uscceq4MPPlinnXaaXnrpJUmN+7LsmqOkpKTFfVyi\n0ah++9vf6sQTT9SIESN09NFH61e/+pW2bt0au8+Oxy1evFi33XabjjzySB188MG66KKLtHLlyt3+\nTIBkwVAREEeuvfZa/ec//1FRUZF69+6tjz76SE888YQqKyt1xx13tPiYTZs2xXZcveSSS+Q4jp57\n7jnNnz+/2X3D4bAuuugiHX/88TrhhBP08ssv695779X777+vjRs36oc//KEqKir029/+VjfddJOe\nffZZSdKGDRt03nnnqaGhQRdeeKHy8/P197//XTfffLPWr1+v66+/vsVsZWVlmjRpUux5U1NT9fzz\nzzcrD7saP368srKyNGvWLI0fP17jx49XYWGh/v3vf+/xz9J1XRUVFenQQw/VDTfcoE8//VTz5s1T\nfX29HnjgAUlSKBTSBRdcoC+++ELnnXee9t9/f73zzjv63//9X9XV1enkk0/WTTfd1CRHbm6uNm7c\n2Oz5rrvuOr3xxhs64YQTVFRUpHXr1umFF17Q+++/r5deeknZ2dmx+/7v//6vevfurSuvvFLbtm3T\nb3/7W/34xz/WwoUL5Th8bCO58Q4A4kR5ebnee+89XX/99Zo6daok6dxzz5UxRhs2bGj1cQ899JCq\nq6v16quvqrCwUJJ0xhln6Ac/+EGz+4bDYZ1++um64YYbJEmHHXaYTjnlFH300UdasGBBbKfajRs3\n6rXXXlMoFFIgENBvfvMbVVZWat68efrud78rSbrgggt05ZVX6ne/+53OOussDR06tNnzPfXUU9q6\ndatefvnl2OPOOussnXrqqaqtrW11nfbff39lZmZq1qxZGj58eLv2J4lEIjr55JN14403SpImTZqk\nzZs3a8GCBaqrq1NaWprmzZunlStX6t5779Vpp50mqXHn5wsvvFBPPPGELrzwQh1//PHfmmPRokV6\n4403VFRUpF/+8pex6YcccoiuvfZaPfbYY03KXV5enp5//nnZti1JCgQCuu+++/TBBx/oqKOOavO6\nAomEoSIgTmRlZSk9PV3PP/+83njjjdgv9lmzZumZZ55p8THGGL355psaM2ZMrLRIUp8+fXT66ae3\n+Jjjjz8+dn3fffeVJI0ePbrJkUADBgyQMUZlZWWKRqN6++23dfTRR8fKhyT5fD5dfvnlMsborbfe\navG5Fi1apAMPPLDJ4/Ly8nTKKafs/ofRQU466aQmt7/zne8oEomosrJSkvT2228rNzdXp556auw+\nlmXpnnvu0XPPPSfLsvboeXas/2WXXdbs+QcPHqw333yzyfQTTjghVlp25JIad0gGkh3FBYgTgUBA\nt99+u8rLy/XTn/5Uhx9+uKZOnao5c+Y02cdlZ5WVlaqsrIwVkJ0NGTKkxcf06tUrdn3HsEReXl6T\n++z4peq6rioqKlRbW6vBgwc3W9aOstTS0MmO6QUFBXucraPtelh2IBCQ1Lg/ivRNvl0LSv/+/TVo\n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\njNExxxyjfffdV5I0cuRITZs2rcl95s6dqxdffFGO4+iKK67Q97//fQ+Stk91dbWmT5+uYDCocDis\nG2+8UaNGjWpyn3h9DV3X1a233qpVq1YpEAhoxowZGjRoUGz+W2+9pYcffliO42jChAk677zzPEzb\nPuFwWL/4xS+0ceNGhUIhXXHFFTruuONi85955hm99NJLsc+T2267TUOGDPEqbrudddZZyszMlCQN\nGDBAs2bNis1LhNfxlVde0Z/+9CdJUkNDgz7//HMtXrxY2dnZkuL/dfz4449177336tlnn1VxcbFu\nvPFGWZaloUOH6le/+pV8vm+2f3zb+7bDGMTccccd5sQTTzTXXnttbNrpp59uiouLjeu65kc/+pH5\n7LPPmjzmd7/7nXnwwQeNMca89tpr5o477ujSzB3h0ksvNe+++26z6ZMmTTLl5eUeJOoY69evN5dd\ndlmr87ds2WJOPfVU09DQYKqqqmLX48UDDzxgnn76aWOMMWvWrDFnnnlms/vE62v4xhtvmBtuuMEY\nY8xHH31kLr/88ti8UChkjj/+eFNZWWkaGhrM2WefbUpLS72K2m7z5s0zM2bMMMYYU1FRYcaOHdtk\n/rRp08ynn37qQbKOU19fb84444wW5yXK67izW2+91bz44otNpsXz6/jEE0+YU0891Zx77rnGGGMu\nu+wy8/777xtjjLn55pvN3//+9yb33937tiMxVLST0aNH69Zbb43dDgaDCoVCKigokGVZOvroo/Xe\ne+81ecyyZcs0ZswYSdIxxxyjf/3rX10Zea/9/e9/V3Z2to4++ugm013XVXFxsW655RZNmjRJ8+bN\n8yhh+3322WfavHmzpkyZoh//+Mdau3Ztk/mffPKJRo0apUAgoKysLBUUFGjlypUepW27H/7wh5o0\naZIkKRqNKiUlpcn8eH4Nd35fjRw5UitWrIjNW7NmjQoKCtSjRw8FAgEdcsghWrJkiVdR2+0HP/iB\nrrnmGkmNWwdt224y/7PPPtMTTzyhyZMn6/HHH/ci4l5buXKl6urqdMkll6ioqEjLly+PzUuU13GH\nTz/9VKtXr9bEiRObTI/n17GgoECzZ8+O3f7ss8/0ve99T1Lj77vd/T7c9X3bkZJyqOill17S73//\n+ybTZs6cqZNPPlkffPBBbFowGIxt4pSkjIwMbdiwocnjgsFgbNN7RkaGqqurOzF5+7S2vgcddJAe\nf/xx/eY3v2n2mNraWl144YW6+OKLFY1GVVRUpBEjRmj//ffvqtht0tI63nLLLbr00kt10kknaenS\npZo+fbpefvnl2PydXzup8fULBoNdlrktdvcalpaWavr06frFL37RZH68vYY72/W9Z9u2IpGIHMeJ\nq9dtd3YM3wWDQf30pz/Vtdde22T+KaecovPPP1+ZmZm66qqrtHDhwrgaypSk1NRUTZ06Veeee67W\nr1+vH//4x3r99dcT6nXc4fHHH9dPfvKTZtPj+XU88cQTVVJSErttjJFlWZJa/n23u/dtR0rK4nLu\nuefq3HPP/db7ZWZmqqamJna7pqYmNm7Z0n1amt8dtLa+q1evVnZ2dotjkGlpaSoqKlJaWpok6Ygj\njtDKlSu77S+9ltaxrq4u9lfsoYceqi1btjR547X0+nbX/T9aew1XrVqln/3sZ7r++utjfwntEG+v\n4c52fW1c1419+MXT6/ZtvvrqK/3kJz/R+eefr9NOOy023Rijiy66KLZeY8eO1X/+85+4+YW3w+DB\ngzVo0CBZlqXBgwerZ8+eKi0tVd++fRPqdayqqtK6det0xBFHNJmeKK/jDjvvz/Jtvw+lpu/bDs3R\n4UtMIJmZmfL7/fryyy9ljNE///lPHXrooU3uM3r0aL3zzjuSpEWLFumQQw7xImq7vPfeezrmmGNa\nnLd+/XpNnjxZ0WhU4XBYH374ob773e92ccK989BDD8W2UqxcuVJ9+/aNlRZJOuigg7Rs2TI1NDSo\nurpaa9as0bBhw7yK22arV6/WNddco/vuu09jx45tNj+eX8PRo0dr0aJFkhp3kN/5dSksLFRxcbEq\nKysVCoW0dOnSZjslx4OysjJdcsklmj59us4555wm84LBoE499VTV1NTIGKMPPvhAI0aM8Chp+82b\nN0933XWXJGnz5s0KBoPKz8+XlDivoyQtWbJERx55ZLPpifI67nDAAQfERiUWLVrU4u/D1t63HSkp\nt7i0xW233aaf//znikajOvroo3XwwQdLki655BI99thjmjx5sm644QZNnjxZfr8/djRSPFi3bp2O\nOuqoJtOefvppFRQU6LjjjtMZZ5yh8847T36/X2eccYaGDh3qUdL2ufTSSzV9+nS98847sm07djTD\nzus4ZcoUnX/++TLG6Lrrrmu2n0h3dt999ykUCunOO++U1Fi0H3300YR4DcePH6/Fixdr0qRJMsZo\n5syZmj9/vmprazVx4kTdeOONmjp1qowxmjBhgvr06eN15DZ77LHHVFVVpUceeUSPPPKIpMYta3V1\ndZo4caKuu+46FRUVKRAI6Mgjj2yxnHZ355xzjm666SZNnjxZlmVp5syZ+tvf/pZQr6PU+Fk6YMCA\n2O2d/68mwuu4ww033KCbb75Zv/nNbzRkyBCdeOKJkqTrr79e1157bYvv287At0MDAIC4wVARAACI\nGxQXAAAQNyguAAAgblBcAABA3KC4AACAuEFxAQAAcYPiAgAA4gbFBQAAxA2KCwAAiBuc8h9At/bB\nBx+oqKio1fmzZs3S2Wef3YWJAHiJU/4D6NbKysq0ePHiJtMikYjuueceRaNRvfLKKyooKPAoHYCu\nxhYXAN1ar169dMYZZzSZdtttt2nbtm165JFHKC1AkmEfFwBx5aWXXtLzzz+vK664QuPGjfM6DoAu\nxlARgLjx4YcfqqioSEcccYSeeOIJ+Xz87QUkG4oLgLiwefNmTZgwQYFAQK+88op69uzpdSQAHmAf\nFwDdXkNDg6688kpVVVXpxRdfpLQASYziAqDbu/nmm7VixQrdfffdOuCAA7yOA8BDFBcA3dpzzz2n\nv/zlLzrssMOUlpamV199VTuPcBcUFGjUqFEeJgTQlSguALq1Tz/9VJK0ZMkSLVmypNn8s846i+IC\nJBF2zgUAAHGDYwkBAEDcoLgAAIC4QXEBAABxg+ICAADiBsUFAADEDYoLAACIGxQXAAAQNyguAAAg\nblBcAABA3KC4AACAuPH/AcjaArQEMTkZAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(8, 6))\n", + "ax.plot(np.arange(-10, 10, step=0.01),\n", + " sigmoid(np.arange(-10, 10, step=0.01)))\n", + "ax.set_ylim((-0.1,1.1))\n", + "ax.set_xlabel('z', fontsize=18)\n", + "ax.set_ylabel('g(z)', fontsize=18)\n", + "ax.set_title('sigmoid function', fontsize=18)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# cost function\n", + "> * $max(\\ell(\\theta)) = min(-\\ell(\\theta))$ \n", + "> * choose $-\\ell(\\theta)$ as the cost function\n", + "\n", + "$$\\begin{align}\n", + " & J\\left( \\theta \\right)=-\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)+\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]} \\\\ \n", + " & =\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[-{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)-\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]} \\\\ \n", + "\\end{align}$$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 0., 0.])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "theta = theta=np.zeros(3) # X(m*n) so theta is n*1\n", + "theta" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "def cost(theta, X, y):\n", + " ''' cost fn is -l(theta) for you to minimize'''\n", + " return np.mean(-y * np.log(sigmoid(X @ theta)) - (1 - y) * np.log(1 - sigmoid(X @ theta)))\n", + "\n", + "# X @ thetaX.dot(theta)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.69314718055994529" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cost(theta, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# gradient descent\n", + "(batch gradient descent) \n", + ": $\\frac{1}{m} X^T( Sigmoid(X\\theta) - y )$\n", + "$$\\frac{\\partial J\\left( \\theta \\right)}{\\partial {{\\theta }_{j}}}=\\frac{1}{m}\\sum\\limits_{i=1}^{m}{({{h}_{\\theta }}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}})x_{_{j}}^{(i)}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def gradient(theta, X, y):\n", + "# '''just 1 batch gradient'''\n", + " return (1 / len(X)) * X.T @ (sigmoid(X @ theta) - y)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ -0.1 , -12.00921659, -11.26284221])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gradient(theta, X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "import scipy.optimize as opt" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "res = opt.minimize(fun=cost, x0=theta, args=(X, y), method='Newton-CG', jac=gradient)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " fun: 0.20349770172083584\n", + " jac: array([ 1.98942032e-06, 1.34698328e-04, 1.47259166e-04])\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 73\n", + " nhev: 0\n", + " nit: 30\n", + " njev: 270\n", + " status: 0\n", + " success: True\n", + " x: array([-25.16227358, 0.20623923, 0.20147921])\n" + ] + } + ], + "source": [ + "print(res)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def predict(x, theta):\n", + " prob = sigmoid(x @ theta)\n", + " return (prob >= 0.5).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.87 0.85 0.86 40\n", + " 1 0.90 0.92 0.91 60\n", + "\n", + "avg / total 0.89 0.89 0.89 100\n", + "\n" + ] + } + ], + "source": [ + "final_theta = res.x\n", + "y_pred = predict(X, final_theta)\n", + "\n", + "print(classification_report(y, y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "http://stats.stackexchange.com/questions/93569/why-is-logistic-regression-a-linear-classifier\n", + "> $X \\times \\theta = 0$ (this is the line)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-25.16227358 0.20623923 0.20147921]\n" + ] + } + ], + "source": [ + "print(res.x) # this is final theta" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 124.88769463 -1.0236254 -1. ]\n" + ] + } + ], + "source": [ + "coef = -(res.x / res.x[2]) # find the equation\n", + "print(coef)\n", + "\n", + "x = np.arange(130, step=0.1)\n", + "y = coef[0] + coef[1]*x" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
exam1exam2admitted
count100.000000100.000000100.000000
mean65.64427466.2219980.600000
std19.45822218.5827830.492366
min30.05882230.6032630.000000
25%50.91951148.1792050.000000
50%67.03298867.6823811.000000
75%80.21252979.3606051.000000
max99.82785898.8694361.000000
\n", + "
" + ], + "text/plain": [ + " exam1 exam2 admitted\n", + "count 100.000000 100.000000 100.000000\n", + "mean 65.644274 66.221998 0.600000\n", + "std 19.458222 18.582783 0.492366\n", + "min 30.058822 30.603263 0.000000\n", + "25% 50.919511 48.179205 0.000000\n", + "50% 67.032988 67.682381 1.000000\n", + "75% 80.212529 79.360605 1.000000\n", + "max 99.827858 98.869436 1.000000" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.describe() # find the range of x and y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> you know the intercept would be around 125 for both x and y" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nzh1lAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set(context=\"notebook\", style=\"ticks\", font_scale=1.5)\n", + "\n", + "sns.lmplot('exam1', 'exam2', hue='admitted', data=data, \n", + " size=6, \n", + " fit_reg=False, \n", + " scatter_kws={\"s\": 25}\n", + " )\n", + "\n", + "plt.plot(x, y, 'grey')\n", + "plt.xlim(0, 130)\n", + "plt.ylim(0, 130)\n", + "plt.title('Decision Boundary')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3- 正则化逻辑回归" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
test1test2accepted
00.0512670.699561
1-0.0927420.684941
2-0.2137100.692251
3-0.3750000.502191
4-0.5132500.465641
\n", + "
" + ], + "text/plain": [ + " test1 test2 accepted\n", + "0 0.051267 0.69956 1\n", + "1 -0.092742 0.68494 1\n", + "2 -0.213710 0.69225 1\n", + "3 -0.375000 0.50219 1\n", + "4 -0.513250 0.46564 1" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('ex2data2.txt', names=['test1', 'test2', 'accepted'])\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nH+5xT+gQTWpoAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set(context=\"notebook\", style=\"ticks\", font_scale=1.5)\n", + "\n", + "sns.lmplot('test1', 'test2', hue='accepted', data=df, \n", + " size=6, \n", + " fit_reg=False, \n", + " scatter_kws={\"s\": 50}\n", + " )\n", + "\n", + "plt.title('Regularized Logistic Regression')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# feature mapping(特å¾æ˜ å°„)\n", + "\n", + "polynomial expansion\n", + "\n", + "```\n", + "for i in 0..i\n", + " for p in 0..i:\n", + " output x^(i-p) * y^p\n", + "```\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def feature_mapping(x, y, power, as_ndarray=False):\n", + "# \"\"\"return mapped features as ndarray or dataframe\"\"\"\n", + " # data = {}\n", + " # # inclusive\n", + " # for i in np.arange(power + 1):\n", + " # for p in np.arange(i + 1):\n", + " # data[\"f{}{}\".format(i - p, p)] = np.power(x, i - p) * np.power(y, p)\n", + "\n", + " data = {\"f{}{}\".format(i - p, p): np.power(x, i - p) * np.power(y, p)\n", + " for i in np.arange(power + 1)\n", + " for p in np.arange(i + 1)\n", + " }\n", + "\n", + " if as_ndarray:\n", + " return pd.DataFrame(data).as_matrix()\n", + " else:\n", + " return pd.DataFrame(data)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "x1 = np.array(df.test1)\n", + "x2 = np.array(df.test2)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(118, 28)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
f00f01f02f03f04f05f06f10f11f12...f30f31f32f33f40f41f42f50f51f60
01.00.699560.4893840.3423540.2394970.1675420.1172060.0512670.0358640.025089...0.0001350.0000940.0000660.0000460.0000070.0000050.0000033.541519e-072.477505e-071.815630e-08
11.00.684940.4691430.3213350.2200950.1507520.103256-0.092742-0.063523-0.043509...-0.000798-0.000546-0.000374-0.0002560.0000740.0000510.000035-6.860919e-06-4.699318e-066.362953e-07
21.00.692250.4792100.3317330.2296420.1589700.110047-0.213710-0.147941-0.102412...-0.009761-0.006757-0.004677-0.0032380.0020860.0014440.001000-4.457837e-04-3.085938e-049.526844e-05
31.00.502190.2521950.1266500.0636020.0319400.016040-0.375000-0.188321-0.094573...-0.052734-0.026483-0.013299-0.0066790.0197750.0099310.004987-7.415771e-03-3.724126e-032.780914e-03
41.00.465640.2168210.1009600.0470110.0218900.010193-0.513250-0.238990-0.111283...-0.135203-0.062956-0.029315-0.0136500.0693930.0323120.015046-3.561597e-02-1.658422e-021.827990e-02
\n", + "

5 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " f00 f01 f02 f03 f04 f05 f06 f10 \\\n", + "0 1.0 0.69956 0.489384 0.342354 0.239497 0.167542 0.117206 0.051267 \n", + "1 1.0 0.68494 0.469143 0.321335 0.220095 0.150752 0.103256 -0.092742 \n", + "2 1.0 0.69225 0.479210 0.331733 0.229642 0.158970 0.110047 -0.213710 \n", + "3 1.0 0.50219 0.252195 0.126650 0.063602 0.031940 0.016040 -0.375000 \n", + "4 1.0 0.46564 0.216821 0.100960 0.047011 0.021890 0.010193 -0.513250 \n", + "\n", + " f11 f12 ... f30 f31 f32 f33 \\\n", + "0 0.035864 0.025089 ... 0.000135 0.000094 0.000066 0.000046 \n", + "1 -0.063523 -0.043509 ... -0.000798 -0.000546 -0.000374 -0.000256 \n", + "2 -0.147941 -0.102412 ... -0.009761 -0.006757 -0.004677 -0.003238 \n", + "3 -0.188321 -0.094573 ... -0.052734 -0.026483 -0.013299 -0.006679 \n", + "4 -0.238990 -0.111283 ... -0.135203 -0.062956 -0.029315 -0.013650 \n", + "\n", + " f40 f41 f42 f50 f51 f60 \n", + "0 0.000007 0.000005 0.000003 3.541519e-07 2.477505e-07 1.815630e-08 \n", + "1 0.000074 0.000051 0.000035 -6.860919e-06 -4.699318e-06 6.362953e-07 \n", + "2 0.002086 0.001444 0.001000 -4.457837e-04 -3.085938e-04 9.526844e-05 \n", + "3 0.019775 0.009931 0.004987 -7.415771e-03 -3.724126e-03 2.780914e-03 \n", + "4 0.069393 0.032312 0.015046 -3.561597e-02 -1.658422e-02 1.827990e-02 \n", + "\n", + "[5 rows x 28 columns]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = feature_mapping(x1, x2, power=6)\n", + "print(data.shape)\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
f00f01f02f03f04f05f06f10f11f12...f30f31f32f33f40f41f42f50f51f60
count118.0118.000000118.000000118.0000001.180000e+02118.0000001.180000e+02118.000000118.000000118.000000...1.180000e+02118.0000001.180000e+02118.0000001.180000e+02118.0000001.180000e+021.180000e+02118.0000001.180000e+02
mean1.00.1831020.3013700.1423501.710985e-010.1157101.257256e-010.054779-0.0254720.015483...5.983333e-02-0.0052519.432094e-03-0.0017051.225384e-010.0118121.893340e-025.196507e-02-0.0007037.837118e-02
std0.00.5197430.2845360.3261342.815658e-010.2990922.964416e-010.4966540.2240750.150143...2.746459e-010.0967385.455787e-020.0374432.092709e-010.0722743.430092e-022.148098e-010.0582711.938621e-01
min1.0-0.7697400.000026-0.4560716.855856e-10-0.2702221.795116e-14-0.830070-0.484096-0.483743...-5.719317e-01-0.296854-1.592528e-01-0.1134481.612020e-09-0.2460682.577297e-10-3.940702e-01-0.2039716.472253e-14
25%1.0-0.2543850.061086-0.0164923.741593e-03-0.0010722.298277e-04-0.372120-0.178209-0.042980...-5.155632e-02-0.029360-3.659760e-03-0.0057491.869975e-03-0.0019261.258285e-04-7.147973e-03-0.0063818.086369e-05
50%1.00.2134550.2521950.0097346.360222e-020.0004441.604015e-02-0.006336-0.016521-0.000039...-2.544062e-07-0.000512-1.473547e-07-0.0000052.736163e-020.0002053.387050e-03-1.021440e-11-0.0000044.527344e-03
75%1.00.6465620.4641890.2703102.155453e-010.1130201.001215e-010.4789700.1007950.079510...1.099616e-010.0150501.370560e-020.0010241.520801e-010.0191832.090875e-022.526861e-020.0021045.932959e-02
max1.01.1089001.2296591.3635691.512062e+001.6767251.859321e+001.0709000.5683070.505577...1.228137e+000.3698052.451845e-010.1835481.315212e+000.3044092.018260e-011.408460e+000.2505771.508320e+00
\n", + "

8 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " f00 f01 f02 f03 f04 f05 \\\n", + "count 118.0 118.000000 118.000000 118.000000 1.180000e+02 118.000000 \n", + "mean 1.0 0.183102 0.301370 0.142350 1.710985e-01 0.115710 \n", + "std 0.0 0.519743 0.284536 0.326134 2.815658e-01 0.299092 \n", + "min 1.0 -0.769740 0.000026 -0.456071 6.855856e-10 -0.270222 \n", + "25% 1.0 -0.254385 0.061086 -0.016492 3.741593e-03 -0.001072 \n", + "50% 1.0 0.213455 0.252195 0.009734 6.360222e-02 0.000444 \n", + "75% 1.0 0.646562 0.464189 0.270310 2.155453e-01 0.113020 \n", + "max 1.0 1.108900 1.229659 1.363569 1.512062e+00 1.676725 \n", + "\n", + " f06 f10 f11 f12 ... \\\n", + "count 1.180000e+02 118.000000 118.000000 118.000000 ... \n", + "mean 1.257256e-01 0.054779 -0.025472 0.015483 ... \n", + "std 2.964416e-01 0.496654 0.224075 0.150143 ... \n", + "min 1.795116e-14 -0.830070 -0.484096 -0.483743 ... \n", + "25% 2.298277e-04 -0.372120 -0.178209 -0.042980 ... \n", + "50% 1.604015e-02 -0.006336 -0.016521 -0.000039 ... \n", + "75% 1.001215e-01 0.478970 0.100795 0.079510 ... \n", + "max 1.859321e+00 1.070900 0.568307 0.505577 ... \n", + "\n", + " f30 f31 f32 f33 f40 \\\n", + "count 1.180000e+02 118.000000 1.180000e+02 118.000000 1.180000e+02 \n", + "mean 5.983333e-02 -0.005251 9.432094e-03 -0.001705 1.225384e-01 \n", + "std 2.746459e-01 0.096738 5.455787e-02 0.037443 2.092709e-01 \n", + "min -5.719317e-01 -0.296854 -1.592528e-01 -0.113448 1.612020e-09 \n", + "25% -5.155632e-02 -0.029360 -3.659760e-03 -0.005749 1.869975e-03 \n", + "50% -2.544062e-07 -0.000512 -1.473547e-07 -0.000005 2.736163e-02 \n", + "75% 1.099616e-01 0.015050 1.370560e-02 0.001024 1.520801e-01 \n", + "max 1.228137e+00 0.369805 2.451845e-01 0.183548 1.315212e+00 \n", + "\n", + " f41 f42 f50 f51 f60 \n", + "count 118.000000 1.180000e+02 1.180000e+02 118.000000 1.180000e+02 \n", + "mean 0.011812 1.893340e-02 5.196507e-02 -0.000703 7.837118e-02 \n", + "std 0.072274 3.430092e-02 2.148098e-01 0.058271 1.938621e-01 \n", + "min -0.246068 2.577297e-10 -3.940702e-01 -0.203971 6.472253e-14 \n", + "25% -0.001926 1.258285e-04 -7.147973e-03 -0.006381 8.086369e-05 \n", + "50% 0.000205 3.387050e-03 -1.021440e-11 -0.000004 4.527344e-03 \n", + "75% 0.019183 2.090875e-02 2.526861e-02 0.002104 5.932959e-02 \n", + "max 0.304409 2.018260e-01 1.408460e+00 0.250577 1.508320e+00 \n", + "\n", + "[8 rows x 28 columns]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# regularized cost\n", + "\n", + "$$J\\left( \\theta \\right)=\\frac{1}{m}\\sum\\limits_{i=1}^{m}{[-{{y}^{(i)}}\\log \\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)-\\left( 1-{{y}^{(i)}} \\right)\\log \\left( 1-{{h}_{\\theta }}\\left( {{x}^{(i)}} \\right) \\right)]}+\\frac{\\lambda }{2m}\\sum\\limits_{j=1}^{n}{\\theta _{j}^{2}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(118, 28)\n", + "(118,)\n" + ] + } + ], + "source": [ + "theta = np.zeros(data.shape[1])\n", + "X = feature_mapping(x1, x2, power=6, as_ndarray=True)\n", + "print(X.shape)\n", + "\n", + "y = get_y(df)\n", + "print(y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def regularized_cost(theta, X, y, l=1):\n", + "# '''you don't penalize theta_0'''\n", + " theta_j1_to_n = theta[1:]\n", + " regularized_term = (l / (2 * len(X))) * np.power(theta_j1_to_n, 2).sum()\n", + "\n", + " return cost(theta, X, y) + regularized_term\n", + "#正则化代价函数" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6931471805599454" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regularized_cost(theta, X, y, l=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "this is the same as the not regularized cost because we init theta as zeros..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# regularized gradient\n", + "$$\\frac{\\partial J\\left( \\theta \\right)}{\\partial {{\\theta }_{j}}}=\\left( \\frac{1}{m}\\sum\\limits_{i=1}^{m}{\\left( {{h}_{\\theta }}\\left( {{x}^{\\left( i \\right)}} \\right)-{{y}^{\\left( i \\right)}} \\right)} \\right)+\\frac{\\lambda }{m}{{\\theta }_{j}}\\text{ }\\text{ for j}\\ge \\text{1}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def regularized_gradient(theta, X, y, l=1):\n", + "# '''still, leave theta_0 alone'''\n", + " theta_j1_to_n = theta[1:]\n", + " regularized_theta = (l / len(X)) * theta_j1_to_n\n", + "\n", + " # by doing this, no offset is on theta_0\n", + " regularized_term = np.concatenate([np.array([0]), regularized_theta])\n", + "\n", + " return gradient(theta, X, y) + regularized_term" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 8.47457627e-03, 7.77711864e-05, 3.76648474e-02,\n", + " 2.34764889e-02, 3.93028171e-02, 3.10079849e-02,\n", + " 3.87936363e-02, 1.87880932e-02, 1.15013308e-02,\n", + " 8.19244468e-03, 3.09593720e-03, 4.47629067e-03,\n", + " 1.37646175e-03, 5.03446395e-02, 7.32393391e-03,\n", + " 1.28600503e-02, 5.83822078e-03, 7.26504316e-03,\n", + " 1.83559872e-02, 2.23923907e-03, 3.38643902e-03,\n", + " 4.08503006e-04, 3.93486234e-02, 4.32983232e-03,\n", + " 6.31570797e-03, 1.99707467e-02, 1.09740238e-03,\n", + " 3.10312442e-02])" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regularized_gradient(theta, X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "import scipy.optimize as opt" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "init cost = 0.6931471805599454\n" + ] + }, + { + "data": { + "text/plain": [ + " fun: 0.5290027297127737\n", + " jac: array([ 1.05541650e-07, 6.13738958e-08, -7.04772465e-08,\n", + " -1.36777274e-08, -2.84652117e-08, -3.41659162e-08,\n", + " -5.15630062e-08, -1.74645557e-08, 7.50726574e-09,\n", + " 1.18564041e-08, 1.78853446e-08, 1.12436692e-08,\n", + " 8.73092759e-09, 5.56139873e-08, 4.12686771e-09,\n", + " -2.49410770e-08, -6.34978298e-09, -1.34271390e-08,\n", + " -2.13487848e-09, 4.54710087e-10, -4.37439525e-09,\n", + " -1.26745782e-09, -3.40985521e-09, 7.34158338e-09,\n", + " -7.74561697e-09, -9.84723852e-11, 9.65250750e-10,\n", + " -1.18501368e-08])\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 7\n", + " nhev: 0\n", + " nit: 6\n", + " njev: 66\n", + " status: 0\n", + " success: True\n", + " x: array([ 1.27273981, 1.18108974, -1.43166669, -0.17513036, -1.19281478,\n", + " -0.45635758, -0.9246528 , 0.62527237, -0.9174247 , -0.35723884,\n", + " -0.27470605, -0.29537769, -0.14388711, -2.0199599 , -0.36553508,\n", + " -0.61555685, -0.27778507, -0.32738029, 0.12400668, -0.05098942,\n", + " -0.04473108, 0.01556645, -1.45815829, -0.20600596, -0.29243192,\n", + " -0.24218804, 0.02777165, -1.04320421])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('init cost = {}'.format(regularized_cost(theta, X, y)))\n", + "\n", + "res = opt.minimize(fun=regularized_cost, x0=theta, args=(X, y), method='Newton-CG', jac=regularized_gradient)\n", + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.90 0.75 0.82 60\n", + " 1 0.78 0.91 0.84 58\n", + "\n", + "avg / total 0.84 0.83 0.83 118\n", + "\n" + ] + } + ], + "source": [ + "final_theta = res.x\n", + "y_pred = predict(X, final_theta)\n", + "\n", + "print(classification_report(y, y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# $\\lambda$\n", + "# \n", + "* $X\\times \\theta = 0$ \n", + "* instead of solving polynomial equation, just create a coridate x,y grid that is dense enough, and find all those $X\\times \\theta$ that is close enough to 0, then plot them" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def draw_boundary(power, l):\n", + "# \"\"\"\n", + "# power: polynomial power for mapped feature\n", + "# l: lambda constant\n", + "# \"\"\"\n", + " density = 1000\n", + " threshhold = 2 * 10**-3\n", + "\n", + " final_theta = feature_mapped_logistic_regression(power, l)\n", + " x, y = find_decision_boundary(density, power, final_theta, threshhold)\n", + "\n", + " df = pd.read_csv('ex2data2.txt', names=['test1', 'test2', 'accepted'])\n", + " sns.lmplot('test1', 'test2', hue='accepted', data=df, size=6, fit_reg=False, scatter_kws={\"s\": 100})\n", + "\n", + " plt.scatter(x, y, c='R', s=10)\n", + " plt.title('Decision boundary')\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def feature_mapped_logistic_regression(power, l):\n", + "# \"\"\"for drawing purpose only.. not a well generealize logistic regression\n", + "# power: int\n", + "# raise x1, x2 to polynomial power\n", + "# l: int\n", + "# lambda constant for regularization term\n", + "# \"\"\"\n", + " df = pd.read_csv('ex2data2.txt', names=['test1', 'test2', 'accepted'])\n", + " x1 = np.array(df.test1)\n", + " x2 = np.array(df.test2)\n", + " y = get_y(df)\n", + "\n", + " X = feature_mapping(x1, x2, power, as_ndarray=True)\n", + " theta = np.zeros(X.shape[1])\n", + "\n", + " res = opt.minimize(fun=regularized_cost,\n", + " x0=theta,\n", + " args=(X, y, l),\n", + " method='TNC',\n", + " jac=regularized_gradient)\n", + " final_theta = res.x\n", + "\n", + " return final_theta" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [ + "def find_decision_boundary(density, power, theta, threshhold):\n", + " t1 = np.linspace(-1, 1.5, density)\n", + " t2 = np.linspace(-1, 1.5, density)\n", + "\n", + " cordinates = [(x, y) for x in t1 for y in t2]\n", + " x_cord, y_cord = zip(*cordinates)\n", + " mapped_cord = feature_mapping(x_cord, y_cord, power) # this is a dataframe\n", + "\n", + " inner_product = mapped_cord.as_matrix() @ theta\n", + "\n", + " decision = mapped_cord[np.abs(inner_product) < threshhold]\n", + "\n", + " return decision.f10, decision.f01" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_boundary(power=6, l=1)#lambda=1" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_boundary(power=6, l=0) # no regularization, over fitting,#lambda=0" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nLCGEECKQ/w/oZEhiy3ciggAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_boundary(power=6, l=100) # underfitting,#lambda=100" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Python/2-Logistic Regression/ex2.pdf b/Python/2-Logistic Regression/ex2.pdf new file mode 100644 index 0000000..39c31da Binary files /dev/null and b/Python/2-Logistic Regression/ex2.pdf differ diff --git a/Python/2-Logistic Regression/ex2data1.txt b/Python/2-Logistic Regression/ex2data1.txt new file mode 100644 index 0000000..3a5f952 --- /dev/null +++ b/Python/2-Logistic Regression/ex2data1.txt @@ -0,0 +1,100 @@ +34.62365962451697,78.0246928153624,0 +30.28671076822607,43.89499752400101,0 +35.84740876993872,72.90219802708364,0 +60.18259938620976,86.30855209546826,1 +79.0327360507101,75.3443764369103,1 +45.08327747668339,56.3163717815305,0 +61.10666453684766,96.51142588489624,1 +75.02474556738889,46.55401354116538,1 +76.09878670226257,87.42056971926803,1 +84.43281996120035,43.53339331072109,1 +95.86155507093572,38.22527805795094,0 +75.01365838958247,30.60326323428011,0 +82.30705337399482,76.48196330235604,1 +69.36458875970939,97.71869196188608,1 +39.53833914367223,76.03681085115882,0 +53.9710521485623,89.20735013750205,1 +69.07014406283025,52.74046973016765,1 +67.94685547711617,46.67857410673128,0 +70.66150955499435,92.92713789364831,1 +76.97878372747498,47.57596364975532,1 +67.37202754570876,42.83843832029179,0 +89.67677575072079,65.79936592745237,1 +50.534788289883,48.85581152764205,0 +34.21206097786789,44.20952859866288,0 +77.9240914545704,68.9723599933059,1 +62.27101367004632,69.95445795447587,1 +80.1901807509566,44.82162893218353,1 +93.114388797442,38.80067033713209,0 +61.83020602312595,50.25610789244621,0 +38.78580379679423,64.99568095539578,0 +61.379289447425,72.80788731317097,1 +85.40451939411645,57.05198397627122,1 +52.10797973193984,63.12762376881715,0 +52.04540476831827,69.43286012045222,1 +40.23689373545111,71.16774802184875,0 +54.63510555424817,52.21388588061123,0 +33.91550010906887,98.86943574220611,0 +64.17698887494485,80.90806058670817,1 +74.78925295941542,41.57341522824434,0 +34.1836400264419,75.2377203360134,0 +83.90239366249155,56.30804621605327,1 +51.54772026906181,46.85629026349976,0 +94.44336776917852,65.56892160559052,1 +82.36875375713919,40.61825515970618,0 +51.04775177128865,45.82270145776001,0 +62.22267576120188,52.06099194836679,0 +77.19303492601364,70.45820000180959,1 +97.77159928000232,86.7278223300282,1 +62.07306379667647,96.76882412413983,1 +91.56497449807442,88.69629254546599,1 +79.94481794066932,74.16311935043758,1 +99.2725269292572,60.99903099844988,1 +90.54671411399852,43.39060180650027,1 +34.52451385320009,60.39634245837173,0 +50.2864961189907,49.80453881323059,0 +49.58667721632031,59.80895099453265,0 +97.64563396007767,68.86157272420604,1 +32.57720016809309,95.59854761387875,0 +74.24869136721598,69.82457122657193,1 +71.79646205863379,78.45356224515052,1 +75.3956114656803,85.75993667331619,1 +35.28611281526193,47.02051394723416,0 +56.25381749711624,39.26147251058019,0 +30.05882244669796,49.59297386723685,0 +44.66826172480893,66.45008614558913,0 +66.56089447242954,41.09209807936973,0 +40.45755098375164,97.53518548909936,1 +49.07256321908844,51.88321182073966,0 +80.27957401466998,92.11606081344084,1 +66.74671856944039,60.99139402740988,1 +32.72283304060323,43.30717306430063,0 +64.0393204150601,78.03168802018232,1 +72.34649422579923,96.22759296761404,1 +60.45788573918959,73.09499809758037,1 +58.84095621726802,75.85844831279042,1 +99.82785779692128,72.36925193383885,1 +47.26426910848174,88.47586499559782,1 +50.45815980285988,75.80985952982456,1 +60.45555629271532,42.50840943572217,0 +82.22666157785568,42.71987853716458,0 +88.9138964166533,69.80378889835472,1 +94.83450672430196,45.69430680250754,1 +67.31925746917527,66.58935317747915,1 +57.23870631569862,59.51428198012956,1 +80.36675600171273,90.96014789746954,1 +68.46852178591112,85.59430710452014,1 +42.0754545384731,78.84478600148043,0 +75.47770200533905,90.42453899753964,1 +78.63542434898018,96.64742716885644,1 +52.34800398794107,60.76950525602592,0 +94.09433112516793,77.15910509073893,1 +90.44855097096364,87.50879176484702,1 +55.48216114069585,35.57070347228866,0 +74.49269241843041,84.84513684930135,1 +89.84580670720979,45.35828361091658,1 +83.48916274498238,48.38028579728175,1 +42.2617008099817,87.10385094025457,1 +99.31500880510394,68.77540947206617,1 +55.34001756003703,64.9319380069486,1 +74.77589300092767,89.52981289513276,1 diff --git a/Python/2-Logistic Regression/ex2data2.txt b/Python/2-Logistic Regression/ex2data2.txt new file mode 100644 index 0000000..a888992 --- /dev/null +++ b/Python/2-Logistic Regression/ex2data2.txt @@ -0,0 +1,118 @@ +0.051267,0.69956,1 +-0.092742,0.68494,1 +-0.21371,0.69225,1 +-0.375,0.50219,1 +-0.51325,0.46564,1 +-0.52477,0.2098,1 +-0.39804,0.034357,1 +-0.30588,-0.19225,1 +0.016705,-0.40424,1 +0.13191,-0.51389,1 +0.38537,-0.56506,1 +0.52938,-0.5212,1 +0.63882,-0.24342,1 +0.73675,-0.18494,1 +0.54666,0.48757,1 +0.322,0.5826,1 +0.16647,0.53874,1 +-0.046659,0.81652,1 +-0.17339,0.69956,1 +-0.47869,0.63377,1 +-0.60541,0.59722,1 +-0.62846,0.33406,1 +-0.59389,0.005117,1 +-0.42108,-0.27266,1 +-0.11578,-0.39693,1 +0.20104,-0.60161,1 +0.46601,-0.53582,1 +0.67339,-0.53582,1 +-0.13882,0.54605,1 +-0.29435,0.77997,1 +-0.26555,0.96272,1 +-0.16187,0.8019,1 +-0.17339,0.64839,1 +-0.28283,0.47295,1 +-0.36348,0.31213,1 +-0.30012,0.027047,1 +-0.23675,-0.21418,1 +-0.06394,-0.18494,1 +0.062788,-0.16301,1 +0.22984,-0.41155,1 +0.2932,-0.2288,1 +0.48329,-0.18494,1 +0.64459,-0.14108,1 +0.46025,0.012427,1 +0.6273,0.15863,1 +0.57546,0.26827,1 +0.72523,0.44371,1 +0.22408,0.52412,1 +0.44297,0.67032,1 +0.322,0.69225,1 +0.13767,0.57529,1 +-0.0063364,0.39985,1 +-0.092742,0.55336,1 +-0.20795,0.35599,1 +-0.20795,0.17325,1 +-0.43836,0.21711,1 +-0.21947,-0.016813,1 +-0.13882,-0.27266,1 +0.18376,0.93348,0 +0.22408,0.77997,0 +0.29896,0.61915,0 +0.50634,0.75804,0 +0.61578,0.7288,0 +0.60426,0.59722,0 +0.76555,0.50219,0 +0.92684,0.3633,0 +0.82316,0.27558,0 +0.96141,0.085526,0 +0.93836,0.012427,0 +0.86348,-0.082602,0 +0.89804,-0.20687,0 +0.85196,-0.36769,0 +0.82892,-0.5212,0 +0.79435,-0.55775,0 +0.59274,-0.7405,0 +0.51786,-0.5943,0 +0.46601,-0.41886,0 +0.35081,-0.57968,0 +0.28744,-0.76974,0 +0.085829,-0.75512,0 +0.14919,-0.57968,0 +-0.13306,-0.4481,0 +-0.40956,-0.41155,0 +-0.39228,-0.25804,0 +-0.74366,-0.25804,0 +-0.69758,0.041667,0 +-0.75518,0.2902,0 +-0.69758,0.68494,0 +-0.4038,0.70687,0 +-0.38076,0.91886,0 +-0.50749,0.90424,0 +-0.54781,0.70687,0 +0.10311,0.77997,0 +0.057028,0.91886,0 +-0.10426,0.99196,0 +-0.081221,1.1089,0 +0.28744,1.087,0 +0.39689,0.82383,0 +0.63882,0.88962,0 +0.82316,0.66301,0 +0.67339,0.64108,0 +1.0709,0.10015,0 +-0.046659,-0.57968,0 +-0.23675,-0.63816,0 +-0.15035,-0.36769,0 +-0.49021,-0.3019,0 +-0.46717,-0.13377,0 +-0.28859,-0.060673,0 +-0.61118,-0.067982,0 +-0.66302,-0.21418,0 +-0.59965,-0.41886,0 +-0.72638,-0.082602,0 +-0.83007,0.31213,0 +-0.72062,0.53874,0 +-0.59389,0.49488,0 +-0.48445,0.99927,0 +-0.0063364,0.99927,0 +0.63265,-0.030612,0