Numerical data: How a model ingests data using feature vectors
Stay organized with collections Save and categorize content based on your preferences.
Until now, we've given you the impression that a model acts directly on the rows of a dataset; however, models actually ingest data somewhat differently.
For example, suppose a dataset provides five columns, but only two of those columns (b and d) are features in the model. When processing the example in row 3, does the model simply grab the contents of the highlighted two cells (3b and 3d) as follows?
Figure 1. Not exactly how a model gets its examples.
In fact, the model actually ingests an array of floating-point values called a feature vector. You can think of a feature vector as the floating-point values comprising one example.
Figure 2. Closer to the truth, but not realistic.
However, feature vectors seldom use the dataset's raw values. Instead, you must typically process the dataset's values into representations that your model can better learn from. So, a more realistic feature vector might look something like this:
Figure 3. A more realistic feature vector.
Wouldn't a model produce better predictions by training from the actual values in the dataset than from altered values? Surprisingly, the answer is no.
You must determine the best way to represent raw dataset values as trainable values in the feature vector. This process is called feature engineering, and it is a vital part of machine learning. The most common feature engineering techniques are:
Normalization: Converting numerical values into a standard range.
Binning (also referred to as bucketing): Converting numerical values into buckets of ranges.
This unit covers normalizing and binning. The next unit, Working with categorical data, covers other forms of preprocessing, such as converting non-numerical data, like strings, to floating point values.
Every value in a feature vector must be a floating-point value. However, many features are naturally strings or other non-numerical values. Consequently, a large part of feature engineering is representing non-numerical values as numerical values. You'll see a lot of this in later modules.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-01-02 UTC."],[[["\u003cp\u003eModels ingest data through floating-point arrays called feature vectors, which are derived from dataset features.\u003c/p\u003e\n"],["\u003cp\u003eFeature vectors often utilize processed or transformed values instead of raw dataset values to enhance model learning.\u003c/p\u003e\n"],["\u003cp\u003eFeature engineering is the crucial process of converting raw data into suitable representations for the model, encompassing techniques like normalization and binning.\u003c/p\u003e\n"],["\u003cp\u003eNon-numerical data like strings must be converted into numerical values for use in feature vectors, a key aspect of feature engineering.\u003c/p\u003e\n"]]],[],null,["Until now, we've given you the impression that a model acts directly on the\nrows of a dataset; however, models actually ingest data somewhat differently.\n\nFor example, suppose a dataset provides five columns, but only two of those\ncolumns (`b` and `d`) are features in the model. When processing\nthe example in row 3, does the model simply grab the contents of the\nhighlighted two cells (3b and 3d) as follows?\n**Figure 1.** Not exactly how a model gets its examples.\n\nIn fact, the model actually ingests an array of floating-point values called a\n[**feature vector**](/machine-learning/glossary#feature-vector). You can think\nof a feature vector as the floating-point values comprising one example.\n**Figure 2.** Closer to the truth, but not realistic.\n\nHowever, feature vectors seldom use the dataset's *raw values*.\nInstead, you must typically process the dataset's values into representations\nthat your model can better learn from. So, a more realistic\nfeature vector might look something like this:\n**Figure 3.** A more realistic feature vector.\n\nWouldn't a model produce better predictions by training from the\n*actual* values in the dataset than from *altered* values?\nSurprisingly, the answer is no.\n\nYou must determine the best way to represent raw dataset values as trainable\nvalues in the feature vector.\nThis process is called\n[**feature engineering**](/machine-learning/glossary#feature-engineering),\nand it is a vital part of machine learning.\nThe most common feature engineering techniques are:\n\n- [**Normalization**](/machine-learning/glossary#normalization): Converting numerical values into a standard range.\n- [**Binning**](/machine-learning/glossary#binning) (also referred to as [**bucketing**](/machine-learning/glossary#bucketing)): Converting numerical values into buckets of ranges.\n\nThis unit covers normalizing and binning. The next unit,\n[Working with categorical data](/machine-learning/crash-course/categorical-data),\ncovers other forms of\n[**preprocessing**](/machine-learning/glossary#preprocessing), such as\nconverting non-numerical data, like strings, to floating point values.\n\nEvery value in a feature vector must be a floating-point value. However, many\nfeatures are naturally strings or other non-numerical values. Consequently,\na large part of feature engineering is representing non-numerical values as\nnumerical values. You'll see a lot of this in later modules.\n| **Key terms:**\n|\n| - [Binning](/machine-learning/glossary#binning)\n| - [Bucketing](/machine-learning/glossary#bucketing)\n| - [Feature engineering](/machine-learning/glossary#feature_engineering)\n| - [Feature vector](/machine-learning/glossary#feature_vector)\n| - [Normalization](/machine-learning/glossary#normalization)\n- [Preprocessing](/machine-learning/glossary#preprocessing) \n[Help Center](https://support.google.com/machinelearningeducation)"]]