data程序辅导 、讲解 python编程语言
Assignment 3
Due: 11:59pm, Friday June 7th
IoT devices collect data about the real world to help us make better decisions with that data. Raw data isn’t particularly helpful, so we analyse data to try it into more meaningful information. Sometimes we want to use this data not just to tell us about the past, but also to make inferences about the future.
In this assignment, we are going to use machine learning trained on historic weather data to make an inference about the future. You have been provided with a data set consisting of weather data for 5 sites. The data covers temperature, humidity and wind observations that were recorded every half hour for almost 6 years per site.
This data will be used to create a simple IoT enabled ‘light’ device that uses machine learning to predict what the days weather conditions should be and compare it against the current reading. This will consist of a simulated IoT hardware device (using the SenseHat emulator) and a server that runs the machine learning algorithms and offers more detailed information for the selected day.
Please note:
The size of these data sets is quite large. The weather data is provided in xlsx format and will need to be cleaned up and converted to a suitable format before you can use it in your program – you should discard any data that you don’t need to reduce the amount of time it will take to train your models.
The data set includes data from 2015 – 2021 inclusive, but 2021 does not contain the full year. Your predictions should be for the year 2022.
While this project shares some similarities with the first assignment, this is a separate device and does not need to implement any of the functionality from that device.
Your IoT device should:
Allow the user to input a date (day and month) and a site number, using the keys on the front of the device.
oPress the middle key to enter date entry mode. Press left and right to switch between day and month. Use scrolling text to indicate which mode you are in. Press up and down to change the day or month. Press the middle key to save the date and return to normal operation mode.
oYour date should also include 2022 as the year – this is the next year outside of the data set.
oYour site number indicates the location of the IoT device from among the 5 provided data sets.
Send the date to your server and return the predicted minimum and maximum temperature, the predicted minimum and maximum humidity for the given date, and the name of the location as per the location ID.
oPrint these predicted values and location name to the terminal.
While in normal mode, if the date has been set and a prediction returned, the device should visualize whether the current temperature and humidity is within the predictions for this day.
oPress left and right to switch between temperature and humidity mode.
Indicate changes between these two modes using scrolling text.
oChange the colour of the screen to red if the current temperature/humidity is higher or lower than the prediction, and green if it is within the current temperature prediction mode.
oAs the temperature changes on your sensehat, so should these visual indications.
Temperature and humidity measurements are local only and do not need to be sent to the server.
All scrolling text messages should scroll quickly at 0.05 to reduce time taken to setup and use the device.
Your server should:
Accept the date and location ID from the IoT device and store in an XML file for later access.
Use machine learning to return a prediction to the IoT device.
oYou should return a predicted maximum and minimum temperature and a maximum and minimum humidity.
oYour prediction should use PHP-ML to train a model based on the historic data (from the supplied data set) for the selected date.
Select an appropriate ML method and train it with the appropriate samples from the provided data sets to generate the above predictions.
Your server should also provide a view that shows more information about the selected date. This information should be based on the data recorded in the data set.
oUsing the last stored date, generate a graph (using CanvasJS) that shows the average temperatures for the selected date in half hour increments. Below the graph you should display the predicted minimum and maximum temperatures (for the whole day).
oUsing the last stored date, generate a graph (using CanvasJS) that shows the average humidity for the selected date in half hour increments. Below the graph you should display the predicted minimum and maximum humidity (for the whole day).
oThis should be rendered as two separate graphs, with a way to switch between the views.
oThe locations name and the type of data shown should be included as the graph title.
Documentation:
A diagram explaining how data flows in your system. (2 marks)
Write a brief explanation (1 paragraph) explaining your choice of machine learning algorithm, the training data you needed to supply it, and any steps you had to take to sample that data from the data sets. (2 marks)
Comment on the accuracy of the predictions that your system returns, and what could be done to improve them. (1 paragraph) (2 marks)
Along with your code (zipped), you should record a quick video that demonstrates your system. Your video should be a screen recording, whereby you demonstrate your virtual machine environment, showing off all the features of your webserver running in a browser. In your video, you should talk through the features as you demonstrate them to the marker.
Your demonstration should show you:
Setting a date on the IoT device.
The printed response in the terminal.
The colour of the lights changing as you adjust the temperature and humidity sliders.
Your webserver visualizing the temperature and humidity graphs for the selected date.
Your demonstration should be recorded as a screen capture, as per the instructions on Mylo.
The assignment submission will include:
Your code for the IoT device (python), server (php) and your cleaned data set as a zip file.
Your documentation, including your diagram and your explanation of ML methods/accuracy.
A video demonstration of the system, as a screen capture.
Please submit this as 3 separate files (zip, document/image and video) via Mylo, as this will make the markers life much easier.
Your IoT system allows a user to send a date and location to the server
Enters setup mode, allows date and location to be set, sends data and location ID to the server, exits and enters normal operation mode. 3
Partially implemented, but fails one or more of the above 1
Not implemented 0
Your IoT system
Reads the current temperature and humidity, displays the correct status colour, switches between the two modes(temp/humidity), visual indicates the mode. 3
Partially implemented, but fails one or more of the above 1
Not implemented 0
Your server accepts a date and ID from the IoT device
Your server accepts a date and location ID, stores this information as an XML file, returns a prediction to the server 2
Partially implemented, but fails one or more of the above 1
Not implemented 0
Your server uses machine learning to predict that days temp/humidity ranges for the selected date and location ID.
Sample the appropriate data from the data set, use an appropriate machine learning algorithm, train a machine learning model, predict the min/max temp and humidity for the location ID, returns a reasonably accurate result. 5
Partially implemented, but fails one or more of the above 3
Partially implemented, but fails two or more of the above 1
Not Implemented 0
Your webserver visualizes data
Reads the date and ID from the XML, reads the half hourly temperature and humidity for those dates and ID from the data set, calculates an average for each half hour increment, graphs the data as two separate graphs (with a sway to switch between them). 4
Partially implemented, but fails one or more of the above 2
Partially implemented, but fails two or more of the above 1
Not implemented 0
Demonstration 2
Diagram 2
Explanation of ML choice 2
Discussion of Accuracy 2