Code › codeit-ai-sprint
From Data to Machine Learning Engineering
A first-class Codeit Sprint note on data science, MLOps, and Python basics.
Today was the first day of the Codeit AI Engineer Sprint. The first session started with orientation, and in the afternoon the instructor walked us through the overall shape of data science and machine learning engineering.
The lecture started with the definition of data.
Data is not just numbers or text stored somewhere. Data is any form of information that can be observed, analyzed, and used to extract meaning. Images, videos, text, click logs, and sensor values all count as data if they carry information we can analyze.
A collection of data is called a dataset. A dataset contains the thing being observed and the properties of that thing. The thing being observed can be called an entity, record, sample, instance, or observation. Its properties can be called attributes, variables, features, dimensions, or parameters depending on the context.
Where Data Is Stored
The first storage concepts were data lakes and data warehouses.
A data lake is where data is collected before it is heavily selected or cleaned. Click logs, sensor data, external market data, and data from different internal systems can all be stored there first. The problem is that data in a lake is often not ready for analysis. Formats differ, quality varies, duplicates appear, and missing values are common.
That is why useful data is cleaned, structured, and moved into a data warehouse. A data warehouse is organized for analysis and querying. In the larger flow, collecting, moving, storing, and organizing data belong mainly to data engineering. Analysis, A/B testing, and AI modeling come after that and move closer to data science.
Data science is the field of extracting knowledge and insight from different kinds of data. Math and programming matter, but neither data collection nor model building is enough by itself.
One point the instructor emphasized was domain knowledge. If revenue dropped last month, the number alone does not explain whether the cause was the end of a promotion, a competitor lowering prices, a drop in traffic from a channel, or an internal policy change. That context comes from the business. Since a data scientist cannot become an expert in every domain, communication matters. We need to ask the right people, understand the context, analyze the data, and explain the results back in a way people can use.
More Data Is Not Automatically Better
One line from the lecture stayed with me. More data is not always better.
If garbage data goes in, garbage results come out. GIGO, Garbage In, Garbage Out. A little noise can sometimes help a model generalize, but the default assumption should still be that data quality matters. Wrong values, duplicated records, biased samples, and meaningless inputs all affect the model.
This also connects to data-centric AI, which Andrew Ng has talked about for a while. I looked up a reference afterward, and the Data-centric AI Resource Hub defines data-centric AI as “Data-centric AI is the discipline of systematically engineering the data used to build an AI system.” I understood it as a reminder that improving the data a model learns from can matter as much as, and sometimes more than, changing the model itself.
How the Data Roles Differ
We also compared backend engineering with data roles. Backend engineers usually work with OLTP systems. OLTP stands for Online Transaction Processing, which means systems that handle real-time service requests and transactions such as orders, payments, signups, and posts.
Data engineers work more often with OLAP systems. OLAP stands for Online Analytical Processing, which is about collecting and querying large volumes of data for analysis. OLAP does not only look at current data. It combines historical data, current data, and sometimes external data to understand the larger flow. Because the data volume is large, distributed processing systems often become necessary.
Data analysts use SQL and visualization tools heavily, and they may also use Python libraries such as Pandas, Matplotlib, and Seaborn. Python helps when SQL alone is not enough for data processing, statistical calculation, or visualization. scikit-learn can appear in some workflows too, although heavier machine learning work moves closer to the data scientist role.
Analysts mainly explain the past and present. They ask why last month’s revenue dropped or where a metric changed. Data scientists go further into prediction and automation. Forecasting next month’s revenue, building user profiles, and creating retargeting models all sit in that area.
What Machine Learning Engineers Do
The role we are aiming for is machine learning engineer.
A machine learning engineer applies machine learning algorithms to real services. The work does not end at building a model. The model has to be integrated into a service, deployed, monitored, managed, and optimized. That is why the theory still matters.
MLOps becomes important here. A model is not trained once and left alone. It runs inside a cycle where data is collected, inspected, cleaned, used for training, evaluated, deployed, and then improved with new data.
The MLOps pipeline can be summarized like this.
Data collection → inspection and exploration → preprocessing and cleaning → modeling and training → evaluation → deployment → data collection again
In a real project, FastAPI can be used to expose a model API, Docker can package the runtime environment, and Kubernetes can manage deployment and operations. TensorRT can also be useful when inference performance needs to be optimized.
We also talked about the difference between machine learning engineers and machine learning researchers. Researchers work from a mathematical base such as linear algebra, probability, and statistics, and they study new algorithms or improve existing ones. In practice, completely new algorithm research often requires the kind of capital, data, and compute resources that big tech companies have, so many teams focus more on improving and applying existing algorithms.
Why Python Is Used
Python is widely used in the AI ecosystem.
It is not used because the language itself is the fastest. If raw execution speed is the only criterion, C++ is faster. Python wins because the ecosystem around machine learning, deep learning, data preprocessing, and model deployment is strong.
We can use AI frameworks such as TensorFlow, PyTorch, and Hugging Face, along with data and visualization libraries such as Pandas, NumPy, OpenCV, and Seaborn. Python also works well with FastAPI for serving models and with Docker for deployment. In this course, we will use PyTorch.
Ways to Classify Data
We also reviewed different types of data.
Structured data has fixed fields and a strict structure. Database tables and Excel sheets are the easiest examples. Semi-structured data has some structure but is not a clean table. JSON and XML fit here because they still have keys, values, and hierarchy.
Unstructured data does not have a fixed structure. Images, videos, audio, and free-form text belong here. Today, unstructured data makes up a huge portion of available data, and AI is often used to extract features from it or turn it into a more structured form.
Data can also be divided into qualitative data and quantitative data.
Qualitative data focuses on categories or properties rather than numeric calculation. Nominal data has categories without order, such as blood type or nationality. Ordinal data has order, but the gaps are not necessarily equal, such as satisfaction ratings, rankings, or military rank.
Quantitative data represents size or amount with numbers and can be calculated. Interval data has equal intervals but no absolute zero, such as Celsius temperature or dates. Ratio data has an absolute zero, so zero means the absence of the thing being measured. Length, weight, price, count, and speed belong here.
Analysis Moves From Observation to Action
Data analysis is the process of extracting meaningful information from data. It lets us make decisions based on evidence instead of intuition alone.
We organized analysis into four stages.
Descriptive analysis explains what is happening now. For example, a patient has a fever of 39 degrees and is coughing. Diagnostic analysis explains why it happened. The test result may show that the fever was caused by a viral infection.
Predictive analysis estimates what will happen next. If left untreated, the fever may rise and the risk of pneumonia may increase. Prescriptive analysis suggests what should be done, such as giving medicine or deciding on treatment.
In short, data analysis moves from observation to cause, prediction, and action.
Preprocessing Is a Large Part of the Work Before the Model
In preprocessing, we covered Data Cleaning, Data Wrangling, Data Manipulation, and EDA.
Data Cleaning corrects or removes bad parts of the data. It deals with noise, missing values, outliers, and duplicate values. Noise is erroneous or unnecessary data and can be reduced with filtering or averaging. Missing values are empty values. They can be removed, filled with an average, or estimated with a method such as KNN. If the dataset is large enough, deleting rows with missing values can also be a reasonable choice.
An outlier is an extreme value outside the normal distribution of observations. But an outlier is not always an error. If a machine sensor produces an unusual value because it is failing, that value may be an error and also an important signal that the machine is failing. Sudden traffic spikes or revenue jumps may also be patterns worth analyzing rather than values to remove.
For outlier detection, statistical methods such as IQR can be used. IQR uses the range between the first and third quartiles and treats values that fall too far outside that range as outlier candidates. If we assume a normal distribution, we can also check values that are several standard deviations away from the mean.
Duplicate values need attention too. Duplicates can distort analysis results, and in machine learning they can cause a model to repeatedly learn the same data, increasing the risk of overfitting.
Data Wrangling reshapes and structures data for the analysis goal. It includes finding or filling blanks, removing irrelevant data, and normalizing formats. For example, if the same name appears in multiple formats with spaces or punctuation differences, we need to make the format consistent.
Data Manipulation directly changes data to solve a specific problem or create data that fits the analysis goal. Creating derived columns from existing data is one common example.
EDA, Exploratory Data Analysis, means looking through the data first to understand it and find patterns or relationships. It often uses simple descriptive statistics and visualization. Checking correlations between variables is also important. In contrast, CDA, Confirmatory Data Analysis, starts with a hypothesis, collects data, and uses statistical analysis to test that hypothesis.
What Visible Data Can Hide
The visualization example that stood out was survivorship bias.
During World War II, people looked at bullet holes on planes that returned from combat and thought the heavily damaged areas should be reinforced. But the important data was not only the planes that returned. It was also the planes that did not. The areas with many bullet holes may have been areas that could take damage and still allow the plane to return. The areas with fewer bullet holes, such as the engine or cockpit, may have been the fatal weak points.
The lesson is simple. If we only look at visible data, we can miss the missing data.
What I Remember From the Python Practice
At the end, we also did basic Python practice in Colab.
One question from the lecture stayed with me. Why does -13 // 4 return -4? In Python, the // operator is not just “drop the decimal part.” It is floor division, so it moves the result toward negative infinity.
-13 // 4 # -4
-13 divided by 4 is -3.25. Flooring that value gives -4, not -3. With positive numbers, 13 // 4 returning 3 feels natural, but negative numbers make the behavior easier to miss.
String handling was another small thing that made me curious about Python’s internals.
"Hello" + " " + "World"
This creates a new string, “Hello World”. Python strings are immutable, so their internal value does not change after creation. When strings are added, Python creates a new string object instead of modifying the old one.
For string literals like the example above, Python can optimize them into one constant string during compilation. But if strings stored in variables are repeatedly concatenated at runtime, new string objects can be created again and again. For repeated concatenation, it is usually better to collect pieces in a list and use join() once.
I also reviewed Python indentation. Python uses indentation instead of braces to define code blocks. After lines ending with a colon, such as if, for, while, def, or class, the block must follow a consistent indentation level. Indentation is not just style in Python. It is part of the syntax.
After the First Day
The first day was mostly about orientation and the broad flow from data science to machine learning engineering. I also met the teammates I will be working with, and I hope we get along well during the course.
Today I wrote down quite a lot because I did not want to miss anything while listening to the lectures back to back. But the lecture material already exists, and copying everything is not very efficient. From now on, I want to focus more on the parts that were interesting to me, the things I newly understood, and the points that connect with my own engineering experience.