Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

COMS 4701 Articial Intelligence

Homework 4 - Coding

2022

We ask you to implement two small and separate machine learning algorithms. We provide sample input/output file pairs for your reference.  The le plot db .py contains two functions for plotting data which you may choose to use, modify, reference and steal ideas from at will.

1.  Perceptron

2.  Linear Regression

Note:  The Python Pandas library helps simplify a lot of the intermediate steps we ask from you below.  Key functions include reading and writing to CSVs, matrix operations, and visualizing data.  Examples are provided in plot db .py.

1.  Perceptron

Implement the perceptron learning algorithm (PLA) for a linearly separable dataset. Your starter code includes data1 .csv  , where each line contains feature 1, feature 2, label. All values are numeric with labels 1 or 一1. Take a look at the data input le.  We suggest using matplotlib or pandas.DataFrame.plot (in plot db .py) to view data, and pandas.DataFrame.describe to see stats.

Write your PLA in pla .py in Python 3.  Your program takes a csv of input data and a location to write the output csv with the weights from each iteration of your PLA, written as weight 1, weight 2, b. The weights in the last line of your output csv defines the decision boundary computed for the given dataset. Formatting is shown in results1 .csv.

NOTE: results1 .csv values are purely ller and not representative of the values you should get.  Feel free to visualize and include a screenshot of your nal decision boundary in your README, like the one below:

 

We will execute your code as follows: $  python  pla .py  data1 .csv  results1 .csv

2.  Linear Regression

Use gradient descent to build a linear regression model for predicting height (m) using age (yr) and weight (kg), using data derived from CDC growth charts data.

Data Preparation and Normalization Load and understand the data from data2 .csv [age(years), weight(kg), height(m)] remembering to add a vector column for the intercept at the front of your matrix. You’ll notice the features are not on the same scale. What is the mean and standard deviation of each feature? Scale each feature (i.e.  age and weight) by its standard deviation, so each scaled feature has a mean of zero.  You do not need to scale the intercept. For each feature column, x, use the following formula:

x  µ(x)

σ(x)

Gradient Descent Implement gradient descent to nd a regression model in lr .py. Initialize your βs to zero. Recall the empirical risk and gradient descent rule as follows:

n

i2←

Aj  βj  := βj   α       (f (xi ) yi )xij

You will run gradient descent with these nine learning rates: α ∈ 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10 exactly 100 iterations per α-value, plus a tenth rate and number of iterations of your choice. To pick the tenth rate and loop count, observe how α affects the rate of convergence for the nine rates listed, then pick a rate and loop count you believe will perform well. Briefly explain your choice in your README le.

The program should generate an output le containing ten lines, one for each (α, num iters) hyperparameter pair.  Each line contains:  α , num iters, bias, b age, b weight, expressed to your choice of decimal places (see example results2 .csv in your starter code).  Each line of this le defines the regression model your gradient descent method computed on the given data and hyperparameters.

We will execute your code as follows: $  python  lr .py  data2 .csv  results2 .csv

Optional:  Visualize the result of each linear regression model in three-dimensional space.  You can plot each feature on the xy-plane, and plot the regression equation as a plane in xyz-space. Include these visualizations in your README le and label each one appropriately. For example:

 

3.  SUBMISSION INSTRUCTIONS

Submit all the required les separately on Gradescope:

● README.pdf (This will account for 30% of your grade)

● pla.py

● lr.py