Machine Learning Analysis of Developer Survey
Budget: £20 – £250 GBP
This coursework is an individual assignment. You must implement it independently.
This coursework is a mini project which applies machine leaning techniques to analyse a real-
world data set. You are asked to implement several machine learning tasks using the data from
"Stack Overflow 2024 Annual Developer Survey". This survey will help you understand the state
of software developers, you can read more about the survey here: Stack Overflow Developer
Survey 2024. The dataset can be downloaded from the stack overflow CDN and imported into
82233fe4.zip/stack-overflow-developer-survey-2024.zip
Kaggle:https://cdn.sanity.io/files/jo7n4k8s/production/262f04c41d99fea692e0125c342e4467
The following tasks are required in the coursework.
(1) Implement exploratory data analysis and gain an understanding of the data set and
its features. These concepts will be covered as part of the module content.
2) Implement cluster analysis and understand the characteristics of developers in each
cluster.
3) Implement classification and build machine learning models for predicting whether
a developer is in high income (compensation) based on developers’ information.
Note: for developers in this data set, low compensation is defined as annual
compensation less than $55,000, otherwise, as high compensation. The
compensation is provided in different denominations based on the developer’s
location. However, the converted value in USD is in column DI: ConvertedCompYearly
4)Implement a regression model that predicts the salary of a person given some
attributes. Compare your result with the actual salary and ensure that the prediction
error is as minimal as possible.
A report with 15 pages is recommended. The report in total, however, must not exceed 20
pages (excluding title page, contents page, references, and appendices) with the font Arial and
size 10 in the main text. A penalty of a single grade will be incurred if you exceed the 20-page
limit. You may put extra information in appendices which is not counted in the 20-page limit.
You are asked to write the report with the provided report template at the end of the template.
It is recommended to cite and list referees using Harvard Referencing style (see
https://www.ntu.ac.uk/m/library/referencing-made-easy). However, other (author, year)
styles like APA are also accepted.
By the submission deadline, you are expected to submit both your report (in MS Word or PDF
format) and your Python source code (in *.ipynb or *.py format) to NOW Dropbox.
Your work will be assessed according to the assessment criteria provided in Section II.
The remainder of this specification provides you with detailed requirements for each area of
content – you should read it very carefully.
1. Introduction
State the coursework tasks and state the insight you intend to gain in the coursework.
Introduce the CRoss Industry Standard Process for Data Mining (CRISP-DM)
methodology. Explain its application and importance with appropriate reference to
the literature.
Discuss how you are applying CRISP-DM to the project in your coursework.
2. Data Understanding, Data Preprocessing, Exploratory Data Analysis
Describe the background information of the data, such as how the data are collected
and what is the purpose of the data.
There are many columns in the data set. Select appropriate features from the columns
for your analysis with justification. Obviously, some features have a bigger impact on
the compensation than others. You will decide by yourself which features should be
adopted in your project.
Describe the selected features such as (though not limited to) their name, description,
and data type. For numeric attributes, provide descriptive statistics. It is sufficient to
describe only those attributes used in your analysis. Select at least 3 or more features
and plus the target variable Compensation. For a Distinction coursework, it is expected
that at least seven predictors will be selected, including both numeric and categorical
features.
Describe the quality of the data set, such as (though not limited to) determination of
the number of all flawed instances, which include duplicate or conflicting instances as
well as instances with missing values, erroneous values, or outliers.
If any duplicate or conflicting instances, missing values, outliers/erroneous values,
outliers exist, demonstrate how you clean these values.
Conduct the exploratory data analysis for understanding the data, such as (though not
limited to), identify outliers using a histogram or box plot; visualise the distribution of
one categorical attribute using a pie plot or bar plot; explore the relationship between
two features using a scatter plot; explore the relationship among three features by a
scatter plot.
3. Cluster Analysis
Describe the process of data transformation and normalization used in cluster analysis.
Perform cluster analysis of the data set using some clustering methods (such as k-Means
and hierarchical clustering). Implement cluster analysis using Python language. Describe
parameter setting, initialisation, stopping criterion and discuss how you choose the
optimal number of clusters.
Describe the characteristics of each cluster that are generated in cluster analysis.
4. Machine Learning for Classification and their Implementation
Describe the workflow of machine learning for classification with a flow-chart.
State and describe classification methods that are used in your coursework. The
methods may be chosen from those taught in this module, such as k-Nearest Neighbour,
Decision Trees, Logistic Regression. It is also allowed to choose methods that are not
taught in this module. For a Distinction coursework, at least 3 classifiers should be
chosen for classification.
State and describe the regression models that are used for the salary estimation. You
may choose from the methods covered in the module as well as those not covered in
this module.
Describe parameter setting in your classification and regression method(s).
Describe the process of data transformation and normalization for the tasks.
Build and implement machine learning models and tune hyper-parameters in these
models for good performance. You may implement these models using Scikit-Learn
modules or other Python libraries that are not taught in this module.
Implement ensemble learning for classification. Describe the ensemble method(s) that
you are using.
5. Evaluation Machine Learning Models
Evaluate and compare the performance of different machine learning models. You
should at least use one or more of the performance metrics (as appropriate), such as
accuracy, confusion matrix, recall and precision, or Receiver Operating Characteristic
Curve (ROC curve), Error Rate etc.
Explain results using appropriate tables or figures.
Critically review which model performed best and how hyper-parameter tuning change
the performance of the models.
6. Discussions and Conclusions
Summarise your work and findings in this mini project, such as how the selected
features influence the developers’ compensation.
Describe what kind of insight that you have gained from this module.
Explain whether and how well has the module developed your understanding of AI and
Machine Learning.
Finally, it must be pointed out that there exist some online Jupyter notebooks on this data set.
It is allowed for you to study these notebooks, but you must implement your own code in your
coursework and cite these notebooks in your bibliography (if you used any). While you can use
ChatGPT or other Large-Language Models (LLMs) to better understand the module and
assessment, you should be careful not to copy the content as this will be flagged as generated
by ChatGPT and could lead to academic irregularities. Therefore, you should ensure that the
report and implementation are your own work.
You have one chance to check the similarity between your work by submitting your report and
source code to Draft folder on NOW Dropbox. Turnitin similarity score should be somewhere
around 30% for the report and around 60% for the code
This coursework is a mini project which applies machine leaning techniques to analyse a real-
world data set. You are asked to implement several machine learning tasks using the data from
"Stack Overflow 2024 Annual Developer Survey". This survey will help you understand the state
of software developers, you can read more about the survey here: Stack Overflow Developer
Survey 2024. The dataset can be downloaded from the stack overflow CDN and imported into
82233fe4.zip/stack-overflow-developer-survey-2024.zip
Kaggle:https://cdn.sanity.io/files/jo7n4k8s/production/262f04c41d99fea692e0125c342e4467
The following tasks are required in the coursework.
(1) Implement exploratory data analysis and gain an understanding of the data set and
its features. These concepts will be covered as part of the module content.
2) Implement cluster analysis and understand the characteristics of developers in each
cluster.
3) Implement classification and build machine learning models for predicting whether
a developer is in high income (compensation) based on developers’ information.
Note: for developers in this data set, low compensation is defined as annual
compensation less than $55,000, otherwise, as high compensation. The
compensation is provided in different denominations based on the developer’s
location. However, the converted value in USD is in column DI: ConvertedCompYearly
4)Implement a regression model that predicts the salary of a person given some
attributes. Compare your result with the actual salary and ensure that the prediction
error is as minimal as possible.
A report with 15 pages is recommended. The report in total, however, must not exceed 20
pages (excluding title page, contents page, references, and appendices) with the font Arial and
size 10 in the main text. A penalty of a single grade will be incurred if you exceed the 20-page
limit. You may put extra information in appendices which is not counted in the 20-page limit.
You are asked to write the report with the provided report template at the end of the template.
It is recommended to cite and list referees using Harvard Referencing style (see
https://www.ntu.ac.uk/m/library/referencing-made-easy). However, other (author, year)
styles like APA are also accepted.
By the submission deadline, you are expected to submit both your report (in MS Word or PDF
format) and your Python source code (in *.ipynb or *.py format) to NOW Dropbox.
Your work will be assessed according to the assessment criteria provided in Section II.
The remainder of this specification provides you with detailed requirements for each area of
content – you should read it very carefully.
1. Introduction
State the coursework tasks and state the insight you intend to gain in the coursework.
Introduce the CRoss Industry Standard Process for Data Mining (CRISP-DM)
methodology. Explain its application and importance with appropriate reference to
the literature.
Discuss how you are applying CRISP-DM to the project in your coursework.
2. Data Understanding, Data Preprocessing, Exploratory Data Analysis
Describe the background information of the data, such as how the data are collected
and what is the purpose of the data.
There are many columns in the data set. Select appropriate features from the columns
for your analysis with justification. Obviously, some features have a bigger impact on
the compensation than others. You will decide by yourself which features should be
adopted in your project.
Describe the selected features such as (though not limited to) their name, description,
and data type. For numeric attributes, provide descriptive statistics. It is sufficient to
describe only those attributes used in your analysis. Select at least 3 or more features
and plus the target variable Compensation. For a Distinction coursework, it is expected
that at least seven predictors will be selected, including both numeric and categorical
features.
Describe the quality of the data set, such as (though not limited to) determination of
the number of all flawed instances, which include duplicate or conflicting instances as
well as instances with missing values, erroneous values, or outliers.
If any duplicate or conflicting instances, missing values, outliers/erroneous values,
outliers exist, demonstrate how you clean these values.
Conduct the exploratory data analysis for understanding the data, such as (though not
limited to), identify outliers using a histogram or box plot; visualise the distribution of
one categorical attribute using a pie plot or bar plot; explore the relationship between
two features using a scatter plot; explore the relationship among three features by a
scatter plot.
3. Cluster Analysis
Describe the process of data transformation and normalization used in cluster analysis.
Perform cluster analysis of the data set using some clustering methods (such as k-Means
and hierarchical clustering). Implement cluster analysis using Python language. Describe
parameter setting, initialisation, stopping criterion and discuss how you choose the
optimal number of clusters.
Describe the characteristics of each cluster that are generated in cluster analysis.
4. Machine Learning for Classification and their Implementation
Describe the workflow of machine learning for classification with a flow-chart.
State and describe classification methods that are used in your coursework. The
methods may be chosen from those taught in this module, such as k-Nearest Neighbour,
Decision Trees, Logistic Regression. It is also allowed to choose methods that are not
taught in this module. For a Distinction coursework, at least 3 classifiers should be
chosen for classification.
State and describe the regression models that are used for the salary estimation. You
may choose from the methods covered in the module as well as those not covered in
this module.
Describe parameter setting in your classification and regression method(s).
Describe the process of data transformation and normalization for the tasks.
Build and implement machine learning models and tune hyper-parameters in these
models for good performance. You may implement these models using Scikit-Learn
modules or other Python libraries that are not taught in this module.
Implement ensemble learning for classification. Describe the ensemble method(s) that
you are using.
5. Evaluation Machine Learning Models
Evaluate and compare the performance of different machine learning models. You
should at least use one or more of the performance metrics (as appropriate), such as
accuracy, confusion matrix, recall and precision, or Receiver Operating Characteristic
Curve (ROC curve), Error Rate etc.
Explain results using appropriate tables or figures.
Critically review which model performed best and how hyper-parameter tuning change
the performance of the models.
6. Discussions and Conclusions
Summarise your work and findings in this mini project, such as how the selected
features influence the developers’ compensation.
Describe what kind of insight that you have gained from this module.
Explain whether and how well has the module developed your understanding of AI and
Machine Learning.
Finally, it must be pointed out that there exist some online Jupyter notebooks on this data set.
It is allowed for you to study these notebooks, but you must implement your own code in your
coursework and cite these notebooks in your bibliography (if you used any). While you can use
ChatGPT or other Large-Language Models (LLMs) to better understand the module and
assessment, you should be careful not to copy the content as this will be flagged as generated
by ChatGPT and could lead to academic irregularities. Therefore, you should ensure that the
report and implementation are your own work.
You have one chance to check the similarity between your work by submitting your report and
source code to Draft folder on NOW Dropbox. Turnitin similarity score should be somewhere
around 30% for the report and around 60% for the code
Related categories:
Algorithm
Report Writing
Research Writing
Machine Learning (ML)
Artificial Intelligence