# 代码代写｜CSE583/EE552 Pattern Recognition and Machine Learning, Spring 2023

## 这是一篇来自美国的关于模式识别和机器学习的项目#1描述线性回归+分类代码代写

**1 ****Part 1: Linear Regression (45 Points) **

**1.1 ****Introduction **

The fifirst part of this project focuses on linear regression, which serves as an introduction to important concepts covered in the textbook. You will generate noisy observations (**x***, ***t**) of *N *= 50 samples and assume Gaussian noise. Using these observations, you will introduce a prior distribution **p**(**w***|**α*) over the coeffiffifficients and then solve the Bayesian linear regression problem by estimating polynomial coeffiffifficients of difffferent order *M*, which you can decide on your own to see which one fifits better. You will be implementing two difffferent approaches:

- The ML (maximum likelihood) estimator from a probabilistic perspective. (refer to Equation 1.62, page 29).

- The MAP (maximum a posteriori) estimator of the Bayesian approach (refer to Equation 1.67, page 30 and Equation 3.55, page 153, use
*β*= 11.1 and*α*= 0.005 as shown in textbook).

Once you have completed your program, you will need to compare and summarize the results of these two methods. The primary goal of this part of the project is to familiarize you with the Bayesian modeling framework and provide experience using Matlab or Python.

Additionally:

- Background information for this project can be found in sections 1.1 and 1.2 of the textbook by Bishop.

- The starter code for this project is available for download on the course’s Canvas page in both Python and Matlab. It is recommended to download it and check the ReadMe.md fifile for additional details about the starter code.

**1.2 ****Requirements **

Your report for Part 1 MUST include the following elements:

- Derived equations for the two approaches used in the project.
- Visualization results for the estimated regression models using
*N*= 50 sample points.

These should include plots to clearly demonstrate how well the models fifit the data. You can take Figure 1.3 (page 6) and Figure 3.8 (page 157) of the textbook as a reference.

Note: The plotting function is provided in the starter code.

- A comprehensive summary and comparison of these two methods.

**1.3 ****Grading Criteria of Part 1 **

**Part 1 (45 points)**

**– Maximum likelihood (15 points) **

∗ Show the derived equations (and the deriving of the equations). (5 points)

∗ Code implementation. (10 points)

**– Maximum a posteriori (15 points) **

∗ Show the derived equations (and the deriving of the equations). (5 points)

∗ Code implementation. (10 points)

**– Write up the report to summarize, compare and contrast the results ****(15 points) **

∗ Figures and tables with nice visualization and description. (5 points)

∗ Comparison with difffferent methods and summary. (10 points)

**Extra Credit (up to 20 points)**

**– **Add additional lambda values to the plot of errors for ln *λ *= *−*18*, **−*15*, **−*13 (Figure 1.8), and you are welcome to use more lambda values. (Up to 5 points)

**– **Vary the order of the polynomial *M *for a fifixed number of sample points (*N *= 50),and generate a table similar to Table 1.1 (page 8) that shows the effffect on the model fifit. (Up to 5 points)

**– **Vary the number of sample points *N *for a fifixed degree of polynomial (*M *= 9) and generate a plot similar to Figure 1.6 (page 9) that illustrates the effffect on the model fifit. (Up to 5 points)

**– **Use your results to investigate whether there is an exponential relationship between *M *and *N*, known as the ”curse of dimensionality” (Up to 5 points)

**2 ****Part 2: Classifification (50 Points) **

**2.1 ****Introduction **

The second part of this project focuses on classifification using real data. You will learn how to apply Fisher’s linear discriminant technique, which is used for classifying data, to a real dataset of Taiji poses. This part allows you to apply the techniques learned from the course to real-world datasets, and evaluate performance to draw important insights. The dataset is provided on Canvas.

Your implementation should be as follows:

- First, implement a function to fifind the Fisher projection using the training features and labels, as described in Bishop 4.1.4 and 4.1.6. You must implement the Fisher projection by yourself.

- Then, train a classififier using the Fisher projected training data. You can choose from a linear discriminant (Bishop 4.1.1 – 4.1.3), a KNN classififier (Bishop 2.5.2), from Decision Theory using an optimum threshold (end of Bishop 4.1.4), or any other classififier of your choice. You can use either the built-in functions of Matlab or implement them by yourself. For Python, you again may optionally implement the classififier yourself or import one from a designated library (details will be included in the readme). This function should return the Fisher projection coeffiffifficients and the corresponding fifitted classififier necessary for the testing function.

- Finally, test the performance of your projection and classifification method on the datasets given by either built-in functions or by implementing them by yourself. Quantitatively evaluate the classifification method on the given dataset.

**2.2 ****About the Taiji Pose Dataset **

This is a dataset of the joint angles (in quaternions) of 35 sequences from 5 people performing Taiji in our motion capture lab. The dataset contains 8 classes consisting of 7 difffferent Taiji poses, as well as transitional poses (the ‘0’ class). Here is a sample video of one of the performances: link to the video (We are only using up to 1:30 in the video). The data we will be working with has *N *= 15285 observations and *D *= 64 dimensions.

**2.3 ****Training **

Note we will be be using Leave One Subject Out cross validation during classifification. That is, for a given subject, all training data will be composed of the other subjects performances (data), while the testing data will only consist of the selected subject. This allows for the classififier to test on pseudo-unseen data and hopefully more closely resembles a real setting.

The provided code will create such data splits for you.