COMP 627辅导 、讲解 Python设计程序
COMP 627 – Assignment 1
Note: Refer to Eq. 2.11 in the textbook for weight update. Both weights, w1 and b, need to be adjusted.
According to Eq. 2.11, for input x1, error E = t-y and learning rate β:
w1_new=w1_old+ β E x1;
bnew= bold+ β E
COMP 627 Neural Networks and Applications
Assignment 1
Perceptron and Linear neuron: Manual training and real-life case
studies
Part 1: Perceptron
[08 marks]
Download Fish_data.csv file from LEARN page. Use this dataset to answer the two questions (i) and (ii)
below on Perceptron. The dataset consists of 3 columns. The first two columns are inputs (ring
diameter of scales of fish grown in sea water and fresh water, respectively). The third column is the
output which states whether the category of the fish is Canadian or Alaskan (the value is 0 for Canadian
and 1 for Alaskan). Perceptron model classifies fish into Canadian or Alaskan depending on these two
measures of ring diameter of scales.
(i) Extract the first AND last row of data and label these rows 1 and 2. Use an initial weight
vector of [w1= 102, w2= -28, b= 5.0] and learning rate β of 0.5 for training a perceptron
model manually as below:
Adjust the weights in example-by-example mode of learning using the two input vectors.
Present the input data in the order of rows 1 and 2 to the perceptron. After presentation
of each input vector and corresponding weight adjustment, show the resulting
classification boundary on the two data points as in Fig. 2.15 in the book. For each round
of weight adjustment, there will be a new classification boundary line. You can do the
plots on Excel, by hand, python or any other plotting software. Repeat this for 2 epochs
(i.e., pass the two input vectors twice through the perceptron).
(4 marks)
(ii) Write python code to create a perceptron model to use the whole dataset in fish.csv to
classify fish into Canadian or Alaskan depending on the two input measures of ring
diameter of scales. Use 200 epochs for accurate models.
Modify your python code to show the final classification boundary on the data.
Write the equation of this boundary line.
Compare with the classification boundary in the book.
(4 marks) 2
COMP 627 – Assignment 1
Note: For adjusting weights, follow the batch learning example for linear neuron on page 57 of the
textbook that follows Eq. 2.36. After each epoch, adjust the weights as follows:
w1_new=w1_old + β (E1 x1 + E2 x2)/2
bnew= bold + β (E1 + E2)/2
where E1 and E2 are the errors for the two inputs.
Part 2: Single Linear Neuron
[12 marks]
Download heat_influx_north_south.csv file from LEARN page. Use this dataset to develop a single
linear neuron model to answer the questions (i) to (v) below. This is the dataset that we learned about
in the text book and lectures where a linear neuron model had been trained to predict heat influx in
to a house from the north and south elevations of the house. Note that the dataset has been
normalised (between 0 and 1) to increase the accuracy of the models. When data (inputs and outputs)
have very different ranges, normalisation helps balance this issue.
(i) Use two rows of data (rows 1 and 2 (0.319, 0.929) and (0.302, 0.49)), respectively, to train
a linear neuron manually to predict heat influx into a home based on the north elevation
(angle of exposure to the sun) of the home (value in ‘North’ column is the input for the
single neuron where output is the value in ‘HeatFlux’ column). Use an initial weight vector
of [b (bias) = 2.1, w1= -0.2] and learning rate of 0.5. Bias input =1. You need to adjust
both weights, b and w1.
(3 marks)
a) Train the linear neuron manually in batch mode. Repeat this for 2 epochs.
Note:
Try to separate the dataset into two datasets based on the value in ‘Canadian_0_Alaskan_1’ column.
Example code is given below.
#create dataframe X1 with input columns of the rows with the value 0 in 'Canadian_0_Alaskan_1' column
X1 = df.loc[df["Canadian_0_Alaskan_1"] == 0].iloc[:, 0:2]
Plot the data of two datasets with different markers ‘o’ and ‘x’.
Plot the decision boundary line using the equation used in Laboratory Tutorial 2 – Part 2 (Please note
that there is a correction in the equation and the updated assignment is available on LEARN).
Final plot should be like this. 3
COMP 627 – Assignment 1
1 2
Note: To retrieve the mean squared error, you can use the following code
from sklearn.metrics import mean_squared_error
print(mean_squared_error(Y, predicted_y))
b) After the training with the 2 epochs is over, use your final weights to test how the
neuron is now performing by passing the same two data points again into the neuron
and computing error for each input (E1 and E2). Compute Mean Square Error (MSE)
for the 2 inputs using the formula below.
2+
2
MSE =
2
(ii) Write a python program to train a single linear neuron model using all data to predict heat
influx from north elevation (value in ‘North’ column is the input for the single neuron
where output is the value in ‘HeatFlux’ column) using all data. Train the model with 3000
epochs for high accuracy.
Extract the weights of the model and write the equation for the neuron function (linear
equation showing input-output relationship as in Eq. 2.44) and plot the neuron function
on data as in Figure 2.34 in the textbook.
Modify the code to retrieve the mean square error (MSE) and R
2
score for the trained
neuron model.
(3 marks)
(iii) Write a python program to train a linear neuron on the whole data set to predict heat
influx from north and south elevations (using the two inputs from the two columns
‘South’ and ‘North’). Train the model with 3000 epochs for high accuracy.
Extract the weights of the model and write the equation for the network function.
Modify your program to find the Mean Square Error (MSE) and R
2
score of the model.
Compare the error difference between the previous one-input case (in part (ii)) and the
current two-input case.
(4 marks)
(iv) Modify the program to plot the data and the network function on the same plot (Refer to
the Laboratory Tutorial 4). Plot the network function on the data (3D plot of predicted
heat influx as a function plotted against north and south elevations.(1 marks)
Note: Neural Network develops a function (plane/surface) that goes through the data as closely as
possible. Here, we want to see how close this surface is to the data. Since we have 2 inputs, we need a
3-D plot to see this. We plot the network function against the two inputs.
Your final output should look like this: 4
COMP 627 – Assignment 1
Note: In the plot in part (iv) above, the network function was shown as a surface plotted against the 2
inputs. However, you can also calculate the NN predicted heat influx for those exact input values for north
and south elevations in the dataset (as opposed to showing the function) and then plot the predicted heat
influx and target heat influx on the same 3D plot against the 2 inputs.
Your final output should look like this:
(v) Plot the network predicted heat influx values and target heat influx values against the two
inputs (3D data plot).
(1 marks)