From 98394876e65dd212b46b4994c783e205ad62e83f Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 18:34:58 +0000 Subject: [PATCH 01/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 15 changes) --- translations/en/.co-op-translator.json | 18 +- .../4-techniques-of-ML/README.md | 86 +++--- .../en/2-Regression/3-Linear/README.md | 46 +++- .../3-Linear/solution/notebook.ipynb | 55 ++-- .../3-Classifiers-2/solution/notebook.ipynb | 47 +--- translations/es/.co-op-translator.json | 18 +- .../4-techniques-of-ML/README.md | 84 +++--- .../es/2-Regression/3-Linear/README.md | 254 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++--- .../3-Classifiers-2/solution/notebook.ipynb | 49 +--- translations/fr/.co-op-translator.json | 18 +- .../4-techniques-of-ML/README.md | 100 +++---- .../fr/2-Regression/3-Linear/README.md | 236 ++++++++-------- .../3-Linear/solution/notebook.ipynb | 67 ++--- .../3-Classifiers-2/solution/notebook.ipynb | 51 +--- 15 files changed, 613 insertions(+), 585 deletions(-) diff --git a/translations/en/.co-op-translator.json b/translations/en/.co-op-translator.json index beba211635..70182f876d 100644 --- a/translations/en/.co-op-translator.json +++ b/translations/en/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "en" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T10:53:40+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:31:56+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "en" }, @@ -90,8 +90,8 @@ "language_code": "en" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T15:37:29+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:31:36+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "en" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "en" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:29:38+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "en" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T10:46:08+00:00", @@ -210,8 +216,8 @@ "language_code": "en" }, "4-Classification/3-Classifiers-2/solution/notebook.ipynb": { - "original_hash": "70f41fe4fd4253adb44cd9d291406e4f", - "translation_date": "2026-02-28T08:12:54+00:00", + "original_hash": "382c1f542f31fcc58137ce6d14751413", + "translation_date": "2026-04-26T18:29:45+00:00", "source_file": "4-Classification/3-Classifiers-2/solution/notebook.ipynb", "language_code": "en" }, diff --git a/translations/en/1-Introduction/4-techniques-of-ML/README.md b/translations/en/1-Introduction/4-techniques-of-ML/README.md index c040b3f378..47d8ed3853 100644 --- a/translations/en/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/en/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # Techniques of Machine Learning -The process of creating, using, and maintaining machine learning models and the data they rely on is quite different from many other development workflows. In this lesson, we will break down the process and outline the key techniques you need to understand. You will: +The process of building, using, and maintaining machine learning models and the data they use is a very different process from many other development workflows. In this lesson, we will demystify the process, and outline the main techniques you need to know. You will: -- Gain a high-level understanding of the processes behind machine learning. -- Explore foundational concepts such as 'models,' 'predictions,' and 'training data.' +- Understand the processes underpinning machine learning at a high level. +- Explore base concepts such as 'models', 'predictions', and 'training data'. ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Click the image above for a short video walkthrough of this lesson. +> 🎥 Click the image above for a short video working through this lesson. ## Introduction -At a high level, the process of creating machine learning (ML) systems involves several steps: +On a high level, the craft of creating machine learning (ML) processes is comprised of a number of steps: -1. **Define the question**. Most ML processes begin with a question that cannot be answered using a simple conditional program or rules-based system. These questions often focus on making predictions based on a dataset. -2. **Collect and prepare data**. To answer your question, you need data. The quality and sometimes the quantity of your data will determine how well you can address your initial question. Visualizing data is an important part of this phase. This phase also includes splitting the data into training and testing sets to build a model. -3. **Select a training method**. Depending on your question and the nature of your data, you need to choose how to train a model to best represent your data and make accurate predictions. This step often requires specific expertise and a significant amount of experimentation. -4. **Train the model**. Using your training data, you'll apply various algorithms to train a model to recognize patterns in the data. The model may use internal weights that can be adjusted to prioritize certain parts of the data over others to improve its performance. -5. **Evaluate the model**. You use unseen data (your testing data) from your dataset to assess how well the model performs. -6. **Tune parameters**. Based on the model's performance, you can repeat the process using different parameters or variables that control the behavior of the algorithms used to train the model. -7. **Make predictions**. Use new inputs to test the model's accuracy. +1. **Decide on the question**. Most ML processes start by asking a question that cannot be answered by a simple conditional program or rules-based engine. These questions often revolve around predictions based on a collection of data. +2. **Collect and prepare data**. To be able to answer your question, you need data. The quality and, sometimes, quantity of your data will determine how well you can answer your initial question. Visualizing data is an important aspect of this phase. This phase also includes splitting the data into a training and testing group to build a model. +3. **Choose a training method**. Depending on your question and the nature of your data, you need to choose how you want to train a model to best reflect your data and make accurate predictions against it. This is the part of your ML process that requires specific expertise and, often, a considerable amount of experimentation. +4. **Train the model**. Using your training data, you'll use various algorithms to train a model to recognize patterns in the data. The model might leverage internal weights that can be adjusted to privilege certain parts of the data over others to build a better model. +5. **Evaluate the model**. You use never before seen data (your testing data) from your collected set to see how the model is performing. +6. **Parameter tuning**. Based on the performance of your model, you can redo the process using different parameters, or variables, that control the behavior of the algorithms used to train the model. +7. **Predict**. Use new inputs to test the accuracy of your model. ## What question to ask -Computers excel at uncovering hidden patterns in data. This capability is particularly useful for researchers who have questions about a specific domain that cannot be easily answered by creating a rules-based system. For example, in an actuarial task, a data scientist might create handcrafted rules to analyze the mortality rates of smokers versus non-smokers. +Computers are particularly skilled at discovering hidden patterns in data. This utility is very helpful for researchers who have questions about a given domain that cannot be easily answered by creating a conditionally-based rules engine. Given an actuarial task, for example, a data scientist might be able to construct handcrafted rules around the mortality of smokers vs non-smokers. -However, when many other variables are introduced, an ML model might be more effective at predicting future mortality rates based on past health data. A more optimistic example could involve predicting the weather for April in a specific location using data such as latitude, longitude, climate change, proximity to the ocean, jet stream patterns, and more. +When many other variables are brought into the equation, however, a ML model might prove more efficient to predict future mortality rates based on past health history. A more cheerful example might be making weather predictions for the month of April in a given location based on data that includes latitude, longitude, climate change, proximity to the ocean, patterns of the jet stream, and more. -✅ This [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) on weather models provides a historical perspective on using ML for weather analysis. +✅ This [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) on weather models offers a historical perspective for using ML in weather analysis. ## Pre-building tasks -Before you start building your model, there are several tasks you need to complete. To test your question and form a hypothesis based on the model's predictions, you need to identify and configure several elements. +Before starting to build your model, there are several tasks you need to complete. To test your question and form a hypothesis based on a model's predictions, you need to identify and configure several elements. ### Data -To answer your question with confidence, you need a sufficient amount of data of the right type. At this stage, you need to: +To be able to answer your question with any kind of certainty, you need a good amount of data of the right type. There are two things you need to do at this point: -- **Collect data**. Referencing the previous lesson on fairness in data analysis, collect your data carefully. Be mindful of its sources, any inherent biases, and document its origin. -- **Prepare data**. Data preparation involves several steps. You may need to combine and normalize data from different sources. You can enhance the quality and quantity of your data through methods like converting strings to numbers (as seen in [Clustering](../../5-Clustering/1-Visualize/README.md)). You might also generate new data based on the original (as seen in [Classification](../../4-Classification/1-Introduction/README.md)). You can clean and edit the data (as we will do before the [Web App](../../3-Web-App/README.md) lesson). Additionally, you may need to randomize and shuffle the data depending on your training techniques. +- **Collect data**. Keeping in mind the previous lesson on fairness in data analysis, collect your data with care. Be aware of the sources of this data, any inherent biases it might have, and document its origin. +- **Prepare data**. There are several steps in the data preparation process. You might need to collate data and normalize it if it comes from diverse sources. You can improve the data's quality and quantity through various methods such as converting strings to numbers (as we do in [Clustering](../../5-Clustering/1-Visualize/README.md)). You might also generate new data, based on the original (as we do in [Classification](../../4-Classification/1-Introduction/README.md)). You can clean and edit the data (as we will prior to the [Web App](../../3-Web-App/README.md) lesson). Finally, you might also need to randomize it and shuffle it, depending on your training techniques. -✅ After collecting and processing your data, take a moment to evaluate whether its structure will allow you to address your intended question. Sometimes, the data may not perform well for your specific task, as we discover in our [Clustering](../../5-Clustering/1-Visualize/README.md) lessons! +✅ After collecting and processing your data, take a moment to see if its shape will allow you to address your intended question. It may be that the data will not perform well in your given task, as we discover in our [Clustering](../../5-Clustering/1-Visualize/README.md) lessons! ### Features and Target -A [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) is a measurable property of your data. In many datasets, it is represented as a column heading like 'date,' 'size,' or 'color.' Feature variables, often represented as `X` in code, are the input variables used to train the model. +A [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) is a measurable property of your data. In many datasets it is expressed as a column heading like 'date' 'size' or 'color'. Your feature variable, usually represented as `X` in code, represents the input variable which will be used to train a model. -A target is what you are trying to predict. Targets, usually represented as `y` in code, are the answers to the questions you are asking of your data: In December, what **color** pumpkins will be cheapest? In San Francisco, which neighborhoods will have the best real estate **prices**? Sometimes, the target is also referred to as the label attribute. +A target is a thing you are trying to predict. Target, usually represented as `y` in code, represents the answer to the question you are trying to ask of your data: in December, what **color** pumpkins will be cheapest? in San Francisco, what neighborhoods will have the best real estate **price**? Sometimes target is also referred to as a label attribute. ### Selecting your feature variable -🎓 **Feature Selection and Feature Extraction** How do you decide which variables to use when building a model? You will likely go through a process of feature selection or feature extraction to identify the best variables for the most effective model. These processes differ: "Feature extraction creates new features from functions of the original features, whereas feature selection returns a subset of the features." ([source](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Feature Selection and Feature Extraction** How do you know which variable to choose when building a model? You'll probably go through a process of feature selection or feature extraction to choose the right variables for the most performant model. They're not the same thing, however: "Feature extraction creates new features from functions of the original features, whereas feature selection returns a subset of the features." ([source](https://wikipedia.org/wiki/Feature_selection)) ### Visualize your data -Visualization is a powerful tool in a data scientist's toolkit. Libraries like Seaborn or MatPlotLib allow you to represent your data visually, which can help uncover hidden correlations that you can leverage. Visualizations can also reveal bias or imbalances in your data (as seen in [Classification](../../4-Classification/2-Classifiers-1/README.md)). +An important aspect of the data scientist's toolkit is the power to visualize data using several excellent libraries such as Seaborn or MatPlotLib. Representing your data visually might allow you to uncover hidden correlations that you can leverage. Your visualizations might also help you to uncover bias or unbalanced data (as we discover in [Classification](../../4-Classification/2-Classifiers-1/README.md)). ### Split your dataset -Before training, you need to divide your dataset into two or more parts of unequal size that still represent the data well. +Prior to training, you need to split your dataset into two or more parts of unequal size that still represent the data well. -- **Training**. This portion of the dataset is used to train your model. It typically constitutes the majority of the original dataset. -- **Testing**. A test dataset is an independent subset of the original data used to validate the model's performance. -- **Validating**. A validation set is a smaller independent subset used to fine-tune the model's hyperparameters or architecture to improve its performance. Depending on the size of your data and the question you are addressing, you may not need to create this third set (as noted in [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Training**. This part of the dataset is fit to your model to train it. This set constitutes the majority of the original dataset. +- **Testing**. A test dataset is an independent group of data, often gathered from the original data, that you use to confirm the performance of the built model. +- **Validating**. A validation set is a smaller independent group of examples that you use to tune the model's hyperparameters, or architecture, to improve the model. Depending on your data's size and the question you are asking, you might not need to build this third set (as we note in [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). ## Building a model -Using your training data, your goal is to build a model—a statistical representation of your data—using various algorithms to **train** it. Training a model exposes it to data, enabling it to identify patterns, validate them, and accept or reject them. +Using your training data, your goal is to build a model, or a statistical representation of your data, using various algorithms to **train** it. Training a model exposes it to data and allows it to make assumptions about perceived patterns it discovers, validates, and accepts or rejects. ### Decide on a training method -Depending on your question and the nature of your data, you will select a method to train the model. By exploring [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html)—which we use in this course—you can examine various ways to train a model. Depending on your experience, you may need to try multiple methods to build the best model. Data scientists often evaluate a model's performance by testing it with unseen data, checking for accuracy, bias, and other issues, and selecting the most suitable training method for the task. +Depending on your question and the nature of your data, you will choose a method to train it. Stepping through [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html) - which we use in this course - you can explore many ways to train a model. Depending on your experience, you might have to try several different methods to build the best model. You are likely to go through a process whereby data scientists evaluate the performance of a model by feeding it unseen data, checking for accuracy, bias, and other quality-degrading issues, and selecting the most appropriate training method for the task at hand. ### Train a model -With your training data, you are ready to 'fit' it to create a model. In many ML libraries, you will encounter the code 'model.fit'—this is where you input your feature variable as an array of values (usually 'X') and a target variable (usually 'y'). +Armed with your training data, you are ready to 'fit' it to create a model. You will notice that in many ML libraries you will find the code 'model.fit' - it is at this time that you send in your feature variable as an array of values (usually 'X') and a target variable (usually 'y'). ### Evaluate the model -Once the training process is complete (it may require many iterations, or 'epochs,' to train a large model), you can evaluate the model's quality using test data to measure its performance. This test data is a subset of the original data that the model has not previously analyzed. You can generate a table of metrics to assess the model's quality. +Once the training process is complete (it can take many iterations, or 'epochs', to train a large model), you will be able to evaluate the model's quality by using test data to gauge its performance. This data is a subset of the original data that the model has not previously analyzed. You can print out a table of metrics about your model's quality. 🎓 **Model fitting** -In machine learning, model fitting refers to how accurately the model's underlying function analyzes data it has not encountered before. +In the context of machine learning, model fitting refers to the accuracy of the model's underlying function as it attempts to analyze data with which it is not familiar. -🎓 **Underfitting** and **overfitting** are common issues that reduce a model's quality. An underfit model fails to analyze both its training data and unseen data accurately. An overfit model performs too well on training data because it has learned the data's details and noise excessively. Both scenarios lead to poor predictions. +🎓 **Underfitting** and **overfitting** are common problems that degrade the quality of the model, as the model fits either not well enough or too well. This causes the model to make predictions either too closely aligned or too loosely aligned with its training data. An overfit model predicts training data too well because it has learned the data's details and noise too well. An underfit model is not accurate as it can neither accurately analyze its training data nor data it has not yet 'seen'. -![overfitting model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/en/overfitting.1c132d92bfd93cb6.webp) > Infographic by [Jen Looper](https://twitter.com/jenlooper) ## Parameter tuning -After initial training, evaluate the model's quality and consider improving it by adjusting its 'hyperparameters.' Learn more about this process [in the documentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Once your initial training is complete, observe the quality of the model and consider improving it by tweaking its 'hyperparameters'. Read more about the process [in the documentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Prediction -This is the stage where you use entirely new data to test your model's accuracy. In an applied ML setting, such as building web applications for production, this process might involve gathering user input (e.g., a button press) to set a variable and send it to the model for inference or evaluation. +This is the moment where you can use completely new data to test your model's accuracy. In an 'applied' ML setting, where you are building web assets to use the model in production, this process might involve gathering user input (a button press, for example) to set a variable and send it to the model for inference, or evaluation. -In these lessons, you will learn how to prepare, build, test, evaluate, and predict—covering all the steps of a data scientist and more as you progress toward becoming a 'full stack' ML engineer. +In these lessons, you will discover how to use these steps to prepare, build, test, evaluate, and predict - all the gestures of a data scientist and more, as you progress in your journey to become a 'full stack' ML engineer. --- ## 🚀Challenge -Create a flow chart illustrating the steps of an ML practitioner. Where do you see yourself in this process right now? Where do you anticipate challenges? What seems straightforward to you? +Draw a flow chart reflecting the steps of a ML practitioner. Where do you see yourself right now in the process? Where do you predict you will find difficulty? What seems easy to you? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) ## Review & Self Study -Search online for interviews with data scientists discussing their daily work. Here is [one](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Search online for interviews with data scientists who discuss their daily work. Here is [one](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Assignment @@ -119,5 +119,7 @@ Search online for interviews with data scientists discussing their daily work. H --- -**Disclaimer**: -This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation. \ No newline at end of file + +**Disclaimer**: +This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. + \ No newline at end of file diff --git a/translations/en/2-Regression/3-Linear/README.md b/translations/en/2-Regression/3-Linear/README.md index db874423e8..28be7c4c15 100644 --- a/translations/en/2-Regression/3-Linear/README.md +++ b/translations/en/2-Regression/3-Linear/README.md @@ -2,11 +2,11 @@ ## Beginner Note -Linear regression is used when we want to predict a **numerical value** (for example, house price, temperature, or sales). +Linear regression is used when we want to predict a **numerical value** (for example, house price, temperature, or sales). It works by finding a straight line that best represents the relationship between input features and the output. -In this lesson, we focus on understanding the concept before exploring more advanced regression techniques. -![Linear vs polynomial regression infographic](../../../../translated_images/en/linear-polynomial.5523c7cb6576ccab.webp) +In this lesson, we focus on understanding the concept before exploring more advanced regression techniques. +![Linear vs polynomial regression infographic](../../../../translated_images/en/linear-polynomial.5523c7cb6576ccab.webp) > Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) @@ -130,7 +130,7 @@ print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -It looks like the correlation is pretty small, -0.15 by `Month` and -0.17 by the `DayOfMonth`, but there could be another important relationship. It looks like there are different clusters of prices corresponding to different pumpkin varieties. To confirm this hypothesis, let's plot each pumpkin category using a different color. By passing an `ax` parameter to the `scatter` plotting function we can plot all points on the same graph: +It looks like the correlation is pretty small, -0.15 by `Month` and -0.17 by the `DayOfYear`, but there could be another important relationship. It looks like there are different clusters of prices corresponding to different pumpkin varieties. To confirm this hypothesis, let's plot each pumpkin category using a different color. By passing an `ax` parameter to the `scatter` plotting function we can plot all points on the same graph: ```python ax=None @@ -258,11 +258,33 @@ pipeline.fit(X_train,y_train) Using `PolynomialFeatures(2)` means that we will include all second-degree polynomials from the input data. In our case it will just mean `DayOfYear`2, but given two input variables X and Y, this will add X2, XY and Y2. We may also use higher degree polynomials if we want. -Pipelines can be used in the same manner as the original `LinearRegression` object, i.e. we can `fit` the pipeline, and then use `predict` to get the prediction results. Here is the graph showing test data, and the approximation curve: +Pipelines can be used in the same manner as the original `LinearRegression` object, i.e. we can `fit` the pipeline, and then use `predict` to get the prediction results: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +To plot the smooth approximation curve, we use `np.linspace` to create a uniform range of input values, rather than plotting directly on the unordered test data (which would produce a zigzag line): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Here is the graph showing test data, and the approximation curve: Polynomial regression -Using Polynomial Regression, we can get slightly lower MSE and higher determination, but not significantly. We need to take into account other features! +Using Polynomial Regression, we can get slightly lower RMSE and higher determination, but not significantly. We need to take into account other features! > You can see that the minimal pumpkin prices are observed somewhere around Halloween. How can you explain this? @@ -319,7 +341,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Here we also take into account `City` and `Package` type, which gives us MSE 2.84 (10%), and determination 0.94! +Here we also take into account `City` and `Package` type, which gives us RMSE 2.84 (10.5%), and determination 0.94! ## Putting it all together @@ -343,17 +365,17 @@ pipeline.fit(X_train,y_train) # predict results for test data pred = pipeline.predict(X_test) -# calculate MSE and determination -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calculate RMSE and determination +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -This should give us the best determination coefficient of almost 97%, and MSE=2.23 (~8% prediction error). +This should give us the best determination coefficient of almost 97%, and RMSE=2.23 (~8% prediction error). -| Model | MSE | Determination | +| Model | RMSE | Determination | |-------|-----|---------------| | `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | diff --git a/translations/en/2-Regression/3-Linear/solution/notebook.ipynb b/translations/en/2-Regression/3-Linear/solution/notebook.ipynb index 0bdfe23d1d..7d4dbcf7f1 100644 --- a/translations/en/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/en/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## Linear and Polynomial Regression for Pumpkin Pricing - Lesson 3\n", "\n", - "Load the necessary libraries and dataset. Transform the data into a dataframe containing a subset of the information:\n", + "Load up required libraries and dataset. Convert the data to a dataframe containing a subset of the data: \n", "\n", - "- Only include pumpkins priced by the bushel\n", - "- Convert the date into a month\n", - "- Calculate the price as the average of the high and low prices\n", - "- Adjust the price to reflect the cost per bushel quantity\n" + "- Only get pumpkins priced by the bushel\n", + "- Convert the date to a month\n", + "- Calculate the price to be an average of high and low prices\n", + "- Convert the price to reflect the pricing by bushel quantity\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A scatterplot reminds us that we only have month data from August through December. We probably need more data to be able to draw conclusions in a linear fashion.\n" + "A scatterplot reminds us that we only have data from August through December. We probably need more data to be able to draw conclusions in a linear fashion.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Let's see if there is correlation:\n" + ] }, { "cell_type": "code", @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "For the time being, let's concentrate only on one variety - **pie type**.\n" + ] }, { "cell_type": "code", @@ -720,9 +724,9 @@ "source": [ "### Polynomial Regression\n", "\n", - "Sometimes the relationship between features and outcomes is naturally non-linear. For instance, pumpkin prices might be high in winter (months=1,2), drop during summer (months=5-7), and then rise again. Linear regression cannot accurately capture this pattern.\n", + "Sometimes the relationship between features and the outcomes is inherently non-linear. For example, pumpkin prices might be high in winter (months=1,2), then drop over summer (months=5-7), and then rise again. Linear regression is unable to find this relationship accurately.\n", "\n", - "In such cases, we can consider adding additional features. A straightforward approach is to use polynomials derived from the input features, leading to **polynomial regression**. In Scikit Learn, polynomial features can be automatically pre-computed using pipelines:\n" + "In this case, we may consider adding extra features. A simple way is to use polynomials of the input features, which would result in **polynomial regression**. In Scikit Learn, we can automatically pre-compute polynomial features using pipelines: \n" ] }, { @@ -777,8 +781,11 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { @@ -787,12 +794,12 @@ "source": [ "### Encoding varieties\n", "\n", - "In an ideal scenario, we want to predict prices for different pumpkin varieties using the same model. To account for variety, we first need to convert it into numeric form, or **encode** it. There are several ways to do this:\n", + "In the ideal world, we want to be able to predict prices for different pumpkin varieties using the same model. To take variety into account, we first need to convert it to numeric form, or **encode**. There are several ways we can do it:\n", "\n", - "* Simple numeric encoding creates a table of different varieties and replaces the variety name with an index from that table. However, this approach is not ideal for linear regression because linear regression interprets the numeric value of the index, and the numeric value likely does not have a meaningful correlation with the price.\n", - "* One-hot encoding replaces the `Variety` column with 4 separate columns, one for each variety. Each column will contain a 1 if the corresponding row matches the given variety, and a 0 otherwise.\n", + "* Simple numeric encoding that will build a table of different varieties, and then replace variety name by an index in that table. This is not the best idea for linear regression, because linear regression takes the numeric value of the index into account, and the numeric value is likely not to correlate numerically with the price.\n", + "* One-hot encoding, which will replace `Variety` column by 4 different columns, one for each variety, that will contain 1 if the corresponding row is of given variety, and 0 otherwise.\n", "\n", - "The code below demonstrates how to one-hot encode a variety:\n" + "The code below shows how we can can one-hot encode a variety:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Linear Regression on Variety\n", + "### Linear Regression on Variety \n", "\n", - "We will now use the same code as above, but instead of `DayOfYear`, we will use our one-hot-encoded variety as input:\n" + "We will now use the same code as above, but instead of `DayOfYear` we will use our one-hot-encoded variety as input:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polynomial Regression\n", "\n", - "Polynomial regression can also be applied to categorical features that have been one-hot-encoded. The process for training polynomial regression would essentially remain the same as described earlier.\n" + "Polynomial regression can also be used with categorical features that are one-hot-encoded. The code to train polynomial regression would essentially be the same as we have seen above.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Disclaimer**: \nThis document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.\n" + "---\n\n\n**Disclaimer**:\nThis document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T15:28:18+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "en" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/en/4-Classification/3-Classifiers-2/solution/notebook.ipynb b/translations/en/4-Classification/3-Classifiers-2/solution/notebook.ipynb index bf03eede74..7aedd23c7f 100644 --- a/translations/en/4-Classification/3-Classifiers-2/solution/notebook.ipynb +++ b/translations/en/4-Classification/3-Classifiers-2/solution/notebook.ipynb @@ -7,46 +7,23 @@ "cell_type": "markdown", "metadata": {} }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dataset Overview\n", + "This dataset contains individual samples (for example, recipes) labeled by cuisine.\n", + "Each row corresponds to a single sample/record, and the columns represent ingredients or other attributes used for classification, including the `cuisine` label.\n" + ] + }, { "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", - "0 0 indian 0 0 0 0 0 \n", - "1 1 indian 1 0 0 0 0 \n", - "2 2 indian 0 0 0 0 0 \n", - "3 3 indian 0 0 0 0 0 \n", - "4 4 indian 0 0 0 0 0 \n", - "\n", - " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", - "0 0 0 0 ... 0 0 0 \n", - "1 0 0 0 ... 0 0 0 \n", - "2 0 0 0 ... 0 0 0 \n", - "3 0 0 0 ... 0 0 0 \n", - "4 0 0 0 ... 0 0 0 \n", - "\n", - " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", - "0 0 0 0 0 0 0 0 \n", - "1 0 0 0 0 0 0 0 \n", - "2 0 0 0 0 0 0 0 \n", - "3 0 0 0 0 0 0 0 \n", - "4 0 0 0 0 0 1 0 \n", - "\n", - "[5 rows x 382 columns]" - ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" - }, - "metadata": {}, - "execution_count": 1 - } - ], + "outputs": [], "source": [ "import pandas as pd\n", + "# Load dataset containing cuisine features\n", "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", "cuisines_df.head()" ] @@ -263,7 +240,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**Disclaimer**:\nThis document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.\n\n" + "---\n\n\n**Disclaimer**:\nThis document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.\n\n" ] } ], diff --git a/translations/es/.co-op-translator.json b/translations/es/.co-op-translator.json index aac701b79f..10cdb41db2 100644 --- a/translations/es/.co-op-translator.json +++ b/translations/es/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "es" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-04T22:21:15+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:34:47+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "es" }, @@ -90,8 +90,8 @@ "language_code": "es" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T15:47:07+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:34:21+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "es" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "es" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:30:51+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "es" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T22:12:57+00:00", @@ -210,8 +216,8 @@ "language_code": "es" }, "4-Classification/3-Classifiers-2/solution/notebook.ipynb": { - "original_hash": "70f41fe4fd4253adb44cd9d291406e4f", - "translation_date": "2026-02-28T08:13:15+00:00", + "original_hash": "382c1f542f31fcc58137ce6d14751413", + "translation_date": "2026-04-26T18:30:59+00:00", "source_file": "4-Classification/3-Classifiers-2/solution/notebook.ipynb", "language_code": "es" }, diff --git a/translations/es/1-Introduction/4-techniques-of-ML/README.md b/translations/es/1-Introduction/4-techniques-of-ML/README.md index cd3b96e73a..69b0cb0a99 100644 --- a/translations/es/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/es/1-Introduction/4-techniques-of-ML/README.md @@ -1,58 +1,58 @@ # Técnicas de Aprendizaje Automático -El proceso de construir, usar y mantener modelos de aprendizaje automático y los datos que utilizan es muy diferente de muchos otros flujos de trabajo de desarrollo. En esta lección, desmitificaremos el proceso y describiremos las principales técnicas que necesitas conocer. Tú: +El proceso de construir, usar y mantener modelos de aprendizaje automático y los datos que utilizan es un proceso muy diferente de muchos otros flujos de trabajo de desarrollo. En esta lección, desmitificaremos el proceso y describiremos las principales técnicas que necesitas conocer. Vas a: -- Comprenderás los procesos que sustentan el aprendizaje automático a un nivel general. -- Explorarás conceptos básicos como 'modelos', 'predicciones' y 'datos de entrenamiento'. +- Entender los procesos que sustentan el aprendizaje automático a un nivel alto. +- Explorar conceptos básicos como 'modelos', 'predicciones' y 'datos de entrenamiento'. -## [Cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ml/) +## [Cuestionario previo a la clase](https://ff-quizzes.netlify.app/en/ml/) -[![ML para principiantes - Técnicas de Aprendizaje Automático](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML para principiantes - Técnicas de Aprendizaje Automático") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Haz clic en la imagen de arriba para ver un breve video sobre esta lección. +> 🎥 Haz clic en la imagen de arriba para un video corto que recorre esta lección. ## Introducción -A un nivel general, el arte de crear procesos de aprendizaje automático (ML) se compone de varios pasos: +A un nivel general, el arte de crear procesos de aprendizaje automático (ML) consta de varios pasos: -1. **Decidir la pregunta**. La mayoría de los procesos de ML comienzan formulando una pregunta que no puede ser respondida mediante un programa condicional simple o un motor basado en reglas. Estas preguntas suelen girar en torno a predicciones basadas en una colección de datos. -2. **Recopilar y preparar datos**. Para poder responder a tu pregunta, necesitas datos. La calidad y, a veces, la cantidad de tus datos determinarán qué tan bien puedes responder a tu pregunta inicial. Visualizar los datos es un aspecto importante de esta fase. Esta fase también incluye dividir los datos en un grupo de entrenamiento y prueba para construir un modelo. -3. **Elegir un método de entrenamiento**. Dependiendo de tu pregunta y la naturaleza de tus datos, necesitas elegir cómo deseas entrenar un modelo para reflejar mejor tus datos y hacer predicciones precisas. Esta es la parte de tu proceso de ML que requiere experiencia específica y, a menudo, una cantidad considerable de experimentación. -4. **Entrenar el modelo**. Usando tus datos de entrenamiento, utilizarás varios algoritmos para entrenar un modelo que reconozca patrones en los datos. El modelo puede aprovechar pesos internos que se ajustan para privilegiar ciertas partes de los datos sobre otras y construir un mejor modelo. -5. **Evaluar el modelo**. Utilizas datos nunca antes vistos (tus datos de prueba) de tu conjunto recopilado para ver cómo está funcionando el modelo. -6. **Ajuste de parámetros**. Basándote en el rendimiento de tu modelo, puedes repetir el proceso utilizando diferentes parámetros o variables que controlan el comportamiento de los algoritmos utilizados para entrenar el modelo. +1. **Decidir la pregunta**. La mayoría de los procesos de ML comienzan con una pregunta que no puede ser respondida por un programa condicional simple o un motor basado en reglas. Estas preguntas a menudo giran en torno a predicciones basadas en una colección de datos. +2. **Recopilar y preparar datos**. Para poder responder a tu pregunta, necesitas datos. La calidad y, a veces, la cantidad de tus datos determinarán qué tan bien puedes responder a tu pregunta inicial. Visualizar datos es un aspecto importante de esta fase. Esta fase también incluye dividir los datos en un grupo de entrenamiento y otro de prueba para construir un modelo. +3. **Elegir un método de entrenamiento**. Dependiendo de tu pregunta y la naturaleza de tus datos, necesitas elegir cómo quieres entrenar un modelo para reflejar mejor tus datos y hacer predicciones precisas. Esta es la parte de tu proceso de ML que requiere experiencia específica y, a menudo, una cantidad considerable de experimentación. +4. **Entrenar el modelo**. Usando tus datos de entrenamiento, utilizarás varios algoritmos para entrenar un modelo para reconocer patrones en los datos. El modelo podría aprovechar pesos internos que pueden ajustarse para privilegiar ciertas partes de los datos sobre otras para construir un mejor modelo. +5. **Evaluar el modelo**. Usas datos nunca antes vistos (tus datos de prueba) de tu conjunto recopilado para ver cómo está funcionando el modelo. +6. **Ajuste de parámetros**. Basado en el desempeño de tu modelo, puedes rehacer el proceso usando diferentes parámetros, o variables, que controlan el comportamiento de los algoritmos usados para entrenar el modelo. 7. **Predecir**. Usa nuevas entradas para probar la precisión de tu modelo. ## Qué pregunta hacer -Las computadoras son particularmente hábiles para descubrir patrones ocultos en los datos. Esta utilidad es muy útil para los investigadores que tienen preguntas sobre un dominio dado que no pueden ser respondidas fácilmente creando un motor basado en reglas condicionales. Dado un trabajo actuarial, por ejemplo, un científico de datos podría construir reglas manuales sobre la mortalidad de fumadores frente a no fumadores. +Las computadoras son particularmente hábiles para descubrir patrones ocultos en los datos. Esta utilidad es muy útil para investigadores que tienen preguntas sobre un dominio dado que no pueden ser respondidas fácilmente creando un motor de reglas basado en condiciones. Dada una tarea actuarial, por ejemplo, un científico de datos podría construir reglas hechas a mano alrededor de la mortalidad de fumadores vs no fumadores. -Sin embargo, cuando se introducen muchas otras variables en la ecuación, un modelo de ML podría resultar más eficiente para predecir tasas de mortalidad futuras basándose en historiales de salud pasados. Un ejemplo más alegre podría ser hacer predicciones meteorológicas para el mes de abril en una ubicación dada basándose en datos que incluyen latitud, longitud, cambio climático, proximidad al océano, patrones de la corriente en chorro y más. +Cuando muchas otras variables se incorporan a la ecuación, sin embargo, un modelo de ML podría resultar más eficiente para predecir las tasas de mortalidad futuras basadas en el historial de salud pasado. Un ejemplo más alegre podría ser hacer predicciones climáticas para el mes de abril en una ubicación dada basándose en datos que incluyen latitud, longitud, cambio climático, proximidad al océano, patrones de la corriente en chorro, y más. -✅ Este [conjunto de diapositivas](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos meteorológicos ofrece una perspectiva histórica sobre el uso de ML en el análisis del clima. +✅ Esta [presentación](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos climáticos ofrece una perspectiva histórica del uso de ML en el análisis del clima. ## Tareas previas a la construcción -Antes de comenzar a construir tu modelo, hay varias tareas que necesitas completar. Para probar tu pregunta y formular una hipótesis basada en las predicciones de un modelo, necesitas identificar y configurar varios elementos. +Antes de comenzar a construir tu modelo, hay varias tareas que necesitas completar. Para probar tu pregunta y formar una hipótesis basada en las predicciones del modelo, necesitas identificar y configurar varios elementos. ### Datos -Para poder responder a tu pregunta con algún tipo de certeza, necesitas una buena cantidad de datos del tipo correcto. Hay dos cosas que necesitas hacer en este punto: +Para poder responder a tu pregunta con alguna certeza, necesitas una buena cantidad de datos del tipo correcto. Hay dos cosas que necesitas hacer en este punto: -- **Recopilar datos**. Teniendo en cuenta la lección anterior sobre equidad en el análisis de datos, recopila tus datos con cuidado. Sé consciente de las fuentes de estos datos, cualquier sesgo inherente que puedan tener y documenta su origen. -- **Preparar datos**. Hay varios pasos en el proceso de preparación de datos. Es posible que necesites compilar datos y normalizarlos si provienen de fuentes diversas. Puedes mejorar la calidad y cantidad de los datos mediante varios métodos, como convertir cadenas en números (como hacemos en [Clustering](../../5-Clustering/1-Visualize/README.md)). También puedes generar nuevos datos basados en los originales (como hacemos en [Clasificación](../../4-Classification/1-Introduction/README.md)). Puedes limpiar y editar los datos (como haremos antes de la lección de [Aplicación Web](../../3-Web-App/README.md)). Finalmente, también podrías necesitar aleatorizarlos y mezclarlos, dependiendo de tus técnicas de entrenamiento. +- **Recopilar datos**. Teniendo en cuenta la lección anterior sobre la equidad en el análisis de datos, recopila tus datos con cuidado. Sé consciente de las fuentes de estos datos, cualquier sesgo inherente que puedan tener y documenta su origen. +- **Preparar datos**. Hay varios pasos en el proceso de preparación de datos. Puede que necesites recopilar datos y normalizarlos si provienen de fuentes diversas. Puedes mejorar la calidad y cantidad de los datos mediante varios métodos, como convertir cadenas en números (como hacemos en [Agrupamiento](../../5-Clustering/1-Visualize/README.md)). También puedes generar nuevos datos basados en los originales (como hacemos en [Clasificación](../../4-Classification/1-Introduction/README.md)). Puedes limpiar y editar los datos (como haremos antes de la lección de [Aplicación Web](../../3-Web-App/README.md)). Por último, también puedes necesitar aleatorizarlos y mezclarlos, dependiendo de tus técnicas de entrenamiento. -✅ Después de recopilar y procesar tus datos, tómate un momento para ver si su forma te permitirá abordar tu pregunta. Puede ser que los datos no funcionen bien en tu tarea dada, como descubrimos en nuestras lecciones de [Clustering](../../5-Clustering/1-Visualize/README.md). +✅ Después de recopilar y procesar tus datos, tómate un momento para ver si su forma te permitirá abordar tu pregunta pretendida. Puede ser que los datos no funcionen bien en la tarea dada, como descubrimos en nuestras lecciones de [Agrupamiento](../../5-Clustering/1-Visualize/README.md). -### Características y Objetivo +### Características y objetivo -Una [característica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) es una propiedad medible de tus datos. En muchos conjuntos de datos se expresa como un encabezado de columna como 'fecha', 'tamaño' o 'color'. Tu variable de característica, usualmente representada como `X` en el código, representa la variable de entrada que se usará para entrenar el modelo. +Una [característica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) es una propiedad medible de tus datos. En muchos conjuntos de datos se expresa como un encabezado de columna como 'fecha', 'tamaño' o 'color'. Tu variable característica, generalmente representada como `X` en el código, representa la variable de entrada que se usará para entrenar un modelo. -Un objetivo es aquello que estás tratando de predecir. El objetivo, usualmente representado como `y` en el código, representa la respuesta a la pregunta que estás tratando de hacer a tus datos: en diciembre, ¿qué **color** de calabazas será el más barato? En San Francisco, ¿qué vecindarios tendrán el mejor **precio** inmobiliario? A veces el objetivo también se denomina atributo de etiqueta. +Un objetivo es algo que estás tratando de predecir. El objetivo, generalmente representado como `y` en el código, representa la respuesta a la pregunta que intentas hacer a tus datos: en diciembre, ¿qué **color** de calabazas será el más barato? en San Francisco, ¿qué vecindarios tendrán el mejor **precio** inmobiliario? A veces el objetivo también se denomina atributo etiqueta. -### Selección de tu variable de característica +### Seleccionar tu variable característica -🎓 **Selección de Características y Extracción de Características** ¿Cómo sabes qué variable elegir al construir un modelo? Probablemente pasarás por un proceso de selección de características o extracción de características para elegir las variables correctas para el modelo más eficiente. Sin embargo, no son lo mismo: "La extracción de características crea nuevas características a partir de funciones de las características originales, mientras que la selección de características devuelve un subconjunto de las características." ([fuente](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Selección de características y extracción de características** ¿Cómo sabes qué variable elegir al construir un modelo? Probablemente pasarás por un proceso de selección o extracción de características para elegir las variables correctas para el modelo más eficiente. Sin embargo, no es lo mismo: "La extracción de características crea nuevas características a partir de funciones de las características originales, mientras que la selección de características devuelve un subconjunto de las características." ([fuente](https://wikipedia.org/wiki/Feature_selection)) ### Visualiza tus datos @@ -60,35 +60,35 @@ Un aspecto importante del conjunto de herramientas del científico de datos es e ### Divide tu conjunto de datos -Antes de entrenar, necesitas dividir tu conjunto de datos en dos o más partes de tamaño desigual que aún representen bien los datos. +Antes del entrenamiento, necesitas dividir tu conjunto de datos en dos o más partes de tamaño desigual que aún representen bien los datos. - **Entrenamiento**. Esta parte del conjunto de datos se ajusta a tu modelo para entrenarlo. Este conjunto constituye la mayoría del conjunto de datos original. -- **Prueba**. Un conjunto de prueba es un grupo independiente de datos, a menudo recopilado del conjunto original, que utilizas para confirmar el rendimiento del modelo construido. -- **Validación**. Un conjunto de validación es un grupo independiente más pequeño de ejemplos que utilizas para ajustar los hiperparámetros o la arquitectura del modelo para mejorarlo. Dependiendo del tamaño de tus datos y la pregunta que estás haciendo, es posible que no necesites construir este tercer conjunto (como señalamos en [Pronóstico de Series Temporales](../../7-TimeSeries/1-Introduction/README.md)). +- **Prueba**. Un conjunto de prueba es un grupo independiente de datos, a menudo extraído de los datos originales, que usas para confirmar el rendimiento del modelo construido. +- **Validación**. Un conjunto de validación es un grupo independiente más pequeño de ejemplos que usas para ajustar los hiperparámetros o la arquitectura del modelo para mejorarlo. Dependiendo del tamaño de tus datos y la pregunta que estés haciendo, puede que no necesites construir este tercer conjunto (como anotamos en [Pronóstico de series temporales](../../7-TimeSeries/1-Introduction/README.md)). -## Construcción de un modelo +## Construir un modelo -Usando tus datos de entrenamiento, tu objetivo es construir un modelo, o una representación estadística de tus datos, utilizando varios algoritmos para **entrenarlo**. Entrenar un modelo lo expone a datos y le permite hacer suposiciones sobre patrones percibidos que descubre, valida y acepta o rechaza. +Usando tus datos de entrenamiento, tu objetivo es construir un modelo, o una representación estadística de tus datos, usando varios algoritmos para **entrenarlo**. Entrenar un modelo lo expone a datos y le permite hacer suposiciones sobre patrones percibidos que descubre, valida y acepta o rechaza. ### Decidir un método de entrenamiento -Dependiendo de tu pregunta y la naturaleza de tus datos, elegirás un método para entrenarlo. Al recorrer la [documentación de Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que usamos en este curso - puedes explorar muchas formas de entrenar un modelo. Dependiendo de tu experiencia, es posible que tengas que probar varios métodos diferentes para construir el mejor modelo. Es probable que pases por un proceso en el que los científicos de datos evalúan el rendimiento de un modelo alimentándolo con datos no vistos, verificando su precisión, sesgo y otros problemas que degradan la calidad, y seleccionando el método de entrenamiento más apropiado para la tarea en cuestión. +Dependiendo de tu pregunta y la naturaleza de tus datos, elegirás un método para entrenarlo. Revisando la [documentación de Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que usamos en este curso - puedes explorar muchas maneras de entrenar un modelo. Dependiendo de tu experiencia, es posible que debas probar varios métodos diferentes para construir el mejor modelo. Probablemente pasarás por un proceso en el que los científicos de datos evalúan el rendimiento de un modelo alimentándolo con datos no vistos, verificando su precisión, sesgo y otros problemas que degradan la calidad, y seleccionando el método de entrenamiento más apropiado para la tarea en cuestión. ### Entrenar un modelo -Con tus datos de entrenamiento, estás listo para 'ajustarlo' y crear un modelo. Notarás que en muchas bibliotecas de ML encontrarás el código 'model.fit' - es en este momento que envías tu variable de característica como un arreglo de valores (usualmente 'X') y una variable objetivo (usualmente 'y'). +Armado con tus datos de entrenamiento, estás listo para 'ajustarlo' y crear un modelo. Notarás que en muchas bibliotecas de ML encontrarás el código 'model.fit': es en este momento cuando envías tu variable característica como un arreglo de valores (generalmente 'X') y una variable objetivo (generalmente 'y'). ### Evaluar el modelo -Una vez que el proceso de entrenamiento esté completo (puede tomar muchas iteraciones, o 'épocas', para entrenar un modelo grande), podrás evaluar la calidad del modelo utilizando datos de prueba para medir su rendimiento. Estos datos son un subconjunto de los datos originales que el modelo no ha analizado previamente. Puedes imprimir una tabla de métricas sobre la calidad de tu modelo. +Una vez que el proceso de entrenamiento está completo (puede tomar muchas iteraciones, o 'épocas', entrenar un modelo grande), podrás evaluar la calidad del modelo usando datos de prueba para medir su rendimiento. Estos datos son un subconjunto de los datos originales que el modelo no ha analizado previamente. Puedes imprimir una tabla de métricas sobre la calidad de tu modelo. 🎓 **Ajuste del modelo** En el contexto del aprendizaje automático, el ajuste del modelo se refiere a la precisión de la función subyacente del modelo mientras intenta analizar datos con los que no está familiarizado. -🎓 **Subajuste** y **sobreajuste** son problemas comunes que degradan la calidad del modelo, ya que el modelo se ajusta demasiado poco o demasiado bien. Esto hace que el modelo haga predicciones demasiado alineadas o demasiado poco alineadas con sus datos de entrenamiento. Un modelo sobreajustado predice los datos de entrenamiento demasiado bien porque ha aprendido demasiado bien los detalles y el ruido de los datos. Un modelo subajustado no es preciso ya que no puede analizar con precisión ni sus datos de entrenamiento ni los datos que aún no ha 'visto'. +🎓 **Subajuste** y **sobreajuste** son problemas comunes que degradan la calidad del modelo, ya que el modelo se ajusta demasiado poco o demasiado. Esto hace que el modelo haga predicciones demasiado alineadas o demasiado poco alineadas con sus datos de entrenamiento. Un modelo sobreajustado predice demasiado bien los datos de entrenamiento porque ha aprendido demasiado bien los detalles y el ruido de los datos. Un modelo subajustado no es preciso ya que no puede analizar con exactitud ni sus datos de entrenamiento ni datos que aún no ha 'visto'. -![modelo sobreajustado](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/es/overfitting.1c132d92bfd93cb6.webp) > Infografía por [Jen Looper](https://twitter.com/jenlooper) ## Ajuste de parámetros @@ -97,17 +97,17 @@ Una vez que tu entrenamiento inicial esté completo, observa la calidad del mode ## Predicción -Este es el momento en el que puedes usar datos completamente nuevos para probar la precisión de tu modelo. En un entorno de ML 'aplicado', donde estás construyendo activos web para usar el modelo en producción, este proceso podría implicar recopilar la entrada del usuario (por ejemplo, presionar un botón) para establecer una variable y enviarla al modelo para inferencia o evaluación. +Este es el momento en el que puedes usar datos completamente nuevos para probar la precisión de tu modelo. En un entorno de ML 'aplicado', donde estás construyendo activos web para usar el modelo en producción, este proceso podría involucrar captar la entrada del usuario (por ejemplo, presionar un botón) para establecer una variable y enviarla al modelo para inferencia o evaluación. -En estas lecciones, descubrirás cómo usar estos pasos para preparar, construir, probar, evaluar y predecir: todos los gestos de un científico de datos y más, mientras avanzas en tu camino para convertirte en un ingeniero de ML 'full stack'. +En estas lecciones, descubrirás cómo usar estos pasos para preparar, construir, probar, evaluar y predecir: todos los gestos de un científico de datos y más, a medida que avanzas en tu camino para convertirte en un ingeniero de ML 'full stack'. --- ## 🚀Desafío -Dibuja un diagrama de flujo que refleje los pasos de un practicante de ML. ¿Dónde te ves ahora en el proceso? ¿Dónde predices que encontrarás dificultades? ¿Qué te parece fácil? +Dibuja un diagrama de flujo que refleje los pasos de un practicante de ML. ¿Dónde te ves ahora mismo en el proceso? ¿Dónde predices que encontrarás dificultad? ¿Qué te parece fácil? -## [Cuestionario posterior a la lección](https://ff-quizzes.netlify.app/en/ml/) +## [Cuestionario posterior a la clase](https://ff-quizzes.netlify.app/en/ml/) ## Revisión y Autoestudio @@ -119,5 +119,7 @@ Busca en línea entrevistas con científicos de datos que hablen sobre su trabaj --- + **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción. \ No newline at end of file +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas derivadas del uso de esta traducción. + \ No newline at end of file diff --git a/translations/es/2-Regression/3-Linear/README.md b/translations/es/2-Regression/3-Linear/README.md index ff938ca160..4d96480650 100644 --- a/translations/es/2-Regression/3-Linear/README.md +++ b/translations/es/2-Regression/3-Linear/README.md @@ -1,126 +1,126 @@ -# Construir un modelo de regresión usando Scikit-learn: regresión de cuatro formas +# Construir un modelo de regresión usando Scikit-learn: regresión de cuatro maneras ## Nota para principiantes -La regresión lineal se usa cuando queremos predecir un **valor numérico** (por ejemplo, precio de una casa, temperatura o ventas). Funciona encontrando una línea recta que mejor representa la relación entre las características de entrada y la salida. +La regresión lineal se utiliza cuando queremos predecir un **valor numérico** (por ejemplo, precio de una casa, temperatura o ventas). Funciona encontrando una línea recta que mejor representa la relación entre las características de entrada y la salida. En esta lección, nos enfocamos en entender el concepto antes de explorar técnicas de regresión más avanzadas. -![Infografía de regresión lineal vs polinomial](../../../../translated_images/es/linear-polynomial.5523c7cb6576ccab.webp) +![Infografía de regresión lineal vs polinómica](../../../../translated_images/es/linear-polynomial.5523c7cb6576ccab.webp) > Infografía por [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Cuestionario previo a la clase](https://ff-quizzes.netlify.app/en/ml/) +## [Cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ml/) -> ### [Esta lección está disponible en R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Introducción +> ### [¡Esta lección está disponible en R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Introducción -Hasta ahora has explorado qué es la regresión con datos de muestra tomados del conjunto de datos de precios de calabazas que usaremos a lo largo de esta lección. También lo has visualizado usando Matplotlib. +Hasta ahora has explorado qué es la regresión con datos de ejemplo obtenidos del conjunto de datos de precios de calabazas que usaremos durante toda esta lección. También lo has visualizado usando Matplotlib. -Ahora estás listo para profundizar en la regresión para ML. Mientras que la visualización te permite entender los datos, el verdadero poder del Aprendizaje Automático proviene de _entrenar modelos_. Los modelos se entrenan con datos históricos para capturar automáticamente dependencias en los datos, y permiten predecir resultados para datos nuevos, que el modelo no ha visto antes. +Ahora estás listo para profundizar más en la regresión para ML. Mientras que la visualización te permite comprender los datos, el verdadero poder del Aprendizaje Automático proviene de _entrenar modelos_. Los modelos se entrenan con datos históricos para capturar automáticamente las dependencias de los datos, y te permiten predecir resultados para nuevos datos que el modelo no ha visto antes. -En esta lección, aprenderás más sobre dos tipos de regresión: _regresión lineal básica_ y _regresión polinómica_, junto con algo de la matemática subyacente a estas técnicas. Estos modelos nos permitirán predecir precios de calabazas dependiendo de distintas entradas. +En esta lección, aprenderás más sobre dos tipos de regresión: _regresión lineal básica_ y _regresión polinómica_, junto con algo de la matemática subyacente a estas técnicas. Estos modelos nos permitirán predecir precios de calabazas dependiendo de diferentes datos de entrada. -[![ML para principiantes – Entendiendo la Regresión Lineal](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML para principiantes – Entendiendo la Regresión Lineal") +[![ML para principiantes - Entendiendo la regresión lineal](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML para principiantes - Entendiendo la regresión lineal") -> 🎥 Haz clic en la imagen de arriba para un video corto que presenta la regresión lineal. +> 🎥 Haz clic en la imagen de arriba para un breve video introductorio de regresión lineal. -> A lo largo de este currículum, asumimos un conocimiento mínimo de matemáticas, y buscamos hacerlo accesible para estudiantes de otras áreas, así que presta atención a notas, 🧮 llamadas, diagramas y otras herramientas de aprendizaje que ayudarán en la comprensión. +> A lo largo de este currículo, asumimos conocimientos mínimos de matemáticas y buscamos hacerlo accesible para estudiantes provenientes de otros campos, así que presta atención a notas, 🧮 llamadas a la acción, diagramas y otras herramientas de aprendizaje para facilitar la comprensión. -### Prerrequisito +### Prerrequisitos -Ya deberías estar familiarizado con la estructura de los datos de calabazas que estamos examinando. Puedes encontrarlos precargados y pre-limpiados en el archivo _notebook.ipynb_ de esta lección. En el archivo, el precio de las calabazas se muestra por fanega en un nuevo dataframe. Asegúrate de poder ejecutar estos notebooks en kernels en Visual Studio Code. +Deberías estar familiarizado ya con la estructura de los datos de calabaza que estamos examinando. Puedes encontrarlo precargado y pre-limpiado en el archivo _notebook.ipynb_ de esta lección. En el archivo, el precio de la calabaza se muestra por bushel en un nuevo marco de datos. Asegúrate de que puedas ejecutar estos notebooks en kernels en Visual Studio Code. ### Preparación -Como recordatorio, cargas estos datos para poder hacerles preguntas. +Como recordatorio, estás cargando estos datos para poder hacer preguntas sobre ellos. -- ¿Cuál es el mejor momento para comprar calabazas? -- ¿Qué precio puedo esperar de una caja de calabazas miniatura? -- ¿Debería comprarlas en cestas de media fanega o por la caja de 1 1/9 fanegas? -Sigamos investigando estos datos. +- ¿Cuándo es el mejor momento para comprar calabazas? +- ¿Qué precio puedo esperar por una caja de calabazas miniatura? +- ¿Debo comprarlas en cestas de medio bushel o por la caja de 1 1/9 bushel? +Sigamos profundizando en estos datos. -En la lección anterior, creaste un dataframe de Pandas y lo llenaste con parte del conjunto original, estandarizando el precio por fanega. De esa forma, solo pudiste obtener alrededor de 400 puntos de datos y solo para los meses de otoño. +En la lección anterior, creaste un DataFrame de Pandas y lo llenaste con parte del conjunto de datos original, estandarizando los precios por bushel. Al hacer eso, sin embargo, solo pudiste obtener aproximadamente 400 puntos de datos y solo para los meses de otoño. -Mira los datos que precargamos en el notebook que acompaña esta lección. Los datos están precargados y un diagrama de dispersión inicial se grafica para mostrar datos por mes. Tal vez podamos obtener un poco más de detalle sobre la naturaleza de los datos limpiándolos más. +Echa un vistazo a los datos que pre-cargamos en el notebook adjunto a esta lección. Los datos están previamente cargados y se ha graficado un diagrama de dispersión inicial para mostrar los datos por mes. Quizás podamos obtener un poco más de detalle sobre la naturaleza de los datos limpiándolos más. ## Una línea de regresión lineal -Como aprendiste en la Lección 1, el objetivo de un ejercicio de regresión lineal es poder graficar una línea para: +Como aprendiste en la Lección 1, el objetivo de un ejercicio de regresión lineal es poder trazar una línea para: -- **Mostrar relaciones entre variables**. Mostrar la relación entre variables +- **Mostrar relaciones entre variables**. Mostrar la relación entre variables. - **Hacer predicciones**. Hacer predicciones precisas sobre dónde caería un nuevo punto de datos en relación con esa línea. -Es típico de la **Regresión de Mínimos Cuadrados** dibujar este tipo de línea. El término "Mínimos Cuadrados" se refiere al proceso de minimizar el error total en nuestro modelo. Para cada punto de datos, medimos la distancia vertical (llamada residual) entre el punto real y nuestra línea de regresión. +Es típico de la **regresión de mínimos cuadrados** trazar este tipo de línea. El término "Mínimos Cuadrados" se refiere al proceso de minimizar el error total en nuestro modelo. Para cada punto de datos, medimos la distancia vertical (llamada residuo) entre el punto real y nuestra línea de regresión. Elevamos al cuadrado estas distancias por dos razones principales: -1. **Magnitud sobre Dirección:** Queremos tratar un error de -5 igual que un error de +5. Elevar al cuadrado convierte todos los valores en positivos. +1. **Magnitud sobre dirección:** Queremos tratar un error de -5 igual que un error de +5. Elevar al cuadrado convierte todos los valores en positivos. -2. **Penalizar valores atípicos:** Al elevar al cuadrado se da más peso a errores mayores, forzando a la línea a quedarse más cerca de puntos alejados. +2. **Penalizar valores atípicos:** Elevar al cuadrado da más peso a errores mayores, forzando a la línea a estar más cerca de puntos que están lejos. -Luego sumamos todos estos valores al cuadrado. Nuestro objetivo es encontrar la línea específica donde esta suma final es la menor (el valor más pequeño posible), de ahí el nombre de "Mínimos Cuadrados". +Luego sumamos todos estos valores al cuadrado. Nuestro objetivo es encontrar la línea específica donde esta suma final sea la menor (el valor posible más pequeño), de ahí el nombre de "Mínimos Cuadrados". -> **🧮 Muéstrame las matemáticas** -> -> Esta línea, llamada _línea de mejor ajuste_, puede expresarse con [una ecuación](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Muéstrame las matemáticas** +> +> Esta línea, llamada _línea de mejor ajuste_, puede expresarse mediante [una ecuación](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> `X` es la 'variable explicativa'. `Y` es la 'variable dependiente'. La pendiente de la línea es `b` y `a` es la intersección en y, que se refiere al valor de `Y` cuando `X = 0`. +> `X` es la 'variable explicativa'. `Y` es la 'variable dependiente'. La pendiente de la línea es `b` y `a` es la intersección en y, que se refiere al valor de `Y` cuando `X = 0`. > >![calcular la pendiente](../../../../translated_images/es/slope.f3c9d5910ddbfcf9.webp) > -> Primero, se calcula la pendiente `b`. Infografía por [Jen Looper](https://twitter.com/jenlooper) +> Primero, calcula la pendiente `b`. Infografía por [Jen Looper](https://twitter.com/jenlooper) > -> En otras palabras, y refiriéndonos a la pregunta original de nuestro dato de calabazas: "predecir el precio de una calabaza por fanega según el mes", `X` se referiría al precio y `Y` al mes de venta. +> En otras palabras, y refiriéndonos a la pregunta original de nuestros datos de calabazas: "predecir el precio de una calabaza por bushel según el mes", `X` se referiría al precio y `Y` al mes de venta. > >![completar la ecuación](../../../../translated_images/es/calculation.a209813050a1ddb1.webp) > > Calcula el valor de Y. Si estás pagando alrededor de $4, ¡debe ser abril! Infografía por [Jen Looper](https://twitter.com/jenlooper) > -> Las matemáticas que calculan la línea deben mostrar la pendiente de la línea, que también depende de la intersección, o de dónde se sitúa `Y` cuando `X = 0`. +> La matemática que calcula la línea debe demostrar la pendiente de la línea, que también depende de la intersección, o dónde se sitúa `Y` cuando `X = 0`. > -> Puedes ver el método de cálculo para estos valores en el sitio [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). También visita [este calculador de mínimos cuadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver cómo el valor de los números impacta la línea. +> Puedes observar el método de cálculo para estos valores en el sitio web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). También visita [esta calculadora de mínimos cuadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver cómo los valores numéricos impactan la línea. ## Correlación -Un término más para entender es el **Coeficiente de Correlación** entre variables dadas X y Y. Usando un diagrama de dispersión, puedes visualizar rápidamente este coeficiente. Un gráfico con puntos dispersos en una línea ordenada tiene alta correlación, pero uno con puntos dispersos en todas partes entre X y Y tiene baja correlación. +Un término más que debe entenderse es el **Coeficiente de Correlación** entre las variables X y Y dadas. Usando un diagrama de dispersión, puedes visualizar rápidamente este coeficiente. Un gráfico con puntos dispersos en una línea ordenada tiene alta correlación, pero un gráfico con puntos dispersos por todas partes en X y Y tiene baja correlación. -Un buen modelo de regresión lineal será uno que tenga un Coeficiente de Correlación alto (más cercano a 1 que a 0) usando el método de Regresión de Mínimos Cuadrados con una línea de regresión. +Un buen modelo de regresión lineal será aquel que tenga un Coeficiente de Correlación alto (más cercano a 1 que a 0) usando el método de regresión de mínimos cuadrados con una línea de regresión. -✅ Ejecuta el notebook que acompaña esta lección y observa el diagrama de dispersión Mes a Precio. ¿Parece que la asociación entre Mes y Precio para las ventas de calabazas tiene alta o baja correlación, según tu interpretación visual del diagrama de dispersión? ¿Cambia eso si usas una medida más fina en lugar de `Mes`, por ejemplo *día del año* (es decir, número de días desde el inicio del año)? +✅ Ejecuta el notebook que acompaña esta lección y observa el diagrama de dispersión Mes vs Precio. ¿Parece que los datos relacionando Mes y Precio para las ventas de calabazas tienen una correlación alta o baja, según tu interpretación visual del diagrama de dispersión? ¿Cambia eso si usas una medida más fina en lugar de `Mes`, p. ej. *día del año* (es decir, número de días desde el inicio del año)? -En el código a continuación, asumiremos que hemos limpiado los datos y obtenido un dataframe llamado `new_pumpkins`, similar al siguiente: +En el código a continuación, asumiremos que hemos limpiado los datos y obtenido un DataFrame llamado `new_pumpkins`, similar al siguiente: -ID | Mes | DíaDelAño | Variedad | Ciudad | Paquete | Precio Bajo | Precio Alto | Precio ----|-----|-----------|----------|--------|---------|-------------|-------------|-------- -70 | 9 | 267 | TIPO PARA PAY | BALTIMORE | cajas de 1 1/9 fanegas | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | TIPO PARA PAY | BALTIMORE | cajas de 1 1/9 fanegas | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | TIPO PARA PAY | BALTIMORE | cajas de 1 1/9 fanegas | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | TIPO PARA PAY | BALTIMORE | cajas de 1 1/9 fanegas | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | TIPO PARA PAY | BALTIMORE | cajas de 1 1/9 fanegas | 15.0 | 15.0 | 13.636364 +ID | Mes | DíaDelAño | Variedad | Ciudad | Empaque | Precio Bajo | Precio Alto | Precio +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | TIPO PASTEL | BALTIMORE | Cartones de 1 1/9 bushel | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | TIPO PASTEL | BALTIMORE | Cartones de 1 1/9 bushel | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | TIPO PASTEL | BALTIMORE | Cartones de 1 1/9 bushel | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | TIPO PASTEL | BALTIMORE | Cartones de 1 1/9 bushel | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | TIPO PASTEL | BALTIMORE | Cartones de 1 1/9 bushel | 15.0 | 15.0 | 13.636364 -> El código para limpiar los datos está disponible en [`notebook.ipynb`](notebook.ipynb). Hemos realizado los mismos pasos de limpieza que en la lección anterior, y calculamos la columna `DayOfYear` usando la siguiente expresión: +> El código para limpiar los datos está disponible en [`notebook.ipynb`](notebook.ipynb). Hemos realizado los mismos pasos de limpieza que en la lección anterior, y calculamos la columna `DíaDelAño` utilizando la siguiente expresión: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Ahora que entiendes la matemática detrás de la regresión lineal, creemos un modelo de regresión para ver si podemos predecir qué paquete de calabazas tendrá los mejores precios. Alguien que compra calabazas para un huerto navideño podría querer esta información para optimizar sus compras. +Ahora que entiendes la matemática detrás de la regresión lineal, crearemos un modelo de regresión para ver si podemos predecir qué paquete de calabazas tendrá los mejores precios. Alguien que compre calabazas para una parcela de calabazas en una festividad podría querer esta información para optimizar sus compras de paquetes de calabazas para la parcela. -## Buscando Correlación +## Buscando correlación -[![ML para principiantes - Buscando Correlación: La Clave para la Regresión Lineal](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML para principiantes - Buscando Correlación: La Clave para la Regresión Lineal") +[![ML para principiantes - Buscando correlación: La clave de la regresión lineal](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML para principiantes - Buscando correlación: La clave de la regresión lineal") -> 🎥 Haz clic en la imagen de arriba para un video corto que presenta la correlación. +> 🎥 Haz clic en la imagen de arriba para un breve video introductorio sobre correlación. -En la lección anterior probablemente viste que el precio promedio por diferentes meses luce así: +Probablemente ya has visto en la lección anterior que el precio promedio para diferentes meses se ve así: Precio promedio por mes -Esto sugiere que debería haber algo de correlación, y podemos intentar entrenar un modelo de regresión lineal para predecir la relación entre `Mes` y `Precio`, o entre `DíaDelAño` y `Precio`. Aquí está el diagrama de dispersión que muestra esta última relación: +Esto sugiere que debería existir cierta correlación, y podemos intentar entrenar un modelo de regresión lineal para predecir la relación entre `Mes` y `Precio`, o entre `DíaDelAño` y `Precio`. Aquí está el diagrama de dispersión que muestra esta última relación: -Diagrama de dispersión de Precio vs Día del Año +Diagrama de dispersión Precio vs Día del Año Veamos si hay correlación usando la función `corr`: @@ -129,7 +129,7 @@ print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Parece que la correlación es bastante pequeña, -0.15 usando `Mes` y -0.17 usando `DíaDelMes`, pero podría haber otra relación importante. Parece que hay diferentes grupos de precios según las distintas variedades de calabaza. Para confirmar esta hipótesis, graficamos cada categoría de calabaza usando un color diferente. Pasando un parámetro `ax` a la función de graficar `scatter` podemos poner todos los puntos en el mismo gráfico: +Parece que la correlación es bastante pequeña, -0.15 para `Mes` y -0.17 para `DíaDelAño`, pero podría haber otra relación importante. Parece que hay diferentes grupos de precios correspondientes a diferentes variedades de calabazas. Para confirmar esta hipótesis, grafiquemos cada categoría de calabaza usando un color diferente. Pasando el parámetro `ax` a la función de grafico `scatter` podemos graficar todos los puntos en el mismo gráfico: ```python ax=None @@ -139,42 +139,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Diagrama de dispersión de Precio vs Día del Año +Diagrama de dispersión Precio vs Día del Año -Nuestra investigación sugiere que la variedad afecta más el precio final que la fecha de venta real. Podemos ver esto en un gráfico de barras: +Nuestra investigación sugiere que la variedad tiene más efecto sobre el precio total que la fecha real de venta. Podemos ver esto con un gráfico de barras: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Gráfico de barras de precio vs variedad +Gráfico de barras del precio vs variedad -Enfoquémonos por ahora solo en una variedad de calabaza, el 'tipo para pay', y veamos qué efecto tiene la fecha en el precio: +Centrémonos por el momento en una variedad de calabaza, el 'tipo pastel', y veamos qué efecto tiene la fecha en el precio: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Diagrama de dispersión de Precio vs Día del Año +Diagrama de dispersión Precio vs Día del Año -Si ahora calculamos la correlación entre `Precio` y `DíaDelAño` usando la función `corr`, obtendremos algo como `-0.27`, lo que significa que entrenar un modelo predictivo tiene sentido. +Si ahora calculamos la correlación entre `Precio` y `DíaDelAño` usando la función `corr`, obtendremos algo como `-0.27`, lo que significa que tiene sentido entrenar un modelo predictivo. -> Antes de entrenar un modelo de regresión lineal, es importante asegurarnos que los datos estén limpios. La regresión lineal no funciona bien con valores faltantes, por lo que conviene eliminar todas las celdas vacías: +> Antes de entrenar un modelo de regresión lineal, es importante asegurarse de que nuestros datos estén limpios. La regresión lineal no funciona bien con valores faltantes, por lo que tiene sentido eliminar todas las celdas vacías: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Otra opción sería llenar esos valores vacíos con el valor medio de la columna correspondiente. +Otra opción sería llenar esos valores vacíos con valores promedio de la columna correspondiente. -## Regresión Lineal Simple +## Regresión lineal simple -[![ML para principiantes - Regresión Lineal y Polinomial usando Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML para principiantes - Regresión Lineal y Polinomial usando Scikit-learn") +[![ML para principiantes - Regresión lineal y polinómica usando Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML para principiantes - Regresión lineal y polinómica usando Scikit-learn") -> 🎥 Haz clic en la imagen de arriba para un video corto que presenta la regresión lineal y polinomial. +> 🎥 Haz clic en la imagen de arriba para un breve video introductorio sobre regresión lineal y polinómica. -Para entrenar nuestro modelo de Regresión Lineal, usaremos la biblioteca **Scikit-learn**. +Para entrenar nuestro modelo de regresión lineal, usaremos la biblioteca **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -182,31 +182,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Comenzamos separando los valores de entrada (características) y la salida esperada (etiqueta) en matrices numpy separadas: +Comenzamos separando los valores de entrada (características) y la salida esperada (etiqueta) en arreglos numpy separados: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Nota que tuvimos que aplicar `reshape` a los datos de entrada para que el paquete de Regresión Lineal los entienda correctamente. La Regresión Lineal espera un array 2D como entrada, donde cada fila del array corresponde a un vector de características de entrada. En nuestro caso, dado que solo tenemos una entrada, necesitamos un array con forma N×1, donde N es el tamaño del conjunto de datos. +> Ten en cuenta que tuvimos que aplicar `reshape` a los datos de entrada para que el paquete de regresión lineal lo entienda correctamente. La regresión lineal espera un arreglo 2D como entrada, donde cada fila del arreglo corresponde a un vector de características de entrada. En nuestro caso, como solo tenemos una entrada, necesitamos un arreglo con forma N×1, donde N es el tamaño del conjunto de datos. -Luego, necesitamos dividir los datos en conjuntos de entrenamiento y prueba, para poder validar nuestro modelo después de entrenarlo: +Luego, necesitamos dividir los datos en conjuntos de entrenamiento y prueba para poder validar nuestro modelo después del entrenamiento: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Finalmente, entrenar el modelo de Regresión Lineal real toma solo dos líneas de código. Definimos el objeto `LinearRegression`, y lo ajustamos a nuestros datos usando el método `fit`: +Finalmente, entrenar el modelo real de regresión lineal toma solo dos líneas de código. Definimos el objeto `LinearRegression` y lo ajustamos a nuestros datos usando el método `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -El objeto `LinearRegression` después de ajustar (`fit`) contiene todos los coeficientes de la regresión, a los cuales se puede acceder usando la propiedad `.coef_`. En nuestro caso, hay solo un coeficiente, que debería estar alrededor de `-0.017`. Esto significa que los precios parecen bajar un poco con el tiempo, pero no demasiado, alrededor de 2 centavos por día. También podemos acceder al punto de intersección de la regresión con el eje Y usando `lin_reg.intercept_` - estará alrededor de `21` en nuestro caso, indicando el precio al inicio del año. +El objeto `LinearRegression` después de haber hecho `fit` contiene todos los coeficientes de la regresión, a los cuales se puede acceder usando la propiedad `.coef_`. En nuestro caso, hay solo un coeficiente, que debería estar alrededor de `-0.017`. Esto significa que los precios parecen disminuir un poco con el tiempo, pero no demasiado, alrededor de 2 centavos por día. También podemos acceder al punto de intersección de la regresión con el eje Y usando `lin_reg.intercept_` — que estará alrededor de `21` en nuestro caso, indicando el precio al inicio del año. -Para ver qué tan preciso es nuestro modelo, podemos predecir los precios en un conjunto de datos de prueba, y luego medir qué tan cercanas están nuestras predicciones a los valores esperados. Esto se puede hacer usando la métrica de raíz del error cuadrático medio (RMSE), que es la raíz de la media de todas las diferencias al cuadrado entre el valor esperado y el predicho. +Para ver qué tan preciso es nuestro modelo, podemos predecir precios en un conjunto de datos de prueba y luego medir qué tan cercanas están nuestras predicciones a los valores esperados. Esto puede hacerse utilizando la métrica root mean square error (RMSE), que es la raíz de la media de todas las diferencias al cuadrado entre los valores esperados y predichos. ```python pred = lin_reg.predict(X_test) @@ -215,13 +215,13 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Nuestro error parece estar alrededor de 2 puntos, que es ~17%. No muy bueno. Otro indicador de la calidad del modelo es el **coeficiente de determinación**, que se puede obtener así: +Nuestro error parece estar alrededor de 2 puntos, que es ~17%. No es muy bueno. Otro indicador de la calidad del modelo es el **coeficiente de determinación**, que puede obtenerse así: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Si el valor es 0, significa que el modelo no toma en cuenta los datos de entrada y actúa como el *peor predictor lineal*, que es simplemente el promedio del resultado. El valor de 1 significa que podemos predecir perfectamente todos los valores esperados. En nuestro caso, el coeficiente es alrededor de 0.06, lo cual es bastante bajo. +Si el valor es 0, significa que el modelo no tiene en cuenta los datos de entrada y actúa como el *peor predictor lineal*, que es simplemente el valor promedio del resultado. Un valor de 1 significa que podemos predecir perfectamente todas las salidas esperadas. En nuestro caso, el coeficiente es alrededor de 0.06, lo cual es bastante bajo. También podemos graficar los datos de prueba junto con la línea de regresión para ver mejor cómo funciona la regresión en nuestro caso: @@ -232,19 +232,19 @@ plt.plot(X_test,pred) Regresión lineal -## Regresión Polinómica +## Regresión polinómica -Otro tipo de Regresión Lineal es la Regresión Polinómica. Aunque a veces existe una relación lineal entre variables - cuanto mayor es el volumen de la calabaza, mayor es el precio - a veces estas relaciones no pueden ser representadas por un plano o línea recta. +Otro tipo de Regresión Lineal es la Regresión Polinómica. Aunque a veces existe una relación lineal entre variables — cuanto mayor el volumen de la calabaza, mayor el precio — a veces estas relaciones no pueden representarse como un plano o línea recta. ✅ Aquí hay [algunos ejemplos más](https://online.stat.psu.edu/stat501/lesson/9/9.8) de datos que podrían usar Regresión Polinómica -Echa otro vistazo a la relación entre Fecha y Precio. ¿Parece este diagrama de dispersión que deba necesariamente analizarse con una línea recta? ¿No pueden los precios fluctuar? En este caso, puedes probar la regresión polinómica. +Observa de nuevo la relación entre Fecha y Precio. ¿Parece que este diagrama de dispersión deba necesariamente analizarse con una línea recta? ¿No pueden fluctuar los precios? En este caso, puedes probar regresión polinómica. -✅ Los polinomios son expresiones matemáticas que pueden consistir en una o más variables y coeficientes +✅ Los polinomios son expresiones matemáticas que pueden consistir de una o más variables y coeficientes. -La regresión polinómica crea una curva para ajustar mejor datos no lineales. En nuestro caso, si incluimos una variable `DayOfYear` al cuadrado en los datos de entrada, deberíamos poder ajustar nuestros datos con una curva parabólica, que tendrá un mínimo en cierto punto del año. +La regresión polinómica crea una curva para ajustarse mejor a datos no lineales. En nuestro caso, si incluimos una variable `DayOfYear` al cuadrado en los datos de entrada, deberíamos poder ajustar nuestros datos con una curva parabólica, que tendrá un mínimo en cierto punto dentro del año. -Scikit-learn incluye una útil [API de pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes pasos de procesamiento de datos. Un **pipeline** es una cadena de **estimadores**. En nuestro caso, crearemos un pipeline que primero añade características polinómicas a nuestro modelo, y luego entrena la regresión: +Scikit-learn incluye una útil [API de pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes pasos de procesamiento de datos. Un **pipeline** es una cadena de **estimadores**. En nuestro caso, crearemos un pipeline que primero añade características polinómicas a nuestro modelo y luego entrena la regresión: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,36 +255,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Usar `PolynomialFeatures(2)` significa que incluiremos todos los polinomios de segundo grado de los datos de entrada. En nuestro caso solo significa `DayOfYear`2, pero dado dos variables de entrada X y Y, esto agregaría X2, XY y Y2. También podemos usar polinomios de grado superior si queremos. +Usar `PolynomialFeatures(2)` significa que incluiremos todos los polinomios de segundo grado de los datos de entrada. En nuestro caso solo significará `DayOfYear`2, pero dado que tengamos dos variables de entrada X y Y, se añadirá X2, XY y Y2. También podemos usar polinomios de grado superior si queremos. -Los pipelines pueden usarse de la misma manera que el objeto original `LinearRegression`, es decir, podemos `fit` el pipeline y luego usar `predict` para obtener los resultados de la predicción. Aquí está el gráfico que muestra los datos de prueba y la curva de aproximación: +Los pipelines se pueden usar de la misma manera que el objeto original `LinearRegression`, es decir, podemos hacerle `fit` al pipeline y luego usar `predict` para obtener los resultados de la predicción: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Para graficar la curva de aproximación suave, usamos `np.linspace` para crear un rango uniforme de valores de entrada, en lugar de graficar directamente los datos de prueba desordenados (lo que produciría una línea zigzagueante): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Aquí está el gráfico que muestra los datos de prueba y la curva de aproximación: Regresión polinómica -Usando Regresión Polinómica, podemos obtener un MSE ligeramente más bajo y una determinación más alta, pero no significativamente. ¡Necesitamos tomar en cuenta otras características! +Usando Regresión Polinómica, podemos obtener un RMSE un poco más bajo y un coeficiente de determinación más alto, pero no significativamente. ¡Necesitamos tener en cuenta otras características! -> Puedes ver que los precios mínimos de las calabazas se observan alrededor de Halloween. ¿Cómo puedes explicar esto? +> Puedes ver que los precios mínimos de las calabazas se observan alrededor de Halloween. ¿Cómo podrías explicar esto? -🎃 ¡Felicidades, acabas de crear un modelo que puede ayudar a predecir el precio de las calabazas para pasteles! Probablemente puedas repetir el mismo procedimiento para todos los tipos de calabazas, pero eso sería tedioso. ¡Aprendamos ahora cómo tomar en cuenta la variedad de calabaza en nuestro modelo! +🎃 ¡Felicidades, acabas de crear un modelo que puede predecir el precio de calabazas para pastel! Probablemente puedas repetir el mismo procedimiento para todos los tipos de calabaza, pero eso sería tedioso. ¡Aprendamos ahora cómo tener en cuenta la variedad de calabaza en nuestro modelo! -## Características Categóricas +## Características categóricas En un mundo ideal, queremos poder predecir precios para diferentes variedades de calabaza usando el mismo modelo. Sin embargo, la columna `Variety` es algo diferente de columnas como `Month`, porque contiene valores no numéricos. Tales columnas se llaman **categóricas**. -[![ML para principiantes - Predicciones con características categóricas usando regresión lineal](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML para principiantes - Predicciones con características categóricas usando regresión lineal") +[![ML para principiantes - Predicciones con características categóricas y regresión lineal](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML para principiantes - Predicciones con características categóricas y regresión lineal") -> 🎥 Haz clic en la imagen arriba para un breve video explicativo sobre el uso de características categóricas. +> 🎥 Haz clic en la imagen arriba para un breve video sobre el uso de características categóricas. -Aquí puedes ver cómo depende el precio promedio de la variedad: +Aquí puedes ver cómo el precio promedio depende de la variedad: Precio promedio por variedad -Para tomar en cuenta la variedad, primero necesitamos convertirla a forma numérica, o **codificarla**. Hay varias maneras de hacerlo: +Para tener en cuenta la variedad, primero necesitamos convertirla a forma numérica, o **codificarla**. Hay varias formas de hacerlo: -* La simple **codificación numérica** creará una tabla de diferentes variedades y reemplazará el nombre por un índice en esa tabla. Esto no es la mejor idea para regresión lineal, porque la regresión lineal toma el valor numérico real del índice y lo suma al resultado multiplicado por algún coeficiente. En nuestro caso, la relación entre el número del índice y el precio es claramente no lineal, incluso si aseguramos que los índices están ordenados de alguna forma específica. -* La **codificación one-hot** reemplazará la columna `Variety` por 4 columnas diferentes, una para cada variedad. Cada columna contendrá un `1` si la fila correspondiente es de esa variedad, y `0` si no. Esto significa que habrá cuatro coeficientes en la regresión lineal, uno para cada variedad de calabaza, responsables por el "precio inicial" (o más bien "precio adicional") para esa variedad particular. +* La simple **codificación numérica** construirá una tabla de diferentes variedades y luego reemplazará el nombre de la variedad por un índice en esa tabla. Esto no es la mejor idea para regresión lineal, porque la regresión lineal toma el valor numérico real del índice y lo añade al resultado, multiplicado por algún coeficiente. En nuestro caso, la relación entre el número del índice y el precio es claramente no lineal, incluso si nos aseguramos de que los índices estén ordenados de cierta manera. +* La **codificación one-hot** reemplazará la columna `Variety` por 4 columnas diferentes, una para cada variedad. Cada columna contendrá `1` si la fila correspondiente es de esa variedad, y `0` en caso contrario. Esto significa que habrá cuatro coeficientes en la regresión lineal, uno para cada variedad de calabaza, responsable del "precio base" (o más bien "precio adicional") para esa variedad en particular. -El código a continuación muestra cómo podemos hacer codificación one-hot de una variedad: +El código abajo muestra cómo podemos codificar one-hot una variedad: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -308,7 +330,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -El resto del código es el mismo que usamos arriba para entrenar Regresión Lineal. Si lo pruebas, verás que el error cuadrático medio es aproximadamente el mismo, pero obtenemos un coeficiente de determinación mucho más alto (~77%). Para obtener predicciones aún más precisas, podemos tomar en cuenta más características categóricas así como características numéricas como `Month` o `DayOfYear`. Para obtener una matriz grande de características, podemos usar `join`: +El resto del código es el mismo que usamos arriba para entrenar la Regresión Lineal. Si lo pruebas, verás que el error cuadrático medio es similar, pero obtenemos un coeficiente de determinación mucho mayor (~77%). Para obtener predicciones aún más precisas, podemos tener en cuenta más características categóricas, así como características numéricas, como `Month` o `DayOfYear`. Para obtener un gran arreglo de características, podemos usar `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,60 +340,60 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Aquí también tomamos en cuenta `City` y tipo de `Package`, lo que nos da un MSE de 2.84 (10%) y una determinación de 0.94! +Aquí también tomamos en cuenta `City` y tipo de `Package`, lo que nos da un RMSE 2.84 (10.5%) y un coeficiente de determinación de 0.94. -## Poniéndolo todo junto +## Juntándolo todo Para hacer el mejor modelo, podemos usar datos combinados (categóricos codificados one-hot + numéricos) del ejemplo anterior junto con Regresión Polinómica. Aquí está el código completo para tu conveniencia: ```python -# configurar los datos de entrenamiento +# preparar datos de entrenamiento X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# hacer la división entrenamiento-prueba +# hacer división de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# configurar y entrenar el pipeline +# configurar y entrenar la tubería pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # predecir resultados para los datos de prueba pred = pipeline.predict(X_test) -# calcular el error cuadrático medio y la determinación -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calcular RMSE y determinación +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Esto debería darnos el mejor coeficiente de determinación de casi 97%, y MSE=2.23 (~8% de error en la predicción). +Esto debería darnos el mejor coeficiente de determinación de casi 97% y RMSE=2.23 (~8% de error de predicción). -| Modelo | MSE | Determinación | +| Modelo | RMSE | Determinación | |-------|-----|---------------| -| Regresión Lineal con `DayOfYear` | 2.77 (17.2%) | 0.07 | -| Regresión Polinómica con `DayOfYear` | 2.73 (17.0%) | 0.08 | -| Regresión Lineal con `Variety` | 5.24 (19.7%) | 0.77 | -| Regresión Lineal con todas las características | 2.84 (10.5%) | 0.94 | -| Regresión Polinómica con todas las características | 2.23 (8.25%) | 0.97 | +| Lineal con `DayOfYear` | 2.77 (17.2%) | 0.07 | +| Polinómica con `DayOfYear` | 2.73 (17.0%) | 0.08 | +| Lineal con `Variety` | 5.24 (19.7%) | 0.77 | +| Lineal con todas las características | 2.84 (10.5%) | 0.94 | +| Polinómica con todas las características | 2.23 (8.25%) | 0.97 | -🏆 ¡Buen trabajo! Creaste cuatro modelos de regresión en una lección y mejoraste la calidad del modelo al 97%. En la sección final sobre Regresión, aprenderás sobre Regresión Logística para determinar categorías. +🏆 ¡Muy bien! Creaste cuatro modelos de regresión en una lección y mejoraste la calidad del modelo a 97%. En la sección final sobre regresión, aprenderás sobre regresión logística para determinar categorías. --- ## 🚀Desafío -Prueba varias variables diferentes en este cuaderno para ver cómo la correlación corresponde con la precisión del modelo. +Prueba con varias variables diferentes en este cuaderno para ver cómo la correlación se corresponde con la precisión del modelo. -## [Cuestionario post-clase](https://ff-quizzes.netlify.app/en/ml/) +## [Cuestionario posterior a la clase](https://ff-quizzes.netlify.app/en/ml/) ## Repaso y Autoestudio -En esta lección aprendimos sobre Regresión Lineal. Hay otros tipos importantes de regresión. Lee sobre las técnicas Stepwise, Ridge, Lasso y Elasticnet. Un buen curso para estudiar y aprender más es el [curso de Aprendizaje Estadístico de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +En esta lección aprendimos sobre Regresión Lineal. Hay otros tipos importantes de Regresión. Lee sobre las técnicas Stepwise, Ridge, Lasso y Elasticnet. Un buen curso para estudiar y aprender más es el [curso de Aprendizaje Estadístico de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Tarea @@ -381,5 +403,5 @@ En esta lección aprendimos sobre Regresión Lineal. Hay otros tipos importantes **Descargo de responsabilidad**: -Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de ningún malentendido o interpretación errónea que surja del uso de esta traducción. +Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la exactitud, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos responsabilizamos por ningún malentendido o interpretación errónea que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/2-Regression/3-Linear/solution/notebook.ipynb b/translations/es/2-Regression/3-Linear/solution/notebook.ipynb index 3af720ddf9..cd5f5a4114 100644 --- a/translations/es/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/es/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Regresión Lineal y Polinómica para la Fijación de Precios de Calabazas - Lección 3\n", + "## Regresión Lineal y Polinómica para el Precio de Calabazas - Lección 3\n", "\n", - "Carga las bibliotecas necesarias y el conjunto de datos. Convierte los datos en un dataframe que contenga un subconjunto de los datos:\n", + "Carga las librerías y el conjunto de datos requeridos. Convierte los datos a un dataframe que contenga un subconjunto de los datos:\n", "\n", - "- Obtén únicamente las calabazas con precios por fanega\n", - "- Convierte la fecha en un mes\n", - "- Calcula el precio como un promedio entre los precios altos y bajos\n", - "- Convierte el precio para que refleje la fijación de precios por cantidad de fanegas\n" + "- Obtener solo las calabazas con precio por fanega\n", + "- Convertir la fecha a un mes\n", + "- Calcular el precio como un promedio de los precios alto y bajo\n", + "- Convertir el precio para reflejar el precio por cantidad de fanegas\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Un diagrama de dispersión nos recuerda que solo tenemos datos mensuales desde agosto hasta diciembre. Probablemente necesitemos más datos para poder sacar conclusiones de manera lineal.\n" + "Un diagrama de dispersión nos recuerda que solo tenemos datos mensuales de agosto a diciembre. Probablemente necesitemos más datos para poder sacar conclusiones de manera lineal.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Veamos si hay correlación:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Parece que la correlación es bastante pequeña, pero hay alguna otra relación más importante, porque los puntos de precio en el gráfico anterior parecen tener varios grupos distintos. Hagamos un gráfico que muestre las diferentes variedades de calabaza:\n" + "Parece que la correlación es bastante pequeña, pero hay alguna otra relación más importante, porque los puntos de precio en el gráfico anterior parecen tener varios grupos distintos. Hagamos un gráfico que muestre diferentes variedades de calabaza:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Por el momento, concentrémonos solo en una variedad: **tipo de tarta**.\n" + ] }, { "cell_type": "code", @@ -582,7 +586,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresión Lineal\n", + "### Regresión lineal\n", "\n", "Usaremos Scikit Learn para entrenar un modelo de regresión lineal:\n" ] @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Podemos usar el modelo entrenado para predecir el precio:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Regresión Polinómica\n", "\n", - "A veces, la relación entre las características y los resultados es inherentemente no lineal. Por ejemplo, los precios de las calabazas podrían ser altos en invierno (meses=1,2), luego bajar en verano (meses=5-7) y después subir nuevamente. La regresión lineal no puede capturar esta relación con precisión.\n", + "A veces la relación entre las características y los resultados es inherentemente no lineal. Por ejemplo, los precios de las calabazas pueden ser altos en invierno (meses=1,2), luego caer durante el verano (meses=5-7) y después subir nuevamente. La regresión lineal no puede encontrar esta relación con precisión.\n", "\n", - "En este caso, podríamos considerar agregar características adicionales. Una forma sencilla es usar polinomios a partir de las características de entrada, lo que daría lugar a la **regresión polinómica**. En Scikit Learn, podemos precomputar automáticamente las características polinómicas utilizando pipelines:\n" + "En este caso, podemos considerar añadir características extra. Una forma sencilla es usar polinomios a partir de las características de entrada, lo que resultaría en una **regresión polinómica**. En Scikit Learn, podemos pre-calcular automáticamente características polinómicas usando pipelines: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Codificación de variedades\n", + "### Variedades de codificación\n", "\n", - "En un mundo ideal, queremos poder predecir los precios de diferentes variedades de calabazas utilizando el mismo modelo. Para tener en cuenta la variedad, primero necesitamos convertirla a forma numérica, o **codificarla**. Hay varias maneras de hacerlo:\n", + "En un mundo ideal, queremos poder predecir precios para diferentes variedades de calabaza usando el mismo modelo. Para tener en cuenta la variedad, primero necesitamos convertirla a forma numérica, o **codificarla**. Hay varias formas de hacerlo:\n", "\n", - "* Codificación numérica simple que construirá una tabla de diferentes variedades y luego reemplazará el nombre de la variedad por un índice en esa tabla. Esta no es la mejor idea para la regresión lineal, porque la regresión lineal toma en cuenta el valor numérico del índice, y es probable que el valor numérico no se correlacione numéricamente con el precio.\n", - "* Codificación one-hot, que reemplazará la columna `Variety` por 4 columnas diferentes, una para cada variedad, que contendrán 1 si la fila correspondiente es de la variedad dada, y 0 en caso contrario.\n", + "* Codificación numérica simple que construirá una tabla de diferentes variedades, y luego reemplazará el nombre de la variedad por un índice en esa tabla. Esta no es la mejor idea para regresión lineal, porque la regresión lineal toma en cuenta el valor numérico del índice, y es probable que el valor numérico no se correlacione numéricamente con el precio.\n", + "* Codificación one-hot, que reemplazará la columna `Variety` por 4 columnas diferentes, una para cada variedad, que contendrá 1 si la fila correspondiente es de dicha variedad, y 0 en caso contrario.\n", "\n", - "El siguiente código muestra cómo podemos codificar una variedad utilizando one-hot:\n" + "El código a continuación muestra cómo podemos codificar una variedad con one-hot:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresión Lineal en Variedad\n", + "### Regresión lineal sobre la variedad\n", "\n", - "Ahora usaremos el mismo código que antes, pero en lugar de `DayOfYear` utilizaremos nuestra variedad codificada en formato one-hot como entrada:\n" + "Ahora usaremos el mismo código que arriba, pero en lugar de `DayOfYear` usaremos nuestra variedad codificada en one-hot como entrada:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresión Polinómica\n", + "### Regresión polinómica\n", "\n", - "La regresión polinómica también se puede utilizar con características categóricas que están codificadas en formato one-hot. El código para entrenar una regresión polinómica sería esencialmente el mismo que hemos visto anteriormente.\n" + "La regresión polinómica también se puede utilizar con características categóricas que están codificadas en one-hot. El código para entrenar la regresión polinómica sería esencialmente el mismo que hemos visto arriba.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Descargo de responsabilidad**: \nEste documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.\n" + "---\n\n\n**Descargo de responsabilidad**: \nEste documento ha sido traducido utilizando el servicio de traducción AI [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables por ningún malentendido o interpretación errónea que surja del uso de esta traducción.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T01:03:48+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "es" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/es/4-Classification/3-Classifiers-2/solution/notebook.ipynb b/translations/es/4-Classification/3-Classifiers-2/solution/notebook.ipynb index a0a5282cc4..82acc9b4f3 100644 --- a/translations/es/4-Classification/3-Classifiers-2/solution/notebook.ipynb +++ b/translations/es/4-Classification/3-Classifiers-2/solution/notebook.ipynb @@ -2,51 +2,28 @@ "cells": [ { "source": [ - "# Construir Más Modelos de Clasificación\n" + "# Construir más modelos de clasificación\n" ], "cell_type": "markdown", "metadata": {} }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Descripción general del conjunto de datos\n", + "Este conjunto de datos contiene muestras individuales (por ejemplo, recetas) etiquetadas por tipo de cocina.\n", + "Cada fila corresponde a una única muestra/registro, y las columnas representan ingredientes u otros atributos utilizados para la clasificación, incluyendo la etiqueta `cuisine`.\n" + ] + }, { "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", - "0 0 indian 0 0 0 0 0 \n", - "1 1 indian 1 0 0 0 0 \n", - "2 2 indian 0 0 0 0 0 \n", - "3 3 indian 0 0 0 0 0 \n", - "4 4 indian 0 0 0 0 0 \n", - "\n", - " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", - "0 0 0 0 ... 0 0 0 \n", - "1 0 0 0 ... 0 0 0 \n", - "2 0 0 0 ... 0 0 0 \n", - "3 0 0 0 ... 0 0 0 \n", - "4 0 0 0 ... 0 0 0 \n", - "\n", - " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", - "0 0 0 0 0 0 0 0 \n", - "1 0 0 0 0 0 0 0 \n", - "2 0 0 0 0 0 0 0 \n", - "3 0 0 0 0 0 0 0 \n", - "4 0 0 0 0 0 1 0 \n", - "\n", - "[5 rows x 382 columns]" - ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" - }, - "metadata": {}, - "execution_count": 1 - } - ], + "outputs": [], "source": [ "import pandas as pd\n", + "# Load dataset containing cuisine features\n", "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", "cuisines_df.head()" ] @@ -263,7 +240,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**Aviso Legal**:\nEste documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables por malentendidos o interpretaciones erróneas derivadas del uso de esta traducción.\n\n" + "---\n\n\n**Aviso Legal**: \nEste documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables por malentendidos o interpretaciones incorrectas derivadas del uso de esta traducción.\n\n" ] } ], diff --git a/translations/fr/.co-op-translator.json b/translations/fr/.co-op-translator.json index 441aa76fc1..4493638683 100644 --- a/translations/fr/.co-op-translator.json +++ b/translations/fr/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "fr" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-04T23:00:20+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:33:28+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "fr" }, @@ -90,8 +90,8 @@ "language_code": "fr" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T15:42:23+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:32:56+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "fr" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "fr" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:30:16+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "fr" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T22:53:01+00:00", @@ -210,8 +216,8 @@ "language_code": "fr" }, "4-Classification/3-Classifiers-2/solution/notebook.ipynb": { - "original_hash": "70f41fe4fd4253adb44cd9d291406e4f", - "translation_date": "2026-02-28T08:13:05+00:00", + "original_hash": "382c1f542f31fcc58137ce6d14751413", + "translation_date": "2026-04-26T18:30:24+00:00", "source_file": "4-Classification/3-Classifiers-2/solution/notebook.ipynb", "language_code": "fr" }, diff --git a/translations/fr/1-Introduction/4-techniques-of-ML/README.md b/translations/fr/1-Introduction/4-techniques-of-ML/README.md index 406c966266..141d4cf949 100644 --- a/translations/fr/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/fr/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# Techniques de l'apprentissage automatique +# Techniques d'apprentissage automatique -Le processus de création, d'utilisation et de maintenance des modèles d'apprentissage automatique ainsi que des données qu'ils utilisent est très différent de nombreux autres flux de travail de développement. Dans cette leçon, nous allons démystifier ce processus et présenter les principales techniques que vous devez connaître. Vous allez : +Le processus de création, d'utilisation et de maintenance des modèles d'apprentissage automatique et des données qu'ils utilisent est très différent de nombreux autres flux de travail de développement. Dans cette leçon, nous allons démystifier le processus et exposer les principales techniques que vous devez connaître. Vous allez : -- Comprendre les processus qui sous-tendent l'apprentissage automatique à un niveau général. -- Explorer des concepts de base tels que les "modèles", les "prédictions" et les "données d'entraînement". +- Comprendre les processus sous-jacents à l'apprentissage automatique à un niveau élevé. +- Explorer les concepts de base tels que « modèles », « prédictions » et « données d'entraînement ». ## [Quiz avant la leçon](https://ff-quizzes.netlify.app/en/ml/) -[![ML pour débutants - Techniques de l'apprentissage automatique](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML pour débutants - Techniques de l'apprentissage automatique") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") > 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant cette leçon. ## Introduction -À un niveau général, l'art de créer des processus d'apprentissage automatique (ML) comprend plusieurs étapes : +À un niveau élevé, l'art de créer des processus d'apprentissage automatique (ML) se compose de plusieurs étapes : -1. **Définir la question**. La plupart des processus ML commencent par poser une question qui ne peut pas être répondue par un simple programme conditionnel ou un moteur basé sur des règles. Ces questions tournent souvent autour de prédictions basées sur un ensemble de données. -2. **Collecter et préparer les données**. Pour répondre à votre question, vous avez besoin de données. La qualité et, parfois, la quantité de vos données détermineront à quel point vous pouvez répondre à votre question initiale. La visualisation des données est un aspect important de cette phase. Cette phase inclut également la division des données en un groupe d'entraînement et un groupe de test pour construire un modèle. -3. **Choisir une méthode d'entraînement**. En fonction de votre question et de la nature de vos données, vous devez choisir comment entraîner un modèle pour qu'il reflète au mieux vos données et fasse des prédictions précises. Cette partie du processus ML nécessite une expertise spécifique et, souvent, une quantité considérable d'expérimentation. -4. **Entraîner le modèle**. À l'aide de vos données d'entraînement, vous utiliserez divers algorithmes pour entraîner un modèle à reconnaître des motifs dans les données. Le modèle peut utiliser des poids internes qui peuvent être ajustés pour privilégier certaines parties des données par rapport à d'autres afin de construire un meilleur modèle. +1. **Décider de la question**. La plupart des processus de ML commencent par poser une question qui ne peut pas être répondue par un programme conditionnel simple ou un moteur basé sur des règles. Ces questions tournent souvent autour des prédictions basées sur un ensemble de données. +2. **Collecter et préparer les données**. Pour pouvoir répondre à votre question, vous avez besoin de données. La qualité et, parfois, la quantité de vos données détermineront à quel point vous pouvez répondre à votre question initiale. Visualiser les données est un aspect important de cette phase. Cette phase inclut également la division des données en groupes d'entraînement et de test pour construire un modèle. +3. **Choisir une méthode d'entraînement**. Selon votre question et la nature de vos données, vous devez choisir comment vous souhaitez entraîner un modèle afin de mieux refléter vos données et faire des prédictions précises sur celles-ci. C'est la partie de votre processus ML qui nécessite une expertise spécifique et, souvent, une quantité considérable d'expérimentation. +4. **Entraîner le modèle**. En utilisant vos données d'entraînement, vous utiliserez divers algorithmes pour entraîner un modèle à reconnaître les motifs dans les données. Le modèle pourrait utiliser des poids internes que l'on peut ajuster pour privilégier certaines parties des données par rapport à d'autres afin de construire un meilleur modèle. 5. **Évaluer le modèle**. Vous utilisez des données jamais vues auparavant (vos données de test) issues de votre ensemble collecté pour voir comment le modèle fonctionne. -6. **Ajustement des paramètres**. En fonction des performances de votre modèle, vous pouvez recommencer le processus en utilisant différents paramètres ou variables qui contrôlent le comportement des algorithmes utilisés pour entraîner le modèle. +6. **Réglage des paramètres**. En fonction des performances de votre modèle, vous pouvez refaire le processus en utilisant différents paramètres, ou variables, qui contrôlent le comportement des algorithmes utilisés pour entraîner le modèle. 7. **Prédire**. Utilisez de nouvelles entrées pour tester la précision de votre modèle. ## Quelle question poser -Les ordinateurs sont particulièrement doués pour découvrir des motifs cachés dans les données. Cette capacité est très utile pour les chercheurs qui ont des questions sur un domaine donné et qui ne peuvent pas être facilement répondus en créant un moteur basé sur des règles conditionnelles. Par exemple, dans une tâche actuarielle, un data scientist pourrait construire des règles sur mesure concernant la mortalité des fumeurs par rapport aux non-fumeurs. +Les ordinateurs sont particulièrement compétents pour découvrir des motifs cachés dans les données. Cette utilité est très utile pour les chercheurs qui ont des questions sur un domaine donné qui ne peuvent pas être facilement répondues en créant un moteur de règles conditionnelles. Par exemple, pour une tâche actuarielle, un data scientist pourrait être en mesure de construire des règles manuelles autour de la mortalité des fumeurs par rapport aux non-fumeurs. -Cependant, lorsque de nombreuses autres variables entrent en jeu, un modèle ML pourrait s'avérer plus efficace pour prédire les taux de mortalité futurs en fonction des antécédents de santé passés. Un exemple plus joyeux pourrait être de faire des prédictions météorologiques pour le mois d'avril dans un lieu donné en fonction de données telles que la latitude, la longitude, le changement climatique, la proximité de l'océan, les motifs du courant-jet, et plus encore. +Cependant, lorsque de nombreuses autres variables sont prises en compte, un modèle ML pourrait s'avérer plus efficace pour prédire les taux de mortalité futurs basés sur l'historique de santé passé. Un exemple plus joyeux pourrait être la réalisation de prévisions météorologiques pour le mois d'avril dans un lieu donné en se basant sur des données comprenant la latitude, la longitude, le changement climatique, la proximité de l'océan, les schémas du jet stream, et plus encore. -✅ Ce [diaporama](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sur les modèles météorologiques offre une perspective historique sur l'utilisation du ML dans l'analyse météorologique. +✅ Cette [présentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sur les modèles météorologiques offre une perspective historique sur l'utilisation du ML dans l'analyse météorologique. -## Tâches avant la construction +## Tâches préalables à la construction -Avant de commencer à construire votre modèle, plusieurs tâches doivent être accomplies. Pour tester votre question et formuler une hypothèse basée sur les prédictions d'un modèle, vous devez identifier et configurer plusieurs éléments. +Avant de commencer à construire votre modèle, il y a plusieurs tâches que vous devez accomplir. Pour tester votre question et formuler une hypothèse basée sur les prédictions d'un modèle, vous devez identifier et configurer plusieurs éléments. ### Données -Pour répondre à votre question avec certitude, vous avez besoin d'une quantité suffisante de données du bon type. À ce stade, vous devez faire deux choses : +Pour pouvoir répondre à votre question avec une certaine certitude, vous avez besoin d'une bonne quantité de données du bon type. Il y a deux choses que vous devez faire à ce stade : -- **Collecter des données**. En gardant à l'esprit la leçon précédente sur l'équité dans l'analyse des données, collectez vos données avec soin. Soyez conscient des sources de ces données, des biais inhérents qu'elles pourraient avoir, et documentez leur origine. -- **Préparer les données**. Il existe plusieurs étapes dans le processus de préparation des données. Vous pourriez avoir besoin de rassembler des données et de les normaliser si elles proviennent de sources diverses. Vous pouvez améliorer la qualité et la quantité des données par divers moyens, comme convertir des chaînes de caractères en nombres (comme nous le faisons dans [Clustering](../../5-Clustering/1-Visualize/README.md)). Vous pourriez également générer de nouvelles données basées sur les originales (comme nous le faisons dans [Classification](../../4-Classification/1-Introduction/README.md)). Vous pouvez nettoyer et éditer les données (comme nous le ferons avant la leçon sur [Web App](../../3-Web-App/README.md)). Enfin, vous pourriez également avoir besoin de les randomiser et de les mélanger, selon vos techniques d'entraînement. +- **Collecter des données**. En gardant à l'esprit la leçon précédente sur l'équité dans l'analyse des données, collectez vos données avec soin. Soyez conscient des sources de ces données, de leurs biais intrinsèques éventuels, et documentez leur origine. +- **Préparer les données**. Il y a plusieurs étapes dans le processus de préparation des données. Vous pourriez avoir besoin de rassembler des données et de les normaliser si elles proviennent de sources diverses. Vous pouvez améliorer la qualité et la quantité des données par diverses méthodes telles que la conversion de chaînes en nombres (comme nous le faisons dans [Clustering](../../5-Clustering/1-Visualize/README.md)). Vous pouvez aussi générer de nouvelles données, basées sur l'originale (comme dans [Classification](../../4-Classification/1-Introduction/README.md)). Vous pouvez nettoyer et éditer les données (comme nous le ferons avant la leçon [Web App](../../3-Web-App/README.md)). Enfin, vous pourriez aussi avoir besoin de les randomiser et de les mélanger, en fonction de vos techniques d'entraînement. -✅ Après avoir collecté et traité vos données, prenez un moment pour vérifier si leur structure vous permettra de répondre à votre question. Il se peut que les données ne soient pas performantes pour votre tâche, comme nous le découvrons dans nos leçons sur [Clustering](../../5-Clustering/1-Visualize/README.md) ! +✅ Après avoir collecté et traité vos données, prenez un moment pour vérifier si leur forme vous permettra d'aborder la question prévue. Il se peut que les données ne fonctionnent pas bien pour la tâche donnée, comme nous le découvrons dans nos leçons [Clustering](../../5-Clustering/1-Visualize/README.md) ! ### Caractéristiques et cible -Une [caractéristique](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) est une propriété mesurable de vos données. Dans de nombreux ensembles de données, elle est exprimée comme un en-tête de colonne tel que 'date', 'taille' ou 'couleur'. Votre variable de caractéristique, généralement représentée par `X` dans le code, représente la variable d'entrée qui sera utilisée pour entraîner le modèle. +Une [caractéristique](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) est une propriété mesurable de vos données. Dans de nombreux ensembles de données, elle est exprimée comme un en-tête de colonne tel que « date », « taille » ou « couleur ». Votre variable caractéristique, généralement représentée par `X` dans le code, représente la variable d'entrée qui sera utilisée pour entraîner un modèle. -Une cible est ce que vous essayez de prédire. La cible, généralement représentée par `y` dans le code, représente la réponse à la question que vous essayez de poser à vos données : en décembre, quelle **couleur** de citrouilles sera la moins chère ? À San Francisco, quels quartiers auront les meilleurs **prix** immobiliers ? Parfois, la cible est également appelée attribut d'étiquette. +Une cible est ce que vous essayez de prédire. La cible, généralement représentée par `y` dans le code, représente la réponse à la question que vous posez à vos données : en décembre, quelle **couleur** de citrouilles sera la moins chère ? à San Francisco, quels quartiers auront le meilleur **prix** immobilier ? Parfois, la cible est aussi appelée attribut d'étiquette. -### Sélectionner votre variable de caractéristique +### Sélectionner votre variable caractéristique -🎓 **Sélection et extraction de caractéristiques** Comment savoir quelle variable choisir lors de la construction d'un modèle ? Vous passerez probablement par un processus de sélection ou d'extraction de caractéristiques pour choisir les bonnes variables pour le modèle le plus performant. Cependant, ce ne sont pas la même chose : "L'extraction de caractéristiques crée de nouvelles caractéristiques à partir de fonctions des caractéristiques originales, tandis que la sélection de caractéristiques retourne un sous-ensemble des caractéristiques." ([source](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Sélection et extraction des caractéristiques** Comment savoir quelle variable choisir lors de la construction d'un modèle ? Vous passerez probablement par un processus de sélection ou d'extraction des caractéristiques pour choisir les bonnes variables pour le modèle le plus performant. Ce ne sont cependant pas la même chose : « L'extraction des caractéristiques crée de nouvelles caractéristiques à partir de fonctions des caractéristiques originales, tandis que la sélection des caractéristiques retourne un sous-ensemble des caractéristiques. » ([source](https://wikipedia.org/wiki/Feature_selection)) -### Visualiser vos données +### Visualisez vos données -Un aspect important de la boîte à outils du data scientist est la capacité de visualiser les données à l'aide de plusieurs excellentes bibliothèques telles que Seaborn ou MatPlotLib. Représenter vos données visuellement peut vous permettre de découvrir des corrélations cachées que vous pouvez exploiter. Vos visualisations peuvent également vous aider à découvrir des biais ou des données déséquilibrées (comme nous le découvrons dans [Classification](../../4-Classification/2-Classifiers-1/README.md)). +Un aspect important de la boîte à outils du data scientist est la capacité à visualiser les données en utilisant plusieurs excellentes bibliothèques telles que Seaborn ou MatPlotLib. Représenter vos données visuellement peut vous permettre de découvrir des corrélations cachées que vous pouvez exploiter. Vos visualisations peuvent aussi vous aider à détecter des biais ou des données déséquilibrées (comme nous le découvrons dans [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Diviser votre ensemble de données +### Divisez votre ensemble de données -Avant l'entraînement, vous devez diviser votre ensemble de données en deux ou plusieurs parties de taille inégale qui représentent toujours bien les données. +Avant l'entraînement, vous devez diviser votre ensemble de données en deux parties ou plus de tailles inégales qui représentent toujours bien les données. -- **Entraînement**. Cette partie de l'ensemble de données est ajustée à votre modèle pour l'entraîner. Cet ensemble constitue la majorité de l'ensemble de données original. -- **Test**. Un ensemble de test est un groupe indépendant de données, souvent issu des données originales, que vous utilisez pour confirmer les performances du modèle construit. -- **Validation**. Un ensemble de validation est un petit groupe indépendant d'exemples que vous utilisez pour ajuster les hyperparamètres ou l'architecture du modèle afin d'améliorer le modèle. Selon la taille de vos données et la question que vous posez, vous pourriez ne pas avoir besoin de construire ce troisième ensemble (comme nous le notons dans [Prévisions de séries temporelles](../../7-TimeSeries/1-Introduction/README.md)). +- **Entraînement**. Cette partie de l'ensemble de données sert à ajuster votre modèle pour l'entraîner. Cet ensemble constitue la majorité des données originales. +- **Test**. Un ensemble de test est un groupe indépendant de données, souvent tiré des données originales, que vous utilisez pour confirmer la performance du modèle construit. +- **Validation**. Un ensemble de validation est un groupe indépendant plus petit d'exemples que vous utilisez pour régler les hyperparamètres ou l'architecture du modèle afin d'améliorer celui-ci. Selon la taille de vos données et la question posée, vous pourriez ne pas avoir besoin de construire ce troisième ensemble (comme nous le notons dans [Prévision des séries temporelles](../../7-TimeSeries/1-Introduction/README.md)). ## Construire un modèle -À l'aide de vos données d'entraînement, votre objectif est de construire un modèle, ou une représentation statistique de vos données, en utilisant divers algorithmes pour **l'entraîner**. L'entraînement d'un modèle l'expose aux données et lui permet de faire des hypothèses sur les motifs perçus qu'il découvre, valide, et accepte ou rejette. +En utilisant vos données d'entraînement, votre objectif est de construire un modèle, ou une représentation statistique de vos données, en utilisant divers algorithmes pour **l'entraîner**. L'entraînement d'un modèle l'expose aux données et lui permet de faire des hypothèses sur les motifs perçus qu'il découvre, valide, et accepte ou rejette. -### Décider d'une méthode d'entraînement +### Choisir une méthode d'entraînement -En fonction de votre question et de la nature de vos données, vous choisirez une méthode pour les entraîner. En parcourant [la documentation de Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que nous utilisons dans ce cours - vous pouvez explorer de nombreuses façons d'entraîner un modèle. Selon votre expérience, vous pourriez devoir essayer plusieurs méthodes différentes pour construire le meilleur modèle. Vous passerez probablement par un processus où les data scientists évaluent les performances d'un modèle en lui fournissant des données non vues auparavant, en vérifiant la précision, les biais, et d'autres problèmes dégradant la qualité, et en sélectionnant la méthode d'entraînement la plus appropriée pour la tâche. +Selon votre question et la nature de vos données, vous choisirez une méthode pour l'entraîner. En parcourant la [documentation de Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que nous utilisons dans ce cours - vous pouvez explorer plusieurs façons d'entraîner un modèle. Selon votre expérience, vous devrez peut-être essayer plusieurs méthodes différentes pour construire le meilleur modèle. Vous êtes susceptible de passer par un processus où les data scientists évaluent la performance d'un modèle en lui fournissant des données non vues, vérifient la précision, le biais, et d'autres problèmes dégradant la qualité, puis sélectionnent la méthode d'entraînement la plus appropriée pour la tâche. ### Entraîner un modèle -Avec vos données d'entraînement, vous êtes prêt à les 'ajuster' pour créer un modèle. Vous remarquerez que dans de nombreuses bibliothèques ML, vous trouverez le code 'model.fit' - c'est à ce moment que vous envoyez votre variable de caractéristique sous forme de tableau de valeurs (généralement 'X') et une variable cible (généralement 'y'). +Armé de vos données d'entraînement, vous êtes prêt à le « fitter » pour créer un modèle. Vous remarquerez que dans beaucoup de bibliothèques ML, on trouve le code `model.fit` - c'est à ce moment que vous envoyez votre variable caractéristique sous forme de tableau de valeurs (généralement `X`) et une variable cible (généralement `y`). ### Évaluer le modèle -Une fois le processus d'entraînement terminé (il peut nécessiter de nombreuses itérations, ou 'époques', pour entraîner un grand modèle), vous pourrez évaluer la qualité du modèle en utilisant des données de test pour mesurer ses performances. Ces données sont un sous-ensemble des données originales que le modèle n'a pas analysées auparavant. Vous pouvez imprimer un tableau de métriques sur la qualité de votre modèle. +Une fois le processus d'entraînement terminé (cela peut prendre plusieurs itérations, ou « époques », pour entraîner un grand modèle), vous pourrez évaluer la qualité du modèle en utilisant des données de test pour mesurer ses performances. Ces données sont un sous-ensemble des données originales que le modèle n'a pas encore analysées. Vous pouvez afficher un tableau des métriques concernant la qualité de votre modèle. 🎓 **Ajustement du modèle** -Dans le contexte de l'apprentissage automatique, l'ajustement du modèle fait référence à la précision de la fonction sous-jacente du modèle lorsqu'il tente d'analyser des données qu'il ne connaît pas. +Dans le contexte de l'apprentissage automatique, l'ajustement du modèle fait référence à la précision de la fonction sous-jacente du modèle alors qu'il tente d'analyser des données qu'il ne connaît pas. -🎓 **Sous-ajustement** et **sur-ajustement** sont des problèmes courants qui dégradent la qualité du modèle, car le modèle s'ajuste soit pas assez bien, soit trop bien. Cela entraîne des prédictions soit trop alignées, soit trop peu alignées avec ses données d'entraînement. Un modèle sur-ajusté prédit trop bien les données d'entraînement car il a appris trop en détail les données et le bruit. Un modèle sous-ajusté n'est pas précis car il ne peut ni analyser correctement ses données d'entraînement ni les données qu'il n'a pas encore 'vues'. +🎓 L'**underfitting** (sous-apprentissage) et l'**overfitting** (sur-apprentissage) sont des problèmes courants qui dégradent la qualité du modèle, car le modèle est soit mal ajusté, soit trop ajusté. Cela fait que le modèle fait des prédictions soit trop proches, soit trop éloignées de ses données d'entraînement. Un modèle surajusté prédit trop bien les données d'entraînement parce qu'il a trop appris les détails et le bruit des données. Un modèle sous-ajusté n'est pas précis car il ne peut ni analyser correctement ses données d'entraînement ni les données qu'il n'a pas encore « vues ». -![modèle sur-ajusté](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/fr/overfitting.1c132d92bfd93cb6.webp) > Infographie par [Jen Looper](https://twitter.com/jenlooper) -## Ajustement des paramètres +## Réglage des paramètres -Une fois votre entraînement initial terminé, observez la qualité du modèle et envisagez de l'améliorer en ajustant ses 'hyperparamètres'. Lisez-en plus sur le processus [dans la documentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Une fois votre entraînement initial terminé, observez la qualité du modèle et envisagez de l'améliorer en ajustant ses « hyperparamètres ». Pour en savoir plus sur ce processus, consultez la [documentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Prédiction -C'est le moment où vous pouvez utiliser des données complètement nouvelles pour tester la précision de votre modèle. Dans un contexte ML 'appliqué', où vous construisez des actifs web pour utiliser le modèle en production, ce processus pourrait impliquer de recueillir des entrées utilisateur (par exemple, une pression sur un bouton) pour définir une variable et l'envoyer au modèle pour une inférence ou une évaluation. +C'est le moment où vous pouvez utiliser des données complètement nouvelles pour tester la précision de votre modèle. Dans un contexte de ML « appliqué », où vous construisez des actifs web pour utiliser le modèle en production, ce processus peut impliquer de recueillir une entrée utilisateur (par exemple, l'appui d'un bouton) pour définir une variable et l'envoyer au modèle pour inférence, ou évaluation. -Dans ces leçons, vous découvrirez comment utiliser ces étapes pour préparer, construire, tester, évaluer et prédire - tous les gestes d'un data scientist et plus encore, au fur et à mesure que vous progressez dans votre parcours pour devenir un ingénieur ML 'full stack'. +Dans ces leçons, vous découvrirez comment utiliser ces étapes pour préparer, construire, tester, évaluer et prédire – tous les gestes d'un data scientist et plus encore, à mesure que vous progressez dans votre parcours pour devenir un ingénieur ML « full stack ». --- ## 🚀Défi -Dessinez un diagramme de flux reflétant les étapes d'un praticien ML. Où vous situez-vous actuellement dans le processus ? Où prévoyez-vous rencontrer des difficultés ? Qu'est-ce qui vous semble facile ? +Dessinez un organigramme reflétant les étapes d'un praticien ML. Où vous situez-vous actuellement dans ce processus ? Où prévoyez-vous rencontrer des difficultés ? Qu'est-ce qui vous semble facile ? ## [Quiz après la leçon](https://ff-quizzes.netlify.app/en/ml/) -## Révision et auto-apprentissage +## Révision & Auto-apprentissage -Cherchez en ligne des interviews de data scientists qui discutent de leur travail quotidien. En voici [une](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Cherchez en ligne des interviews de data scientists qui parlent de leur travail quotidien. En voici [une](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Devoir -[Interviewez un data scientist](assignment.md) +[Interviewer un data scientist](assignment.md) --- -**Avertissement** : -Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction professionnelle humaine. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file + +**Avis de non-responsabilité** : +Ce document a été traduit à l’aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d’assurer l’exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction professionnelle humaine est recommandée. Nous déclinons toute responsabilité en cas de malentendus ou de mauvaises interprétations résultant de l’utilisation de cette traduction. + \ No newline at end of file diff --git a/translations/fr/2-Regression/3-Linear/README.md b/translations/fr/2-Regression/3-Linear/README.md index 52b33162b1..92b8728115 100644 --- a/translations/fr/2-Regression/3-Linear/README.md +++ b/translations/fr/2-Regression/3-Linear/README.md @@ -6,92 +6,92 @@ La régression linéaire est utilisée lorsque nous voulons prédire une **valeu Elle fonctionne en trouvant une droite qui représente au mieux la relation entre les caractéristiques d'entrée et la sortie. Dans cette leçon, nous nous concentrons sur la compréhension du concept avant d'explorer des techniques de régression plus avancées. -![Comparaison entre régression linéaire et polynomiale](../../../../translated_images/fr/linear-polynomial.5523c7cb6576ccab.webp) +![Infographie régression linéaire vs polynomiale](../../../../translated_images/fr/linear-polynomial.5523c7cb6576ccab.webp) > Infographie par [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Quiz pré-lecture](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz pré-conférence](https://ff-quizzes.netlify.app/en/ml/) > ### [Cette leçon est disponible en R !](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Introduction +### Introduction -Jusqu'à présent, vous avez exploré ce qu'est la régression avec des données d'exemple issues du dataset de prix de citrouilles que nous utiliserons tout au long de cette leçon. Vous l'avez également visualisé avec Matplotlib. +Jusqu'à présent, vous avez exploré ce qu'est la régression avec des données d'exemple extraites du jeu de données sur les prix des citrouilles que nous utiliserons tout au long de cette leçon. Vous l'avez également visualisée avec Matplotlib. -Vous êtes maintenant prêt à approfondir la régression en Machine Learning. Alors que la visualisation permet de donner du sens aux données, la véritable puissance du Machine Learning provient de _l'entraînement des modèles_. Les modèles sont entraînés sur des données historiques afin de capturer automatiquement les dépendances dans les données, et ils permettent de prédire les résultats pour de nouvelles données que le modèle n'a jamais vues auparavant. +Vous êtes maintenant prêt à approfondir la régression pour le ML. Alors que la visualisation vous permet de comprendre les données, la vraie puissance de l'apprentissage automatique vient de _l'entraînement des modèles_. Les modèles sont entraînés sur des données historiques pour capturer automatiquement les dépendances des données, ce qui permet de prédire les résultats pour de nouvelles données que le modèle n'a pas vues auparavant. -Dans cette leçon, vous apprendrez davantage sur deux types de régression : la _régression linéaire basique_ et la _régression polynomiale_, ainsi que quelques notions mathématiques sous-jacentes à ces techniques. Ces modèles nous permettront de prédire les prix des citrouilles en fonction de différentes données d'entrée. +Dans cette leçon, vous apprendrez davantage sur deux types de régression : la _régression linéaire basique_ et la _régression polynomiale_, ainsi que sur certaines mathématiques sous-jacentes à ces techniques. Ces modèles nous permettront de prédire les prix des citrouilles en fonction de différentes données d'entrée. -[![ML pour débutants - Comprendre la régression linéaire](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML pour débutants - Comprendre la régression linéaire](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML pour débutants - Comprendre la régression linéaire") -> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo introductive sur la régression linéaire. +> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo de présentation de la régression linéaire. -> Tout au long de ce parcours, nous partons du principe d’une connaissance mathématique minimale, et cherchons à la rendre accessible aux étudiants venant d’autres domaines, donc surveillez les notes, 🧮 encadrés, diagrammes et autres outils pédagogiques pour faciliter la compréhension. +> Tout au long de ce programme, nous supposons des connaissances minimales en mathématiques, et cherchons à rendre cela accessible aux étudiants venant d'autres domaines. Soyez attentifs aux notes, 🧮 encadrés, diagrammes et autres outils pédagogiques pour faciliter la compréhension. ### Prérequis -Vous devriez maintenant connaître la structure des données des citrouilles que nous examinons. Vous les trouverez préchargées et pré-nettoyées dans le fichier _notebook.ipynb_ de cette leçon. Dans ce fichier, le prix des citrouilles est affiché par boisseau dans un nouveau DataFrame. Assurez-vous de pouvoir exécuter ces notebooks dans des kernels de Visual Studio Code. +Vous devriez maintenant être familiarisé avec la structure des données sur les citrouilles que nous examinons. Vous pouvez les trouver préchargées et pré-nettoyées dans le fichier _notebook.ipynb_ accompagnant cette leçon. Dans ce fichier, le prix des citrouilles est affiché par boisseau dans un nouveau DataFrame. Assurez-vous de pouvoir exécuter ces notebooks dans les kernels de Visual Studio Code. ### Préparation Pour rappel, vous chargez ces données afin de pouvoir leur poser des questions. -- Quel est le meilleur moment pour acheter des citrouilles ? -- Quel prix puis-je attendre pour une caisse de mini citrouilles ? -- Dois-je les acheter en paniers de demi-boisseau ou par cartons de 1 1/9 boisseau ? +- Quel est le meilleur moment pour acheter des citrouilles ? +- Quel prix puis-je attendre pour une caisse de mini citrouilles ? +- Dois-je les acheter en paniers demi-boisseau ou en boîtes de 1 1/9 boisseau ? Continuons à creuser ces données. -Dans la leçon précédente, vous avez créé un DataFrame Pandas et l'avez rempli avec une partie du dataset original, en standardisant les prix par boisseau. Ce faisant, vous avez cependant rassemblé environ 400 points de données uniquement pour les mois d'automne. +Dans la leçon précédente, vous avez créé un DataFrame Pandas et l'avez rempli avec une partie du jeu de données original, standardisant les prix par boisseau. Cependant, vous n'avez pu récupérer qu'environ 400 points de données et uniquement pour les mois d'automne. -Jetez un coup d'œil aux données que nous avons préchargées dans le notebook accompagnant cette leçon. Les données sont préchargées et une première représentation en nuage de points est affichée pour montrer les données par mois. Peut-être pouvons-nous obtenir plus de détails sur la nature des données en les nettoyant davantage. +Jetez un œil aux données que nous avons préchargées dans le notebook accompagnant cette leçon. Les données sont préchargées et un nuage de points initial est tracé pour montrer les données par mois. Nous pourrions obtenir un peu plus de détails sur la nature des données en les nettoyant davantage. ## Une droite de régression linéaire -Comme vous l'avez appris dans la Leçon 1, le but d'un exercice de régression linéaire est de pouvoir tracer une droite pour : +Comme vous l'avez appris dans la Leçon 1, l'objectif d'un exercice de régression linéaire est de pouvoir tracer une droite pour : - **Montrer les relations entre variables**. Montrer la relation entre les variables -- **Faire des prédictions**. Faire des prédictions précises sur la position d’un nouveau point de données par rapport à cette droite. +- **Faire des prédictions**. Faire des prédictions précises sur la position d'un nouveau point de données par rapport à cette droite. -Il est typique que la **Régression des moindres carrés** dessine ce type de droite. Le terme "moindres carrés" fait référence au processus de minimisation de l'erreur totale dans notre modèle. Pour chaque point de données, nous mesurons la distance verticale (appelée résidu) entre le point réel et notre droite de régression. +Il est typique de la **régression aux moindres carrés** de tracer ce type de droite. Le terme « moindres carrés » fait référence au processus de minimisation de l'erreur totale dans notre modèle. Pour chaque point de données, nous mesurons la distance verticale (appelée résidu) entre le point réel et notre droite de régression. -Nous mettons au carré ces distances pour deux raisons principales : +Nous élevons ces distances au carré pour deux raisons principales : -1. **Magnitude plutôt que direction :** Nous voulons traiter une erreur de -5 de la même manière qu’une erreur de +5. La mise au carré rend toutes les valeurs positives. +1. **Importance de la grandeur plutôt que du sens** : Nous voulons traiter une erreur de -5 de la même façon qu'une erreur de +5. Le carré transforme toutes les valeurs en positives. -2. **Pénaliser les valeurs extrêmes :** Mettre au carré donne plus de poids aux erreurs importantes, ce qui force la droite à rester plus proche des points éloignés. +2. **Sanction des valeurs aberrantes** : Le carré donne plus de poids aux grandes erreurs, obligeant la droite à rester plus proche des points éloignés. -Nous ajoutons ensuite toutes ces valeurs mises au carré. Notre objectif est de trouver la droite spécifique pour laquelle cette somme finale est la plus faible (plus petite valeur possible) — d'où le nom "moindres carrés". +Nous additionnons alors toutes ces valeurs au carré. Notre objectif est de trouver la droite spécifique où cette somme finale est la plus faible (la plus petite valeur possible) — d'où le nom « moindres carrés ». -> **🧮 Montrez-moi les mathématiques** -> -> Cette droite, appelée _droite d'ajustement_, peut s'exprimer par [une équation](https://en.wikipedia.org/wiki/Simple_linear_regression) : +> **🧮 Montrez-moi les maths** +> +> Cette droite, appelée _droite d'ajustement_, peut s'exprimer par [une équation](https://fr.wikipedia.org/wiki/R%C3%A9gression_lin%C3%A9aire_simple) : > > ``` > Y = a + bX > ``` + +> `X` est la 'variable explicative'. `Y` est la 'variable dépendante'. La pente de la droite est `b` et `a` est l'ordonnée à l'origine, qui correspond à la valeur de `Y` lorsque `X = 0`. > -> `X` est la « variable explicative ». `Y` est la « variable dépendante ». La pente de la droite est `b` et `a` est l'ordonnée à l'origine, qui correspond à la valeur de `Y` quand `X = 0`. -> ->![calculer la pente](../../../../translated_images/fr/slope.f3c9d5910ddbfcf9.webp) +>![calcul de la pente](../../../../translated_images/fr/slope.f3c9d5910ddbfcf9.webp) > > D'abord, calculez la pente `b`. Infographie par [Jen Looper](https://twitter.com/jenlooper) > -> En d’autres termes, et en se référant à la question originale de nos données sur les citrouilles : "prédire le prix d’une citrouille par boisseau selon le mois", `X` se réfèrerait au prix et `Y` au mois de vente. +> En d'autres termes, et en se référant à la question originale de nos données sur les citrouilles : « prédire le prix d'une citrouille par boisseau selon le mois », `X` correspondrait au prix et `Y` au mois de vente. > >![compléter l'équation](../../../../translated_images/fr/calculation.a209813050a1ddb1.webp) > -> Calculez la valeur de Y. Si vous payez environ 4 $, cela doit être avril ! Infographie par [Jen Looper](https://twitter.com/jenlooper) +> Calculez la valeur de Y. Si vous payez environ 4 $, cela doit être en avril ! Infographie par [Jen Looper](https://twitter.com/jenlooper) > -> Les mathématiques qui calculent la droite doivent montrer la pente de la droite, qui dépend aussi de l’ordonnée à l'origine, ou la position de `Y` lorsque `X = 0`. +> Les calculs qui déterminent la droite doivent montrer la pente de celle-ci, qui dépend aussi de l'ordonnée à l'origine, soit où se situe `Y` quand `X = 0`. > -> Vous pouvez observer la méthode de calcul de ces valeurs sur le site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visitez également [ce calculateur de moindres carrés](https://www.mathsisfun.com/data/least-squares-calculator.html) pour voir comment les valeurs numériques influencent la droite. +> Vous pouvez consulter la méthode de calcul de ces valeurs sur le site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visitez également [ce calculateur de moindres carrés](https://www.mathsisfun.com/data/least-squares-calculator.html) pour voir comment les valeurs influent sur la droite. ## Corrélation -Un autre terme à comprendre est le **coefficient de corrélation** entre les variables X et Y données. À l’aide d’un nuage de points, vous pouvez rapidement visualiser ce coefficient. Un graphique avec les points de données alignés de façon nette possède une corrélation élevée, mais un graphique avec des points dispersés partout entre X et Y a une faible corrélation. +Un autre terme à comprendre est le **coefficient de corrélation** entre deux variables X et Y données. Avec un diagramme de dispersion, vous pouvez rapidement visualiser ce coefficient. Un diagramme avec des points alignés proprement manifeste une forte corrélation, tandis qu'un nuage de points dispersé partout entre X et Y indique une faible corrélation. -Un bon modèle de régression linéaire est celui qui a un coefficient de corrélation élevé (plus proche de 1 que de 0) utilisant la méthode des moindres carrés avec une droite de régression. +Un bon modèle de régression linéaire possède un coefficient de corrélation élevé (proche de 1 plutôt que de 0) en utilisant la méthode des moindres carrés avec une droite de régression. -✅ Exécutez le notebook accompagnant cette leçon et regardez le nuage de points du mois par rapport au prix. Les données associant le mois au prix pour les ventes de citrouilles semblent-elles avoir une corrélation élevée ou faible selon votre interprétation visuelle du nuage de points ? Cela change-t-il si vous utilisez une mesure plus fine au lieu de `Month`, par ex. *le jour de l’année* (c’est-à-dire le nombre de jours écoulés depuis le début de l’année) ? +✅ Exécutez le notebook accompagné de cette leçon et regardez le nuage de points du mois par rapport au prix. Les données associant le mois au prix pour les ventes de citrouilles semblent-elles présenter une forte ou faible corrélation, selon votre interprétation visuelle du nuage de points ? Cela change-t-il si vous utilisez une mesure plus fine que `Month`, par exemple *jour de l'année* (le nombre de jours depuis le début de l'année) ? -Dans le code ci-dessous, nous supposons que nous avons nettoyé les données et obtenu un DataFrame appelé `new_pumpkins`, similaire à ce qui suit : +Dans le code ci-dessous, nous supposerons que les données ont été nettoyées, et que nous avons obtenu un DataFrame nommé `new_pumpkins`, similaire à celui-ci : ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Le code pour nettoyer les données est disponible dans [`notebook.ipynb`](notebook.ipynb). Nous avons effectué les mêmes étapes de nettoyage que dans la leçon précédente, et avons calculé la colonne `DayOfYear` en utilisant l'expression suivante : +> Le code pour nettoyer les données est disponible dans [`notebook.ipynb`](notebook.ipynb). Nous avons effectué les mêmes étapes de nettoyage que dans la leçon précédente et calculé la colonne `DayOfYear` selon l'expression suivante : ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Maintenant que vous comprenez les mathématiques derrière la régression linéaire, créons un modèle de régression pour voir si nous pouvons prédire quel emballage de citrouilles aura les meilleurs prix. Quelqu'un achetant des citrouilles pour un patch de citrouilles à l'occasion des fêtes voudrait peut-être cette information pour optimiser ses achats. +Maintenant que vous comprenez les maths derrière la régression linéaire, créons un modèle de régression pour voir si nous pouvons prédire quel conditionnement de citrouilles aura les meilleurs prix. Quelqu'un achetant des citrouilles pour une fête pourrait vouloir cette information pour optimiser ses achats de lots de citrouilles. ## Recherche de corrélation -[![ML pour débutants - Recherche de corrélation : la clé de la régression linéaire](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![ML pour débutants - Recherche de corrélation : clé de la régression linéaire](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML pour débutants - Recherche de corrélation : clé de la régression linéaire") -> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo introductive sur la corrélation. +> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo de présentation de la corrélation. -D’après la leçon précédente, vous avez probablement vu que le prix moyen pour différents mois ressemble à ceci : +Depuis la leçon précédente, vous avez probablement vu que le prix moyen par mois ressemble à ceci : Prix moyen par mois -Cela suggère qu’il devrait y avoir une certaine corrélation, et nous pouvons essayer d'entraîner un modèle de régression linéaire pour prédire la relation entre `Month` et `Price`, ou entre `DayOfYear` et `Price`. Voici le nuage de points qui montre cette dernière relation : +Cela suggère qu'il y a une corrélation, et nous pouvons essayer d'entraîner un modèle de régression linéaire pour prédire la relation entre `Month` et `Price`, ou entre `DayOfYear` et `Price`. Voici le nuage de points montrant cette dernière relation : -Nuage de points du prix en fonction du jour de l'année +Nuage de points Prix vs. Jour de l'année -Voyons s’il existe une corrélation en utilisant la fonction `corr` : +Voyons s'il existe une corrélation avec la fonction `corr` : ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Il semble que la corrélation soit plutôt faible, -0.15 pour `Month` et -0.17 pour `DayOfMonth`, mais il pourrait y avoir une autre relation importante. Il semble y avoir différents groupes de prix correspondant à différentes variétés de citrouilles. Pour confirmer cette hypothèse, traçons chaque catégorie de citrouilles avec une couleur différente. En passant un paramètre `ax` à la fonction de tracé `scatter`, nous pouvons représenter tous les points sur le même graphique : +La corrélation semble assez faible, -0,15 selon `Month` et -0,17 selon `DayOfYear`, mais il pourrait y avoir une autre relation importante. Il semble y avoir différents groupes de prix correspondant à différentes variétés de citrouilles. Pour confirmer cette hypothèse, traçons chaque catégorie de citrouilles avec une couleur différente. En passant un paramètre `ax` à la fonction de tracé `scatter` nous pouvons tracer tous les points sur le même graphique : ```python ax=None @@ -140,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Nuage de points du prix en fonction du jour de l'année coloré par variété +Nuage de points Prix vs. Jour de l'année, avec couleurs -Notre investigation suggère que la variété a plus d’effet sur le prix global que la date réelle de vente. Nous pouvons le voir avec un graphique en barres : +Notre enquête suggère que la variété influence davantage le prix global que la date de vente. Nous pouvons le voir avec un graphique à barres : ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Graphique en barres du prix selon la variété +Graphique à barres prix vs variété -Concentrons-nous pour l’instant sur une seule variété de citrouille, le type « pie », et voyons l’effet de la date sur le prix : +Concentrons-nous pour le moment sur une seule variété de citrouilles, le 'pie type', et voyons l'effet de la date sur le prix : ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Nuage de points du prix en fonction du jour de l'année pour les citrouilles de type pie +Nuage de points Prix vs. Jour de l'année, catégorie pie type -Si nous calculons maintenant la corrélation entre `Price` et `DayOfYear` avec la fonction `corr`, nous obtiendrons environ `-0.27` — ce qui signifie que l’entraînement d’un modèle prédictif est pertinent. +En calculant la corrélation entre `Price` et `DayOfYear` avec la fonction `corr`, on obtient environ `-0.27` — ce qui indique qu'entraîner un modèle prédictif a du sens. -> Avant d’entraîner un modèle de régression linéaire, il est important de s’assurer que nos données sont propres. La régression linéaire ne fonctionne pas bien avec des valeurs manquantes, il est donc judicieux de supprimer toutes les cellules vides : +> Avant d'entraîner un modèle de régression linéaire, il est important de s'assurer que nos données sont propres. La régression linéaire ne fonctionne pas bien avec des valeurs manquantes, il est donc logique de supprimer toutes les cellules vides : ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Une autre approche serait de remplir ces valeurs vides avec la moyenne des valeurs de la colonne correspondante. +Une autre approche serait de remplir ces valeurs manquantes avec la moyenne de la colonne correspondante. ## Régression linéaire simple -[![ML pour débutants - Régression linéaire et polynomiale avec Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ML pour débutants - Régression linéaire et polynomiale avec Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML pour débutants - Régression linéaire et polynomiale avec Scikit-learn") -> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo introductive sur la régression linéaire et polynomiale. +> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo de présentation de la régression linéaire et polynomiale. -Pour entraîner notre modèle de régression linéaire, nous utiliserons la bibliothèque **Scikit-learn**. +Pour entraîner notre modèle de régression linéaire, nous allons utiliser la bibliothèque **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Nous commençons par séparer les valeurs d'entrée (features) et la sortie attendue (label) dans des tableaux numpy distincts : +Nous commençons par séparer les valeurs d'entrée (caractéristiques) et la sortie attendue (étiquette) en tableaux numpy distincts : ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Notez que nous avons dû effectuer un `reshape` sur les données d'entrée pour que le package de régression linéaire les comprenne correctement. La régression linéaire attend un tableau 2D en entrée, où chaque ligne du tableau correspond à un vecteur de caractéristiques d'entrée. Dans notre cas, comme nous avons une seule entrée, nous avons besoin d’un tableau de forme N×1, où N est la taille du dataset. +> Notez que nous avons dû appliquer un `reshape` aux données d'entrée pour que le package de régression linéaire les comprenne correctement. La régression linéaire attend un tableau 2D en entrée, où chaque ligne correspond à un vecteur de caractéristiques. Dans notre cas, n'ayant qu'une seule entrée, nous avons besoin d'un tableau de forme N×1, où N est la taille du jeu de données. -Ensuite, nous devons diviser les données en ensembles d'entraînement et de test, afin de pouvoir valider notre modèle après l’entraînement : +Ensuite, nous devons diviser les données en ensembles d'entraînement et de test, afin de pouvoir valider notre modèle après l'entraînement : ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Enfin, l’entraînement du modèle de régression linéaire réel ne prend que deux lignes de code. Nous définissons l’objet `LinearRegression`, et l'appliquons à nos données avec la méthode `fit` : +Enfin, l'entraînement du modèle de régression linéaire effectif ne prend que deux lignes de code. Nous définissons l'objet `LinearRegression`, puis l'ajustons à nos données avec la méthode `fit` : ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -L'objet `LinearRegression` après avoir été ajusté (`fit`) contient tous les coefficients de la régression, accessibles via la propriété `.coef_`. Dans notre cas, il n'y a qu'un seul coefficient, qui devrait être autour de `-0.017`. Cela signifie que les prix semblent baisser légèrement avec le temps, mais pas trop, d'environ 2 centimes par jour. Nous pouvons également accéder au point d'intersection de la régression avec l'axe des ordonnées en utilisant `lin_reg.intercept_` - il sera autour de `21` dans notre cas, indiquant le prix au début de l'année. +L'objet `LinearRegression` après l'entraînement (`fit`) contient tous les coefficients de la régression, auxquels on peut accéder grâce à la propriété `.coef_`. Dans notre cas, il n'y a qu'un seul coefficient, qui devrait être autour de `-0.017`. Cela signifie que les prix semblent baisser un peu avec le temps, mais pas trop, d'environ 2 centimes par jour. Nous pouvons également accéder au point d'intersection de la régression avec l'axe des Y en utilisant `lin_reg.intercept_` - il sera d'environ `21` dans notre cas, indiquant le prix au début de l'année. -Pour voir la précision de notre modèle, nous pouvons prédire les prix sur un ensemble de test, puis mesurer la proximité de nos prédictions avec les valeurs attendues. Cela peut être fait en utilisant la métrique de l'erreur quadratique moyenne (RMSE), qui est la racine de la moyenne de toutes les différences au carré entre la valeur attendue et la valeur prédite. +Pour voir à quel point notre modèle est précis, nous pouvons prédire les prix sur un jeu de données de test, puis mesurer à quel point nos prédictions sont proches des valeurs attendues. Cela peut être fait en utilisant la métrique de l'erreur quadratique moyenne (RMSE), qui est la racine de la moyenne de toutes les différences au carré entre la valeur attendue et la valeur prédite. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Notre erreur semble être autour de 2 points, ce qui est environ 17 %. Pas très bon. Un autre indicateur de la qualité du modèle est le **coefficient de détermination**, que l'on peut obtenir ainsi : +Notre erreur semble être autour de 2 points, ce qui représente environ 17 %. Pas très bon. Un autre indicateur de la qualité du modèle est le **coefficient de détermination**, qui peut être obtenu comme ceci : ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Si la valeur est 0, cela signifie que le modèle ne prend pas en compte les données d'entrée et agit comme le *pire prédicteur linéaire*, qui est simplement une valeur moyenne du résultat. Une valeur de 1 signifie que nous pouvons prédire parfaitement toutes les sorties attendues. Dans notre cas, le coefficient est autour de 0.06, ce qui est assez faible. + Si la valeur est 0, cela signifie que le modèle ne prend pas en compte les données d'entrée, et agit comme le *pire prédicteur linéaire*, qui est simplement la moyenne des résultats. La valeur de 1 signifie que nous pouvons parfaitement prédire toutes les sorties attendues. Dans notre cas, le coefficient est d'environ 0,06, ce qui est assez faible. -Nous pouvons aussi tracer les données de test avec la droite de régression pour mieux voir comment la régression fonctionne dans notre cas : +Nous pouvons aussi tracer les données de test avec la ligne de régression pour mieux voir comment fonctionne la régression dans notre cas : ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Régression Polynomiale -Un autre type de régression linéaire est la régression polynomiale. Bien qu'il existe parfois une relation linéaire entre les variables - plus la citrouille est volumineuse, plus son prix est élevé - parfois ces relations ne peuvent pas être représentées par un plan ou une droite. +Un autre type de régression linéaire est la régression polynomiale. Parfois, il existe une relation linéaire entre les variables - plus la citrouille est volumineuse, plus son prix est élevé - mais parfois ces relations ne peuvent pas être représentées par un plan ou une droite. -✅ Voici [quelques autres exemples](https://online.stat.psu.edu/stat501/lesson/9/9.8) de données pouvant utiliser la régression polynomiale. +✅ Voici [quelques exemples supplémentaires](https://online.stat.psu.edu/stat501/lesson/9/9.8) de données qui pourraient bénéficier d'une régression polynomiale. -Regardez à nouveau la relation entre Date et Prix. Ce nuage de points semble-t-il nécessairement devoir être analysé par une droite ? Les prix ne peuvent-ils pas fluctuer ? Dans ce cas, vous pouvez essayer la régression polynomiale. +Regardez à nouveau la relation entre la Date et le Prix. Est-ce que ce nuage de points semble devoir être nécessairement analysé par une droite ? Les prix ne peuvent-ils pas fluctuer ? Dans ce cas, vous pouvez essayer la régression polynomiale. -✅ Les polynômes sont des expressions mathématiques qui peuvent comporter une ou plusieurs variables et coefficients. +✅ Les polynômes sont des expressions mathématiques qui peuvent contenir une ou plusieurs variables et coefficients. -La régression polynomiale crée une courbe pour mieux ajuster des données non linéaires. Dans notre cas, si nous ajoutons une variable `DayOfYear` au carré dans les données d'entrée, nous devrions pouvoir ajuster nos données avec une courbe parabolique, qui aura un minimum à un certain point de l'année. +La régression polynomiale crée une courbe pour mieux ajuster des données non linéaires. Dans notre cas, si nous incluons une variable `DayOfYear` au carré dans les données d’entrée, nous devrions pouvoir ajuster nos données avec une courbe parabolique, qui aura un minimum à un certain point de l’année. -Scikit-learn inclut une API pratique de [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) pour combiner différentes étapes du traitement des données. Un **pipeline** est une chaîne d'**estimateurs**. Dans notre cas, nous allons créer un pipeline qui ajoute d'abord des caractéristiques polynomiales à notre modèle, puis entraîne la régression : +Scikit-learn inclut une API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) utile pour combiner différentes étapes de traitement des données. Un **pipeline** est une chaîne d'**estimateurs**. Dans notre cas, nous allons créer un pipeline qui ajoute d'abord des caractéristiques polynomiales à notre modèle, puis entraîne la régression : ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Utiliser `PolynomialFeatures(2)` signifie que nous inclurons tous les polynômes de degré 2 issus des données d'entrée. Dans notre cas cela veut dire simplement `DayOfYear`2, mais pour deux variables d'entrée X et Y, cela ajouterait X2, XY et Y2. On peut aussi utiliser des polynômes de degré plus élevé si on le souhaite. +Utiliser `PolynomialFeatures(2)` signifie que nous incluons tous les polynômes de degré 2 issus des données d’entrée. Dans notre cas cela signifie juste `DayOfYear`2, mais avec deux variables X et Y, cela ajouterait X2, XY et Y2. On peut aussi utiliser des polynômes de degré supérieur si on le souhaite. + +Les pipelines peuvent être utilisés de la même manière que l'objet `LinearRegression` d'origine, c’est-à-dire que nous pouvons `fit` le pipeline, puis utiliser `predict` pour obtenir les résultats de la prédiction : + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Pour tracer la courbe d'approximation lisse, nous utilisons `np.linspace` pour créer une plage uniforme de valeurs d'entrée, plutôt que de tracer directement sur des données de test non ordonnées (ce qui produirait une ligne en zigzag) : + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Les pipelines peuvent être utilisés de la même manière que l'objet `LinearRegression` d'origine, c'est-à-dire que nous pouvons `fit` le pipeline, puis utiliser `predict` pour obtenir les résultats de la prédiction. Voici le graphique montrant les données de test et la courbe d'approximation : +Voici le graphique montrant les données de test ainsi que la courbe d'approximation : Polynomial regression -Avec la régression polynomiale, nous pouvons obtenir un MSE légèrement plus faible et une détermination plus élevée, mais pas de manière significative. Nous devons prendre en compte d'autres caractéristiques ! +Avec la régression polynomiale, on obtient un RMSE légèrement plus bas et un coefficient de détermination plus élevé, mais pas de manière significative. Il faut prendre en compte d’autres caractéristiques ! -> Vous pouvez voir que les prix minimaux des citrouilles sont observés vers Halloween. Comment expliquer cela ? +> Vous pouvez voir que les prix minimums des citrouilles sont observés autour d'Halloween. Comment pouvez-vous expliquer cela ? -🎃 Félicitations, vous venez de créer un modèle qui peut aider à prédire le prix des citrouilles pour tarte. Vous pouvez probablement répéter la même procédure pour tous les types de citrouilles, mais cela serait fastidieux. Apprenons maintenant à prendre en compte la variété des citrouilles dans notre modèle ! +🎃 Félicitations, vous venez de créer un modèle qui peut aider à prédire le prix des citrouilles à pâtisserie. Vous pouvez probablement répéter la même procédure pour tous les types de citrouilles, mais ce serait fastidieux. Apprenons maintenant comment prendre en compte la variété de citrouille dans notre modèle ! -## Caractéristiques Catégoriques +## Caractéristiques Catégorielles -Dans un monde idéal, nous souhaitons pouvoir prédire les prix pour différentes variétés de citrouilles avec le même modèle. Cependant, la colonne `Variety` est un peu différente des colonnes comme `Month`, car elle contient des valeurs non numériques. Ces colonnes s'appellent **catégoriques**. +Dans un monde idéal, nous voulons pouvoir prédire les prix pour différentes variétés de citrouilles en utilisant le même modèle. Cependant, la colonne `Variety` est quelque peu différente des colonnes comme `Month`, car elle contient des valeurs non numériques. Ces colonnes sont appelées **catégoriques**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo présentant l’utilisation des caractéristiques catégoriques. +> 🎥 Cliquez sur l’image ci-dessus pour une courte vidéo présentant l’utilisation des caractéristiques catégorielles. Ici, vous pouvez voir comment le prix moyen dépend de la variété : Average price by variety -Pour prendre la variété en compte, il faut d'abord la convertir en forme numérique, c'est-à-dire **l'encoder**. Plusieurs méthodes existent : +Pour prendre la variété en compte, il faut d’abord la convertir en forme numérique, ou **l’encoder**. Il y a plusieurs façons de faire : -* Un simple **encodage numérique** va construire un tableau des différentes variétés, puis remplacer le nom de la variété par un indice dans ce tableau. Ce n’est pas la meilleure idée pour la régression linéaire, car la régression linéaire prend la valeur numérique réelle de cet indice et l’ajoute au résultat, multipliée par un coefficient. Or dans notre cas, la relation entre le numéro d'indice et le prix est clairement non linéaire, même si on ordonne les indices d'une certaine manière. -* **L'encodage one-hot** remplace la colonne `Variety` par 4 colonnes différentes, une pour chaque variété. Chaque colonne contient `1` si la ligne correspond à cette variété, et `0` sinon. Cela signifie qu'il y aura quatre coefficients dans la régression linéaire, un pour chaque variété de citrouille, correspondant au « prix de départ » (ou plutôt « prix supplémentaire ») pour cette variété particulière. +* Un simple **encodage numérique** construira un tableau des différentes variétés, puis remplacera le nom de la variété par un indice dans ce tableau. Ce n’est pas une bonne idée pour la régression linéaire, car la régression linéaire prend la valeur numérique réelle de l’indice et l’ajoute au résultat en la multipliant par un coefficient. Dans notre cas, la relation entre le numéro d’indice et le prix est clairement non linéaire, même si nous nous assurons que les indices sont ordonnés d’une certaine façon spécifique. +* L’**encodage one-hot** remplacera la colonne `Variety` par 4 colonnes différentes, une pour chaque variété. Chaque colonne contiendra `1` si la ligne correspondante est de cette variété, et `0` sinon. Cela signifie qu’il y aura quatre coefficients dans la régression linéaire, un pour chaque variété de citrouille, responsable du "prix de départ" (ou plutôt "prix supplémentaire") pour cette variété particulière. -Le code ci-dessous montre comment appliquer un encodage one-hot à une variété : +Le code suivant montre comment encoder une variété en one-hot : ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Pour entraîner une régression linéaire en utilisant la variété encodée one-hot comme entrée, il suffit d'initialiser correctement les données `X` et `y` : +Pour entraîner la régression linéaire en utilisant la variété codée en one-hot comme entrée, il suffit d’initialiser correctement les données `X` et `y` : ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Le reste du code est identique à ce que nous avons utilisé ci-dessus pour entraîner la régression linéaire. Si vous essayez, vous verrez que l'erreur quadratique moyenne est à peu près la même, mais que le coefficient de détermination est beaucoup plus élevé (~77 %). Pour obtenir des prédictions encore plus précises, on peut prendre en compte plus de caractéristiques catégoriques ainsi que des caractéristiques numériques, telles que `Month` ou `DayOfYear`. Pour obtenir un grand tableau de caractéristiques, on peut utiliser la fonction `join` : +Le reste du code est le même que celui que nous avons utilisé précédemment pour entraîner la régression linéaire. Si vous essayez, vous verrez que l’erreur quadratique moyenne est à peu près la même, mais que le coefficient de détermination est beaucoup plus élevé (~77 %). Pour obtenir des prédictions encore plus précises, nous pouvons prendre en compte d’autres caractéristiques catégorielles, ainsi que des caractéristiques numériques, telles que `Month` ou `DayOfYear`. Pour obtenir un grand tableau de caractéristiques, on peut utiliser `join` : ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Ici, nous prenons aussi en compte `City` et le type de `Package`, ce qui nous donne un MSE de 2.84 (10 %) et une détermination de 0.94 ! +Ici, nous prenons également en compte `City` et le type de `Package`, ce qui nous donne un RMSE de 2.84 (10.5 %) et un coefficient de détermination de 0.94 ! -## Tout mettre ensemble +## Tout regrouper -Pour créer le meilleur modèle, nous pouvons utiliser les données combinées (catégoriques encodées en one-hot + numériques) de l'exemple précédent, avec la régression polynomiale. Voici le code complet pour votre commodité : +Pour faire le meilleur modèle, nous pouvons utiliser les données combinées (catégoriques encodées en one-hot + numériques) de l’exemple précédent avec la régression polynomiale. Voici le code complet pour votre commodité : ```python -# préparer les données d'entraînement +# configurer les données d'entraînement X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# effectuer la séparation train-test +# faire la séparation train-test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# configurer et entraîner le pipeline +# configurer et entraîner la pipeline pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # prédire les résultats pour les données de test pred = pipeline.predict(X_test) -# calculer la MSE et le coefficient de détermination -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calculer la RMSE et la détermination +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Cela devrait nous donner le meilleur coefficient de détermination à presque 97 %, et un MSE de 2.23 (~8 % d’erreur de prédiction). +Cela devrait nous donner le meilleur coefficient de détermination d’environ 97 %, et un RMSE=2.23 (~8 % d’erreur de prédiction). -| Modèle | MSE | Détermination | +| Modèle | RMSE | Détermination | |-------|-----|---------------| -| Linéaire `DayOfYear` | 2.77 (17,2 %) | 0.07 | -| Polynomial `DayOfYear` | 2.73 (17,0 %) | 0.08 | -| Linéaire `Variety` | 5.24 (19,7 %) | 0.77 | -| Toutes caractéristiques Linéaire | 2.84 (10,5 %) | 0.94 | -| Toutes caractéristiques Polynomial | 2.23 (8,25 %) | 0.97 | +| Linéaire `DayOfYear` | 2.77 (17.2 %) | 0.07 | +| Polynômiale `DayOfYear` | 2.73 (17.0 %) | 0.08 | +| Linéaire `Variety` | 5.24 (19.7 %) | 0.77 | +| Linéaire toutes caractéristiques | 2.84 (10.5 %) | 0.94 | +| Polynômiale toutes caractéristiques | 2.23 (8.25 %) | 0.97 | -🏆 Bravo ! Vous avez créé quatre modèles de régression en une leçon et amélioré la qualité du modèle à 97 %. Dans la section finale sur la régression, vous apprendrez la régression logistique pour déterminer des catégories. +🏆 Bravo ! Vous avez créé quatre modèles de régression en une leçon, et amélioré la qualité de modèle à 97 %. Dans la section finale sur la régression, vous apprendrez la régression logistique pour déterminer des catégories. --- ## 🚀Défi -Testez plusieurs variables différentes dans ce notebook pour voir comment la corrélation correspond à la précision du modèle. +Testez plusieurs variables différentes dans ce carnet pour voir comment la corrélation correspond à la précision du modèle. ## [Quiz post-cours](https://ff-quizzes.netlify.app/en/ml/) -## Revue & Auto-Étude +## Revue & Autoapprentissage -Dans cette leçon, nous avons appris la régression linéaire. Il existe d'autres types importants de régression. Lisez sur les techniques Stepwise, Ridge, Lasso et Elasticnet. Un bon cours à suivre pour en apprendre davantage est le [cours d’apprentissage statistique de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Dans cette leçon nous avons appris la régression linéaire. Il existe d'autres types importants de régression. Lisez sur les techniques Stepwise, Ridge, Lasso et Elasticnet. Un bon cours à étudier pour en apprendre davantage est le [cours de Stanford sur l'apprentissage statistique](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Devoir -[Construisez un modèle](assignment.md) +[Construire un modèle](assignment.md) --- **Avertissement** : -Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant foi. Pour les informations cruciales, une traduction professionnelle humaine est recommandée. Nous ne pouvons être tenus responsables des malentendus ou erreurs d'interprétation résultant de l'utilisation de cette traduction. +Ce document a été traduit à l’aide du service de traduction automatisée [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d’assurer l’exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, une traduction professionnelle humaine est recommandée. Nous ne saurions être tenus responsables des malentendus ou des interprétations erronées résultant de l’utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/fr/2-Regression/3-Linear/solution/notebook.ipynb index a84894dc7b..2beb80ac7e 100644 --- a/translations/fr/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/fr/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## Régression linéaire et polynomiale pour la tarification des citrouilles - Leçon 3\n", "\n", - "Chargez les bibliothèques nécessaires et le jeu de données. Convertissez les données en un dataframe contenant un sous-ensemble des données :\n", + "Chargez les bibliothèques et le jeu de données requis. Convertissez les données en un dataframe contenant un sous-ensemble des données :\n", "\n", - "- Ne sélectionnez que les citrouilles dont le prix est indiqué par boisseau\n", - "- Convertissez la date en mois\n", - "- Calculez le prix comme une moyenne des prix élevés et bas\n", - "- Convertissez le prix pour qu'il reflète la tarification par quantité de boisseaux\n" + "- Ne prendre que les citrouilles tarifées au boisseau\n", + "- Convertir la date en mois\n", + "- Calculer le prix comme une moyenne des prix haut et bas\n", + "- Convertir le prix pour refléter la tarification par quantité de boisseaux\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Un nuage de points nous rappelle que nous n'avons des données mensuelles que d'août à décembre. Nous avons probablement besoin de plus de données pour pouvoir tirer des conclusions de manière linéaire.\n" + "Un nuage de points nous rappelle que nous n'avons des données que de août à décembre. Nous avons probablement besoin de plus de données pour pouvoir tirer des conclusions de manière linéaire.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Voyons s'il y a une corrélation :\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Il semble que la corrélation soit assez faible, mais il existe une autre relation plus importante - car les points de prix dans le graphique ci-dessus semblent former plusieurs groupes distincts. Faisons un graphique qui montrera différentes variétés de citrouilles :\n" + "On dirait que la corrélation est assez faible, mais il existe une autre relation plus importante - car les points de prix dans le graphique ci-dessus semblent avoir plusieurs clusters distincts. Faisons un graphique qui montrera différentes variétés de citrouilles :\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Pour le moment, concentrons-nous uniquement sur une variété - **type de tarte**.\n" + ] }, { "cell_type": "code", @@ -582,7 +586,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Régression Linéaire\n", + "### Régression linéaire\n", "\n", "Nous allons utiliser Scikit Learn pour entraîner un modèle de régression linéaire :\n" ] @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "La pente de la ligne peut être déterminée à partir des coefficients de régression linéaire :\n" + "La pente de la droite peut être déterminée à partir des coefficients de régression linéaire :\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Nous pouvons utiliser le modèle entraîné pour prédire le prix :\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Régression polynomiale\n", "\n", - "Parfois, la relation entre les caractéristiques et les résultats est intrinsèquement non linéaire. Par exemple, les prix des citrouilles peuvent être élevés en hiver (mois=1,2), puis baisser en été (mois=5-7), avant de remonter. La régression linéaire ne peut pas identifier cette relation avec précision.\n", + "Parfois, la relation entre les caractéristiques et les résultats est intrinsèquement non linéaire. Par exemple, les prix des citrouilles peuvent être élevés en hiver (mois=1,2), puis baisser en été (mois=5-7), puis remonter à nouveau. La régression linéaire est incapable de trouver cette relation avec précision.\n", "\n", - "Dans ce cas, nous pouvons envisager d'ajouter des caractéristiques supplémentaires. Une méthode simple consiste à utiliser des polynômes à partir des caractéristiques d'entrée, ce qui aboutirait à une **régression polynomiale**. Dans Scikit Learn, nous pouvons pré-calculer automatiquement les caractéristiques polynomiales en utilisant des pipelines :\n" + "Dans ce cas, nous pouvons envisager d'ajouter des caractéristiques supplémentaires. Une façon simple est d'utiliser des polynômes des caractéristiques d'entrée, ce qui entraînerait une **régression polynomiale**. Dans Scikit Learn, nous pouvons pré-calculer automatiquement les caractéristiques polynomiales à l'aide de pipelines : \n" ] }, { @@ -775,20 +781,23 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Encodage des variétés\n", + "### Variétés d'encodage\n", "\n", - "Dans un monde idéal, nous voudrions pouvoir prédire les prix de différentes variétés de citrouilles en utilisant le même modèle. Pour prendre en compte la variété, nous devons d'abord la convertir en une forme numérique, ou **encoder**. Il existe plusieurs façons de le faire :\n", + "Dans un monde idéal, nous voulons pouvoir prédire les prix pour différentes variétés de citrouille en utilisant le même modèle. Pour prendre en compte la variété, nous devons d'abord la convertir en forme numérique, ou **encoder**. Il existe plusieurs façons de le faire :\n", "\n", - "* Un encodage numérique simple qui construit une table des différentes variétés, puis remplace le nom de la variété par un indice dans cette table. Ce n'est pas la meilleure idée pour une régression linéaire, car la régression linéaire prend en compte la valeur numérique de l'indice, et cette valeur numérique n'est probablement pas corrélée de manière significative avec le prix.\n", - "* Un encodage one-hot, qui remplacera la colonne `Variety` par 4 colonnes différentes, une pour chaque variété, contenant 1 si la ligne correspondante est de la variété donnée, et 0 sinon.\n", + "* Encodage numérique simple qui construira un tableau des différentes variétés, puis remplacera le nom de la variété par un indice dans ce tableau. Ce n'est pas la meilleure idée pour la régression linéaire, car la régression linéaire prend en compte la valeur numérique de l'indice, et cette valeur numérique ne sera probablement pas corrélée numériquement avec le prix.\n", + "* Encodage one-hot, qui remplacera la colonne `Variety` par 4 colonnes différentes, une pour chaque variété, qui contiendra 1 si la ligne correspondante est de la variété donnée, et 0 sinon.\n", "\n", "Le code ci-dessous montre comment nous pouvons encoder une variété en one-hot :\n" ] @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Régression linéaire sur les variétés\n", + "### Régression linéaire sur la variété\n", "\n", - "Nous allons maintenant utiliser le même code que précédemment, mais au lieu de `DayOfYear`, nous utiliserons notre variété encodée en one-hot comme entrée :\n" + "Nous allons maintenant utiliser le même code que ci-dessus, mais au lieu de `DayOfYear`, nous utiliserons notre variété encodée en one-hot comme entrée :\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nous pouvons également essayer d'utiliser d'autres fonctionnalités de la même manière, et de les combiner avec des fonctionnalités numériques, telles que `Month` ou `DayOfYear` :\n" + "Nous pouvons également essayer d'utiliser d'autres fonctionnalités de la même manière, et les combiner avec des fonctionnalités numériques, telles que `Month` ou `DayOfYear` :\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Régression polynomiale\n", "\n", - "La régression polynomiale peut également être utilisée avec des caractéristiques catégorielles qui sont encodées en one-hot. Le code pour entraîner une régression polynomiale serait essentiellement le même que celui que nous avons vu précédemment.\n" + "La régression polynomiale peut également être utilisée avec des variables catégorielles encodées en one-hot. Le code pour entraîner une régression polynomiale serait essentiellement le même que celui que nous avons vu ci-dessus.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Avertissement** : \nCe document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.\n" + "---\n\n\n**Avis de non-responsabilité** : \nCe document a été traduit à l’aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d’assurer l’exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d’origine doit être considéré comme la source faisant foi. Pour les informations critiques, une traduction professionnelle humaine est recommandée. Nous n’assumons aucune responsabilité pour tout malentendu ou mauvaise interprétation résultant de l’utilisation de cette traduction.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T01:02:38+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "fr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/fr/4-Classification/3-Classifiers-2/solution/notebook.ipynb b/translations/fr/4-Classification/3-Classifiers-2/solution/notebook.ipynb index 2cc7f778ec..6012e0be15 100644 --- a/translations/fr/4-Classification/3-Classifiers-2/solution/notebook.ipynb +++ b/translations/fr/4-Classification/3-Classifiers-2/solution/notebook.ipynb @@ -2,51 +2,28 @@ "cells": [ { "source": [ - "# Construire Plus de Modèles de Classification\n" + "# Construire plus de modèles de classification\n" ], "cell_type": "markdown", "metadata": {} }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Vue d'ensemble du jeu de données\n", + "Ce jeu de données contient des échantillons individuels (par exemple, des recettes) étiquetés par type de cuisine.\n", + "Chaque ligne correspond à un échantillon/enregistrement unique, et les colonnes représentent les ingrédients ou d'autres attributs utilisés pour la classification, y compris l'étiquette `cuisine`.\n" + ] + }, { "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", - "0 0 indian 0 0 0 0 0 \n", - "1 1 indian 1 0 0 0 0 \n", - "2 2 indian 0 0 0 0 0 \n", - "3 3 indian 0 0 0 0 0 \n", - "4 4 indian 0 0 0 0 0 \n", - "\n", - " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", - "0 0 0 0 ... 0 0 0 \n", - "1 0 0 0 ... 0 0 0 \n", - "2 0 0 0 ... 0 0 0 \n", - "3 0 0 0 ... 0 0 0 \n", - "4 0 0 0 ... 0 0 0 \n", - "\n", - " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", - "0 0 0 0 0 0 0 0 \n", - "1 0 0 0 0 0 0 0 \n", - "2 0 0 0 0 0 0 0 \n", - "3 0 0 0 0 0 0 0 \n", - "4 0 0 0 0 0 1 0 \n", - "\n", - "[5 rows x 382 columns]" - ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" - }, - "metadata": {}, - "execution_count": 1 - } - ], + "outputs": [], "source": [ "import pandas as pd\n", + "# Load dataset containing cuisine features\n", "cuisines_df = pd.read_csv(\"../../data/cleaned_cuisines.csv\")\n", "cuisines_df.head()" ] @@ -124,7 +101,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Essayer différents classificateurs\n" + "# Essayez différents classificateurs\n" ] }, { @@ -263,7 +240,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**Avertissement** : \nCe document a été traduit à l’aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d’assurer l’exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d’origine doit être considéré comme la source faisant foi. Pour les informations critiques, une traduction professionnelle réalisée par un humain est recommandée. Nous déclinons toute responsabilité pour tout malentendu ou mauvaise interprétation résultant de l’utilisation de cette traduction.\n\n" + "---\n\n\n**Avertissement** : \nCe document a été traduit à l’aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforçons d’assurer l’exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d’origine doit être considéré comme la source faisant autorité. Pour les informations critiques, une traduction professionnelle humaine est recommandée. Nous déclinons toute responsabilité pour tout malentendu ou mauvaise interprétation résultant de l’utilisation de cette traduction.\n\n" ] } ], From 4efb2e21edf68ca24beb9e126fea2437c4c38031 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 18:42:23 +0000 Subject: [PATCH 02/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/pa/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 129 ++++--- .../pa/2-Regression/3-Linear/README.md | 333 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 77 ++-- translations/pt-BR/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 100 +++--- .../pt-BR/2-Regression/3-Linear/README.md | 250 +++++++------ .../3-Linear/solution/notebook.ipynb | 67 ++-- translations/pt-PT/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 102 +++--- .../pt-PT/2-Regression/3-Linear/README.md | 259 +++++++------- .../3-Linear/solution/notebook.ipynb | 67 ++-- 12 files changed, 785 insertions(+), 641 deletions(-) diff --git a/translations/pa/.co-op-translator.json b/translations/pa/.co-op-translator.json index 50b0b44632..1f8d698062 100644 --- a/translations/pa/.co-op-translator.json +++ b/translations/pa/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "pa" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T07:04:42+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:39:45+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "pa" }, @@ -90,8 +90,8 @@ "language_code": "pa" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:53:29+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:39:02+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "pa" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "pa" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:36:53+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "pa" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T06:48:36+00:00", diff --git a/translations/pa/1-Introduction/4-techniques-of-ML/README.md b/translations/pa/1-Introduction/4-techniques-of-ML/README.md index b25e417f33..9cd92d3795 100644 --- a/translations/pa/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/pa/1-Introduction/4-techniques-of-ML/README.md @@ -1,80 +1,125 @@ -# ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਤਕਨੀਕਾਂ +# ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀਆਂ ਤਕਨੀਕਾਂ -ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ, ਵਰਤਣ ਅਤੇ ਰੱਖ-ਰਖਾਵ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਅਤੇ ਉਹ ਡਾਟਾ ਜੋ ਇਹ ਮਾਡਲ ਵਰਤਦੇ ਹਨ, ਕਈ ਹੋਰ ਵਿਕਾਸ ਕਾਰਜਪ੍ਰਣਾਲੀਆਂ ਤੋਂ ਬਹੁਤ ਵੱਖਰੀ ਹੈ। ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਪਸ਼ਟ ਕਰਾਂਗੇ ਅਤੇ ਮੁੱਖ ਤਕਨੀਕਾਂ ਦੀ ਰੂਪਰੇਖਾ ਪੇਸ਼ ਕਰਾਂਗੇ ਜੋ ਤੁਹਾਨੂੰ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ। ਤੁਸੀਂ: +ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ, ਵਰਤਣ ਅਤੇ ਸੰਭਾਲਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਅਤੇ ਉਹ ਡਾਟਾ ਜੋ ਇਹ ਵਰਤਦੇ ਹਨ, ਬਹੁਤ ਵੱਖਰੀ ਪ੍ਰਕਿਰਿਆ ਹੈ ਬਾਕੀ ਕਈ ਦੂਜੇ ਵਿਕਾਸ ਕੌਰਸਾਂ ਤੋਂ। ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਧਾਰਣ ਕਰਾਂਗੇ, ਅਤੇ ਮੁੱਖ ਤਕਨੀਕਾਂ ਨੂੰ ਰੂਪਰੇਖਾ ਵਿੱਚ ਪੇਸ਼ ਕਰਾਂਗੇ ਜੋ ਤੁਹਾਨੂੰ ਜਾਣਣੀ ਲਾਜ਼ਮੀ ਹਨ। ਤੁਸੀਂ: -- ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਅਧਾਰਤ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਉੱਚ ਪੱਧਰ 'ਤੇ ਸਮਝੋਗੇ। -- 'ਮਾਡਲ', 'ਪ੍ਰਿਡਿਕਸ਼ਨ', ਅਤੇ 'ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ' ਵਰਗੇ ਬੁਨਿਆਦੀ ਧਾਰਨਾਵਾਂ ਦੀ ਖੋਜ ਕਰੋਗੇ। +- ਉੱਚ ਪੱਧਰ 'ਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਅਧਾਰਭੂਤ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਸਮਝੋਗੇ। +- 'ਮਾਡਲ', 'ਭਵਿੱਖਬਾਣੀਆਂ', ਅਤੇ 'ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ' ਵਰਗੀਆਂ ਮੂਢ ਤਕਨੀਕਾਂ ਦੀ ਖੋਜ ਕਰੋਂਗੇ। -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪ੍ਰੀ-ਲੇਕਚਰ ਕਿਊਜ਼](https://ff-quizzes.netlify.app/en/ml/) -[![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਤਕਨੀਕਾਂ](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਤਕਨੀਕਾਂ") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇਸ ਪਾਠ ਨੂੰ ਸਮਝਣ ਲਈ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ। +> 🎥 ਇਸ ਪਾਠ ਨੂੰ ਸਮਝਾਉਂਦੇ ਛੋਟੇ ਵੀਡੀਓ ਲਈ ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ। ## ਪਰਿਚਯ -ਉੱਚ ਪੱਧਰ 'ਤੇ, ਮਸ਼ੀਨ ਲਰਨਿੰਗ (ML) ਪ੍ਰਕਿਰਿਆਵਾਂ ਬਣਾਉਣ ਦੀ ਕਲਾ ਕਈ ਕਦਮਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹੈ: +ਸਰਵੋচ্চ ਪੱਧਰ 'ਤੇ, ਮਸ਼ੀਨ ਲਰਨਿੰਗ (ML) ਪ੍ਰਕਿਰਿਆਵਾਂ ਬਣਾਉਣ ਦਾ ਹੁਨਰ ਕਈ ਕਦਮਾਂ 'ਤੇ مشتمل ਹੁੰਦਾ ਹੈ: -1. **ਸਵਾਲ ਤੈਅ ਕਰੋ**। ਜ਼ਿਆਦਾਤਰ ML ਪ੍ਰਕਿਰਿਆਵਾਂ ਇੱਕ ਸਵਾਲ ਪੁੱਛਣ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਸਧਾਰਨ ਸ਼ਰਤਾਂ ਵਾਲੇ ਪ੍ਰੋਗਰਾਮ ਜਾਂ ਨਿਯਮ-ਅਧਾਰਿਤ ਇੰਜਨ ਦੁਆਰਾ ਹੱਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਇਹ ਸਵਾਲ ਅਕਸਰ ਡਾਟਾ ਦੇ ਇਕੱਠ 'ਤੇ ਆਧਾਰਿਤ ਅਨੁਮਾਨਾਂ ਦੇ ਆਸ-ਪਾਸ ਹੁੰਦੇ ਹਨ। -2. **ਡਾਟਾ ਇਕੱਠਾ ਕਰੋ ਅਤੇ ਤਿਆਰ ਕਰੋ**। ਆਪਣੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦੇਣ ਲਈ ਤੁਹਾਨੂੰ ਡਾਟਾ ਦੀ ਲੋੜ ਹੈ। ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਗੁਣਵੱਤਾ ਅਤੇ ਕਈ ਵਾਰ ਮਾਤਰਾ ਇਹ ਤੈਅ ਕਰੇਗੀ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮੁਢਲੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਕਿੰਨਾ ਚੰਗਾ ਦੇ ਸਕਦੇ ਹੋ। ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨਾ ਇਸ ਚਰਨ ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਪਹਲੂ ਹੈ। ਇਸ ਚਰਨ ਵਿੱਚ ਡਾਟਾ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟਿੰਗ ਸਮੂਹ ਵਿੱਚ ਵੰਡਣਾ ਵੀ ਸ਼ਾਮਲ ਹੈ ਤਾਂ ਜੋ ਮਾਡਲ ਬਣਾਇਆ ਜਾ ਸਕੇ। -3. **ਟ੍ਰੇਨਿੰਗ ਵਿਧੀ ਚੁਣੋ**। ਤੁਹਾਡੇ ਸਵਾਲ ਅਤੇ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਹਾਨੂੰ ਇਹ ਚੁਣਨਾ ਪਵੇਗਾ ਕਿ ਮਾਡਲ ਨੂੰ ਕਿਵੇਂ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ ਤਾਂ ਜੋ ਇਹ ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਦਰਸਾ ਸਕੇ ਅਤੇ ਇਸ 'ਤੇ ਸਹੀ ਅਨੁਮਾਨ ਲਗਾ ਸਕੇ। -4. **ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰੋ**। ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਤੁਸੀਂ ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਾਡਲ ਨੂੰ ਡਾਟਾ ਵਿੱਚ ਪੈਟਰਨਾਂ ਨੂੰ ਪਛਾਣਨ ਲਈ ਟ੍ਰੇਨ ਕਰਦੇ ਹੋ। ਮਾਡਲ ਅੰਦਰੂਨੀ ਵਜ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ ਜੋ ਡਾਟਾ ਦੇ ਕੁਝ ਹਿੱਸਿਆਂ ਨੂੰ ਹੋਰਾਂ ਦੇ ਉੱਤੇ ਤਰਜੀਹ ਦੇਣ ਲਈ ਸਮਰਥਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। -5. **ਮਾਡਲ ਦਾ ਮੁਲਾਂਕਨ ਕਰੋ**। ਤੁਸੀਂ ਆਪਣੇ ਇਕੱਠੇ ਕੀਤੇ ਸੈਟ ਵਿੱਚੋਂ ਪਹਿਲਾਂ ਕਦੇ ਨਾ ਦੇਖੇ ਡਾਟਾ (ਆਪਣੇ ਟੈਸਟਿੰਗ ਡਾਟਾ) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ ਤਾਂ ਜੋ ਦੇਖਿਆ ਜਾ ਸਕੇ ਕਿ ਮਾਡਲ ਕਿਵੇਂ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ। -6. **ਪੈਰਾਮੀਟਰ ਟਿਊਨਿੰਗ**। ਆਪਣੇ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਸੀਂ ਵੱਖ-ਵੱਖ ਪੈਰਾਮੀਟਰ ਜਾਂ ਵੈਰੀਏਬਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਦੁਬਾਰਾ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤੇ ਗਏ ਐਲਗੋਰਿਥਮ ਦੇ ਵਿਹਾਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਦੇ ਹਨ। -7. **ਪ੍ਰਿਡਿਕਟ ਕਰੋ**। ਨਵੇਂ ਇਨਪੁਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ ਮਾਡਲ ਦੀ ਸਹੀਤਾ ਦੀ ਜਾਂਚ ਕਰੋ। +1. **ਸਵਾਲ ਨਿਰਧਾਰਤ ਕਰੋ**। ਜ਼ਿਆਦਾਤਰ ML ਪ੍ਰਕਿਰਿਆਵਾਂ ਕਿਸੇ ਸਵਾਲ ਨੂੰ ਪੁੱਛ ਕੇ ਸ਼ੁਰੂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਇੱਕ ਸਧਾਰਨ ਸਸ਼ਰਤੀ ਪ੍ਰੋਗਰਾਮ ਜਾਂ ਨਿਯਮ-ਅਧਾਰਿਤ ਇੰਜਣ ਦੁਆਰਾ ਜਵਾਬ ਨਹੀਂ ਦਿੱਤਾ ਜਾ ਸਕਦਾ। ਇਹ ਸਵਾਲ ਅਕਸਰ ਡਾਟਾ ਦੇ ਸੰਗ੍ਰਹਿ 'ਤੇ ਆਧਾਰਤ ਭਵਿੱਖਬਾਣੀਆਂ ਨਾਲ ਸੰਬੰਧਿਤ ਹੁੰਦੇ ਹਨ। +2. **ਡਾਟਾ ਇਕੱਠਾ ਕਰੋ ਅਤੇ ਤਿਆਰ ਕਰੋ**। ਆਪਣੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦੇਣ ਲਈ ਤੁਹਾਨੂੰ ਡਾਟਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਗੁਣਵੱਤਾ ਅਤੇ ਕਈ ਵਾਰੀ ਮਾਤਰਾ ਵੀ ਇਹ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਸ਼ੁਰੂਆਤੀ ਸਵਾਲ ਦਾ ਕਿੰਨਾ ਚੰਗਾ ਜਵਾਬ ਦੇ ਸਕਦੇ ਹੋ। ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਨਾ ਕੇ ਇਸ ਪੜਾਅ ਦਾ ਅਹਿਮ ਹਿੱਸਾ ਹੈ। ਇਹ ਪੜਾਅ ਡਾਟਾ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟਿੰਗ ਗਰੁੱਪ ਵਿੱਚ ਵੰਡਣ ਨੂੰ ਵੀ ਸਮਾਵੇਸ਼ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਮਾਡਲ ਬਣਾਇਆ ਜਾ ਸਕੇ। +3. **ਟ੍ਰੇਨਿੰਗ ਮੈਥਡ ਚੁਣੋ**। ਤੁਹਾਡੇ ਸਵਾਲ ਅਤੇ ਡਾਟਾ ਦੀ ਕਿਸਮ dian ਅਧਾਰ 'ਤੇ, ਤੁਹਾਨੂੰ ਇਹ ਚੁਣਨਾ ਪਵੇਗਾ ਕਿ ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ ਕਿਵੇਂ ਟ੍ਰੇਨ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਜੋ ਇਹ ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਦਰਸਾਉਂਦੇ ਹੋਏ ਸਹੀ ਭਵਿੱਖਬਾਣੀਆਂ ਕਰ ਸਕੇ। ਇਹ ਉਹ ਹਿੱਸਾ ਹੈ ਜਿੱਥੇ ਤੁਹਾਨੂੰ ਵਿਸ਼ੇਸ਼ਤਾ ਅਤੇ ਅਕਸਰ ਕਾਫੀ ਪ੍ਰਯੋਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। +4. **ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰੋ**। ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਵੱਖ-ਵੱਖ ਅਲਗੋਰਿਧਮਾਂ ਦੇ ਸਹਾਰੇ ਮਾਡਲ ਨੂੰ ਡਾਟਾ ਵਿੱਚ ਪੈਟਰਨਜ਼ ਪਛਾਣਨ ਲਈ ਟ੍ਰੇਨ ਕਰੋਗੇ। ਮਾਡਲ ਅੰਦਰੂਨੀ ਵਜਨ ਵਰਤ ਸਕਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ताकि ਕੁਝ ਹਿੱਸਿਆਂ ਨੂੰ ਵੱਧ ਪਸੰਦ ਦਿੱਤੀ ਜਾ ਸਕੇ ਅਤੇ ਹੋਰਾਂ ਨਾਲੋਂ ਬਿਹਤਰ ਮਾਡਲ ਬਣ ਸਕੇ। +5. **ਮਾਡਲ ਦਾ ਮੁਲਾਂਕਣ ਕਰੋ**। ਤੁਸੀਂ ਕਦੇ ਵੀ ਨਹੀਂ ਵੇਖੇ ਡਾਟਾ (ਆਪਣੇ ਟੈਸਟਿੰਗ ਡਾਟਾ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦੇਖੋਗੇ ਕਿ ਮਾਡਲ ਕਿਵੇਂ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ। +6. **ਪੈਰਾਮੀਟਰ ਟਿਊਨਿੰਗ**। ਆਪਣੇ ਮਾਡਲ ਦੇ ਪਰਦਰਸ਼ਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਸੀਂ ਵੱਖਰੇ ਪੈਰਾਮੀਟਰ ਜਾਂ ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਬਦਲ ਕੇ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਦੁਬਾਰਾ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਉਸ ਅਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦੇ ਹਨ ਜੋ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਦਾ ਹੈ। +7. **ਭਵਿੱਖਬਾਣੀ ਕਰੋ**। ਨਵੇਂ ਇਨਪੁੱਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ ਮਾਡਲ ਦੀ ਸ਼ੁੱਧਤਾ ਦੀ ਜਾਂਚ ਕਰੋ। -## ਕਿਹੜਾ ਸਵਾਲ ਪੁੱਛਣਾ ਹੈ +## ਕਿਹੜਾ ਸਵਾਲ ਪੂਛਣਾ ਹੈ -ਕੰਪਿਊਟਰ ਡਾਟਾ ਵਿੱਚ ਲੁਕੇ ਹੋਏ ਪੈਟਰਨਾਂ ਦੀ ਖੋਜ ਕਰਨ ਵਿੱਚ ਖਾਸ ਤੌਰ 'ਤੇ ਨਿਪੁਣ ਹੁੰਦੇ ਹਨ। ਇਹ ਯੋਗਤਾ ਖੋਜਕਰਤਿਆਂ ਲਈ ਬਹੁਤ ਮਦਦਗਾਰ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਕਿਸੇ ਦਿੱਤੇ ਖੇਤਰ ਬਾਰੇ ਸਵਾਲ ਹੁੰਦੇ ਹਨ ਜੋ ਸਧਾਰਨ ਨਿਯਮ-ਅਧਾਰਿਤ ਇੰਜਨ ਬਣਾਉਣ ਦੁਆਰਾ ਆਸਾਨੀ ਨਾਲ ਹੱਲ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ। ਉਦਾਹਰਣ ਲਈ, ਇੱਕ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਸਿਗਰਟ ਪੀਣ ਵਾਲਿਆਂ ਅਤੇ ਨਾ ਪੀਣ ਵਾਲਿਆਂ ਦੀ ਮੌਤ ਦਰ ਦੇ ਆਧਾਰ 'ਤੇ ਹੱਥੋਂ ਬਣਾਏ ਨਿਯਮਾਂ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋ ਸਕਦੇ ਹਨ। +ਕੰਪਿਊਟਰ ਡਾਟਾ ਵਿੱਚ ਛੁਪੇ ਹੋਏ ਪੈਟਰਨ ਖੋਜਣ ਵਿੱਚ ਕਾਬਿਲ ਹੁੰਦੇ ਹਨ। ਇਹ ਉਪਯੋਗਤਾ ਉਨ੍ਹਾਂ ਵਿਗਿਆਨੀਆਂ ਲਈ ਬਹੁਤ ਲਾਹੇਵੰਦ ਹੈ ਜਿਨ੍ਹਾਂ ਕੋਲ ਕਿਸੇ ਖੇਤਰ ਬਾਰੇ ਅਜਿਹੇ ਸਵਾਲ ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਜਵਾਬ ਅਸਾਨੀ ਨਾਲ ਕਿਸੇ ਨਿਯਮ-ਅਧਾਰਿਤ ਇੰਜਣ ਨਾਲ ਨਹੀਂ ਮਿਲ ਸਕਦਾ। ਉਦਾਹਰਨ ਵਜੋਂ, ਇੱਕ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਧੂമ੍ਰਪਾਨ ਕਰਨ ਵਾਲਿਆਂ ਵਿਰੁੱਧ ਅਧਧੂਮ੍ਰਪਾਨ ਕਰਨ ਵਾਲਿਆਂ ਦੀ ਮੌਤ ਦਰ ਬਾਰੇ ਹੱਥ-ਨਿਰਮਿਤ ਨਿਯਮ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋ ਸਕਦਾ ਹੈ। -ਜਦੋਂ ਕਈ ਹੋਰ ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸਮੀਕਰਨ ਵਿੱਚ ਲਿਆਂਦਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇੱਕ ML ਮਾਡਲ ਪਿਛਲੇ ਸਿਹਤ ਇਤਿਹਾਸ ਦੇ ਆਧਾਰ 'ਤੇ ਭਵਿੱਖ ਦੀ ਮੌਤ ਦਰਾਂ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਲਈ ਹੋਰ ਕੁਸ਼ਲ ਸਾਬਤ ਹੋ ਸਕਦਾ ਹੈ। ਇੱਕ ਹੋਰ ਖੁਸ਼ੀਦਾਇਕ ਉਦਾਹਰਣ ਅਪ੍ਰੈਲ ਮਹੀਨੇ ਵਿੱਚ ਕਿਸੇ ਦਿੱਤੇ ਸਥਾਨ ਲਈ ਮੌਸਮ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨਾ ਹੋ ਸਕਦਾ ਹੈ, ਜੋ ਡਾਟਾ ਵਿੱਚ ਲੈਟੀਟਿਊਡ, ਲੌਂਗਿਟਿਊਡ, ਜਲਵਾਯੂ ਬਦਲਾਅ, ਸਮੁੰਦਰ ਦੇ ਨੇੜੇਪਨ, ਜੈਟ ਸਟ੍ਰੀਮ ਦੇ ਪੈਟਰਨ, ਅਤੇ ਹੋਰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। +ਜਦੋਂ ਅਨੇਕ ਹੋਰ ਚਲਕ ਵਰਗੀਆਂ ਘਟਕਾਂ ਵਿਰੋਧੀ ਪ੍ਰਸ਼ਨ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਤਾਂ, ਇੱਕ ML ਮਾਡਲ ਪਿਛਲੇ ਸਿਹਤ ਇਤਿਹਾਸ ਆਧਾਰਿਤ ਭਵਿੱਖ ਦੀਆਂ ਮੌਤਾਂ ਦੀ ਦਰ ਨੂੰ ਬੇਹਤਰ ਅੰਦਾਜਾ ਕਰਨ ਵਿੱਚ ਹੋਰ ਲਾਭਕਾਰੀ ਸਾਬਤ ਹੋ ਸਕਦਾ ਹੈ। ਇੱਕ ਹੋਰ ਖੁਸ਼ਕਿਸਮਤ ਉਦਾਹਰਨ, ਕਿਸੇ ਇਸਥਾਨ ਲਈ ਅਪਰੈਲ ਮਹੀਨੇ ਦਾ ਮੌਸਮ ਅੰਦਾਜਾ ਕਰਨਾ ਹੈ, ਜਿੱਥੇ ਡਾਟਾ ਵਿੱਚ ਕੂਹ-ਰੇਖਾ, ਲੰਬਾਈ, ਜਲਵਾਯੂ ਪਰਿਵਰਤਨ, ਸਮੁੰਦਰ ਦੇ ਨੇੜੇਪਣ, ਜੈਟ ਸਟ੍ਰੀਮ ਦੇ ਪੈਟਰਨ ਆਦਿ ਸ਼ਾਮਲ ਹਨ। -✅ ਇਹ [ਸਲਾਈਡ ਡੈਕ](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ਮੌਸਮ ਮਾਡਲਾਂ 'ਤੇ ML ਦੀ ਵਰਤੋਂ ਲਈ ਇੱਕ ਇਤਿਹਾਸਕ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਪੇਸ਼ ਕਰਦਾ ਹੈ। +✅ ਮੌਸਮ ਮਾਡਲਾਂ 'ਤੇ ਇਹ [ਸਲਾਈਡ ਡੈੱਕ](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ਮੌਸਮ ਵਿਸ਼ਲੇਸ਼ਣ ਵਿੱਚ ML ਦੀ ਵਰਤੋਂ ਲਈ ਇਤਿਹਾਸਕ ਨਜ਼ਰੀਆ ਦਿੰਦੀ ਹੈ। -## ਮਾਡਲ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਦੇ ਕੰਮ +## ਮਾਡਲ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਵਾਲੇ ਕੰਮ -ਮਾਡਲ ਬਣਾਉਣ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਕਈ ਕੰਮ ਪੂਰੇ ਕਰਨੇ ਪੈਂਦੇ ਹਨ। ਆਪਣੇ ਸਵਾਲ ਦੀ ਜਾਂਚ ਕਰਨ ਅਤੇ ਮਾਡਲ ਦੀ ਪੇਸ਼ਗੋਈਆਂ ਦੇ ਆਧਾਰ 'ਤੇ ਇੱਕ ਅਨੁਮਾਨ ਬਣਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਕਈ ਤੱਤਾਂ ਦੀ ਪਛਾਣ ਅਤੇ ਸੰਰਚਨਾ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। +ਆਪਣਾ ਮਾਡਲ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਕਈ ਕੰਮ ਸਪੂਰਤ ਕਰਨ ਲੋੜੀਂਦੇ ਹਨ। ਆਪਣੇ ਸਵਾਲ ਦੀ ਜਾਂਚ ਕਰਨ ਅਤੇ ਮਾਡਲ ਦੀਆਂ ਭਵਿੱਖਬਾਣੀਆਂ 'ਤੇ ਅਧਾਰਿਤ ਇੱਕ ਹਿਪੋਥੇਸਿਸ ਬਣਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਕਈ ਤੱਤਾਂ ਦੀ ਪਹਚਾਣ ਤੇ ਸੰਰਚਨਾ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ### ਡਾਟਾ -ਤੁਹਾਡੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਕਿਸੇ ਵੀ ਕਿਸਮ ਦੀ ਯਕੀਨ ਨਾਲ ਦੇਣ ਲਈ, ਤੁਹਾਨੂੰ ਸਹੀ ਕਿਸਮ ਦੇ ਡਾਟਾ ਦੀ ਚੰਗੀ ਮਾਤਰਾ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਸਮੇਂ ਤੁਹਾਨੂੰ ਦੋ ਕੰਮ ਕਰਨੇ ਪੈਂਦੇ ਹਨ: +ਤੁਹਾਡੇ ਸਵਾਲ ਦਾ ਕਿਸੇ ਵੀ ਪੱਕੇ ਜਵਾਬ ਲਈ, ਤੁਹਾਨੂੰ ਢੇਰ ਸਾਰਾ ਸਹੀ ਕਿਸਮ ਦਾ ਡਾਟਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਸਮੇਂ ਤੁਹਾਨੂੰ ਦੋ ਚੀਜ਼ਾਂ ਕਰਨੀ ਹੁੰਦੀ ਹਨ: -- **ਡਾਟਾ ਇਕੱਠਾ ਕਰੋ**। ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਵਿੱਚ ਨਿਰਪੱਖਤਾ ਦੇ ਪਿਛਲੇ ਪਾਠ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ, ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਸਾਵਧਾਨੀ ਨਾਲ ਇਕੱਠਾ ਕਰੋ। ਇਸ ਡਾਟਾ ਦੇ ਸਰੋਤਾਂ, ਇਸ ਵਿੱਚ ਮੌਜੂਦ ਕਿਸੇ ਵੀ ਅੰਦਰੂਨੀ ਪੱਖਪਾਤ, ਅਤੇ ਇਸ ਦੇ ਮੂਲ ਨੂੰ ਦਸਤਾਵੇਜ਼ਬੱਧ ਕਰੋ। -- **ਡਾਟਾ ਤਿਆਰ ਕਰੋ**। ਡਾਟਾ ਤਿਆਰੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਕਈ ਕਦਮ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ। ਜੇਕਰ ਡਾਟਾ ਵੱਖ-ਵੱਖ ਸਰੋਤਾਂ ਤੋਂ ਆਉਂਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਇਕੱਠਾ ਅਤੇ ਸਧਾਰਨ ਕਰਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। ਤੁਸੀਂ ਸਤਰਾਂ ਨੂੰ ਨੰਬਰਾਂ ਵਿੱਚ ਬਦਲ ਕੇ (ਜਿਵੇਂ ਅਸੀਂ [ਕਲਸਟਰਿੰਗ](../../5-Clustering/1-Visualize/README.md) ਵਿੱਚ ਕਰਦੇ ਹਾਂ) ਡਾਟਾ ਦੀ ਗੁਣਵੱਤਾ ਅਤੇ ਮਾਤਰਾ ਵਿੱਚ ਸੁਧਾਰ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਮੂਲ ਡਾਟਾ ਦੇ ਆਧਾਰ 'ਤੇ ਨਵਾਂ ਡਾਟਾ ਜਨਰੇਟ ਕਰ ਸਕਦੇ ਹੋ (ਜਿਵੇਂ ਅਸੀਂ [ਕਲਾਸੀਫਿਕੇਸ਼ਨ](../../4-Classification/1-Introduction/README.md) ਵਿੱਚ ਕਰਦੇ ਹਾਂ)। ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਸਾਫ ਅਤੇ ਸੋਧ ਸਕਦੇ ਹੋ (ਜਿਵੇਂ ਅਸੀਂ [ਵੈਬ ਐਪ](../../3-Web-App/README.md) ਪਾਠ ਤੋਂ ਪਹਿਲਾਂ ਕਰਾਂਗੇ)। ਆਖਰਕਾਰ, ਤੁਸੀਂ ਇਸ ਨੂੰ ਰੈਂਡਮਾਈਜ਼ ਅਤੇ ਸ਼ਫਲ ਕਰਨ ਦੀ ਲੋੜ ਕਰ ਸਕਦੇ ਹੋ, ਤੁਹਾਡੇ ਟ੍ਰੇਨਿੰਗ ਤਕਨੀਕਾਂ ਦੇ ਆਧਾਰ 'ਤੇ। +- **ਡਾਟਾ ਇਕੱਠਾ ਕਰੋ**। ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਵਿੱਚ ਨਿਆਂ ਦੀ ਵਿਚਾਰਧਾਰਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ, ਆਪਣਾ ਡਾਟਾ ਧਿਆਨ ਨਾਲ ਇਕੱਠਾ ਕਰੋ। ਇਸ ਡਾਟਾ ਦੇ ਸਰੋਤਾਂ ਨੂੰ ਜਾਣੋ, ਇਸ ਵਿੱਚ ਹੋ ਸਕਦੇ ਪੱਖਪਾਤਾਂ ਬਾਰੇ ਸਮਝੋ ਅਤੇ ਇਸਦਾ ਮੂਲ ਦਰਜ ਕਰੋ। +- **ਡਾਟਾ ਤਿਆਰ ਕਰੋ**। ਡਾਟਾ ਤਿਆਰ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਕਈ ਕਦਮ ਹਨ। ਤੁਸੀਂ ਵੱਖਰੇ ਸਰੋਤਾਂ ਤੋਂ ਆਉਣ ਵਾਲੇ ਡਾਟੇ ਨੂੰ ਇਕੱਠਾ ਕਰਕੇ ਸਮਾਨ ਰੂਪ ਵਿੱਚ ਲਿਆ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਡਾਟੇ ਦੀ ਗੁਣਵੱਤਾ ਅਤੇ ਮਾਤਰਾ ਨੂੰ ਸੂਤਰਾਂ ਨੂੰ ਨੰਬਰਾਂ ਵਿੱਚ ਬਦਲ ਕੇ ਸੁਧਾਰ ਸਕਦੇ ਹੋ (ਜਿਵੇਂ ਕਿ ਅਸੀਂ [ਕਲੱਸਟਰਿੰਗ](../../5-Clustering/1-Visualize/README.md) ਵਿੱਚ ਕਰਦੇ ਹਾਂ)। ਤੁਸੀਂ ਮੂਲ ਡਾਟਾ ਦੇ ਆਧਾਰ ਤੇ ਨਵਾਂ ਡਾਟਾ ਵੀ ਤਿਆਰ ਕਰ ਸਕਦੇ ਹੋ (ਜਿਵੇਂ ਕਿ ਅਸੀਂ [ਕਲਾਸੀਫਿਕੇਸ਼ਨ](../../4-Classification/1-Introduction/README.md) ਵਿੱਚ ਕਰਦੇ ਹਾਂ)। ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਸਾਫ-ਸੁਥਰਾ ਅਤੇ ਸੰਪਾਦਿਤ ਕਰ ਸਕਦੇ ਹੋ (ਜਿਵੇਂ ਕਿ ਅਸੀਂ [ਵੈੱਬ ਐਪ](../../3-Web-App/README.md) ਸਬਕ ਤੋਂ ਪਹਿਲਾਂ ਕਰਾਂਗੇ)। ਆਖਿਰਕਾਰ, ਤੁਸੀਂ ਇਸਨੂੰ ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਤਕਨੀਕਾਂ ਅਨੁਸਾਰ ਰੈੰਡੀਮ ਕਰਨਾ ਅਤੇ ਸ਼ਫ਼ਲ ਕਰਨਾ ਵੀ ਚਾਹੁੰਦੇ ਹੋ ਸਕਦੇ ਹੋ। -✅ ਡਾਟਾ ਇਕੱਠਾ ਕਰਨ ਅਤੇ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਇੱਕ ਪਲ ਲਓ ਅਤੇ ਦੇਖੋ ਕਿ ਕੀ ਇਸ ਦਾ ਆਕਾਰ ਤੁਹਾਡੇ ਇਰਾਦੇ ਸਵਾਲ ਨੂੰ ਹੱਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਡਾਟਾ ਤੁਹਾਡੇ ਦਿੱਤੇ ਕੰਮ ਵਿੱਚ ਚੰਗਾ ਪ੍ਰਦਰਸ਼ਨ ਨਾ ਕਰੇ, ਜਿਵੇਂ ਅਸੀਂ ਆਪਣੇ [ਕਲਸਟਰਿੰਗ](../../5-Clustering/1-Visualize/README.md) ਪਾਠਾਂ ਵਿੱਚ ਪਤਾ ਲਗਾਉਂਦੇ ਹਾਂ! +✅ ਆਪਣਾ ਡਾਟਾ ਇਕੱਠਾ ਕਰਨ ਅਤੇ ਸੰਪਾਦਿਤ ਕਰਨ ਮਗਰੋਂ, ਕਿਰਪਾ ਕਰਕੇ ਦੇਖੋ ਕਿ ਇਸ ਦਾ ਸਰੂਪ ਤੁਹਾਡੇ ਇਰਾਦੇ ਬਨਾਏ ਸਵਾਲ ਦੀ ਪੂਰੀ ਜਾਂਚ ਕਰਨ ਯੋਗ ਹੈ ਜਾਂ ਨਹੀਂ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਡਾਟਾ ਤੁਹਾਡੇ ਨਿਰਧਾਰਤ ਕੰਮ ਵਿੱਚ ਚੰਗਾ ਪ੍ਰਦਰਸ਼ਨ ਨਾ ਕਰੇ, ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਆਪਣੇ [ਕਲੱਸਟਰਿੰਗ](../../5-Clustering/1-Visualize/README.md) ਪਾਠਾਂ ਵਿੱਚ ਵੇਖਦੇ ਹਾਂ! -### ਫੀਚਰ ਅਤੇ ਟਾਰਗਟ +### ਫੀਚਰ ਅਤੇ ਟਾਰਗੇਟ -[ਫੀਚਰ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਇੱਕ ਮਾਪਣਯੋਗ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ। ਕਈ ਡਾਟਾਸੈਟ ਵਿੱਚ ਇਹ 'date', 'size', ਜਾਂ 'color' ਵਰਗੇ ਕਾਲਮ ਹੈਡਿੰਗ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਗਟ ਹੁੰਦੀ ਹੈ। ਤੁਹਾਡਾ ਫੀਚਰ ਵੈਰੀਏਬਲ, ਆਮ ਤੌਰ 'ਤੇ ਕੋਡ ਵਿੱਚ `X` ਦੇ ਰੂਪ ਵਿੱਚ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਉਹ ਇਨਪੁਟ ਵੈਰੀਏਬਲ ਹੈ ਜੋ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ। +[ਫੀਚਰ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ਤੁਹਾਡੇ ਡਾਟੇ ਦੀ ਇੱਕ ਮਾਪੀ ਜਾ ਸਕਣ ਵਾਲੀ ਖਾਸੀਅਤ ਹੁੰਦੀ ਹੈ। ਕਈ ਡਾਟਾ ਸੈੱਟਾਂ ਵਿੱਚ ਇਹ ਕਾਲਮ ਦੀ ਸਿਰਲੇਖ ਵਜੋਂ ਦਰਸਾਈ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ 'ਤਾਰੀਖ', 'ਆਕਾਰ' ਜਾਂ 'ਰੰਗ'। ਤੁਹਾਡੀ ਫੀਚਰ ਵੈਰੀਏਬਲ, ਜੋ ਆਮਤੌਰ 'ਤੇ ਕੋਡ ਵਿੱਚ `X` ਰੂਪ ਵਿੱਚ ਦਰਸਾਈ ਜਾਂਦੀ ਹੈ, ਉਹ ਇਨਪੁੱਟ ਵੈਰੀਏਬਲ ਹੁੰਦੀ ਹੈ ਜੋ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। -ਟਾਰਗਟ ਉਹ ਚੀਜ਼ ਹੈ ਜਿਸ ਦੀ ਤੁਸੀਂ ਪੇਸ਼ਗੋਈ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ। ਟਾਰਗਟ ਆਮ ਤੌਰ 'ਤੇ ਕੋਡ ਵਿੱਚ `y` ਦੇ ਰੂਪ ਵਿੱਚ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਤੁਹਾਡੇ ਡਾਟਾ ਤੋਂ ਪੁੱਛੇ ਜਾ ਰਹੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦਰਸਾਉਂਦਾ ਹੈ: ਦਸੰਬਰ ਵਿੱਚ ਕਿਹੜੇ **ਰੰਗ** ਦੇ ਕੱਦੂ ਸਭ ਤੋਂ ਸਸਤੇ ਹੋਣਗੇ? ਸੈਨ ਫਰਾਂਸਿਸਕੋ ਵਿੱਚ ਕਿਹੜੇ ਪੜੋਸਾਂ ਵਿੱਚ ਰਿਅਲ ਐਸਟੇਟ ਦੀ **ਕੀਮਤ** ਸਭ ਤੋਂ ਵਧੀਆ ਹੋਵੇਗੀ? ਕਈ ਵਾਰ ਟਾਰਗਟ ਨੂੰ ਲੇਬਲ ਐਟ੍ਰਿਬਿਊਟ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। +ਟਾਰਗੇਟ ਉਹ ਚੀਜ਼ ਹੈ ਜਿਸ ਦੀ ਤੁਸੀਂ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ। ਟਾਰਗੇਟ, ਜੋ ਆਮਤੌਰ 'ਤੇ ਕੋਡ ਵਿੱਚ `y` ਵਜੋਂ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਉਸ ਸਵਾਲ ਦਾ ਜਵਾਬ ਹੁੰਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਆਪਣੇ ਡਾਟੇ ਨੂੰ ਪੁੱਛ ਰਹੇ ਹੋ: ਦਸੰਬਰ ਵਿੱਚ, ਕੇਹੜਾ **ਰੰਗ** ਦੇ ਕੁੱਰਬੂਤ ਸਸਤੇ ਹੋਣਗੇ? ਸੈਨ ਫਰਾਂਸਿਸਕੋ ਵਿੱਚ, ਦਿੱਤੇ ਮੋਹੱਲਿਆਂ ਦੀ ਜਾਇਦਾਦ ਦੀਆਂ ਵਧੀਆ **ਕੀਮਤਾਂ** ਕਿਹੜੀਆਂ ਹੋਣਗੀਆਂ? ਕਈ ਵਾਰ ਟਾਰਗੇਟ ਨੂੰ ਲੇਬਲ ਅਟ੍ਰਿਬਿਊਟ ਵਜੋਂ ਵੀ ਸੈਜ਼ਾ ਦਿੰਦੇ ਹਨ। -### ਫੀਚਰ ਵੈਰੀਏਬਲ ਚੁਣਨਾ +### ਆਪਣੀ ਫੀਚਰ ਵੈਰੀਏਬਲ ਚੁਣੋ -🎓 **ਫੀਚਰ ਚੋਣ ਅਤੇ ਫੀਚਰ ਨਿਕਾਸ**। ਮਾਡਲ ਬਣਾਉਣ ਸਮੇਂ ਤੁਹਾਨੂੰ ਕਿਹੜਾ ਵੈਰੀਏਬਲ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ? ਤੁਸੀਂ ਸ਼ਾਇਦ ਫੀਚਰ ਚੋਣ ਜਾਂ ਫੀਚਰ ਨਿਕਾਸ ਦੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚੋਂ ਗੁਜ਼ਰੋਗੇ ਤਾਂ ਜੋ ਸਭ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਲਈ ਸਹੀ ਵੈਰੀਏਬਲ ਚੁਣ ਸਕੋ। ਹਾਲਾਂਕਿ ਇਹ ਦੋਵੇਂ ਇੱਕੋ ਜਿਹੇ ਨਹੀਂ ਹਨ: "ਫੀਚਰ ਨਿਕਾਸ ਮੂਲ ਫੀਚਰਾਂ ਦੇ ਫੰਕਸ਼ਨਾਂ ਤੋਂ ਨਵੇਂ ਫੀਚਰ ਬਣਾਉਂਦਾ ਹੈ, ਜਦਕਿ ਫੀਚਰ ਚੋਣ ਫੀਚਰਾਂ ਦੇ ਇੱਕ ਉਪਸੈਟ ਨੂੰ ਵਾਪਸ ਕਰਦਾ ਹੈ।" ([ਸਰੋਤ](https://wikipedia.org/wiki/Feature_selection)) +🎓 **ਫੀਚਰ ਸਿਲੈਕਸ਼ਨ ਅਤੇ ਫੀਚਰ ਐਕਸਟ੍ਰੈਕਸ਼ਨ** ਮਾਡਲ ਬਣਾਉਂਦੇ ਸਮੇਂ ਤੁਸੀਂ ਕਿਸ ਵੈਰੀਏਬਲ ਨੂੰ ਚੁਣੋਗੇ, ਇਸ ਦਾ ਕੀਮਤੀ ਪ੍ਰਕਿਰਿਆ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਫੀਚਰ ਸਿਲੈਕਸ਼ਨ ਜਾਂ ਫੀਚਰ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜੋ ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰਦਰਸ਼ਨ ਵਾਲਾ ਮਾਡਲ ਚੁਣਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਪਰ ਇਹ ਦੋਵੇਂ ਇਕੋ ਨਹੀਂ ਹਨ: "ਫੀਚਰ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਮੂਲ ਫੀਚਰਾਂ ਦੇ ਫੰਕਸ਼ਨਾਂ ਤੋਂ ਨਵੇਂ ਫੀਚਰ ਬਣਾਉਂਦੀ ਹੈ, ਜਦਕਿ ਫੀਚਰ ਸਿਲੈਕਸ਼ਨ ਫੀਚਰਾਂ ਦਾ ਇੱਕ ਉੱਪਸੈੱਟ ਵਾਪਸ ਕਰਦਾ ਹੈ।" ([ਸਰੋਤ](https://wikipedia.org/wiki/Feature_selection)) -### ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰੋ +### ਡਾਟਾ ਨੂੰ ਵਿਜੂਅਲਾਈਜ਼ ਕਰੋ -ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦੇ ਟੂਲਕਿਟ ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਪਹਲੂ ਹੈ ਕਈ ਸ਼ਾਨਦਾਰ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਿਵੇਂ Seaborn ਜਾਂ MatPlotLib ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਦੀ ਸ਼ਕਤੀ। ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲ ਰੂਪ ਵਿੱਚ ਦਰਸਾਉਣਾ ਤੁਹਾਨੂੰ ਲੁਕੇ ਹੋਏ ਸੰਬੰਧਾਂ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇ ਸਕਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਲਾਭਦਾਇਕ ਬਣਾ ਸਕਦੇ ਹੋ। ਤੁਹਾਡੇ ਵਿਜ਼ੁਅਲਾਈਜ਼ੇਸ਼ਨ ਤੁਹਾਨੂੰ ਪੱਖਪਾਤ ਜਾਂ ਅਸੰਤੁਲਿਤ ਡਾਟਾ ਦੀ ਖੋਜ ਕਰਨ ਵਿੱਚ ਵੀ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ (ਜਿਵੇਂ ਅਸੀਂ [ਕਲਾਸੀਫਿਕੇਸ਼ਨ](../../4-Classification/2-Classifiers-1/README.md) ਵਿੱਚ ਪਤਾ ਲਗਾਉਂਦੇ ਹਾਂ)। +ਡਾਟਾ ਵਿਗਿਆਨੀ ਦੇ ਟੂਲਕਿਟ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਗੁਣ ਡਾਟਾ ਨੂੰ ਕਈ ਸ਼ਾਨਦਾਰ ਲਾਇਬ੍ਰੇਰੀਆਂ ਵਰਗੇ ਸੇਬੌਰਨ ਜਾਂ ਮੈਟਪਲਾਟਲਿਬ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਹੈ। ਆਪਣਾ ਡਾਟਾ ਵਿਜ਼ੂਅਲ ਰੂਪ ਵਿੱਚ ਦਰਸਾਉਣਾ ਤੁਹਾਨੂੰ ਲੁਕਵੇਂ ਸੰਬੰਧਾਂ ਦੀ ਸੂਝ ਦੇ ਸਕਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਵਰਤ ਸਕਦੇ ਹੋ। ਤੁਹਾਡੇ ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਪੱਖਪਾਤ ਜਾਂ ਅਸਮਤੁਲਿਤ ਡਾਟਾ ਨੂੰ ਵੀ ਖੋਜਣ ਵਿੱਚ ਸਹਾਇਕ ਹੋ ਸਕਦੇ ਹਨ (ਜਿਵੇਂ ਕਿ ਅਸੀਂ [ਕਲਾਸੀਫਿਕੇਸ਼ਨ](../../4-Classification/2-Classifiers-1/README.md) ਵਿੱਚ ਪਤਾ ਲਗਾਉਂਦੇ ਹਾਂ)। -### ਆਪਣੇ ਡਾਟਾਸੈਟ ਨੂੰ ਵੰਡੋ +### ਆਪਣਾ ਡਾਟਾਸੈੱਟ ਵੰਡੋ -ਟ੍ਰੇਨਿੰਗ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਆਪਣੇ ਡਾਟਾਸੈਟ ਨੂੰ ਦੋ ਜਾਂ ਵੱਧ ਅਸਮਾਨ ਆਕਾਰ ਦੇ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਣਾ ਪੈਂਦਾ ਹੈ ਜੋ ਫਿਰ ਵੀ ਡਾਟਾ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਦਰਸਾਉਂਦੇ ਹਨ। +ਟ੍ਰੇਨਿੰਗ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਆਪਣੇ ਡਾਟਾਸੈੱਟ ਨੂੰ ਦੋ ਜਾਂ ਵੱਧ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਅਸਮਾਨ ਆਕਾਰ ਦੇ ਹੋਣ ਦੇ ਬਾਵਜੂਦ ਡਾਟੇ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਦਰਸਾਉਂਦੇ ਹੋਣ। -- **ਟ੍ਰੇਨਿੰਗ**। ਡਾਟਾਸੈਟ ਦਾ ਇਹ ਹਿੱਸਾ ਤੁਹਾਡੇ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਫਿੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਸੈੱਟ ਮੂਲ ਡਾਟਾਸੈਟ ਦਾ ਜ਼ਿਆਦਾਤਰ ਹਿੱਸਾ ਹੁੰਦਾ ਹੈ। -- **ਟੈਸਟਿੰਗ**। ਇੱਕ ਟੈਸਟ ਡਾਟਾਸੈਟ ਇੱਕ ਸਵਤੰਤਰ ਗਰੁੱਪ ਹੈ, ਅਕਸਰ ਮੂਲ ਡਾਟਾ ਤੋਂ ਇਕੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਸਦੀ ਵਰਤੋਂ ਤੁਸੀਂ ਬਣਾਏ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਰਦੇ ਹੋ। -- **ਵੈਲੀਡੇਟਿੰਗ**। ਇੱਕ ਵੈਲੀਡੇਸ਼ਨ ਸੈੱਟ ਇੱਕ ਛੋਟਾ ਸਵਤੰਤਰ ਗਰੁੱਪ ਹੈ ਜਿਸਦੀ ਵਰਤੋਂ ਤੁਸੀਂ ਮਾਡਲ ਦੇ ਹਾਈਪਰਪੈਰਾਮੀਟਰਾਂ ਜਾਂ ਆਰਕੀਟੈਕਚਰ ਨੂੰ ਸੁਧਾਰਨ ਲਈ ਕਰਦੇ ਹੋ। ਤੁਹਾਡੇ ਡਾਟਾ ਦੇ ਆਕਾਰ ਅਤੇ ਤੁਹਾਡੇ ਸਵਾਲ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਹਾਨੂੰ ਇਹ ਤੀਜਾ ਸੈੱਟ ਬਣਾਉਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੋ ਸਕਦੀ (ਜਿਵੇਂ ਅਸੀਂ [ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ](../../7-TimeSeries/1-Introduction/README.md) ਵਿੱਚ ਨੋਟ ਕਰਦੇ ਹਾਂ)। +- **ਟ੍ਰੇਨਿੰਗ**। ਡਾਟਾਸੈੱਟ ਦਾ ਇਹ ਹਿੱਸਾ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਫਿਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਸੈੱਟ ਮੂਲ ਡਾਟਾਸੈੱਟ ਦਾ ਵੱਡਾ ਹਿੱਸਾ ਹੁੰਦਾ ਹੈ। +- **ਟੈਸਟਿੰਗ**। ਟੈਸਟ ਡਾਟਾਸੈੱਟ ਇੱਕ ਸੁਤੰਤਰ ਸਮੂਹ ਹੁੰਦਾ ਹੈ ਜੋ ਜ਼ਿਆਦਾਤਰ ਮੂਲ ਡਾਟੇ ਤੋਂ ਇਕੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ এবং ਜਿਸਦੀ ਵਰਤੋਂ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। +- **ਵੈਲਿਡੇਟਿੰਗ**। ਵੈਲਿਚੇਕਸ਼ਨ ਸੈੱਟ ਛੋਟਾ ਸੁਤੰਤਰ ਉਦਾਹਰਨਾਂ ਦਾ ਸਮੂਹ ਹੁੰਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਮਾਡਲ ਦੇ ਹਾਈਪਰਪੈਰਾਮੀਟਰ ਜਾਂ ਬਣਤਰ ਨੂੰ ਟਿਊਨ ਕਰਨ ਲਈ ਵਰਤਦੇ ਹੋ। ਤੁਹਾਡੇ ਡਾਟਾ ਦੇ ਆਕਾਰ ਅਤੇ ਸਵਾਲ ਦੇ ਅਨੁਸਾਰ ਤੁਸੀਂ ਇਸ ਤੀਜੇ ਸੈੱਟ ਦੀ ਲੋੜ ਨਹੀਂ ਮਹਿਸੂਸ ਕਰ ਸਕਦੇ (ਜਿਵੇਂ ਕਿ ਅਸੀਂ [ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ](../../7-TimeSeries/1-Introduction/README.md) ਵਿੱਚ ਨੋਟ ਕਰਦੇ ਹਾਂ)। ## ਮਾਡਲ ਬਣਾਉਣਾ -ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਤੁਹਾਡਾ ਉਦੇਸ਼ ਇੱਕ ਮਾਡਲ ਬਣਾਉਣਾ ਹੈ, ਜਾਂ ਤੁਹਾਡੇ ਡਾਟਾ ਦਾ ਇੱਕ ਸਾਂਖਿਕ ਪ੍ਰਤੀਨਿਧੀ, ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਨੂੰ **ਟ੍ਰੇਨ** ਕਰਨਾ। ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਇਸ ਨੂੰ ਡਾਟਾ ਦੇ ਸਾਹਮਣੇ ਰੱਖਦਾ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਖੋਜੇ ਗਏ ਪੈਟਰਨਾਂ ਬਾਰੇ ਧਾਰਨਾ ਬਣਾਉਣ, ਵੈਲੀਡੇਟ ਕਰਨ, ਅਤੇ ਸਵੀਕਾਰ ਜਾਂ ਅਸਵੀਕਾਰ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। +ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਡਾਟੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਹਾਡਾ ਲਕੜ ਹੈ ਕਿ ਇੱਕ ਮਾਡਲ ਬਣਾਉ, ਜਾਂ ਤੁਹਾਡੇ ਡਾਟੇ ਦੀ ਸਾਂਖਿਆਕੀ ਪ੍ਰਤੀਨਿਧੀ ਬਣਾਉ, ਜੋ ਵੱਖਰੇ ਅਲਗੋਰਿਦਮ ਵਰਤ ਕੇ ਇਸਨੂੰ ਟ੍ਰੇਨ ਕਰੇ। ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਇਸਨੂੰ ਡਾਟਾ ਨਾਲ ਸਾਹਮਣਾ ਕਰਵਾਉਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਪੈਟਰਨਾਂ ਬਾਰੇ ਅਸੁਮptions ਬਣਾਉਣ ਦਿੰਦਾ ਹੈ ਜੋ ਇਹ ਖੋਜਦਾ, ਸੱਚ ਜਾਂ ਝੂਠ ਨੂੰ ਜਾਂਚਦਾ, ਤੇ ਕਬੂਲ ਜਾਂ ਠੁਕਰਾਉਂਦਾ ਹੈ। -### ਟ੍ਰੇਨਿੰਗ ਵਿਧੀ ਤੈਅ ਕਰੋ +### ਟ੍ਰੇਨਿੰਗ ਮੈਥਡ ਦਾ ਫੈਸਲਾ ਕਰੋ -ਤੁਹਾਡੇ ਸਵਾਲ ਅਤੇ ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਸੀਂ ਇਸ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਇੱਕ ਵਿਧੀ ਚੁਣੋਗੇ। [Scikit-learn ਦੀ ਦਸਤਾਵੇਜ਼](https://scikit-learn.org/stable/user_guide.html) ਵਿੱਚੋਂ ਗੁਜ਼ਰਦੇ ਹੋਏ - ਜਿਸਦੀ ਵਰਤੋਂ ਅਸੀਂ ਇਸ ਕੋਰਸ ਵਿੱਚ ਕਰਦੇ ਹਾਂ - ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕੇ ਖੋਜ ਸਕਦੇ ਹੋ। ਤੁਹਾਡੇ ਅਨੁਭਵ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਕਈ ਵੱਖ-ਵੱਖ ਵਿਧੀਆਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨੀ ਪਵੇਗੀ। ਤੁਸੀਂ ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚੋਂ ਗੁਜ਼ਰਦੇ ਹੋ ਜਿੱਥੇ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਦਾ ਮੁਲਾਂਕਨ ਕਰਦੇ ਹਨ, ਇਸ ਨੂੰ ਨਾ ਦੇਖੇ ਡਾਟਾ ਦੇਣ, ਸਹੀਤਾ, ਪੱਖਪਾਤ, ਅਤੇ ਹੋਰ ਗੁਣਵੱਤਾ-ਘਟਾਉਣ ਵਾਲੇ ਮੁੱਦਿਆਂ ਦੀ ਜਾਂਚ ਕਰਦੇ ਹਨ, +ਤੁਹਾਡੇ ਸਵਾਲ ਅਤੇ ਡਾਟਾ ਦੀ ਕਿਸਮ dian ਅਧਾਰ, ਤੁਸੀਂ ਟ੍ਰੇਨ ਕਰਨ ਦਾ ਇੱਕ ਮੈਥਡ ਚੁਣੋਗੇ। [ਸਕੀਟ-ਲਰਨ ਦੀ ਦਸਤਾਵੇਜ਼ੀ](https://scikit-learn.org/stable/user_guide.html) ਦੇ ਰਾਹੀਂ ਚੱਲਦੇ ਹੋਏ - ਜੋ ਅਸੀਂ ਇਸ ਕੋਰਸ ਵਿੱਚ ਵਰਤਦੇ ਹਾਂ - ਤੁਸੀਂ ਕਈ ਢੰਗਾਂ ਨਾਲ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਦਾ ਪਤਾ ਲਾ ਸਕਦੇ ਹੋ। ਤੁਹਾਡੇ ਅਨੁਭਵ ਦੇ ਮੁਤਾਬਕ, ਤੁਸੀਂ ਸਭ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਕਈ ਵੱਖਰਾ ਤਰੀਕਿਆਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ। ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਵੱਡੇ ਅਕਸਰ ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿਚੋਂ ਲੰਘਦੇ ਹਨ ਜਿੱਥੇ ਉਨ੍ਹਾਂ ਅਣਦੇਖੇ ਡਾਟੇ ਨੂੰ ਮਾਡਲ ਵਿੱਚ ਫੀਡ ਕਰਕੇ ਇਸ ਦੀ ਸ਼ੁੱਧਤਾ, ਪੱਖਪਾਤ, ਅਤੇ ਹੋਰ ਕੁਆਲਿਟੀ ਥੀਮਾਂ ਦੀ ਜਾਂਚ ਕਰਦੇ ਹਨ ਅਤੇ ਕੰਮ ਲਈ ਸਭ ਤੋਂ ਢੁਕਵਾਂ ਟ੍ਰੇਨਿੰਗ ਮੈਥਡ ਚੁਣਦੇ ਹਨ। + +### ਮਾਡਲ ਟ੍ਰੇਨ ਕਰੋ + +ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਡਾਟੇ ਦੇ ਨਾਲ, ਤੁਸੀਂ ਇਸਨੂੰ ਮਾਡਲ ਬਣਾਉਣ ਲਈ 'ਫਿਟ' ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ। ਤੁਹਾਨੂੰ ਵਿਭਿੰਨ ML ਲਾਇਬ੍ਰੇਰੀਆਂ ਵਿੱਚ 'model.fit' ਕੋਡ ਅਕਸਰ ਮਿਲੇਗਾ—ਸਿਰਫ ਇਸ ਸਮੇਂ ਹੀ ਤੁਸੀਂ ਆਪਣੀ ਫੀਚਰ ਵੈਰੀਏਬਲ (ਸਧਾਰਣ: 'X') ਅਤੇ ਟਾਰਗੇਟ ਵੈਰੀਏਬਲ ('y' ਆਮ ਤੌਰ) ਦੇ ਤੌਰ ਤੇ ਇੱਕ ਐਰੇ ਭੇਜਦੇ ਹੋ। + +### ਮਾਡਲ ਦਾ ਮੁਲਾਂਕਣ ਕਰੋ + +ਜਦੋਂ ਟ੍ਰੇਨਿੰਗ ਪ੍ਰਕਿਰਿਆ ਮੁਕੰਮਲ ਹੁੰਦੀ ਹੈ (ਇਹ ਵੱਡੇ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਕਈ ਦੌਰ ਜਾਂ 'ਏਪੌਕ' ਲੈ ਸਕਦਾ ਹੈ), ਤੁਸੀਂ ਟੈਸਟ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਾਡਲ ਦੀ ਕੋਟੀ ਨੂੰ ਅੰਕਿਤ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਡਾਟਾ ਮੂਲ ਡਾਟੇ ਦਾ ਇੱਕ ਉਪਸੈੱਟ ਹੁੰਦਾ ਹੈ ਜਿਸ ਨੂੰ ਮਾਡਲ ਪਹਿਲਾਂ ਜਾਂਚਿਆ ਨਹੀਂ ਹੁੰਦਾ। ਤੁਸੀਂ ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਬਾਰੇ ਮੈਟ੍ਰਿਕਸ ਦਾ ਟੇਬਲ ਛਾਪ ਸਕਦੇ ਹੋ। + +🎓 **ਮਾਡਲ ਫਿਟਿੰਗ** + +ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸੰਦਰਭ ਵਿੱਚ, ਮਾਡਲ ਫਿਟਿੰਗ ਮਾਡਲ ਦੇ ਅਧਾਰਭੂਤ ਫੰਕਸ਼ਨ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਕਹਿੰਦਾ ਹੈ ਜੋ ਉਹਨਾਂ ਡਾਟਿਆਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਉਹ ਪਹਿਲਾਂ ਨਹੀਂ ਦੇਖਿਆ। + +🎓 **ਅੰਡਰਫਿਟਿੰਗ** ਅਤੇ **ਓਵਰਫਿਟਿੰਗ** ਆਮ ਸਮੱਸਿਆਵਾਂ ਹਨ ਜੋ ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਨੂੰ ਖਰਾਬ ਕਰਦੀਆਂ ਹਨ, ਜਦੋਂ ਮਾਡਲ ਜਾਂ ਤਾਂ ਕਾਫ਼ੀ ਚੰਗਾ ਫਿਟ ਨਹੀਂ ਹੁੰਦਾ ਜਾਂ ਬਹੁਤ ਜ਼ਿਆਦਾ ਚੰਗਾ। ਇਹ ਮਾਡਲ ਨੂੰ ਆਪਣੀ ਟ੍ਰੇਨਿੰਗ ਡਾਟੇ ਨਾਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਜਾਂ ਬਹੁਤ ਘੱਟ ਮਿਲਦੇ-ਜੁਲਦੇ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣਦਾ ਹੈ। ਇੱਕ ਓਵਰਫਿਟ ਮਾਡਲ ਟ੍ਰੇਨਿੰਗ ਡਾਟੇ ਨੂੰ ਬਹੁਤ ਵਧੀਆ ਪ੍ਰਿਜਣ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਸ ਨੇ ਡਾਟੇ ਦੇ ਵੇਰਵੇ ਅਤੇ ਸ਼ੋਰ ਬਹੁਤ ਵਧੀਆ ਸਿੱਖ ਲਿਆ ਹੈ। ਇੱਕ ਅੰਡਰਫਿਟ ਮਾਡਲ ਸਹੀ ਨਹੀਂ ਹੁੰਦਾ ਕਿਉਂਕਿ ਇਹ ਨਾ ਤੂੰ ਆਪਣੀ ਟ੍ਰੇਨਿੰਗ ਡਾਟੇ ਨੂੰ ਸਹੀ ਤਰ੍ਹਾਂ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਪਾਉਂਦਾ ਹੈ ਨਾ ਹੀ ਉਹ ਡਾਟਾ ਜੋ ਇਸਨੇ ਪਹਿਲਾਂ ਨਹੀਂ ਦੇਖਿਆ। + +![overfitting model](../../../../translated_images/pa/overfitting.1c132d92bfd93cb6.webp) +> ਇੰਫੋ ਗ੍ਰਾਫਿਕ ਵੱਲੋਂ [ਜੈਨ ਲੂਪਰ](https://twitter.com/jenlooper) + +## ਪੈਰਾਮੀਟਰ ਟਿਊਨਿੰਗ + +ਜਦੋਂ ਤੁਹਾਡੀ ਸ਼ੁਰੂਆਤੀ ਟ੍ਰੇਨਿੰਗ ਮੁਕੰਮਲ ਹੋ ਜਾਵੇ, ਤਾਂ ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਦਾ ਅਵਲੋਕਨ ਕਰੋ ਅਤੇ ਇਸਦੇ 'ਹਾਈਪਰਪੈਰਾਮੀਟਰ' ਵਿੱਚ ਤਬਦੀਲੀ ਕਰਕੇ ਇਸਨੂੰ ਸੁਧਾਰਨ ਬਾਰੇ ਸੋਚੋ। ਇਸ ਪ੍ਰਕਿਰਿਆ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ [ਦਸਤਾਵੇਜ਼ੀ ਵਿੱਚ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). + +## ਭਵਿੱਖਬਾਣੀ + +ਇਹ ਉਹ ਸਮਾਂ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਬਿਲਕੁਲ ਨਵਾਂ ਡਾਟਾ ਲੈ ਕੇ ਆਪਣੇ ਮਾਡਲ ਦੀ ਸ਼ੁੱਧਤਾ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ 'ਪ੍ਰਯੋਗਿਕ' ML ਸੈਟਿੰਗ ਵਿੱਚ, ਜਿੱਥੇ ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ ਉਤਪਾਦਨ ਵਿੱਚ ਵਰਤਣ ਲਈ ਵੈੱਬ ਐਸੈੱਟਸ ਬਣਾ ਰਹੇ ਹੋ, ਇਹ ਪ੍ਰਕਿਰਿਆ ਯੂਜ਼ਰ ਇਨਪੁੱਟ (ਉਦਾਹਰਨ ਵਜੋਂ, ਬੱਟਨ ਦਬਾਉਣਾ) ਇਕੱਠਾ ਕਰਕੇ ਇੱਕ ਵੈਰੀਏਬਲ ਸੈੱਟ ਕਰਨ ਅਤੇ ਮਾਡਲ ਨੂੰ ਪ੍ਰਕਿਰਿਆ ਜਾਂ ਮੁਲਾਂਕਣ ਲਈ ਭੇਜਣ ਦੀ ਸ਼ਾਮਲ ਕਰ ਸਕਦੀ ਹੈ। + +ਇਨ੍ਹਾਂ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਇਹ ਜਾਣੋਗੇ ਕਿ ਇਹ ਕਦਮ ਕਿਵੇਂ ਤਿਆਰ, ਬਣਾਉਣ, ਟੈਸਟ, ਮੁਲਾਂਕਣ ਅਤੇ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾਣਗੇ - ਇਹ ਸਾਰੇ ਡਾਟਾ ਵਿਗਿਆਨੀ ਦੀਆਂ ਹਰਕਤਾਂ ਹਨ ਅਤੇ ਵੱਧ-ਵੱਧ, ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ 'ਫੁੱਲ ਸਟੈਕ' ML ਇੰਜੀਨੀਅਰ ਬਣਨ ਦੇ ਸਫ਼ਰ ਵਿੱਚ ਅੱਗੇ ਵਧਦੇ ਹੋ। + +--- + +## 🚀ਚੈਲੇੰਜ + +ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਅਭਿਆਸਕ ਦੀ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਇੱਕ ਫਲੋ ਚਾਰਟ ਬਣਾਓ। ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਪ੍ਰਕਿਰਿਆ ਦੇ ਕਿਹੜੇ ਹਿੱਸੇ ਵਿੱਚ ਹੋ? ਤੁਹਾਨੂੰ ਕਿਹੜੀਆਂ ਮੁਸ਼ਕਲਾਂ ਦਾ ਸਾਹਮਣਾ ਹੋ ਸਕਦਾ ਹੈ? ਤੁਹਾਨੂੰ ਕੀ ਚੀਜ਼ ਸੌਖੀ ਲੱਗਦੀ ਹੈ? + +## [ਪੋਸਟ-ਲੇਕਚਰ ਕਿਊਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵਯੰ ਅਧਿਐਨ + +ਡਾਟਾ ਸਾਇੰਟਿਸਟਾਂ ਨਾਲ ਇੰਟਰਵਿਊਜ਼ ਖੋਜੋ ਜੋ ਆਪਣੇ ਰੋਜ਼ਾਨਾ ਕੰਮ ਬਾਰੇ ਗੱਲ ਕਰਦੇ ਹਨ। ਇੱਥੇ [ਇੱਕ](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ਹੈ। + +## ਅਸਾਈਨਮੈਂਟ + +[ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦਾ ਇੰਟਰਵਿਊ ਕਰੋ](assignment.md) --- -**ਅਸਵੀਕਾਰਨਾ**: -ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file + +**ਅਸਵੀਕਾਰੋਪਤਰ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਆਟੋਮੈਟਿਕ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਹੀਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਿਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੋਏ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। + \ No newline at end of file diff --git a/translations/pa/2-Regression/3-Linear/README.md b/translations/pa/2-Regression/3-Linear/README.md index 3c4f51807a..5433b53b85 100644 --- a/translations/pa/2-Regression/3-Linear/README.md +++ b/translations/pa/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# ਸਕਾਇਕਿਟ-ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ: ਰਿਗ੍ਰੈਸ਼ਨ ਚਾਰ ਤਰੀਕੇ +# ਸਕਿਕਿਟ-ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ: ਰਿਗ੍ਰੈਸ਼ਨ ਚਾਰ ਤਰੀਕਿਆਂ ਨਾਲ ## ਸ਼ੁਰੂਆਤੀ ਨੋਟ -ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਉਸ ਸਮੇਂ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਅਸੀਂ ਇੱਕ **ਸੰਖਿਆਤਮਕ ਮੁੱਲ** ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ (ਉਦਾਹਰਨ ਲਈ, ਘਰ ਦੀ ਕੀਮਤ, ਤਾਪਮਾਨ, ਜਾਂ ਵਿਕਰੀ). -ਇਹ ਇੰਪੁੱਟ ਫੀਚਰਾਂ ਅਤੇ ਆਉਟਪੁੱਟ ਦਰਮਿਆਨ ਸੰਬੰਧ ਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਦਰਸਾਉਂਦੀ ਲੱਕੜੀ ਲੈ ਕੇ ਕੰਮ ਕਰਦੀ ਹੈ। +ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਉਸ ਵੇਲੇ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਅਸੀਂ ਇੱਕ **ਸੰਖਿਆਤਮਕ ਮੁੱਲ** ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨੀ ਹੋਵੇ (ਉਦਾਹਰਨ ਲਈ, ਘਰ ਦੀ ਕੀਮਤ, ਤਾਪਮਾਨ, ਜਾਂ ਵਿਕਰੀ)। +ਇਹ ਇਨਪੁੱਟ ਫੀਚਰਾਂ ਅਤੇ ਆਉਟਪੁੱਟ ਵਿਚਕਾਰ ਸੰਬੰਧ ਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਦਰਸਾਉਣ ਵਾਲੀ ਸਿੱਧੀ ਲਾਈਨ ਲੱਭ ਕੇ ਕੰਮ ਕਰਦੀ ਹੈ। -ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਧਿਆਨ ਕੇਵਲ ਸਮਝਣ ਵੱਲ ਹੈ ਇਸ ਤਰੀਕੇ ਨੂੰ ਸਮਝਣ 'ਤੇ ਜਦੋਂ ਕਿ ਅਸੀਂ ਹੋਰ ਵਿਕਸਤ ਰਿਗ੍ਰੈਸ਼ਨ ਤਕਨੀਕਾਂ ਵੇਖਾਂਗੇ। -![ਲਾਈਨੀਅਰ ਅਤੇ ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਇੰਨਫੋਗ੍ਰਾਫਿਕ](../../../../translated_images/pa/linear-polynomial.5523c7cb6576ccab.webp) -> ਇੰਨਫੋਗ੍ਰਾਫਿਕ [ਦਾਸਾਨੀ ਮਾਦਿਪੱਲੀ](https://twitter.com/dasani_decoded) ਵੱਲੋਂ +ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਸੰਕਲਪ ਨੂੰ ਸਮਝਣ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ ਜਿਸ ਤੋਂ ਬਾਅਦ ਅਸੀਂ ਹੋਰ ਉन्नਤ ਰਿਗ੍ਰੈਸ਼ਨ ਤਕਨੀਕਾਂ ਦੀ ਜਾਂਚ ਕਰਾਂਗੇ। +![Linear vs polynomial regression infographic](../../../../translated_images/pa/linear-polynomial.5523c7cb6576ccab.webp) +> ਇਨਫੋਗ੍ਰਾਫਿਕ [ਦਾਸਾਨੀ ਮਦੀਪੱਲੀ](https://twitter.com/dasani_decoded) ਵੱਲੋਂ ## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/) -> ### [ਇਹ ਪਾਠ R ਵਿੱਚ ਵੀ ਉਪਲਬਧ ਹੈ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### ਜਾਣਪਛਾਣ +> ### [ਇਹ ਪਾਠ R ਵਿੱਚ ਵੀ ਉਪਲਬਧ ਹੈ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### ਪਰਿਚય -ਹੁਣ ਤੱਕ ਤੁਸੀਂ ਸਮਝਿਆ ਹੈ ਕਿ ਰਿਗ੍ਰੈਸ਼ਨ ਕੀ ਹੈ ਸਟੈਂਡਰਡ ਦੱਤੇਂ ਤੋਂ ਲੈ ਕੇ, ਜੋ ਕਿ ਅਸੀਂ ਉੱਥੇ ਇਸ ਪਾਠ ਦੌਰਾਨ ਵਰਤਾਂਗੇ. ਤੁਸੀਂ ਇਸਨੂੰ ਮੈਟਪਲੌਟਲਿਬ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਵੀ ਵੇਖਿਆ ਹੈ। +ਹੁਣ ਤੱਕ ਤੁਸੀਂ ਸਮਝਿਆ ਹੈ ਕਿ ਰਿਗ੍ਰੈਸ਼ਨ ਕੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਕਦੂ ਦੀ ਕੀਮਤਾਂ ਵਾਲੇ ਨਮੂਨਾ ਡੇਟਾ ਨਾਲ, ਜਿਸਨੂੰ ਅਸੀਂ ਇਸ ਪਾਠ ਵਿੱਚ ਵਰਤਾਂਗੇ। ਤੁਸੀਂ ਇਸਨੂੰ ਮੈਟਪਲੌਟਲਿਬ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੇਖਿਆ ਵੀ ਹੈ। -ਹੁਣ ਤੁਸੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ ਗਹਿਰਾਈ ਵਿੱਚ ਜਾਣ ਲਈ ਤਿਆਰ ਹੋ। ਜਦੋਂ ਕਿ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਤੁਹਾਨੂੰ ਦੱਤੇ ਦਾ ਸਮਝ ਉਪਲਬਧ ਕਰਵਾਉਂਦੀ ਹੈ, ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਅਸਲ ਤਾਕਤ _ਮਾਡਲ ਟਰੇਨਿੰਗ_ ਵਿੱਚ ਹੈ। ਮਾਡਲ ਸਿੱਖਣਕਾਰੀ ਦੱਤੇ 'ਤੇ ਤਿਆਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਜੋ ਡੇਟਾ ਦੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਆਪੋ-ਆਪ ਦਿਖਾਉਂਦੇ ਹਨ, ਅਤੇ ਇਹ ਤੁਹਾਨੂੰ ਨਵੇਂ ਦੱਤੇ ਲਈ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦਿੰਦੇ ਹਨ, ਜਿਸ ਨੂੰ ਮਾਡਲ ਪਹਿਲਾਂ ਨਹੀਂ ਦੇਖਿਆ। +ਹੁਣ ਤੁਸੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ ਗਹਿਰਾਈ ਵਿੱਚ ਜਾਣ ਲਈ ਤਿਆਰ ਹੋ। ਜਦੋਂ ਕਿ ਵਿਜ਼ੂਅਲਾਈਜੇਸ਼ਨ ਡੇਟਾ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਅਸਲ ਤਾਕਤ _ਮਾਡਲ ਟ੍ਰੇਨਿੰਗ_ ਵਿੱਚ ਹੈ। ਮਾਡਲ ਪੁਰਾਣੇ ਡੇਟਾ ਤੇ ਟ੍ਰੇਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਜੋ ਖੁਦ-ਬ-ਖੁਦ ਡੇਟਾ ਦੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਕੈਪਚਰ ਕਰ ਸਕਣ ਅਤੇ ਨਵੇਂ ਡੇਟਾ ਲਈ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਣ ਜੋ ਮਾਡਲ ਨੇ ਪਹਿਲਾਂ ਨਹੀਂ ਵੇਖਿਆ। -ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਦੋ ਕਿਸਮ ਦੇ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਜ਼ਿਆਦਾ ਜਾਣੋਗੇ: _ਮੂਲ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ_ ਅਤੇ _ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ_, ਨਾਲ ਨਾਲ ਕੁਝ ਗਣਿਤ ਜੋ ਇਹ ਤਕਨੀਕਾਂ ਦਾ ਅਧਾਰ ਹੈ। ਇਹ ਮਾਡਲ ਸਾਨੂੰ ਪੰਪਕਿਨਾਂ ਦੀਆਂ ਕੀਮਤਾਂ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਦੇਣਗੇ ਜੋ ਵੱਖ-ਵੱਖ ਇੰਪੁੱਟ ਡੇਟਾ ਦੇ ਅਧਾਰ 'ਤੇ ਹਨ। +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਦੋ ਪ੍ਰਕਾਰ ਦੀਆਂ ਰਿਗ੍ਰੈਸ਼ਨ ਸਮਝੋਂਗੇ: _ਮੂਲ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ_ ਅਤੇ _ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ_, ਨਾਲ ਹੀ ਕੁਝ ਮੈਥਮੈਟਿਕਸ ਜੋ ਇਹ ਤਕਨੀਕਾਂ ਸਮਝਾਉਂਦੇ ਹਨ। ਅਜਿਹੇ ਮਾਡਲ ਸਾਡੇ ਲਈ ਵੱਖ-ਵੱਖ ਇਨਪੁੱਟ ਡੇਟਾ ਦੇ ਆਧਾਰ 'ਤੇ ਕਦੂ ਦੀ ਕੀਮਤ ਆਉਟਪੁੱਟ ਕਰਨਗੇ। -[![ਸ਼ੁਰੂਆਤੀਆਂ ਲਈ ML - ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਸਮਝਣਾ](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ਸ਼ੁਰੂਆਤੀਆਂ ਲਈ ML - ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਸਮਝਣਾ") +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਇੱਕ ਛੋਟਾ ਵੀਡੀਓ ਵੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ਓਪਨ ਕਰੋ। +> 🎥 ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਵੇਖਣ ਲਈ ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ। -> ਸਾਡੇ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਵੱਡਾ ਗਣਿਤ ਗਿਆਨ ਨਹੀਂ ਲਿਆ ਜਾਂਦਾ, ਅਤੇ ਅਸੀਂ ਇਸਨੂੰ ਹੋਰ ਖੇਤਰਾਂ ਦੇ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਅਸਾਨ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਇਸ ਲਈ ਨੋਟਸ, 🧮 ਕਾਲਆਊਟ, ਡਾਯਾਗ੍ਰਾਮ ਅਤੇ ਹੋਰ ਸਿੱਖਣ ਵਾਲੇ ਸੰਦ ਦੀ ਦੇਖਭਾਲ ਕਰੋ। +> ਇਸ ਕਰੀਕੁਲਮ ਵਿੱਚ, ਅਸੀਂ ਮਿਨੀਮਮ ਮੈਥ ਗਿਆਨ ਮੰਨਦੇ ਹਾਂ, ਅਤੇ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਜੋ ਹੋਰ ਖੇਤਰਾਂ ਤੋਂ ਆ ਰਹੇ ਹਨ, ਇਸਨੂੰ ਪਹੁੰਚਯੋਗ ਬਣਾਉਣ ਲਈ ਨੋਟ, 🧮 ਕਾਲਆਊਟਸ, ਡਾਇਗ੍ਰਾਮ ਅਤੇ ਹੋਰ ਸਿੱਖਣ ਵਾਲੇ ਸਾਧਨ ਸ਼ਾਮਲ ਕੀਤੇ ਹਨ। -### ਮੂਲ ਭੂਮਿਕਾ +### ਪੂਰਵ-ਆਵਸ਼੍ਯਕਤਾ -ਤੁਹਾਨੂੰ ਹੁਣ ਤੱਕ ਪੰਪਕਿਨ ਡੇਟਾ ਦੀ ਸੰਰਚਨਾ ਨਾਲ ਜਾਣੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਨੂੰ ਅਸੀਂ ਵੇਖ ਰਹੇ ਹਾਂ। ਇਹ ਡੇਟਾ ਇਸ ਪਾਠ ਦੇ ਨੋਟਬੁੱਕ.ipynb ਫਾਈਲ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਅਤੇ ਸਾਫ ਕੀਤਾ ਹੋਇਆ ਮਿਲੇਗਾ। ਫਾਈਲ ਵਿੱਚ, ਪੰਪਕਿਨ ਦੀ ਕੀਮਤ ਪ੍ਰਤੀ ਬਸ਼ਲ ਦਿਖਾਈ ਗਈ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਇਹ ਨੋਟਬੁੱਕਜ਼ ਵਿਜੁਅਲ ਸਟੂਡੀਓ ਕੋਡ ਵਿੱਚ ਕਰਨੇਲ ਵਿੱਚ ਚਲਾ ਸਕਦੇ ਹੋ। +ਹੁਣ ਤੱਕ ਤੁਸੀਂ ਉਸ ਕਦੂ ਡੇਟਾ ਦੀ ਸੰਰਚਨਾ ਨਾਲ ਪਰਚਿਤ ਹੋ ਜੋ ਅਸੀਂ ਜਾਂਚ ਰਹੇ ਹਾਂ। ਇਹ ਡੇਟਾ ਇਸ ਪਾਠ ਦੇ _notebook.ipynb_ ਫਾਈਲ ਵਿੱਚ ਪਹਿਲਾਂ ਲੋਡ ਅਤੇ ਸਾਫ ਸਿੱਧਾ ਕੀਤਾ ਹੋਇਆ ਹੈ। ਫਾਈਲ ਵਿੱਚ, ਕਦੂ ਦੀ ਕੀਮਤ ਸਲਾਨਾ ਪ੍ਰਤੀ ਬੁਸ਼ਲ ਦਰਜ਼ ਕੀਤੀ ਗਈ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਇਹ ਨੋਟਬੁੱਕਜ਼ ਵਿਜ਼ੂਅਲ ਸਟੂਡੀਓ ਕੋਡ ਵਿੱਚ ਕਰਨਲਾਂ ਵਿੱਚ ਚਲਾ ਸਕੋ। ### ਤਿਆਰੀ -ਇੱਕ ਯਾਦ ਕਰਾਉਣਾ, ਤੁਸੀਂ ਇਹ ਡੇਟਾ ਲੋਡ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਇਸ ਬਾਰੇ ਸਵਾਲ ਪੁੱਛ ਸਕੋ। +ਧਿਆਨ ਰੱਖਣ ਲਈ, ਤੁਸੀਂ ਇਸ ਡੇਟਾ ਨੂੰ ਲੋਡ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਜੋ ਇਸਦੇ ਬਾਰੇ ਸਵਾਲ ਪੁੱਛ ਸਕੋ। -- ਕਦੋਂ ਪੰਪਕਿਨ ਖਰੀਦਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਸਮਾਂ ਹੈ? -- ਮਿਨੀਏਚਰ ਪੰਪਕਿਨ ਦੇ ਕੇਸ ਦੀ ਕੀਮਤ ਕਿੰਨੀ ਹੋਵੇਗੀ? -- ਕੀ ਮੈਂ ਉਹਨਾਂ ਨੂੰ ਅਧਾ-ਬਸ਼ਲ ਟੋकरਿਆਂ ਵਿੱਚ ਖਰੀਦਾਂ ਜਾਂ 1 1/9 ਬਸ਼ਲ ਬਾਕਸ ਵਿੱਚ? -ਆਓ ਇਸ ਡੇਟਾ 'ਚ ਹੋਰ ਖੋਜ ਕਰੀਏ। +- ਕਦੂ ਖਰੀਦਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਸਮਾਂ ਕਦੋਂ ਹੈ? +- ਨanorרות ਕਦੂਆਂ ਦੀ ਇੱਕ ਕੇਸ ਦੀ ਕੀਮਤ ਕੀ ਹੋ ਸਕਦੀ ਹੈ? +- ਕੀ ਮੈਨੂੰ ਇਹਨਾਂ ਨੂੰ ਅੱਧਾ-ਬੁਸ਼ਲ ਟੋकरਿਆਂ ਵਿੱਚ ਖਰੀਦਣਾ ਚਾਹੀਦਾ ਹੈ ਜਾਂ 1 1/9 ਬੁਸ਼ਲ ਡੱਬੇ ਵਿੱਚ? +ਆਓ ਇਸ ਡੇਟਾ ਵਿੱਚ ਹੋਰ ਖੋਜ ਕਰੀਏ। -ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਪੈਂਡਸ ਦਾ ਡੇਟਾ ਫ੍ਰੇਮ ਬਣਾਇਆ ਅਤੇ ਮੂਲ ਡੇਟਾਸੈਟ ਦੇ ਹਿੱਸੇ ਨਾਲ ਭਰਿਆ, ਕੀਮਤ ਨੂੰ ਬਸ਼ਲ ਦੇ ਪੱਧਰ 'ਤੇ ਇੱਕਸਾਰ ਕਰਦੇ ਹੋਏ। ਪਰ ਇਸ ਤਰੀਕੇ ਨਾਲ, ਤੁਸੀਂ ਸਿਰਫ ਲਗਭਗ 400 ਡਾਟਾ ਪੁਆਇੰਟ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜੋ ਕਿ ਸਿਰਫ ਸ਼ਰਦ ਕਾਲ ਦੇ ਮਹੀਨੇ ਸਨ। +ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਪੈਂਡਾਸ ਡੇਟਾ ਫਰੇਮ ਬਣਾਇਆ ਸੀ ਅਤੇ ਮੂਲ ਡੇਟਾ ਸੈੱਟ ਨੂੰ ਬੁਸ਼ਲ ਦੀ ਕੀਮਤ ਦੇ ਅਨੁਸਾਰ ਪਰਮਾਣਿਤ ਕਰਕੇ ਭਰਿਆ ਸੀ। ਪਰ ਇਸ ਤਰ੍ਹਾਂ, ਤੁਸੀਂ ਕੇਵਲ ਲਗਭਗ 400 ਡੇਟਾਪੌਇੰਟ ਹਾਸਲ ਕੀਤੇ ਜੋ ਸਿਰਫ਼ ਪਤਝੜ ਦੇ ਮਹੀਨਿਆਂ ਲਈ ਸਨ। -ਇਸ ਪਾਠ ਦੇ ਨਾਲ ਜੁੜੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਜੋ ਡੇਟਾ ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਕੀਤਾ ਹੈ ਉਸ ਨੂੰ ਵੇਖੋ। ਡੇਟਾ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇੱਕ ਸ਼ੁਰੂਆਤੀ scatterplot ਮਹੀਨੇ ਦਾ ਡੇਟਰ ਦਰਸਾਉਂਦਾ ਹੈ। ਸ਼ਾਇਦ ਅਸੀਂ ਇਸ ਡੇਟਾ ਕੁਝ ਹੋਰ ਸਾਫ਼-ਸਫਾਈ ਕਰਕੇ ਇਸ ਦੇ ਕੁਝ ਹੋਰ ਡੀਟੇਲ ਜਾ ਪਾ ਸਕਦੇ ਹਾਂ। +ਇਸ ਪਾਠ ਦੇ ਸਾਥ ਦੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਪਹਿਲਾਂ ਲੋਡ ਕੀਤੇ ਗਏ ਡੇਟਾ ਨੂੰ ਦੇਖੋ। ਡੇਟਾ ਪਹਿਲਾਂ ਲੋਡ ਕੀਤਾ ਹੋਇਆ ਹੈ ਅਤੇ ਪਹਿਲਾ ਸਕੈਟਰਪਲੌਟ ਦਰਸਾਇਆ ਗਿਆ ਹੈ ਜੋ ਮਹੀਨੇ ਦੇ ਡੇਟਾ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਸ਼ਾਇਦ ਅਸੀਂ ਇਸ ਡੇਟਾ ਦੀ ਕੁਝ ਹੋਰ ਵਿਸਥਾਰ ਜਾਣਣ ਲਈ ਇਸਨੂੰ ਹੋਰ ਸਾਫ ਕਰ ਸਕੀਏ। -## ਇੱਕ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ +## ਇੱਕ ਲਾਇਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ -ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਲੈੱਸਨ 1 ਵਿੱਚ ਸਿੱਖਿਆ, ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸ ਦਾ ਲੱਕੜੀ ਦੀ ਰੇਖਾ ਖਿੱਚਣ ਦਾ ਟੀਚਾ ਹੁੰਦਾ ਹੈ ਤਾਂ ਕਿ: +ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਪਾਠ 1 ਵਿੱਚ ਸਿਖਿਆ, ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸ ਦਾ ਲਕੜ ਲਾਈਨ ਬਣਾਉਣ ਲਈ ਹੁੰਦਾ ਹੈ ਤਾਂ ਕਿ: -- **ਚਲ ਬਦਲ ਸੰਬੰਧ ਦਿਖਾਓ**। ਚਲਾਂ ਵਿਚਕਾਰ ਸੰਬੰਧ ਦਰਸਾਓ -- **ਭਵਿੱਖਬਾਣੀ ਕਰੋ**। ਇਹ ਭਵਿੱਖਬਾਣੀ ਕਰੋ ਕਿ ਨਵਾਂ ਡਾਟਾ ਅਧਾਰ ਲਾਈਨ ਦੇ ਕਿੱਥੇ ਪਏਗਾ। - -ਇਹ ਆਮ ਤੌਰ 'ਤੇ **Least-Squares Regression** ਨੂੰ ਲਾਈਨ ਖਿੱਚਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। "Least-Squares" ਸ਼ਬਦ ਮਾਡਲ ਵਿੱਚ ਕੁੱਲ ਗ਼ਲਤੀ ਘਟਾਉਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਹਰ ਡਾਟਾ ਪੁਆਇੰਟ ਲਈ, ਅਸੀਂ ਅਸਲੀ ਪੁਆਇੰਟ ਅਤੇ ਆਪਣੀ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ ਦਰਮਿਆਨ ਖੜ੍ਹੀ ਦੂਰੀ (ਜਿਸਨੂੰ `residual` ਕਹਿੰਦੇ ਹਨ) ਮਾਪਦੇ ਹਾਂ। +- **ਵੈਰੀਏਬਲ ਸੰਬੰਧ ਦਰਸਾਓ।** ਵੈਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਸੰਬੰਧ ਦਰਸਾਓ +- **ਭਵਿੱਖਬਾਣੀ ਕਰੋ।** ਨਵੇਂ ਡੇਟਾਪੌਇੰਟ ਕਿੱਥੇ ਪੈਂਦੇ ਹਨ, ਇਸਦਾ ਸਹੀ ਅੰਦਾਜ਼ਾ ਲਗਾਓ। + +ਲੈਸਟ-ਸਕੁਆਰਸ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਲਾਈਨ ਖਿੱਚੀ ਜਾਂਦੀ ਹੈ। "ਲੈਸਟ-ਸਕੁਆਰਸ" ਸ਼ਬਦ ਸਾਡੀ ਮਾਡਲ ਵਿੱਚ ਕੁੱਲ ਗਲਤੀ ਘਟਾਉਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਹਰੇਕ ਡੇਟਾ ਪੁਆਇੰਟ ਲਈ, ਅਸੀਂ ਅਸਲ ਪੁਆਇੰਟ ਅਤੇ ਸਾਡੀ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ ਵਿਚਕਾਰ ਖੜ੍ਹੀ ਦੂਰੀ (ਜਿਸਨੂੰ ਰੈਜ਼ਿਡਿਊਅਲ ਕਹਿੰਦੇ ਹਨ) ਮਾਪਦੇ ਹਾਂ। ਅਸੀਂ ਇਹ ਦੂਰੀਆਂ ਵਰਗਾ ਕਰਦੇ ਹਾਂ ਦੋ ਮੁੱਖ ਕਾਰਨਾਂ ਕਰਕੇ: -1. **ਦਿਸ਼ਾ ਦੀ ਬਜਾਏ ਅਕਾਰ**: ਅਸੀਂ -5 ਦੀ ਗ਼ਲਤੀ ਨੂੰ +5 ਜਿਵੇਂ ਹੀ ਮੰਨਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਵਰਗਾ ਕਰਨ ਨਾਲ ਸਾਰੇ ਮੁੱਲ ਸਕਾਰਾਤਮਕ ਹੋ ਜਾਂਦੇ ਹਨ। +1. **ਦਿਸ਼ਾ ਦੀ ਬਜਾਏ ਮਾਤਰਾ:** ਅਸੀਂ -5 ਦੀ ਗਲਤੀ ਨੂੰ +5 ਦੀ ਗਲਤੀ ਵਰਗਾ ਹੀ ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਵਰਗਾ ਕਰਨ ਨਾਲ ਸਾਰੇ ਮੁੱਲ ਸਕਾਰਾਤਮਕ ਹੋ ਜਾਂਦੇ ਹਨ। -2. **ਬਹਿਰੂਏਂ (Outliers) ਨੂੰ ਸਜ਼ਾ ਦੇਣਾ**: ਵਰਗਾ ਕਰਨ ਨਾਲ ਵੱਡੀਆਂ ਗ਼ਲਤੀਆਂ ਨੂੰ ਹੋਰ ਭਾਰ ਮਿਲਦਾ ਹੈ, ਇਸ ਕਰਕੇ ਲਾਈਨ ਦੂਰੇ ਪੁਆਇੰਟਾਂ ਦੇ ਨੇੜੇ ਰਹਿੰਦੀ ਹੈ। +2. **ਆਊਟਲਾਇਅਰਜ਼ ਨੂੰ ਸਜ਼ਾ ਦੇਣਾ:** ਵਰਗਾ ਕਰਨ ਨਾਲ ਵੱਡੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਵੱਧ ਭਾਰ ਮਿਲਦਾ ਹੈ, ਜੋ ਲਾਈਨ ਨੂੰ ਦੂਰਦਰਾਜ਼ ਬਿੰਦੂਆਂ ਦੇ ਨੇੜੇ ਰਹਿਣ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ। -ਅਸੀਂ ਇਹ ਸਾਰੇ ਵਰਗੇ ਮੁੱਲ ਮਿਲਾ ਦੇਂਦੇ ਹਾਂ। ਸਾਡਾ ਟੀਚਾ ਇਹ ਹੈ ਕਿ ਅਸੀਂ ਉਹ ਲਾਈਨ ਲੱਭੀਏ ਜਿਸ ਲਈ ਇਹ ਅੰਤਿਮ ਜੋੜ ਘੱਟ ਤੋਂ ਘੱਟ ਹੋਵੇ—ਇਸੇ ਲਈ ਇਸਨੂੰ "Least-Squares" ਕਹਿੰਦੇ ਹਨ। +ਫਿਰ ਅਸੀਂ ਇਹ ਸਾਰੇ ਵਰਗੇ ਮੁੱਲ ਜੋੜ ਲੈਂਦੇ ਹਾਂ। ਸਾਡਾ ਲਕੜ ਹੈ ਉਹ ਖ਼ਾਸ ਲਾਈਨ ਲੱਭਣਾ ਜਿਸ ਤੇ ਇਹ ਕੁੱਲ ਜੋੜ ਸਭ ਤੋਂ ਘੱਟ ਹੁੰਦਾ ਹੈ (ਸਭ ਤੋਂ ਛੋਟਾ ਸੰਭਵ ਮੁੱਲ)—ਇਸ ਕਈ ਲਈ ਇਸਨੂੰ "ਲੈਸਟ-ਸਕੁਆਰਸ" ਕਿਹਾ ਜਾਂਦਾ ਹੈ। > **🧮 ਮੈਨੂੰ ਗਣਿਤ ਦਿਖਾਓ** > -> ਇਹ ਲਾਈਨ, ਜਿਸਨੂੰ _ਸਭ ਤੋਂ ਵਧੀਆ ਫਿਟ ਲਾਈਨ_ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਇਸਨੂੰ [ਇਕ ਸਮੀਕਰਨ](https://en.wikipedia.org/wiki/Simple_linear_regression) ਰਾਹੀਂ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ: +> ਇਸ ਲਾਈਨ ਨੂੰ _ਸਭ ਤੋਂ ਵਧੀਆ ਫਿੱਟ ਲਾਈਨ_ ਕਹਿੰਦੇ ਹਨ ਅਤੇ ਇਹ [ਇਕ ਸਮੀਕਰਨ](https://en.wikipedia.org/wiki/Simple_linear_regression) ਨਾਲ ਦਰਸਾਈ ਜਾ ਸਕਦੀ ਹੈ: > > ``` > Y = a + bX > ``` -> -> `X` ਨੂੰ 'ਵਿਆਖਿਆਤਮਕ ਚਲ' ਕਿਹਾ ਜਾਂਦਾ ਹੈ। `Y` ਨੂੰ 'ਆਧਾਰਿਤ ਚਲ' ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਲਾਈਨ ਦੀ ঢਲ `b` ਹੈ ਅਤੇ `a` y-ਇੰਟਰਸੈਪਟ ਹੈ, ਜਿਹੜਾ ਉਸ ਮੁੱਲ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜਦੋਂ `X = 0` ਹੋਵੇ। -> ->![ਸਟੋਪ ਦੀ ਗਣਨਾ ਕਰੋ](../../../../translated_images/pa/slope.f3c9d5910ddbfcf9.webp) -> -> ਪਹਿਲਾਂ, ঢੱਲ `b` ਦੀ ਗਣਨਾ ਕਰੋ। ਇੰਨਫੋਗ੍ਰਾਫਿਕ [ਜੈਨ ਲੂਪਰ](https://twitter.com/jenlooper) ਵੱਲੋਂ -> -> ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਅਤੇ ਸਾਡੇ ਪੰਪਕਿਨ ਡੇਟਾ ਦੇ ਮੂਲ ਸਵਾਲ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦਿਆਂ: "ਪੰਪਕਿਨ ਦੀ ਕੀਮਤ ਮਹੀਨੇ ਪ੍ਰਤੀ ਬਸ਼ਲ ਦਿੱਤੇ ਜਾਣ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣਾ", `X` ਕੀਮਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਅਤੇ `Y` ਵਿਕਰੀ ਦੇ ਮਹੀਨੇ ਨੂੰ। -> ->![ਸਮੀਕਰਨ ਪੂਰਾ ਕਰੋ](../../../../translated_images/pa/calculation.a209813050a1ddb1.webp) -> -> Y ਦਾ ਮੁੱਲ ਕੈਲਕੁਲੇਟ ਕਰੋ। ਜੇ ਤੁਸੀਂ ਲਗਭਗ 4 ਡਾਲਰ ਦੇ ਨੇੜੇ ਭੁਗਤਾਨ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਅਪ੍ਰੈਲ ਹੀ ਹੋ ਸਕਦਾ ਹੈ! ਇੰਨਫੋਗ੍ਰਾਫਿਕ [ਜੈਨ ਲੂਪਰ](https://twitter.com/jenlooper) ਵੱਲੋਂ -> -> ਜੋ ਗਣਿਤ ਲਾਈਨ ਦੀ ঢੱਲ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ, ਉਸ ਨੂੰ ਦਰਸਾਉਣਾ ਚਾਹੀਦਾ ਹੈ, ਜੋ ਇੰਟਰਸੈਪਟ 'ਤੇ ਵੀ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਜਿਸ ਥਾਂ Y ਸਥਿਤ ਹੁੰਦਾ ਹੈ ਜਦੋਂ X = 0 ਹੋਵੇ। -> -> ਤੁਸੀਂ ਇਹ ਮੁੱਲ ਕੈਲਕੁਲੇਸ਼ਨ ਦਾ ਤਰੀਕਾ [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ਵੈੱਬਸਾਈਟ ਤੇ ਵੇਖ ਸਕਦੇ ਹੋ। ਇੱਥੇ [Least-squares ਕੈਲਕੁਲੇਟਰ](https://www.mathsisfun.com/data/least-squares-calculator.html) ਤੇ ਵੀ ਜਾਓ ਹੇਠਾਂ ਵੇਖਣ ਲਈ ਕਿ ਕਿਸੇ ਸੰਖਿਆ ਦੇ ਮੁੱਲ ਲਾਈਨ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ। - -## ਸਹਿਸੰਬੰਧ - -ਹੋਰ ਇੱਕ ਸ਼ਬਦ ਸੋਝੀ ਰਹਿਣ ਲਈ ਸਮਝੋ ਉਹ ਹੈ **Correlation Coefficient** X ਅਤੇ Y ਚਲਾਂ ਦੇ ਵਿਚਕਾਰ। ਇੱਕ scatterplot ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤੁਸੀਂ ਇਸ ਕੋਐਫੀਸ਼ੀਅਂਟ ਨੂੰ ਜਲਦੀ ਦੇਖ ਸਕਦੇ ਹੋ। ਜੇ ਡੇਟਾ ਪੁਆਇੰਟ ਇਕ ਲੰਮੀ ਰੇਖਾ ਵਿੱਚ scatter ਹੋਣ ਤਾਂ ਸਹਿਸੰਬੰਧ ਜ਼ਿਆਦਾ ਹੁੰਦਾ ਹੈ, ਪਰ ਜੇ ਪੁਆਇੰਟ ਦੁਨੀਆ ਭਰ ਵਿੱਚ scatter ਹੋਣ, ਸਹਿਸੰਬੰਧ ਘੱਟ ਹੁੰਦਾ ਹੈ। - -ਇੱਕ ਵਧੀਆ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਉਹ ਹੋਵੇਗਾ ਜਿਸਦਾ Correlation Coefficient ਉੱਚਾ ਹੋਵੇ (0 ਦੀ ਬਜਾਏ 1 ਦੇ ਨੇੜੇ) Least-Squares Regression ਤਰੀਕੇ ਨਾਲ। - -✅ ਇਸ ਪਾਠ ਨਾਲ ਜੁੜੇ ਨੋਟਬੁੱਕ ਨੂੰ ਰਨ ਕਰੋ ਅਤੇ ਮਹੀਨੇ ਤੋਂ ਕੀਮਤ scatterplot ਵੇਖੋ। ਕੀ ਮਹੀਨੇ ਨੂੰ ਕੀਮਤ ਨਾਲ ਸੰਬੰਧਿਤ ਡੇਟਾ ਵਿੱਚ ਉੱਚਾ ਜਾਂ ਘੱਟ ਸਹਿਸੰਬੰਧ ਮਹਿਲੂਸ ਹੁੰਦਾ ਹੈ, ਤੁਹਾਡੇ scatterplot ਦੇ ਵਿਜ਼ੂਅਲ ਅਨੁਭਵ ਮੁਤਾਬਕ? ਕੀ ਇਹ ਬਦਲਦਾ ਹੈ ਜੇ ਤੁਸੀਂ ਮਹੀਨੇ ਦੀ ਬਜਾਏ *ਸਾਲ ਦਾ ਦਿਨ* ਵਰਗਾ ਹੌਲੀ-ਥੋੜਾ ਮਾਪ ਲਵੋ (ਜਿਵੇਂ ਕਿ ਸਾਲ ਦੀ ਸ਼ੁਰੂਆਤ ਤੋਂ ਕਿੰਨੇ ਦਿਨ ਹੋਏ)? - -ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਵਿੱਚ, ਅਸੀਂ ਮੰਨ ਲਏ ਹਾਂ ਕਿ ਅਸੀਂ ਡੇਟਾ ਸਾਫ਼ ਕਰ ਚੁੱਕੇ ਹਾਂ, ਅਤੇ ਇੱਕ ਡੇਟਾ ਫ੍ਰੇਮ ਬਣਾਇਆ ਹੈ ਜਿਸਦਾ ਨਾਮ ਹੈ `new_pumpkins`, ਜੋ ਇਸ ਤਰ੍ਹਾਂ ਹੈ: - -ID | ਮਹੀਨਾ | ਸਾਲ ਦਾ ਦਿਨ | ਕਿਸਮ | ਸ਼ਹਿਰ | ਪੈਕেজ | ਘੱਟ ਕੀਮਤ | ਉੱਚ ਕੀਮਤ | ਕੀਮਤ ----|--------|-------------|-------|--------|----------|---------------|--------------|-------- -70 | 9 | 267 | ਪਾਈ ਟਾਈਪ | ਬਾਲਟਿਮੋਰ | 1 1/9 ਬਸ਼ਲ ਕਾਰਟਨ | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | ਪਾਈ ਟਾਈਪ | ਬਾਲਟਿਮੋਰ | 1 1/9 ਬਸ਼ਲ ਕਾਰਟਨ | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | ਪਾਈ ਟਾਈਪ | ਬਾਲਟਿਮੋਰ | 1 1/9 ਬਸ਼ਲ ਕਾਰਟਨ | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | ਪਾਈ ਟਾਈਪ | ਬਾਲਟਿਮੋਰ | 1 1/9 ਬਸ਼ਲ ਕਾਰਟਨ | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | ਪਾਈ ਟਾਈਪ | ਬਾਲਟਿਮੋਰ | 1 1/9 ਬਸ਼ਲ ਕਾਰਟਨ | 15.0 | 15.0 | 13.636364 - -> ਡੇਟਾ ਸਾਫ਼ ਕਰਨ ਦਾ ਕੋਡ [`notebook.ipynb`](notebook.ipynb) ਵਿੱਚ ਉਪਲਬਧ ਹੈ। ਅਸੀਂ ਪਿਛਲੇ ਪਾਠ ਨਾਲੋ ਹੀ ਸਾਫ਼ੀਏ ਕਦਮ ਕੀਤੇ ਹਨ, ਅਤੇ `DayOfYear` ਕਾਲਮ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਅਭਿਵੈਕਤੀ ਨਾਲ ਕੈਲਕੁਲੇਟ ਕੀਤਾ ਹੈ: +> +> `X` 'ਵਿਆਖਿਆਤਮਕ ਵੈਰੀਏਬਲ' ਹੈ। `Y` 'ਨਿਰਭਰ ਵੈਰੀਏਬਲ' ਹੈ। ਲਾਈਨ ਦੀ ਢਲਾਣ `b` ਹੈ ਅਤੇ `a` y-ਇੰਟਰਸੈਪਟ ਹੈ, ਜੋ `X = 0` ਹੋਣ 'ਤੇ `Y` ਦਾ ਮੁੱਲ ਦੱਸਦਾ ਹੈ। +> +>![calculate the slope](../../../../translated_images/pa/slope.f3c9d5910ddbfcf9.webp) +> +> ਪਹਿਲਾਂ, ਢਲਾਣ `b` ਦੀ ਗਣਨਾ ਕਰੋ। ਇਨਫੋਗ੍ਰਾਫਿਕ [ਜੇਨ ਲੂਪਰ](https://twitter.com/jenlooper) ਵੱਲੋਂ। +> +> ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਸਾਡੇ ਕਦੂ ਡੇਟਾ ਦੇ ਮੂਲ ਸਵਾਲ ਦਾ ਗਿਆਨ ਕਰਦਾ: "ਹਰ ਮਹੀਨੇ ਪ੍ਰਤੀ ਬੁਸ਼ਲ ਕਦੂ ਦੀ ਕੀਮਤ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰੋ", `X` ਕੀਮਤ ਨੂੰ ਦਰਸਾਏਗਾ ਅਤੇ `Y` ਵਿਕਰੀ ਦੇ ਮਹੀਨੇ ਨੂੰ। +> +>![complete the equation](../../../../translated_images/pa/calculation.a209813050a1ddb1.webp) +> +> Y ਦਾ ਮੁੱਲ ਕਲਕुलेਟ ਕਰੋ। ਜੇ ਤੁਸੀਂ ਲਗਭਗ $4 ਦੇ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਅਪ੍ਰੈਲ ਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ! ਇਨਫੋਗ੍ਰਾਫਿਕ [ਜੇਨ ਲੂਪਰ](https://twitter.com/jenlooper) ਵੱਲੋਂ। +> +> ਲਾਈਨ ਦੀ ਗਣਨਾ ਢਲਾਣ ਦਰਸਾਉਂਦੀ ਹੈ, ਜੋ ਇੰਟਰਸੈਪਟ 'ਤੇ ਵੀ ਨਿਰਭਰ ਕਰਦੀ ਹੈ, ਜਿੱਥੇ `X = 0` ਹੋਣ 'ਤੇ `Y` ਕਿੱਥੇ ਹੈ। +> +> ਤੁਸੀਂ ਇਹ ਮੁੱਲ ਕਿਵੇਂ ਦੀ ਗਣਨਾ ਹੋ ਰਹੀ ਹੈ, [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ਵੈੱਬਸਾਈਟ 'ਤੇ ਦੇਖ ਸਕਦੇ ਹੋ। ਇਸ ਨਾਲ ਨਾਲ [ਲੈਸਟ-ਸਕੁਆਰਸ ਕੈਲਕੁਲੇਟਰ](https://www.mathsisfun.com/data/least-squares-calculator.html) ਵੀ ਵੇਖੋ, ਜਿੱਥੇ ਨੰਬਰਾਂ ਦਾ ਪ੍ਰਭਾਵ ਲਾਈਨ 'ਤੇ ਦਰਸਾਇਆ ਗਿਆ ਹੈ। + +## ਕੋਰਲੇਸ਼ਨ + +ਇੱਕ ਹੋਰ ਸ਼ਬਦ ਜੋ ਸਮਝਣਾ ਲਾਜ਼ਮੀ ਹੈ, ਉਹ ਹੈ ਦਿੱਤੇ ਗਏ X ਅਤੇ Y ਵੈਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਦਾ **ਕੋਰਲੇਸ਼ਨ ਕੋਇਫੀਸ਼ੀਅਂਟ**। ਸਕੈਟਰਪਲੌਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤੁਸੀਂ ਇਸ ਕੋਇਫੀਸ਼ੀਅਂਟ ਨੂੰ ਤੁਰੰਤ ਵਿਜ਼ੂਲਾਈਜ਼ ਕਰ ਸਕਦੇ ਹੋ। ਜੇਕਰ ਡੇਟਾਪੌਇੰਟ ਸਿੱਧੀ ਲਾਈਨ 'ਚ ਖਿੜੇ ਹੋਣ, ਤਾਂ ਕੋਰਲੇਸ਼ਨ ਉੱਚਾ ਹੁੰਦਾ ਹੈ, ਪਰ ਜੇ ਪੁਆਇੰਟ ਹਰ ਥਾਂ ਖਿੱਡੇ ਹੋਣ, ਤਾਂ ਕੋਰਲੇਸ਼ਨ ਘੱਟ ਹੁੰਦਾ ਹੈ। + +ਵਧੀਆ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਉਹਹੋਂ ਜੋ ਲੈਸਟ-ਸਕੁਆਰਸ ਰਿਗ੍ਰੈਸ਼ਨ ਤਰੀਕੇ ਨਾਲ ਇੱਕ ਲਾਈਨ ਦੇ ਨਾਲ ਉੱਚ (0 ਤੋਂ ਨਜ਼ਦੀਕ 1) ਕੋਰਲੇਸ਼ਨ ਕੋਇਫੀਸ਼ੀਅਂਟ ਰੱਖਦਾ ਹੋਵੇ। + +✅ ਇਸ ਪਾਠ ਦੇ ਨਾਲ ਮਿੱਲਦਾ ਨੋਟਬੁੱਕ ਚਲਾਓ ਅਤੇ ਮਹੀਨੇ ਤੋਂ ਕੀਮਤ ਵਾਲੇ ਸਕੈਟਰਪਲੌਟ ਨੂੰ ਵੇਖੋ। ਤੁਸੀਂ ਵੇਖਦੇ ਹੋ ਕਿ ਮਹੀਨਾ ਅਤੇ ਕੀਮਤ ਦੇ ਸੰਬੰਧ ਵਿੱਚ ਕਦੂ ਵਿਕਰੀ ਲਈ ਉੱਚ ਜਾਂ ਨਿਮਨ ਕੋਰਲੇਸ਼ਨ ਹੈ? ਜੇਕਰ ਤੁਸੀਂ `Month` ਦੀ ਥਾਂ ਕੋਈ ਹੋਰ ਨਜ਼ਦੀਕੀ ਮਾਪ ਵਰਤੋਂ, ਜਿਵੇਂ *ਸਾਲ ਦਾ ਦਿਨ* (ਮਤਲਬ ਸਾਲ ਦੇ ਸ਼ੁਰੂ ਤੋਂ ਗਿਣਤੀ ਕਰਦੇ ਹੋਏ), ਤਾਂ ਕੀ ਇਹ ਬਦਲਦਾ ਹੈ? + +ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਵਿੱਚ, ਅਸੀਂ ਮੰਨ ਰਹੇ ਹਾਂ ਕਿ ਅਸੀਂ ਡੇਟਾ ਨੂੰ ਸਾਫ ਕਰ ਚੁੱਕੇ ਹਾਂ, ਅਤੇ ਇੱਕ ਡੇਟਾ ਫਰੇਮ `new_pumpkins` ਹਾਸਲ ਕੀਤਾ ਹੈ, ਜੋ ਇਸ ਤਰ੍ਹਾਂ ਹੈ: + +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 + +> ਡੇਟਾ ਸਾਫ ਕਰਨ ਦਾ ਕੋਡ [`notebook.ipynb`](notebook.ipynb) ਵਿੱਚ ਉਪਲਬਧ ਹੈ। ਅਸੀਂ ਪਿਛਲੇ ਪਾਠ ਨਾਲ ਮਿਲਦੇ-ਜੁਲਦੇ ਸਾਫ-ਸੁਥਰੇ ਕਦਮ ਕੀਤੇ ਹਨ, ਅਤੇ `DayOfYear` ਕਾਲਮ ਹੇਠਲੀ ਸਮੀਕਰਨ ਨਾਲ ਕੈਲਕੁਲੇਟ ਕੀਤਾ ਹੈ: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +ਹੁਣ ਜਦੋਂ ਤੁਸੀਂ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਮੈਥ ਦੀ ਸਮਝ ਰੱਖਦੇ ਹੋ, ਆਓ ਇੱਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਈਏ ਤਾਂ ਜੋ ਇਹ ਪਤਾ ਲੱਗ ਸਕੇ ਕਿ ਕਿਹੜਾ ਕਦੂ ਪੈਕੇਜ ਸਭ ਤੋਂ ਵਧੀਆ ਕੀਮਤ ਦੇਵੇਗਾ। ਜਿਹੜਾ ਕੋਈ ਅਜਿਹਾ ਛੁੱਟੀਆਂ ਵਾਲਾ ਕਦੂ ਪੈਚ ਲਈ ਕਦੂ ਖਰੀਦਦਾ ਹੈ, ਉਹ ਇਸ ਜਾਣਕਾਰੀ ਨੂੰ ਪੈਚ ਲਈ ਕਦੂ ਪੈਕੇਜਾਂ ਦੀ ਖਰੀਦ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਵਰਤ ਸਕਦਾ ਹੈ। -ਹੁਣ ਜਦੋਂ ਕਿ ਤੁਹਾਨੂੰ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਮੂਲ ਗਣਿਤ ਬਾਰੇ ਸਮਝ ਹੋ ਗਈ ਹੈ, ਚਲੋ ਇੱਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਈਏ ਤਾਂ ਜੋ ਦੇਖੀਏ ਕਿ ਅਸੀਂ ਕੋਈ ਪੰਪਕਿਨ ਪੈਕਜੇਂਗ ਦੇ ਚੰਗੇ ਕੀਮਤੀ ਪੰਪਕਿਨ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦੇ ਹਾਂ ਕਿ ਨਹੀਂ। ਕੋਈ ਵਿਅਕਤੀ ਜੋ ਛੁੱਟੀਆਂ ਲਈ ਪੰਪਕਿਨ ਪੈਚ ਖਰੀਦ ਰਿਹਾ ਹੈ, ਉਹ ਆਪਣੀਆਂ ਖਰੀਦੀਆਂ ਨੂੰ optimize ਕਰਨ ਲਈ ਇਹ ਜਾਣਕਾਰੀ ਚਾਹੁੰਦਾ ਹੋ ਸਕਦਾ ਹੈ। +## ਕੋਰਲੇਸ਼ਨ ਦੀ ਤਲਾਸ਼ -## ਸਹਿਸੰਬੰਧ ਲੱਭਣਾ +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -[![ਸ਼ੁਰੂਆਤੀਆਂ ਲਈ ML - ਸਹਿਸੰਬੰਧ ਲੱਭਣਾ: ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਚਾਬੀ](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ਸ਼ੁਰੂਆਤੀਆਂ ਲਈ ML - ਸਹਿਸੰਬੰਧ ਲੱਭਣਾ: ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਚਾਬੀ") +> 🎥 ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰਕੇ ਕੋਰਲੇਸ਼ਨ ਬਾਰੇ ਛੋਟਾ ਵੀਡੀਓ ਵੇਖੋ। -> 🎥 ਸਹਿਸੰਬੰਧ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਵੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ਤਿੱਪੜੀ ਕਰੋ। +ਪਿਛਲੇ ਪਾਠ ਤੋਂ ਇਹ ਜਿਹੜਾ ਤੁਸੀਂ ਦੇਖਿਆ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ ਮਹੀਨਿਆਂ ਦੀ ਔਸਤ ਕੀਮਤ ਇਸ ਪ੍ਰਕਾਰ ਹੈ: -ਪਿਛਲੇ ਪਾਠ ਤੋਂ ਤੁਸੀਂ ਦੇਖਿਆ ਹੋਵੇਗਾ ਕਿ ਵੱਖ-ਵੱਖ ਮਹੀਨਿਆਂ ਲਈ ਔਸਤ ਕੀਮਤ ਇਸ ਤਰ੍ਹਾਂ ਹੈ: +Average price by month -ਮਹੀਨੇ ਲਈ ਔਸਤ ਕੀਮਤ +ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕੁਝ ਕੋਰਲੇਸ਼ਨ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਅਸੀਂ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗੇ ਤਾਂ ਜੋ `Month` ਅਤੇ `Price` ਜਾਂ `DayOfYear` ਅਤੇ `Price` ਵਿਚਕਾਰ ਸੰਬੰਧ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕੀਏ। ਹੇਠਾਂ ਉਸ ਸੰਬੰਧ ਨੂੰ ਦਰਸਾਉਂਦਾ ਸਕੈਟਰਪਲੌਟ ਹੈ: -ਇਸਦਾ ਅਰਥ ਹੈ ਕਿ ਕਿਛ ਸਹਿਸੰਬੰਧ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਅਸੀਂ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹਾਂ ਕਿ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਤਿਆਰ ਕਰਕੇ ਮਹੀਨਾ ਅਤੇ ਕੀਮਤ ਦੇ ਦਰਮਿਆਨ ਜਾਂ ਸਾਲ ਦੇ ਦਿਨ ਅਤੇ ਕੀਮਤ ਦੇ ਦਰਮਿਆਨ ਸੰਬੰਧ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰੀਏ। ਹੇਠਾਂ scatter plot ਹੈ ਜੋ ਬਾਅਦਲੇ ਸੰਬੰਧ ਨੂੰ ਦਿਖਾਉਂਦਾ ਹੈ: +Scatter plot of Price vs. Day of Year -ਕੀਮਤ ਵਿਰੁੱਧ ਸਾਲ ਦਾ ਦਿਨ scatter plot - -ਚਲੋ ਵੇਖੀਏ ਕਿ `corr` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਹਿਸੰਬੰਧ ਹੈ ਕਿ ਨਹੀਂ: +ਚਲੋ ਦੇਖੀਏ `corr` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੋਈ ਕੋਰਲੇਸ਼ਨ ਹੈ: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -ਲੱਗਦਾ ਹੈ ਕਿ ਸਹਿਸੰਬੰਧ ਕੁਝ ਘੱਟ ਹੈ, ਮਹੀਨੇ ਲਈ -0.15 ਅਤੇ ਸਾਲ ਦੇ ਦਿਨ ਲਈ -0.17, ਪਰ ਹੋ ਸਕਦਾ ਹੈ ਕੋਈ ਹੋਰ ਮਹੱਤਵਪੂਰਣ ਸੰਬੰਧ ਹੋਵੇ। ਲੱਗਦਾ ਹੈ ਕਿ ਕੀਮਤਾਂ ਦੀ ਵੱਖ-ਵੱਖ ਸ਼੍ਰੇਣੀਆਂ ਹਨ ਜੋ ਵੱਖ-ਵੱਖ ਪੰਪਕਿਨ ਕਿਸਮਾਂ ਨਾਲ ਸੰਬੰਧਤ ਹਨ। ਇਸ ਪਰਿਕਲਪਨਾ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ, ਆਓ ਹਰ ਸ਼੍ਰੇਣੀ ਨੂੰ ਵੱਖ-ਵੱਖ ਰੰਗ ਦੇ ਕੇ plot ਕਰੀਏ। `ax`参数 `scatter` plotting ਫੰਕਸ਼ਨ ਨੂੰ ਦੇ ਕੇ ਅਸੀਂ ਸਾਰੇ ਪੁਆਇੰਟ ਇਕੱਠੇ ਇੱਕ ਗ੍ਰਾਫ਼ 'ਤੇ ਦਰਸਾ ਸਕਦੇ ਹਾਂ: + +ਲੱਗਦਾ ਹੈ ਕੋਰਲੇਸ਼ਨ ਕਾਫੀ ਘੱਟ ਹੈ, -0.15 `Month` ਦੇ ਨਾਲ ਅਤੇ -0.17 `DayOfYear` ਦੇ ਨਾਲ, ਪਰ ਹੋਰ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਸੰਬੰਧ ਹੋ ਸਕਦਾ ਹੈ। ਵੱਖ-ਵੱਖ ਕਦੂ ਕਿਸਮਾਂ ਨਾਲ ਸਬੰਧਤ ਕਈ ਕੀਮਤ ਕਲੱਸਟਰ ਬਣਦੇ ਹਨ। ਇਸ ਨੂੰ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ, ਅਸੀਂ ਹਰ ਕਦੂ ਸ਼੍ਰੇਣੀ ਨੂੰ ਵੱਖਰੇ ਰੰਗ ਨਾਲ ਦਰਸਾਉਂਦੇ ਹਾਂ। `scatter` ਫੰਕਸ਼ਨ ਨੂੰ `ax` ਪੈਰਾਮੀਟਰ ਦੇ ਕੇ ਸਾਰੇ ਪੁਆਇੰਟ ਇਕੱਠੇ ਇੱਕ ਗ੍ਰਾਫ 'ਤੇ ਪਲੌਟ ਕਰ ਸਕਦੇ ਹਾਂ: ```python ax=None @@ -139,75 +139,76 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Scatter plot of Price vs. Day of Year -ਕੀਮਤ ਵਿਰੁੱਧ ਸਾਲ ਦਾ ਦਿਨ scatter plot (ਰੰਗ ਨਾਲ) - -ਸਾਡੀ ਜਾਂਚ ਇਹ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਕਿਸਮ ਦੀ ਵਧੇਰੇ ਅਸਰ ਪੂਰੀ ਕੀਮਤ 'ਤੇ ਹੁੰਦਾ ਹੈ ਨਾਂ ਕਿ ਵੇਚਣ ਦੀ ਅਸਲੀ ਤਾਰੀਖ 'ਤੇ। ਅਸੀਂ ਇਹ ਇੱਕ ਬਾਰ ਗ੍ਰਾਫ਼ ਨਾਲ ਵੇਖ ਸਕਦੇ ਹਾਂ: +ਸਾਡੇ ਅਧਿਐਨ ਮੁਤਾਬਕ, ਕਦੂ ਦੀ ਕਿਸਮ ਦੀ ਵਿਕਰੀ ਦੀ ਮਿਤੀ ਨਾਲੋਂ ਵੱਧ ਪ੍ਰਭਾਵ ਹੁੰਦਾ ਹੈ। ਇਹ ਅਸੀਂ ਇੱਕ ਬਾਰ ਗ੍ਰਾਫ ਨਾਲ ਵੀ ਵੇਖ ਸਕਦੇ ਹਾਂ: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Bar graph of price vs variety -ਕੀਮਤ ਵਿਰੁੱਧ ਕਿਸਮ ਦਾ ਬਾਰ ਗ੍ਰਾਫ਼ - -ਆਓ ਇਸ ਵੇਲੇ ਸਿਰਫ਼ ਇੱਕ ਪੰਪਕਿਨ ਕਿਸਮ, 'ਪਾਈ ਟਾਈਪ' 'ਤੇ ਧਿਆਨ ਦਈਏ ਅਤੇ ਵੇਖੀਏ ਕਿ ਮਿਤੀ ਦੀ ਕੀਮਤ ਤੇ ਕੀ ਅਸਰ ਪੈਂਦਾ ਹੈ: +ਆਓ ਵਾਰਤੋਂ ਸਿਰਫ਼ ਇੱਕ ਕਦੂ ਕਿਸਮ ‘ਪਾਈ ਟਾਈਪ’ ਤੇ ਧਿਆਨ ਦਿਓ ਅਤੇ ਵੇਖੋ ਕਿ ਮਿਤੀ ਦਾ ਕੀ ਪ੍ਰਭਾਵ ਕੀਮਤ 'ਤੇ ਪੈਂਦਾ ਹੈ: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -ਕੀਮਤ ਵਿਰੁੱਧ ਸਾਲ ਦਾ ਦਿਨ scatter plot - ਪਾਈ ਪੰਪਕਿਨ + +Scatter plot of Price vs. Day of Year -ਜੇ ਹੁਣ ਅਸੀਂ `Price` ਅਤੇ `DayOfYear` ਵਿੱਚ correlation ਗਣਨਾ ਕਰੀਏ `corr` ਫੰਕਸ਼ਨ ਨਾਲ, ਤਾਂ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਮਿਲੇਗਾ: `-0.27` - ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇੱਕ predictive ਮਾਡਲ ਸਿੱਖਣਾ ਸਮਝਦਾਰ ਹੈ। +ਹੁਣ ਜੇ ਅਸੀਂ `corr` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ `Price` ਅਤੇ `DayOfYear` ਵਿਚਕਾਰ ਕੋਰਲੇਸ਼ਨ ਕੈਲਕੁਲੇਟ ਕਰੀਏ, ਤਾਂ ਲਗਭਗ `-0.27` ਆਵੇਗਾ - ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਟ੍ਰੇਨਿੰਗ ਲਈ ਮਾਡਲ ਬਣਾਉਣਾ ਸਮਝਦਾਰ ਹੈ। -> ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਸਿਖਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਸਾਡਾ ਡੇਟਾ ਸਾਫ਼ ਹੋਵੇ। ਖਾਲੀ ਮੁੱਲਾਂ ਨਾਲ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਚ্ছে ਤਰ੍ਹਾਂ ਕੰਮ ਨਹੀਂ ਕਰਦਾ, ਇਸ ਲਈ ਸਾਰੇ ਖਾਲੀ ਕੋਸ਼ਿਕਾਂ ਨੂੰ ਹਟਾਉਣਾ ਬਿਹਤਰ ਹੈ: +> ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਡਾ ਡੇਟਾ ਸਾਫ ਹੈ। ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਗੈਰ-ਮੌਜੂਦ ਮੁੱਲਾਂ ਨਾਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਨਹੀਂ ਕਰਦਾ, ਇਸ ਲਈ ਸਾਰੇ ਖਾਲੀ ਸੈੱਲ ਹਟਾਉਣਾ ਸਹੀ ਹੈ: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` + +ਇੱਕ ਹੋਰ ਤਰੀਕਾ ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਨ੍ਹਾਂ ਖਾਲੀ ਮੁੱਲਾਂ ਨੂੰ ਉਸ ਕਾਲਮ ਦੀ ਸਾਰਥਕ ਔਸਤ ਮੁੱਲ ਨਾਲ ਭਰ ਦਿੱਤਾ ਜਾਵੇ। -ਇੱਕ ਹੋਰ ਤਰੀਕਾ ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਨ੍ਹਾਂ ਖਾਲੀ ਮੁੱਲਾਂ ਨੂੰ ਉਸ ਕਾਲਮ ਦੇ ਮੀਨ ਮੁੱਲ ਨਾਲ ਭਰ ਦਿੱਤਾ ਜਾਵੇ। - -## ਸਰਲ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ +## ਸਧਾਰਣ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ -[![ਸ਼ੁਰੂਆਤੀਆਂ ਲਈ ML - ਸਕਾਇਕਿਟ-ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਈਨੀਅਰ ਅਤੇ ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ਸ਼ੁਰੂਆਤੀਆਂ ਲਈ ML - ਸਕਾਇਕਿਟ-ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਈਨੀਅਰ ਅਤੇ ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ") +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 ਲਾਈਨੀਅਰ ਅਤੇ ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਵੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ਤੇ ਕਲਿੱਕ ਕਰੋ। +> 🎥 ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰ ਕੇ ਲਾਈਨੀਅਰ ਅਤੇ ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਵੇਖੋ। -ਆਪਣਾ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟਰੇਨ ਕਰਨ ਲਈ, ਅਸੀਂ **Scikit-learn** ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। +ਸਾਡਾ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਅਸੀਂ **Scikit-learn** ਲਾਇਬ੍ਰੇਰੀ ਵਰਤਾਂਗੇ। ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਅਸੀਂ ਇੰਪੁੱਟ ਮੁੱਲ (ਫੀਚਰ) ਅਤੇ ਅੰਦਾਜ਼ ਲੱਗਾ ਵਾਲੇ ਨਤੀਜੇ (ਲੇਬਲ) ਨੂੰ ਵੱਖਰੇ numpy ਐਰੇਜ਼ ਵਿੱਚ ਵੰਡਦੇ ਹਾਂ: + +ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਅਸੀਂ ਇਨਪੁੱਟ ਮੁੱਲਾਂ (ਫੀਚਰਜ਼) ਅਤੇ ਉਮੀਦ ਕੀਤੀ ਗਈ ਆਉਟਪੁੱਟ (ਲੇਬਲ) ਨੂੰ ਵੱਖ-ਵੱਖ ਨੰਪੀ ਐਰੇਜ਼ ਵਿੱਚ ਵੰਡਦੇ ਹਾਂ: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> ਨੋਟ ਕਰੋ ਕਿ ਸਾਨੂੰ ਇਨਪੁੱਟ ਡੇਟਾ 'ਤੇ `reshape` ਕਰਨੀ ਪਈ ਤਾਂ ਜੋ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਪੈਕੇਜ ਇਸਨੂੰ ਠੀਕ ਸਮਝ ਸਕੇ। ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਇੱਕ 2D-ਐਰੇ ਦੀ ਉਮੀਦ ਕਰਦਾ ਹੈ, ਜਿੱਥੇ ਐਰੇ ਦੀ ਹਰ ਕਤਾਰ ਇਨਪੁੱਟ ਫੀਚਰ ਦੇ ਵੈਕਟਰ ਦੇ ਬਰਾਬਰ ਹੁੰਦੀ ਹੈ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਜੇ ਸਾਡਾ ਇਕੱਲਾ ਇਨਪੁੱਟ ਹੈ - ਤਾਂ ਸਾਨੂੰ ਇੱਕ ਐਰੇ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਦਾ ਆਕਾਰ N×1 ਹੋਵੇ, ਜਿੱਥੇ N ਡੇਟਾ ਸੈੱਟ ਦਾ ਆਕਾਰ ਹੈ। -> ਧਿਆਨ ਦਿਓ ਕਿ ਸਾਨੂੰ ਇੰਪੁੱਟ ਡੇਟਾ ਤੇ `reshape` ਲਾਉਣਾ ਪਿਆ ਤਾਂ ਜੋ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਪੈਕੇਜ ਇਸਨੂੰ ਸਹੀ ਤੌਰ ਤੇ ਸਮਝ ਸਕੇ। ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਇੱਕ 2D ਐਰੇ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਹਰ ਕਤਾਰ ਇੰਪੁੱਟ ਫੀਚਰਾਂ ਦਾ ਇੱਕ ਵੈਕਟਰ ਹੁੰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਸਾਨੂੰ ਸਿਰਫ਼ ਇੱਕ ਇੰਪੁੱਟ ਹੈ - ਇਸ ਲਈ ਸਾਨੂੰ N×1 ਵਾਲਾ ਐਰੇ ਚਾਹੀਦਾ ਹੈ ਜਿੱਥੇ N ਡੇਟਾਸੈਟ ਦਾ ਆਕਾਰ ਹੈ। - -ਫਿਰ, ਸਾਨੂੰ ਡੇਟਾ ਨੂੰ ਸਿਖਲਾਈ ਅਤੇ ਪਰੀਖਿਆ ਡੇਟਾਸੈਟਾਂ ਵਿੱਚ ਵੰਡਨਾ ਪੈਂਦਾ ਹੈ, ਤਾਂ ਜੋ ਮਾਡਲ ਟਰੇਨ ਕਰਨ ਤੋਂ ਬਾਅਦ ਅਸੀਂ ਇਸਨੂੰ ਜ਼ਾਂਚ ਕਰ ਸਕੀਏ: +ਫਿਰ, ਸਾਨੂੰ ਡੇਟਾ ਨੂੰ ਟ੍ਰੇਨ ਅਤੇ ਟੈਸਟ ਸੈੱਟਾਂ ਵਿੱਚ ਵੰਡਣਾ ਪੈਂਦਾ ਹੈ ਤਾਂ ਜੋ ਅਸੀਂ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਤੋਂ ਬਾਅਦ ਵੈਰੀਫਾਈ ਕਰ ਸਕੀਏ: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -ਆਖ਼ਿਰ ਵਿੱਚ, ਅਸਲ ਵਿਚ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟਰੇਨ ਕਰਨਾ ਸਿਰਫ਼ ਦੋ ਕਮਾਂਡਾਂ ਦੀ ਲਾਈਨਾਂ ਦਾ ਕੰਮ ਹੈ। ਅਸੀਂ `LinearRegression` ਉਬਜੈਕਟ ਬਣਾਉਂਦੇ ਹਾਂ, ਅਤੇ ਇਸ ਨੂੰ `fit` ਮੈਥਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾ 'ਤੇ ਫਿੱਟ ਕਰਦੇ ਹਾਂ: + +ਆਖਿਰਕਾਰ, ਅਸਲ ਲਾਈਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਸਿਰਫ ਦੋ ਲਾਈਨਾਂ ਕੋਡ ਲੱਗਦੀਆਂ ਹਨ। ਅਸੀਂ `LinearRegression` ਆਬਜੈਕਟ ਬਣਾਉਂਦੇ ਹਾਂ, ਅਤੇ `fit` ਮੈਥਡ ਨਾਲ ਆਪਣੇ ਡੇਟਾ 'ਤੇ ਫਿੱਟ ਕਰਦੇ ਹਾਂ: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` + +`LinearRegression` ਓਬਜੈਕਟ `fit` ਕਰਨ ਤੋਂ ਬਾਦ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਸਾਰੇ ਕੋਐਫੀਸ਼ਿਅਂਟ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ, ਜਿਨ੍ਹਾਂ ਨੂੰ `.coef_` ਪ੍ਰਾਪਰਟੀ ਰਾਹੀਂ ਪਹੁੰਚਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਸਿਰਫ ਇਕ ਕੋਐਫੀਸ਼ਿਅਂਟ ਹੈ, ਜੋ ਲਗਭਗ `-0.017` ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕੀਮਤਾਂ ਸਮੇਂ ਨਾਲ ਕੁਝ ਘਟਦੀਆਂ ਹਨ, ਪਰ ਜ਼ਿਆਦਾ ਨਹੀਂ, ਲਗਭਗ 2 ਸੈਂਟ ਪ੍ਰਤੀ ਦਿਨ। ਅਸੀਂ ਵਾਈ-ਆਕਸਿਸ ਨਾਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਇੰਟਰਸੈਕਸ਼ਨ ਪੁਆਇੰਟ ਨੂੰ ਵੀ `lin_reg.intercept_` ਰਾਹੀਂ ਪਹੁੰਚ ਸਕਦੇ ਹਾਂ - ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਇਹ ਲਗਭਗ `21` ਹੋਵੇਗਾ, ਜੋ ਸਾਲ ਦੀ ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਕੀਮਤ ਦਰਸਾਉਂਦਾ ਹੈ। -`LinearRegression` ਵਸਤੂ `fit` ਕਰਨ ਤੋਂ ਬਾਅਦ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਸਾਰੇ ਕੋਐਫੀਸ਼ੀਅੰਟਸ ਨੂੰ ਰੱਖਦੀ ਹੈ, ਜਿਨ੍ਹਾਂ ਤੱਕ `.coef_` ਪ੍ਰਾਪਰਟੀ ਦੇ ਜ਼ਰੀਏ ਪਹੁੰਚ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਸਿਰਫ ਇਕ ਕੋਐਫੀਸ਼ੀਅੰਟ ਹੈ, ਜੋ ਲਗਭਗ `-0.017` ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕੀਮਤਾਂ ਸਮੇਂ ਦੇ ਨਾਲ ਕੁਝ ਘਟਦੀਆਂ ਹਨ, ਪਰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਨਹੀਂ, ਲਗਭਗ 2 ਸੈਂਟ ਪ੍ਰਤੀ ਦਿਨ। ਅਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ Y-ਅਕਸ ਨਾਲ ਕੱਟਦਾ ਬਿੰਦੂ ਵੀ `lin_reg.intercept_` ਦੀ ਵਰਤੋਂ ਨਾਲ ਪਤਾ ਕਰ ਸਕਦੇ ਹਾਂ - ਇਹ ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਲਗਭਗ `21` ਹੋਵੇਗਾ, ਜੋ ਸਾਲ ਦੀ ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਕੀਮਤ ਦਰਸਾਉਂਦਾ ਹੈ। - -ਸਾਡਾ ਮਾਡਲ ਕਿੰਨਾ ਸਹੀ ਹੈ ਦੇਖਣ ਲਈ, ਅਸੀਂ ਟੈਸਟ ਡੇਟਾਸੇਟ 'ਤੇ ਕੀਮਤਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦੇ ਹਾਂ, ਫਿਰ ਉਹਨਾਂ ਭਵਿੱਖਬਾਣੀਆਂ ਨੂੰ ਉਮੀਦਵਾਰ ਮੁੱਲਾਂ ਨਾਲ ਕਿੰਨਾ ਨੇੜੇ ਹਨ ਮਾਪ ਸਕਦੇ ਹਾਂ। ਇਹ ਰੂਟ ਮੀਨ ਸਕਵੇਅਰ ਤਰੁੱਟ (RMSE) ਮੈਟਰਿਕਸ ਦੇ ਜ਼ਰੀਏ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਉਮੀਦਵਾਰ ਅਤੇ ਭਵਿੱਖਬਾਣੀ ਕੀਤੇ ਮੁੱਲਾਂ ਵਿਚਕਾਰ ਸਾਰੇ ਵਰਗਾਂ ਦੇ ਫਰਕਾਂ ਦੇ ਮੀਨ ਦਾ ਵਰਗਮੂਲ ਹੁੰਦਾ ਹੈ। +ਸਾਡਾ ਮਾਡਲ ਕਿੰਨਾ ਠੀਕ ਹੈ, ਇਹ ਵੇਖਣ ਲਈ ਅਸੀਂ ਟੈਸਟ ਡੇਟਾਸੈੱਟ 'ਤੇ ਕੀਮਤਾਂ ਦੀ ਪੇਸ਼ਗੀਬੀ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਫਿਰ ਵੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਪੇਸ਼ਗੀਬੀ ਕੀਤੀ ਕੀਮਤਾਂ ਅਦਾਇਗੀ ਕੀਮਤਾਂ ਦੇ ਕਰੀਬ ਕਿੰਨੀ ਹਨ। ਇਹ ਰੂਟ ਮੂਨ ਸਕਵੇਅਰ ਐਰਰ (RMSE) ਮਾਪਦੰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਉਮੀਦ ਕੀਤੇ ਅਤੇ ਪੇਸ਼ਗੀਬੀ ਕੀਤੇ ਮੁੱਲਾਂ ਵਿਚਕਾਰ ਸਭ ਸਕਵੇਅਰ ਕੀਤੇ ਅੰਤਰਾਂ ਦੇ ਮੂਨ ਦਾ ਰੂਟ ਹੁੰਦਾ ਹੈ। ```python pred = lin_reg.predict(X_test) @@ -216,15 +217,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -ਸਾਡੀ ਤਰੁੱਟ ਲਗਭਗ 2 ਅੰਕ ਹੈ, ਜੋ ਕਿ ~17% ਹੈ। ਬਹੁਤ ਵਧੀਆ ਨਹੀਂ। ਮਾਡਲ ਦੀ ਕੁਆਲਟੀ ਦੀ ਇੱਕ ਹੋਰ ਸੂਚਕ ਹੈ **ਡਿਟਰਮੀਨੇਸ਼ਨ ਕੋਐਫੀਸ਼ੀਅੰਟ**, ਜੋ ਇਸ ਤਰ੍ਹਾਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ: +ਸਾਡੇ ਭુલ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਭਗ 2 ਪੋਇੰਟ ਹੈ, ਜੋ ਕਿ ~17% ਹੈ। ਬਹੁਤ ਚੰਗਾ ਨਹੀਂ। ਮਾਡਲ ਗੁਣਵੱਤਾ ਦਾ ਇੱਕ ਹੋਰ ਸੰਕੇਤ ਹੈ **ਨੀਰਧਾਰਿਤਤਾ ਕੋਇਫ਼ੀਸ਼ਿਅਂਟ** (coefficient of determination), ਜਿਸ ਨੂੰ ਇਨ੍ਹਾਂ ਤਰ੍ਹਾਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -ਜੇਕਰ ਇਹ ਮੁੱਲ 0 ਹੈ, ਤਾਂ ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਮਾਡਲ ਇਨਪੁਟ ਡੇਟਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਨਹੀਂ ਲੈਂਦਾ, ਅਤੇ ਸਭ ਤੋਂ ਕਮਜ਼ੋਰ ਰੇਖੀਅ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਾਲੇ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਕੇਵਲ ਨਤੀਜੇ ਦਾ ਔਸਤ ਮੁੱਲ ਹੁੰਦਾ ਹੈ। ਮੁੱਲ 1 ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਬਿਲਕੁਲ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਸਾਰੇ ਉਮੀਦਵਾਰ ਨਤੀਜੇ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦੇ ਹਾਂ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਇਹ ਕੋਐਫੀਸ਼ੀਅੰਟ ਲਗਭਗ 0.06 ਹੈ, ਜੋ ਕਾਫ਼ੀ ਘੱਟ ਹੈ। +ਜੇ ਇਹ ਮੁੱਲ 0 ਹੈ, ਤਾਂ ਇਹ ਮਤਲਬ ਹੈ ਕਿ ਮਾਡਲ ਇਨਪੁੱਟ ਡੇਟਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਨਹੀਂ ਲੈਂਦਾ, ਅਤੇ ਇਹ ਸਭ ਤੋਂ ਮਾੜਾ ਰੇਖੀਅ ਪੇਸ਼ਗੀਬਾਜ਼ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਸਿਰਫ਼ ਨਤੀਜੇ ਦਾ ਮੀਨ ਮੁੱਲ ਹੁੰਦਾ ਹੈ। 1 ਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ ਅਸੀਂ ਸਾਰੀਆਂ ਉਮੀਦ ਕੀਤੀਆਂ ਨਤੀਜਿਆਂ ਨੂੰ ਬਿਲਕੁਲ ਸਹੀ ਢੰਗ ਨਾਲ ਪੇਸ਼ਗੀਬੀ ਕਰ ਸਕਦੇ ਹਾਂ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਕੋਇਫ਼ੀਸ਼ਿਅਂਟ ਲਗਭਗ 0.06 ਹੈ, ਜੋ ਕਾਫ਼ੀ ਘੱਟ ਹੈ। -ਅਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ ਦੇ ਨਾਲ ਟੈਸਟ ਡੇਟਾ ਨੂੰ ਵੀ ਪਲੌਟ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਦੇਖ ਸਕੀਏ ਕਿ ਸਾਡੇ ਹਾਲਾਤ ਵਿੱਚ ਰਿਗ੍ਰੈਸ਼ਨ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ: +ਅਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ ਦੇ ਨਾਲ ਟੈਸਟ ਡੇਟਾ ਨੂੰ ਵੀ ਪਲਾਟ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਵੇਖ ਸਕੀਏ ਕਿ ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਰਿਗ੍ਰੈਸ਼ਨ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ: ```python plt.scatter(X_test,y_test) @@ -233,19 +234,19 @@ plt.plot(X_test,pred) Linear regression -## ਪੁਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ +## Polynomial Regression -ਰੈਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਇੱਕ ਹੋਰ ਪ੍ਰਕਾਰ ਪੁਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਹੈ। ਕਦੇ-ਕਦੇ ਵੈਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਰੇਖੀਅ ਸੰਬੰਧ ਹੁੰਦਾ ਹੈ – ਜਿਵੇਂ ਕਿ ਵਾਅਲੇ ਦੀ ਮਾਤਰਾ ਵਧਣ ਤੇ ਕੀਮਤ ਵਧਦੀ ਹੈ - ਪਰ ਕਈ ਵਾਰ ਇਨ੍ਹਾਂ ਸੰਬੰਧਾਂ ਨੂੰ ਸਿੱਧੀ ਲਾਈਨ ਜਾਂ ਸਮਤਲ ਤੱਕ ਸੀਮਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। +ਰੈਕ ਸੀਧੇ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਇੱਕ ਹੋਰ ਕਿਸਮ ਪਾਲੀਨੋਮਾਈਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਹੈ। ਕਈ ਵਾਰੀ ਬਦਲਾਂ ਵਿੱਚ ਰੇਖੀਅ ਸੰਬੰਧ ਹੁੰਦਾ ਹੈ - ਜਿਵੇਂ ਵੌਲਿਊਮ ਵਿੱਚ ਵੱਡਾ ਕਦੂ, ਇਸਦੀ ਕੀਮਤ ਵੱਧ ਹੋਣਾ - ਪਰ ਕਈ ਵਾਰ ਇਹ ਸੰਬੰਧ ਸਿੱਧੀ ਲਾਈਨ ਜਾਂ ਸਮਤਲ ਨਾਲ ਬਿਆਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। -✅ ਇਨ੍ਹਾਂ ਵਿਚੋਂ ਕੁਝ ਹੋਰ ਉਦਾਹਰਨਾਂ ਲਈ [ਇੱਥੇ ਦੇਖੋ](https://online.stat.psu.edu/stat501/lesson/9/9.8) ਉਹ ਡਾਟਾ ਜੋ ਪੁਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਵਰਤ ਸਕਦਾ ਹੈ। +✅ ਇੱਥੇ ਕੁਝ ਹੋਰ ਉਦਾਹਰਣਾਂ ਹਨ [Polynomial Regression ਲਈ](https://online.stat.psu.edu/stat501/lesson/9/9.8) ਜੋ ਇਸ ਕਿਸਮ ਦਾ ਡੇਟਾ ਵਰਤ ਸਕਦੇ ਹਨ। -ਮਿਤੀ ਅਤੇ ਕੀਮਤ ਦੇ ਸੰਬੰਧ ਨੂੰ ਫਿਰ ਤੋਂ ਦੇਖੋ। ਕੀ ਇਹ ਸਕੇਟਰਪਲਾਟ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗਦਾ ਹੈ ਕਿ ਇਸਨੂੰ ਲਾਜ਼ਮੀ ਤੌਰ ਤੇ ਸਿੱਧੀ ਰੇਖਾ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ? ਕੀ ਕੀਮਤਾਂ ਨਹੀਂ ਉਤਾਰ-ਚੜ੍ਹਾਵ ਕਰ ਸਕਦੀਆਂ? ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਤੁਸੀਂ ਪੁਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ। +Date ਅਤੇ Price ਵਿੱਚ ਸੰਬੰਧ ਨੂੰ ਫਿਰ ਤੋਂ ਵੇਖੋ। ਕੀ ਇਹ scatterplot ਜ਼ਰੂਰੀ ਤੌਰ ਤੇ ਸਿੱਧੀ ਰੇਖਾ ਵਾਲੀ ਵਿਸ਼ਲੇਸ਼ਣਾ ਲਈ ਹੈ? ਕੀ ਕੀਮਤਾਂ ਫਲਕਟੂਏਟ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ? ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਤੁਸੀਂ polynomial regression ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ। -✅ ਪੁਲਿਨੋਮਿਯਲ ਗਣਿਤੀ ਵਿਅੰਜਨ ਹਨ ਜੋ ਇਕ ਜਾਂ ਵੱਧ ਵੈਰੀਏਬਲਾਂ ਅਤੇ ਕੋਐਫੀਸ਼ੀਅੰਟਸ ਤੋਂ ਬਣੇ ਹੋ ਸਕਦੇ ਹਨ। +✅ ਪਾਲੀਨੋਮ ਸਮੀਕਰਨ ਮੈਥਮੈਟਿਕਲ ਪ੍ਰਗਟਾਵੇ ਹਨ ਜੋ ਇੱਕ ਜਾਂ ਵੱਧ ਵੈਰੀਏਬਲ ਅਤੇ ਕੋਐਫੀਸ਼ਿਅਂਟ ਰੱਖ ਸਕਦੇ ਹਨ -ਪੁਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਗੁਮੜੇ ਵਾਲੀ ਲਾਈਨ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਗੈਰ-ਰੇਖੀਅ ਡੇਟਾ ਲਈ ਬਿਹਤਰ ਫਿੱਟ ਹੁੰਦੀ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਜੇ ਅਸੀਂ ਇਨਪੁਟ ਡੇਟਾ ਵਿੱਚ ਵਰਗ `DayOfYear` ਵੈਰੀਏਬਲ ਸ਼ਾਮਿਲ ਕਰੀਏ, ਤਾਂ ਅਸੀਂ ਪਾਰਾਬੋਲਿਕ ਕਰਵ ਨਾਲ ਡੇਟਾ ਨੂੰ ਫਿੱਟ ਕਰ ਸਕਦੇ ਹਾਂ, ਜਿਸਦਾ ਘੱਟੋ-ਘੱਟ ਪੁਆਇੰਟ ਸਾਲ ਦੇ ਅੰਦਰ ਕਿਸੇ ਬਿੰਦੂ 'ਤੇ ਹੋਵੇਗਾ। +ਪਾਲੀਨੋਮ ਰਿਗ੍ਰੈਸ਼ਨ ਇੱਕ ਘੁੰਮਾਵਦਾਰ ਲਾਈਨ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਗੈਰ-ਰੇਖੀਅ ਡੇਟਾ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਫਿੱਟ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਜੇ ਅਸੀਂ `DayOfYear` ਦੇ ਵਰਗ `DayOfYear²` ਨੂੰ ਇਨਪੁੱਟ ਡੇਟਾ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਸਾਡੇ ਡੇਟਾ ਨੂੰ ਇੱਕ ਪਰਾਬੋਲੀਅਕ ਵਕਰੀਆਂ ਨਾਲ ਫਿੱਟ ਕਰ ਸਕਦੇ ਹਾਂ, ਜੋ ਸਾਲ ਦੇ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਬਿੰਦੂ 'ਤੇ ਘੱਟੋ-ਘੱਟ ਹੋਵੇਗਾ। -Scikit-learn ਇੱਕ ਸਹਾਇਕ [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ ਜਿਸ ਨਾਲ ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦੇ ਵੱਖ-ਵੱਖ ਕਦਮ ਇਕੱਠੇ ਜੋੜੇ ਜਾ ਸਕਦੇ ਹਨ। ਇੱਕ **pipeline** ਇੱਕ ਲੜੀ ਹੁੰਦੀ ਹੈ **estimators** ਦੀ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ pipeline ਤਿਆਰ ਕਰਾਂਗੇ ਜੋ ਪਹਿਲਾਂ ਮਾਡਲ ਵਿੱਚ ਪੁਲਿਨੋਮਿਯਲ ਫੀਚਰਜ਼ ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਰਿਗ੍ਰੈਸ਼ਨ ਸਿਖਾਉਂਦਾ ਹੈ: +Scikit-learn ਵਿੱਚ ਇੱਕ ਮਦਦਗਾਰ [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ਸ਼ਾਮਿਲ ਹੈ ਜੋ ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦੇ ਵੱਖ-ਵੱਖ ਕਦਮ ਇਕੱਠੇ ਜੋੜਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਇੱਕ **pipeline** ਇੱਕ ਲੜੀ ਹੁੰਦੀ ਹੈ **estimators** ਦੀ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ pipeline ਬਣਾਵਾਂਗੇ ਜੋ ਪਹਿਲਾਂ ਪਾਲੀਨੋਮ ਫੀਚਰਾਂ ਨੂੰ ਜੋੜੇਗਾ ਅਤੇ ਫਿਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰੇਗਾ: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ ਅਸੀਂ ਇਨਪੁਟ ਡੇਟਾ ਦੇ ਸਭ ਦੂਜੇ ਡਿਗਰੀ ਪੁਲਿਨੋਮਿਯਲ ਸ਼ਾਮਿਲ ਕਰਾਂਗੇ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਇਹ ਸਿਰਫ `DayOfYear`2 ਦਾ ਮਤਲਬ ਹੋਵੇਗਾ, ਪਰ ਜੇ ਦੋ ਇਨਪੁਟ ਵੈਰੀਏਬਲ X ਅਤੇ Y ਹਨ, ਤਾਂ ਇਹ X2, XY ਅਤੇ Y2 ਸ਼ਾਮਿਲ ਕਰੇਗਾ। ਅਸੀਂ ਜਾਂਚਣ ਲਈ ਵੱਧ ਡਿਗਰੀ ਵਾਲੇ ਪੁਲਿਨੋਮਿਯਲ ਵੀ ਵਰਤ ਸਕਦੇ ਹਾਂ। +`PolynomialFeatures(2)` ਦੀ ਵਰਤੋਂ ਦਾ ਅਰਥ ਹੈ ਕਿ ਅਸੀਂ ਇਨਪੁੱਟ ਡੇਟਾ ਦੇ ਸਾਰੇ ਦੂਜਾ ਡਿਗਰੀ ਦੇ ਪਾਲੀਨੋਮ ਸ਼ਾਮਿਲ ਕਰਨਗੇ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਇਹ ਸਿਰਫ਼ `DayOfYear²` ਨੂੰ ਦਰਸਾਏਗਾ, ਪਰ ਜੇ ਦੋ ਵੈਰੀਏਬਲ X ਅਤੇ Y ਹਨ, ਤਾਂ ਇਸ ਨਾਲ X², XY ਅਤੇ Y² ਸ਼ਾਮਿਲ ਹੋਣਗੇ। ਅਸੀਂ ਜੇ ਪਸੰਦ ਕਰੀਏ ਤਾਂ ਵੱਧ ਡਿਗਰੀ ਦੇ ਪਾਲੀਨੋਮ ਵੀ ਸ਼ਾਮਿਲ ਕਰ ਸਕਦੇ ਹਾਂ। + +Pipeline ਨੂੰ ਅਸੀਂ ਉਹੋ ਹੀ ਢੰਗ ਨਾਲ ਵਰਤ ਸਕਦੇ ਹਾਂ ਜਿਵੇਂ ਅਸਲ `LinearRegression` ਓਬਜੈਕਟ ਨੂੰ ਵਰਤਦੇ ਹਾਂ, मतलब ਅਸੀਂ pipeline ਨੂੰ `fit` ਕਰਕੇ, ਫਿਰ `predict` ਰਾਹੀਂ ਪੇਸ਼ਗੀਬੀ ਨਤੀਜੇ ਲੈ ਸਕਦੇ ਹਾਂ: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Smooth approximation curve ਨੂੰ ਪਲਾਟ ਕਰਨ ਲਈ, ਅਸੀਂ ਸੀਧੇ ਅਨਆਰਡਰਡ ਟੈਸਟ ਡੇਟਾ ਉੱਤੇ ਪਲਾਟ ਕਰਨ ਦੀ ਬਜਾਏ, `np.linspace` ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ, ਜੋ ਇਨਪੁੱਟ ਮੁੱਲਾਂ ਦੀ ਇੱਕ ਇਕਸਾਰ ਰੇਂਜ ਬਣਾਉਂਦਾ ਹੈ (ਜ਼ਿੱਗਜ਼ੈਗ ਲਾਈਨ ਬਣਨ ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline ਨੂੰ ਮੂਲ `LinearRegression` ਵਸਤੂ ਵਾਂਗ ਹੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ pipeline ਨੂੰ `fit` ਕਰਨਾ ਅਤੇ ਫਿਰ `predict` ਦੀ ਵਰਤੋਂ ਨਾਲ ਭਵਿੱਖਬਾਣੀਆਂ ਨਿਕਾਲਨਾ। ਹੇਠਾਂ ਦੀ ਗ੍ਰਾਫ ਵਿੱਚ ਟੈਸਟ ਡੇਟਾ ਤੇ ਅਨੁਮਾਨੀ ਤਿਰਛੀ ਲਾਈਨ(d curve) ਦਿੱਤੀ ਗਈ ਹੈ: +ਇੱਥੇ ਟੈਸਟ ਡੇਟਾ ਅਤੇ approximation curve ਦੀ ਗ੍ਰਾਫ਼ ਦਿੱਤੀ ਗਈ ਹੈ: Polynomial regression -ਪੁਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਅਸੀਂ ਥੋੜ੍ਹੀ ਘੱਟ MSE ਅਤੇ ਵੱਧ ਡਿਟਰਮੀਨੇਸ਼ਨ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਪਰ ਜ਼ਿਆਦਾ ਮਾਹੱਤਵਪੂਰਨ ਨਹੀਂ। ਅਸੀਂ ਹੋਰ ਫੀਚਰਜ਼ ਦਾ ਵੀ ਧਿਆਨ ਰੱਖਣਾ ਪਵੇਗਾ! +ਪਾਲੀਨੋਮ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਨਾਲ ਅਸੀਂ ਥੋੜ੍ਹਾ ਘਟਾ RMSE ਅਤੇ ਵੱਧ ਨਿਰਧਾਰਿਤਤਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਪਰ ਇਹ ਵੱਡਾ ਬਦਲਾਅ ਨਹੀਂ ਹੁੰਦਾ। ਸਾਨੂੰ ਹੋਰ ਫੀਚਰਾਂ ਦਾ ਵੀ ਧਿਆਨ ਵਿੱਚ ਲਿਆਉਣਾ ਪਵੇਗਾ! -> ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਪੰਪਕਿਨ ਦੀ ਘੱਟੋ-ਘੱਟ ਕੀਮਤ ਕਿਤੇ ਹਾਲੋਵੀਨ ਦੇ ਆਸ-ਪਾਸ ਆਉਂਦੀ ਹੈ। ਤੁਸੀਂ ਇਸਦਾ ਕਿਵੇਂ ਵਿਆਖਿਆ ਕਰੋਂਗੇ? +> ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਨਿਊਨਤਮ ਕਦੂ ਦੀ ਕੀਮਤ ਹਾਲੋਵੀਨ ਦੇ ਨੇੜੇ ਹੀ ਹੁੰਦੀ ਹੈ। ਤੁਸੀਂ ਇਹ ਕਿਵੇਂ ਸਮਝਾ ਸਕਦੇ ਹੋ? -🎃 ਵਧਾਈ ਹੋ! ਤੁਸੀਂ ਇੱਕ ਐਸਾ ਮਾਡਲ ਬਣਾਇਆ ਹੈ ਜੋ ਪਾਈ ਪੰਪਕਿਨ ਦੀ ਕੀਮਤ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ। ਤੁਸੀਂ ਸ਼ਾਇਦ ਇਹੀ ਪ੍ਰਕਿਰਿਆ ਸਾਰੀਆਂ ਕਿਸਮਾਂ ਦੇ ਪੰਪਕਿਨ ਲਈ ਦੁਹਰਾਉਣਗੇ, ਪਰ ਇਹ ਮਿਹਨਤੀ ਹੋਵੇਗਾ। ਹੁਣ ਸیکھੀਏ ਕਿ ਸਾਡੇ ਮਾਡਲ ਵਿੱਚ ਪੰਪਕਿਨ ਕਿਸਮ (variety) ਨੂੰ ਕਿਵੇਂ ਧਿਆਨ ਵਿੱਚ ਰੱਖਿਆ ਜਾਵੇ! +🎃 ਵਧਾਈ ਹੋ, ਤੁਸੀਂ ਇੱਕ ਐਸਾ ਮਾਡਲ ਬਣਾਇਆ ਹੈ ਜੋ ਪਾਈ ਕਦੂਆਂ ਦੀ ਕੀਮਤ ਪੇਸ਼ਗੀਬੀ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ। ਤੁਸੀਂ ਸ਼ਾਇਦ ਇਹੀ ਪ੍ਰਕਿਰਿਆ ਸਾਰੇ ਕਦੂਆਂ ਦੀ ਕਿਸਮਾਂ ਲਈ ਦੁਹਰਾ ਸਕਦੇ ਹੋ, ਪਰ ਇਹ ਥੱਕਾਵਟ ਭਰੀ ਹੋਵੇਗੀ। ਹੁਣ ਚਲੋ ਸਿੱਖਦੇ ਹਾਂ ਕਿ ਮਾਡਲ ਵਿੱਚ ਕਦੂ ਦੀ ਵਿਰਾਇਟੀ ਨੂੰ ਕਿਵੇਂ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ! -## ਵਰਗੀਕ੍ਰਿਤ ਫੀਚਰ +## Categorical Features -ਆਦਰਸ਼ ਦੁਨੀਆਂ ਵਿੱਚ, ਅਸੀਂ ਇੱਛਾ ਕਰਦੇ ਹਾਂ ਕਿ ਵੱਖ-ਵੱਖ ਪੰਪਕਿਨ ਕਿਸਮਾਂ ਲਈ ਕੀਮਤਾਂ ਇੱਕੋ ਮਾਡਲ ਨਾਲ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਯੋਗ ਹੋਣ। ਪਰ, `Variety` ਕਾਲਮ ਕੁਝ ਅਲੱਗ ਹੈ ਜਿਵੇਂ ਕਿ `Month` ਵਰਗੇ ਕਾਲਮਾਂ ਤੋਂ, ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਗੈਰ-ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਹੁੰਦੇ ਹਨ। ਇਨ੍ਹਾਂ ਕਾਲਮਾਂ ਨੂੰ **ਵਰਗੀਕ੍ਰਿਤ** ਕਹਿੰਦੇ ਹਨ। +ਆਦਰਸ਼ ਦੁਨੀਆ ਵਿੱਚ, ਅਸੀਂ ਇੱਕੋ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੱਖ-ਵੱਖ ਕਦੂਆਂ ਦੀ ਕਿਸਮਾਂ ਲਈ ਕੀਮਤਾਂ ਦੀ ਪੇਸ਼ਗੀਬੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਪਰ `Variety` ਕਾਲਮ ਕੁਝ ਵੱਖਰਾ ਹੈ ਜਿਵੇਂ ਕਿ `Month` ਕਾਲਮ, ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਗੈਰ-ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਹੁੰਦੇ ਹਨ। ਐਸੇ ਕਾਲਮ ਨੂੰ **categorical** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ ਕਲਿੱਕ ਕਰੋ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਜਿਹੜੀ ਵਰਗੀਕ੍ਰਿਤ ਫੀਚਰ ਵਰਤਣ ਬਾਰੇ ਹੈ। +> 🎥 ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਉੱਪਰ ਦਿੱਤੇ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਜਿਸ ਵਿੱਚ categorical ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਦੱਸਿਆ ਗਿਆ ਹੈ। -ਇੱਥੇ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਔਸਤ ਕੀਮਤ ਕਿਸਮ ਅਨੁਸਾਰ ਕਿਵੇਂ ਨਿਰਭਰ ਕਰਦੀ ਹੈ: +ਇੱਥੇ ਤੁਸੀਂ ਜਾ ਸਕਦੇ ਹੋ ਕਿ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦੇ ਅਨੁਸਾਰ ਔਸਤ ਕੀਮਤ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ ਹੁੰਦੀ ਹੈ: Average price by variety -ਕਿਸਮ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਲਈ, ਸਾਨੂੰ ਪਹਿਲਾਂ ਇਸਨੂੰ ਸੰਖਿਆਤਮਕ ਰੂਪ ਵਿੱਚ ਬਦਲਨਾ ਪਵੇਗਾ, ਜਾਂ ਇਸ ਨੂੰ **ਇੰਕੋਡ** ਕਰਨਾ ਪਵੇਗਾ। ਸਾਡੇ ਕੋਲ ਕਈ ਤਰੀਕੇ ਹਨ: +ਕਿਸਮ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਲੈਣ ਲਈ, ਸਾਨੂੰ ਪਹਿਲਾਂ ਇਸਨੂੰ ਸੰਖਿਆਤਮਕ ਰੂਪ ਵਿੱਚ ਬਦਲਣਾ ਪਵੇਗਾ, ਜਾਂ ਇਸਨੂੰ **encode** ਕਰਨਾ ਪਵੇਗਾ। ਇਹ ਕਰਨ ਦੇ ਕੁਝ ਤਰੀਕੇ ਹਨ: -* ਸਧਾਰਣ **ਸੰਖਿਆਤਮਕ ਇੰਕੋਡਿੰਗ** ਇੱਕ ਵੱਖਰੀਆਂ ਕਿਸਮਾਂ ਦੀ ਸੂਚੀ ਬਣਾਏਗਾ, ਅਤੇ ਫਿਰ ਕਿਸਮ ਦੇ ਨਾਮ ਨੂੰ ਉਸ ਸੂਚੀ ਵਿੱਚ ਉਸ ਦੀ ਸੂਚਕਾਂਕ ਨਾਲ ਬਦਲੇਗਾ। ਇਹ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਚੰਗਾ ਨਹੀਂ, ਕਿਉਂਕਿ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਸਲ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਨੂੰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਕੁਝ ਕੋਐਫੀਸ਼ੀਅੰਟ ਨਾਲ ਗੁਣਾ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਇੰਡੈਕਸ ਨੰਬਰ ਅਤੇ ਕੀਮਤ ਵਿਚਕਾਰ ਸੰਬੰਧ ਸਾਫ਼ ਤੌਰ ਤੇ ਗੈਰ-ਰੇਖੀਅ ਹੈ, ਭਾਵੇਂ ਸੀਮਿਤ ਇੰਡੈਕਸ ਕਿਸੇ ਖਾਸ ਢੰਗ ਨਾਲ ਕ੍ਰਮਵੱਧ ਹੋਣ। -* **ਵਨ-ਹੌਟ ਇੰਕੋਡਿੰਗ** `Variety` ਕਾਲਮ ਨੂੰ 4 ਵੱਖ-ਵੱਖ ਕਾਲਮਾਂ ਵਿੱਚ ਬਦਲ ਦੇਵੇਗੀ, ਹਰ ਕਿਸਮ ਲਈ ਇੱਕ ਕਾਲਮ। ਹਰ ਕਾਲਮ ਵਿੱਚ `1` ਹੋਵੇਗਾ ਜੇ ਉਸ ਲਾਈਨ ਦੀ ਕਿਸਮ ਉਸ ਮੁਕੱਦਰ ਕਿਸਮ ਨਾਲ ਮਿਲਦੀ ਹੈ, ਨਹੀਂ ਤਾਂ `0`। ਇਸਦਾ ਅਰਥ ਹੈ ਕਿ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ ਚਾਰ ਕੋਐਫੀਸ਼ੀਅੰਟ ਹੋਣਗੇ, ਹਰ ਪੰਪਕਿਨ ਕਿਸਮ ਲਈ ਇਕ, ਜੋ ਉਸ ਕਿਸਮ ਦੀ ਸ਼ੁਰੂਆਤੀ ਕੀਮਤ (ਜਾਂ ਵੱਧ ਕੀਮਤ) ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹੋਵੇਗਾ। +* ਸਧਾਰਣ **ਨੰਬਰਤਮਕ ਇਨਕੋਡਿੰਗ** ਵਿੱਚ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦਾ ਇੱਕ ਟੇਬਲ ਬਣਾਈਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਉਸ ਟੇਬਲ ਵਿੱਚ ਕਿਸਮ ਦੇ ਨਾਮ ਦੀ ਥਾਂ ਉਸਦੀ ਇੰਡੈਕਸ ਰੱਖਦਾ ਹੈ। ਇਹ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਵਧੀਆ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਰਿਗ੍ਰੈਸ਼ਨ ਇੰਡੈਕਸ ਦਾ ਅਸਲੀ ਨੰਬਰਤਮਕ ਮੁੱਲ ਲੈਂਦਾ ਹੈ, ਅਤੇ ਨਤੀਜੇ ਵਿੱਚ ਉਸ ਨੂੰ ਕਿਸੇ ਕੋਐਫੀਸ਼ਿਅਂਟ ਨਾਲ ਗੁਣਾ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਇੰਡੈਕਸ ਨੰਬਰ ਅਤੇ ਕੀਮਤ ਵਿਚਕਾਰ ਸਬੰਧ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਗੈਰ-ਰੇਖੀਅ ਹੈ, ਭਾਵੇਂ ਸਾਨੂੰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਪੈਦਾ ਹੈ ਕਿ ਇੰਡੈਸ ਮੁਕੱਦਮ ਸਪਸ਼ਟ ਤਰੀਕੇ ਨਾਲ ਆਯੋਜਿਤ ਹੁੰਦੇ ਹਨ। +* **One-hot encoding** `Variety` ਕਾਲਮ ਨੂੰ 4 ਵੱਖਰੇ ਕਾਲਮਾਂ ਵਿੱਚ ਬਦਲ ਦੇਵੇਗਾ, ਹਰ ਕਿਸਮ ਲਈ ਇੱਕ। ਹਰ ਕਾਲਮ ਵਿੱਚ `1` ਹੋਵੇਗਾ ਜੇ उस ਕਿਸੇ ਦਿੱਗੀ ਤਤਰ ਕਿਸਮ ਦਾ ਹੈ, ਨਹੀਂ ਤਾਂ `0`। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ ਚਾਰ ਕੋਐਫ਼ੀਸ਼ਿਅਂਟ ਹੋਣਗੇ, ਹਰ ਕਿਸਮ ਲਈ ਇੱਕ, ਜੋ ਉਸ ਕਿਸਮ ਲਈ "ਆਰੰਭਕ ਕੀਮਤ" ਜਾਂ ਫਿਰ "ਜੋੜਤੋਂ ਕੀਮਤ" ਦੀ ਜ਼ਿੰਮੇਵਾਰੀ ਲਈ ਹੁੰਦਾ ਹੈ। -ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਿਸ ਤਰ੍ਹਾਂ ਇੱਕ ਵਿਭਿੰਨਤਾ ਨੂੰ one-hot ਇੰਕੋਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ: +ਕੋਡ ਹੇਠਾਂ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਿਸ ਤਰ੍ਹਾਂ ਅਸੀਂ ਇੱਕ ਕਿਸਮ ਨੂੰ one-hot encode ਕਰ ਸਕਦੇ ਹਾਂ: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ one-hot ਇੰਕੋਡ ਕੀਤੀ ਕਿਸਮ ਨਾਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਸਾਨੂੰ ਸਿਰਫ਼ ਠੀਕ ਤਰ੍ਹਾਂ `X` ਅਤੇ `y` ਡੇਟਾ ਸ਼ੁਰੂ ਕਰਨਾ ਪਵੇਗਾ: +One-hot encode ਕੀਤੀ ਕਿਸਮ ਨੂੰ ਇਨਪੁੱਟ ਵਜੋਂ ਵਰਤ ਕੇ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਟ੍ਰੇਨ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਸਿਰਫ਼ `X` ਅਤੇ `y` ਡੇਟਾ ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਸ਼ੁਰੂ ਕਰਨਾ ਪੈਂਦਾ ਹੈ: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -ਹੋਰ ਕੋਡ ਬਿਲਕੁਲ ਪਿੱਛਲੇ ਜੇਵਾਂ ਹੀ ਹੈ ਜੋ ਅਸੀਂ Linear Regression ਲਈ ਵਰਤਿਆ। ਜੇ ਤੁਸੀਂ ਇਹ ਜਮ੍ਹਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਵੇਖੋਗੇ ਕਿ ਮੀਨ ਸਕਵੇਅਰ ਐਰਰ ਲਗਭਗ ਉਹੀ ਹੈ, ਪਰ ਨਿਰਣਯਾਂ ਦੀ ਕੋਐਫੀਸ਼ੀਅੰਟ ਕਾਫ਼ੀ ਵੱਧ (~77%) ਹੈ। ਹੋਰ ਵੀ ਠੀਕ ਭਵਿੱਖਬਾਣੀਆਂ ਲਈ, ਅਸੀਂ ਹੋਰ ਵਰਗੀਕ੍ਰਿਤ ਫੀਚਰਜ਼ ਨਾਲ ਨਾਲ ਗਿਣਤੀ ਯੋਗ ਫੀਚਰਜ (ਜਿਵੇਂ `Month` ਜਾਂ `DayOfYear`) ਵੀ ਜੋੜ ਸਕਦੇ ਹਾਂ। ਇੱਕ ਵੱਡਾ ਫੀਚਰ ਐਰੇ ਬਣਾਉਣ ਲਈ ਅਸੀਂ `join` ਵਰਤ ਸਕਦੇ ਹਾਂ: +ਕੋਡ ਦਾ ਬਾਕੀ ਹਿੱਸਾ ਉਹੀ ਹੈ ਜੋ ਅਸੀਂ ਪਹਿਲਾਂ ਵਰਤਿਆ ਸੀ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਟ੍ਰੇਨ ਕਰਨ ਲਈ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਕੋਸ਼ਿਸ਼ ਕਰੋਗੇ, ਤਾਂ ਵੇਖੋਗੇ ਕਿ ਮੀਨ ਸਕਵੇਅਰਡ ਐਰਰ ਲਗਭਗ ਵੱਧ ਤੋ ਵੱਧ ਇੱਕੋ ਜਿਹਾ ਹੈ, ਪਰ ਸਾਡੇ ਕੋਲ ਕੋਈ ਹਾਈ ਕੋਇਫ਼ੀਸ਼ਿਅਂਟ ਹੋਵੇਗਾ (~77%)। ਹੋਰ ਸਹੀ ਪੇਸ਼ਗੀਬੀ ਲਈ, ਅਸੀਂ ਹੋਰ ਕੈਟੇਗੌਰਿਕਲ ਫੀਚਰਾਂ ਨਾਲ ਨਾਲ ਸੰਖਿਆਤਮਕ ਫੀਚਰ ਜਿਵੇਂ ਕਿ `Month` ਜਾਂ `DayOfYear` ਵੀ ਧਿਆਨ ਵਿੱਚ ਲੈ ਸਕਦੇ ਹਾਂ। ਇੱਕ ਵੱਡਾ ਐਰੇ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ `join` ਵਰਤ ਸਕਦੇ ਹਾਂ: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,68 +342,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -ਇੱਥੇ ਅਸੀਂ `City` ਅਤੇ `Package` ਕਿਸਮਾਂ ਨੂੰ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹਾਂ, ਜਿਸ ਨਾਲ ਸਾਡੇ ਕੋਲ MSE 2.84 (10%) ਅਤੇ ਨਿਰਣਯ 0.94 ਆਉਂਦਾ ਹੈ! +ਇੱਥੇ ਅਸੀਂ `City` ਅਤੇ `Package` ਕਿਸਮ ਨੂੰ ਵੀ ਸ਼ਾਮਲ ਕਰਦੇ ਹਾਂ, ਜਿਸ ਨਾਲ ਸਾਨੂੰ RMSE 2.84 (10.5%), ਅਤੇ ਨਿਰਧਾਰਿਤਤਾ 0.94 ਮਿਲਦੀ ਹੈ! -## ਸਾਰਿਆਂ ਨੂੰ ਇਕੱਠਾ ਕਰਨਾ +## ਸਾਰਿਆਂ ਨੂੰ ਇਕੱਠੇ ਮਿਲਾਉਣਾ -ਸਾਰਿਆਂ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਉਪਰ ਦਿੱਤੇ ਉਦਾਹਰਨ ਤੋਂ ਮਿਲੇ ਜੁਲੇ (one-hot ਇੰਕੋਡ ਕੀਤੇ ਵਰਗੀਕ੍ਰਿਤ + ਗਿਣਤੀ ਯੋਗ) ਡੇਟਾ ਨੂੰ ਪੁਲਿਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਇਕੱਠਾ ਕਰ ਸਕਦੇ ਹਾਂ। ਤੁਹਾਡੇ ਸੁਵਿਧਾ ਲਈ ਪੂਰਾ ਕੋਡ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ: +ਸਰਵੋਤਮ ਮਾਡਲ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਮਿਸਾਲ ਦੇ ਤੌਰ 'ਤੇ ਜੋੜੇ ਹੋਏ (one-hot encode ਕੀਤੇ categorical + numeric) ਡੇਟਾ ਨੂੰ Polynomial Regression ਨਾਲ ਮਿਲਾ ਸਕਦੇ ਹਾਂ। ਤੁਹਾਡੇ පහਲੈ ਲਈ ਪੂਰਾ ਕੋਡ ਇੱਥੇ ਹੈ: ```python -# ਪ੍ਰਸ਼ਿਖਣ ਡੇਟਾ ਸੈਟ ਕਰੋ +# ਸਿੱਖਣ ਡੇਟਾ ਸੈੱਟ ਕਰੋ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# ਟਰੇਨ-ਟੈਸਟ ਵੰਡ ਬਣਾਓ +# ਟ੍ਰੇਨ-ਟੈਸਟ ਸਪਲਿਟ ਬਣਾਓ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# ਪਾਈਪਲਾਈਨ ਸੈਟਅਪ ਅਤੇ ਟ੍ਰੇਨ ਕਰੋ +# ਪਾਈਪਲਾਈਨ ਸੈੱਟਅਪ ਅਤੇ ਟ੍ਰੇਨ ਕਰੋ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ਟੈਸਟ ਡੇਟਾ ਲਈ ਨਤੀਜੇ ਅਨੁਮਾਨ ਲਗਾਓ +# ਟੈਸਟ ਡੇਟਾ ਲਈ ਨਤੀਜੇ ਭਵਿੱਖਬਾਣੀ ਕਰੋ pred = pipeline.predict(X_test) -# MSE ਅਤੇ ਨਿਰਣਯ ਕੈਲਕुलेਟ ਕਰੋ -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE ਅਤੇ ਨਿਰਣਯ ਕੀਮਤ ਦੀ ਗਣਨਾ ਕਰੋ +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -ਇਸ ਨਾਲ ਸਾਨੂੰ ਲਗਭਗ 97% ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਨਿਰਣਯ ਕੋਐਫੀਸ਼ੀਅੰਟ ਅਤੇ MSE=2.23 (~8% ਭਵਿੱਖਬਾਣੀ ਤਰੁੱਟ) ਮਿਲੇਗਾ। +ਇਹ ਸਾਨੂੰ ਲਗਭਗ 97% ਦਾ ਸਭ ਤੋਂ ਚੰਗਾ ਨਿਰਧਾਰਿਤਤਾ ਕੋਇਫ਼ੀਸ਼ਿਅਂਟ ਅਤੇ RMSE=2.23 (~8% ਪੇਸ਼ਗੀਬੀ ਗਲਤੀ) ਦੇਵੇਗਾ। -| ਮਾਡਲ | MSE | ਨਿਰਣਯ | -|-------|-----|---------| +| ਮਾਡਲ | RMSE | ਨਿਰਧਾਰਿਤਤਾ | +|-------|-----|---------------| | `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | | `Variety` Linear | 5.24 (19.7%) | 0.77 | -| ਸਾਰੇ ਫੀਚਰਜ਼ Linear | 2.84 (10.5%) | 0.94 | -| ਸਾਰੇ ਫੀਚਰਜ਼ Polynomial | 2.23 (8.25%) | 0.97 | +| ਸਭ ਫੀਚਰ Linear | 2.84 (10.5%) | 0.94 | +| ਸਭ ਫੀਚਰ Polynomial | 2.23 (8.25%) | 0.97 | -🏆 ਵਧਾਈਆਂ! ਤੁਸੀਂ ਇੱਕ ਹੀ ਲੈਸਨ ਵਿੱਚ ਚਾਰ Regression ਮਾਡਲ ਬਣਾਏ, ਅਤੇ ਮਾਡਲ ਦੀ ਕੁਆਲਟੀ ਨੂੰ 97% ਤੱਕ ਸੁਧਾਰਿਆ। Regression ਦੇ ਆਖਰੀ ਸੈਕਸ਼ਨ ਵਿੱਚ, ਤੁਸੀਂ Logistic Regression ਬਾਰੇ ਸਿੱਖੋਗੇ ਜੋ ਕਿ ਕੈਟੇਗਰੀਜ਼ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। +🏆 ਸ਼ਾਬਾਸ਼! ਤੁਸੀਂ ਇਕ ਹੀ ਪਾਠ ਵਿੱਚ ਚਾਰ Regression ਮਾਡਲ ਬਣਾਏ ਅਤੇ ਮਾਡਲ ਗੁਣਵੱਤਾ ਨੂੰ 97% ਤੱਕ ਬਿਹਤਰ ਕੀਤਾ। Regression ਦੇ ਅੰਤਿਮ ਭਾਗ ਵਿੱਚ ਤੁਸੀਂ ਲੋਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਸਿੱਖੋਗੇ, ਜੋ ਕੈਟੇਗਰੀਜ਼ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ। --- -## 🚀ਚੈਲੰਜ +## 🚀ਚੁਣੌਤੀ -ਇਸ ਨੋਟਬੁੱਕ ਵਿੱਚ ਕਈ ਵੱਖ-ਵੱਖ ਵੈਰੀਏਬਲਾਂ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਦੇਖੋ ਕਿ ਕਿਉਂਕਰੋਲੇਸ਼ਨ ਮਾਡਲ ਦੀ ਸਹੀਅਤਾ ਨਾਲ ਕਿਵੇਂ ਜੁੜਦੀ ਹੈ। +ਇਸ ਨੋਟਬੁੱਕ ਵਿੱਚ ਕਈ ਵੱਖ-ਵੱਖ ਵੈਰੀਏਬਲ ਟੈਸਟ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਸੰਬੰਧ ਮਾਡਲ ਦੀ ਸਹੀਤਾ ਨਾਲ ਕਿਵੇਂ ਮਿਲਦਾ ਹੈ। -## [ਪੋਸਟ-ਲੇਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈਅਧਿਆਨ +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈਅਧਿਐਨ -ਇਸ ਪਾਠ ਵਿੱਚ ਅਸੀਂ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਸਿੱਖਿਆ। ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਕਿਸਮਾਂ ਦਾ ਵੀ ਰਿਗ੍ਰੈਸ਼ਨ ਹੈ। ਸਟੀਪਵਾਈਜ਼, ਰਿਡਜ, ਲਾਸ਼ੋ ਅਤੇ ਇਲਾਸਟਿਕਨੇਟ ਤਕਨੀਕਾਂ ਬਾਰੇ ਪੜ੍ਹੋ। ਇੱਕ ਵਧੀਆ ਕੋਰਸ ਸਟੈਨਫੋਰਡ ਸਟੈਟਿਸਟਿਕਲ ਲਰਨਿੰਗ ਕੋਰਸ ਹੈ: [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +ਇਸ ਪਾਠ ਵਿੱਚ ਅਸੀਂ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਸਿੱਖਿਆ। ਹੋਰ ਮਹੱਤਵਪੂਰਣ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀਆਂ ਕਿਸਮਾਂ ਹਨ। Stepwise, Ridge, Lasso ਅਤੇ Elasticnet ਤਕਨੀਕਾਂ ਬਾਰੇ ਪੜ੍ਹੋ। ਇੱਕ ਚੰਗਾ ਕੋਰਸ ਸਿੱਖਣ ਲਈ ਹੈ [Stanford Statistical Learning ਕੋਰਸ](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## ਅਸਾਈਨਮੈਂਟ -[ਇੱਕ ਮਾਡਲ ਬਣਾਓ](assignment.md) +[ਮਾਡਲ ਬਣਾਓ](assignment.md) --- -**ਡੀਸਕਲੇਮਰ**: -ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਆਟੋਮੇਟਿਕ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਣਸਹੀਤਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੀ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜ਼ਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਨਾਲ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਸਮਝਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। +**ਅਸਵੀਕਾਰੋਪਣ**: +ਇਹ ਦਸਤਾਵੇਜ਼ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗ਼ਲਤੀਆਂ ਜਾਂ ਅਸਥਿਰਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼, ਆਪਣੇ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ, ਅਧਿਕਾਰਿਤ ਸਰੋਤ ਵਜੋਂ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਿਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/2-Regression/3-Linear/solution/notebook.ipynb b/translations/pa/2-Regression/3-Linear/solution/notebook.ipynb index d6971e96cc..36cc036c31 100644 --- a/translations/pa/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/pa/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ਕਦੂ ਦੀ ਕੀਮਤ ਲਈ ਰੇਖੀ ਅਤੇ ਬਹੁਪਦਾਰ ਰਿਗ੍ਰੈਸ਼ਨ - ਪਾਠ 3\n", + "## ਕਦੂ ਦੀ ਕੀਮਤ ਲਈ ਰੈਖੀ ਅਤੇ ਪਾਲੀਨੋਮਿਯਲ ਰੈਗ੍ਰੈਸ਼ਨ - ਪਾਠ 3\n", "\n", - "ਲੋੜੀਂਦੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਅਤੇ ਡਾਟਾਸੈਟ ਲੋਡ ਕਰੋ। ਡਾਟਾ ਨੂੰ ਇੱਕ ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਬਦਲੋ ਜੋ ਡਾਟਾ ਦਾ ਇੱਕ ਹਿੱਸਾ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ:\n", + "ਲੋੜੀਂਦੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਅਤੇ ਡੇਟਾਸੈੱਟ ਨੂੰ ਲੋਡ ਕਰੋ। ਡੇਟਾ ਨੂੰ ਇੱਕ ਡੇਟਾ ਫਰੇਮ ਵਿੱਚ ਬਦਲੋ ਜਿਸ ਵਿੱਚ ਡੇਟਾ ਦਾ ਇੱਕ ਉਪਸੈੱਟ ਹੋਵੇ:\n", "\n", - "- ਸਿਰਫ ਉਹ ਕਦੂ ਪ੍ਰਾਪਤ ਕਰੋ ਜੋ ਬੁਸ਼ਲ ਦੁਆਰਾ ਕੀਮਤ ਕੀਤੇ ਗਏ ਹਨ\n", - "- ਮਿਤੀ ਨੂੰ ਇੱਕ ਮਹੀਨੇ ਵਿੱਚ ਬਦਲੋ\n", - "- ਕੀਮਤ ਦੀ ਗਣਨਾ ਉੱਚ ਅਤੇ ਘੱਟ ਕੀਮਤਾਂ ਦੇ ਔਸਤ ਵਜੋਂ ਕਰੋ\n", - "- ਕੀਮਤ ਨੂੰ ਬੁਸ਼ਲ ਮਾਤਰਾ ਦੁਆਰਾ ਕੀਮਤ ਦਰਸਾਉਣ ਲਈ ਬਦਲੋ\n" + "- ਸਿਰਫ ਉਹ ਕਦੂ ਲਓ ਜੋ ਬਸ਼ਲ ਮੁਲ੍ਹਵਾਂ ਠਹਿਰਾਏ ਗਏ ਹਨ\n", + "- ਮੁਲ੍ਹਵਾ ਨੂੰ ਮਹੀਨੇ ਵਿੱਚ ਬਦਲੋ\n", + "- ਕੀਮਤ ਦੀ ਗਿਣਤੀ ਉੱਚੀ ਅਤੇ ਘੱਟ ਕੀਮਤਾਂ ਦੇ ਔਸਤ ਤੇ ਕਰੋ\n", + "- ਕੀਮਤ ਨੂੰ ਬਸ਼ਲ ਮਾਤਰਾ ਅਨੁਸਾਰ ਦਰਸਾਉਣ ਲਈ ਬਦਲੋ\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ਇੱਕ ਸਕੈਟਰਪਲਾਟ ਸਾਨੂੰ ਯਾਦ ਦਿਵਾਉਂਦਾ ਹੈ ਕਿ ਸਾਡੇ ਕੋਲ ਸਿਰਫ਼ ਅਗਸਤ ਤੋਂ ਦਸੰਬਰ ਤੱਕ ਦੇ ਮਹੀਨੇ ਦੇ ਡਾਟਾ ਹੈ। ਸਾਨੂੰ ਸੰਭਵਤ: ਨਤੀਜੇ ਲੀਨੀਅਰ ਢੰਗ ਨਾਲ ਕੱਢਣ ਲਈ ਹੋਰ ਡਾਟਾ ਦੀ ਲੋੜ ਹੈ।\n" + "ਇੱਕ ਸਕੈਟਰਪਲਾਟ ਸਾਨੂੰ ਯਾਦ ਦਿਲਾਉਂਦਾ ਹੈ ਕਿ ਸਾਡੇ ਕੋਲ ਸਿਰਫ਼ ਅਗਸਤ ਤੋਂ ਦਸੰਬਰ ਤੱਕ ਦਾ ਮਹੀਨੇ ਦਾ ਡੇਟਾ ਹੈ। ਸੰਭਵ ਹੈ ਕਿ ਸਾਨੂੰ ਲਕੀਰੀ ਰੂਪ ਵਿੱਚ ਨਤੀਜੇ ਕੱਢਣ ਲਈ ਹੋਰ ਡੇਟਾ ਦੀ ਲੋੜ ਹੋਵੇ।\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ਚਲੋ ਵੇਖੀਏ ਕਿ ਕੋਈ ਸਮਬੰਧ ਹੈ ਕਿ ਨਹੀਂ:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ਲੱਗਦਾ ਹੈ ਕਿ ਸੰਬੰਧਤਾ ਕਾਫ਼ੀ ਛੋਟੀ ਹੈ, ਪਰ ਕੋਈ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਸੰਬੰਧ ਹੈ - ਕਿਉਂਕਿ ਉੱਪਰ ਦਿੱਤੇ ਗ੍ਰਾਫ ਵਿੱਚ ਕੀਮਤਾਂ ਦੇ ਬਿੰਦੂਆਂ ਵਿੱਚ ਕਈ ਵੱਖਰੇ ਕਲੱਸਟਰ ਦਿਖਾਈ ਦੇ ਰਹੇ ਹਨ। ਆਓ ਇੱਕ ਗ੍ਰਾਫ ਬਣਾਈਏ ਜੋ ਵੱਖ-ਵੱਖ ਕੱਦੂ ਦੀਆਂ ਕਿਸਮਾਂ ਦਿਖਾਵੇਗਾ:\n" + "ਲੱਗਦਾ ਹੈ ਕਿ ਸਬੰਧਤਾ ਕਾਫੀ ਛੋਟੀ ਹੈ, ਪਰ ਕੁਝ ਹੋਰ ਵਧੀਆ ਮਹੱਤਵਪੂਰਨ ਸੰਬੰਧ ਹੈ - ਕਿਉਂਕਿ ਉਪਰ ਦਿੱਤੀ ਗਈ ਪਲਾਟ ਵਿੱਚ ਕੀਮਤਾਂ ਦੇ ਕਈ ਵੱਖ-ਵੱਖ ਗਰੁੱਪ ਮਹਿਸੂਸ ਹੁੰਦੇ ਹਨ। ਆਓ ਇਕ ਪਲਾਟ ਬਣਾਈਏ ਜੋ ਵੱਖ-ਵੱਖ ਕੱਦੂ ਦੀਆਂ ਕਿਸਮਾਂ ਦਿਖਾਏ:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ਇਸ ਸਮੇਂ ਲਈ, ਆਓ ਸਿਰਫ ਇੱਕ ਕਿਸਮ - **ਪਾਈ ਕਿਸਮ** 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰੀਏ।\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ\n", + "### ਲੀਨਿਅਰ ਰਿਗ੍ਰੈਸ਼ਨ\n", "\n", - "ਅਸੀਂ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ Scikit Learn ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ:\n" + "ਅਸੀਂ ਲੀਨਿਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਸਕਾਈਕਿਟ ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ਰੇਖਾ ਦਾ ਢਲਾਨ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਗੁਣਾਂਕਾਂ ਤੋਂ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:\n" + "ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਕੋਐਫੀਸ਼ਿਯੰਟਾਂ ਤੋਂ ਲਾਈਨ ਦਾ ਢਲਾਨ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ਅਸੀਂ ਤਿਆਰ ਕੀਤਾ ਮਾਡਲ ਕੀਮਤ ਦੀ ਭਵਿੱਖਬਣੀ ਕਰਨ ਲਈ ਵਰਤ ਸਕਦੇ ਹਾਂ:\n" + ] }, { "cell_type": "code", @@ -716,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ\n", + "### ਪੋਲਿਨੋਮਿਆਲ ਰੈਗ੍ਰੈਸ਼ਨ\n", "\n", - "ਕਈ ਵਾਰ ਫੀਚਰਾਂ ਅਤੇ ਨਤੀਜਿਆਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ ਮੂਲ ਰੂਪ ਵਿੱਚ ਗੈਰ-ਰੇਖੀ ਹੁੰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਕਦੂ ਦੀਆਂ ਕੀਮਤਾਂ ਸਰਦੀ ਦੇ ਮੌਸਮ ਵਿੱਚ (ਮਹੀਨੇ=1,2) ਉੱਚੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਫਿਰ ਗਰਮੀ ਦੇ ਮੌਸਮ ਵਿੱਚ ਘਟ ਜਾਂਦੀਆਂ ਹਨ (ਮਹੀਨੇ=5-7), ਅਤੇ ਫਿਰ ਵਧ ਜਾਂਦੀਆਂ ਹਨ। ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਇਸ ਸੰਬੰਧ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਨਹੀਂ ਪਕੜ ਸਕਦਾ।\n", + "ਕਈ ਵਾਰ ਫੀਚਰਾਂ ਅਤੇ ਨਤੀਜਿਆਂ ਵਿਚਕਾਰ ਸਬੰਧ ਸਵਭਾਵਿਕ ਤੌਰ ਤੇ ਗੈਰ-ਰੇਖੀ ਹੁੰਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਸਰਦੀਆਂ (ਮਹੀਨੇ=1,2) ਵਿੱਚ ਕਦੂਆਂ ਦੀ ਕੀਮਤ ਵੱਧ ਸਕਦੀ ਹੈ, ਫਿਰ ਗਰਮੀ (ਮਹੀਨੇ=5-7) ਵਿੱਚ ਘਟਦੀ ਹੈ, ਅਤੇ ਫਿਰ ਮੁੜ ਵਧਦੀ ਹੈ। ਲੀਨੀਅਰ ਰੈਗ੍ਰੈਸ਼ਨ ਇਸ ਸਬੰਧ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਲੱਭਣ ਵਿੱਚ ਅਸਮਰੱਥ ਹੈ।\n", "\n", - "ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਅਸੀਂ ਵਾਧੂ ਫੀਚਰਾਂ ਸ਼ਾਮਲ ਕਰਨ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹਾਂ। ਇੱਕ ਸਧਾਰਨ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਇਨਪੁਟ ਫੀਚਰਾਂ ਤੋਂ ਪੋਲੀਨੋਮਿਅਲ ਵਰਤ ਕੇ ਨਵੇਂ ਫੀਚਰ ਬਣਾਏ ਜਾਣ, ਜਿਸ ਨਾਲ **ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ** ਹੁੰਦਾ ਹੈ। Scikit Learn ਵਿੱਚ, ਅਸੀਂ ਪਾਈਪਲਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੋਲੀਨੋਮਿਅਲ ਫੀਚਰਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਪ੍ਰੀ-ਕੰਪਿਊਟ ਕਰ ਸਕਦੇ ਹਾਂ:\n" + "ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਅਸੀਂ ਵਾਧੂ ਫੀਚਰ ਸ਼ਾਮਲ ਕਰਨ ਦੇ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹਾਂ। ਸਧਾਰਣ ਤਰੀਕਾ ਹੈ ਕਿ ਇਨਪੁਟ ਫੀਚਰਾਂ ਤੋਂ ਪੋਲਿਨੋਮਿਆਲ ਵਰਗੀ ਥਾਂ ਤੇ ਪੋਲਿਨੋਮਿਆਲ ਰੈਗ੍ਰੈਸ਼ਨ ਕਰਨਾ। ਸਕਿਟ-ਲਰਨ ਵਿੱਚ, ਅਸੀਂ ਪਾਇਪਲਾਈਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਟੋਮੈਟਿਕ ਤੌਰ 'ਤੇ ਪੋਲਿਨੋਮਿਆਲ ਫੀਚਰਾਂ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਕੈਲਕुलेਟ ਕਰ ਸਕਦੇ ਹਾਂ:\n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### ਕਿਸਮਾਂ ਨੂੰ ਐਨਕੋਡ ਕਰਨਾ\n", + "### ਕੋਡਿੰਗ ਦੇ ਤਰੀਕੇ\n", "\n", - "ਇਕ ਆਦਰਸ਼ ਜਗਤ ਵਿੱਚ, ਅਸੀਂ ਇੱਕੋ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੱਖ-ਵੱਖ ਕੱਦੂ ਦੀਆਂ ਕਿਸਮਾਂ ਲਈ ਕੀਮਤਾਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਕਿਸਮ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਲਈ, ਸਾਨੂੰ ਪਹਿਲਾਂ ਇਸਨੂੰ ਸੰਖਿਆਤਮਕ ਰੂਪ ਵਿੱਚ ਬਦਲਣਾ ਪਵੇਗਾ, ਜਾਂ **ਐਨਕੋਡ** ਕਰਨਾ ਪਵੇਗਾ। ਇਸਨੂੰ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ:\n", + "ਆਦਰਸ਼ ਦੁਨੀਆ ਵਿੱਚ, ਅਸੀਂ ਇੱਕੋ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੱਖ-ਵੱਖ ਲੱਕੜੀ ਦੀ ਕਿਸਮਾਂ ਲਈ ਕੀਮਤਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਕਿਸਮ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਲਈ, ਸਾਨੂੰ ਪਹਿਲਾਂ ਇਸ ਨੂੰ ਗਿਣਤੀ ਰੂਪ ਵਿੱਚ ਬਦਲਣ ਦੀ ਲੋੜ ਹੈ, ਜਾਂ **ਕੋਡਿੰਗ**। ਇਸਨੂੰ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ:\n", "\n", - "* ਸਧਾਰਨ ਸੰਖਿਆਤਮਕ ਐਨਕੋਡਿੰਗ, ਜੋ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦੀ ਇੱਕ ਟੇਬਲ ਬਣਾਏਗੀ, ਅਤੇ ਫਿਰ ਉਸ ਟੇਬਲ ਵਿੱਚ ਕਿਸਮ ਦੇ ਨਾਮ ਨੂੰ ਇੱਕ ਇੰਡੈਕਸ ਨਾਲ ਬਦਲ ਦੇਵੇਗੀ। ਇਹ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਚਾਰ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਇੰਡੈਕਸ ਦੇ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੀ ਹੈ, ਅਤੇ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਸੰਭਵ ਹੈ ਕਿ ਕੀਮਤ ਨਾਲ ਸੰਖਿਆਤਮਕ ਤੌਰ 'ਤੇ ਸਬੰਧਿਤ ਨਾ ਹੋਵੇ।\n", - "* ਵਨ-ਹਾਟ ਐਨਕੋਡਿੰਗ, ਜੋ `Variety` ਕਾਲਮ ਨੂੰ 4 ਵੱਖ-ਵੱਖ ਕਾਲਮਾਂ ਨਾਲ ਬਦਲ ਦੇਵੇਗੀ, ਹਰ ਕਿਸਮ ਲਈ ਇੱਕ, ਜੋ 1 ਦਰਸਾਏਗੀ ਜੇਕਰ ਸੰਬੰਧਿਤ ਪੰਕਤੀ ਦਿੱਤੀ ਕਿਸਮ ਦੀ ਹੋਵੇ, ਅਤੇ ਨਹੀਂ ਤਾਂ 0।\n", + "* ਸਧਾਰਨ ਅੰਕਗਣਿਤ ਕੋਡਿੰਗ ਜੋ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦੀ ਇੱਕ ਸਾਰਣੀ ਬਣਾਏਗੀ ਅਤੇ ਫਿਰ ਉਸ ਸਾਰਣੀ ਵਿੱਚ ਕਿਸਮ ਦੇ ਨਾਮ ਨੂੰ ਇੱਕ ਸੂਚਕ ਨਾਲ ਬਦਲ ਦੇਵੇਗੀ। ਇਹ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਚਾਰ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਸੂਚਕ ਦਾ ਅੰਕਗਣਿਤ ਮੁੱਲ ਧਿਆਨ ਵਿੱਚ ਲੈਂਦਾ ਹੈ, ਅਤੇ ਅਮੁਮਨ ਇਹ ਅੰਕ ਮੁੱਲ ਕੀਮਤ ਨਾਲ ਗਿਣਤੀਕ ਤੌਰ ਤੇ ਸਬੰਧਿਤ ਨਹੀਂ ਹੁੰਦਾ।\n", + "* ਵਨ-ਹੌਟ ਕੋਡਿੰਗ, ਜੋ `Variety` ਕਾਲਮ ਨੂੰ 4 ਵੱਖ-ਵੱਖ ਕਾਲਮਾਂ ਨਾਲ ਬਦਲ ਦੇਵੇਗੀ, ਇੱਕ ਹਰ ਕਿਸਮ ਲਈ, ਜੋ 1 ਹੋਵੇਗਾ ਜੇਕਰ ਦਿੱਤਾ ਗਇਆ ਕਤਾਰ ਉਸ ਕਿਸਮ ਦਾ ਹੋਵੇ ਅਤੇ 0 ਹੋਰਥਾਂ।\n", "\n", - "ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਕਿਸਮ ਨੂੰ ਵਨ-ਹਾਟ ਐਨਕੋਡ ਕਿਵੇਂ ਕਰ ਸਕਦੇ ਹਾਂ:\n" + "ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਕਿਸ ਤਰ੍ਹਾਂ ਕਿਸਮ ਦੀ ਵਨ-ਹੌਟ ਕੋਡਿੰਗ ਕਰ ਸਕਦੇ ਹਾਂ:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ਵੈਰਾਇਟੀ 'ਤੇ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ\n", + "### ਵੈਰੀਟੀ 'ਤੇ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ\n", "\n", - "ਅਸੀਂ ਹੁਣ ਉਪਰੋਕਤ ਕੋਡ ਨੂੰ ਹੀ ਵਰਤਾਂਗੇ, ਪਰ `DayOfYear` ਦੀ ਬਜਾਏ ਅਸੀਂ ਆਪਣੀ ਇੱਕ-ਹਾਟ-ਇਨਕੋਡ ਕੀਤੀ ਵੈਰਾਇਟੀ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਵਰਤਾਂਗੇ:\n" + "ਹੁਣ ਅਸੀਂ ਉਪਰ ਦਿੱਤੇ ਸਮਾਨ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, ਪਰ `DayOfYear` ਦੀ ਬਜਾਏ ਅਸੀਂ ਆਪਣੀ ਵਨ-ਹੌਟ-ਇੰਕੋਡ ਕੀਤੀ ਵੈਰੀਟੀ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਵਰਤਾਂਗੇ:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ਅਸੀਂ ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਵੀ ਇਸੇ ਤਰੀਕੇ ਨਾਲ ਵਰਤਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸੰਖਿਆਤਮਕ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਿਵੇਂ ਕਿ `Month` ਜਾਂ `DayOfYear` ਨਾਲ ਜੋੜ ਸਕਦੇ ਹਾਂ:\n" + "ਅਸੀਂ ਇਸੇ ਤਰੀਕੇ ਨਾਲ ਹੋਰ ਫੀਚਰਾਂ ਨੂੰ ਵੀ ਵਰਤ ਕੇ ਦੇਖ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਗਣਿਤੀ ਫੀਚਰਾਂ ਨਾਲ ਮਿਲਾ ਕੇ, ਜਿਵੇਂ ਕਿ `Month` ਜਾਂ `DayOfYear`:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ\n", + "### ਪੋਲਿਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ\n", "\n", - "ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਇੱਕ-ਹਾਟ-ਇਨਕੋਡ ਕੀਤੀਆਂ ਸ਼੍ਰੇਣੀਬੱਧ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਾਲ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਕੋਡ ਮੂਲ ਰੂਪ ਵਿੱਚ ਉਹੀ ਹੋਵੇਗਾ ਜਿਵੇਂ ਅਸੀਂ ਉੱਪਰ ਵੇਖਿਆ ਹੈ।\n" + "ਪੋਲਿਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਇੱਕ-ਹੋਟ-ਐਨਕੋਡ ਕੀਤੀਆਂ ਸ਼੍ਰੇਣੀਵਾਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਾਲ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਪੋਲਿਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਸਿਖਲਾਈ ਕਰਨ ਲਈ ਕੋਡ ਬੁਨਿਆਦੀ ਤੌਰ 'ਤੇ ਓਹੋ ਹੀ ਹੋਵੇਗਾ ਜੋ ਅਸੀਂ ਉੱਪਰ ਵੇਖਿਆ ਹੈ।\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**ਅਸਵੀਕਾਰਨਾ**: \nਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਸ਼ੀਲਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਮੂਲ ਰੂਪ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।\n" + "---\n\n\n**ਅਸਵੀਕਾਰੋਪੱਤਰ**: \nਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਕਿਸੇ ਭਰੋਸੇਯੋਗਤਾ ਦੇ ਅਭਾਵ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੇ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਵਜੋਂ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਉੱਪਜਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਭ੍ਰਮਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T18:45:42+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "pa" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pt-BR/.co-op-translator.json b/translations/pt-BR/.co-op-translator.json index 746bc79ade..40d970ae6d 100644 --- a/translations/pt-BR/.co-op-translator.json +++ b/translations/pt-BR/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "pt-BR" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-04T21:35:13+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:42:13+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "pt-BR" }, @@ -90,8 +90,8 @@ "language_code": "pt-BR" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:03:03+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:41:47+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "pt-BR" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "pt-BR" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:37:47+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "pt-BR" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T21:23:34+00:00", diff --git a/translations/pt-BR/1-Introduction/4-techniques-of-ML/README.md b/translations/pt-BR/1-Introduction/4-techniques-of-ML/README.md index a193f10b34..ca0577191e 100644 --- a/translations/pt-BR/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/pt-BR/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # Técnicas de Aprendizado de Máquina -O processo de construir, usar e manter modelos de aprendizado de máquina e os dados que eles utilizam é muito diferente de muitos outros fluxos de trabalho de desenvolvimento. Nesta lição, vamos desmistificar o processo e delinear as principais técnicas que você precisa conhecer. Você irá: +O processo de construir, usar e manter modelos de aprendizado de máquina e os dados que eles utilizam é muito diferente de muitos outros fluxos de trabalho de desenvolvimento. Nesta lição, vamos desmistificar o processo e destacar as principais técnicas que você precisa conhecer. Você irá: -- Compreender os processos que sustentam o aprendizado de máquina em um nível geral. +- Entender os processos que fundamentam o aprendizado de máquina em um nível geral. - Explorar conceitos básicos como 'modelos', 'previsões' e 'dados de treinamento'. ## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) -[![ML para iniciantes - Técnicas de Aprendizado de Máquina](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML para iniciantes - Técnicas de Aprendizado de Máquina") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Clique na imagem acima para assistir a um vídeo curto sobre esta lição. +> 🎥 Clique na imagem acima para assistir a um vídeo curto explicando esta lição. ## Introdução -Em um nível geral, a prática de criar processos de aprendizado de máquina (ML) é composta por várias etapas: +Em alto nível, a arte de criar processos de aprendizado de máquina (ML) é composta por várias etapas: -1. **Definir a pergunta**. A maioria dos processos de ML começa com uma pergunta que não pode ser respondida por um programa condicional simples ou um mecanismo baseado em regras. Essas perguntas geralmente giram em torno de previsões baseadas em um conjunto de dados. -2. **Coletar e preparar os dados**. Para responder à sua pergunta, você precisa de dados. A qualidade e, às vezes, a quantidade dos seus dados determinarão o quão bem você pode responder à pergunta inicial. Visualizar os dados é um aspecto importante desta fase. Esta etapa também inclui dividir os dados em grupos de treinamento e teste para construir um modelo. -3. **Escolher um método de treinamento**. Dependendo da sua pergunta e da natureza dos seus dados, você precisa escolher como deseja treinar um modelo para refletir melhor seus dados e fazer previsões precisas. Esta é a parte do processo de ML que exige expertise específica e, frequentemente, uma quantidade considerável de experimentação. -4. **Treinar o modelo**. Usando seus dados de treinamento, você aplicará vários algoritmos para treinar um modelo que reconheça padrões nos dados. O modelo pode usar pesos internos que podem ser ajustados para privilegiar certas partes dos dados em detrimento de outras, a fim de construir um modelo melhor. -5. **Avaliar o modelo**. Você usa dados nunca antes vistos (seus dados de teste) do conjunto coletado para verificar o desempenho do modelo. -6. **Ajustar parâmetros**. Com base no desempenho do modelo, você pode refazer o processo usando diferentes parâmetros ou variáveis que controlam o comportamento dos algoritmos usados para treinar o modelo. -7. **Prever**. Use novas entradas para testar a precisão do modelo. +1. **Decidir a pergunta**. A maioria dos processos de ML começa fazendo uma pergunta que não pode ser respondida por um programa condicional simples ou um motor de regras. Essas perguntas geralmente giram em torno de previsões baseadas em uma coleção de dados. +2. **Coletar e preparar dados**. Para poder responder à sua pergunta, você precisa de dados. A qualidade e, às vezes, a quantidade dos seus dados determinarão quão bem você pode responder à sua pergunta inicial. Visualizar dados é um aspecto importante desta fase. Esta fase também inclui dividir os dados em um grupo de treinamento e um de teste para construir um modelo. +3. **Escolher um método de treinamento**. Dependendo da sua pergunta e da natureza dos seus dados, você precisa escolher como deseja treinar um modelo para melhor refletir seus dados e fazer previsões precisas. Esta é a parte do seu processo de ML que requer expertise específica e, frequentemente, uma quantidade considerável de experimentação. +4. **Treinar o modelo**. Usando seus dados de treinamento, você usará vários algoritmos para treinar um modelo a reconhecer padrões nos dados. O modelo pode usar pesos internos que podem ser ajustados para privilegiar certas partes dos dados em relação a outras para construir um modelo melhor. +5. **Avaliar o modelo**. Você usa dados nunca antes vistos (seus dados de teste) do seu conjunto coletado para ver como o modelo está performando. +6. **Ajuste de parâmetros**. Com base no desempenho do seu modelo, você pode refazer o processo usando diferentes parâmetros, ou variáveis, que controlam o comportamento dos algoritmos usados para treinar o modelo. +7. **Prever**. Use novas entradas para testar a precisão do seu modelo. -## Qual pergunta fazer +## Que pergunta fazer -Os computadores são particularmente habilidosos em descobrir padrões ocultos nos dados. Essa utilidade é muito útil para pesquisadores que têm perguntas sobre um determinado domínio que não podem ser facilmente respondidas criando um mecanismo baseado em regras condicionais. Dado um trabalho atuarial, por exemplo, um cientista de dados pode construir regras personalizadas sobre a mortalidade de fumantes versus não fumantes. +Computadores são particularmente habilidosos em descobrir padrões ocultos nos dados. Essa utilidade é muito útil para pesquisadores que têm perguntas sobre um domínio específico que não podem ser facilmente respondidas criando um motor de regras baseado em condições. Dada uma tarefa atuarial, por exemplo, um cientista de dados pode ser capaz de construir regras manuais sobre a mortalidade de fumantes versus não fumantes. -Quando muitas outras variáveis são incluídas na equação, no entanto, um modelo de ML pode ser mais eficiente para prever taxas de mortalidade futuras com base no histórico de saúde anterior. Um exemplo mais animador pode ser fazer previsões meteorológicas para o mês de abril em um determinado local com base em dados que incluem latitude, longitude, mudanças climáticas, proximidade ao oceano, padrões de correntes de jato e mais. +Quando muitas outras variáveis são trazidas para a equação, no entanto, um modelo de ML pode se mostrar mais eficiente para prever futuras taxas de mortalidade com base no histórico de saúde passado. Um exemplo mais animador pode ser fazer previsões meteorológicas para o mês de abril em uma determinada localização com base em dados que incluem latitude, longitude, mudanças climáticas, proximidade do oceano, padrões da corrente de jato e mais. -✅ Este [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos meteorológicos oferece uma perspectiva histórica sobre o uso de ML na análise climática. +✅ Este [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos meteorológicos oferece uma perspectiva histórica sobre o uso de ML na análise do tempo. ## Tarefas pré-construção -Antes de começar a construir seu modelo, há várias tarefas que você precisa completar. Para testar sua pergunta e formar uma hipótese com base nas previsões de um modelo, você precisa identificar e configurar vários elementos. +Antes de começar a construir seu modelo, existem várias tarefas que você precisa completar. Para testar sua pergunta e formar uma hipótese com base nas previsões de um modelo, você precisa identificar e configurar vários elementos. ### Dados -Para responder à sua pergunta com algum grau de certeza, você precisa de uma boa quantidade de dados do tipo certo. Há duas coisas que você precisa fazer neste momento: +Para poder responder à sua pergunta com qualquer tipo de certeza, você precisa de uma boa quantidade de dados do tipo certo. Há duas coisas que você precisa fazer neste ponto: -- **Coletar dados**. Lembre-se da lição anterior sobre justiça na análise de dados e colete seus dados com cuidado. Esteja atento às fontes desses dados, quaisquer vieses inerentes que possam ter e documente sua origem. -- **Preparar dados**. Há várias etapas no processo de preparação de dados. Você pode precisar reunir dados e normalizá-los se vierem de fontes diversas. Você pode melhorar a qualidade e a quantidade dos dados por meio de vários métodos, como converter strings em números (como fazemos em [Clustering](../../5-Clustering/1-Visualize/README.md)). Você também pode gerar novos dados com base nos originais (como fazemos em [Classificação](../../4-Classification/1-Introduction/README.md)). Você pode limpar e editar os dados (como faremos antes da lição de [Aplicativo Web](../../3-Web-App/README.md)). Por fim, pode ser necessário randomizar e embaralhar os dados, dependendo das técnicas de treinamento. +- **Coletar dados**. Mantendo em mente a lição anterior sobre justiça na análise de dados, colete seus dados com cuidado. Esteja ciente das fontes desses dados, quaisquer vieses inerentes que possam possuir, e documente sua origem. +- **Preparar dados**. Existem várias etapas no processo de preparação dos dados. Você pode precisar reunir dados e normalizá-los se eles vierem de fontes diversas. Você pode melhorar a qualidade e quantidade dos dados por vários métodos, tais como converter strings em números (como fazemos em [Clustering](../../5-Clustering/1-Visualize/README.md)). Você também pode gerar novos dados, baseados nos originais (como fazemos em [Classification](../../4-Classification/1-Introduction/README.md)). Você pode limpar e editar os dados (como faremos antes da lição [Web App](../../3-Web-App/README.md)). Finalmente, você também pode precisar randomizá-los e embaralhá-los, dependendo das suas técnicas de treinamento. -✅ Após coletar e processar seus dados, reserve um momento para verificar se sua estrutura permitirá que você responda à pergunta pretendida. Pode ser que os dados não funcionem bem na tarefa proposta, como descobrimos em nossas lições de [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ Após coletar e processar seus dados, reserve um momento para ver se sua forma permitirá que você responda à sua pergunta pretendida. Pode ser que os dados não tenham um bom desempenho na tarefa proposta, como descobrimos em nossas lições de [Clustering](../../5-Clustering/1-Visualize/README.md)! -### Features e Target +### Características e Alvo -Uma [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) é uma propriedade mensurável dos seus dados. Em muitos conjuntos de dados, ela é expressa como um cabeçalho de coluna, como 'data', 'tamanho' ou 'cor'. Sua variável de feature, geralmente representada como `X` no código, representa a variável de entrada que será usada para treinar o modelo. +Uma [característica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) é uma propriedade mensurável dos seus dados. Em muitos conjuntos de dados, é expressa como um cabeçalho de coluna como 'data', 'tamanho' ou 'cor'. Sua variável de característica, geralmente representada como `X` no código, representa a variável de entrada que será usada para treinar um modelo. -Um target é aquilo que você está tentando prever. O target, geralmente representado como `y` no código, representa a resposta à pergunta que você está tentando fazer com seus dados: em dezembro, qual **cor** de abóbora será mais barata? Em São Francisco, quais bairros terão o melhor **preço** de imóveis? Às vezes, o target também é chamado de atributo de rótulo. +Um alvo é algo que você está tentando prever. O alvo, geralmente representado como `y` no código, representa a resposta à pergunta que você está tentando fazer sobre seus dados: em dezembro, qual **cor** de abóboras será a mais barata? em San Francisco, quais bairros terão o melhor **preço** imobiliário? Às vezes, o alvo também é referido como atributo de rótulo. -### Selecionando sua variável de feature +### Selecionando sua variável de característica -🎓 **Seleção de Features e Extração de Features** Como saber qual variável escolher ao construir um modelo? Você provavelmente passará por um processo de seleção ou extração de features para escolher as variáveis certas para o modelo mais eficiente. No entanto, elas não são a mesma coisa: "A extração de features cria novas features a partir de funções das features originais, enquanto a seleção de features retorna um subconjunto das features." ([fonte](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Seleção de Características e Extração de Características** Como saber qual variável escolher ao construir um modelo? Você provavelmente passará por um processo de seleção ou extração de características para escolher as variáveis certas para o modelo mais performático. No entanto, elas não são a mesma coisa: "Extração de características cria novas características a partir de funções das características originais, enquanto seleção de características retorna um subconjunto das características." ([fonte](https://wikipedia.org/wiki/Feature_selection)) -### Visualizar seus dados +### Visualize seus dados -Um aspecto importante do kit de ferramentas do cientista de dados é o poder de visualizar dados usando várias bibliotecas excelentes, como Seaborn ou MatPlotLib. Representar seus dados visualmente pode permitir que você descubra correlações ocultas que pode aproveitar. Suas visualizações também podem ajudar a identificar vieses ou dados desbalanceados (como descobrimos em [Classificação](../../4-Classification/2-Classifiers-1/README.md)). +Um aspecto importante do kit de ferramentas do cientista de dados é a capacidade de visualizar dados usando diversas bibliotecas excelentes como Seaborn ou MatPlotLib. Representar seus dados visualmente pode permitir que você descubra correlações ocultas que pode aproveitar. Suas visualizações também podem ajudar a descobrir viés ou dados desequilibrados (como descobrimos em [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Dividir seu conjunto de dados +### Divida seu conjunto de dados -Antes de treinar, você precisa dividir seu conjunto de dados em duas ou mais partes de tamanhos desiguais que ainda representem bem os dados. +Antes do treinamento, você precisa dividir seu conjunto de dados em duas ou mais partes de tamanho desigual que ainda representem bem os dados. - **Treinamento**. Esta parte do conjunto de dados é ajustada ao seu modelo para treiná-lo. Este conjunto constitui a maior parte do conjunto de dados original. -- **Teste**. Um conjunto de teste é um grupo independente de dados, frequentemente extraído dos dados originais, que você usa para confirmar o desempenho do modelo construído. -- **Validação**. Um conjunto de validação é um grupo menor e independente de exemplos que você usa para ajustar os hiperparâmetros ou a arquitetura do modelo para melhorá-lo. Dependendo do tamanho dos seus dados e da pergunta que você está fazendo, pode não ser necessário construir este terceiro conjunto (como observamos em [Previsão de Séries Temporais](../../7-TimeSeries/1-Introduction/README.md)). +- **Teste**. Um conjunto de dados de teste é um grupo independente de dados, frequentemente colhido do dado original, que você usa para confirmar o desempenho do modelo construído. +- **Validação**. Um conjunto de validação é um grupo independente menor de exemplos que você usa para ajustar os hiperparâmetros, ou a arquitetura, do modelo para melhorar o modelo. Dependendo do tamanho dos seus dados e da pergunta que está fazendo, você pode não precisar construir esse terceiro conjunto (como observamos em [Previsão de Séries Temporais](../../7-TimeSeries/1-Introduction/README.md)). ## Construindo um modelo -Usando seus dados de treinamento, seu objetivo é construir um modelo, ou uma representação estatística dos seus dados, usando vários algoritmos para **treiná-lo**. Treinar um modelo o expõe aos dados e permite que ele faça suposições sobre padrões percebidos que descobre, valida e aceita ou rejeita. +Usando seus dados de treinamento, seu objetivo é construir um modelo, ou uma representação estatística dos seus dados, usando vários algoritmos para **treiná-lo**. Treinar um modelo o expõe aos dados e permite que ele faça suposições sobre padrões percebidos que descobre, valida, aceita ou rejeita. -### Decidir sobre um método de treinamento +### Decida um método de treinamento -Dependendo da sua pergunta e da natureza dos seus dados, você escolherá um método para treiná-lo. Explorando a [documentação do Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que usamos neste curso - você pode explorar várias maneiras de treinar um modelo. Dependendo da sua experiência, pode ser necessário tentar vários métodos diferentes para construir o melhor modelo. É provável que você passe por um processo em que cientistas de dados avaliam o desempenho de um modelo alimentando-o com dados não vistos, verificando sua precisão, vieses e outros problemas que degradam a qualidade, e selecionando o método de treinamento mais apropriado para a tarefa. +Dependendo da sua pergunta e da natureza dos seus dados, você escolherá um método para treiná-lo. Explorando a [documentação do Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que usamos neste curso - você pode explorar muitas formas de treinar um modelo. Dependendo da sua experiência, pode ser necessário tentar vários métodos diferentes para construir o melhor modelo. É provável que você passe por um processo no qual cientistas de dados avaliam o desempenho de um modelo alimentando-o com dados nunca vistos, verificando a precisão, o viés e outros problemas que degradam a qualidade, e selecionando o método de treinamento mais apropriado para a tarefa em questão. -### Treinar um modelo +### Treine um modelo -Com seus dados de treinamento em mãos, você está pronto para 'ajustá-los' e criar um modelo. Você notará que em muitas bibliotecas de ML encontrará o código 'model.fit' - é neste momento que você envia sua variável de feature como um array de valores (geralmente 'X') e uma variável de target (geralmente 'y'). +Armado com seus dados de treinamento, você está pronto para 'ajustá-lo' para criar um modelo. Você notará que em muitas bibliotecas de ML você encontrará o código 'model.fit' - é nesse momento que você envia sua variável característica como um array de valores (geralmente 'X') e uma variável alvo (geralmente 'y'). -### Avaliar o modelo +### Avalie o modelo -Uma vez concluído o processo de treinamento (pode levar muitas iterações, ou 'épocas', para treinar um modelo grande), você poderá avaliar a qualidade do modelo usando dados de teste para medir seu desempenho. Esses dados são um subconjunto dos dados originais que o modelo ainda não analisou. Você pode imprimir uma tabela de métricas sobre a qualidade do modelo. +Uma vez que o processo de treinamento esteja completo (pode levar muitas iterações, ou 'épocas', para treinar um modelo grande), você poderá avaliar a qualidade do modelo usando dados de teste para medir seu desempenho. Esses dados são um subconjunto dos dados originais que o modelo não analisou anteriormente. Você pode imprimir uma tabela de métricas sobre a qualidade do seu modelo. 🎓 **Ajuste do modelo** -No contexto de aprendizado de máquina, ajuste do modelo refere-se à precisão da função subjacente do modelo ao tentar analisar dados com os quais não está familiarizado. +No contexto do aprendizado de máquina, ajuste do modelo refere-se à precisão da função subjacente do modelo enquanto ele tenta analisar dados com os quais não está familiarizado. -🎓 **Subajuste** e **superajuste** são problemas comuns que degradam a qualidade do modelo, pois ele se ajusta de forma insuficiente ou excessiva. Isso faz com que o modelo faça previsões muito alinhadas ou pouco alinhadas com seus dados de treinamento. Um modelo superajustado prevê os dados de treinamento muito bem porque aprendeu os detalhes e ruídos dos dados excessivamente. Um modelo subajustado não é preciso, pois não consegue analisar com precisão nem seus dados de treinamento nem os dados que ainda não 'viu'. +🎓 **Underfitting** e **overfitting** são problemas comuns que degradam a qualidade do modelo, pois o modelo se ajusta ou não adequadamente. Isso causa o modelo a fazer previsões alinhadas ou muito pouco alinhadas com seus dados de treinamento. Um modelo overfit prevê os dados de treinamento muito bem porque aprendeu muito bem os detalhes e o ruído dos dados. Um modelo underfit não é preciso, pois não consegue analisar precisamente seus dados de treinamento nem dados que ainda não viu. -![modelo superajustado](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/pt-BR/overfitting.1c132d92bfd93cb6.webp) > Infográfico por [Jen Looper](https://twitter.com/jenlooper) ## Ajuste de parâmetros -Depois de concluir o treinamento inicial, observe a qualidade do modelo e considere melhorá-lo ajustando seus 'hiperparâmetros'. Leia mais sobre o processo [na documentação](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Uma vez que seu treinamento inicial esteja completo, observe a qualidade do modelo e considere melhorá-lo ajustando seus 'hiperparâmetros'. Leia mais sobre o processo [na documentação](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Previsão -Este é o momento em que você pode usar dados completamente novos para testar a precisão do modelo. Em um cenário de ML 'aplicado', onde você está construindo ativos web para usar o modelo em produção, este processo pode envolver coletar entrada do usuário (um clique de botão, por exemplo) para definir uma variável e enviá-la ao modelo para inferência ou avaliação. +Este é o momento em que você pode usar dados completamente novos para testar a precisão do seu modelo. Em um ambiente de ML 'aplicado', onde você está construindo ativos web para usar o modelo em produção, esse processo pode envolver coletar entradas do usuário (um clique de botão, por exemplo) para definir uma variável e enviá-la ao modelo para inferência ou avaliação. -Nestes módulos, você descobrirá como usar essas etapas para preparar, construir, testar, avaliar e prever - todos os gestos de um cientista de dados e mais, enquanto avança em sua jornada para se tornar um engenheiro de ML 'full stack'. +Nessas lições, você descobrirá como usar essas etapas para preparar, construir, testar, avaliar e prever - todos os gestos de um cientista de dados e mais, à medida que avança na jornada para se tornar um engenheiro de ML 'full stack'. --- ## 🚀Desafio -Desenhe um fluxograma refletindo as etapas de um profissional de ML. Onde você se vê agora no processo? Onde você prevê que encontrará dificuldades? O que parece fácil para você? +Desenhe um fluxograma refletindo as etapas de um praticante de ML. Onde você se vê agora no processo? Onde você prevê encontrar dificuldade? O que parece fácil para você? ## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão e Autoestudo +## Revisão & Estudo Autônomo -Pesquise online entrevistas com cientistas de dados que discutem seu trabalho diário. Aqui está [uma](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Procure online por entrevistas com cientistas de dados que discutem seu trabalho diário. Aqui está [uma](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Tarefa @@ -119,5 +119,7 @@ Pesquise online entrevistas com cientistas de dados que discutem seu trabalho di --- + **Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se tradução profissional feita por humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. + \ No newline at end of file diff --git a/translations/pt-BR/2-Regression/3-Linear/README.md b/translations/pt-BR/2-Regression/3-Linear/README.md index e92004e028..78237fd828 100644 --- a/translations/pt-BR/2-Regression/3-Linear/README.md +++ b/translations/pt-BR/2-Regression/3-Linear/README.md @@ -1,64 +1,65 @@ -# Construir um modelo de regressão usando Scikit-learn: regressão de quatro formas +# Construindo um modelo de regressão usando Scikit-learn: regressão de quatro formas ## Nota para iniciantes -A regressão linear é usada quando queremos prever um **valor numérico** (por exemplo, preço de casa, temperatura ou vendas). Funciona encontrando uma linha reta que melhor representa a relação entre as variáveis de entrada e a saída. +A regressão linear é usada quando queremos prever um **valor numérico** (por exemplo, preço de casa, temperatura ou vendas). +Funciona encontrando uma linha reta que melhor representa a relação entre as características de entrada e o resultado. -Nesta lição, focamos em entender o conceito antes de explorar técnicas mais avançadas de regressão. -![Infográfico regressão linear vs polinomial](../../../../translated_images/pt-BR/linear-polynomial.5523c7cb6576ccab.webp) -> Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) +Nesta lição, focamos em entender o conceito antes de explorar técnicas de regressão mais avançadas. +![Infográfico de regressão linear vs polinomial](../../../../translated_images/pt-BR/linear-polynomial.5523c7cb6576ccab.webp) +> Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) -> ### [Esta lição está disponível em R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Esta lição está disponível em R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Introdução -Até agora, você explorou o que é regressão com dados de exemplo coletados do conjunto de dados de preços de abóboras que usaremos durante esta lição. Você também os visualizou usando Matplotlib. +Até agora, você explorou o que é regressão com dados de amostra coletados do conjunto de dados de preços de abóbora que usaremos durante esta lição. Você também o visualizou usando Matplotlib. -Agora você está pronto para se aprofundar em regressão para ML. Enquanto a visualização permite entender os dados, o verdadeiro poder do Machine Learning vem do _treinamento de modelos_. Modelos são treinados em dados históricos para capturar automaticamente dependências dos dados, permitindo prever resultados para novos dados, que o modelo ainda não viu. +Agora você está pronto para mergulhar mais fundo na regressão para ML. Enquanto a visualização permite que você compreenda os dados, o verdadeiro poder do Machine Learning vem do _treinamento de modelos_. Modelos são treinados com dados históricos para capturar automaticamente dependências dos dados e permitem que você preveja resultados para novos dados, que o modelo não viu antes. -Nesta lição, você aprenderá mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, junto com um pouco da matemática subjacente a essas técnicas. Esses modelos permitirão prever preços de abóboras dependendo de diferentes dados de entrada. +Nesta lição, você aprenderá mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com parte da matemática por trás dessas técnicas. Esses modelos nos permitirão prever preços de abóboras dependendo de diferentes dados de entrada. -[![ML para iniciantes - Entendendo Regressão Linear](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML para iniciantes - Entendendo Regressão Linear](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Entendendo Regressão Linear") -> 🎥 Clique na imagem acima para uma breve visão geral em vídeo da regressão linear. +> 🎥 Clique na imagem acima para um vídeo curto sobre regressão linear. -> Ao longo deste currículo, assumimos conhecimento mínimo de matemática, e buscamos torná-lo acessível para estudantes de outras áreas, portanto fique atento a notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizado para ajudar na compreensão. +> Ao longo deste currículo, assumimos conhecimento mínimo em matemática, buscando torná-lo acessível para estudantes de outras áreas, então fique atento a notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizado para ajudar na compreensão. ### Pré-requisito -Você já deve estar familiarizado com a estrutura dos dados de abóboras que estamos analisando. Eles estão pré-carregados e pré-limpos no arquivo _notebook.ipynb_ desta lição. No arquivo, o preço da abóbora é exibido por alqueire em um novo dataframe. Certifique-se de que consegue executar esses notebooks em kernels no Visual Studio Code. +Você deve estar familiarizado agora com a estrutura dos dados da abóbora que estamos examinando. Você pode encontrá-los pré-carregados e pré-limpos no arquivo _notebook.ipynb_ desta lição. No arquivo, o preço da abóbora é exibido por alqueire em um novo data frame. Certifique-se de que pode executar esses notebooks em kernels no Visual Studio Code. ### Preparação Como lembrete, você está carregando esses dados para poder fazer perguntas sobre eles. -- Quando é a melhor época para comprar abóboras? -- Qual preço posso esperar para uma caixa de abóboras miniatura? -- Devo comprá-las em cestas de meio alqueire ou por caixa de 1 1/9 alqueire? +- Quando é o melhor momento para comprar abóboras? +- Qual preço posso esperar de uma caixa de abóboras miniatura? +- Devo comprá-las em cestos de meio alqueire ou em caixas de 1 1/9 alqueire? Vamos continuar investigando esses dados. -Na lição anterior, você criou um dataframe Pandas e o preencheu com parte do conjunto de dados original, padronizando os preços por alqueire. Fazendo isso, porém, você conseguiu apenas cerca de 400 pontos de dados e somente dos meses de outono. +Na lição anterior, você criou um data frame do Pandas e o populou com parte do conjunto de dados original, padronizando o preço por alqueire. Ao fazer isso, porém, você conseguiu apenas cerca de 400 pontos de dados e apenas para os meses de outono. -Veja os dados que pré-carregamos no notebook que acompanha esta lição. Os dados estão pré-carregados e um gráfico de dispersão inicial foi criado para mostrar os dados por mês. Talvez possamos obter mais detalhes sobre a natureza dos dados limpando-os melhor. +Dê uma olhada nos dados que pré-carregamos no notebook que acompanha esta lição. Os dados estão pré-carregados e foi plotado um gráfico de dispersão inicial para mostrar os dados de mês. Talvez possamos obter um pouco mais de detalhe sobre a natureza dos dados limpando-os mais. ## Uma linha de regressão linear -Como você aprendeu na Lição 1, o objetivo de um exercício de regressão linear é ser capaz de traçar uma linha para: +Como você aprendeu na Lição 1, o objetivo de um exercício de regressão linear é poder traçar uma linha para: -- **Mostrar relações entre variáveis**. Mostrar a relação entre variáveis +- **Mostrar relações entre variáveis**. Mostrar a relação entre as variáveis - **Fazer previsões**. Fazer previsões precisas de onde um novo ponto de dados cairia em relação a essa linha. -É típico da **Regressão dos Mínimos Quadrados** traçar esse tipo de linha. O termo "Mínimos Quadrados" refere-se ao processo de minimizar o erro total em nosso modelo. Para cada ponto de dados, medimos a distância vertical (chamada resíduo) entre o ponto real e nossa linha de regressão. +É típico em **Regressão de Mínimos Quadrados** desenhar esse tipo de linha. O termo "Mínimos Quadrados" se refere ao processo de minimizar o erro total em nosso modelo. Para cada ponto de dados, medimos a distância vertical (chamada resíduo) entre o ponto real e nossa linha de regressão. -Elevamos essas distâncias ao quadrado por duas razões principais: +Elevamos essas distâncias ao quadrado por dois motivos principais: -1. **Magnitude sobre Direção:** Queremos tratar o erro de -5 da mesma forma que o erro de +5. Elevar ao quadrado torna todos os valores positivos. +1. **Magnitude sobre Direção:** Queremos tratar um erro de -5 igual a um erro de +5. Ao elevar ao quadrado, todos os valores ficam positivos. -2. **Penalizar Outliers:** Elevar ao quadrado dá mais peso a erros maiores, fazendo a linha ficar mais próxima dos pontos que estão distantes. +2. **Penalizando Outliers:** Elevar ao quadrado dá mais peso aos erros maiores, forçando a linha a ficar mais próxima dos pontos que estão distantes. -Depois somamos todos esses valores ao quadrado. Nosso objetivo é encontrar a linha específica onde essa soma final seja a menor possível—daí o nome "Mínimos Quadrados". +Então somamos todos esses valores ao quadrado. Nosso objetivo é encontrar a linha específica onde essa soma final seja a menor possível — daí o nome "Mínimos Quadrados". -> **🧮 Mostre a matemática** +> **🧮 Mostre-me a matemática** > > Essa linha, chamada _linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression): > @@ -66,61 +67,61 @@ Depois somamos todos esses valores ao quadrado. Nosso objetivo é encontrar a li > Y = a + bX > ``` > -> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. A inclinação da linha é `b` e `a` é o intercepto em y, que se refere ao valor de `Y` quando `X = 0`. +> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. A inclinação da linha é `b` e `a` é o intercepto y, que se refere ao valor de `Y` quando `X = 0`. > >![calcular a inclinação](../../../../translated_images/pt-BR/slope.f3c9d5910ddbfcf9.webp) > > Primeiro, calcule a inclinação `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper) > -> Em outras palavras, e referindo-se à nossa questão original dos dados de abóbora: "prever o preço de uma abóbora por alqueire por mês", `X` se referiria ao preço e `Y` seria o mês da venda. +> Em outras palavras, e referindo à pergunta original dos nossos dados de abóbora: "prever o preço de uma abóbora por alqueire segundo o mês", `X` se referiria ao mês e `Y` se referiria ao preço de venda. > ->![complete a equação](../../../../translated_images/pt-BR/calculation.a209813050a1ddb1.webp) +>![completar a equação](../../../../translated_images/pt-BR/calculation.a209813050a1ddb1.webp) > -> Calcule o valor de Y. Se você está pagando em torno de $4, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper) +> Calcule o valor de Y. Se você está pagando cerca de $4, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper) > -> A matemática que calcula a linha deve demonstrar a inclinação da linha, que também depende do intercepto, ou onde `Y` está situado quando `X = 0`. +> A matemática que calcula a linha deve demonstrar a inclinação da linha, que também depende do intercepto, ou onde `Y` se situa quando `X = 0`. > -> Você pode observar o método de cálculo destes valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Também visite [este calculador de Mínimos Quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores dos números impactam a linha. +> Você pode observar o método de cálculo desses valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Também visite [calculadora de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores dos números impactam a linha. ## Correlação -Mais um termo para entender é o **Coeficiente de Correlação** entre as variáveis X e Y dadas. Usando um gráfico de dispersão, você pode visualizar rapidamente esse coeficiente. Um gráfico com pontos de dados alinhados em uma linha nítida tem alta correlação, mas um gráfico com pontos dispersos entre X e Y tem baixa correlação. +Mais um termo para entender é o **Coeficiente de Correlação** entre as variáveis X e Y dadas. Usando um gráfico de dispersão, você pode visualizar rapidamente esse coeficiente. Um gráfico com pontos de dados alinhados em uma linha limpa tem alta correlação, mas um gráfico com pontos dispersos por toda parte tem baixa correlação. -Um bom modelo de regressão linear terá um Coeficiente de Correlação alto (próximo de 1 e não de 0) usando o método de Regressão dos Mínimos Quadrados com uma linha de regressão. +Um bom modelo de regressão linear será aquele que tem um alto Coeficiente de Correlação (mais próximo de 1 do que de 0) usando o método de Regressão de Mínimos Quadrados com uma linha de regressão. -✅ Execute o notebook que acompanha esta lição e olhe o gráfico de dispersão de Mês para Preço. Os dados associando Mês ao Preço nas vendas de abóbora parecem ter alta ou baixa correlação, de acordo com sua interpretação visual do gráfico? Isso muda se você usar uma medida mais detalhada em vez de `Month`, por exemplo, *dia do ano* (ou seja, número de dias desde o começo do ano)? +✅ Execute o notebook que acompanha esta lição e observe o gráfico de dispersão Mês versus Preço. Os dados associando Mês a Preço para vendas de abóboras parecem ter alta ou baixa correlação, segundo sua interpretação visual do gráfico de dispersão? Isso muda se você usar uma medida mais detalhada em vez de `Mês`, por exemplo, *dia do ano* (ou seja, número de dias desde o início do ano)? -No código abaixo, assumiremos que limpamos os dados e obtivemos um dataframe chamado `new_pumpkins`, semelhante ao seguinte: +No código abaixo, assumiremos que limpamos os dados e obtivemos um data frame chamado `new_pumpkins`, semelhante ao seguinte: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +ID | Mês | DiaDoAno | Variedade | Cidade | Embalagem | Preço Baixo | Preço Alto | Preço ---|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +70 | 9 | 267 | TIPO TORTA | BALTIMORE | Caixas de 1 1/9 alqueire | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | TIPO TORTA | BALTIMORE | Caixas de 1 1/9 alqueire | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | TIPO TORTA | BALTIMORE | Caixas de 1 1/9 alqueire | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | TIPO TORTA | BALTIMORE | Caixas de 1 1/9 alqueire | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | TIPO TORTA | BALTIMORE | Caixas de 1 1/9 alqueire | 15.0 | 15.0 | 13.636364 -> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Realizamos as mesmas etapas de limpeza da lição anterior e calculamos a coluna `DayOfYear` usando a expressão a seguir: +> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Realizamos os mesmos passos de limpeza da lição anterior e calculamos a coluna `DayOfYear` usando a seguinte expressão: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +Agora que você entende a matemática por trás da regressão linear, vamos criar um modelo de Regressão para ver se podemos prever qual embalagem de abóboras terá os melhores preços. Alguém comprando abóboras para um campo de abóboras de feriado pode querer essa informação para otimizar suas compras. -Agora que você entendeu a matemática por trás da regressão linear, vamos criar um modelo de regressão para ver se podemos prever qual embalagem de abóboras terá os melhores preços. Alguém comprando abóboras para um patch de abóboras de feriado pode querer essa informação para otimizar suas compras dos pacotes. - -## Procurando correlação +## Buscando correlação -[![ML para iniciantes - Procurando correlação: a chave para regressão linear](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurando correlação: a chave para regressão linear") +[![ML para iniciantes - Buscando Correlação: A Chave para Regressão Linear](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Buscando Correlação: A Chave para Regressão Linear") -> 🎥 Clique na imagem acima para uma breve visão geral em vídeo sobre correlação. +> 🎥 Clique na imagem acima para um vídeo curto sobre correlação. -Da lição anterior, você provavelmente viu que o preço médio para diferentes meses parece assim: +Na lição anterior, você provavelmente viu que o preço médio para diferentes meses parece assim: Preço médio por mês -Isso sugere que deve haver alguma correlação, e podemos tentar treinar um modelo de regressão linear para prever a relação entre `Month` e `Price`, ou entre `DayOfYear` e `Price`. Aqui está o gráfico de dispersão que mostra a última relação: +Isso sugere que deve haver alguma correlação, e podemos tentar treinar um modelo de regressão linear para prever a relação entre `Mês` e `Preço`, ou entre `DiaDoAno` e `Preço`. Aqui está o gráfico de dispersão que mostra a segunda relação: -Gráfico de dispersão de preço vs dia do ano +Gráfico de dispersão de Preço vs. Dia do Ano Vamos ver se há correlação usando a função `corr`: @@ -128,8 +129,8 @@ Vamos ver se há correlação usando a função `corr`: print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Parece que a correlação é pequena, -0,15 pelo `Month` e -0,17 pelo `DayOfMonth`, mas pode haver outra relação importante. Parece que existem diferentes clusters de preços correspondentes a diferentes variedades de abóboras. Para confirmar essa hipótese, vamos plotar cada categoria de abóbora usando uma cor diferente. Passando um parâmetro `ax` para a função `scatter`, podemos plotar todos os pontos no mesmo gráfico: + +Parece que a correlação é bem pequena, -0.15 pelo `Mês` e -0.17 pelo `DiaDoAno`, mas pode haver outra relação importante. Parece que há diferentes grupos de preços correspondendo a diferentes variedades de abóbora. Para confirmar essa hipótese, vamos plotar cada categoria de abóbora com uma cor diferente. Passando um parâmetro `ax` para a função de plotagem `scatter`, podemos plotar todos os pontos no mesmo gráfico: ```python ax=None @@ -138,42 +139,41 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Gráfico de dispersão de Preço vs. Dia do Ano -Gráfico de dispersão de preço vs dia do ano colorido - -Nossa investigação sugere que a variedade tem mais efeito no preço geral que a data real de venda. Podemos ver isso com um gráfico de barras: +Nossa investigação sugere que a variedade tem mais efeito no preço geral do que a própria data de venda. Podemos ver isso em um gráfico de barras: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Gráfico de barras de preço por variedade -Gráfico de barras preço vs variedade - -Vamos focar momentaneamente apenas em uma variedade de abóbora, o 'tipo torta', e ver qual efeito a data tem no preço: +Vamos focar por enquanto em apenas uma variedade de abóbora, o 'tipo torta', e ver qual efeito a data tem no preço: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` - -Gráfico de dispersão de preço vs dia do ano para abóboras tipo torta +Gráfico de dispersão de Preço vs. Dia do Ano -Se agora calcularmos a correlação entre `Price` e `DayOfYear` usando a função `corr`, obteremos algo como `-0.27` — o que significa que treinar um modelo preditivo faz sentido. +Se agora calcularmos a correlação entre `Preço` e `DiaDoAno` usando a função `corr`, obteremos algo como `-0.27` - o que significa que faz sentido treinar um modelo preditivo. -> Antes de treinar um modelo de regressão linear, é importante garantir que nossos dados estejam limpos. Regressão linear não funciona bem com valores faltantes, portanto faz sentido eliminar todas as células vazias: +> Antes de treinar um modelo de regressão linear, é importante garantir que nossos dados estejam limpos. A regressão linear não funciona bem com valores ausentes, por isso faz sentido eliminar todas as células vazias: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - + Outra abordagem seria preencher esses valores vazios com a média da coluna correspondente. ## Regressão Linear Simples [![ML para iniciantes - Regressão Linear e Polinomial usando Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML para iniciantes - Regressão Linear e Polinomial usando Scikit-learn") -> 🎥 Clique na imagem acima para uma breve visão geral em vídeo da regressão linear e polinomial. +> 🎥 Clique na imagem acima para um vídeo curto sobre regressão linear e polinomial. Para treinar nosso modelo de Regressão Linear, usaremos a biblioteca **Scikit-learn**. @@ -182,32 +182,32 @@ from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Começamos separando os valores de entrada (recursos) e a saída esperada (rótulo) em arrays numpy separados: + +Começamos separando os valores de entrada (features) e a saída esperada (rótulo) em arrays numpy separados: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Note que tivemos que realizar `reshape` nos dados de entrada para que o pacote Linear Regression os entendesse corretamente. A Regressão Linear espera uma matriz 2D como entrada, onde cada linha da matriz corresponde a um vetor de características de entrada. No nosso caso, já que temos apenas uma entrada, precisamos de uma matriz com formato N×1, onde N é o tamanho do conjunto de dados. -> Note que tivemos que realizar o `reshape` nos dados de entrada para que o pacote de Regressão Linear os entenda corretamente. Regressão Linear espera uma matriz 2D como entrada, onde cada linha da matriz corresponde a um vetor de recursos de entrada. No nosso caso, já que temos apenas uma entrada, precisamos de uma matriz com formato N×1, onde N é o tamanho do conjunto de dados. - -Depois, precisamos dividir os dados em conjuntos de treino e teste para que possamos validar nosso modelo após o treinamento: +Depois, precisamos dividir os dados em datasets de treino e teste, para que possamos validar nosso modelo após o treinamento: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Finalmente, o treinamento do modelo de Regressão Linear real leva apenas duas linhas de código. Definimos o objeto `LinearRegression`, e ajustamos ele aos nossos dados usando o método `fit`: + +Finalmente, o treinamento do modelo de Regressão Linear em si leva apenas duas linhas de código. Definimos o objeto `LinearRegression` e o ajustamos aos nossos dados usando o método `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` + +O objeto `LinearRegression` após o `fit` contém todos os coeficientes da regressão, que podem ser acessados usando a propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deve estar em torno de `-0.017`. Isso significa que os preços parecem cair um pouco com o tempo, mas não muito, cerca de 2 centavos por dia. Também podemos acessar o ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` — será cerca de `21` no nosso caso, indicando o preço no início do ano. -O objeto `LinearRegression` após o ajuste (`fit`) contém todos os coeficientes da regressão, que podem ser acessados usando a propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deve estar em torno de `-0.017`. Isso significa que os preços parecem cair um pouco com o tempo, mas não muito, cerca de 2 centavos por dia. Também podemos acessar o ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` - será cerca de `21` no nosso caso, indicando o preço no início do ano. - -Para ver quão preciso nosso modelo é, podemos prever preços em um conjunto de dados de teste e então medir quão próximas estão nossas previsões dos valores esperados. Isso pode ser feito usando a métrica de erro quadrático médio da raiz (RMSE), que é a raiz da média de todas as diferenças ao quadrado entre o valor esperado e o previsto. +Para ver quão preciso nosso modelo é, podemos prever preços em um conjunto de dados de teste e depois medir quão próximas estão nossas previsões dos valores esperados. Isso pode ser feito usando a métrica raiz do erro quadrático médio (RMSE), que é a raiz da média de todas as diferenças quadráticas entre o valor esperado e o previsto. ```python pred = lin_reg.predict(X_test) @@ -216,13 +216,13 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Nosso erro parece estar em torno de 2 pontos, o que é ~17%. Não muito bom. Outro indicador de qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim: +Nosso erro parece ser em torno de 2 pontos, o que é ~17%. Não muito bom. Outro indicador da qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Se o valor for 0, isto significa que o modelo não leva em conta os dados de entrada, e atua como o *pior preditor linear*, que é simplesmente um valor médio do resultado. O valor 1 significa que podemos prever perfeitamente todas as saídas esperadas. No nosso caso, o coeficiente está em torno de 0.06, o que é bem baixo. + Se o valor for 0, significa que o modelo não leva os dados de entrada em conta e atua como o *pior preditor linear*, que é simplesmente um valor médio do resultado. O valor 1 significa que podemos prever perfeitamente todas as saídas esperadas. No nosso caso, o coeficiente está em torno de 0,06, que é bastante baixo. Também podemos plotar os dados de teste junto com a linha de regressão para ver melhor como a regressão funciona no nosso caso: @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Regressão Polinomial -Outro tipo de Regressão Linear é a Regressão Polinomial. Embora às vezes haja uma relação linear entre variáveis - quanto maior a abóbora em volume, maior o preço - às vezes essas relações não podem ser plotadas como um plano ou linha reta. +Outro tipo de Regressão Linear é a Regressão Polinomial. Embora às vezes haja uma relação linear entre variáveis — quanto maior a abóbora em volume, maior o preço — às vezes essas relações não podem ser plotadas como um plano ou linha reta. ✅ Aqui estão [mais alguns exemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que poderiam usar Regressão Polinomial -Observe novamente a relação entre Data e Preço. Este gráfico de dispersão parece que deveria necessariamente ser analisado por uma linha reta? Os preços não podem flutuar? Nesse caso, você pode tentar a regressão polinomial. +Dê outra olhada na relação entre Data e Preço. Este diagrama de dispersão parece que deve necessariamente ser analisado por uma linha reta? Os preços não podem oscilar? Neste caso, você pode tentar regressão polinomial. -✅ Polinômios são expressões matemáticas que podem consistir de uma ou mais variáveis e coeficientes +✅ Polinômios são expressões matemáticas que podem consistir em uma ou mais variáveis e coeficientes. -A regressão polinomial cria uma linha curva para ajustar melhor dados não lineares. No nosso caso, se incluirmos a variável ao quadrado `DayOfYear` nos dados de entrada, deveremos ser capazes de ajustar nossos dados com uma curva parabólica, que terá um mínimo em um certo ponto ao longo do ano. +A regressão polinomial cria uma linha curva para se ajustar melhor a dados não lineares. No nosso caso, se incluirmos uma variável `DayOfYear` ao quadrado nos dados de entrada, devemos ser capazes de ajustar nossos dados com uma curva parabólica, que terá um mínimo em um certo ponto dentro do ano. -O Scikit-learn inclui uma útil [API de pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes etapas do processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, criaremos um pipeline que primeiro adiciona características polinomiais ao nosso modelo, e então treina a regressão: +O Scikit-learn inclui uma API de [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) útil para combinar diferentes etapas de processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, criaremos um pipeline que primeiro adiciona características polinomiais ao nosso modelo e depois treina a regressão: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,23 +256,45 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Usar `PolynomialFeatures(2)` significa que vamos incluir todos os polinômios de segundo grau a partir dos dados de entrada. No nosso caso, isso significará apenas `DayOfYear`2, mas dado duas variáveis de entrada X e Y, isso adicionará X2, XY e Y2. Podemos também usar polinômios de grau maior, se quisermos. +Usar `PolynomialFeatures(2)` significa que incluiremos todos os polinômios de segundo grau dos dados de entrada. No nosso caso, isso significará apenas `DayOfYear`2, mas dado duas variáveis de entrada X e Y, isso adicionará X2, XY e Y2. Também podemos usar polinômios de grau mais alto, se quisermos. + +Pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos `fit` o pipeline e depois usar `predict` para obter os resultados da predição: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Para plotar a curva aproximada suave, usamos `np.linspace` para criar um intervalo uniforme de valores de entrada, em vez de plotar diretamente nos dados de teste não ordenados (o que produziria uma linha em zigue-zague): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos `fit`ar o pipeline, e então usar `predict` para obter os resultados da predição. Aqui está o gráfico mostrando os dados de teste, e a curva de aproximação: +Aqui está o gráfico mostrando os dados de teste e a curva aproximada: Polynomial regression -Usando Regressão Polinomial, podemos obter erros quadráticos médios ligeiramente menores e coeficientes de determinação maiores, mas não significativamente. Precisamos levar em conta outras características! +Usando Regressão Polinomial, podemos obter um RMSE ligeiramente menor e uma determinação maior, mas não significativamente. Precisamos levar em conta outras características! -> Você pode ver que os preços mínimos das abóboras são observados em algum momento próximo ao Halloween. Como você pode explicar isso? +> Você pode ver que os preços mínimos de abóboras são observados em algum momento próximo ao Halloween. Como você pode explicar isso? -🎃 Parabéns, você acaba de criar um modelo que pode ajudar a prever o preço de abóboras para torta. Você provavelmente pode repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria trabalhoso. Vamos aprender agora como levar em conta a variedade de abóbora em nosso modelo! +🎃 Parabéns, você acabou de criar um modelo que pode ajudar a prever o preço de abóboras para torta. Você provavelmente pode repetir o mesmo procedimento para todos os tipos de abóboras, mas isso seria tedioso. Vamos aprender agora como levar a variedade da abóbora em conta no nosso modelo! ## Características Categóricas -No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóbora usando o mesmo modelo. No entanto, a coluna `Variety` é um pouco diferente de colunas como `Month`, pois contém valores não numéricos. Essas colunas são chamadas de **categóricas**. +No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóboras usando o mesmo modelo. No entanto, a coluna `Variety` é um pouco diferente de colunas como `Month`, pois contém valores não numéricos. Essas colunas são chamadas de **categóricas**. -[![ML para iniciantes - Predições de Características Categóricas com Regressão Linear](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML para iniciantes - Predições de Características Categóricas com Regressão Linear") +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") > 🎥 Clique na imagem acima para um breve vídeo sobre o uso de características categóricas. @@ -280,12 +302,12 @@ Aqui você pode ver como o preço médio depende da variedade: Average price by variety -Para levar a variedade em conta, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Há várias formas para isso: +Para levar a variedade em conta, primeiro precisamos convertê-la para uma forma numérica, ou **codificá-la**. Existem várias maneiras de fazer isso: -* A simples **codificação numérica** constrói uma tabela das diferentes variedades, e depois substitui o nome da variedade por um índice nessa tabela. Isso não é a melhor ideia para regressão linear, porque a regressão linear pega o valor numérico real do índice, e o adiciona ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo que asseguremos que os índices estejam ordenados de alguma maneira específica. -* O **one-hot encoding** substituirá a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna conterá `1` se a linha correspondente for de uma determinada variedade, e `0` caso contrário. Isso significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsável pelo "preço inicial" (ou melhor, "preço adicional") para aquela variedade específica. +* Uma simples **codificação numérica** irá construir uma tabela das diferentes variedades e depois substituir o nome da variedade por um índice nessa tabela. Isso não é uma boa ideia para regressão linear, porque a regressão linear usa o valor numérico real do índice e o adiciona ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo que ordenemos os índices de alguma forma específica. +* **One-hot encoding** substituirá a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna conterá `1` se a linha correspondente for daquela variedade, e `0` caso contrário. Isso significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsável pelo "preço inicial" (ou melhor, "preço adicional") para aquela variedade em particular. -O código abaixo mostra como podemos fazer o one-hot encoding da variedade: +O código abaixo mostra como podemos fazer one-hot encoding para uma variedade: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Para treinar a regressão linear usando a variedade codificada por one-hot encoding como entrada, só precisamos inicializar corretamente os dados `X` e `y`: +Para treinar regressão linear usando a variedade codificada por one-hot como entrada, só precisamos inicializar os dados `X` e `y` corretamente: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -O resto do código é o mesmo que usamos acima para treinar a Regressão Linear. Se você tentar, verá que o erro quadrático médio fica mais ou menos o mesmo, mas obtemos um coeficiente de determinação muito maior (~77%). Para obter previsões ainda mais precisas, podemos levar mais características categóricas em conta, bem como características numéricas, como `Month` ou `DayOfYear`. Para obter uma grande matriz de características, podemos usar `join`: +O resto do código é o mesmo que usamos acima para treinar a Regressão Linear. Se você tentar, verá que o erro médio quadrático é aproximadamente o mesmo, mas obtemos um coeficiente de determinação muito maior (~77%). Para obter previsões ainda mais precisas, podemos levar em conta mais características categóricas, bem como características numéricas, como `Month` ou `DayOfYear`. Para obter um grande array de características, podemos usar `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Aqui também levamos em conta `City` e tipo de `Package`, o que nos dá MSE 2.84 (10%), e determinação 0.94! +Aqui também levamos em conta `City` e `Package`, o que nos dá RMSE 2,84 (10,5%) e determinação 0,94! -## Combinando tudo +## Colocando tudo junto -Para fazer o melhor modelo, podemos usar dados combinados (categóricos codificados one-hot + numéricos) do exemplo acima junto com a Regressão Polinomial. Aqui está o código completo para sua conveniência: +Para fazer o melhor modelo, podemos usar dados combinados (categóricos codificados por one-hot + numéricos) do exemplo acima junto com Regressão Polinomial. Aqui está o código completo para sua conveniência: ```python # configurar dados de treinamento @@ -333,44 +355,44 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# fazer divisão treino-teste +# fazer divisão de treino-teste X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # configurar e treinar o pipeline pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# prever resultados para os dados de teste +# prever resultados para dados de teste pred = pipeline.predict(X_test) -# calcular MSE e determinação -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calcular RMSE e coeficiente de determinação +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Isso deve nos dar o melhor coeficiente de determinação de quase 97%, e MSE=2.23 (~8% de erro de previsão). +Isso deve nos dar o melhor coeficiente de determinação de quase 97%, e RMSE=2,23 (~8% de erro de previsão). -| Modelo | MSE | Determinação | +| Modelo | RMSE | Determinação | |-------|-----|---------------| -| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polinomial | 2.73 (17.0%) | 0.08 | -| `Variety` Linear | 5.24 (19.7%) | 0.77 | -| Todas as características Linear | 2.84 (10.5%) | 0.94 | -| Todas as características Polinomial | 2.23 (8.25%) | 0.97 | +| Linear `DayOfYear` | 2,77 (17,2%) | 0,07 | +| Polinomial `DayOfYear` | 2,73 (17,0%) | 0,08 | +| Linear `Variety` | 5,24 (19,7%) | 0,77 | +| Linear com todas características | 2,84 (10,5%) | 0,94 | +| Polinomial com todas características | 2,23 (8,25%) | 0,97 | -🏆 Muito bem! Você criou quatro modelos de regressão em uma lição, e melhorou a qualidade do modelo para 97%. Na seção final sobre Regressão, você aprenderá sobre Regressão Logística para determinar categorias. +🏆 Muito bem! Você criou quatro modelos de regressão em uma lição e melhorou a qualidade do modelo para 97%. Na seção final sobre Regressão, você aprenderá sobre Regressão Logística para determinar categorias. --- ## 🚀Desafio Teste várias variáveis diferentes neste notebook para ver como a correlação corresponde à precisão do modelo. -## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão & Estudo Autônomo +## Revisão & Autoestudo Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para estudar e aprender mais é o [curso de Aprendizado Estatístico de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) @@ -382,5 +404,5 @@ Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos important **Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos empenhemos pela precisão, por favor, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. +Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, por favor, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt-BR/2-Regression/3-Linear/solution/notebook.ipynb b/translations/pt-BR/2-Regression/3-Linear/solution/notebook.ipynb index 61755c0b02..368616aa05 100644 --- a/translations/pt-BR/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/pt-BR/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## Regressão Linear e Polinomial para Precificação de Abóboras - Aula 3\n", "\n", - "Carregue as bibliotecas necessárias e o conjunto de dados. Converta os dados para um dataframe contendo um subconjunto dos dados:\n", + "Carregue as bibliotecas e o conjunto de dados necessários. Converta os dados para um dataframe contendo um subconjunto dos dados:\n", "\n", - "- Considere apenas abóboras com preços definidos por alqueire\n", - "- Converta a data para o formato de mês\n", - "- Calcule o preço como uma média entre os preços mais altos e mais baixos\n", - "- Converta o preço para refletir a precificação pela quantidade em alqueires\n" + "- Obtenha apenas abóboras precificadas por alqueire\n", + "- Converta a data para um mês\n", + "- Calcule o preço como uma média dos preços máximo e mínimo\n", + "- Converta o preço para refletir a precificação por quantidade de alqueire\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Um gráfico de dispersão nos lembra que temos dados mensais apenas de agosto a dezembro. Provavelmente precisamos de mais dados para poder tirar conclusões de forma linear.\n" + "Um gráfico de dispersão nos lembra que só temos dados mensais de agosto a dezembro. Provavelmente precisamos de mais dados para poder tirar conclusões de forma linear.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Vamos ver se há correlação:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Parece que a correlação é bem pequena, mas há alguma outra relação mais importante - porque os pontos de preço no gráfico acima parecem ter vários clusters distintos. Vamos fazer um gráfico que mostrará diferentes variedades de abóbora:\n" + "Parece que a correlação é bem pequena, mas existe alguma outra relação mais importante - porque os pontos de preço no gráfico acima parecem ter vários agrupamentos distintos. Vamos fazer um gráfico que mostrará diferentes variedades de abóbora:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Por enquanto, vamos nos concentrar apenas em uma variedade - **tipo de torta**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Regressão Linear\n", "\n", - "Usaremos o Scikit Learn para treinar um modelo de regressão linear:\n" + "Usaremos o Scikit Learn para treinar o modelo de regressão linear:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A inclinação da linha pode ser determinada a partir dos coeficientes de regressão linear:\n" + "A inclinação da linha pode ser determinada a partir dos coeficientes da regressão linear:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Podemos usar o modelo treinado para prever o preço:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Regressão Polinomial\n", "\n", - "Às vezes, a relação entre as características e os resultados é inerentemente não linear. Por exemplo, os preços de abóboras podem ser altos no inverno (meses=1,2), depois caírem no verão (meses=5-7) e subirem novamente. A regressão linear não consegue capturar essa relação com precisão.\n", + "Às vezes, a relação entre as características e os resultados é inerentemente não linear. Por exemplo, os preços da abóbora podem ser altos no inverno (meses=1,2), depois cair no verão (meses=5-7) e então subir novamente. A regressão linear não consegue encontrar essa relação com precisão.\n", "\n", - "Nesse caso, podemos considerar adicionar características extras. Uma maneira simples é usar polinômios das características de entrada, o que resultaria em **regressão polinomial**. No Scikit Learn, podemos pré-computar automaticamente características polinomiais usando pipelines:\n" + "Nesse caso, podemos considerar adicionar características extras. Uma forma simples é usar polinômios das características de entrada, o que resultaria em **regressão polinomial**. No Scikit Learn, podemos pré-calcular automaticamente as características polinomiais usando pipelines: \n" ] }, { @@ -775,20 +781,23 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Codificando variedades\n", + "### Variedades de codificação\n", "\n", - "No mundo ideal, queremos ser capazes de prever os preços de diferentes variedades de abóbora usando o mesmo modelo. Para levar a variedade em consideração, primeiro precisamos convertê-la para uma forma numérica, ou seja, **codificar**. Existem várias maneiras de fazer isso:\n", + "No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóbora usando o mesmo modelo. Para levar a variedade em conta, primeiro precisamos convertê-la para forma numérica, ou **codificar**. Há várias maneiras de fazer isso:\n", "\n", - "* Codificação numérica simples, que cria uma tabela com as diferentes variedades e, em seguida, substitui o nome da variedade por um índice nessa tabela. Essa não é a melhor ideia para regressão linear, porque a regressão linear considera o valor numérico do índice, e esse valor numérico provavelmente não terá uma correlação direta com o preço.\n", - "* Codificação one-hot, que substitui a coluna `Variety` por 4 colunas diferentes, uma para cada variedade, que conterão 1 se a linha correspondente for da variedade em questão, e 0 caso contrário.\n", + "* Codificação numérica simples que construirá uma tabela das diferentes variedades, e então substituirá o nome da variedade por um índice nessa tabela. Esta não é a melhor ideia para regressão linear, pois a regressão linear considera o valor numérico do índice, e esse valor numérico provavelmente não se correlaciona numericamente com o preço.\n", + "* Codificação one-hot, que substituirá a coluna `Variety` por 4 colunas diferentes, uma para cada variedade, que conterá 1 se a linha correspondente for da variedade dada, e 0 caso contrário.\n", "\n", "O código abaixo mostra como podemos realizar a codificação one-hot de uma variedade:\n" ] @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regressão Linear em Variedade\n", + "### Regressão Linear na Variedade\n", "\n", - "Agora usaremos o mesmo código mencionado acima, mas, em vez de `DayOfYear`, utilizaremos nossa variedade codificada em one-hot como entrada:\n" + "Agora usaremos o mesmo código acima, mas em vez de `DayOfYear` usaremos nossa variedade codificada em one-hot como entrada:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Podemos também tentar usar outras características da mesma maneira e combiná-las com características numéricas, como `Month` ou `DayOfYear`:\n" + "Também podemos tentar usar outras características da mesma maneira e combiná-las com características numéricas, como `Month` ou `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Regressão Polinomial\n", "\n", - "A regressão polinomial também pode ser usada com características categóricas que foram codificadas em one-hot. O código para treinar a regressão polinomial seria essencialmente o mesmo que vimos acima.\n" + "A regressão polinomial também pode ser usada com características categóricas que são codificadas em one-hot. O código para treinar a regressão polinomial seria essencialmente o mesmo que vimos acima.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.\n" + "---\n\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T22:47:23+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "br" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pt-PT/.co-op-translator.json b/translations/pt-PT/.co-op-translator.json index 2d05a914d5..ff078c45cf 100644 --- a/translations/pt-PT/.co-op-translator.json +++ b/translations/pt-PT/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "pt-PT" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T08:44:28+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:41:00+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "pt-PT" }, @@ -90,8 +90,8 @@ "language_code": "pt-PT" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:58:00+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:40:33+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "pt-PT" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "pt-PT" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:37:20+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "pt-PT" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T08:37:08+00:00", diff --git a/translations/pt-PT/1-Introduction/4-techniques-of-ML/README.md b/translations/pt-PT/1-Introduction/4-techniques-of-ML/README.md index 37c1ec1897..07cd073651 100644 --- a/translations/pt-PT/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/pt-PT/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # Técnicas de Aprendizagem Automática -O processo de construir, utilizar e manter modelos de aprendizagem automática e os dados que eles utilizam é muito diferente de muitos outros fluxos de trabalho de desenvolvimento. Nesta lição, vamos desmistificar o processo e delinear as principais técnicas que precisa conhecer. Você irá: +O processo de construir, usar e manter modelos de aprendizagem automática e os dados que utilizam é um processo muito diferente de muitos outros fluxos de trabalho de desenvolvimento. Nesta lição, vamos desmistificar o processo e delinear as principais técnicas que precisa de conhecer. Você irá: - Compreender os processos que sustentam a aprendizagem automática a um nível elevado. -- Explorar conceitos básicos como 'modelos', 'previsões' e 'dados de treino'. +- Explorar conceitos base como 'modelos', 'previsões' e 'dados de treino'. ## [Questionário pré-aula](https://ff-quizzes.netlify.app/en/ml/) -[![ML para iniciantes - Técnicas de Aprendizagem Automática](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML para iniciantes - Técnicas de Aprendizagem Automática") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Clique na imagem acima para assistir a um vídeo curto sobre esta lição. +> 🎥 Clique na imagem acima para um vídeo curto que percorre esta lição. ## Introdução -De forma geral, o processo de criação de processos de aprendizagem automática (ML) é composto por várias etapas: +A um nível elevado, a arte de criar processos de aprendizagem automática (ML) é composta por vários passos: -1. **Definir a pergunta**. A maioria dos processos de ML começa com uma pergunta que não pode ser respondida por um programa condicional simples ou um motor baseado em regras. Estas perguntas geralmente giram em torno de previsões baseadas numa coleção de dados. -2. **Recolher e preparar os dados**. Para responder à sua pergunta, precisa de dados. A qualidade e, por vezes, a quantidade dos seus dados determinarão o quão bem pode responder à pergunta inicial. Visualizar os dados é um aspeto importante desta fase. Esta fase também inclui dividir os dados em grupos de treino e teste para construir um modelo. -3. **Escolher um método de treino**. Dependendo da sua pergunta e da natureza dos seus dados, precisa de escolher como deseja treinar um modelo para refletir melhor os seus dados e fazer previsões precisas. Esta é a parte do processo de ML que requer conhecimentos específicos e, muitas vezes, uma quantidade considerável de experimentação. -4. **Treinar o modelo**. Usando os seus dados de treino, utilizará vários algoritmos para treinar um modelo que reconheça padrões nos dados. O modelo pode usar pesos internos que podem ser ajustados para privilegiar certas partes dos dados em detrimento de outras, a fim de construir um modelo melhor. -5. **Avaliar o modelo**. Utiliza dados nunca antes vistos (os seus dados de teste) do conjunto recolhido para verificar o desempenho do modelo. -6. **Ajustar parâmetros**. Com base no desempenho do modelo, pode refazer o processo utilizando diferentes parâmetros ou variáveis que controlam o comportamento dos algoritmos usados para treinar o modelo. -7. **Prever**. Use novos dados de entrada para testar a precisão do modelo. +1. **Decidir a questão**. A maioria dos processos ML começa por colocar uma questão que não pode ser respondida por um programa condicional simples ou motor baseado em regras. Estas questões muitas vezes giram em torno de previsões baseadas numa coleção de dados. +2. **Recolher e preparar dados**. Para conseguir responder à sua questão, precisa de dados. A qualidade e, por vezes, a quantidade dos seus dados determinarão o quão bem poderá responder à sua questão inicial. Visualizar os dados é um aspecto importante desta fase. Esta fase inclui também a divisão dos dados em grupos de treino e teste para construir um modelo. +3. **Escolher um método de treino**. Dependendo da sua questão e da natureza dos seus dados, precisa de escolher como deseja treinar um modelo para refletir melhor os seus dados e fazer previsões precisas sobre os mesmos. Esta é a parte do seu processo ML que requer especialização específica e, muitas vezes, um considerável número de experimentações. +4. **Treinar o modelo**. Usando os seus dados de treino, irá utilizar vários algoritmos para treinar um modelo a reconhecer padrões nos dados. O modelo pode aproveitar pesos internos que podem ser ajustados para privilegiar certas partes dos dados em relação a outras para construir um modelo melhor. +5. **Avaliar o modelo**. Usa dados nunca antes vistos (os seus dados de teste) do seu conjunto recolhido para ver como o modelo está a desempenhar-se. +6. **Ajuste de parâmetros**. Com base no desempenho do seu modelo, pode repetir o processo usando diferentes parâmetros, ou variáveis, que controlam o comportamento dos algoritmos usados para treinar o modelo. +7. **Prever**. Use novas entradas para testar a precisão do seu modelo. -## Que pergunta fazer +## Que questão colocar -Os computadores são particularmente habilidosos em descobrir padrões ocultos nos dados. Esta capacidade é muito útil para investigadores que têm perguntas sobre um determinado domínio que não podem ser facilmente respondidas criando um motor de regras condicionais. Dada uma tarefa atuarial, por exemplo, um cientista de dados pode ser capaz de construir regras manuais sobre a mortalidade de fumadores versus não fumadores. +Os computadores são particularmente habilidosos a descobrir padrões ocultos nos dados. Esta utilidade é muito útil para investigadores que têm questões sobre um dado domínio que não podem ser facilmente respondidas através da criação de um motor de regras condicional. Dada uma tarefa atuarial, por exemplo, um cientista de dados pode ser capaz de construir regras feitas à mão em torno da mortalidade de fumadores vs não fumadores. -Quando muitas outras variáveis são introduzidas na equação, no entanto, um modelo de ML pode revelar-se mais eficiente para prever taxas de mortalidade futuras com base no histórico de saúde passado. Um exemplo mais animador pode ser fazer previsões meteorológicas para o mês de abril numa determinada localização com base em dados que incluem latitude, longitude, alterações climáticas, proximidade ao oceano, padrões da corrente de jato, entre outros. +Quando muitas outras variáveis entram na equação, no entanto, um modelo ML pode revelar-se mais eficiente para prever taxas futuras de mortalidade com base no histórico de saúde passado. Um exemplo mais animador pode ser fazer previsões meteorológicas para o mês de abril numa dada localização com base em dados que incluem latitude, longitude, alterações climáticas, proximidade do oceano, padrões da corrente de jato e mais. -✅ Este [conjunto de slides](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos meteorológicos oferece uma perspetiva histórica sobre o uso de ML na análise do clima. +✅ Esta [apresentação de slides](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos meteorológicos oferece uma perspetiva histórica para o uso de ML na análise meteorológica. ## Tarefas pré-construção -Antes de começar a construir o seu modelo, há várias tarefas que precisa de completar. Para testar a sua pergunta e formar uma hipótese com base nas previsões de um modelo, precisa de identificar e configurar vários elementos. +Antes de começar a construir o seu modelo, há várias tarefas que precisa de completar. Para testar a sua questão e formar uma hipótese com base nas previsões de um modelo, precisa de identificar e configurar vários elementos. ### Dados -Para responder à sua pergunta com algum grau de certeza, precisa de uma boa quantidade de dados do tipo certo. Há duas coisas que precisa de fazer neste momento: +Para poder responder à sua questão com algum grau de certeza, precisa de uma boa quantidade de dados do tipo certo. Há duas coisas que precisa de fazer neste ponto: -- **Recolher dados**. Tendo em mente a lição anterior sobre justiça na análise de dados, recolha os seus dados com cuidado. Esteja atento às fontes desses dados, a quaisquer preconceitos inerentes que possam ter e documente a sua origem. -- **Preparar dados**. Há vários passos no processo de preparação de dados. Pode ser necessário reunir dados e normalizá-los se vierem de fontes diversas. Pode melhorar a qualidade e a quantidade dos dados através de vários métodos, como converter strings em números (como fazemos em [Clustering](../../5-Clustering/1-Visualize/README.md)). Também pode gerar novos dados com base nos originais (como fazemos em [Classificação](../../4-Classification/1-Introduction/README.md)). Pode limpar e editar os dados (como faremos antes da lição sobre [Aplicações Web](../../3-Web-App/README.md)). Por fim, pode ser necessário randomizar e embaralhar os dados, dependendo das suas técnicas de treino. +- **Recolher dados**. Tendo em conta a lição anterior sobre justiça na análise de dados, recolha os seus dados com cuidado. Esteja atento às fontes destes dados, a quaisquer preconceitos inerentes que possam ter, e documente a sua origem. +- **Preparar dados**. Existem vários passos no processo de preparação de dados. Pode precisar de consolidar dados e normalizá-los se vierem de fontes diversas. Pode melhorar a qualidade e quantidade dos dados através de vários métodos, como converter strings em números (como fazemos em [Clustering](../../5-Clustering/1-Visualize/README.md)). Pode também gerar novos dados, baseados nos originais (como fazemos em [Classificação](../../4-Classification/1-Introduction/README.md)). Pode limpar e editar os dados (como faremos antes da lição da [Aplicação Web](../../3-Web-App/README.md)). Finalmente, pode também precisar de os aleatorizar e baralhar, dependendo das suas técnicas de treino. -✅ Após recolher e processar os seus dados, reserve um momento para verificar se a sua estrutura permitirá abordar a pergunta pretendida. Pode ser que os dados não funcionem bem na sua tarefa, como descobrimos nas nossas lições de [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ Depois de recolher e processar os seus dados, tome um momento para ver se a sua forma permitirá que aborde a sua questão pretendida. Pode acontecer que os dados não desempenhem bem na tarefa dada, como descobrimos nas nossas lições de [Clustering](../../5-Clustering/1-Visualize/README.md)! -### Features e Target +### Características e Alvo -Uma [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) é uma propriedade mensurável dos seus dados. Em muitos conjuntos de dados, é expressa como um cabeçalho de coluna, como 'data', 'tamanho' ou 'cor'. A sua variável de feature, geralmente representada como `X` no código, representa a variável de entrada que será usada para treinar o modelo. +Uma [característica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) é uma propriedade mensurável dos seus dados. Em muitos conjuntos de dados é expressa como o título de uma coluna como 'data', 'tamanho' ou 'cor'. A sua variável característica, geralmente representada como `X` em código, representa a variável de entrada que será usada para treinar um modelo. -Um target é aquilo que está a tentar prever. O target, geralmente representado como `y` no código, representa a resposta à pergunta que está a tentar fazer aos seus dados: em dezembro, qual será a **cor** das abóboras mais baratas? Em São Francisco, que bairros terão o melhor **preço** imobiliário? Às vezes, o target também é referido como atributo de rótulo. +Um alvo é aquilo que está a tentar prever. O alvo, geralmente representado como `y` em código, representa a resposta à questão que está a tentar colocar aos seus dados: em dezembro, que **cor** as abóboras serão mais baratas? em São Francisco, que bairros terão o melhor **preço** imobiliário? Por vezes o alvo também é referido como um atributo de etiqueta. -### Selecionar a sua variável de feature +### Selecionar a sua variável característica -🎓 **Seleção de Features e Extração de Features** Como saber qual variável escolher ao construir um modelo? Provavelmente passará por um processo de seleção de features ou extração de features para escolher as variáveis certas para o modelo mais eficiente. No entanto, não são a mesma coisa: "A extração de features cria novas features a partir de funções das features originais, enquanto a seleção de features retorna um subconjunto das features." ([fonte](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Seleção de Características e Extração de Características** Como sabe qual variável escolher ao construir um modelo? Provavelmente passará por um processo de seleção de características ou extração de características para escolher as variáveis certas para o modelo mais performante. Contudo, não são a mesma coisa: "A extração de características cria novas características a partir de funções das características originais, enquanto a seleção de características retorna um subconjunto das características." ([fonte](https://wikipedia.org/wiki/Feature_selection)) -### Visualizar os seus dados +### Visualize os seus dados -Um aspeto importante do conjunto de ferramentas de um cientista de dados é a capacidade de visualizar dados usando várias bibliotecas excelentes, como Seaborn ou MatPlotLib. Representar os seus dados visualmente pode permitir-lhe descobrir correlações ocultas que pode aproveitar. As suas visualizações também podem ajudá-lo a identificar preconceitos ou dados desequilibrados (como descobrimos em [Classificação](../../4-Classification/2-Classifiers-1/README.md)). +Um aspeto importante do kit de ferramentas do cientista de dados é o poder de visualizar dados usando várias excelentes bibliotecas como Seaborn ou MatPlotLib. Representar visualmente os seus dados pode permitir-lhe descobrir correlações ocultas que pode aproveitar. As suas visualizações também podem ajudar a descobrir enviesamentos ou dados desequilibrados (como descobrimos em [Classificação](../../4-Classification/2-Classifiers-1/README.md)). -### Dividir o seu conjunto de dados +### Divida o seu conjunto de dados -Antes de treinar, precisa de dividir o seu conjunto de dados em duas ou mais partes de tamanhos desiguais que ainda representem bem os dados. +Antes do treino, precisa de dividir o seu conjunto de dados em duas ou mais partes de tamanho desigual que ainda representem bem os dados. -- **Treino**. Esta parte do conjunto de dados é ajustada ao seu modelo para treiná-lo. Este conjunto constitui a maior parte do conjunto de dados original. -- **Teste**. Um conjunto de teste é um grupo independente de dados, muitas vezes retirado dos dados originais, que utiliza para confirmar o desempenho do modelo construído. -- **Validação**. Um conjunto de validação é um grupo independente menor de exemplos que utiliza para ajustar os hiperparâmetros ou a arquitetura do modelo, a fim de melhorá-lo. Dependendo do tamanho dos seus dados e da pergunta que está a fazer, pode não ser necessário construir este terceiro conjunto (como notamos em [Previsão de Séries Temporais](../../7-TimeSeries/1-Introduction/README.md)). +- **Treino**. Esta parte do conjunto de dados é ajustada ao seu modelo para o treinar. Este conjunto constitui a maioria do conjunto de dados original. +- **Teste**. Um conjunto de dados de teste é um grupo independente de dados, muitas vezes recolhidos do conjunto original, que usa para confirmar o desempenho do modelo construído. +- **Validação**. Um conjunto de validação é um grupo independente menor de exemplos que usa para ajustar os hiperparâmetros, ou arquitetura, do modelo para melhorar o modelo. Dependendo do tamanho dos seus dados e da questão que está a colocar, pode não precisar de construir este terceiro conjunto (como notamos em [Previsão de Séries Temporais](../../7-TimeSeries/1-Introduction/README.md)). -## Construir um modelo +## Construção de um modelo -Usando os seus dados de treino, o seu objetivo é construir um modelo, ou uma representação estatística dos seus dados, utilizando vários algoritmos para **treiná-lo**. Treinar um modelo expõe-no aos dados e permite-lhe fazer suposições sobre padrões percebidos que descobre, valida e aceita ou rejeita. +Usando os seus dados de treino, o seu objetivo é construir um modelo, ou uma representação estatística dos seus dados, usando vários algoritmos para **treiná-lo**. Treinar um modelo expõe-no a dados e permite que faça suposições sobre padrões percebidos que descobre, valida e aceita ou rejeita. -### Decidir sobre um método de treino +### Decida um método de treino -Dependendo da sua pergunta e da natureza dos seus dados, escolherá um método para treiná-lo. Explorando a [documentação do Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que usamos neste curso - pode descobrir várias formas de treinar um modelo. Dependendo da sua experiência, pode ter de experimentar vários métodos diferentes para construir o melhor modelo. É provável que passe por um processo em que os cientistas de dados avaliam o desempenho de um modelo alimentando-o com dados não vistos, verificando a precisão, preconceitos e outros problemas que degradam a qualidade, e selecionando o método de treino mais apropriado para a tarefa em questão. +Dependendo da sua questão e da natureza dos seus dados, irá escolher um método para os treinar. Percorrendo a [documentação do Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que usamos neste curso - pode explorar várias formas de treinar um modelo. Dependendo da sua experiência, pode ter de tentar vários métodos diferentes para construir o melhor modelo. Provavelmente passará por um processo onde os cientistas de dados avaliam o desempenho de um modelo ao alimentá-lo com dados nunca vistos, verificando a precisão, enviesamento e outras questões que degradam a qualidade, e selecionando o método de treino mais apropriado para a tarefa em questão. ### Treinar um modelo -Com os seus dados de treino, está pronto para 'ajustá-los' para criar um modelo. Notará que em muitas bibliotecas de ML encontrará o código 'model.fit' - é neste momento que envia a sua variável de feature como um array de valores (geralmente 'X') e uma variável target (geralmente 'y'). +Armado com os seus dados de treino, está pronto para 'ajustar' o modelo. Vai notar que em muitas bibliotecas ML encontra o código 'model.fit' - é neste momento que envia a sua variável característica como um array de valores (normalmente 'X') e uma variável alvo (normalmente 'y'). ### Avaliar o modelo -Uma vez concluído o processo de treino (pode levar muitas iterações, ou 'épocas', para treinar um modelo grande), poderá avaliar a qualidade do modelo utilizando dados de teste para medir o seu desempenho. Estes dados são um subconjunto dos dados originais que o modelo ainda não analisou. Pode imprimir uma tabela de métricas sobre a qualidade do modelo. +Uma vez concluído o processo de treino (pode levar muitas iterações, ou 'épocas', para treinar um modelo grande), poderá avaliar a qualidade do modelo usando dados de teste para medir o seu desempenho. Estes dados são um subconjunto dos dados originais que o modelo não analisou previamente. Pode imprimir uma tabela de métricas sobre a qualidade do seu modelo. 🎓 **Ajuste do modelo** -No contexto da aprendizagem automática, o ajuste do modelo refere-se à precisão da função subjacente do modelo enquanto tenta analisar dados com os quais não está familiarizado. +No contexto da aprendizagem automática, ajuste do modelo refere-se à precisão da função subjacente do modelo enquanto tenta analisar dados com os quais não está familiarizado. -🎓 **Subajuste** e **sobreajuste** são problemas comuns que degradam a qualidade do modelo, pois o modelo ajusta-se ou não suficientemente bem ou bem demais. Isso faz com que o modelo faça previsões muito alinhadas ou pouco alinhadas com os seus dados de treino. Um modelo sobreajustado prevê os dados de treino muito bem porque aprendeu os detalhes e o ruído dos dados em excesso. Um modelo subajustado não é preciso, pois não consegue analisar com precisão nem os dados de treino nem os dados que ainda não 'viu'. +🎓 **Subajuste** e **sobreajuste** são problemas comuns que degradam a qualidade do modelo, pois o modelo ajusta-se demasiado pouco ou demasiado. Isto faz com que o modelo faça previsões alinhadas demasiado estreitamente ou demasiado frouxamente com os dados de treino. Um modelo sobreajustado prevê os dados de treino muito bem porque aprendeu os detalhes e o ruído dos dados demasiado bem. Um modelo subajustado não é preciso pois não consegue analisar com precisão nem os seus dados de treino nem dados que ainda não 'viu'. -![modelo sobreajustado](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> Infográfico por [Jen Looper](https://twitter.com/jenlooper) +![overfitting model](../../../../translated_images/pt-PT/overfitting.1c132d92bfd93cb6.webp) +> Infografia por [Jen Looper](https://twitter.com/jenlooper) ## Ajuste de parâmetros -Depois de concluir o treino inicial, observe a qualidade do modelo e considere melhorá-lo ajustando os seus 'hiperparâmetros'. Leia mais sobre o processo [na documentação](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Uma vez concluído o treino inicial, observe a qualidade do modelo e considere melhorá-lo ajustando os seus 'hiperparâmetros'. Leia mais sobre o processo [na documentação](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Previsão -Este é o momento em que pode usar dados completamente novos para testar a precisão do seu modelo. Num cenário de ML 'aplicado', onde está a construir ativos web para usar o modelo em produção, este processo pode envolver a recolha de input do utilizador (um clique num botão, por exemplo) para definir uma variável e enviá-la ao modelo para inferência ou avaliação. +Este é o momento em que pode usar dados completamente novos para testar a precisão do seu modelo. Num cenário ML 'aplicado', onde está a construir recursos web para usar o modelo em produção, este processo pode envolver recolher a entrada do utilizador (um clique de botão, por exemplo) para definir uma variável e enviá-la para o modelo para inferência, ou avaliação. -Nestes módulos, descobrirá como usar estes passos para preparar, construir, testar, avaliar e prever - todos os gestos de um cientista de dados e mais, à medida que progride na sua jornada para se tornar um engenheiro de ML 'full stack'. +Nestes módulos, irá descobrir como usar estes passos para preparar, construir, testar, avaliar e prever – todos os gestos de um cientista de dados e mais, enquanto avança na sua jornada para se tornar um engenheiro ML 'full stack'. --- ## 🚀Desafio -Desenhe um fluxograma refletindo os passos de um praticante de ML. Onde se encontra neste momento no processo? Onde prevê que encontrará dificuldades? O que lhe parece fácil? +Desenhe um diagrama de fluxos refletindo os passos de um praticante de ML. Onde é que se vê agora no processo? Onde prevê que terá dificuldades? O que lhe parece fácil? ## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão e Estudo Individual +## Revisão e Estudo Autónomo -Pesquise online entrevistas com cientistas de dados que discutam o seu trabalho diário. Aqui está [uma](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Procure online entrevistas com cientistas de dados que discutam o seu trabalho diário. Aqui está [uma](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Tarefa @@ -119,5 +119,7 @@ Pesquise online entrevistas com cientistas de dados que discutam o seu trabalho --- + **Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte oficial. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas resultantes do uso desta tradução. + \ No newline at end of file diff --git a/translations/pt-PT/2-Regression/3-Linear/README.md b/translations/pt-PT/2-Regression/3-Linear/README.md index e25334f1fd..309080816e 100644 --- a/translations/pt-PT/2-Regression/3-Linear/README.md +++ b/translations/pt-PT/2-Regression/3-Linear/README.md @@ -1,135 +1,136 @@ -# Construir um modelo de regressão usando Scikit-learn: regressão de quatro formas +# Construa um modelo de regressão usando Scikit-learn: regressão de quatro formas ## Nota para iniciantes -A regressão linear é usada quando queremos prever um **valor numérico** (por exemplo, preço da casa, temperatura ou vendas). Funciona encontrando uma linha reta que melhor representa a relação entre as características de entrada e o resultado. +A regressão linear é usada quando queremos prever um **valor numérico** (por exemplo, preço da casa, temperatura ou vendas). +Funciona encontrando uma linha reta que melhor representa a relação entre as características de entrada e a saída. Nesta lição, focamos em entender o conceito antes de explorar técnicas de regressão mais avançadas. ![Infográfico de regressão linear vs polinomial](../../../../translated_images/pt-PT/linear-polynomial.5523c7cb6576ccab.webp) > Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Questionário pré-aula](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) > ### [Esta lição está disponível em R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Introdução -Até agora explorou o que é regressão com dados de exemplo recolhidos do conjunto de dados de preços de abóboras que iremos usar ao longo desta lição. Também visualizou esses dados usando Matplotlib. +Até agora explorou o que é regressão com dados de amostra recolhidos do conjunto de dados de preços de abóboras que iremos usar ao longo desta lição. Também o visualizou usando Matplotlib. -Agora está pronto para mergulhar mais fundo na regressão para ML. Enquanto a visualização permite dar sentido aos dados, o verdadeiro poder do Machine Learning vem do _treino de modelos_. Os modelos são treinados em dados históricos para captar automaticamente as dependências dos dados, e permitem prever resultados para novos dados, que o modelo ainda não viu. +Agora está pronto para aprofundar a regressão para ML. Enquanto a visualização lhe permite compreender os dados, o verdadeiro poder do Machine Learning vem do _treino de modelos_. Os modelos são treinados com dados históricos para capturar automaticamente dependências dos dados, e permitem prever resultados para novos dados, que o modelo ainda não viu. -Nesta lição, irá aprender mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com alguma da matemática subjacente a estas técnicas. Esses modelos permitirão prever preços de abóboras dependendo de diferentes dados de entrada. +Nesta lição, aprenderá mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com alguma da matemática subjacente a estas técnicas. Esses modelos permitir-nos-ão prever os preços das abóboras dependendo de diferentes dados de entrada. -[![ML para iniciantes - Compreender Regressão Linear](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Compreender Regressão Linear") +[![ML para iniciantes - Compreendendo a Regressão Linear](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML para iniciantes - Compreendendo a Regressão Linear") -> 🎥 Clique na imagem acima para uma curta visão geral em vídeo da regressão linear. +> 🎥 Clique na imagem acima para um breve vídeo de apresentação da regressão linear. -> Ao longo deste currículo, assumimos um conhecimento matemático mínimo, buscando tornar acessível para estudantes de outras áreas, por isso esteja atento a notas, 🧮 destaques, diagramas e outras ferramentas de aprendizagem para ajudar na compreensão. +> Ao longo deste currículo, assumimos conhecimentos mínimos de matemática, e procuramos torná-la acessível para estudantes provenientes de outras áreas, por isso repare nas notas, 🧮 chamadas, diagramas e outras ferramentas de aprendizagem para ajudar a compreensão. ### Pré-requisitos -Deve estar agora familiarizado com a estrutura dos dados de abóboras que estamos a examinar. Pode encontrá-los pré-carregados e pré-limpados no ficheiro _notebook.ipynb_ desta lição. No ficheiro, o preço da abóbora está apresentado por alqueire num novo data frame. Certifique-se de que pode executar estes notebooks em núcleos (kernels) no Visual Studio Code. +Deverá estar familiarizado agora com a estrutura dos dados da abóbora que estamos a examinar. Pode encontrá-los pré-carregados e pré-limpados no ficheiro _notebook.ipynb_ desta lição. No ficheiro, o preço da abóbora é mostrado por alqueire num novo dataframe. Assegure-se de que consegue executar estes cadernos no kernel do Visual Studio Code. ### Preparação -Como lembrete, está a carregar estes dados para fazer perguntas a eles. +Como lembrete, está a carregar estes dados para lhes fazer perguntas. -- Qual é a melhor altura para comprar abóboras? -- Que preço posso esperar por uma caixa de pequenas abóboras? -- Devo comprá-las em cestos de meio alqueire ou numa caixa de 1 1/9 alqueire? -Vamos continuar a aprofundar estes dados. +- Qual é o melhor momento para comprar abóboras? +- Que preço posso esperar por um pacote de mini abóboras? +- Devo comprá-las em cestos de meio alqueire ou em caixas de 1 1/9 alqueire? +Vamos continuar a explorar estes dados. -Na lição anterior, criou um data frame do Pandas e preencheu-o com parte do conjunto de dados original, padronizando os preços por alqueire. Ao fazer isso, no entanto, conseguiu recolher cerca de 400 pontos de dados e apenas para os meses de outono. +Na lição anterior, criou um dataframe Pandas e povoou-o com parte do conjunto de dados original, padronizando o preço por alqueire. Ao fazer isso, no entanto, conseguiu apenas cerca de 400 pontos de dados e apenas para os meses de outono. -Veja os dados que pré-carregámos no notebook que acompanha esta lição. Os dados vêm pré-carregados e um gráfico de dispersão inicial foi traçado para mostrar os dados do mês. Talvez possamos obter um pouco mais de detalhe sobre a natureza dos dados fazendo uma limpeza maior. +Veja os dados que pré-carregámos no caderno que acompanha esta lição. Os dados estão pré-carregados e foi traçado um gráfico de dispersão inicial para mostrar os dados do mês. Talvez possamos obter um pouco mais de detalhe sobre a natureza dos dados limpando-os mais. ## Uma linha de regressão linear -Como aprendeu na Lição 1, o objetivo de um exercício de regressão linear é conseguir traçar uma linha para: +Como aprendeu na Lição 1, o objetivo de um exercício de regressão linear é poder traçar uma linha para: -- **Mostrar relações entre variáveis**. Mostrar a relação entre variáveis -- **Fazer previsões**. Fazer previsões precisas sobre onde um novo ponto de dados cairia em relação a essa linha. +- **Mostrar relações entre variáveis**. Mostrar a relação entre variáveis +- **Fazer previsões**. Fazer previsões precisas sobre onde um novo ponto de dados cairia em relação a essa linha. -É típico da **Regressão pelo Método dos Mínimos Quadrados** desenhar este tipo de linha. O termo "Mínimos Quadrados" refere-se ao processo de minimizar o erro total no nosso modelo. Para cada ponto de dados, medimos a distância vertical (chamada resíduo) entre o ponto real e a nossa linha de regressão. +É típico da **Regressão de Mínimos Quadrados** desenhar este tipo de linha. O termo "Mínimos Quadrados" refere-se ao processo de minimizar o erro total no nosso modelo. Para cada ponto de dados, medimos a distância vertical (chamada resíduo) entre o ponto real e a nossa linha de regressão. -Elevamos ao quadrado essas distâncias por duas razões principais: +Elevamos essas distâncias ao quadrado por duas razões principais: -1. **Magnitude sobre direção:** Queremos tratar um erro de -5 da mesma forma que um erro de +5. Elevar ao quadrado torna todos os valores positivos. +1. **Magnitude em vez de Direção:** Queremos tratar um erro de -5 da mesma forma que um erro de +5. Elevar ao quadrado torna todos os valores positivos. -2. **Penalização de outliers:** Elevar ao quadrado dá mais peso a erros maiores, obrigando a linha a ficar mais próxima dos pontos distantes. +2. **Penalizar Outliers:** Elevar ao quadrado dá mais peso aos erros maiores, forçando a linha a manter-se mais perto dos pontos que estão longe. -Depois somamos todos esses valores ao quadrado. O nosso objetivo é encontrar a linha específica onde essa soma final é a menor possível—daí o nome "Mínimos Quadrados". +Depois somamos todos esses valores ao quadrado. O nosso objetivo é encontrar a linha específica onde esta soma final é a menor (o menor valor possível)—daí o nome "Mínimos Quadrados". -> **🧮 Mostre-me a matemática** -> -> Esta linha, chamada de _linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Mostre-me a matemática** +> +> Esta linha, chamada de _linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. O declive da linha é `b` e `a` é o intercepto em y, que se refere ao valor de `Y` quando `X = 0`. -> ->![calcular o declive](../../../../translated_images/pt-PT/slope.f3c9d5910ddbfcf9.webp) -> -> Primeiro, calcule o declive `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper) -> -> Por outras palavras, e referindo-nos à pergunta original dos dados das abóboras: "prever o preço por alqueire da abóbora por mês", `X` referir-se-ia ao preço e `Y` ao mês da venda. -> ->![completar a equação](../../../../translated_images/pt-PT/calculation.a209813050a1ddb1.webp) -> -> Calcule o valor de Y. Se está a pagar cerca de 4 dólares, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper) -> -> A matemática que calcula a linha deve demonstrar o declive da linha, que também depende do intercepto, ou de onde `Y` está situado quando `X = 0`. -> -> Pode observar o método de cálculo destes valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visite também [esta calculadora de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores numéricos impactam a linha. +> +> `X` é a 'variável explicativa'. `Y` é a 'variável dependente'. A inclinação da linha é `b` e `a` é o intercepto-y, que refere o valor de `Y` quando `X = 0`. +> +>![calcular a inclinação](../../../../translated_images/pt-PT/slope.f3c9d5910ddbfcf9.webp) +> +> Primeiro, calcule a inclinação `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper) +> +> Por outras palavras, e referindo à questão original dos nossos dados da abóbora: "prever o preço de uma abóbora por alqueire por mês", `X` referir-se-ia ao preço e `Y` ao mês da venda. +> +>![completar a equação](../../../../translated_images/pt-PT/calculation.a209813050a1ddb1.webp) +> +> Calcule o valor de Y. Se está a pagar cerca de 4$, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper) +> +> A matemática que calcula a linha deve demonstrar a inclinação da linha, que também depende do intercepto, ou onde `Y` está situado quando `X = 0`. +> +> Pode observar o método de cálculo destes valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visite também [este Calculador de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores dos números impactam a linha. ## Correlação -Mais um termo a compreender é o **Coeficiente de Correlação** entre as variáveis X e Y dadas. Usando um gráfico de dispersão, pode visualizar rapidamente este coeficiente. Um gráfico com pontos de dados dispersos numa linha limpa tem alta correlação, mas um gráfico com pontos dispersos por todo o lado entre X e Y tem baixa correlação. +Mais um termo a compreender é o **Coeficiente de Correlação** entre as variáveis X e Y dadas. Usando um gráfico de dispersão, pode rapidamente visualizar este coeficiente. Um gráfico com pontos de dados dispersos numa linha arrumada tem alta correlação, mas um gráfico com pontos dispersos por toda a parte entre X e Y tem baixa correlação. -Um bom modelo de regressão linear será aquele que tem um Coeficiente de Correlação alto (mais próximo de 1 do que de 0) usando o método dos mínimos quadrados com uma linha de regressão. +Um bom modelo de regressão linear será aquele que tem um alto (mais próximo de 1 do que de 0) Coeficiente de Correlação usando o método de Regressão de Mínimos Quadrados com uma linha de regressão. -✅ Execute o notebook que acompanha esta lição e observe o gráfico de dispersão Mês versus Preço. Os dados que associam Mês a Preço para vendas de abóboras parecem ter alta ou baixa correlação, segundo a sua interpretação visual do gráfico de dispersão? Isso muda se usar uma medida mais pormenorizada em vez de `Mês`, por exemplo *dia do ano* (isto é, número de dias desde o início do ano)? +✅ Execute o caderno que acompanha esta lição e observe o gráfico de dispersão Mês vs Preço. Os dados que associam Mês a Preço para vendas de abóboras parecem ter alta ou baixa correlação, de acordo com a sua interpretação visual do gráfico de dispersão? Isso muda se usar uma medida mais detalhada em vez de `Mês`, por exemplo, *dia do ano* (isto é, número de dias desde o início do ano)? -No código abaixo, vamos assumir que limpámos os dados e obtivemos um data frame chamado `new_pumpkins`, semelhante ao seguinte: +No código abaixo, assumiremos que limpámos os dados e obtivemos um dataframe chamado `new_pumpkins`, semelhante ao seguinte: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|-------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Realizámos os mesmos passos de limpeza da lição anterior e calculámos a coluna `DayOfYear` usando a seguinte expressão: +> O código para limpar os dados está disponível em [`notebook.ipynb`](notebook.ipynb). Realizámos os mesmos passos de limpeza que na lição anterior, e calculámos a coluna `DayOfYear` usando a seguinte expressão: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Agora que compreende a matemática por trás da regressão linear, vamos criar um modelo de regressão para ver se conseguimos prever que pacote de abóboras terá os melhores preços. Alguém a comprar abóboras para uma decoração de abóboras para o feriado pode querer esta informação para optimizar as suas compras de pacotes de abóboras para a decoração. +Agora que entende a matemática por trás da regressão linear, vamos criar um modelo de regressão para ver se conseguimos prever qual o pacote de abóboras que terá os melhores preços. Alguém a comprar abóboras para um campo de abóboras de férias poderá querer esta informação para otimizar as suas compras de pacotes para o campo. -## Procurar correlação +## Procurando Correlação -[![ML para iniciantes - Procurar correlação: a chave para regressão linear](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurar correlação: a chave para regressão linear") +[![ML para iniciantes - Procurando Correlação: A Chave para Regressão Linear](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML para iniciantes - Procurando Correlação: A Chave para Regressão Linear") -> 🎥 Clique na imagem acima para uma breve visão geral em vídeo da correlação. +> 🎥 Clique na imagem acima para um breve vídeo de apresentação sobre correlação. -Na lição anterior provavelmente viu que o preço médio para diferentes meses se parece com isto: +Na lição anterior provavelmente viu que o preço médio para diferentes meses é assim: Preço médio por mês -Isto sugere que deve haver alguma correlação, e podemos tentar treinar um modelo de regressão linear para prever a relação entre `Month` e `Price`, ou entre `DayOfYear` e `Price`. Aqui está o gráfico de dispersão que mostra esta última relação: +Isto sugere que deve haver alguma correlação, e podemos tentar treinar um modelo de regressão linear para prever a relação entre `Month` e `Price`, ou entre `DayOfYear` e `Price`. Aqui está o gráfico de dispersão que mostra a última relação: -Gráfico de dispersão do preço vs dia do ano +Gráfico de dispersão do Preço vs. Dia do Ano -Vamos ver se existe correlação usando a função `corr`: +Vamos ver se há correlação usando a função `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Parece que a correlação é bastante pequena, -0.15 pelo `Month` e -0.17 pelo `DayOfMonth`, mas pode haver outra relação importante. Parece que há diferentes agrupamentos de preços correspondendo a diferentes variedades de abóbora. Para confirmar esta hipótese, vamos representar cada categoria de abóboras com uma cor diferente. Ao passar o parâmetro `ax` para a função de plotagem `scatter` podemos plotar todos os pontos no mesmo gráfico: +Parece que a correlação é bastante pequena, -0.15 por `Month` e -0.17 por `DayOfYear`, mas pode haver outra relação importante. Parece que existem diferentes grupos de preços correspondentes a diferentes variedades de abóboras. Para confirmar esta hipótese, vamos traçar cada categoria de abóbora usando uma cor diferente. Passando um parâmetro `ax` para a função de plotagem `scatter` podemos traçar todos os pontos no mesmo gráfico: ```python ax=None @@ -139,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Gráfico de dispersão do preço vs dia do ano com cores +Gráfico de dispersão do Preço vs. Dia do Ano -A nossa investigação sugere que a variedade tem mais efeito no preço global do que a data real de venda. Podemos ver isso num gráfico de barras: +A nossa investigação sugere que a variedade tem mais efeito no preço global do que a data de venda. Podemos ver isto com um gráfico de barras: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Gráfico de barras do preço por variedade +Gráfico de barras do preço vs variedade -Vamos focar-nos para já apenas numa variedade de abóboras, a do tipo 'pie', e ver que efeito a data tem no preço: +Vamos focar por ora numa só variedade de abóbora, o tipo 'pie type', e ver que efeito a data tem no preço: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Gráfico de dispersão do preço vs dia do ano para abóboras 'pie' +Gráfico de dispersão do Preço vs. Dia do Ano -Se agora calcularmos a correlação entre `Price` e `DayOfYear` usando a função `corr`, obteremos algo como `-0.27` - o que significa que treinar um modelo preditivo faz sentido. +Se agora calcularmos a correlação entre `Price` e `DayOfYear` usando a função `corr`, obteremos algo como `-0.27` - o que significa que faz sentido treinar um modelo preditivo. -> Antes de treinar um modelo de regressão linear, é importante garantir que os nossos dados estão limpos. A regressão linear não funciona bem com valores em falta, portanto faz sentido livrar-se de todas as células vazias: +> Antes de treinar um modelo de regressão linear, é importante garantir que os dados estão limpos. A regressão linear não funciona bem com valores em falta, por isso faz sentido eliminar todas as células vazias: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Outra abordagem seria preencher esses valores vazios com a média da coluna correspondente. +Outra abordagem seria preencher esses valores vazios com valores médios da coluna correspondente. ## Regressão Linear Simples [![ML para iniciantes - Regressão Linear e Polinomial usando Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML para iniciantes - Regressão Linear e Polinomial usando Scikit-learn") -> 🎥 Clique na imagem acima para uma breve visão geral em vídeo da regressão linear e polinomial. +> 🎥 Clique na imagem acima para um breve vídeo de apresentação sobre regressão linear e polinomial. -Para treinar o nosso modelo de Regressão Linear, vamos usar a biblioteca **Scikit-learn**. +Para treinar o nosso modelo de Regressão Linear, iremos usar a biblioteca **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -189,9 +190,9 @@ X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Repare que tivemos de fazer um `reshape` nos dados de entrada para que o pacote de Regressão Linear os compreendesse corretamente. A Regressão Linear espera uma matriz 2D como entrada, onde cada linha da matriz corresponde a um vetor de características de entrada. No nosso caso, como temos apenas uma entrada, precisamos de uma matriz com forma N×1, onde N é o tamanho do conjunto de dados. +> Note que tivemos de realizar um `reshape` nos dados de entrada para que o pacote de Regressão Linear os entenda corretamente. Regressão Linear espera um array 2D como entrada, em que cada linha do array corresponde a um vetor de características de entrada. No nosso caso, como temos apenas uma entrada - precisamos de um array com formato N×1, onde N é o tamanho do conjunto de dados. -Depois, é necessário dividir os dados nos conjuntos de treino e de teste, para que possamos validar o modelo após o treino: +Depois, precisamos dividir os dados em conjuntos de treino e teste, para podermos validar o nosso modelo após o treino: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) @@ -204,9 +205,9 @@ lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -O objeto `LinearRegression` após o treino (`fit`) contém todos os coeficientes da regressão, que podem ser acedidos através da propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deverá ser cerca de `-0.017`. Isto significa que os preços parecem diminuir um pouco com o tempo, mas não demasiado, cerca de 2 cêntimos por dia. Também podemos aceder ao ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` - será cerca de `21` no nosso caso, indicando o preço no início do ano. +O objeto `LinearRegression` depois de ajustado (`fit`) contém todos os coeficientes da regressão, que podem ser acedidos usando a propriedade `.coef_`. No nosso caso, há apenas um coeficiente, que deverá estar por volta de `-0.017`. Isso significa que os preços parecem baixar um pouco com o tempo, mas não muito, cerca de 2 cêntimos por dia. Podemos também aceder ao ponto de interseção da regressão com o eixo Y usando `lin_reg.intercept_` - será cerca de `21` no nosso caso, indicando o preço no início do ano. -Para ver quão preciso é o nosso modelo, podemos prever preços num conjunto de dados de teste, e depois medir quão próximas estão as nossas previsões dos valores esperados. Isto pode ser feito usando a métrica root mean square error (RMSE), que é a raiz da média de todas as diferenças quadráticas entre o valor esperado e o previsto. +Para ver quão preciso é o nosso modelo, podemos prever preços num conjunto de dados de teste, e depois medir quão próximas as nossas previsões estão dos valores esperados. Isto pode ser feito usando a métrica de erro quadrático médio da raiz (RMSE), que é a raiz da média de todas as diferenças ao quadrado entre o valor esperado e o previsto. ```python pred = lin_reg.predict(X_test) @@ -215,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -O nosso erro parece ser cerca de 2 pontos, o que é ~17%. Nada muito bom. Outro indicador da qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim: +O nosso erro parece ser cerca de 2 pontos, o que é ~17%. Não muito bom. Outro indicador da qualidade do modelo é o **coeficiente de determinação**, que pode ser obtido assim: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Se o valor for 0, significa que o modelo não tem em conta os dados de entrada, e atua como o *pior preditor linear*, que é simplesmente o valor médio do resultado. O valor 1 significa que podemos prever perfeitamente todas as saídas esperadas. No nosso caso, o coeficiente é cerca de 0.06, o que é bastante baixo. +Se o valor for 0, significa que o modelo não tem em conta os dados de entrada, e funciona como o *pior preditor linear*, que é simplesmente um valor médio do resultado. O valor 1 significa que podemos prever perfeitamente todas as saídas esperadas. No nosso caso, o coeficiente está por volta de 0.06, o que é bastante baixo. -Também podemos desenhar os dados de teste juntamente com a linha de regressão para vermos melhor como funciona a regressão no nosso caso: +Podemos também traçar os dados de teste juntamente com a linha de regressão para vermos melhor como a regressão funciona no nosso caso: ```python plt.scatter(X_test,y_test) @@ -234,17 +235,17 @@ plt.plot(X_test,pred) ## Regressão Polinomial -Outro tipo de Regressão Linear é a Regressão Polinomial. Embora por vezes haja uma relação linear entre variáveis - quanto maior a abóbora em volume, maior o preço - por vezes essas relações não podem ser representadas por um plano ou linha reta. +Outro tipo de Regressão Linear é a Regressão Polinomial. Embora por vezes haja uma relação linear entre variáveis - quanto maior a abóbora em volume, maior o preço - por vezes essas relações não podem ser representadas como um plano ou linha reta. ✅ Aqui estão [mais alguns exemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que poderiam usar Regressão Polinomial -Veja outra vez a relação entre Data e Preço. Este gráfico de dispersão parece que deve necessariamente ser analisado por uma linha reta? Será que os preços não podem flutuar? Neste caso, pode tentar a regressão polinomial. +Dê outra vista de olhos à relação entre Data e Preço. Este gráfico de dispersão parece necessariamente deva ser analisado por uma linha reta? Não podem os preços oscilar? Neste caso, pode tentar regressão polinomial. -✅ Os polinómios são expressões matemáticas que podem consistir em uma ou mais variáveis e coeficientes +✅ Polinómios são expressões matemáticas que podem consistir de uma ou mais variáveis e coeficientes -A regressão polinomial cria uma linha curva para melhor ajustar dados não lineares. No nosso caso, se incluirmos uma variável ao quadrado `DayOfYear` nos dados de entrada, deveremos ser capazes de ajustar os nossos dados com uma curva parabólica, que terá um mínimo em certo ponto dentro do ano. +A regressão polinomial cria uma linha curva para melhor ajustar os dados não lineares. No nosso caso, se incluirmos uma variável ao quadrado `DayOfYear` nos dados de entrada, deveremos conseguir ajustar os nossos dados com uma curva parabólica, que terá um mínimo em certo ponto durante o ano. -O Scikit-learn inclui uma API útil de [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes passos do processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, vamos criar um pipeline que primeiro adiciona características polinomiais ao nosso modelo, e depois treina a regressão: +O Scikit-learn inclui uma útil [API para pipelines](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) para combinar diferentes passos do processamento de dados. Um **pipeline** é uma cadeia de **estimadores**. No nosso caso, vamos criar um pipeline que primeiro adiciona características polinomiais ao nosso modelo, e depois treina a regressão: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Usar `PolynomialFeatures(2)` significa que vamos incluir todos os polinómios de segundo grau a partir dos dados de entrada. No nosso caso, isso significará apenas `DayOfYear`2, mas dado duas variáveis de entrada X e Y, isso adicionaria X2, XY e Y2. Também podemos usar polinómios de grau superior se quisermos. +Usar `PolynomialFeatures(2)` significa que iremos incluir todos os polinómios de segundo grau dos dados de entrada. No nosso caso, isso significa apenas `DayOfYear`2, mas dado duas variáveis de entrada X e Y, isto adicionaria X2, XY e Y2. Podemos também usar polinómios de grau superior se quisermos. -Os pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos `fit` o pipeline e depois usar `predict` para obter os resultados da previsão. Aqui está o gráfico mostrando os dados de teste e a curva de aproximação: +Pipelines podem ser usados da mesma forma que o objeto original `LinearRegression`, ou seja, podemos `fit` o pipeline, e depois usar `predict` para obter os resultados da previsão: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Para traçar a curva de aproximação suave, usamos `np.linspace` para criar um intervalo uniforme de valores de entrada, em vez de traçar diretamente sobre os dados de teste desordenados (o que produziria uma linha em zig-zag): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Aqui está o gráfico que mostra os dados de teste e a curva de aproximação: Polynomial regression -Usando Regressão Polinomial, podemos obter um MSE ligeiramente inferior e um coeficiente de determinação mais alto, mas não de forma significativa. Precisamos de ter em conta outras características! +Usando Regressão Polinomial, podemos obter um RMSE ligeiramente mais baixo e um coeficiente de determinação mais alto, mas não significativamente. Precisamos de ter em conta outras características! -> Pode ver que os preços mínimos das abóboras ocorrem por volta do Halloween. Como pode explicar isso? +> Pode ver que os preços mínimos das abóboras são observados por volta do Halloween. Como pode explicar isto? -🎃 Parabéns, acabou de criar um modelo que pode ajudar a prever o preço de abóboras para torta. Provavelmente poderá repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria aborrecido. Vamos aprender agora como ter em conta a variedade de abóbora no nosso modelo! +🎃 Parabéns, acaba de criar um modelo que pode ajudar a prever o preço das abóboras para torta. Provavelmente pode repetir o mesmo procedimento para todos os tipos de abóbora, mas isso seria trabalhoso. Vamos agora aprender a ter em conta a variedade da abóbora no nosso modelo! ## Características Categóricas -No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóbora usando o mesmo modelo. No entanto, a coluna `Variety` é um pouco diferente das colunas como `Month`, porque contém valores não numéricos. Essas colunas são chamadas **categóricas**. +No mundo ideal, queremos ser capazes de prever preços para diferentes variedades de abóboras usando o mesmo modelo. Contudo, a coluna `Variety` é algo diferente de colunas como `Month`, porque contém valores não numéricos. Essas colunas são chamadas **categóricas**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Clique na imagem acima para um breve vídeo explicativo sobre o uso de características categóricas. +> 🎥 Clique na imagem acima para ver um breve vídeo sobre o uso de características categóricas. Aqui pode ver como o preço médio depende da variedade: Average price by variety -Para ter a variedade em conta, primeiro precisamos convertê-la para forma numérica, ou **codificá-la**. Existem várias maneiras de o fazer: +Para ter em conta a variedade, primeiro precisamos de a converter em forma numérica, ou **codificar**. Existem várias formas de o fazer: -* A simples **codificação numérica** constrói uma tabela de diferentes variedades, e depois substitui o nome da variedade por um índice nessa tabela. Isto não é a melhor ideia para regressão linear, porque a regressão linear toma o valor numérico real do índice, e adiciona-o ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo se assegurarmos que os índices estão ordenados de alguma forma específica. -* A **codificação one-hot** vai substituir a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna terá `1` se a linha correspondente for de uma dada variedade, e `0` caso contrário. Isto significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsável pelo "preço inicial" (ou antes "preço adicional") para aquela variedade particular. +* Uma simples **codificação numérica** construirá uma tabela das diferentes variedades, e depois substituirá o nome da variedade por um índice nessa tabela. Esta não é a melhor ideia para regressão linear, porque a regressão linear utiliza o valor numérico real do índice, adicionando-o ao resultado, multiplicando por algum coeficiente. No nosso caso, a relação entre o número do índice e o preço é claramente não linear, mesmo que asseguremos que os índices estão ordenados de alguma forma específica. +* A **codificação one-hot** substituirá a coluna `Variety` por 4 colunas diferentes, uma para cada variedade. Cada coluna terá o valor `1` se a linha correspondente for daquela variedade, e `0` caso contrário. Isto significa que haverá quatro coeficientes na regressão linear, um para cada variedade de abóbora, responsável pelo "preço inicial" (ou antes "preço adicional") para aquela variedade em particular. -O código abaixo mostra como podemos codificar uma variedade usando one-hot: +O código abaixo mostra como podemos fazer a codificação one-hot de uma variedade: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -301,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Para treinar a regressão linear usando variedade codificada one-hot como entrada, só precisamos inicializar os dados `X` e `y` corretamente: +Para treinar regressão linear usando variedade codificada em one-hot como entrada, só precisamos inicializar corretamente os dados `X` e `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -O resto do código é igual ao que usamos anteriormente para treinar a regressão linear. Se tentar, verá que o erro quadrático médio é mais ou menos o mesmo, mas obtemos um coeficiente de determinação muito mais alto (~77%). Para obter previsões ainda mais precisas, podemos levar mais características categóricas em conta, bem como características numéricas, como `Month` ou `DayOfYear`. Para obter um grande array de características, podemos usar `join`: +O resto do código é igual ao que usamos acima para treinar a Regressão Linear. Se tentar, verá que o erro quadrático médio é cerca do mesmo, mas obtemos um coeficiente de determinação muito mais elevado (~77%). Para obter previsões ainda mais precisas, podemos ter em conta mais características categóricas, bem como características numéricas, como `Month` ou `DayOfYear`. Para obter um único grande array de características, podemos usar `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,14 +341,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Aqui também levamos em conta `City` e tipo de `Package`, o que nos dá MSE 2.84 (10%), e determinação 0.94! +Aqui também temos em conta `City` e `Package` (embalagem), o que nos dá RMSE 2.84 (10.5%), e determinação 0.94! ## Juntando tudo -Para fazer o melhor modelo, podemos usar dados combinados (categóricos codificados one-hot + numéricos) do exemplo acima juntamente com a Regressão Polinomial. Aqui está o código completo para sua conveniência: +Para fazer o melhor modelo, podemos usar dados combinados (características categóricas codificadas one-hot + numéricas) do exemplo acima juntamente com regressão polinomial. Aqui está o código completo para sua conveniência: ```python -# configurar dados de treino +# preparar dados de treino X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -339,47 +362,47 @@ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# prever resultados para os dados de teste +# prever resultados para dados de teste pred = pipeline.predict(X_test) -# calcular MSE e determinação -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calcular RMSE e determinação +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Isto deverá dar-nos o melhor coeficiente de determinação de quase 97%, e MSE=2.23 (~8% de erro de previsão). +Isto deverá dar-nos o melhor coeficiente de determinação de quase 97%, e RMSE=2.23 (~8% de erro de previsão). -| Modelo | MSE | Determinação | +| Modelo | RMSE | Determinação | |-------|-----|---------------| | Linear `DayOfYear` | 2.77 (17.2%) | 0.07 | | Polinomial `DayOfYear` | 2.73 (17.0%) | 0.08 | | Linear `Variety` | 5.24 (19.7%) | 0.77 | -| Linear com todas as características | 2.84 (10.5%) | 0.94 | -| Polinomial com todas as características | 2.23 (8.25%) | 0.97 | +| Todas as características Linear | 2.84 (10.5%) | 0.94 | +| Todas as características Polinomial | 2.23 (8.25%) | 0.97 | -🏆 Muito bem! Criou quatro modelos de regressão numa lição, e melhorou a qualidade do modelo para 97%. Na secção final de Regressão, vai aprender sobre Regressão Logística para determinar categorias. +🏆 Muito bem! Criou quatro modelos de Regressão numa lição, e melhorou a qualidade do modelo para 97%. Na secção final sobre Regressão, aprenderá sobre Regressão Logística para determinar categorias. --- ## 🚀Desafio Teste várias variáveis diferentes neste notebook para ver como a correlação corresponde à precisão do modelo. -## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão & Auto-estudo +## Revisão & Autoestudo -Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para estudar e aprender mais é o [curso de Aprendizagem Estatística de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Nesta lição aprendemos sobre Regressão Linear. Existem outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para estudar e aprender mais é o [Curso de Aprendizagem Estatística de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Tarefa +## Trabalho [Construa um Modelo](assignment.md) --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original, no seu idioma nativo, deve ser considerado a fonte oficial. Para informação crítica, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução. +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, tenha em atenção que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt-PT/2-Regression/3-Linear/solution/notebook.ipynb b/translations/pt-PT/2-Regression/3-Linear/solution/notebook.ipynb index fdccd458f6..95e5707411 100644 --- a/translations/pt-PT/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/pt-PT/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Regressão Linear e Polinomial para Preços de Abóboras - Aula 3\n", + "## Regressão Linear e Polinomial para Preço de Abóboras - Aula 3\n", "\n", - "Carregue as bibliotecas necessárias e o conjunto de dados. Converta os dados para um dataframe contendo um subconjunto dos dados:\n", + "Carregue as bibliotecas e o conjunto de dados necessários. Converta os dados para um dataframe contendo um subconjunto dos dados:\n", "\n", - "- Obtenha apenas abóboras com preços por alqueire\n", + "- Obtenha apenas as abóboras com preço por alqueire\n", "- Converta a data para um mês\n", - "- Calcule o preço como uma média entre os preços altos e baixos\n", - "- Converta o preço para refletir o valor por quantidade de alqueires\n" + "- Calcule o preço como uma média dos preços alto e baixo\n", + "- Converta o preço para refletir o preço por quantidade de alqueire\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Um gráfico de dispersão lembra-nos que só temos dados mensais de agosto a dezembro. Provavelmente precisamos de mais dados para conseguir tirar conclusões de forma linear.\n" + "Um gráfico de dispersão recorda-nos que só temos dados mensais de agosto a dezembro. Provavelmente precisamos de mais dados para poder tirar conclusões de forma linear.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Vamos ver se há correlação:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Parece que a correlação é bastante pequena, mas existe alguma outra relação mais importante - porque os pontos de preço no gráfico acima parecem ter vários clusters distintos. Vamos criar um gráfico que mostre diferentes variedades de abóbora:\n" + "Parece que a correlação é bastante pequena, mas há outra relação mais importante – porque os pontos de preço no gráfico acima parecem ter vários agrupamentos distintos. Vamos fazer um gráfico que mostre diferentes variedades de abóboras:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Por enquanto, vamos concentrar-nos apenas numa variedade - **tipo de tarte**.\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A inclinação da linha pode ser determinada a partir dos coeficientes de regressão linear:\n" + "A inclinação da linha pode ser determinada a partir dos coeficientes da regressão linear:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Podemos usar o modelo treinado para prever o preço:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Regressão Polinomial\n", "\n", - "Por vezes, a relação entre as características e os resultados é intrinsecamente não linear. Por exemplo, os preços das abóboras podem ser altos no inverno (meses=1,2), depois cair no verão (meses=5-7) e voltar a subir novamente. A regressão linear não consegue captar esta relação com precisão.\n", + "Por vezes, a relação entre as características e os resultados é inherentemente não linear. Por exemplo, os preços da abóbora podem ser elevados no inverno (meses=1,2), depois diminuir durante o verão (meses=5-7), e depois subir novamente. A regressão linear não consegue encontrar esta relação com precisão.\n", "\n", - "Neste caso, podemos considerar adicionar características adicionais. Uma forma simples é usar polinómios das características de entrada, o que resultaria numa **regressão polinomial**. No Scikit Learn, podemos pré-computar automaticamente características polinomiais utilizando pipelines:\n" + "Neste caso, podemos considerar adicionar características extras. Uma forma simples é usar polinómios das características de entrada, o que resultaria numa **regressão polinomial**. No Scikit Learn, podemos pré-calcular automaticamente características polinomiais usando pipelines: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Codificação de variedades\n", + "### Variedades de codificação\n", "\n", - "No mundo ideal, queremos ser capazes de prever os preços para diferentes variedades de abóbora usando o mesmo modelo. Para levar a variedade em consideração, primeiro precisamos convertê-la para uma forma numérica, ou **codificar**. Existem várias maneiras de fazer isso:\n", + "No mundo ideal, queremos conseguir prever preços para diferentes variedades de abóbora utilizando o mesmo modelo. Para ter em conta a variedade, primeiro precisamos convertê-la para uma forma numérica, ou **codificar**. Existem várias formas de o fazermos:\n", "\n", - "* Codificação numérica simples que cria uma tabela com diferentes variedades e, em seguida, substitui o nome da variedade por um índice nessa tabela. Esta não é a melhor ideia para regressão linear, porque a regressão linear leva em conta o valor numérico do índice, e o valor numérico provavelmente não terá correlação numérica com o preço.\n", - "* Codificação one-hot, que substitui a coluna `Variety` por 4 colunas diferentes, uma para cada variedade, que conterão 1 se a linha correspondente for da variedade dada, e 0 caso contrário.\n", + "* Codificação numérica simples que irá construir uma tabela das diferentes variedades, e depois substituir o nome da variedade por um índice nessa tabela. Esta não é a melhor ideia para regressão linear, porque a regressão linear leva em consideração o valor numérico do índice, e o valor numérico provavelmente não se correlaciona numericamente com o preço.\n", + "* Codificação one-hot, que irá substituir a coluna `Variety` por 4 colunas diferentes, uma para cada variedade, que conterá 1 se a linha correspondente for da variedade dada, e 0 caso contrário.\n", "\n", - "O código abaixo mostra como podemos codificar uma variedade usando one-hot:\n" + "O código abaixo mostra como podemos codificar one-hot uma variedade:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regressão Linear sobre Variedade\n", + "### Regressão Linear na Variedade\n", "\n", - "Agora vamos usar o mesmo código mencionado acima, mas em vez de `DayOfYear`, utilizaremos a nossa variedade codificada em one-hot como entrada:\n" + "Vamos agora usar o mesmo código de cima, mas em vez de `DayOfYear` vamos usar a nossa variedade codificada one-hot como entrada:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Podemos também tentar usar outras funcionalidades da mesma maneira e combiná-las com funcionalidades numéricas, como `Month` ou `DayOfYear`:\n" + "Também podemos tentar usar outras características da mesma forma, e combiná-las com características numéricas, como `Month` ou `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Regressão Polinomial\n", "\n", - "A regressão polinomial também pode ser utilizada com características categóricas que foram codificadas em one-hot. O código para treinar a regressão polinomial seria essencialmente o mesmo que vimos acima.\n" + "A regressão polinomial também pode ser usada com características categóricas que são codificadas em one-hot. O código para treinar a regressão polinomial seria essencialmente o mesmo que vimos acima.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.\n" + "---\n\n\n**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-03T19:17:56+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "pt" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 0928cf7fc72f1bc816b68c031ec5b8bbd2861974 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 18:49:41 +0000 Subject: [PATCH 03/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/hr/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 98 +++--- .../hr/2-Regression/3-Linear/README.md | 285 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 63 ++-- translations/sl/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 102 ++++--- .../sl/2-Regression/3-Linear/README.md | 248 ++++++++------- .../3-Linear/solution/notebook.ipynb | 65 ++-- translations/sr/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 104 +++---- .../sr/2-Regression/3-Linear/README.md | 277 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++--- 12 files changed, 723 insertions(+), 630 deletions(-) diff --git a/translations/hr/.co-op-translator.json b/translations/hr/.co-op-translator.json index ad9e58fd6b..4151a354e8 100644 --- a/translations/hr/.co-op-translator.json +++ b/translations/hr/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "hr" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:43:14+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:47:58+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "hr" }, @@ -90,8 +90,8 @@ "language_code": "hr" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:13:53+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:47:29+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "hr" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "hr" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:44:42+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "hr" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:34:39+00:00", diff --git a/translations/hr/1-Introduction/4-techniques-of-ML/README.md b/translations/hr/1-Introduction/4-techniques-of-ML/README.md index 447ce1c624..580516a6e7 100644 --- a/translations/hr/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/hr/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Tehnike strojnog učenja -Proces izrade, korištenja i održavanja modela strojnog učenja te podataka koje koriste vrlo je različit od mnogih drugih razvojnih tijekova rada. U ovoj lekciji razjasnit ćemo taj proces i istaknuti glavne tehnike koje trebate znati. Naučit ćete: +Proces izgradnje, korištenja i održavanja modela strojnog učenja i podataka koje oni koriste vrlo je različit od mnogih drugih razvojnih tijekova. U ovoj lekciji razjasnit ćemo proces i izložiti glavne tehnike koje trebate znati. Naučit ćete: -- Razumjeti procese koji podržavaju strojno učenje na visokoj razini. -- Istražiti osnovne pojmove poput 'modela', 'predikcija' i 'podataka za treniranje'. +- Razumjeti procese koji stoje iza strojnog učenja na visokoj razini. +- Istražiti osnovne pojmove kao što su 'modeli', 'predviđanja' i 'podaci za treniranje'. ## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/) -[![ML za početnike - Tehnike strojnog učenja](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML za početnike - Tehnike strojnog učenja") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Kliknite na sliku iznad za kratki video koji obrađuje ovu lekciju. +> 🎥 Kliknite na sliku gore za kratki video koji obrađuje ovu lekciju. ## Uvod -Na visokoj razini, proces stvaranja strojnog učenja (ML) sastoji se od nekoliko koraka: +Na visokoj razini, vještina stvaranja procesa strojnog učenja (ML) sastoji se od niza koraka: -1. **Odlučite o pitanju**. Većina ML procesa započinje postavljanjem pitanja koje se ne može odgovoriti jednostavnim uvjetnim programom ili sustavom temeljenim na pravilima. Ta pitanja često se odnose na predikcije temeljene na zbirci podataka. -2. **Prikupite i pripremite podatke**. Da biste mogli odgovoriti na svoje pitanje, trebate podatke. Kvaliteta, a ponekad i količina vaših podataka, odredit će koliko dobro možete odgovoriti na početno pitanje. Vizualizacija podataka važan je aspekt ove faze. Ova faza također uključuje podjelu podataka na skup za treniranje i testiranje kako biste izgradili model. -3. **Odaberite metodu treniranja**. Ovisno o vašem pitanju i prirodi vaših podataka, trebate odabrati način na koji želite trenirati model kako bi najbolje odražavao vaše podatke i davao točne predikcije. Ovo je dio ML procesa koji zahtijeva specifičnu stručnost i često značajnu količinu eksperimentiranja. -4. **Trenirajte model**. Koristeći podatke za treniranje, koristit ćete razne algoritme za treniranje modela kako bi prepoznao obrasce u podacima. Model može koristiti unutarnje težine koje se mogu prilagoditi kako bi se privilegirali određeni dijelovi podataka u odnosu na druge za izgradnju boljeg modela. -5. **Procijenite model**. Koristite podatke koje model nikada prije nije vidio (vaše testne podatke) iz prikupljenog skupa kako biste vidjeli kako model funkcionira. -6. **Podešavanje parametara**. Na temelju performansi vašeg modela, možete ponoviti proces koristeći različite parametre ili varijable koje kontroliraju ponašanje algoritama korištenih za treniranje modela. -7. **Predikcija**. Koristite nove ulaze kako biste testirali točnost vašeg modela. +1. **Odlučite o pitanju**. Većina ML procesa započinje pitanjem koje se ne može odgovoriti jednostavnim uvjetnim programom ili motorom temeljenim na pravilima. Ta pitanja često se tiču predviđanja na temelju skupa podataka. +2. **Prikupite i pripremite podatke**. Da biste mogli odgovoriti na svoje pitanje, trebate podatke. Kvaliteta i ponekad količina podataka odredit će koliko dobro možete odgovoriti na početno pitanje. Vizualizacija podataka važan je aspekt ove faze. Ova faza također uključuje podjelu podataka u skup za treniranje i testiranje za izgradnju modela. +3. **Odaberite metodu treniranja**. Ovisno o vašem pitanju i prirodi podataka, morate odabrati kako želite trenirati model da najbolje odražava vaše podatke i da daje točna predviđanja. Ovo je dio ML procesa koji zahtijeva specifičnu stručnost i često značajnu količinu eksperimentiranja. +4. **Trenirajte model**. Koristeći svoje podatke za treniranje, upotrijebit ćete različite algoritme za treniranje modela kako bi prepoznao obrasce u podacima. Model može koristiti unutarnje težine koje se mogu prilagoditi kako bi se privilegirali određeni dijelovi podataka u odnosu na druge za izgradnju boljeg modela. +5. **Evaluirajte model**. Koristite podatke koje model prije nije vidio (vaše testne podatke) iz prikupljenog skupa kako biste vidjeli kako model radi. +6. **Podesite parametre**. Na temelju performansi modela možete ponoviti proces koristeći različite parametre ili varijable koje kontroliraju ponašanje algoritama korištenih za treniranje modela. +7. **Predviđajte**. Koristite nove ulaze za testiranje točnosti modela. ## Koje pitanje postaviti -Računala su posebno vješta u otkrivanju skrivenih obrazaca u podacima. Ova korisnost vrlo je korisna za istraživače koji imaju pitanja o određenom području koja se ne mogu lako odgovoriti stvaranjem sustava temeljenog na uvjetima. Na primjer, u aktuarskom zadatku, podatkovni znanstvenik mogao bi konstruirati ručno izrađena pravila o smrtnosti pušača u odnosu na nepušače. +Računala su posebno vješta u otkrivanju skrivenih obrazaca u podacima. Ova korisnost vrlo je korisna istraživačima koji imaju pitanja o određenom području na koja se ne može lako odgovoriti stvaranjem sustava pravila temeljenih na uvjetima. Na primjer, za aktuarijski zadatak, znanstvenik podataka mogao bi sastaviti ručno izrađena pravila o smrtnosti pušača naspram nepušača. -Međutim, kada se u jednadžbu uključi mnogo drugih varijabli, ML model mogao bi se pokazati učinkovitijim za predviđanje budućih stopa smrtnosti na temelju povijesti zdravlja. Jedan veseliji primjer mogao bi biti izrada vremenskih predikcija za mjesec travanj na određenoj lokaciji na temelju podataka koji uključuju geografsku širinu, dužinu, klimatske promjene, blizinu oceana, obrasce mlaznih struja i više. +Međutim, kad se u jednadžbu uključi mnogo drugih varijabli, ML model može se pokazati učinkovitijim za predviđanje budućih stopa smrtnosti na temelju prijašnje zdravstvene povijesti. Veseliji primjer može biti predviđanje vremena za mjesec travanj na određenom mjestu temeljem podataka koji uključuju širinu, dužinu, klimatske promjene, blizinu oceana, obrasce jet stream-a i još mnogo toga. -✅ Ova [prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskim modelima nudi povijesnu perspektivu korištenja ML-a u analizi vremena. +✅ Ova [prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskim modelima nudi povijesnu perspektivu korištenja ML u analizi vremena. ## Zadaci prije izgradnje -Prije nego što počnete graditi svoj model, postoji nekoliko zadataka koje trebate dovršiti. Kako biste testirali svoje pitanje i oblikovali hipotezu na temelju predikcija modela, trebate identificirati i konfigurirati nekoliko elemenata. +Prije nego što započnete s izgradnjom modela, postoje nekoliko zadataka koje morate dovršiti. Da biste testirali svoje pitanje i oblikovali hipotezu na temelju predviđanja modela, trebate identificirati i konfigurirati nekoliko elemenata. ### Podaci -Da biste mogli odgovoriti na svoje pitanje s bilo kakvom sigurnošću, trebate dobru količinu podataka odgovarajućeg tipa. U ovom trenutku trebate učiniti dvije stvari: +Da biste mogli odgovoriti na svoje pitanje s bilo kakvom sigurnošću, trebate dobru količinu podataka odgovarajućeg tipa. Trenutno morate učiniti dvije stvari: -- **Prikupiti podatke**. Imajući na umu prethodnu lekciju o pravednosti u analizi podataka, pažljivo prikupite svoje podatke. Budite svjesni izvora tih podataka, bilo kakvih inherentnih pristranosti koje bi mogli imati, i dokumentirajte njihovo podrijetlo. -- **Pripremiti podatke**. Postoji nekoliko koraka u procesu pripreme podataka. Možda ćete trebati objediniti podatke i normalizirati ih ako dolaze iz različitih izvora. Možete poboljšati kvalitetu i količinu podataka raznim metodama, poput pretvaranja stringova u brojeve (kao što radimo u [Klasterizaciji](../../5-Clustering/1-Visualize/README.md)). Možete također generirati nove podatke na temelju originalnih (kao što radimo u [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Možete očistiti i urediti podatke (kao što ćemo učiniti prije lekcije o [Web aplikaciji](../../3-Web-App/README.md)). Na kraju, možda ćete trebati nasumično rasporediti i promiješati podatke, ovisno o tehnikama treniranja. +- **Prikupite podatke**. Imajući na umu prethodnu lekciju o pravednosti u analizi podataka, pažljivo prikupite svoje podatke. Budite svjesni izvora tih podataka, bilo kojih unutarnjih pristranosti koje mogu imati i dokumentirajte njihov izvor. +- **Pripremite podatke**. Postoji nekoliko koraka u procesu pripreme podataka. Možda ćete trebati objediniti podatke i normalizirati ih ako dolaze iz različitih izvora. Možete poboljšati kvalitetu i količinu podataka raznim metodama, poput pretvaranja nizova u brojeve (kao u [Klasifikaciji](../../5-Clustering/1-Visualize/README.md)). Možete također generirati nove podatke, temeljene na originalima (kao u [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Možete očistiti i urediti podatke (kao što ćemo učiniti prije lekcije [Web aplikacije](../../3-Web-App/README.md)). Na kraju, možda ćete ih također trebati nasumično posložiti i promiješati, ovisno o vašoj tehnici treniranja. -✅ Nakon prikupljanja i obrade podataka, odvojite trenutak da vidite hoće li njihov oblik omogućiti da se pozabavite svojim namjeravanim pitanjem. Može se dogoditi da podaci neće dobro funkcionirati u vašem zadatku, kao što otkrivamo u našim lekcijama o [Klasterizaciji](../../5-Clustering/1-Visualize/README.md)! +✅ Nakon prikupljanja i obrade podataka, odvojite trenutak da provjerite hoće li njihov oblik omogućiti odgovor na vaše postavljeno pitanje. Možda se pokaže da podaci neće dobro funkcionirati u zadatku, kao što otkrivamo u našim lekcijama o [Klasifikaciji](../../5-Clustering/1-Visualize/README.md)! ### Značajke i cilj -[Značajka](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je mjerljiva karakteristika vaših podataka. U mnogim skupovima podataka izražena je kao naslov stupca poput 'datum', 'veličina' ili 'boja'. Vaša varijabla značajke, obično predstavljena kao `X` u kodu, predstavlja ulaznu varijablu koja će se koristiti za treniranje modela. +[Značajka](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je mjerljiva svojstva vaših podataka. U mnogim skupovima podataka izražena je kao naslov stupca poput 'datum', 'veličina' ili 'boja'. Vaša značajka varijabla, obično prikazana kao `X` u kodu, predstavlja ulaznu varijablu koja će se koristiti za treniranje modela. -Cilj je ono što pokušavate predvidjeti. Cilj, obično predstavljen kao `y` u kodu, predstavlja odgovor na pitanje koje pokušavate postaviti svojim podacima: u prosincu, koje će **boje** bundeve biti najjeftinije? U San Franciscu, koje će četvrti imati najbolju **cijenu** nekretnina? Ponekad se cilj također naziva atribut oznake. +Cilj je stvar koju pokušavate predvidjeti. Cilj, obično označen kao `y` u kodu, predstavlja odgovor na pitanje koje postavljate svojim podacima: u prosincu, koja će boja bundeva biti najjeftinija? U San Franciscu, koje će četvrti imati najbolju cijenu nekretnina? Cilj se ponekad naziva i atributom oznake. ### Odabir varijable značajke -🎓 **Odabir značajki i ekstrakcija značajki** Kako znati koju varijablu odabrati prilikom izrade modela? Vjerojatno ćete proći kroz proces odabira značajki ili ekstrakcije značajki kako biste odabrali prave varijable za najperformantniji model. Međutim, nisu iste stvari: "Ekstrakcija značajki stvara nove značajke iz funkcija originalnih značajki, dok odabir značajki vraća podskup značajki." ([izvor](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Odabir značajke i izdvajanje značajki** Kako znate koju varijablu odabrati prilikom izrade modela? Vjerojatno ćete proći kroz proces odabira značajki ili izdvajanja značajki kako biste odabrali prave varijable za najuspješniji model. Međutim, to nisu iste stvari: "Izdvajanje značajki stvara nove značajke iz funkcija izvornih značajki, dok odabir značajki vraća podskup značajki." ([izvor](https://wikipedia.org/wiki/Feature_selection)) ### Vizualizirajte svoje podatke -Važan aspekt alata podatkovnog znanstvenika je moć vizualizacije podataka koristeći nekoliko izvrsnih biblioteka poput Seaborn ili MatPlotLib. Predstavljanje vaših podataka vizualno može vam omogućiti otkrivanje skrivenih korelacija koje možete iskoristiti. Vaše vizualizacije također vam mogu pomoći otkriti pristranost ili neuravnotežene podatke (kao što otkrivamo u [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). +Važan aspekt alata znanstvenika podataka je moć vizualizacije podataka koristeći nekoliko izvrsnih biblioteka poput Seaborn ili MatPlotLib. Vizualno predstavljanje podataka može vam omogućiti otkrivanje skrivenih korelacija koje možete iskoristiti. Vaši prikazi također vam mogu pomoći otkriti pristranost ili neuravnotežene podatke (kao što otkrivamo u [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). ### Podijelite svoj skup podataka -Prije treniranja, trebate podijeliti svoj skup podataka na dva ili više dijelova nejednake veličine koji i dalje dobro predstavljaju podatke. +Prije treniranja, trebate podijeliti svoj skup podataka u dva ili više dijelova različite veličine koji još uvijek dobro predstavljaju podatke. -- **Treniranje**. Ovaj dio skupa podataka koristi se za treniranje modela. Ovaj skup čini većinu originalnog skupa podataka. -- **Testiranje**. Testni skup podataka je neovisna grupa podataka, često prikupljena iz originalnih podataka, koju koristite za potvrdu performansi izgrađenog modela. -- **Validacija**. Skup za validaciju je manja neovisna grupa primjera koju koristite za podešavanje hiperparametara modela ili arhitekture kako biste poboljšali model. Ovisno o veličini vaših podataka i pitanju koje postavljate, možda nećete trebati izgraditi ovaj treći skup (kao što primjećujemo u [Predviđanju vremenskih serija](../../7-TimeSeries/1-Introduction/README.md)). +- **Trening**. Ovaj dio skupa podataka koristi se za treniranje modela. Ovaj skup čini većinu izvornog skupa podataka. +- **Testiranje**. Skup podataka za testiranje je neovisna skupina podataka, često prikupljena iz izvornog skupa, koju koristite za potvrdu performansi izgrađenog modela. +- **Validacija**. Skup za validaciju je manja neovisna skupina primjera koju koristite za podešavanje hiperparametara modela ili arhitekture da biste poboljšali model. Ovisno o veličini podataka i pitanju koje postavljate, možda nećete trebati stvarati ovaj treći skup (kao što navodimo u [Predviđanju vremenskih serija](../../7-TimeSeries/1-Introduction/README.md)). -## Izrada modela +## Izgradnja modela -Koristeći podatke za treniranje, vaš cilj je izgraditi model, odnosno statistički prikaz vaših podataka, koristeći razne algoritme za **treniranje**. Treniranje modela izlaže ga podacima i omogućuje mu da donosi pretpostavke o uočenim obrascima koje otkriva, potvrđuje i prihvaća ili odbacuje. +Koristeći svoje podatke za treniranje, cilj vam je izgraditi model ili statistički prikaz podataka, koristeći razne algoritme za **treniranje**. Trening modela izlaže ga podacima i omogućuje mu da donosi pretpostavke o otkrivenim obrascima koje provjerava i prihvaća ili odbacuje. ### Odlučite o metodi treniranja -Ovisno o vašem pitanju i prirodi vaših podataka, odabrat ćete metodu za treniranje. Pregledavajući [dokumentaciju Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - koju koristimo u ovom tečaju - možete istražiti mnoge načine treniranja modela. Ovisno o vašem iskustvu, možda ćete morati isprobati nekoliko različitih metoda kako biste izgradili najbolji model. Vjerojatno ćete proći kroz proces u kojem podatkovni znanstvenici procjenjuju performanse modela hranjenjem neviđenih podataka, provjeravajući točnost, pristranost i druge probleme koji degradiraju kvalitetu te odabiru najprikladniju metodu treniranja za zadatak. +Ovisno o vašem pitanju i prirodi podataka, odabrat ćete metodu za treniranje. Pregledavajući [Scikit-learn dokumentaciju](https://scikit-learn.org/stable/user_guide.html) – koju koristimo u ovom tečaju – možete istražiti mnoge načine treniranja modela. Ovisno o iskustvu, možda ćete morati isprobati nekoliko različitih metoda da biste izgradili najbolji model. Vjerojatno ćete proći proces u kojem znanstvenici podataka ocjenjuju performanse modela tako da mu daju neviđene podatke, provjeravaju točnost, pristranost i druge probleme koji umanjuju kvalitetu, te odabiru najprikladniju metodu treniranja za zadatak. ### Trenirajte model -Naoružani podacima za treniranje, spremni ste 'prilagoditi' ih kako biste stvorili model. Primijetit ćete da u mnogim ML bibliotekama postoji kod 'model.fit' - u ovom trenutku šaljete svoju varijablu značajke kao niz vrijednosti (obično 'X') i ciljnu varijablu (obično 'y'). +Naoružani podacima za treniranje, spremni ste na 'fit' modela. Primijetit ćete da mnoge ML biblioteke koriste kod 'model.fit' – upravo u toj fazi šaljete svoju varijablu značajke kao niz vrijednosti (obično 'X') i ciljnu varijablu (obično 'y'). -### Procijenite model +### Evaluirajte model -Nakon što je proces treniranja završen (može potrajati mnogo iteracija ili 'epoha' za treniranje velikog modela), moći ćete procijeniti kvalitetu modela koristeći testne podatke za procjenu njegovih performansi. Ovi podaci su podskup originalnih podataka koje model prethodno nije analizirao. Možete ispisati tablicu metrike o kvaliteti vašeg modela. +Nakon što je proces treniranja završen (može trajati mnogo iteracija ili 'epoha' za treniranje velikog modela), moći ćete ocijeniti kvalitetu modela koristeći testne podatke za procjenu njegove izvedbe. Ti podaci su podskup izvornih podataka koje model ranije nije analizirao. Možete ispisati tablicu metrike o kvaliteti vašeg modela. -🎓 **Prilagodba modela** +🎓 **Prilagođavanje modela** -U kontekstu strojnog učenja, prilagodba modela odnosi se na točnost osnovne funkcije modela dok pokušava analizirati podatke s kojima nije upoznat. +U kontekstu strojnog učenja, prilagođavanje modela odnosi se na točnost funkcije modela dok pokušava analizirati podatke s kojima nije upoznat. -🎓 **Premalo prilagođavanje** i **preveliko prilagođavanje** su uobičajeni problemi koji degradiraju kvalitetu modela, jer model ili ne odgovara dovoljno dobro ili previše dobro. To uzrokuje da model daje predikcije koje su ili previše usklađene ili premalo usklađene s podacima za treniranje. Previše prilagođen model predviđa podatke za treniranje previše dobro jer je previše naučio detalje i šum podataka. Premalo prilagođen model nije točan jer ne može ni točno analizirati podatke za treniranje niti podatke koje još nije 'vidio'. +🎓 **Nedovoljno prilagođavanje** i **preveliko prilagođavanje** česti su problemi koji smanjuju kvalitetu modela, jer model prilagođava podatke ili nedovoljno ili previše. To uzrokuje da model predviđa preblizu ili previše slobodno u odnosu na svoje podatke za treniranje. Model koji je previše prilagođen predviđa podatke za treniranje previše točno jer je naučio detalje i šum podataka previše dobro. Model koji je nedovoljno prilagođen nije točan jer ne može ni precizno analizirati podatke za treniranje ni podatke koje još nije 'vidio'. -![model prevelikog prilagođavanja](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/hr/overfitting.1c132d92bfd93cb6.webp) > Infografika od [Jen Looper](https://twitter.com/jenlooper) ## Podešavanje parametara -Nakon što je početno treniranje završeno, promatrajte kvalitetu modela i razmislite o njegovom poboljšanju podešavanjem njegovih 'hiperparametara'. Pročitajte više o procesu [u dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Kad je vaše početno treniranje završeno, promatrajte kvalitetu modela i razmislite o njegovom poboljšanju podešavanjem njegovih 'hiperparametara'. Više o procesu pročitajte [u dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Predikcija +## Predviđanje -Ovo je trenutak kada možete koristiti potpuno nove podatke za testiranje točnosti vašeg modela. U 'primijenjenom' ML okruženju, gdje gradite web alate za korištenje modela u produkciji, ovaj proces može uključivati prikupljanje korisničkog unosa (na primjer, pritisak na gumb) za postavljanje varijable i slanje modelu za inferenciju ili procjenu. +Ovo je trenutak kada možete koristiti potpuno nove podatke za testiranje točnosti vašeg modela. U 'primijenjenom' ML okruženju, gdje gradite web resurse za korištenje modela u produkciji, ovaj proces može uključivati prikupljanje korisničkog unosa (primjerice pritiskom na gumb) kako biste postavili varijablu i poslali je modelu na izvođenje zaključivanja ili evaluacije. -U ovim lekcijama otkrit ćete kako koristiti ove korake za pripremu, izgradnju, testiranje, procjenu i predikciju - sve geste podatkovnog znanstvenika i više, dok napredujete na svom putu da postanete 'full stack' ML inženjer. +U ovim lekcijama otkrit ćete kako koristiti ove korake za pripremu, izgradnju, testiranje, evaluaciju i predviđanje – sve geste znanstvenika podataka i više, dok napredujete na putu da postanete 'full stack' ML inženjer. --- ## 🚀Izazov -Nacrtajte dijagram toka koji odražava korake ML praktičara. Gdje se trenutno vidite u procesu? Gdje predviđate da ćete naići na poteškoće? Što vam se čini jednostavno? +Nacrtajte dijagram tijeka koji prikazuje korake ML praktičara. Gdje se sada vidite u procesu? Gdje predviđate da ćete naići na poteškoće? Što vam se čini lako? ## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/) ## Pregled i samostalno učenje -Pretražite online intervjue s podatkovnim znanstvenicima koji raspravljaju o svom svakodnevnom radu. Evo [jednog](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Potražite na internetu intervjue sa znanstvenicima podataka koji govore o svom svakodnevnom radu. Evo [jednog](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Zadatak -[Intervjuirajte podatkovnog znanstvenika](assignment.md) +[Interview a data scientist](assignment.md) --- -**Odricanje od odgovornosti**: -Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. \ No newline at end of file + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge prijevoda [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba se smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazume ili pogrešna tumačenja proizašla iz korištenja ovog prijevoda. + \ No newline at end of file diff --git a/translations/hr/2-Regression/3-Linear/README.md b/translations/hr/2-Regression/3-Linear/README.md index 82404bc3d8..45edd54830 100644 --- a/translations/hr/2-Regression/3-Linear/README.md +++ b/translations/hr/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Izgradnja regresijskog modela pomoću Scikit-learn: četiri načina regresije +# Izrada regresijskog modela pomoću Scikit-learn: regresija na četiri načina ## Napomena za početnike -Linearna regresija se koristi kada želimo predvidjeti **numeričku vrijednost** (na primjer, cijenu kuće, temperaturu ili prodaju). -Funkcionira tako da pronalazi pravu koja najbolje predstavlja odnos između ulaznih značajki i izlaza. +Linearna regresija se koristi kada želimo predvidjeti **numeričku vrijednost** (na primjer, cijenu kuće, temperaturu ili prodaju). +Radi pronalaženjem pravca koji najbolje predstavlja odnos između ulaznih značajki i izlaza. -U ovoj lekciji se fokusiramo na razumijevanje koncepta prije nego što istražimo naprednije tehnike regresije. -![Linear vs polynomial regression infographic](../../../../translated_images/hr/linear-polynomial.5523c7cb6576ccab.webp) -> Infografika autora [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Kviz prije lekcije](https://ff-quizzes.netlify.app/en/ml/) +U ovoj lekciji fokusiramo se na razumijevanje koncepta prije nego što istražimo naprednije tehnike regresije. +![Linear vs polynomial regression infographic](../../../../translated_images/hr/linear-polynomial.5523c7cb6576ccab.webp) +> Infografika autora [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ova je lekcija dostupna i u R-u!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Ova lekcija dostupna je i na R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Uvod -Do sada ste istraživali što je regresija koristeći uzorke podataka prikupljenih iz skupa podataka o cijenama bundeva koje ćemo koristiti kroz cijelu ovu lekciju. Također ste ih vizualizirali pomoću Matplotlib. +Do sada ste istraživali što je regresija na primjeru podataka iz skupa podataka o cijenama bundeva koje ćemo koristiti kroz ovu lekciju. Također ste ih vizualizirali koristeći Matplotlib. -Sada ste spremni dublje zaroniti u regresiju za ML. Dok vizualizacija omogućuje razumijevanje podataka, prava snaga strojnog učenja dolazi iz _treninga modela_. Modeli se treniraju na povijesnim podacima kako bi automatski uhvatili ovisnosti u podacima i omogućuju predviđanje ishoda za nove podatke koje model prije nije vidio. +Sada ste spremni za dublje razumijevanje regresije za strojno učenje. Dok vizualizacija pomaže da razumijete podatke, prava moć strojnog učenja dolazi iz _treniranja modela_. Modeli se treniraju na povijesnim podacima kako bi automatski uhvatili ovisnosti u podacima, a omogućuju vam predviđanje ishoda za nove podatke koje model još nije vidio. -U ovoj lekciji ćete naučiti više o dvije vrste regresije: _osnovna linearna regresija_ i _polinomijalna regresija_, zajedno s dijelom matematike koja stoji iza tih tehnika. Ti modeli će nam omogućiti predviđanje cijena bundeva ovisno o različitim ulaznim podacima. +U ovoj lekciji naučit ćete više o dvije vrste regresije: _osnovnoj linearnoj regresiji_ i _polinomnoj regresiji_, zajedno s matematikom koja stoji iza ovih tehnika. Ti modeli će nam omogućiti predviđanje cijena bundeva ovisno o različitim ulaznim podacima. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Kliknite na sliku gore za kratak video pregled linearne regresije. +> 🎥 Kliknite na sliku iznad za kratak video pregled linearne regresije. -> Kroz ovaj kurikulum pretpostavljamo minimalno znanje iz matematike i nastojimo ga učiniti dostupnim studentima iz drugih područja, stoga obratite pažnju na bilješke, 🧮 oznake, dijagrame i druge nastavne alate koji pomažu u razumijevanju. +> Tijekom ovog kurikuluma pretpostavljamo minimalno matematičko znanje i nastojimo ga učiniti dostupnim studentima iz drugih područja, pa obratite pozornost na bilješke, 🧮 istaknute kutke, dijagrame i druge alate za učenje koji pomažu u razumijevanju. ### Preduvjeti -Sada biste trebali biti upoznati sa strukturom podataka o bundevama koje promatramo. One su unaprijed učitane i očišćene u datoteci _notebook.ipynb_ ove lekcije. U datoteci je cijena bundeve prikazana po košari. Provjerite da možete pokretati ove bilježnice u kernelima u Visual Studio Codeu. +Trebao bi biti upoznat sa strukturom podataka o bundevama koje proučavamo. Možete ih pronaći unaprijed učitane i očišćene u datoteci _notebook.ipynb_ koja prati ovu lekciju. U toj datoteci cijena bundeve je prikazana po šokcu u novom DataFrameu. Pobrinite se da možete pokretati ove bilježnice u kernelima unutar Visual Studio Codea. ### Priprema -Kao podsjetnik, učitavate ove podatke kako biste mogli postavljati pitanja o njima. +Kao podsjetnik, učitavate ove podatke da biste mogli postavljati pitanja o njima. -- Kada je najbolje vrijeme za kupnju bundeva? -- Koju cijenu mogu očekivati za kutiju mini bundeva? -- Trebam li ih kupovati u košarama od pola bushela ili u kutiji od 1 1/9 bushela? -Nastavimo dalje kopati u ove podatke. +- Kada je najbolje vrijeme za kupiti bundeve? +- Koju cijenu mogu očekivati za kutiju malih bundeva? +- Trebam li kupovati u polušokcima ili po kutiji od 1 1/9 šokca? +Nastavimo dalje istraživati ove podatke. -U prethodnoj lekciji ste napravili Pandas DataFrame i popunili ga dijelom izvornog skupa podataka, standardizirajući cijene po bushelu. Time ste uspjeli prikupiti oko 400 podataka samo za jesenske mjesece. +U prethodnoj lekciji ste kreirali Pandas DataFrame i popunili ga dijelom izvornog skupa podataka, standardizirajući cijenu po šokcu. Međutim, tako ste uspjeli prikupiti oko 400 podataka i to samo za jesenske mjesece. -Pogledajte podatke koje smo unaprijed učitali u pratećoj bilježnici za ovu lekciju. Podaci su unaprijed učitani i nacrtan je početni scatterplot koji prikazuje podatke po mjesecima. Možda možemo dobiti malo više detalja o prirodi podataka dodatnim čišćenjem. +Pogledajte podatke koje smo unaprijed učitali u bilježnici ove lekcije. Podaci su već učitani i prikazan je početni scatterplot koji pokazuje podatke po mjesecu. Možda možemo dobiti malo više detalja o prirodi podataka njihovim dodatnim čišćenjem. -## Linearna regresijska crta +## Linija linearne regresije -Kao što ste naučili u Lekciji 1, cilj linearne regresije je moći nacrtati liniju da: +Kao što ste naučili u Lekciji 1, cilj vježbe linearne regresije je moći nacrtati liniju koja će: -- **Prikaže odnose varijabli**. Prikaže odnos između varijabli -- **Napraviti predviđanja**. Precizno predvidjeti gdje će se novi podatak smjestiti u odnosu na tu liniju. - -Tipično za **regresiju najmanjih kvadrata** je crtanje takve linije. Termin "najmanjih kvadrata" odnosi se na proces minimiziranja ukupne pogreške u našem modelu. Za svaku točku mjerimo vertikalnu udaljenost (zvanu rezidual) između stvarne točke i naše regresijske linije. +- **Prikazati odnose između varijabli**. Pokazati odnos između varijabli +- **Napraviti predviđanja**. Točno predvidjeti gdje bi novi podatak pao u odnosu na tu liniju. + +Tipično za **Least-Squares regresiju** je crtanje ovakve linije. Pojam "Least-Squares" odnosi se na proces minimizacije ukupne pogreške u našem modelu. Za svaki podatak mjerimo okomitu udaljenost (nazvanu ostatak) između stvarne točke i naše regresijske linije. Te udaljenosti kvadriramo iz dva glavna razloga: -1. **Veličina nasuprot smjeru:** Želimo tretirati pogrešku od -5 isto kao i pogrešku od +5. Kvadriranjem sve vrijednosti postaju pozitivne. +1. **Veličina a ne smjer:** Želimo tretirati pogrešku -5 jednako kao i pogrešku +5. Kvadriranjem sve vrijednosti postaju pozitivne. -2. **Kazna za odstupanja:** Kvadriranjem se daje veća težina većim pogreškama, tjerajući liniju da bude bliža točkama koje su daleko. +2. **Kazna za outliere:** Kvadriranjem veće pogreške dobivaju veću težinu, prisiljavajući liniju da bude bliže udaljenim točkama. -Zatim zbrojimo sve te kvadrirane vrijednosti. Cilj je pronaći specifičnu liniju za koju je taj konačni zbroj najmanji (najmanja moguća vrijednost)—otuda i naziv "najmanjih kvadrata". +Zatim zbrajamo sve kvadrirane vrijednosti. Cilj je pronaći točnu liniju za koju je taj konačni zbroj najmanji (najmanja moguća vrijednost) — po čemu je naziv "Least-Squares". -> **🧮 Pokaži mi matematiku** -> -> Ova linija, nazvana _linijom najboljeg pristajanja_, može se izraziti [jednadžbom](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Pokaži mi matematiku** +> +> Ova linija, nazvana _linija najboljeg pristajanja_ može se izraziti [jednadžbom](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` je 'objašnjavajuća varijabla'. `Y` je 'ovisna varijabla'. Nagib linije je `b` a `a` je y-presjek, što je vrijednost `Y` kad je `X = 0`. -> ->![izračun nagiba](../../../../translated_images/hr/slope.f3c9d5910ddbfcf9.webp) -> -> Prvo, izračunajte nagib `b`. Infografika autora [Jen Looper](https://twitter.com/jenlooper) -> -> Drugim riječima, i referirajući se na originalno pitanje naših podataka o bundevama: "predvidjeti cijenu bundeve po bushelu po mjesecu", `X` bi označavalo cijenu a `Y` mjesec prodaje. -> ->![dovršavanje jednadžbe](../../../../translated_images/hr/calculation.a209813050a1ddb1.webp) -> -> Izračunajte vrijednost Y. Ako plaćate oko 4 dolara, mora biti travanj! Infografika autora [Jen Looper](https://twitter.com/jenlooper) -> -> Matematika koja izračunava liniju mora pokazati nagib linije, koji također ovisi o presjeku, odnosno gdje se `Y` nalazi kada je `X = 0`. -> -> Metodu izračuna ovih vrijednosti možete proučiti na stranici [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Posjetite i [ovaj kalkulator najmanjih kvadrata](https://www.mathsisfun.com/data/least-squares-calculator.html) da vidite kako vrijednosti brojeva utječu na liniju. +> +> `X` je 'objašnjavajuća varijabla'. `Y` je 'ovisna varijabla'. Nagib linije je `b`, a `a` je presjek na y-osi, što označava vrijednost `Y` kada je `X = 0`. +> +>![izračun nagiba](../../../../translated_images/hr/slope.f3c9d5910ddbfcf9.webp) +> +> Prvo izračunajte nagib `b`. Infografika autora [Jen Looper](https://twitter.com/jenlooper) +> +> Drugim riječima, i imajući na umu naše izvorišno pitanje o podacima o bundevama: "predvidjeti cijenu bundeve po šokcu prema mjesecu", `X` bi označavalo cijenu, a `Y` mjesec prodaje. +> +>![dovrši jednadžbu](../../../../translated_images/hr/calculation.a209813050a1ddb1.webp) +> +> Izračunajte vrijednost Y. Ako plaćate oko 4 dolara, mora biti travanj! Infografika autora [Jen Looper](https://twitter.com/jenlooper) +> +> Matematika koja izračunava liniju mora prikazati nagib linije, koji ovisi i o presjeku, odnosno gdje se `Y` nalazi kada je `X = 0`. +> +> Metodu izračuna za ove vrijednosti možete vidjeti na [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Posjetite i [ovaj kalkulator najmanjih kvadrata](https://www.mathsisfun.com/data/least-squares-calculator.html) da vidite kako vrijednosti brojeva utječu na liniju. ## Korelacija -Još jedan pojam koji treba razumjeti je **koeficijent korelacije** između zadanih X i Y varijabli. Pomoću scatterplota možete brzo vizualizirati ovaj koeficijent. Grafikon s točkama razbacanim u lijepoj liniji ima visoku korelaciju, dok graf s točkama razbacanim posvuda između X i Y ima nisku korelaciju. +Još jedan pojam za razumjeti je **Koeficijent korelacije** između danih varijabli X i Y. Korištenjem scatterplota možete brzo vizualizirati ovaj koeficijent. Grafikon s točkama razbacanim duž pravilne linije ima visoku korelaciju, dok grafikon s točkama rasprostranjenim posvuda između X i Y ima nisku korelaciju. -Dobar linearni regresijski model će imati visok koeficijent korelacije (bliži 1 nego 0) koristeći metodu najmanjih kvadrata s regresijskom linijom. +Dobar linearni regresijski model bit će onaj koji ima visok (bliži 1 nego 0) Koeficijent korelacije koristeći metodu najmanjih kvadrata s regresijskom linijom. -✅ Pokrenite bilježnicu koja prati ovu lekciju i pogledajte scatterplot Mjeseca prema Cijeni. Ima li podataka koji povezuju Mjesec i Cijenu kod prodaje bundeva visoku ili nisku korelaciju prema vašoj vizualnoj interpretaciji scatterplota? Mijenja li se to ako koristite finiju mjeru umjesto `Month`, npr. *dan u godini* (tj. broj dana od početka godine)? +✅ Pokrenite bilježnicu koja prati ovu lekciju i pogledajte scatterplot Mjesec prema Cijeni. Čini li se da podaci koji povezuju Mjesec i Cijenu za prodaju bundeva imaju visoku ili nisku korelaciju prema vašoj vizualnoj interpretaciji scatterplota? Mijenja li to ako koristite detaljniju mjeru umjesto `Mjesec`, npr. *dan u godini* (tj. broj dana od početka godine)? U sljedećem kodu pretpostavit ćemo da smo očistili podatke i dobili DataFrame nazvan `new_pumpkins`, sličan sljedećem: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +ID | Mjesec | DaniUGodini | Vrsta | Grad | Pakiranje | Najniža cijena | Najviša cijena | Cijena +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 15.0 | 15.0 | 13.636364 -> Kod za čišćenje podataka dostupan je u [`notebook.ipynb`](notebook.ipynb). Izveli smo iste korake čišćenja kao u prethodnoj lekciji i izračunali stupac `DayOfYear` koristeći sljedeći izraz: +> Kod za čišćenje podataka dostupan je u [`notebook.ipynb`](notebook.ipynb). Proveli smo iste korake čišćenja kao u prethodnoj lekciji, a stupac `DaniUGodini` izračunat je sljedećim izrazom: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Sada, kad imate razumijevanje matematike iza linearne regresije, stvorimo regresijski model da vidimo možemo li predvidjeti koja će pakiranja bundeva imati najbolje cijene. Netko tko kupuje bundeve za natjecanje ili ukrasnu parcelu možda želi ove informacije kako bi optimizirao svoje kupovine pakiranja bundeva. + +Sada kad imate razumijevanje matematike iza linearne regresije, kreirajmo regresijski model da vidimo možemo li predvidjeti koje pakiranje bundeva ima najbolje cijene. Netko tko kupuje bundeve za jesensku sadnju može htjeti te informacije kako bi optimizirao svoje kupnje pakiranja bundeva za sadnju. ## Traženje korelacije [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Kliknite na sliku gore za kratak video pregled korelacije. +> 🎥 Kliknite na sliku iznad za kratak video pregled korelacije. -Iz prethodne lekcije vjerojatno ste vidjeli da prosječna cijena po mjesecima izgleda ovako: +Iz prethodne lekcije vjerojatno ste vidjeli da prosječna cijena za različite mjesece izgleda ovako: Average price by month -Ovo sugerira da bi trebala postojati neka korelacija, i možemo pokušati trenirati linearni regresijski model koji predviđa odnos između `Month` i `Price`, ili između `DayOfYear` i `Price`. Slijedi scatter plot koji prikazuje posljednji odnos: +To sugerira da postoje neke korelacije, i možemo pokušati trenirati linearan regresijski model da predvidi odnos između `Mjesec` i `Cijena`, ili između `DaniUGodini` i `Cijena`. Evo scatterplota koji prikazuje ovaj zadnji odnos: Scatter plot of Price vs. Day of Year -Pogledajmo je li korelacija prisutna uz pomoć funkcije `corr`: +Pogledajmo postoji li korelacija koristeći funkciju `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Izgleda da je korelacija prilično mala, -0.15 po `Month` i -0.17 po `DayOfMonth`, ali može postojati još neki važan odnos. Izgleda da postoje različite skupine cijena koje odgovaraju različitim sortama bundeva. Da bismo potvrdili ovu hipotezu, prikažimo svaku kategoriju bundeva različitom bojom. Prosljeđivanjem parametra `ax` funkciji za crtanje `scatter` možemo nacrtati sve točke na istom grafikonu: + +Izgleda da je korelacija prilično mala, -0.15 po `Mjesec` i -0.17 po `DaniUGodini`, ali može postojati još neki važniji odnos. Izgleda da postoje različite skupine cijena koje odgovaraju različitim sortama bundeva. Za potvrdu ove hipoteze nacrtajmo svaku kategoriju bundeva u različitoj boji. Prosljeđivanjem parametra `ax` funkciji `scatter` možemo nacrtati sve točke na istom grafikonu: ```python ax=None @@ -139,18 +139,18 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - + Scatter plot of Price vs. Day of Year -Naša istraga pokazuje da sorta ima veći utjecaj na ukupnu cijenu nego stvarni datum prodaje. Ovo vidimo i na stupčastom grafikonu: +Naše istraživanje sugerira da vrsta bundeve ima veći utjecaj na ukupnu cijenu nego stvarni dan prodaje. To možemo vidjeti i na stupčastom grafikonu: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - + Bar graph of price vs variety -Za sada se usredotočimo samo na jednu sortu bundeve, 'pie type', i pogledajmo kako datum utječe na cijenu: +Za sada se usredotočimo samo na jednu sortu bundeve, tip 'za pitu', i pogledajmo kakav utjecaj datum ima na cijenu: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,56 +158,56 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -Ako sada izračunamo korelaciju između `Price` i `DayOfYear` pomoću funkcije `corr`, dobit ćemo nešto poput `-0.27` - što znači da je treniranje prediktivnog modela smisleno. +Ako sada izračunamo korelaciju između `Cijene` i `DaniUGodini` koristeći `corr` funkciju, dobit ćemo vrijednost oko `-0.27` - što znači da ima smisla trenirati prediktivni model. -> Prije nego treniramo linearni regresijski model, važno je osigurati da su naši podaci čisti. Linearna regresija ne radi dobro s nedostajućim vrijednostima, stoga ima smisla ukloniti sve prazne ćelije: +> Prije treniranja linearnog regresijskog modela važan je uvjet da su podaci čisti. Linearna regresija ne radi dobro s nedostajućim vrijednostima, stoga ima smisla ukloniti sve prazne ćelije: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Drugi pristup bi bio popuniti prazne vrijednosti prosječnim vrijednostima iz odgovarajućeg stupca. + +Drugi pristup bi bio popuniti te prazne vrijednosti srednjom vrijednosti odgovarajućeg stupca. ## Jednostavna linearna regresija [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Kliknite na sliku gore za kratak video pregled linearne i polinomijalne regresije. +> 🎥 Kliknite na sliku iznad za kratak video pregled linearne i polinomne regresije. -Za treniranje našeg linearno regresijskog modela koristit ćemo biblioteku **Scikit-learn**. +Za treniranje našeg Linear Regression modela koristit ćemo **Scikit-learn** biblioteku. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Počinjemo odvajajući ulazne vrijednosti (značajke) i očekivane izlazne vrijednosti (etikete) u zasebne numpy nizove: + +Počinjemo odvajanjem ulaznih vrijednosti (značajki) i očekivanog izlaza (oznake) u zasebne numpy nizove: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> Primijetite da smo morali izvršiti `reshape` na ulaznim podacima da bi Linear Regression paket pravilno razumio ulaz. Linearna regresija očekuje 2D niz kao ulaz, gdje svaki redak niza predstavlja vektor ulaznih značajki. U našem slučaju, budući da imamo samo jednu ulaznu varijablu, treba nam niz oblika N×1, gdje je N veličina skupa podataka. -Zatim trebamo podijeliti podatke u skupove za treniranje i testiranje, kako bismo mogli validirati naš model nakon treninga: +> Primijetite da smo morali izvesti `reshape` na ulaznim podacima kako bi Linearna regresija ispravno razumjela podatke. Linearna regresija očekuje 2D-niz kao ulaz, gdje svaki redak niza predstavlja vektor ulaznih značajki. U našem slučaju, jer imamo samo jednu ulaznu značajku, trebamo niz oblika N×1, gdje je N veličina skupa podataka. + +Zatim trebamo podijeliti podatke u skupove za treniranje i testiranje, kako bismo mogli validirati model nakon treniranja: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Na kraju, treniranje samog modela linearne regresije traje samo dvije linije koda. Definiramo objekt `LinearRegression` i prilagođavamo ga naša podacima pomoću metode `fit`: + +Na kraju, treniranje stvarnog linearnog regresijskog modela traje samo dvije linije koda. Definiramo objekt `LinearRegression` i prilagođavamo ga našim podacima pomoću metode `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objekt `LinearRegression` nakon treniranja (`fit`) sadrži sve koeficijente regresije, do kojih se može pristupiti putem svojstva `.coef_`. U našem slučaju postoji samo jedan koeficijent, koji bi trebao biti oko `-0.017`. To znači da cijene djeluju kao da nešto padaju s vremenom, ali ne previše, oko 2 centa dnevno. Također možemo pristupiti točki presjeka regresije s Y-osi koristeći `lin_reg.intercept_` - u našem slučaju bit će oko `21`, što označava cijenu na početku godine. +Objekt `LinearRegression` nakon treniranja (`fit`) sadrži sve koeficijente regresije, kojima se može pristupiti putem svojstva `.coef_`. U našem slučaju postoji samo jedan koeficijent, koji bi trebao biti oko `-0.017`. To znači da cijene nekako padaju s vremenom, ali ne previše, oko 2 centa dnevno. Također možemo pristupiti presjeku regresije s Y-osi koristeći `lin_reg.intercept_` - u našem slučaju bit će oko `21`, što označava cijenu na početku godine. -Da bismo vidjeli koliko je naš model točan, možemo predvidjeti cijene na testnom skupu podataka i zatim izmjeriti koliko su naša predviđanja bliska očekivanim vrijednostima. To se može napraviti koristeći metriku korijen srednje kvadratne pogreške (RMSE), što je korijen sredine svih kvadrata razlika između očekivane i predviđene vrijednosti. +Da bismo vidjeli koliko je naš model točan, možemo predvidjeti cijene na testnom skupu podataka, a zatim izmjeriti koliko su naša predviđanja bliska očekivanim vrijednostima. To se može napraviti korištenjem metrike korijenskog srednjeg kvadratnog odstupanja (RMSE), koja je korijen prosjeka svih kvadrata razlika između očekivane i predviđene vrijednosti. ```python pred = lin_reg.predict(X_test) @@ -216,16 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Naša pogreška je otprilike oko 2 boda, što je ~17%. Nije baš dobro. Još jedan pokazatelj kvalitete modela je **koeficijent determinacije**, koji se može dobiti ovako: +Naša pogreška čini se da je oko 2 boda, što je ~17%. Nije baš dobro. Drugi pokazatelj kvalitete modela je **koeficijent determinacije**, koji se može dobiti ovako: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` +Ako je vrijednost 0, to znači da model ne uzima u obzir ulazne podatke i ponaša se kao *najgori linearni prediktor*, što je jednostavno srednja vrijednost rezultata. Vrijednost 1 znači da možemo savršeno predvidjeti sve očekivane izlaze. U našem slučaju, koeficijent je oko 0.06, što je prilično nisko. -Ako je vrijednost 0, to znači da model ne uzima u obzir ulazne podatke i djeluje kao *najgori linearni prediktor*, što je jednostavno srednja vrijednost rezultata. Vrijednost 1 znači da možemo savršeno predvidjeti sve očekivane izlaze. U našem slučaju koeficijent je oko 0.06, što je prilično nisko. - -Također možemo prikazati testne podatke zajedno s regresijskom linijom da bolje vidimo kako regresija funkcionira u našem slučaju: +Također možemo nacrtati testne podatke zajedno s regresijskom linijom da bolje vidimo kako regresija funkcionira u našem slučaju: ```python plt.scatter(X_test,y_test) @@ -234,19 +233,19 @@ plt.plot(X_test,pred) Linear regression -## Polinomijalna regresija +## Polinomska regresija -Još jedna vrsta linearne regresije je polinomijalna regresija. Iako ponekad postoji linearna veza između varijabli - što je veća bundeva po volumenu, to je veća cijena - ponekad te veze nije moguće prikazati kao ravninu ili pravu liniju. +Druga vrsta linearne regresije je polinomska regresija. Iako ponekad postoji linearna veza između varijabli - što je bundeva veća po volumenu, to je cijena viša - ponekad se te veze ne mogu prikazati kao ravnina ili prava linija. -✅ Evo [još nekoliko primjera](https://online.stat.psu.edu/stat501/lesson/9/9.8) podataka za koje bi se mogla koristiti polinomijalna regresija. +✅ Evo [nekoliko dodatnih primjera](https://online.stat.psu.edu/stat501/lesson/9/9.8) podataka za koje bi se mogla koristiti polinomska regresija. -Ponovno pogledajte odnos između Datuma i Cijene. Izgleda li ovaj scatterplot kao da bi ga nužno trebalo analizirati linijom? Zar cijene ne mogu varirati? U tom slučaju možete pokušati polinomijalnu regresiju. +Pogledajte ponovno odnos između datuma i cijene. Čini li vam se da ovaj scatterplot nužno treba analizirati pravom linijom? Zar cijene ne mogu varirati? U tom slučaju možete pokušati polinomsku regresiju. ✅ Polinomi su matematički izrazi koji mogu sadržavati jednu ili više varijabli i koeficijenata. -Polinomijalna regresija stvara zakrivljenu liniju kako bi bolje pristajala nelinearnim podacima. U našem slučaju, ako uključimo kvadratnu varijablu `DayOfYear` u ulazne podatke, trebali bismo biti u mogućnosti uklopiti podatke parabolom, koja će imati minimum u nekoj točki tijekom godine. +Polinomska regresija stvara zakrivljenu liniju koja bolje pristaje nelinearnim podacima. U našem slučaju, ako uključimo kvadratnu varijablu `DayOfYear` u ulazne podatke, trebali bismo moći prilagoditi podatke parabolnom krivuljom koja će imati minimum u nekoj točki unutar godine. -Scikit-learn uključuje korisni [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za spajanje različitih koraka obrade podataka zajedno. **Pipeline** je niz **estimatora**. U našem slučaju ćemo napraviti pipeline koji prvo dodaje polinomijalne značajke našem modelu, a zatim trenira regresiju: +Scikit-learn uključuje korisno [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za kombiniranje različitih koraka obrade podataka. **Pipeline** je lanac **procjenitelja (estimators)**. U našem slučaju, kreirat ćemo pipeline koji najprije dodaje polinomske značajke našem modelu, a zatim trenira regresiju: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Korištenjem `PolynomialFeatures(2)` znači da će se uključiti svi polinomi drugog stupnja iz ulaznih podataka. U našem slučaju to će biti samo `DayOfYear`2, ali ako imamo dvije ulazne varijable X i Y, to će uključiti X2, XY i Y2. Također možemo koristiti i polinome višeg stupnja ako želimo. +Korištenje `PolynomialFeatures(2)` znači da ćemo uključiti sve polinome drugog stupnja iz ulaznih podataka. U našem slučaju to znači samo `DayOfYear`2, ali za dvije ulazne varijable X i Y, to će dodati X2, XY i Y2. Možemo koristiti i polinome višeg stupnja ako želimo. + +Pipelines se mogu koristiti na isti način kao i originalni objekt `LinearRegression`, tj. možemo `fit`-ati pipeline, a zatim koristiti `predict` da dobijemo rezultate predikcije: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Za crtanje glatke krivulje aproksimacije koristimo `np.linspace` da stvorimo ujednačenu raspodjelu ulaznih vrijednosti, umjesto crtanja izravno na neuređene test podatke (što bi proizvelo cik-cak liniju): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline-ovi se mogu koristiti na isti način kao i originalni objekt `LinearRegression`, tj. možemo `fit` pipeline, a zatim koristiti `predict` za dobivanje rezultata predviđanja. Evo grafa koji prikazuje testne podatke i aproksimacijsku krivulju: +Evo grafikona koji prikazuje testne podatke i krivulju aproksimacije: Polynomial regression -Upotrebom polinomijalne regresije možemo dobiti nešto niži MSE i viši koeficijent determinacije, ali ne značajno. Moramo uzeti u obzir i druge značajke! +Korištenjem polinomske regresije možemo dobiti nešto niži RMSE i viši koeficijent determinacije, ali ne značajno. Trebamo uzeti u obzir i druge značajke! -> Možete primijetiti da su minimalne cijene bundeva zabilježene negdje oko Noći vještica. Kako to možete objasniti? +> Možete primijetiti da se minimalne cijene bundeva javljaju negdje oko Noći vještica. Kako to možete objasniti? -🎃 Čestitamo, upravo ste kreirali model koji može pomoći u predviđanju cijene bundeva za pite. Vjerojatno možete ponoviti isti postupak za sve vrste bundeva, ali to bi bilo zamorno. Sada ćemo naučiti kako u našem modelu uzeti u obzir sortu bundeve! +🎃 Čestitamo, upravo ste stvorili model koji može pomoći u predviđanju cijene bundeva za pite. Vjerojatno možete ponoviti isti postupak za sve vrste bundeva, ali to bi bilo naporno. Sada naučimo kako uzeti u obzir sortu bundeve u našem modelu! ## Kategorizirane značajke -U idealnom svijetu želimo moći predvidjeti cijene za različite sorte bundeva koristeći isti model. Međutim, stupac `Variety` se donekle razlikuje od stupaca poput `Month`, jer sadrži nenumeričke vrijednosti. Takvi se stupci nazivaju **kategorizirani**. +U idealnom svijetu želimo moći predvidjeti cijene za različite sorte bundeva koristeći isti model. Međutim, stupac `Variety` je donekle drugačiji od stupaca poput `Month`, jer sadrži nenumeričke vrijednosti. Takvi stupci se nazivaju **kategorizirani**. -[![ML for beginners - Kategorizirano predviđanje s linearnom regresijom](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Kategorizirano predviđanje s linearnom regresijom") +[![ML za početnike - Predikcije kategoriziranih značajki s linearnom regresijom](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Kliknite na sliku iznad za kratki video pregled korištenja kategoriziranih značajki. +> 🎥 Kliknite sliku za kratki video pregled korištenja kategoriziranih značajki. -Ovdje možete vidjeti kako se prosječna cijena razlikuje po sorti: +Ovdje možete vidjeti kako prosječna cijena ovisi o sorti: Average price by variety -Da bismo uzeli sortu u obzir, prvo je moramo pretvoriti u numerički oblik, odnosno **enkodirati**. Postoji nekoliko načina kako to možemo napraviti: +Da bismo uzeli sortu u obzir, prvo ju moramo pretvoriti u numerički oblik, tj. **kodirati**. Postoji nekoliko načina kako to možemo učiniti: -* Jednostavna **numerička enkodiranja** izgradi će tablicu različitih sorti, a zatim zamijeni ime sorte njezinim indeksom u toj tablici. To nije najbolja ideja za linearnu regresiju, jer linearna regresija uzima stvarnu numeričku vrijednost indeksa i dodaje je rezultatu, množeći koeficijentom. U našem slučaju odnos između broja indeksa i cijene je jasno nelinearan, čak i ako osiguramo da su indeksi sortirani na neki specifičan način. -* **One-hot enkodiranje** će zamijeniti stupac `Variety` sa 4 različita stupca, po jedan za svaku sortu. Svaki stupac će imati vrijednost `1` ako je odgovarajući redak te sorte, i `0` inače. To znači da će u linearnoj regresiji biti četiri koeficijenta, jedan za svaku sortu bundeve, koji su odgovorni za "početnu cijenu" (ili bolje rečeno "dodatnu cijenu") za tu sortu. +* Jednostavno **numeričko kodiranje** izgradi tablicu različitih sorti, a zatim zamijeni naziv sorte indeksom u toj tablici. Ovo nije najbolja ideja za linearnu regresiju, jer linearna regresija koristi stvarnu numeričku vrijednost indeksa i dodaje je u rezultat množeći s nekim koeficijentom. U našem slučaju, odnos između broja indeksa i cijene je jasno nelinearan, čak i ako se pobrinemo da indeksi budu poredani na određeni način. +* **One-hot kodiranje** zamijenit će stupac `Variety` s 4 različita stupca, po jednim za svaku sortu. Svaki stupac će sadržavati `1` ako je odgovarajući redak te sorte, a `0` inače. To znači da će u linearnoj regresiji biti četiri koeficijenta, po jedan za svaku sortu bundeve, odgovoran za "početnu cijenu" (ili bolje rečeno "dodatnu cijenu") za tu sortu. -Sljedeći kod pokazuje kako možemo napraviti one-hot enkodiranje sorte: +Kod ispod prikazuje kako možemo napraviti one-hot kodiranje sorte: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Za treniranje linearne regresije koristeći one-hot enkodiranu sortu kao ulaz, samo trebamo ispravno inicijalizirati podatke `X` i `y`: +Za treniranje linearne regresije koristeći one-hot kodiranu sortu kao ulaz, samo trebamo pravilno inicijalizirati podatke `X` i `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Ostatak koda je isti kao onaj koji smo koristili gore za treniranje linearne regresije. Ako probate, vidjet ćete da je srednja kvadratna pogreška otprilike ista, ali koeficijent determinacije je znatno veći (~77%). Da bismo dobili još točnija predviđanja, možemo uzeti u obzir i više kategoriziranih značajki, kao i numeričke kao što su `Month` ili `DayOfYear`. Da bismo dobili jedan veliki niz značajki, možemo koristiti `join`: +Ostatak koda je isti kao onaj koji smo koristili gore za treniranje linearne regresije. Ako probate, vidjet ćete da je srednja kvadratna pogreška otprilike ista, ali dobivamo znatno viši koeficijent determinacije (~77%). Da bismo dobili još točnije predikcije, možemo uzeti u obzir i druge kategorizirane značajke, kao i numeričke, poput `Month` ili `DayOfYear`. Da bismo dobili jedan veliki niz značajki, možemo koristiti `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,14 +341,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Ovdje također uzimamo u obzir grad i tip pakiranja, što nam daje MSE 2.84 (10%) i determinaciju 0.94! +Ovdje također uzimamo u obzir `City` i vrstu `Package`, što nam daje RMSE 2.84 (10.5%) i determinaciju 0.94! ## Sve zajedno -Da bismo napravili najbolji model, možemo koristiti kombinirane (one-hot enkodirane kategorizirane + numeričke) podatke iz gornjeg primjera zajedno s polinomijalnom regresijom. Evo kompletnog koda radi vaše udobnosti: +Da bismo napravili najbolji model, možemo koristiti kombinirane (one-hot kodirane kategorizirane + numeričke) podatke iz gornjeg primjera zajedno s polinomskom regresijom. Evo kompletan kod radi vaše udobnosti: ```python -# postavi podatke za trening +# postavi podatke za treniranje X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -344,44 +365,44 @@ pipeline.fit(X_train,y_train) # predvidi rezultate za test podatke pred = pipeline.predict(X_test) -# izračunaj MSE i determinaciju -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# izračunaj RMSE i koeficijent determinacije +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -To bi nam trebalo dati najbolji koeficijent determinacije od gotovo 97% i MSE=2.23 (~8% pogreške u predviđanju). +Ovo bi nam trebalo dati najbolji koeficijent determinacije od gotovo 97%, i RMSE=2.23 (~8% pogreška predikcije). -| Model | MSE | Determinacija | +| Model | RMSE | Determination | |-------|-----|---------------| -| Linearni model na `DayOfYear` | 2.77 (17.2%) | 0.07 | -| Polinomijalni model na `DayOfYear` | 2.73 (17.0%) | 0.08 | -| Linearni model na `Variety` | 5.24 (19.7%) | 0.77 | -| Linearni model na svim značajkama | 2.84 (10.5%) | 0.94 | -| Polinomijalni model na svim značajkama | 2.23 (8.25%) | 0.97 | +| Linearni `DayOfYear` | 2.77 (17.2%) | 0.07 | +| Polinomski `DayOfYear` | 2.73 (17.0%) | 0.08 | +| Linearni `Variety` | 5.24 (19.7%) | 0.77 | +| Linearni svi feature-i | 2.84 (10.5%) | 0.94 | +| Polinomski svi feature-i | 2.23 (8.25%) | 0.97 | -🏆 Odlično! Kreirali ste četiri modela regresije u jednoj lekciji i poboljšali kvalitetu modela do 97%. U završnom dijelu o regresiji naučit ćete o logističkoj regresiji za određivanje kategorija. +🏆 Svaka čast! Stvorili ste četiri regresijska modela u jednoj lekciji, i poboljšali kvalitetu modela do 97%. U završnom dijelu o regresiji naučit ćete o logističkoj regresiji za određivanje kategorija. --- ## 🚀Izazov -Isprobajte nekoliko različitih varijabli u ovoj bilježnici kako biste vidjeli kako korelacija odgovara točnosti modela. +Testirajte nekoliko različitih varijabli u ovom bilježniku da vidite kako korelacija korespondira s točnošću modela. ## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/) -## Pregled i samostalno učenje +## Pregled & Samostalno učenje -U ovoj lekciji smo naučili o linearnoj regresiji. Postoje i druge važne vrste regresija. Pročitajte o tehnikama Stepwise, Ridge, Lasso i Elasticnet. Dobar tečaj koji vrijedi proučiti je [Stanford tečaj statističkog učenja](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +U ovoj lekciji smo naučili o linearnoj regresiji. Postoje i drugi važni tipovi regresije. Pročitajte o tehnikama Stepwise, Ridge, Lasso i Elasticnet. Dobar tečaj za daljnje učenje je [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Zadatak -[Izgradi model](assignment.md) +[Izradite model](assignment.md) --- **Odricanje od odgovornosti**: -Ovaj dokument je preveden pomoću AI usluge prevođenja [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo postići točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku trebao bi se smatrati službenim izvorom. Za ključne informacije preporučuje se profesionalni ljudski prijevod. Ne snosimo odgovornost za bilo kakve nesporazume ili kriva tumačenja proizašla iz korištenja ovog prijevoda. +Ovaj dokument je preveden pomoću AI usluge prevođenja [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo postići točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni ljudski prijevod. Ne snosimo odgovornost za bilo kakva nesporazumevanja ili kriva tumačenja proizašla iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb index 732d4d8e32..e76094599f 100644 --- a/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linearna i Polinomna Regresija za Određivanje Cijene Bundeva - Lekcija 3\n", + "## Linearna i polinomijalna regresija za cijene bundeva - Lekcija 3\n", "\n", - "Učitaj potrebne biblioteke i skup podataka. Pretvori podatke u dataframe koji sadrži podskup podataka:\n", + "Učitajte potrebne biblioteke i skup podataka. Pretvorite podatke u dataframe koji sadrži podskup podataka:\n", "\n", - "- Uključi samo bundeve čija je cijena izražena po bušelu\n", - "- Pretvori datum u mjesec\n", - "- Izračunaj cijenu kao prosjek visokih i niskih cijena\n", - "- Pretvori cijenu tako da odražava cijenu po količini bušela\n" + "- Dohvatite samo bundeve koje su cijene po punoj mjeri (bushel)\n", + "- Pretvorite datum u mjesec\n", + "- Izračunajte cijenu kao prosjek visoke i niske cijene\n", + "- Pretvorite cijenu da odražava cijene po količini pune mjere (bushel)\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Raspršeni dijagram podsjeća nas da imamo podatke samo od kolovoza do prosinca. Vjerojatno nam treba više podataka kako bismo mogli donositi zaključke na linearan način.\n" + "Dijagram raspršenja podsjeća nas da imamo podatke samo od kolovoza do prosinca. Vjerojatno nam treba više podataka da bismo mogli izvući zaključke na linearan način.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Vidimo postoji li korelacija:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Čini se da je korelacija prilično mala, ali postoji neka druga važnija veza - jer se čini da točke cijena na gornjem grafikonu imaju nekoliko različitih klastera. Napravimo grafikon koji će prikazati različite vrste bundeva:\n" + "Izgleda da je korelacija prilično mala, ali postoji neki drugi važniji odnos - jer točke cijena na grafikonu iznad čine nekoliko različitih skupina. Napravimo grafikon koji će pokazati različite sorte bundeva:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Za sada se koncentrirajmo samo na jednu vrstu - **vrsta pite**.\n" + ] }, { "cell_type": "code", @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinomna regresija\n", + "### Polinomijalna regresija\n", "\n", - "Ponekad je odnos između značajki i rezultata inherentno nelinearan. Na primjer, cijene bundeva mogu biti visoke zimi (mjeseci=1,2), zatim pasti tijekom ljeta (mjeseci=5-7), a potom ponovno porasti. Linearna regresija ne može točno pronaći ovaj odnos.\n", + "Ponekad je veza između značajki i rezultata inherentno nelinearna. Na primjer, cijene bundeva mogu biti visoke zimi (mjeseци=1,2), zatim pasti preko ljeta (mjeseци=5-7), a potom ponovno rasti. Linearna regresija nije u stanju točno pronaći ovu vezu.\n", "\n", - "U tom slučaju možemo razmotriti dodavanje dodatnih značajki. Jednostavan način je korištenje polinoma iz ulaznih značajki, što bi rezultiralo **polinomnom regresijom**. U Scikit Learn-u možemo automatski unaprijed izračunati polinomne značajke koristeći pipelines:\n" + "U tom slučaju, možemo razmotriti dodavanje dodatnih značajki. Jednostavan način je korištenje polinoma iz ulaznih značajki, što bi rezultiralo **polinomijalnom regresijom**. U Scikit Learn možemo automatski unaprijed izračunati polinomijalne značajke pomoću pipelines: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kodiranje sorti\n", + "### Varijante kodiranja\n", "\n", - "U idealnom svijetu želimo moći predvidjeti cijene za različite sorte bundeva koristeći isti model. Da bismo uzeli sortu u obzir, prvo je moramo pretvoriti u numerički oblik, odnosno **kodirati**. Postoji nekoliko načina kako to možemo učiniti:\n", + "U idealnom svijetu, želimo moći predvidjeti cijene za različite sorte bundeve koristeći isti model. Da bismo uzeli u obzir sortu, prvo je potrebno pretvoriti je u numerički oblik, odnosno **kodirati**. Postoji nekoliko načina na koje to možemo napraviti:\n", "\n", - "* Jednostavno numeričko kodiranje koje će izraditi tablicu različitih sorti, a zatim zamijeniti naziv sorte indeksom u toj tablici. Ovo nije najbolja ideja za linearnu regresiju, jer linearna regresija uzima u obzir numeričku vrijednost indeksa, a numerička vrijednost vjerojatno neće numerički korelirati s cijenom.\n", - "* One-hot kodiranje, koje će zamijeniti stupac `Variety` s 4 različita stupca, po jedan za svaku sortu, koji će sadržavati 1 ako odgovarajući redak pripada određenoj sorti, a 0 inače.\n", + "* Jednostavno numeričko kodiranje koje će izgraditi tablicu različitih sorti, a zatim zamijeniti naziv sorte indeksom u toj tablici. Ovo nije najbolja ideja za linearnu regresiju, jer linearna regresija uzima u obzir numeričku vrijednost indeksa, a numerička vrijednost vjerojatno neće numerički korelirati s cijenom.\n", + "* One-hot kodiranje, koje će zamijeniti stupac `Variety` s 4 različita stupca, po jedan za svaku sortu, koji će sadržavati 1 ako odgovarajući red pripada toj sorti, a 0 inače.\n", "\n", - "Kod ispod pokazuje kako možemo one-hot kodirati sortu:\n" + "Kod u nastavku pokazuje kako možemo napraviti one-hot kodiranje sorte:\n" ] }, { @@ -942,7 +949,7 @@ "source": [ "### Linearna regresija na sorti\n", "\n", - "Sada ćemo koristiti isti kod kao gore, ali umjesto `DayOfYear` koristit ćemo našu one-hot-enkodiranu sortu kao ulaz:\n" + "Sada ćemo koristiti isti kod kao gore, ali umjesto `DayOfYear` koristit ćemo naš one-hot-enkodirani sortni ulaz:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinomna regresija\n", + "### Polinomska regresija\n", "\n", - "Polinomna regresija također se može koristiti s kategorijalnim značajkama koje su kodirane metodom one-hot-encoding. Kod za treniranje polinomne regresije u osnovi bi bio isti kao što smo vidjeli gore.\n" + "Polinomska regresija može se koristiti i s kategoriziranim značajkama koje su kodirane tehnikom one-hot. Kod za treniranje polinomske regresije bio bi u osnovi isti kao što smo vidjeli gore.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Odricanje od odgovornosti**: \nOvaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda.\n" + "---\n\n\n**Odricanje od odgovornosti**:\nOvaj je dokument preveden pomoću AI usluge za prijevod [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo postići točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni ljudski prijevod. Ne snosimo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:21:14+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "hr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sl/.co-op-translator.json b/translations/sl/.co-op-translator.json index 35f8305990..b065adad09 100644 --- a/translations/sl/.co-op-translator.json +++ b/translations/sl/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "sl" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:43:57+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:49:30+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "sl" }, @@ -90,8 +90,8 @@ "language_code": "sl" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:18:31+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:48:57+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "sl" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "sl" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:45:12+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "sl" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:35:35+00:00", diff --git a/translations/sl/1-Introduction/4-techniques-of-ML/README.md b/translations/sl/1-Introduction/4-techniques-of-ML/README.md index 5e2dbdbb80..a975b82cd1 100644 --- a/translations/sl/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/sl/1-Introduction/4-techniques-of-ML/README.md @@ -1,35 +1,35 @@ # Tehnike strojnega učenja -Proces gradnje, uporabe in vzdrževanja modelov strojnega učenja ter podatkov, ki jih uporabljajo, se močno razlikuje od mnogih drugih razvojnih delovnih tokov. V tej lekciji bomo razjasnili ta proces in predstavili glavne tehnike, ki jih morate poznati. Naučili se boste: +Postopek gradnje, uporabe in vzdrževanja modelov strojnega učenja ter podatkov, ki jih uporabljajo, je zelo drugačen od mnogih drugih razvojnih delovnih tokov. V tej lekciji bomo razjasnili proces in opisali glavne tehnike, ki jih morate poznati. Naučili se boste: -- Razumeti procese, ki so osnova strojnega učenja na visoki ravni. -- Raziskati osnovne koncepte, kot so 'modeli', 'napovedi' in 'podatki za učenje'. +- Razumeti procese, ki stojijo za strojnim učenjem na visoki ravni. +- Raziskati osnovne pojme, kot so 'modeli', 'napovedi' in 'učni podatki'. -## [Predhodni kviz](https://ff-quizzes.netlify.app/en/ml/) +## [Predpredavanje kviz](https://ff-quizzes.netlify.app/en/ml/) -[![ML za začetnike - Tehnike strojnega učenja](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML za začetnike - Tehnike strojnega učenja") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Kliknite zgornjo sliko za kratek video, ki obravnava to lekcijo. +> 🎥 Kliknite na sliko zgoraj za kratek video, ki pokriva to lekcijo. ## Uvod -Na visoki ravni je proces ustvarjanja strojnega učenja (ML) sestavljen iz več korakov: +Na visoki ravni je obrt ustvarjanja procesov strojnega učenja (ML) sestavljena iz več korakov: -1. **Odločite se za vprašanje**. Večina procesov ML se začne z vprašanjem, na katerega ni mogoče odgovoriti z enostavnim pogojnim programom ali sistemom, ki temelji na pravilih. Ta vprašanja se pogosto vrtijo okoli napovedi na podlagi zbirke podatkov. -2. **Zberite in pripravite podatke**. Da bi lahko odgovorili na svoje vprašanje, potrebujete podatke. Kakovost in včasih količina vaših podatkov bosta določili, kako dobro lahko odgovorite na začetno vprašanje. Vizualizacija podatkov je pomemben vidik te faze. Ta faza vključuje tudi razdelitev podatkov na skupino za učenje in testiranje za gradnjo modela. -3. **Izberite metodo učenja**. Glede na vaše vprašanje in naravo podatkov morate izbrati način, kako želite model naučiti, da bo najbolje odražal vaše podatke in podajal natančne napovedi. Ta del procesa ML zahteva specifično strokovno znanje in pogosto veliko eksperimentiranja. -4. **Naučite model**. Z uporabo podatkov za učenje boste uporabili različne algoritme za učenje modela, da prepozna vzorce v podatkih. Model lahko uporablja notranje uteži, ki jih je mogoče prilagoditi, da daje prednost določenim delom podatkov pred drugimi, da zgradi boljši model. -5. **Ocenite model**. Uporabite podatke, ki jih model še ni videl (vaše testne podatke), da preverite, kako se model obnese. -6. **Prilagodite parametre**. Na podlagi uspešnosti modela lahko proces ponovite z različnimi parametri ali spremenljivkami, ki nadzorujejo vedenje algoritmov, uporabljenih za učenje modela. -7. **Napovedujte**. Uporabite nove vnose za testiranje natančnosti vašega modela. +1. **Odločite se za vprašanje**. Večina procesov ML se začne z zastavljanjem vprašanja, na katerega ni mogoče odgovoriti z enostavnim pogojnim programom ali motorjem, ki temelji na pravilih. Ta vprašanja se pogosto nanašajo na napovedi na podlagi zbirke podatkov. +2. **Zberite in pripravite podatke**. Da bi lahko odgovorili na svoje vprašanje, potrebujete podatke. Kvaliteta in včasih tudi količina podatkov določata, kako dobro lahko odgovorite na začetno vprašanje. Vizualizacija podatkov je pomemben del te faze. Ta faza vključuje tudi razdelitev podatkov na učno in testno skupino za izdelavo modela. +3. **Izberite metodo učenja**. Glede na vaše vprašanje in naravo vaših podatkov morate izbrati, kako boste trenirali model, da bo najbolje odražal vaše podatke in omogočal natančne napovedi. To je del vašega ML procesa, ki zahteva posebno strokovno znanje in pogosto precej eksperimentiranja. +4. **Naučite model**. Z uporabo učnih podatkov boste uporabili različne algoritme za učenje modela, da prepozna vzorce v podatkih. Model lahko uporablja notranje uteži, ki jih je mogoče prilagoditi, da nekaterim delom podatkov dajejo prednost pred drugimi za boljši model. +5. **Ocenite model**. Uporabite nikoli prej nevidene podatke (testne podatke) iz zbranega nabora, da preverite, kako model deluje. +6. **Nastavitev parametrov**. Glede na uspešnost modela lahko postopek ponovite z drugačnimi parametri ali spremenljivkami, ki nadzorujejo vedenje algoritmov za učenje modela. +7. **Napovedovanje**. Uporabite nove vhodne podatke za testiranje natančnosti modela. -## Kakšno vprašanje zastaviti +## Katero vprašanje zastaviti -Računalniki so še posebej spretni pri odkrivanju skritih vzorcev v podatkih. Ta uporabnost je zelo koristna za raziskovalce, ki imajo vprašanja o določenem področju, na katera ni mogoče enostavno odgovoriti z ustvarjanjem sistema, ki temelji na pogojnih pravilih. Pri aktuarskih nalogah, na primer, bi lahko podatkovni znanstvenik oblikoval ročno izdelana pravila o smrtnosti kadilcev v primerjavi z nekadilci. +Računalniki so še posebej vešči odkrivanja skritih vzorcev v podatkih. Ta uporabnost je zelo koristna za raziskovalce, ki imajo vprašanja o določenem področju, na katera ni enostavno odgovoriti z ustvarjanjem pogojnega motorja pravil. Na primer, pri aktuarijskih nalogah bi lahko podatkovni znanstvenik izdelal ročno izdelana pravila o smrtnosti kadilcev in nekadilcev. -Ko pa v enačbo vključimo veliko drugih spremenljivk, se lahko model ML izkaže za bolj učinkovitega pri napovedovanju prihodnjih stopenj smrtnosti na podlagi pretekle zdravstvene zgodovine. Bolj vesel primer bi lahko bila napoved vremena za mesec april na določenem območju na podlagi podatkov, ki vključujejo zemljepisno širino, dolžino, podnebne spremembe, bližino oceana, vzorce zračnih tokov in še več. +Ko pa v enačbo vključimo še številne druge spremenljivke, se lahko izkaže, da je model ML učinkovitejši za napovedovanje prihodnjih stopenj smrtnosti na podlagi pretekle zdravstvene zgodovine. Bolj vesel primer je lahko izdelava vremenskih napovedi za mesec april v določeni lokaciji na podlagi podatkov, ki vključujejo geografsko širino, dolžino, podnebne spremembe, bližino oceana, vzorce jetnih tokov in še več. -✅ Ta [predstavitev](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskih modelih ponuja zgodovinski pogled na uporabo ML pri analizi vremena. +✅ Ta [predstavitev](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskih modelih ponuja zgodovinski pogled na uporabo ML pri analizi vremena. ## Naloge pred gradnjo @@ -37,87 +37,89 @@ Preden začnete graditi svoj model, morate opraviti več nalog. Da bi preizkusil ### Podatki -Da bi lahko odgovorili na svoje vprašanje z določeno stopnjo gotovosti, potrebujete zadostno količino podatkov ustrezne vrste. Na tej točki morate storiti dve stvari: +Da lahko z gotovostjo odgovorite na svoje vprašanje, potrebujete dovolj podatkov ustrezne vrste. Na tej točki morate narediti dve stvari: -- **Zberite podatke**. Ob upoštevanju prejšnje lekcije o pravičnosti pri analizi podatkov zbirajte podatke skrbno. Bodite pozorni na vire teh podatkov, morebitne inherentne pristranskosti in dokumentirajte njihov izvor. -- **Pripravite podatke**. Obstaja več korakov v procesu priprave podatkov. Morda boste morali združiti podatke in jih normalizirati, če prihajajo iz različnih virov. Kakovost in količino podatkov lahko izboljšate z različnimi metodami, kot je pretvorba nizov v številke (kot to počnemo pri [Gručenju](../../5-Clustering/1-Visualize/README.md)). Morda boste ustvarili nove podatke na podlagi izvirnih (kot to počnemo pri [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Podatke lahko očistite in uredite (kot bomo storili pred lekcijo o [Spletni aplikaciji](../../3-Web-App/README.md)). Na koncu jih boste morda morali naključno razporediti in premešati, odvisno od vaših tehnik učenja. +- **Zbirajte podatke**. Glede na prejšnjo lekcijo o pravičnosti pri analizi podatkov zbirajte podatke previdno. Zavedajte se virov teh podatkov, morebitnih pristranskosti, ki jih vsebujejo, in dokumentirajte njihov izvor. +- **Pripravite podatke**. Priprava podatkov vključuje več korakov. Morda boste morali podatke združiti in jih normalizirati, če prihajajo iz različnih virov. Izboljšate lahko kakovost in količino podatkov na različne načine, na primer s pretvarjanjem nizov v številke (kot smo naredili v [Gropljenju](../../5-Clustering/1-Visualize/README.md)). Lahko tudi ustvarite nove podatke na podlagi izvirnih (kot delamo v [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Podatke lahko tudi počistite in uredite (kot bomo naredili pred lekcijo [Web App](../../3-Web-App/README.md)). Nazadnje jih boste morda morali naključno premešati glede na vaše učne tehnike. -✅ Po zbiranju in obdelavi podatkov si vzemite trenutek, da preverite, ali njihova oblika omogoča obravnavo zastavljenega vprašanja. Morda se izkaže, da podatki ne bodo dobro delovali pri vaši nalogi, kot odkrijemo v naših lekcijah o [Gručenju](../../5-Clustering/1-Visualize/README.md)! +✅ Po zbiranju in obdelavi podatkov si vzemite trenutek in preverite, ali vam njihova oblika omogoča nasloviti zastavljeno vprašanje. Lahko se zgodi, da podatki za vaš podani nalog ne bodo delovali najbolje, kar bomo odkrili v lekcijah [Gropljenja](../../5-Clustering/1-Visualize/README.md)! ### Značilnosti in cilj -[Značilnost](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je merljiva lastnost vaših podatkov. V mnogih podatkovnih nizih je izražena kot naslov stolpca, kot so 'datum', 'velikost' ali 'barva'. Vaša spremenljivka značilnosti, običajno predstavljena kot `X` v kodi, predstavlja vhodno spremenljivko, ki bo uporabljena za učenje modela. +[Značilnost](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je merljiva lastnost vaših podatkov. V mnogih zbirkah podatkov je izražena kot naslov stolpca, kot sta 'datum', 'velikost' ali 'barva'. Vaša spremenljivka značilnosti, običajno označena kot `X` v kodi, predstavlja vhodno spremenljivko, ki jo bomo uporabili za učenje modela. -Cilj je stvar, ki jo poskušate napovedati. Cilj, običajno predstavljen kot `y` v kodi, predstavlja odgovor na vprašanje, ki ga poskušate zastaviti svojim podatkom: v decembru, kakšne **barve** bodo najcenejše buče? v San Franciscu, katera soseska bo imela najboljšo ceno **nepremičnin**? Včasih se cilj imenuje tudi atribut oznake. +Cilj je stvar, ki jo poskušate napovedati. Cilj, običajno označen kot `y` v kodi, predstavlja odgovor na vprašanje, ki ga želite zastaviti podatkom: v decembru, katere **barve** bodo buče najcenejše? v San Franciscu, kateri predeli bodo imeli najboljšo **ceno** nepremičnin? Cilj se včasih imenuje tudi atribut oznake. -### Izbor spremenljivke značilnosti +### Izbira spremenljivke značilnosti -🎓 **Izbor značilnosti in ekstrakcija značilnosti** Kako veste, katero spremenljivko izbrati pri gradnji modela? Verjetno boste šli skozi proces izbora značilnosti ali ekstrakcije značilnosti, da izberete prave spremenljivke za najbolj zmogljiv model. Vendar pa to ni isto: "Ekstrakcija značilnosti ustvarja nove značilnosti iz funkcij izvirnih značilnosti, medtem ko izbor značilnosti vrne podmnožico značilnosti." ([vir](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Izbor značilnosti in ekstrakcija značilnosti** Kako veste, katero spremenljivko izbrati pri gradnji modela? Verjetno boste opravili postopek izbire značilnosti ali ekstrakcije značilnosti, da boste izbrali prave spremenljivke za najbolj zmogljiv model. Vendar to ni isto: "Ekstrakcija značilnosti ustvari nove značilnosti iz funkcij izvirnih značilnosti, medtem ko izbor značilnosti vrne podmnožico značilnosti." ([vir](https://wikipedia.org/wiki/Feature_selection)) -### Vizualizirajte svoje podatke +### Vizualizirajte podatke -Pomemben vidik orodij podatkovnega znanstvenika je moč vizualizacije podatkov z uporabo več odličnih knjižnic, kot sta Seaborn ali MatPlotLib. Vizualizacija podatkov vam lahko omogoči odkrivanje skritih korelacij, ki jih lahko izkoristite. Vaše vizualizacije vam lahko pomagajo tudi pri odkrivanju pristranskosti ali neuravnoteženih podatkov (kot odkrijemo pri [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). +Pomemben del orodjarne podatkovnega znanstvenika je moč vizualizirati podatke z uporabo več odličnih knjižnic, kot sta Seaborn ali MatPlotLib. Vizualna predstavitev podatkov vam lahko pomaga odkriti skrite korelacije, ki jih lahko uporabite. Vizualizacije vam lahko pomagajo tudi odkriti pristranskost ali neuravnotežene podatke (kot bomo videli v [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). -### Razdelite svoj podatkovni niz +### Razdelite svojo podatkovno zbirko -Pred učenjem morate razdeliti svoj podatkovni niz na dva ali več delov neenake velikosti, ki še vedno dobro predstavljajo podatke. +Pred učenjem morate podatke razdeliti na dva ali več delov neenake velikosti, ki pa še vedno dobro predstavljajo podatke. -- **Učenje**. Ta del podatkovnega niza se prilega vašemu modelu, da ga nauči. Ta niz predstavlja večino izvirnega podatkovnega niza. -- **Testiranje**. Testni podatkovni niz je neodvisna skupina podatkov, pogosto pridobljena iz izvirnih podatkov, ki jo uporabite za potrditev uspešnosti zgrajenega modela. -- **Validacija**. Validacijski niz je manjša neodvisna skupina primerov, ki jo uporabite za prilagoditev hiperparametrov ali arhitekture modela, da izboljšate model. Glede na velikost vaših podatkov in vprašanje, ki ga zastavljate, morda ne boste potrebovali gradnje tega tretjega niza (kot ugotavljamo pri [Napovedovanju časovnih vrst](../../7-TimeSeries/1-Introduction/README.md)). +- **Učenje**. Ta del podatkovnega nabora je namenjen treningu vašega modela. Ta nabor predstavlja večino izvirnega podatkovnega nabora. +- **Testiranje**. Testni podatkovni nabor je neodvisna skupina podatkov, pogosto zbranih iz izvirnih podatkov, ki jih uporabite za potrditev uspešnosti zgrajenega modela. +- **Validacija**. Validacijski nabor je manjša neodvisna skupina primerov, ki jo uporabite za nastavitev hiperparametrov ali arhitekture modela za izboljšanje le-tega. Glede na velikost vaših podatkov in zastavljeno vprašanje morda ta tretji nabor ne bo potreben (kot ugotavljamo v [Napovedovanju časovnih vrst](../../7-TimeSeries/1-Introduction/README.md)). ## Gradnja modela -Z uporabo podatkov za učenje je vaš cilj zgraditi model ali statistično predstavitev vaših podatkov z uporabo različnih algoritmov za **učenje**. Učenje modela ga izpostavi podatkom in mu omogoči, da naredi predpostavke o zaznanih vzorcih, ki jih odkrije, potrdi in sprejme ali zavrne. +Z uporabo učnih podatkov je vaš cilj zgraditi model ali statistični prikaz vaših podatkov z uporabo različnih algoritmov za **učenje**. Učenje modela ga izpostavi podatkom in mu omogoča, da naredi domneve o zaznanih vzorcih, ki jih odkrije, potrdi ter sprejme ali zavrne. ### Odločite se za metodo učenja -Glede na vaše vprašanje in naravo podatkov boste izbrali metodo za učenje. Če preučite [dokumentacijo Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - ki jo uporabljamo v tem tečaju - lahko raziščete številne načine za učenje modela. Glede na vaše izkušnje boste morda morali preizkusiti več različnih metod, da zgradite najboljši model. Verjetno boste šli skozi proces, pri katerem podatkovni znanstveniki ocenjujejo uspešnost modela z uporabo podatkov, ki jih model še ni videl, preverjajo natančnost, pristranskost in druge težave, ki zmanjšujejo kakovost, ter izbirajo najbolj primerno metodo učenja za obravnavano nalogo. +Glede na vaše vprašanje in naravo podatkov boste izbrali metodo za učenje modela. Pregled [dokumentacije Scikit-learn](https://scikit-learn.org/stable/user_guide.html) – ki jo uporabljamo v tem kurzu – vam omogoča raziskati mnogo načinov treniranja modela. Glede na vaše izkušnje boste morda morali preizkusiti več različnih metod, da boste zgradili najboljši model. Verjetno boste šli skozi postopek, kjer podatkovni znanstveniki ocenjujejo učinkovitost modela z uporabo neznanih podatkov, preverjajo natančnost, pristranskosti in druge težave, ki zmanjšujejo kakovost, ter izberejo najbolj primerno metodo učenja za dano nalogo. ### Naučite model -Oboroženi s podatki za učenje ste pripravljeni, da jih 'prilagodite' za ustvarjanje modela. Opazili boste, da v mnogih knjižnicah ML najdete kodo 'model.fit' - to je trenutek, ko pošljete svojo spremenljivko značilnosti kot niz vrednosti (običajno 'X') in ciljno spremenljivko (običajno 'y'). +Z učnimi podatki ste pripravljeni, da jih 'prilagodite' za ustvarjanje modela. Opazili boste, da v mnogih ML knjižnicah najdete ukaz 'model.fit' – prav v tem trenutku pošljete svojo spremenljivko značilnosti kot polje vrednosti (običajno 'X') in ciljno spremenljivko (običajno 'y'). ### Ocenite model -Ko je proces učenja zaključen (za učenje velikega modela lahko traja veliko iteracij ali 'epoh'), boste lahko ocenili kakovost modela z uporabo testnih podatkov za oceno njegove uspešnosti. Ti podatki so podmnožica izvirnih podatkov, ki jih model še ni analiziral. Lahko natisnete tabelo metrik o kakovosti vašega modela. +Ko je postopek učenja zaključen (lahko traja več ponovitev ali 'epoh', da se nauči velik model), boste lahko ocenili kakovost modela z uporabo testnih podatkov za merjenje njegove zmogljivosti. Ti podatki so podmnožica izvirnih podatkov, ki jih model prej ni analiziral. Lahko si izpišete tabelo metrik kakovosti modela. 🎓 **Prilagajanje modela** -V kontekstu strojnega učenja prilagajanje modela pomeni natančnost osnovne funkcije modela, ko poskuša analizirati podatke, s katerimi ni seznanjen. +V kontekstu strojnega učenja se prilagajanje modela nanaša na natančnost funkcije modela, ki skuša analizirati podatke, s katerimi ni seznanjen. -🎓 **Premalo prilagajanje** in **prekomerno prilagajanje** sta pogosti težavi, ki zmanjšujeta kakovost modela, saj se model prilagodi bodisi premalo bodisi preveč. To povzroči, da model podaja napovedi bodisi preveč usklajene bodisi premalo usklajene s podatki za učenje. Prekomerno prilagojen model preveč dobro napoveduje podatke za učenje, ker se je preveč naučil podrobnosti in šuma podatkov. Premalo prilagojen model ni natančen, saj ne more natančno analizirati niti podatkov za učenje niti podatkov, ki jih še ni 'videl'. +🎓 **Podučenje** in **preučenje** sta pogosti težavi, ki zmanjšujeta kakovost modela, saj se model ali ni dovolj dobro prilagodi ali pa se preveč prilega. To povzroči, da model naredi napovedi, ki so preveč natančne ali preveč ohlapne glede na učne podatke. Preučen model preveč dobro napoveduje učne podatke, ker je preveč dobro naučil podrobnosti in šum podatkov. Podučen model ni natančen, saj ne more natančno analizirati ne učnih ne še nevidenih podatkov. -![prekomerno prilagajanje modela](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/sl/overfitting.1c132d92bfd93cb6.webp) > Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) -## Prilagoditev parametrov +## Nastavitev parametrov -Ko je vaše začetno učenje zaključeno, opazujte kakovost modela in razmislite o izboljšanju z nastavitvijo njegovih 'hiperparametrov'. Več o procesu preberite [v dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Ko je začetno učenje končano, opazujte kakovost modela in razmislite o izboljšavah z nastavitvijo njegovih 'hiperparametrov'. Več o tem procesu preberite [v dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Napovedovanje -To je trenutek, ko lahko uporabite popolnoma nove podatke za testiranje natančnosti vašega modela. V 'aplikativnem' okolju ML, kjer gradite spletne aplikacije za uporabo modela v produkciji, lahko ta proces vključuje zbiranje uporabniških vnosov (na primer pritisk na gumb), da nastavite spremenljivko in jo pošljete modelu za sklepanje ali oceno. +To je trenutek, ko lahko uporabite popolnoma nove podatke za testiranje natančnosti modela. V 'uporabnem' okolju ML, kjer gradite spletne aplikacije za uporabo modela v produkciji, ta proces lahko vključuje zbiranje uporabniškega vnosa (na primer pritisk na gumb) za nastavitev spremenljivke in pošiljanje modelu v namen sklepanja ali ocene. -V teh lekcijah boste odkrili, kako uporabiti te korake za pripravo, gradnjo, testiranje, ocenjevanje in napovedovanje - vse korake podatkovnega znanstvenika in še več, ko napredujete na svoji poti, da postanete 'full stack' inženir strojnega učenja. +V teh lekcijah boste odkrili, kako uporabljati te korake za pripravo, gradnjo, testiranje, ocenjevanje in napovedovanje – vse geste podatkovnega znanstvenika in še več, ko boste napredovali v svoji poti, da postanete 'full stack' ML inženir. --- ## 🚀Izziv -Narišite diagram poteka, ki odraža korake strokovnjaka za strojno učenje. Kje se trenutno vidite v procesu? Kje predvidevate, da boste imeli težave? Kaj se vam zdi enostavno? +Narišite potek postopka, ki prikazuje korake praktikanta ML. Kje vidite sebe zdaj v procesu? Kje pričakujete težave? Kaj vam zdi lahko? -## [Kviz po predavanju](https://ff-quizzes.netlify.app/en/ml/) +## [Po-predavanje kviz](https://ff-quizzes.netlify.app/en/ml/) ## Pregled in samostojno učenje -Poiščite spletne intervjuje s podatkovnimi znanstveniki, ki razpravljajo o svojem vsakdanjem delu. Tukaj je [eden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Poiščite na spletu intervjuje s podatkovnimi znanstveniki, ki opisujejo svoje vsakdanje delo. Tukaj je [eden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Naloga +## Domača naloga -[Intervjuirajte podatkovnega znanstvenika](assignment.md) +[Intervju s podatkovnim znanstvenikom](assignment.md) --- + **Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko samodejni prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem matičnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije priporočamo profesionalni človeški prevod. Za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda, ne odgovarjamo. + \ No newline at end of file diff --git a/translations/sl/2-Regression/3-Linear/README.md b/translations/sl/2-Regression/3-Linear/README.md index e455a2f953..8b56dbff5f 100644 --- a/translations/sl/2-Regression/3-Linear/README.md +++ b/translations/sl/2-Regression/3-Linear/README.md @@ -1,97 +1,97 @@ -# Zgradite regresijski model s Scikit-learn: regresija na štiri načine +# Izgradnja regresijskega modela s Scikit-learn: štiri načini regresije ## Opomba za začetnike -Linearna regresija se uporablja, kadar želimo napovedati **numerično vrednost** (na primer cena hiše, temperatura ali prodaja). -Deluje tako, da najde najboljšo ravno črto, ki predstavlja povezavo med vhodnimi značilnostmi in izhodom. +Linearna regresija se uporablja, ko želimo napovedati **številsko vrednost** (na primer cena hiše, temperatura ali prodaja). +Deluje tako, da najde premico, ki najbolje prikazuje odnos med vhodnimi značilnostmi in izhodom. V tej lekciji se osredotočamo na razumevanje koncepta, preden raziščemo bolj napredne regresijske tehnike. -![Linear vs polynomial regression infographic](../../../../translated_images/sl/linear-polynomial.5523c7cb6576ccab.webp) +![Infografika linearne in polinomske regresije](../../../../translated_images/sl/linear-polynomial.5523c7cb6576ccab.webp) > Infografika avtorja [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Kviz pred predavanjem](https://ff-quizzes.netlify.app/en/ml/) +## [Pre-razpredavalni kviz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ta lekcija je na voljo tudi v R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Ta lekcija je na voljo tudi v R-ju!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Uvod -Do zdaj ste raziskovali, kaj je regresija, z vzorčnimi podatki, zbranimi iz podatkovnega nabora za cene buč, ki jih bomo uporabljali v tej lekciji. Prav tako ste ju vizualizirali z uporabo Matplotlib. +Do zdaj ste raziskali, kaj je regresija, na vzorčnih podatkih iz nabora podatkov o cenah buč, ki jih bomo uporabili skozi to lekcijo. Prav tako ste jih vizualizirali z uporabo Matplotlib. -Zdaj ste pripravljeni poglobljeno raziskati regresijo za ML. Medtem ko vizualizacija omogoča razumevanje podatkov, prava moč strojnega učenja izvira iz _usposabljanja modelov_. Modeli se usposabljajo na zgodovinskih podatkih, da samodejno zajamejo odvisnosti med podatki in omogočajo napovedovanje izidov za nove podatke, ki jih model še ni videl. +Zdaj ste pripravljeni, da se poglobite v regresijo za strojno učenje (ML). Medtem ko vizualizacija omogoča razumevanje podatkov, prava moč strojnega učenja prihaja iz _učenja modelov_. Modele se trenira na zgodovinskih podatkih, da samodejno zajamejo odvisnosti podatkov, in omogočajo napovedovanje rezultatov za nove podatke, ki jih model še ni videl. -V tej lekciji boste spoznali dve vrsti regresije: _osnovno linearno regresijo_ in _polinomsko regresijo_, skupaj z nekaj matematike, ki je podlaga za ti tehniki. Ti modeli nam bodo omogočili napovedovanje cen buč glede na različne vhodne podatke. +V tej lekciji boste izvedeli več o dveh vrstah regresije: _osnovna linearna regresija_ in _polinomska regresija_, skupaj z nekaj matematike, ki leži za tema tehnikama. Ti modeli nam bodo omogočili napovedati cene buč glede na različne vhodne podatke. -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML za začetnike - Razumevanje linearne regresije](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML za začetnike - Razumevanje linearne regresije") > 🎥 Kliknite na zgornjo sliko za kratek video pregled linearne regresije. -> V celotnem tematskem sklopu predvidevamo minimalno matematično znanje in želimo, da bo dostopno študentom iz drugih področij, zato bodite pozorni na opombe, 🧮 oznake, diagrame in druge učne pripomočke za lažje razumevanje. +> V celotnem temeljitem programu predpostavljamo minimalno znanje matematike in si prizadevamo, da bi bilo dostopno študentom iz drugih področij, zato bodite pozorni na opombe, 🧮 izpostavitve, diagrame in druga učna orodja, ki pomagajo pri razumevanju. ### Predpogoj -Zdaj morate biti seznanjeni s strukturo podatkov o bučah, ki jih preučujemo. Te podatke najdete prednaložene in očiščene v datoteki _notebook.ipynb_ te lekcije. V tej datoteki je cena buče prikazana na merico (bushel) v novem podatkovnem okviru. Poskrbite, da lahko te zvezke zaženete v jedrih (kernels) v Visual Studio Code. +Do zdaj bi morali biti seznanjeni s strukturo podatkov o bučah, ki jih pregledujemo. Naloženi in očiščeni so v datoteki _notebook.ipynb_ te lekcije. V datoteki je prikazana cena buče na bushel v novem podatkovnem okviru. Prepričajte se, da lahko zaženete te zvezke v jederih v Visual Studio Code. ### Priprava -Kot opomnik, te podatke nalagate, da bi lahko postavili vprašanja. +Za opomnik, te podatke nalagate, da zastavite vprašanja z njimi. - Kdaj je najboljši čas za nakup buč? -- Kakšno ceno lahko pričakujem za škatlo miniaturnih buč? -- Naj jih kupim v košarah za pol bushela ali v škatlah za 1 1/9 bushela? -Poglobimo se še naprej v te podatke. +- Kakšno ceno lahko pričakujem za paket mini buč? +- Ali naj jih kupim v košarah s polovičnim bushelom ali v škatlah 1 1/9 bushel? +Poglejmo še naprej v te podatke. -V prejšnji lekciji ste ustvarili Pandas podatkovni okvir in vanj vnesli del originalnega nabora podatkov, kjer ste standardizirali cene glede na bushel. S tem ste lahko zajeli približno 400 podatkovnih točk in le za jesenske mesece. +V prejšnji lekciji ste ustvarili Pandas podatkovni okvir in vanj naložili del izvornega nabora podatkov ter standardizirali cene na bushel. S tem ste zbrali približno 400 podatkovnih točk in to le za jesenske mesece. -Oglejte si podatke, ki smo jih prednaložili v pripadajočem zvezku te lekcije. Podatki so prednaloženi in kaže se začetni razpršeni diagram (scatterplot), ki prikazuje mesečne podatke. Morda lahko pridobimo več podrobnosti o naravi podatkov z dodatnim čiščenjem. +Oglejte si podatke, ki smo jih naložili v spremnem zvezku te lekcije. Podatki so naloženi in prikazan je začetni raztreseni diagram, ki kaže mesečne podatke. Morda lahko z dodatnim čiščenjem podatkov pridobimo več podrobnosti o naravi podatkov. -## Linearna regresijska črta +## Premica linearne regresije -Kot ste se naučili v lekciji 1, je cilj linearne regresije sposobnost narisati črto, ki: +Kot ste se naučili v Lekciji 1, je cilj linearne regresije lahko narisan premico, ki: -- **Prikazuje razmerja med spremenljivkami.** Prikaže odnos med spremenljivkami. -- **Omogoča napovedi.** Natančno napoveduje, kje bi nova podatkovna točka padla v odnosu do te črte. +- **Prikaže odnos med spremenljivkami**. Prikaže povezavo med spremenljivkami +- **Omogoči napovedi**. Naredi natančne napovedi, kje se bo nova podatkovna točka uvrstila glede na to premico. -Tipično za **regresijo z najmanjšimi kvadrati** je, da se nariše takšna črta. Izraz "najmanjši kvadrati" se nanaša na postopek minimiziranja skupne napake v našem modelu. Za vsako podatkovno točko merimo navpično razdaljo (imenuje se ostanek) med dejansko točko in regresijsko črto. +Tipična za **metodo najmanjših kvadratov** je risanje take premice. Izraz "metoda najmanjših kvadratov" se nanaša na postopek minimizacije skupne napake v našem modelu. Za vsako podatkovno točko izmerimo vertikalno razdaljo (imenovano residuum) med dejansko točko in našo regresijsko premico. -Te razdalje kvadriramo iz dveh glavnih razlogov: +Te razdalje kvadriramo z dvema glavnima razlogoma: -1. **Velikost pred smerjo:** Želimo, da se napaka -5 in +5 obravnavata enako. Kvadriranje naredi vse vrednosti pozitivne. +1. **Velikost pred smerjo:** Želimo enako obravnavati napako -5 kot napako +5. Kvadriranje naredi vse vrednosti pozitivne. -2. **Kaznovanje odstopanj:** Kvadriranje daje večjo težo večjim napakam in sili črto, da ostane bližje točk, ki so bolj oddaljene. +2. **Kaznovanje odstopanj:** Kvadriranje daje večjo težo večjim napakam, kar sili premico, da ostane bližje daleč oddaljenim točkam. -Nato seštejemo vse te kvadrirane vrednosti. Naš cilj je poiskati črto, kjer je ta vsota najmanjša (najnižja možna vrednost) — od tod ime "najmanjši kvadrati". +Nato vse te kvadrirane vrednosti seštejemo. Naš cilj je najti specifično premico, kjer je ta končni vsota najmanjša (najmanjša možna vrednost)—od tod tudi ime "najmanjših kvadratov". -> **🧮 Pokaži mi formulo** +> **🧮 Pokaži mi matematiko** > -> Ta črta, imenovana _črta najboljšega prileganja_, je izražena z [enačbo](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Ta premica, imenovana _premica najboljšega prileganja_, je izražena z [enačbo](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` je 'razložilna spremenljivka'. `Y` je 'odvisna spremenljivka'. Naklon črte je `b`, `a` pa je y-presečišče, kar pomeni vrednost `Y`, ko je `X = 0`. +> `X` je 'razlagateljska spremenljivka'. `Y` je 'odvisna spremenljivka'. Naklon premice je `b`, `a` pa je y-presečišče, kar pomeni vrednost `Y`, kadar je `X = 0`. > ->![izrračunaj naklon](../../../../translated_images/sl/slope.f3c9d5910ddbfcf9.webp) +>![izračun naklona](../../../../translated_images/sl/slope.f3c9d5910ddbfcf9.webp) > > Najprej izračunajte naklon `b`. Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) > -> Z drugimi besedami in glede na vprašanje iz podatkov o bučah: "napovedati ceno buče na bushel glede na mesec", `X` bi se nanašal na ceno, `Y` pa na mesec prodaje. +> Z drugimi besedami, pri originalnem vprašanju naših podatkov o bučah: "napovedovati ceno buče na bushel po mesecih", `X` bi pomenil mesec, `Y` pa ceno. > ->![dopovej enačbo](../../../../translated_images/sl/calculation.a209813050a1ddb1.webp) +>![dopolni enačbo](../../../../translated_images/sl/calculation.a209813050a1ddb1.webp) > -> Izračunajte vrednost Y. Če plačujete okoli 4 dolarje, mora biti april! Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) +> Izračunajte vrednost Y. Če plačujete okoli 4 $, mora biti april! Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) > -> Matematika, ki izračuna črto, mora prikazati naklon črte, ki je tudi odvisen od presečišča, oziroma kje se `Y` nahaja, ko je `X = 0`. +> Matematika, ki izračuna premico, mora pokazati naklon premice, ki je odvisen tudi od presečišča, torej kjer je `Y`, ko je `X = 0`. > -> Metode za izračun teh vrednosti lahko opazujete na spletni strani [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Obiščite tudi [ta kalkulator najmanjših kvadratov](https://www.mathsisfun.com/data/least-squares-calculator.html), da vidite, kako vrednosti vplivajo na črto. +> Metode izračuna teh vrednosti si lahko ogledate na spletni strani [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Prav tako obiščite [ta kalkulator najmanjših kvadratov](https://www.mathsisfun.com/data/least-squares-calculator.html), da vidite, kako vrednosti števil vplivajo na premico. ## Korelacija -Še en izraz za razumevanje je **korelacijski koeficient** med danima spremenljivkama X in Y. Z uporabo scatterplota lahko hitro vizualizirate ta koeficient. Diagram, kjer so podatkovne točke razvrščene v lepo črto, ima visoko korelacijo, medtem ko ima diagram z razpršenimi točkami po celotnem območju X in Y nizko korelacijo. +Še en izraz, ki ga je treba razumeti, je **korelacijski koeficient** med danima spremenljivkama X in Y. Z uporabo raztresenega diagrama lahko hitro vizualizirate ta koeficient. Graf z raztresenimi točkami, ki tvorijo urejeno premico, ima visoko korelacijo, medtem ko graf z raztresenimi točkami povsod med X in Y ima nizko korelacijo. -Dober linearni regresijski model bo tisti, ki ima visok (bližje 1 kot 0) korelacijski koeficient z metodo najmanjših kvadratov in regresijsko črto. +Dober model linearne regresije bo tisti, ki ima visoko (bližje 1 kot 0) korelacijski koeficient po metodi najmanjših kvadratov z regresijsko premico. -✅ Zaženite zvezek, ki spremlja to lekcijo, in si oglejte scatterplot Medijec glede na Ceno. Ali se podatki povezani z mesecem in ceno za prodajo buč zdijo imeti visoko ali nizko korelacijo glede na vašo vizualno interpretacijo scatterplota? Se to spremeni, če uporabite bolj natančno mero namesto `Month`, npr. *dan v letu* (tj. število dni od začetka leta)? +✅ Zaženite zvezek, ki spremlja to lekcijo, in poglejte scatterplot med mesecem in ceno. Ali se zdi, da podatki o povezanosti meseca in cene buč kažejo visoko ali nizko korelacijo, glede na vašo vizualno interpretacijo scatterplot-a? Se to spremeni, če uporabite natančnejšo meritev namesto `Month`, npr. *dan v letu* (tj. število dni od začetka leta)? -V spodnji kodi bomo predpostavili, da smo podatke očistili in dobili podatkovni okvir z imenom `new_pumpkins`, podoben naslednjemu: +V spodnji kodi predpostavljamo, da smo podatke očistili in dobili podatkovni okvir z imenom `new_pumpkins`, podoben naslednjemu: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Koda za čiščenje podatkov je na voljo v [`notebook.ipynb`](notebook.ipynb). Izvedli smo enake korake čiščenja kot v prejšnji lekciji in izračunali stolpec `DayOfYear` z naslednjim izrazom: +> Koda za čiščenje podatkov je na voljo v [`notebook.ipynb`](notebook.ipynb). Opravili smo enake korake čiščenja kot v prejšnji lekciji in izračunali stolpec `DayOfYear` z naslednjim izrazom: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Zdaj, ko imamo razumevanje matematike za linearno regresijo, ustvarimo regresijski model, da vidimo, ali lahko napovemo, kateri paket buč bo imel najboljše cene. Nekdo, ki kupuje buče za praznično bučno okrasje, bi morda želel to informacijo, da bi lahko optimiziral nakupe paketov. +Zdaj, ko imate razumevanje matematike za linearno regresijo, ustvarimo regresijski model, da preverimo, ali lahko napovemo, kateri paket buč bo imel najboljše cene. Nekdo, ki kupuje buče za praznično bučno njivo, bi morda želel te informacije, da bi optimiziral nakup paketov buč za njivo. ## Iskanje korelacije -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![ML za začetnike - Iskanje korelacije: ključ do linearne regresije](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML za začetnike - Iskanje korelacije: ključ do linearne regresije") > 🎥 Kliknite na zgornjo sliko za kratek video pregled korelacije. -Iz prejšnje lekcije ste verjetno videli, da povprečna cena za različne mesece izgleda takole: +Iz prejšnje lekcije ste verjetno videli, da povprečna cena po mesecih izgleda takole: -Average price by month +Povprečna cena po mesecih -To nakazuje, da bi morala obstajati neka korelacija, in lahko poskusimo usposobiti linearni regresijski model, ki napoveduje odnos med `Month` in `Price` ali med `DayOfYear` in `Price`. Tukaj je scatterplot, ki prikazuje slednji odnos: +To nakazuje, da bi morala biti nekakšna korelacija, in lahko poskusimo s treniranjem linearnega regresijskega modela, ki napoveduje zvezo med `Month` in `Price` ali med `DayOfYear` in `Price`. Tukaj je scatterplot, ki kaže drugo zvezo: -Scatter plot of Price vs. Day of Year +Raztreseni diagram cena proti dnevu v letu -Poglejmo, ali je korelacija ob uporabi funkcije `corr`: +Poglejmo, ali obstaja korelacija z uporabo funkcije `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Zdi se, da je korelacija precej majhna, -0,15 glede na `Month` in -0,17 glede na `DayOfMonth`, vendar je lahko še kakšen drug pomemben odnos. Zdi se, da obstajajo različni grozdi cen, ki ustrezajo različnim sortam buč. Za potrditev te hipoteze prikažimo vsak razred buč z drugo barvo. Z uporabo parametra `ax` funkciji `scatter` lahko narišemo vse točke na istem diagramu: +Zdi se, da je korelacija dokaj majhna, -0,15 za `Month` in -0,17 za `DayOfYear`, a obstaja lahko še ena pomembna zveza. Videti je, da obstajajo različni skupki cen, povezani z različnimi vrstami buč. Da potrdimo to hipotezo, narišimo vsako kategorijo buč z drugačno barvo. Z uporabo parametra `ax` v funkciji `scatter` lahko narišemo vse točke na isti graf: ```python ax=None @@ -140,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +Raztreseni diagram cena proti dnevu v letu z barvami -Naša preiskava nakazuje, da ima sorta večji vpliv na ceno kot dejanski datum prodaje. To lahko vidimo s stolpčnim diagramom: +Naše raziskovanje nakazuje, da ima sorta večji vpliv na skupno ceno kot dejanski datum prodaje. To lahko vidiš tudi z stolpčnim diagramom: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +Stolpčni graf cene glede na vrsto -Za trenutek se osredotočimo samo na eno sorto buč, 'tip pite', in si oglejmo, kakšen vpliv ima datum na ceno: +Za zdaj se osredotočimo samo na eno sorto buč, na 'pie type', in poglejmo, kakšen vpliv ima datum na ceno: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Raztreseni diagram cena proti dnevu v letu za pie type buče -Če zdaj izračunamo korelacijo med `Price` in `DayOfYear` z uporabo funkcije `corr`, bomo dobili nekaj okoli `-0,27` - kar pomeni, da ima smisel usposabljanje napovednega modela. +Če zdaj izračunamo korelacijo med `Price` in `DayOfYear` z uporabo funkcije `corr`, dobimo nekaj takega kot `-0,27` - kar pomeni, da ima smisel trenirati napovedni model. -> Pred usposabljanjem linearnega regresijskega modela je pomembno, da podatki niso nepopolni. Linearna regresija ne deluje dobro z manjkajočimi vrednostmi, zato je smiselno odstraniti vse prazne celice: +> Pred treniranjem linearnega regresijskega modela je pomembno poskrbeti, da so naši podatki čisti. Linearna regresija ne deluje dobro z manjkajočimi vrednostmi, zato je smiselno odstraniti vse prazne celice: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Drugi pristop bi bil, da prazne vrednosti zapolnimo s povprečnimi vrednostmi iz ustreznega stolpca. +Drugi pristop bi bil zapolniti te prazne vrednosti s povprečnimi vrednostmi iz pripadajočega stolpca. ## Preprosta linearna regresija -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ML za začetnike - Linearna in polinomska regresija s Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML za začetnike - Linearna in polinomska regresija s Scikit-learn") > 🎥 Kliknite na zgornjo sliko za kratek video pregled linearne in polinomske regresije. -Za usposabljanje našega modela linearne regresije bomo uporabili knjižnico **Scikit-learn**. +Za treniranje našega linearnega regresijskega modela bomo uporabili knjižnico **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Najprej ločimo vhodne vrednosti (značilnosti) in pričakovani izhod (oznake) v ločene numpy tabele: +Začnemo s ločevanjem vhodnih vrednosti (značilnosti) in pričakovanih izhodov (oznaka) v ločene numpy matrike: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Upoštevajte, da smo morali vhodne podatke preoblikovati z uporabo `reshape`, da jih paket Linear Regression pravilno razume. Linearna regresija pričakuje 2D-tabelo kot vhod, kjer vsak vrstica predstavlja vektor vhodnih značilnosti. V našem primeru, ker imamo samo eno vhodno vrednost, potrebujemo tabelo oblike N×1, kjer je N velikost nabora podatkov. +> Upoštevajte, da smo morali na vhodne podatke uporabiti `reshape`, da jih paket Linearne regresije pravilno razume. Linearna regresija pričakuje 2D-matriko kot vhod, kjer vsak vrstica predstavlja vektor vhodnih značilnosti. V našem primeru, ker imamo le en vhod, potrebujemo matriko oblike N×1, kjer je N velikost nabora podatkov. -Nato moramo podatke razdeliti na učni in testni nabor, da lahko preverimo model po usposabljanju: +Nato moramo podatke razdeliti na učni in testni nabor, da lahko preverimo naš model po učenju: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Nazadnje usposabljanje samega linearnega regresijskega modela vzame le dve vrstici kode. Definiramo objekt `LinearRegression` in ga prilagodimo našim podatkom z metodo `fit`: +Na koncu učenje samega linearnega regresijskega modela traja zgolj dve vrstici kode. Definiramo objekt `LinearRegression` in ga prilegamo na naše podatke z metodo `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objekt `LinearRegression` po `fit`-anju vsebuje vse koeficiente regresije, do katerih lahko dostopamo z lastnostjo `.coef_`. V našem primeru je le en koeficient, ki naj bi bil okoli `-0.017`. To pomeni, da se cene zdi, da rahlo upadajo sčasoma, vendar ne preveč, približno 2 centa na dan. Dostopamo lahko tudi do presečišča regresije z Y-osjo z uporabo `lin_reg.intercept_` - v našem primeru bo to okoli `21`, kar nakazuje ceno na začetku leta. +Objekt `LinearRegression` po izvedbi `fit` vsebuje vse koeficiente regresije, do katerih lahko dostopamo z lastnostjo `.coef_`. V našem primeru imamo le en koeficient, ki bi moral biti približno `-0.017`. To pomeni, da cene sčasoma nekoliko upadajo, vendar ne preveč, približno 2 centa na dan. Do presečišča regresije z Y-osjo lahko dostopamo z `lin_reg.intercept_` - v našem primeru bo to približno `21`, kar kaže na ceno na začetku leta. -Da vidimo, kako natančen je naš model, lahko napovemo cene na testnem naboru podatkov in nato izmerimo, kako blizu so naše napovedi pričakovanim vrednostim. To lahko storimo z uporabo metrike korenskega povprečnega kvadratnega odklona (RMSE), ki je koren povprečja vseh kvadratnih razlik med pričakovano in napovedano vrednostjo. +Da vidimo, kako točen je naš model, lahko napovemo cene na testnem naboru podatkov in nato izmerimo, kako blizu so naše napovedi pričakovanim vrednostim. To lahko storimo z metrično napako srednje kvadratne napake (RMSE), ki je koren povprečja vseh kvadratov razlik med pričakovano in napovedano vrednostjo. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Naša napaka je približno 2 točki, kar je ~17%. Ni prav dobro. Drugi pokazatelj kakovosti modela je **koeficient determinacije**, ki ga lahko dobimo tako: +Naša napaka je približno 2 točki, kar je ~17 %. Ni prav dobro. Drugi pokazatelj kakovosti modela je **koeficient determinacije**, ki ga lahko pridobimo tako: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Če je vrednost 0, to pomeni, da model ne upošteva vhodnih podatkov in deluje kot *najslabši linearni napovedovalec*, ki je preprosto povprečna vrednost rezultata. Vrednost 1 pomeni, da lahko dokončno napovemo vse pričakovane izhode. V našem primeru je koeficient okoli 0,06, kar je precej nizko. +Če je vrednost 0, pomeni, da model ne upošteva vhodnih podatkov in deluje kot *najslabši linearen napovedovalec*, kar je preprosto povprečna vrednost rezultata. Vrednost 1 pomeni, da lahko popolnoma napovemo vse pričakovane izhode. V našem primeru je koeficient okoli 0,06, kar je dokaj nizko. -Lahko tudi narišemo testne podatke skupaj z regresijsko premico, da lažje vidimo, kako regresija deluje v našem primeru: +Testne podatke lahko tudi narišemo skupaj z regresijsko linijo, da bolje vidimo, kako regresija deluje v našem primeru: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Polinomska regresija -Druga vrsta linearne regresije je polinomska regresija. Medtem ko je včasih linearni odnos med spremenljivkami - večja kot je buča po volumnu, višja je cena - so včasih ti odnosi takšni, da jih ne moremo prikazati kot ravnino ali ravno črto. +Druga vrsta linearne regresije je polinomska regresija. Medtem ko včasih obstaja linearna povezava med spremenljivkami – večja kot je buča v volumenu, višja je cena – včasih takšnih povezav ni mogoče opisati z ravnino ali ravno črto. -✅ Tukaj je [še nekaj primerov](https://online.stat.psu.edu/stat501/lesson/9/9.8) podatkov, ki bi lahko uporabili polinomsko regresijo. +✅ Tukaj je [nekaj dodatnih primerov](https://online.stat.psu.edu/stat501/lesson/9/9.8) podatkov, ki bi jih lahko obravnavali s polinomsko regresijo. -Poglejmo še enkrat odnos med datumom in ceno. Ali se vam ta raščrtani graf zdi, da bi ga bilo treba nujno analizirati z ravno črto? Se cene ne morejo spreminjati? V tem primeru lahko poskusite polinomsko regresijo. +Poglejmo še enkrat razmerje med datumom in ceno. Ali ta razpršeni graf nujno zahteva analizo z ravno črto? Se cene ne morejo spreminjati? V takem primeru lahko poskusite polinomsko regresijo. ✅ Polinomi so matematični izrazi, ki lahko vsebujejo eno ali več spremenljivk in koeficientov. -Polinomska regresija ustvari ukrivljeno črto, da bolje prilepi nelinearne podatke. V našem primeru, če vključimo spremenljivko z kvadratom `DayOfYear` v vhodne podatke, bi morali biti sposobni prilegati naše podatke s parabolično krivuljo, ki bo imela minimum na določeni točki v letu. +Polinomska regresija ustvari ukrivljeno linijo, da bolje prilega nelinearne podatke. V našem primeru, če vključimo spremenljivko \( \text{DayOfYear}^2 \) v vhodne podatke, bi morali z ukrivljeno parabolo dobro prilagoditi naše podatke, parabola bo imela minimum nekje v letu. -Scikit-learn vključuje uporaben [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za združevanje različnih korakov obdelave podatkov. **Pipeline** je veriga **estimatorjev**. V našem primeru bomo ustvarili pipeline, ki najprej doda polinomske značilnosti k našemu modelu, nato pa izvede učenje regresije: +Scikit-learn vključuje uporaben [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za kombiniranje različnih korakov obdelave podatkov. **Pipeline** je veriga **ocenjevalcev**. V našem primeru bomo ustvarili pipeline, ki najprej doda polinomske značilnosti v naš model, nato pa izvede regresijo: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Uporaba `PolynomialFeatures(2)` pomeni, da bomo vključili vse polinome druge stopnje iz vhodnih podatkov. V našem primeru bo to samo pomenilo `DayOfYear`2, vendar pa pri dveh vhodnih spremenljivkah X in Y doda X2, XY in Y2. Lahko uporabimo tudi višje stopnje polinomov, če želimo. +Uporaba `PolynomialFeatures(2)` pomeni, da bomo vključili vse polinome druge stopnje iz vhodnih podatkov. V našem primeru bo to zgolj \( \text{DayOfYear}^2 \), medtem ko bi pri dveh vhodnih spremenljivkah X in Y to dodalo \( X^2 \), XY in \( Y^2 \). Po želji lahko uporabimo tudi višje stopnje polinomov. -Pipeline lahko uporabljamo na enak način kot izvorni objekt `LinearRegression`, tj. lahko uporabimo `fit` na pipelineu in nato uporabimo `predict` za pridobitev rezultatov napovedi. Tukaj je graf, ki prikazuje testne podatke in približno krivuljo: +Pipeline se lahko uporablja enako kot izvirni objekt `LinearRegression`, torej lahko izvedemo `fit` na pipeline in nato uporabimo `predict` za napoved rezultatov: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Za risanje gladke aproksimacijske krivulje uporabimo `np.linspace` za ustvarjanje enakomerno razporejenih vhodnih vrednosti, namesto da bi risali neposredno na neurejenih testnih podatkih (kar bi dalo cikelasto črto): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Tukaj je graf, ki prikazuje testne podatke in aproksimacijsko krivuljo: Polynomial regression -Z uporabo polinomske regresije lahko dosežemo nekoliko nižjo MSE in višji koeficient determinacije, vendar ne bistveno. Upoštevati moramo še druge značilnosti! +Z uporabo polinomske regresije lahko pridobimo nekoliko nižji RMSE in višji koeficient determinacije, vendar ne občutno. Treba je upoštevati še druge značilnosti! -> Vidite, da so minimalne cene buč opažene nekje okoli noči čarovnic. Kako to pojasnite? +> Vidite lahko, da so minimalne cene buč nekje okoli noči čarovnic. Kako to razložite? -🎃 Čestitamo, ravnokar ste ustvarili model, ki lahko pomaga napovedati ceno buč za pito. Verjetno lahko isto proceduro ponovite za vse vrste buč, vendar bi bilo to zamudno. Naučimo se zdaj, kako upoštevati različico buče v našem modelu! +🎃 Čestitamo, pravkar ste ustvarili model, ki lahko napove ceno buč za pito. Najverjetneje lahko isto proceduro ponovite za vse vrste buč, vendar bi bilo to zamudno. Naučimo se zdaj, kako upoštevati sorto buč v našem modelu! -## Kategorijske značilnosti +## Kategorne značilnosti -V idealnem svetu želimo z istim modelom napovedovati cene za različne vrste buč. Vendar je stolpec `Variety` nekoliko drugačen od stolpcev, kot je `Month`, saj vsebuje neničelne vrednosti. Takšni stolpci se imenujejo **kategorijski**. +V idealnem svetu želimo lahko napovedovati cene za različne sorte buč z istim modelom. Stolpec `Variety` pa je nekoliko drugačen od stolpcev, kot je `Month`, saj vsebuje nenumerične vrednosti. Takšni stolpci se imenujejo **kategorni**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Kliknite na sliko zgoraj za kratek video pregled uporabe kategorijskih značilnosti. +> 🎥 Kliknite na zgornjo sliko za kratek video pregled uporabe kategornih značilnosti. -Tukaj lahko vidite, kako povprečna cena zaleži od različice: +Tukaj lahko vidite, kako povprečna cena zavisi od sorte: Average price by variety -Da bi upoštevali različico, jo moramo najprej pretvoriti v številčno obliko ali jo **kodirati**. Obstaja več načinov, kako to storiti: +Da upoštevamo sorto, jo moramo najprej pretvoriti v numerično obliko, torej jo **kodirati**. Obstaja več načinov, kako to lahko naredimo: -* Preprosta **numerična kodiranja** zgradi tabelo različnih različic in nato nadomesti ime različice z indeksom v tej tabeli. To ni najboljša ideja za linearno regresijo, ker linearna regresija upošteva dejansko številčno vrednost indeksa in ga prišteje rezultatu, množi z nekim koeficientom. V našem primeru je razmerje med številko indeksa in ceno očitno nelinearno, tudi če zagotovimo, da so indeksi urejeni na določen način. -* **One-hot kodiranje** nadomesti stolpec `Variety` s 4 različnimi stolpci, po enim za vsako različico. Vsak stolpec bo vseboval `1`, če je ustrezni vrstici dodeljena dana različica, in `0` sicer. To pomeni, da bo v linearni regresiji štiri koeficiente, po enega za vsako vrsto buč, odgovornega za "začetno ceno" (ali bolje "dopolnilno ceno") za to določeno vrsto. +* Preprosta **numerična kodiranja** ustvari tabelo različnih sort in nato ime sorte zamenja z indeksom v tej tabeli. To ni najboljši pristop za linearno regresijo, ker linearna regresija dejansko vzame numerično vrednost indeksa in jo pomnoži z nekim koeficientom. V našem primeru je razmerje med številom indeksa in ceno očitno nelinearno, tudi če indekse uredimo na nek specifičen način. +* **One-hot kodiranje** nadomesti stolpec `Variety` s štirimi različnimi stolpci, po enim za vsako sorto. Vsak stolpec vsebuje `1`, če je vrstica določene sorte, in `0` sicer. To pomeni, da bodo štirje koeficienti v linearni regresiji, po en za vsako sorto buč, ki predstavljajo "začetno ceno" (oz. natančneje "dodatno ceno") za prav to sorto. -Spodnja koda prikazuje, kako lahko one-hot kodiramo vrsto: +Spodnja koda prikaže, kako lahko izvedemo one-hot kodiranje sorte: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Za učenje linearne regresije z uporabo one-hot kodirane različice kot vhodnih podatkov moramo le pravilno inicializirati podatke `X` in `y`: +Za učenje linearne regresije z one-hot kodirano sorto kot vhodom, moramo samo pravilno inicializirati podatke `X` in `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Ostali del kode je enak kot tisti, ki smo ga uporabili zgoraj za učenje linearne regresije. Če to poskusite, boste videli, da je povprečni kvadratni odklon približno enak, vendar dobimo veliko višji koeficient determinacije (~77%). Za še natančnejše napovedi lahko upoštevamo več kategorijskih spremenljivk, kot tudi številčne značilnosti, kot so `Month` ali `DayOfYear`. Za pridobitev ene velike tabele značilnosti lahko uporabimo `join`: +Preostali del kode je enak kot tisti, ki smo ga uporabili za učenje linearne regresije zgoraj. Če poskusite, boste videli, da je napaka srednjega kvadrata približno enaka, a dobimo veliko višji koeficient determinacije (~77 %). Za še natančnejše napovedi lahko upoštevamo več kategornih značilnosti, pa tudi numerične, kot sta `Month` ali `DayOfYear`. Za združitev vseh značilnosti uporabimo `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Tukaj upoštevamo tudi `City` in tip `Package`, kar nam da MSE 2,84 (10%) in koeficient determinacije 0,94! +Tukaj upoštevamo tudi `City` in vrsto embalaže `Package`, kar nam da RMSE 2.84 (10.5 %) in determinacijo 0.94! -## Združevanje vsega skupaj +## Vse skupaj -Da ustvarimo najboljši model, lahko uporabimo kombinirane podatke (one-hot kodirane kategorijske + številčne) iz zgornjega primera skupaj s polinomsko regresijo. Tukaj je za vašo udobje celotna koda: +Za najboljši model lahko kombiniramo (one-hot kodirane kategorne + numerične) podatke iz zgornjega primera skupaj s polinomsko regresijo. Tukaj je celotna koda za vašo udobnost: ```python -# nastavite podatke za usposabljanje +# nastavi podatke za učenje X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# naredite razdelitev treninga in testa +# naredi delitev na učno in testno množico X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# nastavite in usposobite cevovod +# nastavi in nauči cevovod pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# napovejte rezultate za testne podatke +# napovej rezultate za testne podatke pred = pipeline.predict(X_test) -# izračunajte MSE in koeficient determinacije -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# izračunaj RMSE in koeficient determinacije +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -To bi nam moralo dati najboljši koeficient determinacije skoraj 97% in MSE=2,23 (~8% napaka napovedi). +To nam naj bi dalo najboljši koeficient determinacije – skoraj 97 % in RMSE=2.23 (~8 % napaka napovedi). -| Model | MSE | Koeficient determinacije | -|-------|-----|--------------------------| -| Linearni `DayOfYear` | 2,77 (17,2%) | 0,07 | -| Polinomski `DayOfYear` | 2,73 (17,0%) | 0,08 | -| Linearni `Variety` | 5,24 (19,7%) | 0,77 | -| Linearni z vsemi značilnostmi | 2,84 (10,5%) | 0,94 | -| Polinomski z vsemi značilnostmi | 2,23 (8,25%) | 0,97 | +| Model | RMSE | Determinacija | +|-------|-----|---------------| +| Linearno z `DayOfYear` | 2.77 (17.2 %) | 0.07 | +| Polinomsko z `DayOfYear` | 2.73 (17.0 %) | 0.08 | +| Linearno z `Variety` | 5.24 (19.7 %) | 0.77 | +| Linearno z vsemi značilnostmi | 2.84 (10.5 %) | 0.94 | +| Polinomsko z vsemi značilnostmi | 2.23 (8.25 %) | 0.97 | -🏆 Odlično! Ustvarili ste štiri regresijske modele v eni lekciji in izboljšali kakovost modela na 97%. V zadnjem razdelku o regresiji se boste naučili o logistični regresiji za določanje kategorij. +🏆 Odlično! V eni lekciji ste ustvarili štiri modele regresije in izboljšali kvaliteto modela na 97 %. V zaključnem delu o regresiji se boste naučili o logistični regresiji za določanje kategorij. --- ## 🚀Izziv -Preizkusite več spremenljivk v tem zvezku, da vidite, kako korelacija ustreza natančnosti modela. +Testirajte več različnih spremenljivk v tem zvezku in preverite, kako korelacija vpliva na natančnost modela. -## [Kviz po predavanju](https://ff-quizzes.netlify.app/en/ml/) +## [Kvizi po predavanju](https://ff-quizzes.netlify.app/en/ml/) -## Pregled & Samostojno učenje +## Pregled in samostojno učenje -V tej lekciji smo se naučili o linearni regresiji. Obstajajo še druge pomembne vrste regresije. Preberite o tehnikah Stepwise, Ridge, Lasso in Elasticnet. Dobro je tudi študirati tečaj [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning), da se naučite več. +V tej lekciji smo se naučili o linearni regresiji. Obstajajo še druge pomembne vrste regresije. Preberite o tehnikah korak-po-korak (stepwise), Ridge, Lasso in Elasticnet. Dobro učno gradivo je [Stanfordov tečaj o statističnem učenju](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Naloga -[Izdelajte model](assignment.md) +[Ustvarite model](assignment.md) --- **Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, upoštevajte, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v svojem izvirnem jeziku naj velja kot avtoritativni vir. Za ključne informacije priporočamo strokovni človeški prevod. Nismo odgovorni za kakršne koli napačne razlage ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba šteti za avtoritativni vir. Za kritične informacije priporočamo strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb b/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb index c9f3ac327f..f8675e3b3c 100644 --- a/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linearna in polinomska regresija za določanje cen buč - Lekcija 3\n", + "## Linearna in polinomska regresija za ceno buč - Lekcija 3\n", "\n", - "Naložite potrebne knjižnice in podatkovni niz. Podatke pretvorite v podatkovni okvir, ki vsebuje podmnožico podatkov:\n", + "Naložite zahtevane knjižnice in podatkovni niz. Podatke pretvorite v dataframe, ki vsebuje podnabor podatkov:\n", "\n", - "- Uporabite samo buče, katerih cena je določena na sod\n", + "- Vzemite le buče, ki so ocenjene po košari\n", "- Datum pretvorite v mesec\n", - "- Ceno izračunajte kot povprečje najvišje in najnižje cene\n", - "- Ceno pretvorite tako, da odraža določanje cen glede na količino v sodih\n" + "- Izračunajte ceno kot povprečje visokih in nizkih cen\n", + "- Ceno pretvorite tako, da odraža ceno na količino bušljev\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Raztreseni diagram nas opominja, da imamo podatke le od avgusta do decembra. Verjetno potrebujemo več podatkov, da bi lahko sklepali na linearen način.\n" + "Razpršeni diagram nas spomni, da imamo podatke samo za mesece od avgusta do decembra. Verjetno potrebujemo več podatkov, da bomo lahko v linearnem smislu potegnili zaključke.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Poglejmo, ali obstaja korelacija:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zdi se, da je korelacija precej majhna, vendar obstaja neka druga, bolj pomembna povezava - ker se zdi, da imajo cenovne točke na zgornjem grafu več ločenih grozdov. Naredimo graf, ki bo prikazal različne sorte buč:\n" + "Zdi se, da je korelacija precej majhna, vendar obstaja neka druga, bolj pomembna povezava - saj se zdi, da imajo cenovne točke na zgornjem grafu več različnih grozdov. Naredimo graf, ki bo prikazal različne sorte buč:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Zaenkrat se osredotočimo samo na eno sorto - **vrsto pite**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Linearna regresija\n", "\n", - "Za učenje modela linearne regresije bomo uporabili Scikit Learn:\n" + "Uporabili bomo Scikit Learn za učenje modela linearne regresije:\n" ] }, { @@ -689,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Usposobljen model lahko uporabimo za napovedovanje cene:\n" + "Model, ki smo ga usposobili, lahko uporabimo za napoved cene:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Polinomska regresija\n", "\n", - "Včasih je razmerje med značilnostmi in rezultati po naravi nelinearno. Na primer, cene buč so lahko visoke pozimi (meseci=1,2), nato padejo poleti (meseci=5-7) in nato ponovno narastejo. Linearna regresija tega razmerja ne more natančno zajeti.\n", + "Včasih je razmerje med značilnostmi in rezultati po naravi nelinearno. Na primer, cena buč je lahko visoka pozimi (meseci=1,2), nato pade poleti (meseci=5-7) in potem spet naraste. Linearna regresija tega razmerja ne zna natančno zajeti.\n", "\n", - "V tem primeru lahko razmislimo o dodajanju dodatnih značilnosti. Preprost način je uporaba polinomov iz vhodnih značilnosti, kar vodi do **polinomske regresije**. V Scikit Learn lahko avtomatsko predračunamo polinomske značilnosti z uporabo cevovodov:\n" + "V takem primeru lahko razmislimo o dodajanju dodatnih značilnosti. Enostaven način je uporaba polinomov vhodnih značilnosti, kar pomeni **polinomsko regresijo**. V Scikit Learnu lahko samodejno predizračunamo polinomske značilnosti s pomočjo pipelinov: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kodiranje sort\n", + "### Različice kodiranja\n", "\n", - "V idealnem svetu bi želeli napovedati cene za različne sorte buč z uporabo istega modela. Da upoštevamo sorto, jo moramo najprej pretvoriti v številčno obliko, oziroma **kodirati**. Obstaja več načinov, kako to storiti:\n", + "V idealnem svetu želimo cene različnih sort buč napovedovati z uporabo istega modela. Da upoštevamo sorto, jo moramo najprej pretvoriti v numerično obliko oziroma **kodirati**. Obstaja več načinov, kako to lahko storimo:\n", "\n", - "* Preprosto številčno kodiranje, ki ustvari tabelo različnih sort in nato ime sorte zamenja z indeksom v tej tabeli. To ni najboljša ideja za linearno regresijo, saj linearna regresija upošteva številčno vrednost indeksa, ta pa verjetno ne bo numerično korelirala s ceno.\n", - "* Kodiranje s tehniko \"one-hot\", ki stolpec `Variety` zamenja s 4 različnimi stolpci, po enim za vsako sorto, ki vsebujejo 1, če ustrezna vrstica pripada določeni sorti, in 0 sicer.\n", + "* Enostavno numerično kodiranje, ki bo zgradilo tabelo različnih sort, nato pa zamenjalo ime sorte z indeksom v tej tabeli. To ni najboljša ideja za linearno regresijo, ker linearna regresija upošteva numerično vrednost indeksa, numerična vrednost pa verjetno ne bo numerično korelirala s ceno.\n", + "* One-hot kodiranje, ki bo stolpec `Variety` zamenjalo s 4 različnimi stolpci, po enim za vsako sorto, ki bo vseboval 1, če vrstica ustreza določeni sorti, in 0 sicer.\n", "\n", - "Spodnja koda prikazuje, kako lahko kodiramo sorto s tehniko \"one-hot\":\n" + "Spodnja koda prikazuje, kako lahko enosko kodiramo sorto:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Linearna regresija na sorti\n", + "### Linearna regresija za sorto\n", "\n", - "Zdaj bomo uporabili isto kodo kot zgoraj, vendar bomo namesto `DayOfYear` uporabili našo eno-vroče kodirano sorto kot vhod:\n" + "Zdaj bomo uporabili isto kodo kot zgoraj, vendar namesto `DayOfYear` kot vhod uporabili našo enokodirano sorto:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Prav tako lahko poskusimo uporabiti druge značilnosti na enak način in jih združiti s številskimi značilnostmi, kot sta `Month` ali `DayOfYear`:\n" + "Lahko poskusimo tudi uporabljati druge značilnosti na enak način in jih kombiniramo z numeričnimi značilnostmi, kot sta `Month` ali `DayOfYear`:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polinomska regresija\n", "\n", - "Polinomska regresija se lahko uporablja tudi s kategorialnimi značilnostmi, ki so enovročno kodirane (one-hot-encoded). Koda za učenje polinomske regresije bi bila v bistvu enaka kot tista, ki smo jo videli zgoraj.\n" + "Polinomsko regresijo lahko uporabimo tudi s kategorijskimi značilnostmi, ki so one-hot kodirane. Koda za učenje polinomske regresije bi bila v bistvu enaka kot smo jo videli zgoraj.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Omejitev odgovornosti**: \nTa dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da se zavedate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.\n" + "---\n\n\n**Omejitev odgovornosti**: \nTa dokument je bil preveden z uporabo avtomatske prevajalske storitve AI [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, upoštevajte, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem matičnem jeziku velja za avtoritativni vir. Za kritične informacije je priporočljiv strokovni human prevod. Nismo odgovorni za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:10:10+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "sl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sr/.co-op-translator.json b/translations/sr/.co-op-translator.json index 600cef9f9b..e2df9d0fe7 100644 --- a/translations/sr/.co-op-translator.json +++ b/translations/sr/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "sr" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:42:28+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:46:41+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "sr" }, @@ -90,8 +90,8 @@ "language_code": "sr" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:09:28+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:46:09+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "sr" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "sr" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:44:14+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "sr" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:33:09+00:00", diff --git a/translations/sr/1-Introduction/4-techniques-of-ML/README.md b/translations/sr/1-Introduction/4-techniques-of-ML/README.md index 4311a5308b..4edc3a3e44 100644 --- a/translations/sr/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/sr/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # Технике машинског учења -Процес креирања, коришћења и одржавања модела машинског учења и података које они користе веома се разликује од многих других развојних токова рада. У овом лекцији, разјаснићемо процес и представити главне технике које треба да знате. Ви ћете: +Процес изградње, коришћења и одржавања модела машинског учења и података које они користе је веома другачији процес у односу на многе друге развојне радне токове. У овој лекцији ћемо разјаснити процес и представити главне технике које треба да знате. Ви ћете: -- Разумети процесе који подупиру машинско учење на високом нивоу. -- Истражити основне концепте као што су „модели“, „предвиђања“ и „тренинг подаци“. +- Разумети процесе који стоје иза машинског учења на високом нивоу. +- Истражити основне појмове као што су 'модели', 'предвиђања' и 'подаци за тренирање'. -## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/) +## [Преквизни тест](https://ff-quizzes.netlify.app/en/ml/) -[![Машинско учење за почетнике - Технике машинског учења](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Машинско учење за почетнике - Технике машинског учења") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Кликните на слику изнад за кратак видео који обрађује ову лекцију. +> 🎥 Кликните на слику изнад за кратак видео који објашњава ову лекцију. ## Увод -На високом нивоу, вештина креирања процеса машинског учења (ML) састоји се од неколико корака: +На високом нивоу, занат стварања процеса машинског учења (ML) састоји се из низа корака: -1. **Одлучите о питању**. Већина процеса машинског учења почиње постављањем питања које не може бити одговорено једноставним условним програмом или системом заснованим на правилима. Ова питања често се односе на предвиђања заснована на збирци података. -2. **Сакупите и припремите податке**. Да бисте могли да одговорите на своје питање, потребни су вам подаци. Квалитет и, понекад, количина ваших података одредиће колико добро можете одговорити на почетно питање. Визуализација података је важан аспект ове фазе. Ова фаза такође укључује поделу података на групу за тренинг и тестирање ради изградње модела. -3. **Изаберите метод тренинга**. У зависности од вашег питања и природе ваших података, потребно је да изаберете како желите да обучите модел да најбоље одражава ваше податке и прави тачна предвиђања. Ово је део вашег процеса машинског учења који захтева специфичну експертизу и, често, значајну количину експериментисања. -4. **Тренирајте модел**. Користећи ваше тренинг податке, користићете различите алгоритме да обучите модел да препозна обрасце у подацима. Модел може користити унутрашње тежине које се могу прилагодити да би се одређени делови података привилеговали у односу на друге ради изградње бољег модела. -5. **Оцените модел**. Користите податке које модел никада раније није видео (ваше тест податке) из ваше сакупљене збирке да бисте видели како модел функционише. -6. **Подешавање параметара**. На основу перформанси вашег модела, можете поново урадити процес користећи различите параметре или променљиве које контролишу понашање алгоритама коришћених за тренинг модела. -7. **Предвиђање**. Користите нове уносе да бисте тестирали тачност вашег модела. +1. **Одлучите о питању**. Већина ML процеса почиње постављањем питања на које није могуће одговорити једноставним условним програмом или мотором заснованим на правилима. Ова питања често се односе на предвиђања заснована на скупу података. +2. **Прикупите и припремите податке**. Да бисте могли да одговорите на своје питање, потребни су вам подаци. Квалитет и понекад количина ваших података одредиће колико добро можете одговорити на почетно питање. Визуализација података је важан аспект ове фазе. Ова фаза такође укључује дељење података на групу за тренирање и тестирање како би се изградио модел. +3. **Изаберите методу тренирања**. У зависности од вашег питања и природе ваших података, требало би да одаберете како желите да тренирате модел да би најбоље одразио ваше податке и направио тачна предвиђања. Ово је део ML процеса који захтева специфично знање и често знатну количину експериментисања. +4. **Тренирајте модел**. Користећи податке за тренирање, употребићете различите алгоритме да обучите модел да препозна образце у подацима. Модел може користити унутрашње тежине којима је могуће управљати како би се одређени делови података фаворизовали у односу на друге за израду бољег модела. +5. **Оцените модел**. Користите податке које модел раније није видео (ваши тест подаци) из прикупљеног скупа да проверите како модел функционише. +6. **Подешавање параметара**. На основу перформанси вашег модела, можете поново покренути процес користећи различите параметре или променљиве које контролишу понашање алгоритама коришћених за тренирање модела. +7. **Предвиђање**. Користите нови унос за испитивање тачности вашег модела. ## Које питање поставити -Рачунари су посебно вешти у откривању скривених образаца у подацима. Ова корисност је веома корисна за истраживаче који имају питања о одређеној области која се не могу лако одговорити креирањем система заснованог на условима. На пример, у актуарском задатку, научник података може бити у стању да конструише ручно израђена правила о смртности пушача у односу на непушаче. +Рачунари су посебно вешти у откривању сакривених образаца у подацима. Ова корисност је веома помоћна истраживачима који имају питања о одређеној области на која није лако одговорити креирањем мотора правила заснованог на условима. На пример, имајући актуарски задатак, научник података може конструисати ручно направљена правила о смртности пушача у односу на непушаче. -Међутим, када се у једначину укључи много других променљивих, модел машинског учења може се показати ефикаснијим за предвиђање будућих стопа смртности на основу историје здравља из прошлости. Веселији пример може бити прављење временских предвиђања за месец април на одређеној локацији на основу података који укључују географску ширину, дужину, климатске промене, близину океана, обрасце млазног струјања и још много тога. +Међутим, када се у једначину уведу многе друге променљиве, ML модел може бити ефикаснији у предвиђању будућих стопа смртности заснованих на претходној здравственој историји. Веселији пример може бити прављење прогноза времена за април у одређеној локацији, узимајући у обзир податке који обухватају географску ширину, дужину, климатске промене, близину океана, шеме ваздушних струја и друге факторе. -✅ Ова [презентација](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) о временским моделима нуди историјску перспективу коришћења машинског учења у анализи времена. +✅ Ова [презентација](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) о моделима времена пружа историјски преглед коришћења ML у анализи времена. ## Задаци пре изградње -Пре него што почнете да градите свој модел, постоји неколико задатака које треба да завршите. Да бисте тестирали своје питање и формирали хипотезу засновану на предвиђањима модела, потребно је да идентификујете и конфигуришете неколико елемената. +Пре него што почнете да градите свој модел, потребно је да урадите неколико задатака. Да бисте тестирали своје питање и формирали хипотезу на основу предвиђања модела, потребно је да идентификујете и конфигуришете неколико елемената. -### Подаци +### Податке -Да бисте могли да одговорите на своје питање са било каквом сигурношћу, потребна вам је добра количина података одговарајућег типа. У овом тренутку треба да урадите две ствари: +Да бисте били у стању да одговорите на питање с било каквом сигурношћу, потребна вам је добра количина података од правог типа. У овом тренутку треба да урадите две ствари: -- **Сакупите податке**. Имајући на уму претходну лекцију о правичности у анализи података, сакупите своје податке пажљиво. Будите свесни извора ових података, било каквих урођених пристрасности које могу имати и документујте њихово порекло. -- **Припремите податке**. Постоји неколико корака у процесу припреме података. Можда ћете морати да сакупите податке и нормализујете их ако долазе из различитих извора. Можете побољшати квалитет и количину података кроз различите методе као што је конвертовање стрингова у бројеве (као што радимо у [Кластерисању](../../5-Clustering/1-Visualize/README.md)). Можда ћете такође генерисати нове податке, засноване на оригиналним (као што радимо у [Класификацији](../../4-Classification/1-Introduction/README.md)). Можете очистити и уредити податке (као што ћемо урадити пре лекције о [Веб апликацији](../../3-Web-App/README.md)). На крају, можда ћете морати да их рандомизујете и измешате, у зависности од ваших техника тренинга. +- **Прикупите податке**. Имајући у виду претходну лекцију о правичности у анализи података, сакупљајте податке пажљиво. Будите свесни извора тих података, могућих пристрасности које садрже и забележите њихов извор. +- **Припремите податке**. Постоји неколико корака у процесу припреме података. Можда ће бити потребно да скупите податке и нормализујете их ако долазе из различитих извора. Можете побољшати квалитет и количину података различитим методама као што је конверзија низа у бројеве (као што радимо у [Кластеризацији](../../5-Clustering/1-Visualize/README.md)). Такође можете генерисати нове податке на основу оригиналних (као што радимо у [Класификацији](../../4-Classification/1-Introduction/README.md)). Можете очистити и уредити податке (што ћемо урадити пре лекције о [Веб апликацији](../../3-Web-App/README.md)). На крају, можда ћете морати и да их насумично поређате и мењате редослед у зависности од техника тренирања. -✅ Након сакупљања и обраде ваших података, одвојите тренутак да видите да ли њихов облик омогућава да се адресира ваше намеравано питање. Може се десити да подаци неће добро функционисати у вашем задатом задатку, као што откривамо у нашим лекцијама о [Кластерисању](../../5-Clustering/1-Visualize/README.md)! +✅ Након прикупљања и обраде података, одвојите тренутак да проверите да ли њихов облик омогућава да одговорите на своје питање. Могуће је да подаци неће добро функционисати у вашем задатку, као што сазнајемо у лекцијама из [Кластеризације](../../5-Clustering/1-Visualize/README.md)! -### Карактеристике и циљ +### Карактеристике и циљеви -[Карактеристика](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) је мерљиво својство ваших података. У многим скуповима података она је изражена као наслов колоне, као што су „датум“, „величина“ или „боја“. Ваша променљива карактеристика, обично представљена као `X` у коду, представља улазну променљиву која ће се користити за тренинг модела. +[Карактеристика](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) је мерљиво својство ваших података. У многим скупинама података она је представљена као наслов колоне као што су 'датум', 'величина' или 'боја'. Ваша променљива карактеристика, обично означена као `X` у коду, представља улазну променљиву која ће се користити за тренирање модела. -Циљ је оно што покушавате да предвидите. Циљ, обично представљен као `y` у коду, представља одговор на питање које покушавате да поставите вашим подацима: у децембру, која **боја** тиквица ће бити најјефтинија? У Сан Франциску, који квартови ће имати најбољу **цену** некретнина? Понекад се циљ назива и атрибутом етикете. +Циљ је нешто што покушавате да предвидите. Циљ, обично означен као `y` у коду, представља одговор на питање које постављате вашим подацима: у децембру, која ће **боја** одбојних тикви бити најјефтинија? у Сан Франциску, која ће четврт бити са најбољом ценом некретнина? Понекад се циљ назива и ознака атрибута. ### Избор променљиве карактеристике -🎓 **Избор карактеристика и екстракција карактеристика** Како знате коју променљиву да изаберете приликом изградње модела? Вероватно ћете проћи кроз процес избора карактеристика или екстракције карактеристика да бисте изабрали праве променљиве за најперформантнији модел. Међутим, они нису исто: „Екстракција карактеристика креира нове карактеристике из функција оригиналних карактеристика, док избор карактеристика враћа подскуп карактеристика.“ ([извор](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Избор и екстракција карактеристика** Како знате коју променљиву да одаберете при изградњи модела? Веројатно ћете проћи кроз процес избора или екстракције карактеристика како бисте изабрали праве променљиве за најефикаснији модел. Међутим, ово није исто: "Екстракција карактеристика ствара нове карактеристике из функција оригиналних карактеристика, док избор карактеристика враћа подскуп карактеристика." ([извор](https://wikipedia.org/wiki/Feature_selection)) -### Визуализујте своје податке +### Визуализација ваших података -Важан аспект алатки научника података је моћ визуализације података користећи неколико одличних библиотека као што су Seaborn или MatPlotLib. Представљање ваших података визуелно може вам омогућити да откријете скривене корелације које можете искористити. Ваше визуализације могу вам такође помоћи да откријете пристрасност или неуравнотежене податке (као што откривамо у [Класификацији](../../4-Classification/2-Classifiers-1/README.md)). +Важан део алата научника података је способност визуализације података уз помоћ неколико одличних библиотека попут Seaborn или Matplotlib. Визуелно представљање ваших података може вам помоћи да откријете скривене корелације које можете искористити. Визуелизације вам такође могу помоћи да уочите пристрасност или неуравнотежене податке (као што сазнајемо у [Класификацији](../../4-Classification/2-Classifiers-1/README.md)). -### Поделите свој скуп података +### Разделите свој скуп података -Пре тренинга, потребно је да поделите свој скуп података на два или више делова неједнаке величине који и даље добро представљају податке. +Пре тренирања потребно је да поделите свој скуп података на два или више делова различите величине који ипак добро представљају податке. -- **Тренинг**. Овај део скупа података се уклапа у ваш модел да би га обучио. Овај сет чини већину оригиналног скупа података. -- **Тестирање**. Тест скуп података је независна група података, често сакупљена из оригиналних података, коју користите да потврдите перформансе изграђеног модела. -- **Валидација**. Валидациони сет је мања независна група примера коју користите да подесите хиперпараметре модела или архитектуру како бисте побољшали модел. У зависности од величине ваших података и питања које постављате, можда нећете морати да изградите овај трећи сет (као што напомињемо у [Предвиђању временских серија](../../7-TimeSeries/1-Introduction/README.md)). +- **Тренирање**. Овај део скупа података користи се за тренирање модела. Овај скуп чини већину оригиналних података. +- **Тестирање**. Скуп за тестирање је независна група података, често изведена из оригиналних, коју користите да потврдите учинак изграђеног модела. +- **Валидација**. Скуп за валидацију је мања независна група примера коју користите за подешавање хиперпараметара или архитектуре модела како бисте га побољшали. У зависности од величине ваших података и питања коју постављате, можда нећете морати да градите овај трећи скуп (као што наводимо у [Прогнозирању временских низа](../../7-TimeSeries/1-Introduction/README.md)). ## Изградња модела -Користећи ваше тренинг податке, ваш циљ је да изградите модел, или статистичку репрезентацију ваших података, користећи различите алгоритме да га **тренирате**. Тренинг модела излаже га подацима и омогућава му да прави претпоставке о уоченим обрасцима које открива, верификује и прихвата или одбацује. +Користећи своје податке за тренирање, циљ вам је да направите модел или статистички приказ својих података користећи различите алгоритме за **тренирање** модела. Тренирање модела излажући га подацима омогућава му да прави претпоставке о уоченим образцима које открије, верификује и прихвати или одбаци. -### Одлучите о методу тренинга +### Одлучите о методи тренирања -У зависности од вашег питања и природе ваших података, изабраћете метод за тренинг. Пролазећи кроз [документацију Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - коју користимо у овом курсу - можете истражити многе начине за тренинг модела. У зависности од вашег искуства, можда ћете морати да испробате неколико различитих метода да бисте изградили најбољи модел. Вероватно ћете проћи кроз процес у којем научници података процењују перформансе модела тако што му дају податке које није видео, проверавајући тачност, пристрасност и друге проблеме који умањују квалитет, и бирајући најприкладнији метод тренинга за задатак. +У зависности од вашег питања и природе података, одабраћете методу за тренирање. Проходећи документацију [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - коју користимо у овом курсу - можете испитати многе начине тренирања модела. У зависности од искуства, можда ћете морати испробати неколико различитих метода како бисте изградили најбољи модел. Вероватно ћете проћи процес у коме научници података процењују перформансе модела тако што му дају непознате податке, проверавају тачност, пристрасност и друге проблеме који умањују квалитет, и бирају најприкладнију методу тренирања за дати задатак. ### Тренирајте модел -Наоружани вашим тренинг подацима, спремни сте да их „уклопите“ да бисте креирали модел. Приметићете да у многим библиотекама машинског учења налазите код „model.fit“ - у то време шаљете своју променљиву карактеристику као низ вредности (обично „X“) и циљну променљиву (обично „y“). +Опремљени својим тренинг подацима, спремни сте да их 'прилагодите' за израду модела. Примијетићете да ћете у многим библиотекама машинског учења наћи код 'model.fit' - то је тренутак када уносите вашу променљиву карактеристику као низ вредности (обично 'X') и циљну променљиву (обично 'y'). ### Оцените модел -Када је процес тренинга завршен (може бити потребно много итерација, или „епоха“, да се обучи велики модел), моћи ћете да процените квалитет модела користећи тест податке да бисте измерили његове перформансе. Ови подаци су подскуп оригиналних података које модел раније није анализирао. Можете одштампати табелу метрика о квалитету вашег модела. +Када се процес тренирања заврши (може потрајати много итерација или 'епоха' за тренирање великог модела), моћи ћете да процените квалитет модела користећи тест податке да измерите његову успешност. То су подаци из оригиналног скупа које модел раније није анализирао. Можете одштампати табелу метрика о квалитету вашег модела. -🎓 **Уклапање модела** +🎓 **Фитовање модела** -У контексту машинског учења, уклапање модела односи се на тачност основне функције модела док покушава да анализира податке са којима није упознат. +У контексту машинског учења, фитовање модела односи се на тачност основне функције модела док покушава да анализира непознате податке. -🎓 **Недовољно уклапање** и **претерано уклапање** су уобичајени проблеми који умањују квалитет модела, јер модел или није довољно добро уклопљен или је превише добро уклопљен. Ово узрокује да модел прави предвиђања која су или превише блиско или превише лабаво повезана са његовим тренинг подацима. Претерано уклопљен модел предвиђа тренинг податке превише добро јер је превише добро научио детаље и шум података. Недовољно уклопљен модел није тачан јер не може ни тачно анализирати своје тренинг податке ни податке које још није „видео“. +🎓 **Мањак уклапања (underfitting)** и **прекомеран уклапање (overfitting)** су уобичајени проблеми који умањују квалитет модела, јер модел није нити довољно нити преглупо прилагођен. Ово узрокује да модел прави предвиђања која су или превише блиска или пренаглашена у односу на податке за тренирање. Прекомеран модел предвиђа податке за тренирање прецизно зато што је превише научио детаље и шум података. Мањак уклапања значи да модел није тачан јер не може ни прецизно анализирати податке за тренирање ни оне које раније није 'видео'. -![модел претераног уклапања](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/sr/overfitting.1c132d92bfd93cb6.webp) > Инфографика од [Jen Looper](https://twitter.com/jenlooper) ## Подешавање параметара -Када је ваш почетни тренинг завршен, посматрајте квалитет модела и размислите о његовом побољшању подешавањем његових „хиперпараметара“. Прочитајте више о процесу [у документацији](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Када је почетно тренирање завршено, посматрајте квалитет модела и размотрите његово побољшање подешавањем његових 'хиперпараметара'. Више о процесу прочитајте [у документацији](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Предвиђање -Ово је тренутак када можете користити потпуно нове податке да тестирате тачност вашег модела. У „примењеном“ окружењу машинског учења, где градите веб ресурсе за коришћење модела у продукцији, овај процес може укључивати сакупљање корисничког уноса (на пример, притисак на дугме) да бисте поставили променљиву и послали је моделу за инференцију или евалуацију. +Ово је тренутак када можете користити потпуно нове податке да тестирате тачност свог модела. У примењеном ML окружењу, где креирате веб ресурсе за коришћење модела у продукцији, овај процес може укључивати прикупљање корисничког уноса (нпр. притисак дугмета) ради подешавања променљиве и слања модела на извршавање, односно процену. -У овим лекцијама, открићете како да користите ове кораке за припрему, изградњу, тестирање, евалуацију и предвиђање - све гестове научника података и више, док напредујете на свом путу да постанете „фул стејк“ инжењер машинског учења. +У овим лекцијама открићете како користити ове кораке да припремите, изградите, тестирате, оцијените и предвидите — све покрете научника података и још више, како напредујете у свом путу ка постајању 'фул стацк' ML инжењер. --- ## 🚀Изазов -Нацртајте дијаграм тока који одражава кораке практичара машинског учења. Где себе видите тренутно у процесу? Где предвиђате да ћете наћи потешкоће? Шта вам се чини лако? +Нацртајте дијаграм тока који приказује кораке ML практичара. Где себе видите у овом процесу? Где сматрате да ћете имати потешкоћа? Шта вам делује једноставно? -## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/) +## [Пост-лекцијски квиз](https://ff-quizzes.netlify.app/en/ml/) ## Преглед и самостално учење -Претражите интернет за интервјуе са научницима података који говоре о свом свакодневном раду. Ево [једног](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Претражите онлајн интервјуе са научницима података који причају о свом свакодневном раду. Ево [једног](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Задатак @@ -119,5 +119,7 @@ --- -**Одрицање од одговорности**: -Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода. \ No newline at end of file + +**Ограничавање одговорности**: +Овај документ је преведен коришћењем AI услуге за превођење [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да превод буде тачан, молимо имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Првобитни документ на оригиналном језику треба сматрати ауторитетним извором. За важне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразумевања или погрешне интерпретације које произилазе из коришћења овог превода. + \ No newline at end of file diff --git a/translations/sr/2-Regression/3-Linear/README.md b/translations/sr/2-Regression/3-Linear/README.md index 681487c8c1..cb76cda999 100644 --- a/translations/sr/2-Regression/3-Linear/README.md +++ b/translations/sr/2-Regression/3-Linear/README.md @@ -2,134 +2,135 @@ ## Напомена за почетнике -Линеарна регресија се користи када желимо да предвидимо **намерну вредност** (на пример, цену куће, температуру или продају). Ради тако што пронађе праву линију која најбоље представља зависност између улазних карактеристика и излаза. +Линеарна регресија се користи када желимо да предвидимо **нумеричку вредност** (на пример, цену куће, температуру или продају). +Ради тако што налази најбољу праву линију која представља везу између улазних карактеристика и излаза. -У овој лекцији се фокусирамо на разумевање концепта пре него што истражимо напредније регресионе технике. -![Линеарна насупрот полиномијалној регресији инфографика](../../../../translated_images/sr/linear-polynomial.5523c7cb6576ccab.webp) -> Инфографика од [Дасани Мадипали](https://twitter.com/dasani_decoded) +У овој лекцији се фокусирамо на разумевање концепта пре него што истражимо напредније технике регресије. +![Линеарна регресија у односу на полиномну регресију инфографик](../../../../translated_images/sr/linear-polynomial.5523c7cb6576ccab.webp) +> Инфографик од [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ова лекција је доступна у R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Ова лекција је доступна и у R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Увод -До сада сте истражили шта је регресија помоћу узорних података скупљених из сета података о ценама бундеве који ћемо користити током ове лекције. Такође сте визуализовали те податке користећи Matplotlib. +До сада сте истраживали шта је регресија на примеру података сакупљених из скупа података о ценама бундеве који ћемо користити током ове лекције. Такође сте приказали податке користећи Matplotlib. -Сада сте спремни да дубље зароните у регресију за машинско учење. Док визуализација омогућава да разумете податке, права моћ машинског учења долази из _тренинга модела_. Модели се обучавају на историјским подацима да аутоматски ухвате зависности у подацима и омогућавају вам да предвидите резултате за нове податке које модел раније није видео. +Сада сте спремни да дубље зароните у регресију за машинско учење. Док визуелизација омогућава разумевање података, права снага машинског учења долази из _тренинга модела_. Модели се тренирају на историјским подацима како би аутоматски ухватили зависности у подацима и омогућили предвиђање исхода за нове податке које модел до тада није видео. -У овој лекцији научићете више о две врсте регресије: _основна линеарна регресија_ и _полиномијална регресија_, заједно са неком математиком која стоји иза ових техника. Ови модели ће нам омогућити да предвидимо цене бундева у зависности од различитих улазних података. +У овој лекцији научићете више о две врсте регресије: _основна линеарна регресија_ и _полиномна регресија_, заједно са неким математичким основама ових техника. Ови модели ће нам омогућити да предвидимо цене бундеве зависно од различитих улазних података. -[![Машинско учење за почетнике - Разумевање линеарне регресије](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Машинско учење за почетнике - Разумевање линеарне регресије") +[![ML за почетнике - Разумевање линеарне регресије](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML за почетнике - Разумевање линеарне регресије") -> 🎥 Кликните слику изнад за кратак видео преглед линеарне регресије. +> 🎥 Кликните на слику изнад за кратак видео преглед линеарне регресије. -> Током целог овог курикулума претпостављамо минимално знање из математике, и настојимо да буде приступачно студентима који долазе из других области, па обратите пажњу на напомене, 🧮 илустрације, дијаграме и друге алате за учење који помажу у разумевању. +> Током овог курикулума претпостављамо минимално познавање математике и трудимо се да буде приступачна студентима из других области, па обратите пажњу на напомене, 🧮 илустрације, дијаграме и друге алате за учење који помажу у разумевању. -### Предуслов +### Претпоставка -Сада би требало да сте упознати са структуром података о бундевама које посматрамо. Можете их пронаћи претходно учитане и очишћене у фајлу _notebook.ipynb_ који прати ову лекцију. У том фајлу, цена бундеве је приказана по бушелу у новом дате фрејму. Обавезно проверите да можете покренути ове нотебоок-ове у Visual Studio Code окружењу. +До сада бисте требали бити упознати са структуром података о бундевама које прегледамо. Они су унапред учитани и очишћени у датотеци _notebook.ipynb_ ове лекције. У датотеци је цена бундеве приказана по бушелу у новом DataFrame-у. Уверите се да можете покренути ове нотебуке у Visual Studio Code окружењу. ### Припрема -Као подсетник, учитавате ове податке да бисте могли да поставите питања у вези са њима. +Као подсетник, учитавате ове податке како бисте могли да им постављате питања. -- Када је најбоље време за куповину бундева? -- Коју цену могу очекивати за кутију минијатурних бундева? -- Да ли треба да их купим у корпама за пола бушела или у кутијама од 1 1/9 бушела? -Хајде да наставимо да прегледамо ове податке. +- Када је најбоље време за куповину бундеве? +- Коју цену могу очекивати за кутију минијатурних бундевa? +- Да ли треба да их купим у корпама од пола бушела или у кутијама од 1 1/9 бушела? +Хајде да наставимо да истражујемо ове податке. -У претходној лекцији, направили сте Pandas дате фрејм и попунили га делом оригиналног скупа података, стандардујући цене по бушелу. Међутим, тиме сте успели да сакупите око 400 тачака података и само за јесење месеце. +У претходној лекцији креирали сте Pandas DataFrame и употпунили га делом оригиналног скупа података, стандардизујући цене по бушелу. Међутим, тад сте могли скупити око 400 тачака података и само за јесење месеце. -Погледајте податке које смо претходно учитали у приложеном нотебоок-у ове лекције. Податак је претходно учитан и направљен је почетни scatterplot (распршени графикон) који приказује месец. Можда можемо добити више детаља о природи података ажурирањем и додатним чишћењем. +Погледајте податке које смо учитали у нотебук ове лекције. Податак је учитан унапред и приказан је почетни scatterplot који показује податке по месецу. Можда можемо добити детаљније информације о природи података ако их додатно очистимо. -## Линеарна регресиона линија +## Линеарна линија регресије -Као што сте научили у Лекцији 1, циљ линеарне регресије је да буде могуће нацртати линију која: +Као што сте научили у Лекцији 1, циљ линеарне регресије је да се прикаже линија која: -- **Приказује везе између променљивих**. Прикажи однос између променљивих -- **Прави предвиђања**. Тачно предвиђа где ће нова тачка података пасти у односу на ту линију. +- **Показује релације између варијабли**. Приказује однос између варијабли +- **Прави предвиђања**. Прецизно предвиђа где би нова тачка могла пасти у односу на ту линију. -Типично је за **регресију најмањих квадрата** да повуче ову врсту линије. Термин "најмањи квадрати" се односи на процес минимизирања укупне грешке у нашем моделу. За сваку тачку података меримо вертикалну удаљеност (која се назива резидуал) између стварне тачке и наше регресионе линије. +Типично је за **Линијску регресију најмањих квадрата** да се црта оваква линија. Појам „најмањих квадрата“ односи се на процес минимизације укупне грешке у моделу. За сваку тачку мере се вертикална удаљеност (названа резидуала) између стварне тачке и наше регресионе линије. -Ове удаљености квадратимо из два главна разлога: +Ове удаљености квадратујемо из два главна разлога: -1. **Величина уместо смера:** Желимо да грешка од -5 буде третирана исто као грешка од +5. Квадрирање све вредности чини позитивним. +1. **Величина над правцем:** Желимо да посматрамо грешку од -5 као исту као и грешку од +5. Квадрирање претвара све вредности у позитивне. -2. **Казњавање одступања:** Квадрирање даје већу тежину већим грешкама, приморавајући линију да остане ближе тачкама које су удаљене. +2. **Кажњавање екстрема:** Квадрирање даје већу тежину већим грешкама, приморавајући линију да буде ближе удаљеним тачкама. -Затим сабирамо све ове вредности квадрате заједно. Наш циљ је да пронађемо специфичну линију код које је ова укупна сума најмања (најмања могућа вредност)—отуда и назив "најмањи квадрати". +Онда сабирамо све ове квадрате. Циљ нам је да нађемо прецизну линију где је овај збир најмањи (најмања могућа вредност) — отуда и назив „најмањих квадрата“. -> **🧮 Покажи ми математику** -> -> Ова линија, названа _линија најбољег прилагођавања_ може се изразити [једначином](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Покажи ми математику** +> +> Ова линија, названа _линија најбољег уклапања_, може се изразити [једначином](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> `X` је 'објашњавајућа променљива'. `Y` је 'зависна променљива'. Нагиб линије је `b`, док је `a` y-пресек, што представља вредност `Y` када је `X = 0`. +> `X` је 'објашњавајућа варијабла'. `Y` је 'зависна варијабла'. Нагиб линије је `b` а `a` је y-пресек, што означава вредност `Y` када је `X = 0`. > >![израчун нагиба](../../../../translated_images/sr/slope.f3c9d5910ddbfcf9.webp) > -> Прво израчунај нагиб `b`. Инфографика од [Џен Лупер](https://twitter.com/jenlooper) +> Прво израчунати нагиб `b`. Инфографик од [Jen Looper](https://twitter.com/jenlooper) > -> Другим речима, и осврћући се на наше оригинално питање у вези цена бундеве: "предвидети цену бундеве по бушелу по месецу", `X` би се односило на цену, а `Y` на месец продаје. +> Другим речима, и у вези са питањем о ценама бундеве: „предвидети цену бундеве по бушелу по месецу“, `X` би се односило на цену а `Y` на месец продаје. > ->![заврши једначину](../../../../translated_images/sr/calculation.a209813050a1ddb1.webp) +>![комплетирање једначине](../../../../translated_images/sr/calculation.a209813050a1ddb1.webp) > -> Израчунај вредност `Y`. Ако плаћате око $4, мора да је април! Инфографика од [Џен Лупер](https://twitter.com/jenlooper) +> Израчунајте вредност Y. Ако плаћате око 4 долара, мора да је април! Инфографик од [Jen Looper](https://twitter.com/jenlooper) > -> Математика која израчунава линију мора показати нагиб линије, који такође зависи од пресека, односно где се `Y` налази када је `X = 0`. +> Математика која израчунава линију мора да прикаже нагиб линије, који такође зависи од пресека, односно где се `Y` налази када је `X = 0`. > -> Метод рачунања ових вредности можете видети на [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) сајту. Посетите и [овај калкулатор најмањих квадрата](https://www.mathsisfun.com/data/least-squares-calculator.html) да бисте приметили како вредности бројева утичу на линију. +> Метод за израчунавање ових вредности можете погледати на веб сајту [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Такође посетите [овај калкулатор најмањих квадрата](https://www.mathsisfun.com/data/least-squares-calculator.html) да видите како вредности утичу на линију. ## Корелација -Још један термин који треба разумети је **коефицијент корелације** између датих X и Y променљивих. Коришћењем scatterplot-а, можете брзо визуализовати овај коефицијент. На графикону са тачкама распршеним у прелепој линији корелација је висока, док је на графикону са тачкама распршеним на све стране између X и Y корелација ниска. +Један још термин који треба разумети је **коефицијент корелације** између датоих X и Y варијабли. Коришћењем scatterplot-а можете брзо визуелизовати овај коефицијент. График са тачкама распоређеним у лепој линији има високу корелацију, али график са тачкама распрсканим свуда између X и Y има ниску корелацију. -Добар модел линеарне регресије ће имати висок (ближе 1 него 0) коефицијент корелације користећи метод најмањих квадрата с линијом регресије. +Добар линеарни регресиони модел имаће висок (ближи 1 него 0) коефицијент корелације користећи методу линијске регресије најмањих квадрата. -✅ Покрените нотебоок који прати ову лекцију и погледајте scatterplot Месец у односу на цену. Да ли подаци који повезују месец и цену за продају бундеве изгледају као да имају високу или ниску корелацију, према вашој визуелној интерпретацији scatterplot-а? Да ли се то мења ако користите прецизнију меру уместо `Month`, на пример *дан у години* (број дана од почетка године)? +✅ Покрените нотебук који иде уз ову лекцију и погледајте scatterplot везе између Месеца и Цене. Да ли вам подаци који повезују Месец и Цену продаје бундеве делују као да имају високу или ниску корелацију, према вашем визуелном тумачењу графика? Да ли се то мења ако користите прецизнију меру уместо `Month`, нпр. *дан у години* (тј. број дана од почетка године)? -У доњем коду претпоставићемо да смо очистили податке и добили дате фрејм назван `new_pumpkins`, сличан следећем: +У дољем коду претпоставићемо да смо очистили податке и добили DataFrame под називом `new_pumpkins`, сличан овом: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Код за чишћење података налази се у [`notebook.ipynb`](notebook.ipynb). Извршили смо исте кораке чишћења као у претходној лекцији и израчунали колону `DayOfYear` користећи следећи израз: +> Код за очишћавање података доступан је у [`notebook.ipynb`](notebook.ipynb). Урадили смо исте кораке чишћења као у претходној лекцији и израчунали колону `DayOfYear` овим изразом: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Сада када имате разумевање математике иза линеарне регресије, хајде да направимо регресиони модел да видимо можемо ли предвидети који пакет бундева ће имати најбоље цене. Неко ко купује бундеве за хладњачу можда жели ове информације како би оптимизовао куповине пакета бундева за хладњачу. +Сада када разумете математику иза линеарне регресије, направимо регресиони модел да видимо можемо ли предвидети који пакет бундеве ће имати најбоље цене. Неко ко купује бундеве за празнично место можда ће желети ову информацију да оптимизује своје куповине. ## Тражење корелације -[![Машинско учење за почетнике - Тражење корелације: Кључ линеарне регресије](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Машинско учење за почетнике - Тражење корелације: Кључ линеарне регресије") +[![ML за почетнике - Тражење корелације: Кључ линеарне регресије](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML за почетнике - Тражење корелације: Кључ линеарне регресије") -> 🎥 Кликните слику изнад за кратак видео преглед корелације. +> 🎥 Кликните на слику изнад за кратак видео преглед корелације. -Из претходне лекције сте вероватно видели да просечна цена за различите месеце изгледа овако: +Из претходне лекције вероватно сте видели да просечна цена за различите месеце изгледа овако: Просечна цена по месецу -Ово указује да би требало да постоји нека корелација, и да можемо покушати обуку модела линеарне регресије да предвидимо однос између `Month` и `Price` или између `DayOfYear` и `Price`. Ево scatter plot-а који показује овај други однос: +Ово указује да постоји нека корелација, и можемо покушати да обучимо линеарни регресиони модел да предвиди везу између `Month` и `Price` или између `DayOfYear` и `Price`. Ево scatterplot који показује ову другу везу: -Scatter plot цена у односу на дан у години +Scatter plot цена у односу на дан у години -Хајде да видимо да ли постоји корелација коришћењем `corr` функције: +Погледајмо да ли постоји корелација користећи функцију `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Изгледа да је корелација прилично мала, -0.15 по `Month` и -0.17 по `DayOfMonth`, али може бити још неки важан однос. Изгледа као да постоје различити кластери цена који одговарају различитим врстама бундева. Да бисмо потврдили ову хипотезу, хајде да свака категорија бундеве буде приказана различитом бојом. Прослеђујући `ax` параметар `scatter` функцији за цртање можемо приказати све тачке на истом графикону: +Изгледа да је корелација релативно мала, -0.15 по `Month` и -0.17 по `DayOfYear`, али може постојати нека друга важна веза. Изгледа да постоје различити кластери цена који одговарају различитим врстама бундеве. Да бисмо потврдили ову хипотезу, прикажимо сваку категорију бундеве у другој боји. Прослеђивањем параметра `ax` функцији за цртање `scatter` можемо приказати све тачке на истом графику: ```python ax=None @@ -139,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot цена у односу на дан у години, са бојама +Scatter plot цена у односу на дан у години по бојама -Наша истрага сугерише да врста има већег утицаја на цену од стварног датума продаје. Ово можемо видети уз помоћ графикона: +Наша истрага указује да врста има већи утицај на укупну цену од самог датума продаје. Ово можемо искусити на графикону: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Графикон цена по врсти +Стап графикон цена по врсти -Хајде сад да се фокусирамо само на једну врсту бундеве, 'тип за пите', и видимо каквог утицаја има датум на цену: +Фокусирајмо се за сада само на једну врсту бундеве, 'pie type', и видимо каквог утицаја датум има на цену: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot цена у односу на дан у години за тип за пите +Scatter plot цена у односу на дан у години за pie тип -Ако сада израчунамо корелацију између `Price` и `DayOfYear` користећи `corr` функцију, добићемо нешто као `-0.27` - што значи да има смисла тренирати предиктивни модел. +Ако сада израчунамо корелацију између `Price` и `DayOfYear` користећи функцију `corr`, добићемо нешто као `-0.27` - што значи да има смисла тренирати предиктивни модел. -> Пре тренирања линеарног регресионог модела, важно је осигурати да су наши подаци чисти. Линеарна регресија не ради добро са недостајућим вредностима, па има смисла уклонити све празне ћелије: +> Пре тренинга линеарног регресионог модела, важно је уверити се да су наши подаци чисти. Линеарна регресија не ради добро са недостајућим вредностима, па има смисла уклонити све празне ћелије: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Други приступ би био да се празне вредности попуне просечним вредностима из одговарајуће колоне. +Друга опција би била да се празне вредности попуне просечним вредностима из одговарајуће колоне. ## Једноставна линеарна регресија -[![Машинско учење за почетнике - Линеарна и полиномијална регресија користећи Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Машинско учење за почетнике - Линеарна и полиномијална регресија користећи Scikit-learn") +[![ML за почетнике - Линеарна и полиномна регресија користећи Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML за почетнике - Линеарна и полиномна регресија користећи Scikit-learn") -> 🎥 Кликните слику изнад за кратак видео преглед линеарне и полиномијалне регресије. +> 🎥 Кликните на слику изнад за кратак видео преглед линеарне и полиномне регресије. -За обуку нашег модела линеарне регресије користићемо библиотеку **Scikit-learn**. +За тренирање нашег линеарног регресионог модела користићемо библиотеку **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -182,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Почињемо раздвајањем улазних вредности (карактеристика) и очекиваног излаза (ознаке) у одвојене numpy низове: +Започињемо раздвајањем улазних вредности (карактеристика) и очекиваног излаза (ознака) у одвојене numpy низове: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Имајте у виду да смо морали да извршимо `reshape` улазних података да би Linear Regression пакет исправно разумео. Линеарна регресија очекује 2Д низ као улаз, где сваки ред одговара вектору улазних карактеристика. У нашем случају, пошто имамо само један улаз, потребан нам је низ са обликом N×1, где је N величина скупа података. +> Имајте на уму да смо морали користити `reshape` на улазним подацима како би пакет Линеарне регресије правилно разумео унос. Линеарна регресија очекује 2D низ као улаз, где сваки ред одговара вектору улазних карактеристика. У нашем случају, јер имамо само један улаз, треба нам низ облика N×1, где је N величина скупа података. -Затим, морамо поделити податке на тренирајући и тестни скуп, како бисмо могли да валидамо наш модел након тренинга: +Затим морамо поделити податке на тренинг и тест групе, како бисмо могли да валидирамо наш модел након тренинга: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Коначно, тренирање самог модела линеарне регресије траје само две линије кода. Дефинишемо `LinearRegression` објекат и прилагођавамо га нашим подацима користећи `fit` методу: +Коначно, само тренирање Линеарног регресионог модела траје само две линије кода. Дефинишемо објекат `LinearRegression`, и обучавамо га помоћу методе `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Објект `LinearRegression` након `fit`-овања садржи све коефицијенте регресије, до којих се може приступити коришћењем `.coef_` својства. У нашем случају, постоји само један коефицијент, који би требао бити око `-0.017`. То значи да цене изгледа да благо падају са временом, али не превише, око 2 цента дневно. Такође можемо приступити тачки пресека регресије са Y осом користећи `lin_reg.intercept_` - она ће у нашем случају бити око `21`, што указује на цену на почетку године. +Објекат `LinearRegression` након `fit` метода садржи све коефицијенте регресије, којима се може приступити помоћу својства `.coef_`. У нашем случају постоји само један коефицијент, који би требало да буде око `-0.017`. То значи да цене изгледа да мало падају са временом, али не превише, око 2 цента дневно. Можемо такође приступити пресеку регресије са Y-осом помоћу `lin_reg.intercept_` - он ће у нашем случају бити око `21`, што указује на цену на почетку године. -Да видимо колико је наш модел прецизан, можемо предвидети цене на тест скупу података, а затим мерити колико су наша предвиђања блиска очекиваним вредностима. Ово се може урадити коришћењем метрике корен средње квадратичне грешке (RMSE), која је корен средине свих квадратних разлика између очекиване и предвиђене вредности. +Да видимо колико је наш модел прецизан, можемо предвидети цене на тест сету, а затим измерити колико су наше предвиђања близу очекиваних вредности. Ово се може урадити коришћењем метрике корена средње квадратне грешке (RMSE), која представља корен из средње вредности свих квадратних разлика између очекиване и предвиђене вредности. ```python pred = lin_reg.predict(X_test) @@ -215,36 +216,36 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Чини се да је наша грешка око 2 поена, што је ~17%. Није баш добро. Још један показатељ квалитета модела је **коефицијент детерминације**, који се добија овако: +Наша грешка изгледа да је око 2 поена, што је ~17%. Није превише добро. Други показатељ квалитета модела је **коефицијент детерминације**, који се добија овако: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - Ако је вредност 0, то значи да модел не узима у обзир улазне податке и понаша се као *најгории линеарни предиктор*, што је једноставно просечна вредност резултата. Вредност 1 значи да можемо савршено предвидети све очекиване излазе. У нашем случају, коефицијент је око 0.06, што је прилично ниско. +Ако је вредност 0, то значи да модел не узима у обзир улазне податке и понаша се као *најгору линеарну претпоставку*, која је једноставно средња вредност резултата. Вредност 1 значи да можемо савршено предвидети све очекиване излазе. У нашем случају коефицијент је око 0.06, што је прилично ниско. -Такође можемо приказати тест податке заједно са регресионом линијом да боље видимо како регресија ради у нашем случају: +Такође можемо нацртати тест податке заједно са регресионом линијом како бисмо боље видели како регресија ради у нашем случају: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` -Linear regression +Линеарна регресија ## Полиномијална регресија -Још један тип линеарне регресије је полиномијална регресија. Иако понекад постоји линеарна веза између променљивих - што је тиква већа у обиму, то је цена виша - понекад се те везе не могу приказати као раван или права линија. +Још један тип линеарне регресије је полиномијална регресија. Иако повремено постоји линеарна веза између променљивих – што већа запремина бундеве, то је цена виша – понекад се ове везе не могу приказати као раван или права линија. -✅ Ево [неколико додатних примера](https://online.stat.psu.edu/stat501/lesson/9/9.8) података који би могли користити полиномијалну регресију +✅ Ево [још неких примера](https://online.stat.psu.edu/stat501/lesson/9/9.8) података који би могли користити полиномијалну регресију -Погледајте још једном однос између Датума и Цене. Да ли овај распоред тачака делује као нешто што нужно треба анализирати правом линијом? Зар цене не могу флуктуирати? У овом случају, можете покушати полиномијалну регресију. +Погледајте поново везу између датума и цене. Да ли овај расејни график делује као да би га нужно требало анализирати правом линијом? Зар цене не могу да варирају? У овом случају можете покушати полиномијалну регресију. ✅ Полиноми су математички изрази који могу садржати једну или више променљивих и коефицијената -Полиномијална регресија прави закривљену линију да боље прилагоди нелинеарне податке. У нашем случају, ако укључимо квадратну променљиву `DayOfYear` у улазне податке, требало би да можемо прилагодити наше податке параболичном кривом, која ће имати минимум у одређеној тачки током године. +Полиномијална регресија креира закривљену линију да боље прилагоди нелинеарне податке. У нашем случају, ако укључимо квадратну променљиву `DayOfYear` у улазне податке, требало би да можемо да прилагодимо наше податке параболичном кривом која ће имати минимум у некој тачки у години. -Scikit-learn укључује користан [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) за комбиновање различитих корака обраде података заједно. **Pipeline** је ланац **estimatora**. У нашем случају, направићемо pipeline који прво додаје полиномијалне особине нашем моделу, а затим тренира регресију: +Scikit-learn укључује корисни [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) за комбиновање различитих корака обраде података. **Pipeline** је ланац **ентиматора (estimators)**. У нашем случају ћемо направити pipeline који прво додаје полиномијалне карактеристике нашем моделу, а затим тренира регресију: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Користећи `PolynomialFeatures(2)` значи да ћемо укључити све другостепене полиноме из улазних података. У нашем случају то ће значити само `DayOfYear`2, али с обзиром на две улазне променљиве X и Y, ово ће додати X2, XY и Y2. Такође можемо користити и полиноме виших степени ако желимо. +Коришћење `PolynomialFeatures(2)` значи да ћемо укључити све полиноме другог степена из улазних података. У нашем случају то ће само значити `DayOfYear`2, али ако имамо две улазне променљиве X и Y, то ће додати X2, XY и Y2. Такође можемо користити полиноме виших степени ако желимо. + +Pipeline-ови се могу користити на исти начин као и оригинални `LinearRegression` објекат, односно можемо `fit`-овати pipeline, а затим користити `predict` за добијање резултата предвиђања: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +За цртање глатке апроксимационе криве користимо `np.linspace` да створимо равномерни опсег улазних вредности, уместо да цртамо директно на неуређеним тест подацима (што би произвело зигзаг линију): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline-ови се могу користити на исти начин као и оригинални објекат `LinearRegression`, односно можемо `fit`-овати pipeline, а затим користити `predict` за добијање резултата предвиђања. Ево графикона који показује тест податке и криву апроксимације: +Ево графика који приказује тест податке и апроксимациону криву: -Polynomial regression +Полиномијална регресија -Коришћењем полиномијалне регресије можемо добити мало мању МСЕ и већи коефицијент детерминације, али не значајно. Потребно је узети у обзир и друге карактеристике! +Коришћењем полиномијалне регресије можемо добити благо нижу RMSE и виши коефицијент детерминације, али не значајно. Морамо узети у обзир и друге карактеристике! -> Можете приметити да се минималне цене тиквића појављују негде око Ноћи вештица. Како бисте то објаснили? +> Можете видети да се минималне цене бундеве посматрају негде око Ноћи вештица. Како то објашњавате? -🎃 Честитамо, управо сте направили модел који може помоћи у предвиђању цене пит тиквица. Вероватно можете поновити исти поступак за све типове тиквица, али то би било заморно. Сада ћемо научити како да узмемо у обзир сорту тикве у нашем моделу! +🎃 Честитамо, управо сте креирали модел који може помоћи у предвиђању цене пумпкин пита. Вероватно можете поновити исти поступак за све врсте бундеве, али то би било заморно. Хајде сада да сазнамо како да рачунамо са разним врстама бундеве у нашем моделу! ## Категоријалне карактеристике -У идеалном свету, желимо да можемо предвидети цене за различите сорте тикви користећи исти модел. Међутим, колона `Variety` је нешто другачија од колона као што је `Month`, јер садржи не-нумеричке вредности. Такве колоне се зову **категоријалне**. +У идеалном свету желимо бити у могућности да предвидимо цене за различите врсте бундеве користећи исти модел. Међутим, колона `Variety` је нешто другачија од колона као што је `Month`, јер садржи нумерички неприхватљиве вредности. Такве колоне се зову **категоријалне**. -[![ML за почетнике - предвиђања категоријалних особина са линеарном регресијом](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML за почетнике - предвиђања категоријалних особина са линеарном регресијом") +[![ML за почетнике - предвиђања категоријалних карактеристика помоћу линеарне регресије](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML за почетнике - предвиђања категоријалних карактеристика помоћу линеарне регресије") -> 🎥 Кликните на слику изнад за кратак видео преглед коришћења категоријалних особина. +> 🎥 Кликните на слику изнад за кратак видео преглед коришћења категоријалних карактеристика. -Овде можете видети како просечна цена зависи од сорте: +Овде можете видети како просечна цена зависи од врсте: -Average price by variety +Просечна цена по врсти -Да бисмо узели у обзир сорту, прво морамо да је претворимо у нумерички облик, односно да је **енкодирају**. Постоји неколико начина како то можемо урадити: +Да бисмо узели у обзир врсту, прво морамо да је конвертујемо у нумерички облик, односно да је **енкодујемо**. Постоји неколико начина да то урадимо: -* Једноставно **нумеричко кодирање** ће направити табелу различитих сорти, а затим заменити име сорте индексом у тој табели. Ово није најбоља идеја за линеарну регресију, јер линеарна регресија узима стварну нумеричку вредност индекса и додаје је резултату помноженом неким коефицијентом. У нашем случају, веза између броја индекса и цене је јасно нелинеарна, чак и ако осигурамо да су индекси уређени на одређени начин. -* **One-hot кодирање** ће заменити колону `Variety` четири различите колоне, по једну за сваки тип. Свака колона ће садржати `1` ако је одговарајући ред тог типа, и `0` у супротном. Ово значи да ће у линеарној регресији постојати четири коефицијента, по један за сваку сортутіквице, који ће бити одговорни за „почетну цену“ (или боље речено „додатну цену“) за ту одређену сорту. +* Једноставна **нумеричка енкодација** ће направити табелу различитих врста, а затим заменити име врсте индексом у тој табели. Ово није најбоља идеја за линеарну регресију, јер линеарна регресија узима стварну нумеричку вредност индекса и додаје је у резултат, множећи неким коефицијентом. У нашем случају, однос између броја индекса и цене је очигледно нелинеаран, чак и ако бисмо осигурали да су индекси поређани на неки специфичан начин. +* **One-hot енкодација** ће заменити колону `Variety` са 4 различите колоне, по једна за сваку врсту. Свака колона ће садржати `1` ако је одговарајући ред дате врсте, а `0` у супротном. То значи да ће у линеарној регресији постојати четири коефицијента, по један за сваку врсту бундеве, одговорни за „почетну цену“ (или боље речено „додатну цену“) за ту конкретну врсту. -Код у наставку показује како можемо да извршимо one-hot кодирање сорте: +Код у наставку показује како можемо обавити one-hot енкодацију врсте: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -301,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Да бисмо тренирали линеарну регресију користећи one-hot кодирање сорте као улаз, само треба исправно иницијализовати податке `X` и `y`: +Да бисмо обучили линеарну регресију користећи one-hot енкодовану врсту као улаз, само треба правилно иницијализовати податке `X` и `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Остатак кода је исти као што смо користили горе за тренирање линеарне регресије. Ако пробате, видећете да је средња квадратична грешка отприлике иста, али добијамо знатно већи коефицијент детерминације (~77%). Да бисмо добили још прецизнија предвиђања, можемо узети у обзир више категоријалних особина, као и нумеричких, као што су `Month` или `DayOfYear`. Да бисмо добили једну велику матрицу особина, можемо користити `join`: +Остатак кода је исти као онај који смо користили горе за обуку Линеарне регресије. Ако покушате, видећете да је средња квадратна грешка отприлике иста, али добијамо много већи коефицијент детерминације (~77%). Да бисмо добили још прецизнија предвиђања, можемо узети у обзир више категоријалних карактеристика као и нумеричке карактеристике, попут `Month` или `DayOfYear`. Да бисмо добили један велики низ карактеристика, можемо користити `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Овде такође узимамо у обзир `City` и тип `Package`, што нам даје МСЕ 2.84 (10%), и коефицијент детерминације 0.94! +Овде такође узимамо у обзир `City` и тип `Package`, што нам даје RMSE 2.84 (10.5%) и коефицијент детерминације 0.94! ## Све заједно -Да бисмо направили најбољи модел, можемо користити комбиноване (one-hot кодиране категоријалне + нумеричке) податке из горњег примера заједно са полиномијалном регресијом. Ево комплетног кода ради ваше погодности: +Да бисмо направили најбољи модел, можемо користити комбиноване (one-hot енкодиране категоријалне + нумеричке) податке из горњег примера заједно са полиномијалном регресијом. Ево потпуног кода за вашу удобност: ```python -# подеси податке за тренинг +# подесите податке за обуку X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# направи подјелу на тренинг и тест +# направите подјелу на тренинг и тест X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# подеси и обучи цјевовод +# подесите и обучите стеам pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# предвиди резултате за тест податке +# предвидите резултате за тест податке pred = pipeline.predict(X_test) -# израчунај MSE и коефицијент детерминације -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# израчунати RMSE и коефицијент детерминације +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Ово би нам требало дати најбољи коефицијент детерминације од скоро 97%, и МСЕ=2.23 (~8% грешке предвиђања). +Ово би нам требало дати најбољи коефицијент детерминације од скоро 97% и RMSE = 2.23 (~8% грешке предвиђања). -| Модел | МСЕ | Детерминација | +| Модел | RMSE | Детерминација | |-------|-----|---------------| -| Линеарна `DayOfYear` | 2.77 (17.2%) | 0.07 | -| Полиномијална `DayOfYear` | 2.73 (17.0%) | 0.08 | -| Линеарна `Variety` | 5.24 (19.7%) | 0.77 | -| Линеарна све особине | 2.84 (10.5%) | 0.94 | -| Полиномијална све особине | 2.23 (8.25%) | 0.97 | +| Линеарни `DayOfYear` | 2.77 (17.2%) | 0.07 | +| Полиномијални `DayOfYear` | 2.73 (17.0%) | 0.08 | +| Линеарни `Variety` | 5.24 (19.7%) | 0.77 | +| Линеарни сви подаци | 2.84 (10.5%) | 0.94 | +| Полиномијални сви подаци | 2.23 (8.25%) | 0.97 | -🏆 Браво! Направили сте четири модела регресије у једном часу и побољшали квалитет модела на 97%. У завршном делу о регресији научићете о логистичкој регресији за категоризацију. +🏆 Браво! Направили сте четири регресиона модела у једном часу и побољшали квалитет модела на 97%. У завршном делу о регресији научићете о логистичкој регресији за одређивање категорија. --- -## 🚀 Изазов +## 🚀Изазов -Испробајте неколико различитих променљивих у овом notebook-у да видите како корелација одговара тачности модела. +Тестирајте неколико различитих променљивих у овом нотебоок-у да видите како корелација одговара тачности модела. -## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/) +## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/) -## Преглед и Самосталан рад +## Ревизија и самостални рад У овом часу смо научили о линеарној регресији. Постоје и други важни типови регресије. Прочитајте о Stepwise, Ridge, Lasso и Elasticnet техникама. Добар курс за учење више је [Stanford Statistical Learning курс](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Задатак -[Направи модел](assignment.md) +[Направите модел](assignment.md) --- -**Изјава о одрицању одговорности**: -Овај документ је преведен уз помоћ AI сервиса за превођење [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитетним извором. За критичне информације препоручује се професионални људски превод. Не сносимо одговорност за било каква неспоразуми или погрешна тумачења настала коришћењем овог превода. +**Одрицање од одговорности**: +Овај документ је преведен коришћењем AI сервиса за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да превод буде тачан, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Првобитни документ на његовом изворном језику треба сматрати ауторитетом. За важне информације се препоручује професионални људски превод. Нисмо одговорни за било какве неспоразуме или погрешне тумачења настала коришћењем овог превода. \ No newline at end of file diff --git a/translations/sr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/sr/2-Regression/3-Linear/solution/notebook.ipynb index 8ccddf4152..7c5a5651fa 100644 --- a/translations/sr/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/sr/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Линеарна и полиномијална регресија за одређивање цене бундева - Лекција 3\n", + "## Линеарна и полиномијална регресија за цену тикве - Лекција 3\n", "\n", - "Учитајте потребне библиотеке и скуп података. Претворите податке у датафрејм који садржи подскуп података:\n", + "Учитајте потребне библиотеке и скуп података. Конвертујте податке у dataframe који садржи подскуп података:\n", "\n", - "- Узмите само бундеве чија је цена дата по бушелу \n", - "- Претворите датум у месец \n", - "- Израчунајте цену као просек између највише и најниже цене \n", - "- Претворите цену тако да одражава цену по количини у бушелима \n" + "- Узмите само тикве које су цене по бурету\n", + "- Претворите датум у месец\n", + "- Израчунајте цену као просек високе и ниске цене\n", + "- Претворите цену да одговара цени по количини бурета\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Скатерплот нас подсећа да имамо податке само за месеце од августа до децембра. Вероватно нам је потребно више података како бисмо могли да извучемо закључке на линеаран начин.\n" + "Дијаграм расејања нас подсећа да имамо податке само од августа до децембра. Вероватно нам треба више података да бисмо могли донети закључке на линеаран начин.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Хајде да видимо да ли постоји корелација:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Изгледа да је корелација прилично мала, али постоји нека друга важнија веза - јер цене на графикону изнад изгледају као да имају неколико различитих кластера. Хајде да направимо графикон који ће приказати различите врсте бундева:\n" + "Изгледа да је корелација прилично мала, али постоји неки други, важнији однос - јер тачке цена на графикону изнад изгледају као да имају неколико издвојених кластера. Хајде да направимо графикон који ће показати различите сорте бундеве:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "За сада, концентришемо се само на једну врсту - **тип пите**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Линеарна регресија\n", "\n", - "Користићемо Scikit Learn за тренирање модела линеарне регресије:\n" + "Уз помоћ Scikit Learn ћемо обучити модел линеарне регресије:\n" ] }, { @@ -689,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Можемо користити обучени модел да предвидимо цену:\n" + "Можемо користити обучени модел за предвиђање цене:\n" ] }, { @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Полиномна регресија\n", + "### Полиномијска регресија\n", "\n", - "Понекад је однос између карактеристика и резултата природно нелинеаран. На пример, цене бундева могу бити високе током зиме (месеци=1,2), затим падати током лета (месеци=5-7), а потом поново расти. Линеарна регресија није у стању да тачно ухвати овај однос.\n", + "Понекад је веза између карактеристика и резултата у основи нелинеарна. На пример, цене бундеве могу бити високе зими (месеци=1,2), затим опасти током лета (месеци=5-7), а потом поново порасти. Линеарна регресија није у стању да прецизно пронађе ову везу.\n", "\n", - "У овом случају можемо размотрити додавање додатних карактеристика. Једноставан начин је коришћење полинома из улазних карактеристика, што би довело до **полиномне регресије**. У Scikit Learn-у, можемо аутоматски претходно израчунати полиномне карактеристике користећи пайплайне:\n" + "У овом случају, можемо размотрити додавање додатних карактеристика. Једноставан начин је коришћење полинома из улазних карактеристика, што би довело до **полиномијске регресије**. У Scikit Learn-у, можемо аутоматски претходно израчунати полиномијалне карактеристике користећи pipeline-ове: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Кодирање сорти\n", + "### Варијанте кодирања\n", "\n", - "У идеалном свету, желимо да будемо у могућности да предвидимо цене за различите сорте бундева користећи исти модел. Да бисмо узели у обзир сорту, прво је потребно да је претворимо у нумерички облик, или **кодирање**. Постоји неколико начина на које то можемо урадити:\n", + "У идеалном свету, желимо да можемо предвидети цене за различите сорте бућа користећи исти модел. Да бисмо узели у обзир сорту, прво је потребно претворити је у нумерички облик, односно **кодирати**. Постоји неколико начина на које то можемо урадити:\n", "\n", - "* Једноставно нумеричко кодирање које ће направити табелу различитих сорти, а затим заменити име сорте индексом у тој табели. Ово није најбоља идеја за линеарну регресију, јер линеарна регресија узима у обзир нумеричку вредност индекса, а нумеричка вредност вероватно неће нумерички корелирати са ценом.\n", - "* One-hot кодирање, које ће заменити колону `Variety` са 4 различите колоне, по једну за сваку сорту, које ће садржати 1 ако одговарајући ред припада датој сорти, а 0 у супротном.\n", + "* Једноставно нумеричко кодирање које ће направити табелу различитих сорти, а затим заменити име сорте индекосом у тој табели. Ово није најбоља идеја за линеарну регресију, јер линеарна регресија узима у обзир нумеричку вредност индекса, а нумеричка вредност вероватно неће корелирати нумерички са ценом.\n", + "* One-hot кодирање, које ће заменити колону `Variety` са 4 различите колоне, по једна за сваку сорту, која ће садржати 1 ако одговарајући ред припада тој сорти, и 0 у противном.\n", "\n", - "Код испод показује како можемо да применимо one-hot кодирање на сорту:\n" + "Код у наставку показује како можемо применити one-hot кодирање на сорту:\n" ] }, { @@ -942,7 +949,7 @@ "source": [ "### Линеарна регресија на сорти\n", "\n", - "Сада ћемо користити исти код као горе, али уместо `DayOfYear` користићемо нашу једнохот-енкодовану сорту као улаз:\n" + "Сада ћемо користити исти код као горе, али уместо `DayOfYear` користићемо нашу варанту сорте кодиране помоћу one-hot:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Можемо такође покушати да користимо друге функције на исти начин и комбинујемо их са нумеричким функцијама, као што су `Month` или `DayOfYear`:\n" + "Такође можемо покушати да користимо друге карактеристике на исти начин, и да их комбинујемо са нумеричким карактеристикама, као што су `Month` или `DayOfYear`:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Полиномна регресија\n", + "### Полиномијална регресија\n", "\n", - "Полиномна регресија може се користити и са категоријалним карактеристикама које су једнохот-кодиране. Код за тренирање полиномне регресије би у суштини био исти као што смо видели горе.\n" + "Полиномијална регресија се такође може користити са категоријским карактеристикама које су једно-вруће-кодиране. Код за тренирање полиномијалне регресије би у суштини био исти као што смо горе видели.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Одрицање од одговорности**: \nОвај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.\n" + "---\n\n\n**Одрицање од одговорности**: \nОвај документ је преведен коришћењем AI преводилачке услуге [Co-op Translator](https://github.com/Azure/co-op-translator). Док тежимо тачности, молимо имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Изворни документ на његовом оригиналном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразумевања или погрешна тумачења која произилазе из коришћења овог превода.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:10:36+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "sr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 5bb8cd660529b0561c5ffd0ea484cd12f7516966 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 18:56:51 +0000 Subject: [PATCH 04/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/da/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 100 +++--- .../da/2-Regression/3-Linear/README.md | 255 ++++++++------- .../3-Linear/solution/notebook.ipynb | 67 ++-- translations/fi/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 108 ++++--- .../fi/2-Regression/3-Linear/README.md | 305 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 65 ++-- translations/no/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 94 +++--- .../no/2-Regression/3-Linear/README.md | 251 +++++++------- .../3-Linear/solution/notebook.ipynb | 67 ++-- 12 files changed, 725 insertions(+), 629 deletions(-) diff --git a/translations/da/.co-op-translator.json b/translations/da/.co-op-translator.json index e95d618c0b..7518fd2bc9 100644 --- a/translations/da/.co-op-translator.json +++ b/translations/da/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "da" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T00:27:18+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:53:49+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "da" }, @@ -90,8 +90,8 @@ "language_code": "da" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:57:56+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:53:22+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "da" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "da" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:51:31+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "da" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T23:29:27+00:00", diff --git a/translations/da/1-Introduction/4-techniques-of-ML/README.md b/translations/da/1-Introduction/4-techniques-of-ML/README.md index 0753b97a5f..13a8459f87 100644 --- a/translations/da/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/da/1-Introduction/4-techniques-of-ML/README.md @@ -1,113 +1,113 @@ # Teknikker inden for maskinlæring -Processen med at opbygge, bruge og vedligeholde maskinlæringsmodeller og de data, de anvender, adskiller sig markant fra mange andre udviklingsarbejdsgange. I denne lektion vil vi afmystificere processen og skitsere de vigtigste teknikker, du skal kende. Du vil: +Processen med at bygge, bruge og vedligeholde maskinlæringsmodeller og de data, de bruger, er en meget anderledes proces end mange andre udviklingsarbejdsflows. I denne lektion vil vi afmystificere processen og skitsere de vigtigste teknikker, du skal kende. Du vil: -- Forstå de processer, der ligger til grund for maskinlæring på et overordnet niveau. +- Forstå processerne, der ligger til grund for maskinlæring på et overordnet niveau. - Udforske grundlæggende begreber som 'modeller', 'forudsigelser' og 'træningsdata'. -## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz før forelæsning](https://ff-quizzes.netlify.app/en/ml/) -[![ML for begyndere - Teknikker inden for maskinlæring](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for begyndere - Teknikker inden for maskinlæring") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") > 🎥 Klik på billedet ovenfor for en kort video, der gennemgår denne lektion. ## Introduktion -På et overordnet niveau består håndværket med at skabe maskinlæringsprocesser af en række trin: +På et højt niveau består håndværket ved oprettelse af maskinlæringsprocesser (ML) af en række trin: -1. **Definér spørgsmålet**. De fleste ML-processer starter med at stille et spørgsmål, der ikke kan besvares med et simpelt betinget program eller en regelbaseret motor. Disse spørgsmål drejer sig ofte om forudsigelser baseret på en samling data. -2. **Indsaml og forbered data**. For at kunne besvare dit spørgsmål har du brug for data. Kvaliteten og, nogle gange, mængden af dine data vil afgøre, hvor godt du kan besvare dit oprindelige spørgsmål. Visualisering af data er en vigtig del af denne fase. Denne fase inkluderer også at opdele dataene i en trænings- og testgruppe for at opbygge en model. -3. **Vælg en træningsmetode**. Afhængigt af dit spørgsmål og karakteren af dine data skal du vælge, hvordan du vil træne en model, så den bedst afspejler dine data og giver præcise forudsigelser. Dette er den del af din ML-proces, der kræver specifik ekspertise og ofte en betydelig mængde eksperimentering. -4. **Træn modellen**. Ved hjælp af dine træningsdata vil du bruge forskellige algoritmer til at træne en model til at genkende mønstre i dataene. Modellen kan anvende interne vægte, der kan justeres for at prioritere visse dele af dataene frem for andre for at opbygge en bedre model. -5. **Evaluer modellen**. Du bruger data, som modellen aldrig har set før (dine testdata) fra din indsamlede samling for at se, hvordan modellen klarer sig. -6. **Parameterjustering**. Baseret på modellens ydeevne kan du gentage processen med forskellige parametre eller variabler, der styrer adfærden af de algoritmer, der bruges til at træne modellen. -7. **Forudsig**. Brug nye input til at teste modellens nøjagtighed. +1. **Beslut dig for spørgsmålet**. De fleste ML-processer starter med at stille et spørgsmål, som ikke kan besvares af et simpelt betinget program eller en regelbaseret motor. Disse spørgsmål drejer sig ofte om forudsigelser baseret på en samling data. +2. **Indsaml og forbered data**. For at kunne besvare dit spørgsmål har du brug for data. Kvaliteten og nogle gange også mængden af dine data vil afgøre, hvor godt du kan besvare dit oprindelige spørgsmål. Visualisering af data er en vigtig del af denne fase. Denne fase inkluderer også opdeling af data i en trænings- og testgruppe til at bygge en model. +3. **Vælg en træningsmetode**. Afhængig af dit spørgsmål og karakteren af dine data skal du vælge, hvordan du vil træne en model for bedst at afspejle dine data og lave nøjagtige forudsigelser. Dette er den del af din ML-proces, der kræver specifik ekspertise og ofte en betydelig mængde eksperimenter. +4. **Træn modellen**. Med dine træningsdata bruger du forskellige algoritmer til at træne en model til at genkende mønstre i dataene. Modellen kan benytte interne vægte, som kan justeres for at favorisere visse dele af dataene frem for andre for at bygge en bedre model. +5. **Evaluér modellen**. Du bruger data, som modellen ikke har set før (dine testdata) fra dit samlede datasæt for at se, hvordan modellen præsterer. +6. **Parametertuning**. Baseret på modellens præstation kan du gentage processen ved at bruge forskellige parametre eller variable, som styrer algoritmernes adfærd, der træner modellen. +7. **Forudsig**. Brug nye input til at teste din modells nøjagtighed. -## Hvilket spørgsmål skal du stille? +## Hvilket spørgsmål man skal stille -Computere er særligt dygtige til at opdage skjulte mønstre i data. Denne evne er meget nyttig for forskere, der har spørgsmål om et givet område, som ikke let kan besvares ved at oprette en betingelsesbaseret regelmotor. Givet en aktuarmæssig opgave kan en dataforsker for eksempel konstruere håndlavede regler omkring dødeligheden for rygere vs. ikke-rygere. +Computere er særligt dygtige til at opdage skjulte mønstre i data. Denne egenskab er meget nyttig for forskere, som har spørgsmål om et givet domæne, som ikke let kan besvares ved at oprette en betingelsesbaseret regelsystem. Givet en aktuaropgave kan en dataforsker for eksempel konstruere håndlavede regler omkring dødeligheden for rygere kontra ikke-rygere. -Når mange andre variabler bringes ind i ligningen, kan en ML-model imidlertid vise sig at være mere effektiv til at forudsige fremtidige dødelighedsrater baseret på tidligere sundhedshistorik. Et mere muntert eksempel kunne være at lave vejrudsigter for april måned på et givet sted baseret på data, der inkluderer breddegrad, længdegrad, klimaforandringer, nærhed til havet, jetstrømmønstre og mere. +Når mange andre variable bringes ind i ligningen, kan en ML-model imidlertid vise sig mere effektiv til at forudsige fremtidige dødelighedsrater baseret på tidligere sygehistorik. Et mere positivt eksempel kan være at lave vejrudsigter for april måned på et givet sted baseret på data, der inkluderer breddegrad, længdegrad, klimaforandringer, nærhed til havet, jetstrømmenes mønstre og mere. -✅ Denne [præsentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) om vejrmodeller giver et historisk perspektiv på brugen af ML i vejranalyse. +✅ Dette [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) om vejrmæssige modeller giver et historisk perspektiv på brug af ML i vejr-analyse. -## Opgaver før opbygning +## Opgaver før modellering -Før du begynder at opbygge din model, er der flere opgaver, du skal udføre. For at teste dit spørgsmål og danne en hypotese baseret på modellens forudsigelser skal du identificere og konfigurere flere elementer. +Før du går i gang med at bygge din model, er der flere opgaver, du skal gennemføre. For at teste dit spørgsmål og danne en hypotese baseret på en modells forudsigelser, skal du identificere og konfigurere flere elementer. ### Data -For at kunne besvare dit spørgsmål med nogen form for sikkerhed har du brug for en god mængde data af den rette type. Der er to ting, du skal gøre på dette tidspunkt: +For at kunne besvare dit spørgsmål med en vis sikkerhed har du brug for en god mængde data af den rette type. Der er to ting, du skal gøre på dette tidspunkt: -- **Indsaml data**. Med tanke på den tidligere lektion om retfærdighed i dataanalyse skal du indsamle dine data med omhu. Vær opmærksom på kilderne til disse data, eventuelle iboende skævheder, de måtte have, og dokumentér deres oprindelse. -- **Forbered data**. Der er flere trin i dataforberedelsesprocessen. Du kan være nødt til at samle data og normalisere dem, hvis de kommer fra forskellige kilder. Du kan forbedre dataenes kvalitet og mængde gennem forskellige metoder, såsom at konvertere strenge til tal (som vi gør i [Clustering](../../5-Clustering/1-Visualize/README.md)). Du kan også generere nye data baseret på de oprindelige (som vi gør i [Classification](../../4-Classification/1-Introduction/README.md)). Du kan rense og redigere dataene (som vi gør før [Web App](../../3-Web-App/README.md)-lektionen). Endelig kan du også være nødt til at tilfældiggøre og blande dem, afhængigt af dine træningsteknikker. +- **Indsaml data**. Med tanke på den tidligere lektion om fairness i dataanalyse, skal du indsamle dine data med omhu. Vær opmærksom på kilderne til disse data, eventuelle iboende skævheder og dokumentér oprindelsen. +- **Forbered data**. Der er flere trin i dataforberedelsesprocessen. Du kan have behov for at samle data og normalisere dem, hvis de kommer fra forskellige kilder. Du kan forbedre datakvaliteten og -mængden gennem forskellige metoder som konvertering af tekststrenge til tal (som vi gør i [Clustering](../../5-Clustering/1-Visualize/README.md)). Du kan også generere nye data baseret på de originale (som vi gør i [Classification](../../4-Classification/1-Introduction/README.md)). Du kan rense og redigere dataene (som vi vil gøre før [Web App](../../3-Web-App/README.md)-lektionen). Endelig kan du også have behov for at tilfældiggøre og blande dataene, afhængigt af dine træningsteknikker. -✅ Efter at have indsamlet og behandlet dine data, tag et øjeblik til at se, om deres form vil tillade dig at adressere dit tilsigtede spørgsmål. Det kan være, at dataene ikke vil fungere godt i din givne opgave, som vi opdager i vores [Clustering](../../5-Clustering/1-Visualize/README.md)-lektioner! +✅ Efter at have indsamlet og behandlet dine data, tag et øjeblik til at se, om deres form vil gøre det muligt for dig at adressere dit tiltænkte spørgsmål. Det kan være, at dataene ikke klarer sig godt i din givne opgave, som vi opdager i vores [Clustering](../../5-Clustering/1-Visualize/README.md)-lektioner! ### Features og mål -En [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) er en målbar egenskab ved dine data. I mange datasæt udtrykkes det som en kolonneoverskrift som 'dato', 'størrelse' eller 'farve'. Din feature-variabel, normalt repræsenteret som `X` i kode, repræsenterer inputvariablen, der vil blive brugt til at træne modellen. +En [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) er en målbar egenskab ved dine data. I mange datasæt udtrykkes det som en kolonneoverskrift som 'dato', 'størrelse' eller 'farve'. Din feature-variabel, som oftest repræsenteres som `X` i kode, repræsenterer inputvariablen, der bruges til at træne en model. -Et mål er det, du forsøger at forudsige. Mål, normalt repræsenteret som `y` i kode, repræsenterer svaret på det spørgsmål, du forsøger at stille til dine data: i december, hvilken **farve** græskar vil være billigst? i San Francisco, hvilke kvarterer vil have de bedste ejendoms**priser**? Nogle gange omtales mål også som label-attribut. +Et mål er noget, du prøver at forudsige. Mål, som oftest repræsenteres som `y` i kode, repræsenterer svaret på det spørgsmål, du forsøger at stille til dine data: i december, hvilken **farve** græskar vil være billigst? i San Francisco, hvilke nabolag vil have den bedste ejendoms-**pris**? Nogle gange kaldes mål også for et label-attribut. ### Valg af din feature-variabel -🎓 **Feature Selection og Feature Extraction** Hvordan ved du, hvilken variabel du skal vælge, når du opbygger en model? Du vil sandsynligvis gennemgå en proces med feature selection eller feature extraction for at vælge de rigtige variabler til den mest præstationsdygtige model. De er dog ikke det samme: "Feature extraction skaber nye features fra funktioner af de oprindelige features, mens feature selection returnerer et undersæt af features." ([kilde](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Feature Selection og Feature Extraction** Hvordan ved du, hvilken variabel du skal vælge, når du bygger en model? Du går sandsynligvis igennem en proces med feature selection eller feature extraction for at vælge de rigtige variable til den mest præsterende model. Det er dog ikke det samme: "Feature extraction skaber nye features ud fra funktioner af de oprindelige features, mens feature selection returnerer et underudvalg af features." ([kilde](https://wikipedia.org/wiki/Feature_selection)) -### Visualiser dine data +### Visualisér dine data -En vigtig del af dataforskerens værktøjskasse er evnen til at visualisere data ved hjælp af flere fremragende biblioteker som Seaborn eller MatPlotLib. At repræsentere dine data visuelt kan give dig mulighed for at opdage skjulte korrelationer, som du kan udnytte. Dine visualiseringer kan også hjælpe dig med at opdage skævheder eller ubalancerede data (som vi opdager i [Classification](../../4-Classification/2-Classifiers-1/README.md)). +En vigtig del af dataforskerens værktøjskasse er evnen til at visualisere data ved hjælp af flere fremragende biblioteker som Seaborn eller MatPlotLib. At repræsentere dine data visuelt kan give dig mulighed for at opdage skjulte sammenhænge, som du kan udnytte. Dine visualiseringer kan også hjælpe dig med at opdage skævhed eller ubalancerede data (som vi opdager i [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Opdel dit datasæt +### Del dit datasæt -Før træning skal du opdele dit datasæt i to eller flere dele af ulige størrelse, der stadig repræsenterer dataene godt. +Inden træning skal du opdele dit datasæt i to eller flere dele af ulige størrelse, som stadig repræsenterer dataene godt. -- **Træning**. Denne del af datasættet bruges til at træne din model. Dette sæt udgør størstedelen af det oprindelige datasæt. -- **Test**. Et testdatasæt er en uafhængig gruppe af data, ofte hentet fra de oprindelige data, som du bruger til at bekræfte ydeevnen af den opbyggede model. -- **Validering**. Et valideringssæt er en mindre uafhængig gruppe af eksempler, som du bruger til at finjustere modellens hyperparametre eller arkitektur for at forbedre modellen. Afhængigt af størrelsen på dine data og det spørgsmål, du stiller, behøver du måske ikke at opbygge dette tredje sæt (som vi bemærker i [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Træning**. Denne del af datasættet bruges til at træne din model. Denne del udgør størstedelen af det oprindelige datasæt. +- **Test**. Et testdatasæt er en uafhængig gruppe af data, ofte udtaget fra det oprindelige datasæt, som du bruger til at bekræfte bygningens models præstation. +- **Validering**. Et valideringssæt er en mindre uafhængig gruppe af eksempler, som du bruger til at finjustere modellens hyperparametre eller arkitektur for at forbedre modellen. Afhængigt af størrelsen på dine data og spørgsmålet, du stiller, behøver du måske ikke bygge dette tredje sæt (som vi noterer i [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). -## Opbygning af en model +## Bygning af en model -Ved hjælp af dine træningsdata er dit mål at opbygge en model, eller en statistisk repræsentation af dine data, ved hjælp af forskellige algoritmer til at **træne** den. At træne en model udsætter den for data og giver den mulighed for at lave antagelser om opfattede mønstre, den opdager, validerer og accepterer eller afviser. +Ved hjælp af dine træningsdata er dit mål at bygge en model eller en statistisk repræsentation af dine data ved hjælp af forskellige algoritmer til at **træne** den. Træning af en model udsætter den for data og tillader den at lave antagelser om opfattede mønstre, den opdager, validerer og accepterer eller afviser. -### Vælg en træningsmetode +### Beslut dig for en træningsmetode -Afhængigt af dit spørgsmål og karakteren af dine data vil du vælge en metode til at træne dem. Ved at gennemgå [Scikit-learns dokumentation](https://scikit-learn.org/stable/user_guide.html) - som vi bruger i dette kursus - kan du udforske mange måder at træne en model på. Afhængigt af din erfaring kan du være nødt til at prøve flere forskellige metoder for at opbygge den bedste model. Du vil sandsynligvis gennemgå en proces, hvor dataforskere evaluerer modellens ydeevne ved at fodre den med usete data, kontrollere for nøjagtighed, skævheder og andre kvalitetsforringende problemer og vælge den mest passende træningsmetode til den aktuelle opgave. +Afhængigt af dit spørgsmål og karakteren af dine data vælger du en metode til at træne den. Hvis du går igennem [Scikit-learn's dokumentation](https://scikit-learn.org/stable/user_guide.html) - som vi bruger i dette kursus - kan du udforske mange måder at træne en model på. Afhængigt af din erfaring kan du være nødt til at prøve flere forskellige metoder for at bygge den bedste model. Du vil sandsynligvis gennemgå en proces, hvor dataforskere evaluerer en modells præstation ved at fodre den med uanset data, tjekke for nøjagtighed, bias og andre problemstillinger, der nedbryder kvalitet, og vælge den mest passende træningsmetode til den givne opgave. ### Træn en model -Med dine træningsdata er du klar til at 'fitte' dem for at skabe en model. Du vil bemærke, at i mange ML-biblioteker vil du finde koden 'model.fit' - det er på dette tidspunkt, du sender din feature-variabel som en række værdier (normalt 'X') og en målvariabel (normalt 'y'). +Bevæbnet med dine træningsdata er du klar til at 'fitte' den for at skabe en model. Du vil bemærke, at du i mange ML-biblioteker finder koden 'model.fit' - det er på dette tidspunkt, at du sender din feature-variabel som en værdiarray (normalt 'X') og en målvariabel (normalt 'y'). -### Evaluer modellen +### Evaluér modellen -Når træningsprocessen er afsluttet (det kan tage mange iterationer, eller 'epochs', at træne en stor model), vil du kunne evaluere modellens kvalitet ved at bruge testdata til at vurdere dens ydeevne. Disse data er et undersæt af de oprindelige data, som modellen ikke tidligere har analyseret. Du kan udskrive en tabel med metrics om modellens kvalitet. +Når træningsprocessen er færdig (det kan tage mange iterationer, eller 'epochs', at træne en stor model), vil du kunne evaluere modellens kvalitet ved at bruge testdata til at måle dens præstation. Disse data er en delmængde af de oprindelige data, som modellen ikke tidligere har analyseret. Du kan udskrive en tabel med metrikker om modellens kvalitet. 🎓 **Model fitting** -I maskinlæringskontekst refererer model fitting til modellens nøjagtighed i forhold til dens underliggende funktion, når den forsøger at analysere data, den ikke er bekendt med. +I forbindelse med maskinlæring refererer model fitting til nøjagtigheden af modellens underliggende funktion, mens den forsøger at analysere data, den ikke er bekendt med. -🎓 **Underfitting** og **overfitting** er almindelige problemer, der forringer modellens kvalitet, da modellen enten passer ikke godt nok eller for godt. Dette får modellen til at lave forudsigelser, der enten er for tæt på eller for løst forbundet med dens træningsdata. En overfit model forudsiger træningsdata for godt, fordi den har lært dataenes detaljer og støj for godt. En underfit model er ikke nøjagtig, da den hverken kan analysere sine træningsdata eller data, den endnu ikke har 'set', korrekt. +🎓 **Underfitting** og **overfitting** er almindelige problemer, der reducerer modellens kvalitet, fordi modellen enten passer ikke godt nok eller for godt. Det får modellen til at lave forudsigelser, som enten er for tæt forbundet med eller for løst forbundet med træningsdataene. En overfit model forudsiger træningsdata for godt, fordi den har lært detaljerne og støjen i dataene for godt. En underfit model er ikke præcis, da den hverken kan analysere sine træningsdata korrekt eller data, den ikke har 'set' endnu. -![overfitting model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/da/overfitting.1c132d92bfd93cb6.webp) > Infografik af [Jen Looper](https://twitter.com/jenlooper) -## Parameterjustering +## Parametertuning -Når din indledende træning er afsluttet, observer modellens kvalitet og overvej at forbedre den ved at justere dens 'hyperparametre'. Læs mere om processen [i dokumentationen](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Når din indledende træning er færdig, kan du se på modellens kvalitet og overveje at forbedre den ved at justere dens 'hyperparametre'. Læs mere om processen [i dokumentationen](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Forudsigelse -Dette er øjeblikket, hvor du kan bruge helt nye data til at teste modellens nøjagtighed. I en 'anvendt' ML-indstilling, hvor du opbygger webressourcer til at bruge modellen i produktion, kan denne proces involvere indsamling af brugerinput (et knaptryk, for eksempel) for at indstille en variabel og sende den til modellen for inferens eller evaluering. +Dette er øjeblikket, hvor du kan bruge helt nye data til at teste din modells nøjagtighed. I en 'anvendt' ML-sammenhæng, hvor du bygger webressourcer til at bruge modellen i produktion, kan denne proces involvere at indsamle brugerinput (for eksempel et tryk på en knap) for at sætte en variabel og sende den til modellen for inferens eller evaluering. -I disse lektioner vil du opdage, hvordan du bruger disse trin til at forberede, opbygge, teste, evaluere og forudsige - alle dataforskerens bevægelser og mere, mens du skrider frem i din rejse mod at blive en 'full stack' ML-ingeniør. +I disse lektioner vil du opdage, hvordan du bruger disse trin til at forberede, bygge, teste, evaluere og forudsige – alle gestusserne af en dataforsker og mere, efterhånden som du skrider frem i din rejse mod at blive en 'full stack' ML-ingeniør. --- ## 🚀Udfordring -Tegn et flowdiagram, der afspejler trinnene for en ML-praktiker. Hvor ser du dig selv lige nu i processen? Hvor forudser du, at du vil finde vanskeligheder? Hvad virker nemt for dig? +Tegn et flowdiagram, der afspejler trinnene for en ML-udøver. Hvor ser du dig selv lige nu i processen? Hvor forudser du, at du vil finde vanskeligheder? Hvad virker let for dig? -## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ml/) ## Gennemgang & Selvstudie @@ -119,5 +119,7 @@ Søg online efter interviews med dataforskere, der diskuterer deres daglige arbe --- + **Ansvarsfraskrivelse**: -Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse. \ No newline at end of file +Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse. + \ No newline at end of file diff --git a/translations/da/2-Regression/3-Linear/README.md b/translations/da/2-Regression/3-Linear/README.md index e57f4bde81..a1f6ea3934 100644 --- a/translations/da/2-Regression/3-Linear/README.md +++ b/translations/da/2-Regression/3-Linear/README.md @@ -1,97 +1,97 @@ -# Byg en regressionsmodel ved brug af Scikit-learn: regression på fire måder +# Byg en regressionsmodel ved hjælp af Scikit-learn: regression på fire måder -## Begynder Note +## Begynder-note -Lineær regression bruges, når vi vil forudsige en **numerisk værdi** (for eksempel huspris, temperatur eller salg). -Den fungerer ved at finde en lige linje, der bedst repræsenterer forholdet mellem inputfunktioner og output. +Lineær regression bruges, når vi ønsker at forudsige en **numerisk værdi** (for eksempel huspris, temperatur eller salg). +Det fungerer ved at finde en ret linje, der bedst repræsenterer forholdet mellem input-funktioner og output. I denne lektion fokuserer vi på at forstå konceptet, før vi udforsker mere avancerede regressionsteknikker. ![Linear vs polynomial regression infographic](../../../../translated_images/da/linear-polynomial.5523c7cb6576ccab.webp) > Infografik af [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [For-forelæsning quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Denne lektion findes også i R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Denne lektion findes også på R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Introduktion -Indtil nu har du undersøgt, hvad regression er med prøve data indsamlet fra græskarprisdatasetet, som vi vil bruge igennem denne lektion. Du har også visualiseret det ved hjælp af Matplotlib. +Indtil nu har du udforsket, hvad regression er med eksempeldata fra græskarforsyningsdatasættet, som vi vil bruge gennem hele lektionen. Du har også visualiseret det ved hjælp af Matplotlib. -Nu er du klar til at dykke dybere ned i regression for ML. Mens visualisering giver dig mulighed for at forstå data, kommer den virkelige styrke ved Maskinlæring fra _at træne modeller_. Modeller trænes på historiske data for automatisk at fange dataafhængigheder, og de giver dig mulighed for at forudsige resultater for nye data, som modellen ikke har set før. +Nu er du klar til at dykke dybere ned i regression for ML. Mens visualisering gør det muligt at forstå data, kommer den reelle kraft i Maskinlæring fra _at træne modeller_. Modeller trænes på historiske data for automatisk at fange datadkan afhængigheder, og de gør det muligt at forudsige resultater for nye data, som modellen ikke har set før. -I denne lektion vil du lære mere om to typer regression: _basis lineær regression_ og _polynomiel regression_, sammen med noget af den matematik, der ligger til grund for disse teknikker. Disse modeller vil gøre det muligt for os at forudsige græskarpriser afhængigt af forskellige inputdata. +I denne lektion vil du lære mere om to typer regression: _grundlæggende lineær regression_ og _polynomiel regression_, sammen med noget af den matematik, der ligger til grund for disse teknikker. Disse modeller vil tillade os at forudsige græskarpriser afhængigt af forskellige inputdata. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") > 🎥 Klik på billedet ovenfor for en kort videooversigt over lineær regression. -> Gennem hele dette pensum antager vi minimal kendskab til matematik og søger at gøre det tilgængeligt for studerende fra andre fagområder, så hold øje med noter, 🧮 opkald, diagrammer og andre læringsværktøjer for at hjælpe forståelsen. +> Gennem hele dette læseplan antager vi minimal matematisk viden og søger at gøre det tilgængeligt for studerende fra andre fagområder, så hold øje med noter, 🧮 fremhævelser, diagrammer og andre læringsværktøjer for at hjælpe med forståelsen. -### Forudsætning +### Forudsætninger -Du bør nu være fortrolig med strukturen af græskardataene, som vi undersøger. Du finder dem forudindlæst og renset i denne lektions _notebook.ipynb_-fil. I filen vises græskarprisen per bushel i en ny data frame. Sørg for, at du kan køre disse notebooks i kerner i Visual Studio Code. +Du bør nu være fortrolig med strukturen på græskardataene, som vi undersøger. Du kan finde dem forudindlæst og forudrenset i denne lektions _notebook.ipynb_-fil. I filen vises græskarprisen pr. bushel i en ny data frame. Sørg for, at du kan køre disse notebooks i kerner i Visual Studio Code. ### Forberedelse -Som en påmindelse, indlæser du disse data for at kunne stille spørgsmål til dem. +Som en påmindelse indlæser du disse data for at kunne stille spørgsmål til dem. -- Hvornår er det bedste tidspunkt at købe græskar? +- Hvornår er det bedste tidspunkt at købe græskar på? - Hvilken pris kan jeg forvente for en kasse miniaturegræskar? -- Skal jeg købe dem i halvbustkurve eller i 1 1/9 bushel kasser? +- Skal jeg købe dem i halvbussch kurve eller i 1 1/9 bushel-kasser? Lad os fortsætte med at grave i disse data. -I den forrige lektion oprettede du en Pandas data frame og fyldte den med en del af det oprindelige datasæt, standardiseret prisen pr. bushel. Ved at gøre det var du dog kun i stand til at samle omkring 400 datapunktoplysninger og kun for efterårsmånederne. +I den forrige lektion oprettede du en Pandas data frame og udfyldte den med en del af det oprindelige datasæt, hvor prisen blev standardiseret efter bushelen. Ved at gøre dette formåede du dog kun at indsamle omkring 400 datapunkter og kun for efterårsmånederne. -Tag et kig på dataene, som vi forudindlæste i denne lektions ledsagende notebook. Dataene er forindlæst, og et initialt spredningsdiagram er vist for månedsdata. Måske kan vi få lidt flere detaljer om dataenes natur ved at rense dem mere. +Se på de data, vi har forudindlæst i denne lektions ledsagende notebook. Dataene er forudindlæst, og et første scatterplot er tegnet for at vise månedernes data. Måske kan vi få lidt flere detaljer om datanaturen ved at rense det mere. ## En lineær regressionslinje -Som du lærte i Lektion 1, er målet med en lineær regressionsøvelse at kunne plotte en linje til at: +Som du lærte i Lektion 1, er målet med en lineær regressionsøvelse at kunne plotte en linje for at: -- **Vis variable relationer**. Vis forholdet mellem variable -- **Foretage forudsigelser**. Lav nøjagtige forudsigelser om, hvor et nyt datapunkt vil falde i forhold til den linje. +- **Vise variable forhold**. Vise forholdet mellem variable +- **Foretage forudsigelser**. Foretage præcise forudsigelser om, hvor et nyt datapunkt ville falde i forhold til linjen. -Det er typisk for **Mindste Kvadraters Regression** at tegne denne type linje. Udtrykket "Mindste Kvadraters" refererer til processen med at minimere den samlede fejl i vores model. For hvert datapunkt måler vi den lodrette afstand (kaldet residual) mellem det faktiske punkt og vores regressionslinje. +Det er typisk for **mindste kvadraters regression** at tegne denne type linje. Udtrykket "mindste kvadraters metode" henviser til processen med at minimere den samlede fejl i vores model. For hvert datapunkt måler vi den lodrette afstand (kaldet residual) mellem det faktiske punkt og vores regressionslinje. Vi kvadrerer disse afstande af to hovedårsager: -1. **Størrelse frem for retning:** Vi vil behandle en fejl på -5 på samme måde som en fejl på +5. Kvadrering gør alle værdier positive. +1. **Størrelse frem for retning:** Vi ønsker at behandle en fejl på -5 på samme måde som en fejl på +5. Kvadrering gør alle værdier positive. -2. **Straffe Udliggere:** Kvadrering giver større vægt til større fejl, hvilket tvinger linjen til at være tættere på punkter, der ligger langt væk. +2. **Straffe for outliers:** Kvadrering giver større vægt til større fejl og tvinger linjen til at holde sig tættere på punkter, der er langt væk. -Vi lægger så alle disse kvadrerede værdier sammen. Vores mål er at finde den specifikke linje, hvor dette endelige sum er mindst (den mindste mulige værdi)—deraf navnet "Mindste Kvadraters". +Derefter lægger vi alle disse kvadrerede værdier sammen. Vores mål er at finde den specifikke linje, hvor denne endelige sum er mindst (den mindste mulige værdi) — deraf navnet "mindste kvadraters metode". > **🧮 Vis mig matematikken** -> -> Denne linje, kaldet _line of best fit_, kan udtrykkes ved [et ligning](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> +> Denne linje, kaldet _den bedste fit-linje_, kan udtrykkes med [en ligning](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> `X` er den 'forklarende variabel'. `Y` er den 'afhængige variabel'. Linjens hældning er `b` og `a` er y-aksens skæringspunkt, hvilket refererer til værdien af `Y`, når `X = 0`. +> `X` er den 'forklarende variabel'. `Y` er den 'afhængige variabel'. Linjens hældning er `b` og `a` er skæringspunktet med y-aksen, hvilket henviser til værdien af `Y`, når `X = 0`. > ->![beregn hældningen](../../../../translated_images/da/slope.f3c9d5910ddbfcf9.webp) +>![calculate the slope](../../../../translated_images/da/slope.f3c9d5910ddbfcf9.webp) > > Først beregnes hældningen `b`. Infografik af [Jen Looper](https://twitter.com/jenlooper) > -> Med andre ord, og med henvisning til vores græskar data oprindelige spørgsmål: "forudsig prisen på et græskar per bushel pr. måned", ville `X` referere til prisen og `Y` ville referere til salgs måneden. +> Med andre ord, og med henvisning til det oprindelige spørgsmål om vores græskardata: "forudsig prisen på et græskar pr. bushel efter måned", ville `X` referere til prisen og `Y` ville referere til salgs-måneden. > ->![fuldfør ligningen](../../../../translated_images/da/calculation.a209813050a1ddb1.webp) +>![complete the equation](../../../../translated_images/da/calculation.a209813050a1ddb1.webp) > > Beregn værdien af Y. Hvis du betaler omkring $4, må det være april! Infografik af [Jen Looper](https://twitter.com/jenlooper) > -> Den matematik, der beregner linjen, skal demonstrere linjens hældning, som også afhænger af skæringspunktet, eller hvor `Y` befinder sig, når `X = 0`. +> Den matematik, der beregner linjen, skal demonstrere linjens hældning, som også afhænger af skæringspunktet, altså hvor `Y` ligger, når `X = 0`. > -> Du kan iagttage metoden til beregning af disse værdier på webstedet [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Besøg også [denne Mindste Kvadraters regnemaskine](https://www.mathsisfun.com/data/least-squares-calculator.html) for at se, hvordan talværdier påvirker linjen. +> Du kan se metoden til beregning af disse værdier på webstedet [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Besøg også [denne mindste kvadraters lommeregner](https://www.mathsisfun.com/data/least-squares-calculator.html) for at se, hvordan tallene påvirker linjen. ## Korrelation -Endnu et begreb, der skal forstås, er **korrelationskoefficienten** mellem givne X og Y variable. Ved at bruge et spredningsdiagram kan du hurtigt visualisere denne koefficient. En plot med datapunkter, der er spredt i en pæn linje, har høj korrelation, men en plot med datapunkter spredt tilfældigt mellem X og Y har lav korrelation. +Et sidste udtryk at forstå er **korrelationskoefficienten** mellem givne X- og Y-variable. Ved hjælp af et scatterplot kan du hurtigt visualisere denne koefficient. Et plot med datapunkter spredt i en pæn linje har høj korrelation, men et plot med datapunkter spredt overalt mellem X og Y har lav korrelation. -En god lineær regressionsmodel vil være en, der har en høj (tættere på 1 end 0) korrelationskoefficient ved brug af Mindste Kvadraters Regression med en regressionslinje. +En god lineær regressionsmodel vil være en, der har en høj (tættere på 1 end 0) korrelationskoefficient ved anvendelse af mindste kvadraters metode med en regressionslinje. -✅ Kør notebook'en, der ledsager denne lektion, og se på spredningsdiagrammet fra måned til pris. Ser data, der forbinder måned og pris for græskar salg, ud til at have høj eller lav korrelation ifølge din visuelle fortolkning af spredningsdiagrammet? Ændrer det sig, hvis du bruger en mere finmasket måling i stedet for `Month`, fx *dag i året* (dvs. antal dage siden årets start)? +✅ Kør notebook’en, der følger med denne lektion, og se på scatterplottet fra måned til pris. Ser dataene, der forbinder måned til pris for græskar salg, ud til at have høj eller lav korrelation ifølge din visuelle fortolkning af scatterplottet? Ændres det, hvis du bruger mere finmasket mål i stedet for `Month`, f.eks. *dag i året* (dvs. antal dage siden årets begyndelse)? -I koden nedenfor vil vi antage, at vi har renset dataene og opnået en data frame kaldet `new_pumpkins`, der ligner følgende: +I nedenstående kode antager vi, at vi har renset dataene og opnået en data frame kaldet `new_pumpkins`, som ligner følgende: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,25 +101,25 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Koden til at rense dataene findes i [`notebook.ipynb`](notebook.ipynb). Vi har foretaget de samme rensetrin som i den tidligere lektion og har beregnet kolonnen `DayOfYear` ved hjælp af følgende udtryk: +> Koden til at rense dataene findes i [`notebook.ipynb`](notebook.ipynb). Vi har udført de samme rensetrin som i den forrige lektion og har beregnet `DayOfYear`-kolonnen ved hjælp af følgende udtryk: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Nu hvor du har en forståelse af matematikken bag lineær regression, lad os oprette en regressionsmodel for at se, om vi kan forudsige, hvilken pakke af græskar der vil have de bedste græskarpriser. Nogen, der køber græskar til en feriegræskarmark, vil måske bruge disse oplysninger til at optimere deres køb af græskarpakker til marken. +Nu hvor du har en forståelse for matematikken bag lineær regression, lad os oprette en regressionsmodel for at se, om vi kan forudsige, hvilken pakke med græskar der vil have de bedste græskarpriser. En person, der køber græskar til en halloween-græskarfest, vil måske have disse oplysninger for at kunne optimere deres køb af græskarpakker til festen. -## Leder efter korrelation +## Søger efter korrelation [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") > 🎥 Klik på billedet ovenfor for en kort videooversigt over korrelation. -Fra den forrige lektion har du sandsynligvis set, at gennemsnitsprisen for forskellige måneder ser sådan ud: +Fra forrige lektion har du sandsynligvis set, at gennemsnitsprisen for forskellige måneder ser sådan ud: Average price by month -Dette antyder, at der bør være en vis korrelation, og vi kan prøve at træne en lineær regressionsmodel for at forudsige forholdet mellem `Month` og `Price`, eller mellem `DayOfYear` og `Price`. Her er spredningsdiagrammet, der viser det sidste forhold: +Dette antyder, at der burde være en form for korrelation, og vi kan prøve at træne en lineær regressionsmodel til at forudsige forholdet mellem `Month` og `Price` eller mellem `DayOfYear` og `Price`. Her er scatterplottet, der viser sidstnævnte forhold: Scatter plot of Price vs. Day of Year @@ -130,7 +130,7 @@ print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Det ser ud til, at korrelationen er ret lille, -0,15 for `Month` og -0,17 for `DayOfMonth`, men der kunne være en anden vigtig sammenhæng. Det ser ud til, at der er forskellige klynger af priser, der svarer til forskellige græskartyper. For at bekræfte denne hypotese, lad os plotte hver græskarkategori med en forskellig farve. Ved at sende en `ax` parameter til `scatter` plotfunktionen kan vi plotte alle punkter i det samme diagram: +Det ser ud til, at korrelationen er temmelig lille, -0.15 med `Month` og -0.17 med `DayOfYear`, men der kan være en anden vigtig sammenhæng. Det ser ud til, at der er forskellige klynger af priser, der svarer til forskellige slags græskar. For at bekræfte denne hypotese lader vi hvert græskar-kategori plotte med en forskellig farve. Ved at give en `ax` parameter til `scatter` plotting-funktionen kan vi plotte alle punkter på samme diagram: ```python ax=None @@ -142,7 +142,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): Scatter plot of Price vs. Day of Year -Vores undersøgelse antyder, at sort har mere effekt på den samlede pris end den faktiske salgsdato. Vi kan se dette med et søjlediagram: +Vores undersøgelse antyder, at sorten har mere indflydelse på den samlede pris end den faktiske salgsdato. Vi kan se dette med et søjlediagram: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') @@ -150,7 +150,7 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') Bar graph of price vs variety -Lad os for øjeblikket fokusere kun på en græskar sort, 'pie type', og se hvilken effekt datoen har på prisen: +Lad os i øjeblikket fokusere kun på en græskartype, 'pie type', og se, hvilken effekt datoen har på prisen: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,24 +158,24 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -Hvis vi nu beregner korrelationen mellem `Price` og `DayOfYear` ved hjælp af `corr` funktionen, får vi noget i retning af `-0.27` - hvilket betyder, at træning af en forudsigelsesmodel giver mening. +Hvis vi nu beregner korrelationen mellem `Price` og `DayOfYear` ved hjælp af `corr` funktionen, får vi noget i stil med `-0.27` - hvilket betyder, at det giver mening at træne en prædiktiv model. -> Før du træner en lineær regressionsmodel, er det vigtigt at sikre, at vores data er rene. Lineær regression fungerer ikke godt med manglende værdier, derfor giver det mening at fjerne alle tomme celler: +> Før vi træner en lineær regressionsmodel, er det vigtigt at sikre, at vores data er rene. Lineær regression fungerer ikke godt med manglende værdier, så det giver mening at fjerne alle tomme celler: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -En anden tilgang ville være at udfylde disse tomme værdier med gennemsnitsværdier fra den tilsvarende kolonne. +En anden tilgang kunne være at udfylde disse tomme værdier med gennemsnitsværdier fra den tilsvarende kolonne. -## Simple Lineær Regression +## Enkel lineær regression [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") > 🎥 Klik på billedet ovenfor for en kort videooversigt over lineær og polynomiel regression. -For at træne vores Lineær Regressionsmodel vil vi bruge **Scikit-learn** biblioteket. +For at træne vores lineære regressionsmodel bruger vi **Scikit-learn**-biblioteket. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Vi starter med at adskille inputværdierne (funktioner) og det forventede output (etiket) i separate numpy-arrays: +Vi starter med at adskille inputværdier (features) og den forventede output (label) i separate numpy-arrays: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Bemærk, at vi var nødt til at udføre `reshape` på inputdataene, for at Linear Regression-pakken kunne forstå det korrekt. Lineær Regression forventer et 2D-array som input, hvor hver række i arrayet svarer til en vektor af inputfunktioner. I vores tilfælde, hvor vi kun har én input - har vi brug for et array med form N×1, hvor N er datasætstørrelsen. +> Bemærk, at vi var nødt til at udføre `reshape` på inputdataene, for at Linear Regression-pakken kunne forstå dem korrekt. Lineær regression forventer et 2D-array som input, hvor hver række i arrayet svarer til en vektor af inputfunktioner. I vores tilfælde, da vi kun har én input, har vi brug for et array med formen N×1, hvor N er datamængdens størrelse. -Dernæst skal vi opdele dataene i trænings- og testdatasæt, så vi kan validere vores model efter træning: +Derefter skal vi opdele dataene i trænings- og testdatasæt, så vi kan validere vores model efter træning: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Endelig tager træningen af den faktiske Lineær Regression-model kun to kode linjer. Vi definerer `LinearRegression`-objektet og tilpasser det til vores data ved brug af `fit` metoden: +Endelig tager selve træningen af den lineære regressionsmodel kun to kodelinjer. Vi definerer `LinearRegression`-objektet og tilpasser det til vores data ved hjælp af `fit`-metoden: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression`-objektet efter at være blevet `fit`-tet indeholder alle regressionskoefficienterne, som kan tilgås via `.coef_`-egenskaben. I vores tilfælde er der kun én koefficient, som skulle være omkring `-0.017`. Det betyder, at priserne ser ud til at falde en smule med tiden, men ikke meget, cirka 2 cent per dag. Vi kan også tilgå skæringspunktet med Y-aksen via `lin_reg.intercept_` - det vil være omkring `21` i vores tilfælde, hvilket indikerer prisen i begyndelsen af året. +`LinearRegression`-objektet efter at have `fit`-tet indeholder alle koefficienterne for regressionen, som kan tilgås via `.coef_`-egenskaben. I vores tilfælde er der kun én koefficient, som burde være omkring `-0.017`. Det betyder, at priserne ser ud til at falde lidt med tiden, men ikke for meget, omkring 2 cent om dagen. Vi kan også tilgå skæringspunktet for regressionen med Y-aksen ved hjælp af `lin_reg.intercept_` - det vil være omkring `21` i vores tilfælde, hvilket indikerer prisen i begyndelsen af året. -For at se, hvor præcis vores model er, kan vi forudsige priser på et testdatasæt, og derefter måle, hvor tæt vores forudsigelser er på de forventede værdier. Dette kan gøres ved hjælp af root mean square error (RMSE) metrikken, som er kvadratroden af gennemsnittet af alle kvadrerede forskelle mellem forventet og forudsagt værdi. +For at se hvor præcis vores model er, kan vi forudsige priser på et testdatasæt, og derefter måle hvor tæt vores forudsigelser er på de forventede værdier. Dette kan gøres ved hjælp af root mean square error (RMSE) metrikken, som er kvadratrodstegnet af gennemsnittet af alle kvadrerede forskelle mellem forventet og forudsagt værdi. ```python pred = lin_reg.predict(X_test) @@ -215,38 +215,37 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -Vores fejl ser ud til at være omkring 2 point, hvilket er ca. 17%. Ikke særlig godt. En anden indikator for modellens kvalitet er **determinationskoefficienten**, som kan opnås sådan her: + +Vores fejl ser ud til at være omkring 2 point, hvilket svarer til ~17%. Ikke så godt. En anden indikator for modellens kvalitet er **determinationskoefficienten**, som kan opnås sådan her: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - -Hvis værdien er 0, betyder det, at modellen ikke tager inputdata i betragtning og fungerer som den *værste lineære forudsigelse*, som blot er middelværdien af resultatet. Værdien 1 betyder, at vi kan forudsige alle forventede outputs perfekt. I vores tilfælde er koefficienten omkring 0.06, hvilket er ret lavt. +Hvis værdien er 0, betyder det, at modellen ikke tager inputdata i betragtning, og fungerer som den *værste lineære forudsigelse*, som simpelthen er gennemsnitsværdien af resultatet. Værdien 1 betyder, at vi kan forudsige alle forventede output perfekt. I vores tilfælde er koefficienten omkring 0.06, hvilket er ret lavt. -Vi kan også plotte testdataene sammen med regressionslinjen for bedre at se, hvordan regressionen fungerer i vores tilfælde: +Vi kan også plotte testdata sammen med regressionslinjen for bedre at se, hvordan regressionen fungerer i vores tilfælde: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - -Linear regression -## Polynomial Regression +Lineær regression + +## Polynomiel Regression -En anden type lineær regression er polynomial regression. Mens der nogle gange er et lineært forhold mellem variabler – jo større græskar i volumen, jo højere pris – kan disse forhold nogle gange ikke plottes som et plan eller en ret linje. +En anden type af Lineær Regression er Polynomiel Regression. Mens der nogle gange er et lineært forhold mellem variable – jo større græskar i volumen, desto højere pris – kan disse forhold nogle gange ikke vises som et plan eller en lige linje. -✅ Her er [nogle flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data, som kunne bruge polynomial regression. +✅ Her er [flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data, der kunne bruge Polynomiel Regression. -Tag et kig på forholdet mellem Dato og Pris. Ser dette scatterplot ud som om, det nødvendigvis skal analyseres med en lige linje? Kan priserne ikke svinge? I dette tilfælde kan du prøve polynomial regression. +Tag et nyt kig på forholdet mellem Dato og Pris. Virker denne spredningsgraf som om den nødvendigvis skal analyseres med en lige linje? Kan priser ikke svinge? I dette tilfælde kan du prøve polynomiel regression. -✅ Polynomier er matematiske udtryk, som kan bestå af en eller flere variable og koefficienter. +✅ Polynomier er matematiske udtryk, der kan bestå af en eller flere variable og koefficienter. -Polynomial regression laver en buet linje for bedre at passe til ikke-lineære data. I vores tilfælde, hvis vi inkluderer en kvadreret `DayOfYear`-variabel i inputdata, burde vi kunne tilpasse vores data med en parabolsk kurve, som vil have et minimum på et bestemt tidspunkt i løbet af året. +Polynomiel regression skaber en buet linje for bedre at passe ikke-lineære data. I vores tilfælde, hvis vi inkluderer en kvadreret `DayOfYear`-variabel i inputdataene, burde vi kunne tilpasse vores data med en parabolsk kurve, som vil have et minimum på et bestemt tidspunkt i løbet af året. -Scikit-learn inkluderer et nyttigt [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) til at kombinere forskellige trin i databehandling. En **pipeline** er en kæde af **estimators**. I vores tilfælde vil vi oprette en pipeline, der først tilføjer polynomial features til vores model og derefter træner regressionen: +Scikit-learn inkluderer en nyttig [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) til at kombinere forskellige trin i databehandling. En **pipeline** er en kæde af **estimators**. I vores tilfælde vil vi lave en pipeline, som først tilføjer polynomielle funktioner til vores model, og derefter træner regressionen: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,61 +255,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` - -At bruge `PolynomialFeatures(2)` betyder, at vi vil inkludere alle andengrads polynomier fra inputdata. I vores tilfælde betyder det blot `DayOfYear`2, men givet to inputvariable X og Y, vil dette tilføje X2, XY og Y2. Vi kan også bruge polynomier af højere grad, hvis vi ønsker det. -Pipelines kan bruges på samme måde som det originale `LinearRegression` objekt, dvs. vi kan `fit` pipelinen og derefter bruge `predict` til at få forudsigelserne. Her er grafen, der viser testdata og tilpasningskurven: +At bruge `PolynomialFeatures(2)` betyder, at vi vil inkludere alle andet-gradspolynomier fra inputdataene. I vores tilfælde betyder det bare `DayOfYear`2, men givet to inputvariabler X og Y, vil dette tilføje X2, XY og Y2. Vi kan også bruge højere gradspolynomier, hvis vi vil. -Polynomial regression +Pipelines kan bruges på samme måde som det oprindelige `LinearRegression`-objekt, dvs. vi kan `fit` pipelinen, og derefter bruge `predict` til at få forudsigelsesresultaterne: -Ved at bruge polynomial regression kan vi opnå en lidt lavere MSE og højere determinationskoefficient, men ikke signifikant. Vi skal tage andre features i betragtning! +```python +pred = pipeline.predict(X_test) -> Du kan se, at de laveste priser på græskar observeres omkring Halloween. Hvordan kan du forklare det? +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` -🎃 Tillykke, du har netop skabt en model, der kan hjælpe med at forudsige prisen på dessertgræskar. Du kan sandsynligvis gentage samme procedure for alle græskar-typer, men det ville være besværligt. Lad os nu lære, hvordan vi tager græskartype i betragtning i vores model! +For at plotte den glatte tilnærmelseskurve bruger vi `np.linspace` til at skabe et ensartet interval af inputværdier, i stedet for at plotte direkte på de uordnede testdata (som ville producere en zigzag-linje): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Her er grafen, der viser testdata samt tilnærmelseskurven: + +Polynomiel regression + +Ved at bruge Polynomiel Regression kan vi få lidt lavere RMSE og højere determinationskoefficient, men ikke dramatisk. Vi skal tage andre features i betragtning! + +> Du kan se, at de minimale græskarspriser observeres omkring Halloween. Hvordan kan du forklare det? + +🎃 Tillykke, du har netop lavet en model, som kan hjælpe med at forudsige prisen på tærtegræskar. Du kan sikkert gentage samme procedure for alle græskartyper, men det ville være træls. Lad os nu lære, hvordan man tager græskarvarieteter i betragtning i vores model! ## Kategoriske Features -I den ideelle verden ønsker vi at kunne forudsige priser for forskellige græskarsorter med samme model. Dog er kolonnen `Variety` lidt anderledes end kolonner som `Month`, fordi den indeholder ikke-numeriske værdier. Sådanne kolonner kaldes **kategoriske**. +I en ideel verden vil vi kunne forudsige priser for forskellige græskarvarianter ved hjælp af den samme model. `Variety`-kolonnen er dog lidt anderledes end kolonner som `Month`, fordi den indeholder ikke-numeriske værdier. Sådanne kolonner kaldes **kategoriske**. -[![ML for begyndere - Kategoriske Feature Forudsigelser med Lineær Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for begyndere - Kategoriske Feature Forudsigelser med Lineær Regression") +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Klik på billedet ovenfor for en kort videooversigt om brug af kategoriske features. +> 🎥 Klik på billedet ovenfor for en kort videooversigt over brug af kategoriske features. -Her kan du se, hvordan gennemsnitsprisen afhænger af sort: +Her kan du se, hvordan gennemsnitsprisen afhænger af varianten: -Average price by variety +Gennemsnitspris efter variant -For at tage sort i betragtning skal vi først konvertere den til numerisk form eller **kode** den. Der er flere måder at gøre det på: +For at tage variant i betragtning skal vi først konvertere den til numerisk form, eller **kode** den. Der er flere måder, vi kan gøre det på: -* Simpel **numerisk kodning** bygger en tabel over forskellige sorter og erstatter så sortens navn med et indeks i denne tabel. Dette er ikke den bedste idé for lineær regression, fordi lineær regression tager den faktiske numeriske værdi af indekset og lægger det til resultatet vægtet med en koefficient. I vores tilfælde er forholdet mellem indeksnummer og pris klart ikke-lineært, selv hvis vi sørger for, at indeksene er ordnet på en bestemt måde. -* **One-hot encoding** erstatter `Variety`-kolonnen med 4 forskellige kolonner, én for hver sort. Hver kolonne indeholder `1`, hvis den tilsvarende række er af den pågældende sort, og `0` ellers. Det betyder, at der vil være fire koefficienter i den lineære regression, én for hver græskartype, som er ansvarlige for "startpris" (eller rettere "ekstra pris") for netop den sort. +* Simpel **numerisk kodning** vil bygge en tabel over forskellige varianter og derefter erstatte variantnavnet med et indeks i den tabel. Dette er ikke den bedste idé for lineær regression, fordi lineær regression tager den faktiske numeriske værdi af indekset og lægger den til resultatet, multipliceret med en koefficient. I vores tilfælde er forholdet mellem indeksnummer og pris tydeligt ikke-lineært, selv hvis vi sørger for, at indekserne er ordnet på en bestemt måde. +* **One-hot encoding** vil erstatte `Variety`-kolonnen med 4 forskellige kolonner, en for hver variant. Hver kolonne vil indeholde `1`, hvis den tilsvarende række er af den givne variant, og `0` ellers. Det betyder, at der vil være fire koefficienter i lineær regression, en for hver græskarvariant, som er ansvarlig for "startpris" (eller rettere "ekstra pris") for netop den variant. -Koden nedenfor viser, hvordan vi kan one-hot kode en sort: +Koden nedenfor viser, hvordan vi kan one-hot kode en variant: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -For at træne lineær regression med one-hot kodet sort som input behøver vi bare at initialisere `X` og `y` korrekt: +For at træne lineær regression ved brug af one-hot kodet variant som input skal vi blot initialisere `X` og `y` data korrekt: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -Resten af koden er den samme som den, vi brugte ovenfor til at træne Lineær Regression. Hvis du prøver det, vil du se, at mean squared error er cirka den samme, men vi får en meget højere determinationskoefficient (~77%). For at få endnu mere præcise forudsigelser kan vi tage flere kategoriske features samt numeriske features som `Month` eller `DayOfYear` i betragtning. For at få en stor samlet feature-array kan vi bruge `join`: + +Resten af koden er den samme som vi brugte tidligere for at træne Lineær Regression. Hvis du prøver det, vil du se, at mean squared error er cirka den samme, men vi får en meget højere determinationskoefficient (~77%). For at få endnu mere præcise forudsigelser kan vi tage flere kategoriske features i betragtning samt numeriske features som `Month` eller `DayOfYear`. For at få en stor samlet feature-array kan vi bruge `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,15 +340,15 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` - -Her tager vi også højde for `City` og `Package` type, hvilket giver os MSE 2.84 (10%) og determinationskoefficient 0.94! -## Sæt det hele sammen +Her tager vi også `City` og `Package` type i betragtning, hvilket giver os RMSE 2.84 (10.5%) og determination 0.94! + +## Samlet model -For at lave den bedste model kan vi bruge kombinerede (one-hot kodede kategoriske + numeriske) data fra ovenstående eksempel sammen med polynomial regression. Her er det komplette kodeeksempel for din bekvemmelighed: +For at lave den bedste model kan vi bruge kombinerede (one-hot kodede kategoriske + numeriske) data fra ovenstående eksempel sammen med Polynomiel Regression. Her er den komplette kode for nemheds skyld: ```python -# opret træningsdata +# opsæt træningsdata X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -344,17 +365,17 @@ pipeline.fit(X_train,y_train) # forudsig resultater for testdata pred = pipeline.predict(X_test) -# beregn MSE og bestemmelse -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# beregn RMSE og bestemmelse +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` - -Dette burde give os den bedste determinationskoefficient på næsten 97%, og MSE=2.23 (~8% fejl i forudsigelse). -| Model | MSE | Determination | +Dette burde give os den bedste determinationskoefficient på næsten 97% og RMSE=2.23 (~8% fejl i forudsigelsen). + +| Model | RMSE | Determination | |-------|-----|---------------| | `DayOfYear` Lineær | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynomiel | 2.73 (17.0%) | 0.08 | @@ -362,26 +383,26 @@ Dette burde give os den bedste determinationskoefficient på næsten 97%, og MSE | Alle features Lineær | 2.84 (10.5%) | 0.94 | | Alle features Polynomiel | 2.23 (8.25%) | 0.97 | -🏆 Godt gået! Du har lavet fire regressionsmodeller i én lektion og forbedret modelkvaliteten til 97%. I den sidste del om regression vil du lære om logistisk regression til at bestemme kategorier. +🏆 Godt klaret! Du har skabt fire regressionsmodeller på én lektion og forbedret modellens kvalitet til 97%. I det afsluttende afsnit om Regression vil du lære om Logistisk Regression til kategoribestemmelse. --- ## 🚀Udfordring Test flere forskellige variable i denne notesbog for at se, hvordan korrelation svarer til modelnøjagtighed. -## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ml/) -## Review & Selvlæring +## Opsummering og Selvstudium -I denne lektion lærte vi om lineær regression. Der findes andre vigtige typer regression. Læs om Stepwise, Ridge, Lasso og Elasticnet teknikker. Et godt kursus at studere for at lære mere er [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +I denne lektion lærte vi om Lineær Regression. Der findes andre vigtige typer af Regression. Læs om Stepwise, Ridge, Lasso og Elasticnet teknikker. Et godt kursus at studere for at lære mere er [Stanford Statistical Learning kurset](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Opgave +## Opgave -[Byg en model](assignment.md) +[Byg en Model](assignment.md) --- -**Ansvarsfraskrivelse**: -Dette dokument er oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets modersmål bør betragtes som den autoritative kilde. For kritisk information anbefales en professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse. +**Ansvarsfraskrivelse**: +Dette dokument er oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi stræber efter nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets modersmål bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger som følge af brugen af denne oversættelse. \ No newline at end of file diff --git a/translations/da/2-Regression/3-Linear/solution/notebook.ipynb b/translations/da/2-Regression/3-Linear/solution/notebook.ipynb index 7cda636c21..1be0bbf92d 100644 --- a/translations/da/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/da/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineær og Polynomisk Regression for Græskarpriser - Lektion 3\n", + "## Lineær og polynomiel regression for græskarpriser - Lektion 3\n", "\n", - "Indlæs de nødvendige biblioteker og datasættet. Konverter dataene til en dataframe, der indeholder et udsnit af dataene:\n", + "Indlæs de nødvendige biblioteker og datasæt. Konverter dataene til en dataframe, der indeholder et delmængde af dataene:\n", "\n", - "- Vælg kun græskar, der er prissat pr. tønde\n", + "- Få kun græskar prissat efter bushels\n", "- Konverter datoen til en måned\n", - "- Beregn prisen som gennemsnittet af højeste og laveste priser\n", - "- Konverter prisen, så den afspejler prissætningen pr. tøndemængde\n" + "- Beregn prisen som et gennemsnit af høj og lav pris\n", + "- Konverter prisen, så den afspejler prissætningen efter bushel-mængde\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Et spredningsdiagram minder os om, at vi kun har månedsdata fra august til december. Vi har sandsynligvis brug for flere data for at kunne drage konklusioner på en lineær måde.\n" + "Et scatterplot minder os om, at vi kun har månedsdata fra august til december. Vi har sandsynligvis brug for mere data for at kunne drage konklusioner på en lineær måde.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Lad os se, om der er sammenhæng:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Det ser ud til, at korrelationen er ret lille, men der er en anden vigtigere sammenhæng - fordi prisniveauerne i plottet ovenfor ser ud til at have flere tydelige klynger. Lad os lave et plot, der viser forskellige græskarsorter:\n" + "Det ser ud til, at korrelationen er ret lille, men der er en anden, mere vigtig sammenhæng - fordi prisniveauerne i ovenstående plot synes at have flere forskellige klynger. Lad os lave et plot, der viser forskellige græskarvarianter:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "For nu, lad os kun koncentrere os om en type - **tærte type**.\n" + ] }, { "cell_type": "code", @@ -582,7 +586,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineær regression\n", + "### Lineær Regression\n", "\n", "Vi vil bruge Scikit Learn til at træne en lineær regressionsmodel:\n" ] @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hældningen af linjen kan bestemmes ud fra lineære regressionskoefficienter:\n" + "Hældningen af linjen kan bestemmes ud fra koefficienterne i den lineære regression:\n" ] }, { @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polynomiel Regression\n", + "### Polynomiel regression\n", "\n", - "Nogle gange er forholdet mellem funktioner og resultater iboende ikke-lineært. For eksempel kan græskarpriser være høje om vinteren (måneder=1,2), derefter falde om sommeren (måneder=5-7) og derefter stige igen. Lineær regression er ikke i stand til at fange dette forhold præcist.\n", + "Nogle gange er forholdet mellem features og resultaterne iboende ikke-lineært. For eksempel kan prisen på græskar være høj om vinteren (måneder=1,2), derefter falde hen over sommeren (måneder=5-7) og så stige igen. Lineær regression kan ikke finde dette forhold præcist.\n", "\n", - "I dette tilfælde kan vi overveje at tilføje ekstra funktioner. En simpel måde er at bruge polynomier fra inputfunktionerne, hvilket vil resultere i **polynomiel regression**. I Scikit Learn kan vi automatisk forudberegne polynomielle funktioner ved hjælp af pipelines:\n" + "I dette tilfælde kan vi overveje at tilføje ekstra features. En simpel måde er at bruge polynomier fra input features, hvilket vil resultere i **polynomiel regression**. I Scikit Learn kan vi automatisk forhåndsberegne polynomielle features ved hjælp af pipelines:\n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kodning af sorter\n", + "### Encoding varianter\n", "\n", - "I en ideel verden ønsker vi at kunne forudsige priser for forskellige græskarsorter ved hjælp af den samme model. For at tage sorten i betragtning skal vi først konvertere den til numerisk form, eller **kode**. Der er flere måder, vi kan gøre det på:\n", + "I den ideelle verden vil vi kunne forudsige priser for forskellige græskarvarianter ved hjælp af den samme model. For at tage højde for variant skal vi først konvertere den til numerisk form, eller **encode**. Der er flere måder, vi kan gøre det på:\n", "\n", - "* Simpel numerisk kodning, der opretter en tabel over forskellige sorter og derefter erstatter sortsnavnet med et indeks i den tabel. Dette er ikke den bedste idé til lineær regression, fordi lineær regression tager den numeriske værdi af indekset i betragtning, og den numeriske værdi sandsynligvis ikke korrelerer numerisk med prisen.\n", - "* One-hot kodning, som erstatter `Variety`-kolonnen med 4 forskellige kolonner, én for hver sort, der indeholder 1, hvis den tilsvarende række er af den givne sort, og 0 ellers.\n", + "* Simple numeriske kodninger, som opbygger en tabel over forskellige varianter, og derefter erstatter variantnavnet med en indeks i denne tabel. Dette er ikke den bedste idé for lineær regression, fordi lineær regression tager den numeriske værdi af indekset i betragtning, og denne numeriske værdi korrelerer sandsynligvis ikke numerisk med prisen.\n", + "* One-hot encoding, som erstatter `Variety`-kolonnen med 4 forskellige kolonner, en for hver variant, der indeholder 1, hvis den tilsvarende række er af den givne variant, og 0 ellers.\n", "\n", - "Koden nedenfor viser, hvordan vi kan one-hot kode en sort:\n" + "Koden nedenfor viser, hvordan vi kan one-hot encode en variant:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineær regression på sort\n", + "### Lineær regression på sorten\n", "\n", - "Vi vil nu bruge den samme kode som ovenfor, men i stedet for `DayOfYear` vil vi bruge vores one-hot-encoded sort som input:\n" + "Vi vil nu bruge den samme kode som ovenfor, men i stedet for `DayOfYear` vil vi bruge vores one-hot-encodede sort som input:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polynomiel Regression\n", + "### Polynomiel regression\n", "\n", - "Polynomiel regression kan også bruges med kategoriske funktioner, der er one-hot-enkodede. Koden til at træne polynomiel regression vil grundlæggende være den samme, som vi har set ovenfor.\n" + "Polynomiel regression kan også bruges med kategoriske funktioner, der er one-hot-enkodede. Koden til at træne polynomiel regression ville i det væsentlige være den samme, som vi har set ovenfor.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Ansvarsfraskrivelse**: \nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.\n" + "---\n\n\n**Ansvarsfraskrivelse**: \nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritiske oplysninger anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:19:26+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "da" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/fi/.co-op-translator.json b/translations/fi/.co-op-translator.json index dd7336e7f6..50d2559846 100644 --- a/translations/fi/.co-op-translator.json +++ b/translations/fi/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "fi" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T00:28:39+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:56:41+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "fi" }, @@ -90,8 +90,8 @@ "language_code": "fi" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:09:14+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:56:14+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "fi" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "fi" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:52:30+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "fi" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T23:33:10+00:00", diff --git a/translations/fi/1-Introduction/4-techniques-of-ML/README.md b/translations/fi/1-Introduction/4-techniques-of-ML/README.md index 7ac9b61f13..ba3328233b 100644 --- a/translations/fi/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/fi/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ -# Koneoppimisen tekniikat +# Koneoppimisen menetelmät -Koneoppimismallien ja niiden käyttämän datan rakentaminen, käyttäminen ja ylläpito eroaa merkittävästi monista muista kehitysprosesseista. Tässä oppitunnissa selvitämme prosessin ja hahmotamme tärkeimmät tekniikat, jotka sinun tulee hallita. Opit: +Koneoppimismallien rakentaminen, käyttäminen ja ylläpito sekä niiden käyttämän datan hallinta ovat hyvin erilaisia prosesseja moniin muihin kehitystyön työnkulkuihin verrattuna. Tässä oppitunnissa avaamme tätä prosessia ja esittelemme tärkeimmät tekniikat, jotka sinun tarvitsee tietää. Sinä: -- Ymmärtämään koneoppimisen taustalla olevat prosessit yleisellä tasolla. -- Tutustumaan peruskäsitteisiin, kuten "mallit", "ennusteet" ja "opetusdata". +- Ymmärrät koneoppimisen prosessien perusteet yleisellä tasolla. +- Tutustut peruskäsitteisiin, kuten 'mallit', 'ennusteet' ja 'koulutusdata'. -## [Esiluennon kysely](https://ff-quizzes.netlify.app/en/ml/) +## [Ennakkotehtäväquiz](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Klikkaa yllä olevaa kuvaa lyhyen videon katsomiseksi, jossa käydään läpi tämän oppitunnin sisältöä. +> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videon, joka käy tämän oppitunnin läpi. ## Johdanto -Koneoppimisen (ML) prosessien luominen koostuu useista vaiheista: +Yleisellä tasolla koneoppimisprosessin rakentaminen koostuu useista vaiheista: -1. **Määrittele kysymys**. Useimmat ML-prosessit alkavat kysymyksestä, johon ei voida vastata yksinkertaisella ehdollisella ohjelmalla tai sääntöpohjaisella moottorilla. Nämä kysymykset liittyvät usein ennusteisiin, jotka perustuvat datakokoelmaan. -2. **Kerää ja valmistele data**. Kysymykseen vastaaminen vaatii dataa. Datan laatu ja joskus myös määrä määrittävät, kuinka hyvin voit vastata alkuperäiseen kysymykseesi. Datan visualisointi on tärkeä osa tätä vaihetta. Tämä vaihe sisältää myös datan jakamisen opetus- ja testiryhmiin mallin rakentamista varten. -3. **Valitse opetusmenetelmä**. Kysymyksesi ja datasi luonteen perusteella sinun tulee valita, miten haluat opettaa mallia, jotta se parhaiten heijastaisi dataasi ja tekisi tarkkoja ennusteita. Tämä ML-prosessin osa vaatii erityistä asiantuntemusta ja usein huomattavan määrän kokeilua. -4. **Opeta malli**. Käyttämällä opetusdataa käytät erilaisia algoritmeja opettaaksesi mallin tunnistamaan datan kuvioita. Malli voi hyödyntää sisäisiä painotuksia, joita voidaan säätää korostamaan tiettyjä datan osia paremman mallin rakentamiseksi. -5. **Arvioi malli**. Käytä aiemmin näkemätöntä dataa (testidatasi) arvioidaksesi, kuinka hyvin malli toimii. -6. **Parametrien säätö**. Mallin suorituskyvyn perusteella voit tehdä prosessin uudelleen käyttämällä erilaisia parametreja tai muuttujia, jotka ohjaavat mallin opetusalgoritmien toimintaa. +1. **Päättää kysymys**. Useimmat ML-prosessit alkavat kysymyksellä, johon ei voida vastata yksinkertaisella ehtolausepohjaisella ohjelmalla tai sääntöpohjaisella moottorilla. Nämä kysymykset liittyvät usein ennusteisiin, jotka perustuvat tietoaineistoon. +2. **Kerää ja valmistele data**. Vastataksesi kysymykseen tarvitset dataa. Datan laatu ja joskus myös määrä määrää, kuinka hyvin pystyt vastaamaan alkuperäiseen kysymykseesi. Datan visualisointi on tärkeä osa tätä vaihetta. Tähän vaiheeseen kuuluu myös datan jakaminen koulutus- ja testiryhmiin mallin rakentamista varten. +3. **Valitse koulutusmenetelmä**. Kysymyksesi ja datasi luonteen mukaan sinun täytyy valita, miten koulutat mallin parhaiten heijastamaan dataasi ja tekemään tarkkoja ennusteita. Tämä osa ML-prosessia vaatii erityisosaamista ja usein runsaasti kokeiluja. +4. **Kouluta malli**. Käyttämällä koulutusdataa sovellat erilaisia algoritmeja mallin opettamiseen, jotta malli oppii tunnistamaan datan kaavat. Malli voi hyödyntää sisäisiä painoja, joita säädetään, jotta tietyt datan osat saavat suuremman painoarvon, mikä auttaa rakentamaan parempaa mallia. +5. **Arvioi malli**. Käytät koskaan aiemmin näkemätöntä dataa (testidataa) arvioidaksesi mallisi suorituskykyä. +6. **Parametrien viritys**. Mallin suorituskyvyn perusteella voit toistaa prosessin erilaisilla parametreilla eli muuttujilla, jotka ohjaavat käytettyjen algoritmien toimintaa mallin kouluttamisessa. 7. **Ennusta**. Käytä uusia syötteitä testataksesi mallisi tarkkuutta. -## Mitä kysymystä kysyä +## Mitä kysymystä esittää -Tietokoneet ovat erityisen taitavia löytämään piilotettuja kuvioita datasta. Tämä ominaisuus on erittäin hyödyllinen tutkijoille, joilla on kysymyksiä tietystä aihealueesta, joihin ei voida helposti vastata luomalla ehdollisuuspohjainen sääntömoottori. Esimerkiksi vakuutusmatemaattisessa tehtävässä data-analyytikko voisi rakentaa käsintehtyjä sääntöjä tupakoitsijoiden ja ei-tupakoitsijoiden kuolleisuudesta. +Tietokoneet osaavat erityisen hyvin löytää piilotettuja kaavoja datasta. Tämä on erittäin hyödyllistä tutkijoille, joilla on tiettyyn aihealueeseen liittyviä kysymyksiä, joihin ei voida helposti vastata ehdollisesti toimivan sääntöpohjaisen moottorin avulla. Esimerkiksi vakuutustyössä data-analyytikko voisi rakentaa käsin laadittuja sääntöjä tupakoitsijoiden ja ei-tupakoitsijoiden kuolleisuudesta. -Kun mukaan tuodaan monia muita muuttujia, ML-malli voi kuitenkin osoittautua tehokkaammaksi ennustamaan tulevia kuolleisuuslukuja aiemman terveystiedon perusteella. Iloisempi esimerkki voisi olla sääennusteiden tekeminen huhtikuulle tietyssä paikassa datan perusteella, joka sisältää leveys- ja pituusasteet, ilmastonmuutoksen, etäisyyden merestä, suihkuvirtauksen kuviot ja paljon muuta. +Kun monia muuttujia tuodaan mukaan, koneoppimismalli voi osoittautua tehokkaammaksi ennustamaan tulevia kuolleisuuslukuja aiemman terveystiedon perusteella. Iloisempi esimerkki voisi olla säätiedotusten tekeminen huhtikuulle tietyssä paikassa käyttäen dataa, joka sisältää leveys- ja pituusasteet, ilmastonmuutoksen vaikutukset, meren läheisyyden, suihkuvirtausten kuviot ja muuta. -✅ Tämä [esitysmateriaali](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) säämalleista tarjoaa historiallisen näkökulman ML:n käytöstä sääanalyysissä. +✅ Tämä [esitys](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) säämallien käytöstä tarjoaa historiallisen näkökulman koneoppimisen hyödyntämiseen sääanalyysissä. -## Ennen mallin rakentamista +## Ennen mallin rakentamista tehtävät tehtävät -Ennen kuin aloitat mallin rakentamisen, sinun tulee suorittaa useita tehtäviä. Testataksesi kysymystäsi ja muodostaaksesi hypoteesin mallin ennusteiden perusteella, sinun tulee tunnistaa ja määrittää useita elementtejä. +Ennen mallin rakentamista on suoritettava useita tehtäviä. Kysymyksen testaamiseksi ja hypoteesin muodostamiseksi mallin ennusteiden perusteella sinun täytyy tunnistaa ja määrittää useita elementtejä. ### Data -Jotta voit vastata kysymykseesi minkäänlaisella varmuudella, tarvitset riittävän määrän oikeanlaista dataa. Tässä vaiheessa sinun tulee tehdä kaksi asiaa: +Vastataksesi kysymykseesi millään varmuudella tarvitset riittävästi oikeanlaista dataa. Tässä vaiheessa sinun tulee tehdä kaksi asiaa: -- **Kerää data**. Muista aiemman oppitunnin oikeudenmukaisuudesta data-analyysissä, kerää datasi huolellisesti. Ole tietoinen datan lähteistä, mahdollisista sisäisistä ennakkoluuloista ja dokumentoi sen alkuperä. -- **Valmistele data**. Datavalmisteluprosessissa on useita vaiheita. Saatat joutua yhdistämään dataa ja normalisoimaan sen, jos se tulee eri lähteistä. Voit parantaa datan laatua ja määrää eri menetelmillä, kuten muuntamalla merkkijonoja numeroiksi (kuten teemme [Klusteroinnissa](../../5-Clustering/1-Visualize/README.md)). Voit myös luoda uutta dataa alkuperäisen datan perusteella (kuten teemme [Luokittelussa](../../4-Classification/1-Introduction/README.md)). Voit puhdistaa ja muokata dataa (kuten teemme ennen [Web-sovellus](../../3-Web-App/README.md) -oppituntia). Lopuksi saatat joutua myös satunnaistamaan ja sekoittamaan dataa riippuen opetusmenetelmistäsi. +- **Kerää dataa**. Muista edellisessä oppitunnissa käsitelty oikeudenmukaisuus datan analyysissa, ja kerää data huolellisesti. Ole tietoinen datan lähteistä, mahdollisista vääristymistä ja dokumentoi sen alkuperä. +- **Valmistele data**. Datan valmistelussa on useita vaiheita. Saatat joutua yhdistämään dataa ja normalisoimaan sitä, jos se tulee eri lähteistä. Voit parantaa datan laatua ja määrää muun muassa muuntamalla merkkijonot numeroiksi (kuten teemme [Klusteroinnissa](../../5-Clustering/1-Visualize/README.md)). Voit myös generoida uutta dataa alkuperäisen pohjalta (kuten teemme [Luokittelussa](../../4-Classification/1-Introduction/README.md)). Voit siivota ja muokata dataa (kuten teemme ennen [Verkkosovellus](../../3-Web-App/README.md) -oppituntia). Lopuksi voit myös joutua satunnaistamaan ja sekoittamaan dataa koulutusmenetelmistä riippuen. -✅ Kun olet kerännyt ja käsitellyt datasi, ota hetki aikaa tarkistaaksesi, voiko sen muoto auttaa sinua vastaamaan aiottuun kysymykseesi. Saattaa olla, että data ei suoriudu hyvin annetussa tehtävässä, kuten huomaamme [Klusterointi](../../5-Clustering/1-Visualize/README.md) -oppitunneilla! +✅ Kun olet kerännyt ja käsitellyt datasi, tarkista, mahdollistaako sen muoto vastaamaan tarkoitettua kysymystä. Käytettävän datan sopimattomuus voi aiheuttaa heikkoa suorituskykyä, kuten huomaamme [Klusterointivaiheessa](../../5-Clustering/1-Visualize/README.md)! -### Ominaisuudet ja kohde +### Ominaisuudet ja tavoite -[Ominaisuus](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) on mitattavissa oleva datan ominaisuus. Monissa datasetissä se ilmaistaan sarakeotsikkona, kuten "päivämäärä", "koko" tai "väri". Ominaisuusmuuttuja, jota yleensä edustaa `X` koodissa, edustaa syötemuuttujaa, jota käytetään mallin opettamiseen. +[Ominaisuus](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) on mitattavissa oleva datan ominaisuus. Usein se esiintyy sarakeotsikkona, kuten 'päivämäärä', 'koko' tai 'väri'. Ominaisuusmuuttuja, yleensä koodissa merkitty `X`:llä, edustaa sisääntulomuuttujaa, jota käytetään mallin kouluttamiseen. -Kohde on asia, jota yrität ennustaa. Kohde, jota yleensä edustaa `y` koodissa, edustaa vastausta kysymykseen, jonka yrität esittää datallesi: joulukuussa, minkä **väriset** kurpitsat ovat halvimpia? San Franciscossa, mitkä naapurustot tarjoavat parhaat kiinteistöjen **hinnat**? Joskus kohdetta kutsutaan myös nimikeattribuutiksi. +Tavoite on se asia, jota yrität ennustaa. Tavoite, yleensä koodissa `y`:llä, on vastaus kysymykseen, jonka esität datallesi: joulukuussa, minkä **värisiä** kurpitsoja on halvimpia? San Franciscossa, mitkä kaupunginosat tarjoavat parhaat kiinteistöjen **hinnat**? Tavoitetta kutsutaan joskus myös nimilabeliksi (label attribute). ### Ominaisuusmuuttujan valinta -🎓 **Ominaisuusvalinta ja ominaisuuksien uuttaminen** Miten tiedät, minkä muuttujan valitset mallia rakentaessasi? Käyt läpi todennäköisesti prosessin, jossa valitset oikeat muuttujat parhaiten toimivaan malliin joko ominaisuusvalinnan tai ominaisuuksien uuttamisen avulla. Ne eivät kuitenkaan ole sama asia: "Ominaisuuksien uuttaminen luo uusia ominaisuuksia alkuperäisten ominaisuuksien funktioista, kun taas ominaisuusvalinta palauttaa alkuperäisten ominaisuuksien alijoukon." ([lähde](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Ominaisuuksien valinta ja ominaisuuksien erottelu** Miten tiedät, minkä muuttujan valitset mallia rakentaessasi? Todennäköisesti käyt läpi ominaisuuksien valinta- tai erotteluprosessin valitaksesi sopivimmat muuttujat parhaan mallin rakentamiseksi. Ne eivät kuitenkaan ole sama asia: "Ominaisuuksien erottelu luo uusia ominaisuuksia alkuperäisten ominaisuuksien funktioista, kun taas ominaisuuksien valinta palauttaa osajoukon ominaisuuksista." ([lähde](https://wikipedia.org/wiki/Feature_selection)) ### Visualisoi datasi -Data-analyytikon työkalupakin tärkeä osa on kyky visualisoida dataa useiden erinomaisen kirjastojen, kuten Seabornin tai MatPlotLibin, avulla. Datan visuaalinen esittäminen voi auttaa sinua paljastamaan piilotettuja korrelaatioita, joita voit hyödyntää. Visualisoinnit voivat myös auttaa sinua havaitsemaan ennakkoluuloja tai epätasapainoista dataa (kuten huomaamme [Luokittelu](../../4-Classification/2-Classifiers-1/README.md) -oppitunneilla). +Tärkeä osa data-analyytikon työkalupakkia on kyky visualisoida dataa erilaisten erinomaisen hyvien kirjastojen, kuten Seabornin tai MatPlotLibin, avulla. Datan visuaalinen esitys voi antaa mahdollisuuden paljastaa piileviä riippuvuuksia, joita voit hyödyntää. Visualisointi voi myös auttaa sinua havaitsemaan harhaa tai epätasapainoista dataa (kuten huomaamme [Luokittelussa](../../4-Classification/2-Classifiers-1/README.md)). -### Jaa datasetti +### Jaa datasi osiin -Ennen opettamista sinun tulee jakaa datasetti kahteen tai useampaan erikokoiseen osaan, jotka edustavat dataa hyvin. +Ennen mallin kouluttamista sinun on jaettava datasi kahteen tai useampaan epätasaiseen osaan, jotka kuitenkin edustavat dataa hyvin. -- **Opetus**. Tämä osa datasetistä sovitetaan malliin sen opettamiseksi. Tämä osuus muodostaa suurimman osan alkuperäisestä datasetistä. -- **Testaus**. Testidatasetti on itsenäinen dataryhmä, joka usein kerätään alkuperäisestä datasta ja jota käytetään rakennetun mallin suorituskyvyn vahvistamiseen. -- **Validointi**. Validointijoukko on pienempi itsenäinen esimerkkiryhmä, jota käytetään mallin hyperparametrien tai rakenteen säätämiseen mallin parantamiseksi. Datasi koosta ja kysymyksestäsi riippuen et välttämättä tarvitse tätä kolmatta joukkoa (kuten huomaamme [Aikasarjojen ennustaminen](../../7-TimeSeries/1-Introduction/README.md) -oppitunneilla). +- **Koulutus**. Tämä osa data-aineistosta sovitetaan malliin sen kouluttamiseksi. Tämä joukko muodostaa suurimman osan alkuperäisestä datasta. +- **Testaus**. Testidatasetti on itsenäinen dataryhmä, usein kerätty alkuperäisestä datasta, jota käytetään mallin suorituskyvyn varmistamiseen. +- **Validointi**. Validointijoukko on pienempi riippumaton esimerkkiryhmä, jota käytetään mallin hyperparametrien eli arkkitehtuurin hienosäätöön parantamaan mallin suorituskykyä. Datasi koosta ja kysymystesi luonteesta riippuen tätä kolmatta joukkoa ei välttämättä tarvita (kuten mainitsemme [Aikasarjojen ennusteissa](../../7-TimeSeries/1-Introduction/README.md)). ## Mallin rakentaminen -Käyttämällä opetusdataasi tavoitteesi on rakentaa malli, eli tilastollinen esitys datastasi, käyttämällä erilaisia algoritmeja sen **opettamiseksi**. Mallin opettaminen altistaa sen datalle ja antaa sen tehdä oletuksia havaitsemistaan kuvioista, validoida ja hyväksyä tai hylätä ne. +Käyttäen koulutusdataa tavoitteesi on rakentaa malli tai tilastollinen esitys datastasi eri algoritmeja hyödyntäen mallin **kouluttamiseksi**. Mallin kouluttaminen altistaa sen datalle ja antaa sille mahdollisuuden tehdä oletuksia havaitsemistaan kuviosta, joita se validoi ja joko hyväksyy tai hylkää. -### Valitse opetusmenetelmä +### Valitse koulutusmenetelmä -Kysymyksesi ja datasi luonteen perusteella valitset menetelmän sen opettamiseksi. Käymällä läpi [Scikit-learnin dokumentaatiota](https://scikit-learn.org/stable/user_guide.html) - jota käytämme tässä kurssissa - voit tutkia monia tapoja opettaa mallia. Kokemuksesi perusteella saatat joutua kokeilemaan useita eri menetelmiä parhaan mallin rakentamiseksi. Todennäköisesti käyt läpi prosessin, jossa data-analyytikot arvioivat mallin suorituskykyä syöttämällä sille aiemmin näkemätöntä dataa, tarkistamalla tarkkuutta, ennakkoluuloja ja muita laatua heikentäviä ongelmia ja valitsemalla tehtävään sopivimman opetusmenetelmän. +Kysymyksesi ja datasi luonteen mukaan valitset koulutusmenetelmän. Käymällä läpi [Scikit-learnin dokumentaatiota](https://scikit-learn.org/stable/user_guide.html) — jota käytämme tässä kurssissa — voit tutkia monia tapoja kouluttaa mallia. Kokemuksestasi riippuen sinun täytyy ehkä kokeilla useita eri menetelmiä parhaan mallin rakentamiseksi. Todennäköisesti käyt läpi prosessin, jossa data-analyytikot arvioivat mallin suorituskykyä syöttämällä sinne näkemätöntä dataa, tarkistamalla tarkkuuden, harhan ja muut suorituskykyä heikentävät tekijät sekä valitsevat tehtävään sopivimman koulutusmenetelmän. -### Opeta malli +### Kouluta malli -Kun sinulla on opetusdata, olet valmis "sovittamaan" sen mallin luomiseksi. Huomaat, että monissa ML-kirjastoissa löytyy koodi "model.fit" - tässä vaiheessa syötät ominaisuusmuuttujasi taulukkomuodossa (yleensä "X") ja kohdemuuttujasi (yleensä "y"). +Koulutusdata allasi olet valmis 'sovittamaan' eli fittaamaan sen malliin. Useissa koneoppimiskirjastoissa näet koodin 'model.fit' — tässä vaiheessa syötät ominaisuusmuuttujan arvovektorina (yleensä 'X') ja tavoitemuuttujan (yleensä 'y'). ### Arvioi malli -Kun opetusprosessi on valmis (suuren mallin opettaminen voi vaatia useita iteraatioita tai "epookkeja"), voit arvioida mallin laatua käyttämällä testidataa sen suorituskyvyn mittaamiseen. Tämä data on osa alkuperäisestä datasta, jota malli ei ole aiemmin analysoinut. Voit tulostaa taulukon mallin laadun mittareista. +Kun koulutus on valmis (suuren mallin koulutus voi vaatia monta iterointia eli 'aikakautta'), voit arvioida mallin laatua käyttämällä testidataa sen suorituskyvyn mittaamiseen. Tämä data on alkuperäisen joukon osa, jota malli ei ole aiemmin analysoinut. Voit tulostaa taulukon mallin laadun mittareista. -🎓 **Mallin sovittaminen** +🎓 **Mallin sovitus** -Koneoppimisen kontekstissa mallin sovittaminen viittaa mallin taustalla olevan funktion tarkkuuteen, kun se yrittää analysoida dataa, jota se ei tunne. +Koneoppimisen yhteydessä mallin sovitus tarkoittaa mallin toiminnan tarkkuutta analysoida dataa, jota se ei ole aiemmin nähnyt. -🎓 **Alioppiminen** ja **ylioppiminen** ovat yleisiä ongelmia, jotka heikentävät mallin laatua, kun malli sovittuu joko liian huonosti tai liian hyvin. Tämä aiheuttaa sen, että malli tekee ennusteita joko liian tiukasti tai liian löyhästi suhteessa opetusdataansa. Ylioppinut malli ennustaa opetusdataa liian hyvin, koska se on oppinut datan yksityiskohdat ja kohinan liian hyvin. Alioppinut malli ei ole tarkka, koska se ei pysty analysoimaan tarkasti opetusdataansa eikä dataa, jota se ei ole vielä "nähnyt". +🎓 **Ali- ja ylisovitus** ovat yleisiä ongelmia, jotka heikentävät mallin laatua, kun malli sovitetaan joko liian löyhästi tai liian tarkasti. Tämä saa mallin tekemään ennusteita, jotka muistuttavat liikaa tai liian vähän koulutusdataa. Ylisovittanut malli ennustaa koulutusdataa liian tarkasti, koska se on oppinut datan yksityiskohdat ja kohinan liiankin hyvin. Alisovittanut malli ei ole tarkka, sillä se ei pysty analysoimaan oikein koulutusdataa eikä myöskään aiemmin näkemätöntä dataa. -![ylioppiminen malli](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/fi/overfitting.1c132d92bfd93cb6.webp) > Infografiikka: [Jen Looper](https://twitter.com/jenlooper) -## Parametrien säätö +## Parametrien viritys -Kun alkuperäinen opetus on valmis, tarkkaile mallin laatua ja harkitse sen parantamista säätämällä sen "hyperparametreja". Lue lisää prosessista [dokumentaatiosta](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Kun alkuperäinen koulutusprosessi on valmis, tarkkaile mallin laatua ja harkitse sen parantamista säätämällä 'hyperparametreja'. Lue lisää prosessista [dokumentaatiosta](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Ennustaminen +## Ennustus -Tämä on hetki, jolloin voit käyttää täysin uutta dataa testataksesi mallisi tarkkuutta. Sovelletussa ML-ympäristössä, jossa rakennat verkkosovelluksia mallin käyttöön tuotannossa, tämä prosessi voi sisältää käyttäjän syötteen keräämisen (esimerkiksi painikkeen painallus) muuttujan asettamiseksi ja sen lähettämiseksi mallille inferenssiä tai arviointia varten. +Tässä vaiheessa voit käyttää täysin uutta dataa testataksesi mallisi tarkkuutta. Käytännön koneoppimisen ympäristössä, jossa rakennat verkkosovelluksia mallin käyttämiseksi tuotannossa, tähän voi kuulua käyttäjän syötteen (esimerkiksi napin painallus) vastaanottaminen, sen muuttamiseen muuttujaksi ja mallin käyttämiseen päättelyyn eli arviointiin. -Näissä oppitunneissa opit käyttämään näitä vaiheita datan valmisteluun, mallin rakentamiseen, testaamiseen, arviointiin ja ennustamiseen - kaikki data-analyytikon eleet ja enemmän, kun etenet matkallasi kohti "full stack" ML-insinööriksi. +Näissä oppitunneissa opit käyttämään näitä vaiheita datan valmisteluun, mallin rakentamiseen, testaamiseen, arviointiin ja ennustamiseen — kaikki data-analyytikon keskeiset toimet, ja vielä enemmän, kun etenet kohti 'full stack' koneoppimisinsinöörin roolia. --- ## 🚀Haaste -Piirrä vuokaavio, joka kuvaa ML-asiantuntijan työvaiheet. Missä näet itsesi tällä hetkellä prosessissa? Missä ennustat kohtaavasi vaikeuksia? Mikä vaikuttaa sinulle helpolta? +Piirrä vuokaavio, jossa esität koneoppimisen toimijan vaiheet. Missä vaiheessa prosessia olet nyt? Missä ennakoit vaikeuksia? Mikä tuntuu sinusta helpolta? -## [Jälkiluennon kysely](https://ff-quizzes.netlify.app/en/ml/) +## [Loppukoe](https://ff-quizzes.netlify.app/en/ml/) -## Kertaus ja itseopiskelu +## Kertaus & Itsenäinen opiskelu -Etsi verkosta haastatteluja data-analyytikoista, jotka keskustelevat päivittäisestä työstään. Tässä on [yksi](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Etsi verkosta haastatteluja data-analyytikoista, jotka kertovat päivittäisestä työstään. Tässä on [yksi](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Tehtävä @@ -119,5 +119,7 @@ Etsi verkosta haastatteluja data-analyytikoista, jotka keskustelevat päivittäi --- + **Vastuuvapauslauseke**: -Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä. \ No newline at end of file +Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Pyrimme tarkkuuteen, mutta huomioithan, että automatisoidut käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäiskielellä tulisi pitää ensisijaisena lähteenä. Tärkeissä tiedoissa suositellaan ammattimaista ihmiskäännöstä. Emme ota vastuuta tämän käännöksen käytöstä aiheutuvista väärinkäsityksistä tai tulkinnoista. + \ No newline at end of file diff --git a/translations/fi/2-Regression/3-Linear/README.md b/translations/fi/2-Regression/3-Linear/README.md index 918d91ceb1..6d01bb6d79 100644 --- a/translations/fi/2-Regression/3-Linear/README.md +++ b/translations/fi/2-Regression/3-Linear/README.md @@ -1,137 +1,137 @@ -# Rakennetaan regressiomalli Scikit-learnillä: regressio neljällä tavalla +# Rakennetaan regressiomalli Scikit-learnillä: neljä regressiotapaa ## Aloittelijan huomautus -Lineaarista regressiota käytetään, kun haluamme ennustaa **numeraalista arvoa** (esimerkiksi talon hinta, lämpötila tai myynti). -Se toimii etsimällä suoran viivan, joka parhaiten kuvaa syöteominaisuuksien ja tuloksen välistä suhdetta. +Lineaarista regressiota käytetään, kun haluamme ennustaa **numeerista arvoa** (esimerkiksi talon hinta, lämpötila tai myynti). +Se toimii löytämällä suoran linjan, joka parhaiten kuvaa syöteominaisuuksien ja tuloksen välistä suhdetta. -Tässä oppitunnissa keskitymme käsitteen ymmärtämiseen ennen kuin tutustumme edistyneempiin regressiomenetelmiin. -![Linear vs polynomial regression infographic](../../../../translated_images/fi/linear-polynomial.5523c7cb6576ccab.webp) -> Infografiikka tekijältä [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Esiluento-testi](https://ff-quizzes.netlify.app/en/ml/) +Tässä oppitunnissa keskitymme käsitteen ymmärtämiseen ennen edistyneempien regressiotekniikoiden tutkimista. +![Lineaarinen vs polynominen regressio infografiikka](../../../../translated_images/fi/linear-polynomial.5523c7cb6576ccab.webp) +> Infografiikka: [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Esiluentokysely](https://ff-quizzes.netlify.app/en/ml/) -> ### [Tämä oppitunti saatavilla R:llä!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Johdanto +> ### [Tämä oppitunti on saatavilla myös R-kielellä!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Johdanto -Tähän mennessä olet tutustunut regressioon esimerkkidatan avulla, joka on kerätty kurpitsahintojen aineistosta, jota käytämme koko tämän oppitunnin ajan. Olet myös visualisoinut sen käyttäen Matplotlibia. +Tähän mennessä olet tutustunut siihen, mitä regressio tarkoittaa kurpitsahintojen otosaineiston avulla, jota käytämme läpi tämän oppitunnin. Olet myös visualisoinut sitä Matplotlibilla. -Nyt olet valmis sukeltamaan syvemmälle koneoppimisen regressioon. Vaikka visualisointi auttaa sinua hahmottamaan dataa, koneoppimisen todellinen voima tulee _mallien harjoittamisesta_. Mallit koulutetaan historiallisella datalla kaappaamaan automaattisesti datan riippuvuuksia, ja niiden avulla voit ennustaa tuloksia uudelle datalle, jota malli ei ole aiemmin nähnyt. +Nyt olet valmis sukeltamaan syvemmälle koneoppimisen regressioon. Vaikka visualisointi auttaa ymmärtämään dataa, koneoppimisen todellinen voima tulee _mallien kouluttamisesta_. Mallit koulutetaan historiallisella datalla automaattisesti kaappaamaan datariippuvuuksia, ja ne antavat sinun ennustaa tuloksia uudelle datalle, jota malli ei ole nähnyt aiemmin. -Tässä oppitunnissa opit lisää kahdesta regressiotyypistä: _perus lineaarisesta regressiosta_ ja _polynomiregressiosta_, sekä joistakin näiden tekniikoiden taustalla olevista matematiikoista. Näillä malleilla voimme ennustaa kurpitsahintoja eri lähtötietojen perusteella. +Tässä oppitunnissa opit lisää kahdesta regressiotyypistä: _peruslineaarisesta regressiosta_ ja _polynomiregressiosta_, sekä joitakin näiden tekniikoiden taustalla olevia matematiikkaan liittyviä asioita. Nämä mallit mahdollistavat kurpitsahintojen ennustamisen eri syötedatan perusteella. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Klikkaa yllä olevaa kuvaa katsomaan lyhyt videoyhteenveto lineaarisesta regressiosta. +> 🎥 Klikkaa yllä olevaa kuvaa katsellaksesi lyhyen videon lineaarisesta regressiosta. -> Koko tämän opetussuunnitelman aikana oletamme vähäisen matematiikan osaamisen ja pyrimme tekemään sisällöstä saavutettavaa muilta aloilta tuleville opiskelijoille, joten pidä silmällä huomautuksia, 🧮 merkintöjä, kaavioita ja muita oppimistyökaluja, jotka auttavat ymmärtämisessä. +> Koko tämän opetussuunnitelman ajan oletamme matemaattisen osaamisen olevan perustasoa, ja pyrimme tekemään aiheesta helposti lähestyttävän opiskelijoille eri aloilta, joten pidä silmällä huomautuksia, 🧮 laskelmakohtia, kaavioita ja muita oppimistyökaluja ymmärtämisen tueksi. -### Esivaatimukset +### Esitiedot -Sinun tulisi nyt olla tuttu kurpitsadatan rakenteen kanssa, jota tarkastelemme. Sen löydät valmiiksi ladattuna ja siistittynä tämän oppitunnin _notebook.ipynb_-tiedostosta. Tiedostossa kurpitsan hinta näytetään per hehtolitran (bushel) uutena dataframenä. Varmista, että voit ajaa näitä muistikirjoja Visual Studio Code -ympäristössä. +Sinun tulisi nyt olla perehtynyt tässä tarkasteltavan kurpitsadatan rakenteeseen. Se on valmiiksi ladattu ja esipuhdistettu tämän oppitunnin _notebook.ipynb_-tiedostossa. Tiedostossa kurpitsan hinta näytetään tynnyriltä uudessa aineistokehikossa. Varmista, että voit ajaa näitä muistikirjoja Visual Studio Codessa. -### Valmistelu +### Valmistelut -Muistutuksena, lataat tätä dataa, jotta voit esittää sille kysymyksiä. +Muistutuksena: lataat tämän datan voidaksesi esittää sille kysymyksiä. -- Milloin on paras aika ostaa kurpitsoja? -- Minkä hinnan voin odottaa pikkukurpitsalaatikosta? -- Kannattaako ostaa ne puolen hehtolitran koreissa vai 1 1/9 hehtolitran laatikossa? +- Milloin on paras aika ostaa kurpitsoja? +- Millaisen hinnan voin odottaa pienempien kurpitsojen myyntierästä? +- Kannattaako ne ostaa puolikkaan tynnyrin koreissa vai 1 1/9 tynnyrin laatikossa? Jatketaan tämän datan tutkimista. -Edellisessä oppitunnissa loit Pandas-dataframen ja täytit sen osalla alkuperäisestä aineistosta, vakioimalla hinnat hehtolitran mukaan. Tällä tavoin onnistuimme keräämään noin 400 datapistettä ja vain syksyn kuukausilta. +Edellisessä oppitunnissa loit Pandas-aineistokehyksen ja täytit sen osalla alkuperäistä aineistoa, jolla hinnat vakioitiin tynnyrin mukaan. Näin kuitenkin sait kerättyä vain noin 400 tietopistettä, ja vain syksyn kuukausilta. -Katso data, jonka olemme ladanneet valmiiksi tämän oppitunnin mukanaolevaan muistikirjaan. Data on esiladattu ja ensimmäinen hajontakaavio piirretty kuukausidatan näyttämiseksi. Ehkä voimme saada hieman tarkempaa tietoa datan luonteesta puhdistamalla sitä vielä lisää. +Katso läpi tämän oppitunnin mukana tulevan muistikirjan ladattu data. Data on ladattu esiin, ja pohjakuva hajontakaaviosta näyttää kuukausidatan. Ehkä voimme saada lisätietoa datan luonteesta puhdistamalla sitä lisää. -## Lineaarisen regression suora +## Lineaarinen regressioviiva -Kuten opit oppitunnissa 1, lineaarisen regression harjoituksen tavoite on pystyä piirtämään suora, joka: +Kuten opit Oppitunnissa 1, lineaarisen regressioharjoituksen tavoite on pystyä piirtämään viiva, jolla voi: -- **Näyttää muuttujien väliset suhteet:** Havainnollistaa muuttujien välisen yhteyden -- **Tekee ennusteita:** Tekee tarkkoja ennusteita siitä, mihin uusi datapiste sijoittuu verrattuna tähän viivaan. +- **Näyttää muuttujien väliset suhteet**. Esittää muuttujien suhde. +- **Tehdä ennusteita**. Tehdä tarkkoja ennusteita, mihin uusi tietopiste sijoittuu suhteessa tuohon viivaan. -On tavallista käyttää **vähimmän neliösumman regressiota** (Least-Squares Regression) tällaisten suorien piirtämiseen. Termi "vähimmän neliösumman" viittaa prosessiin, jossa minimoidaan mallimme kokonaisvirhe. Jokaiselle datapisteelle mittaamme pystysuoran etäisyyden (jota kutsutaan jäännökseksi) todellisen pisteen ja regressiosuoran välillä. +Yleensä **Vähimmän neliösumman regressiossa** piirretään juuri tällainen viiva. Termi "vähimmän neliösumma" tarkoittaa sitä, että pyritään minimoimaan mallin kokonaisvirhe. Jokaiselle datapisteelle mitataan pystysuora etäisyys (jota kutsutaan residuaaliksi) varsinaisen pisteen ja regressioviivan välillä. -Neliöimme nämä etäisyydet kahdesta pääsyystä: +Nämä etäisyydet korotetaan toiseen potenssiin kahdesta syystä: -1. **Suuruus, ei suunta:** Haluamme kohdata virheen -5 samalla tavalla kuin virheen +5. Neliöiminen muuttaa kaikki arvot positiivisiksi. +1. **Suuruus verrattuna suuntaan:** Haluamme käsitellä virheen -5 samankaltaisena kuin virheen +5. Neliöinti tekee kaikki arvot positiivisiksi. -2. **Poikkeamien rankaisu:** Neliöinti antaa suuremman painon suuremmille virheille, pakottaen viivan pysymään lähempänä kauempana olevia pisteitä. +2. **Poikkeamien rankaiseminen:** Neliöinti antaa suurempaa painoarvoa isommille virheille, pakottaen viivan pysymään lähempänä kaukana olevia pisteitä. -Lisäämme sitten kaikki nämä neliöt yhteen. Tavoitteemme on löytää juuri se viiva, jossa tämä loppusumma on mahdollisimman pieni – tästä nimi "vähimmän neliösumman" regressio. +Sitten lasketaan kaikkien näiden neliöityjen lukujen summa. Tavoitteena on löytää juuri sellainen viiva, jolla tämä summa on pienin mahdollinen – siitä termi "vähimmän neliösumman" johdettu nimi. -> **🧮 Näytä matematiikka** -> -> Tätä viivaa, jota kutsutaan _sopivaksi suoraksi_, voidaan ilmaista [kaavalla](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Näytä minulle matematiikka** +> +> Tämä viiva, jota kutsutaan _paras sovitusviiva_, voidaan ilmaista [kaavalla](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` on selittävä muuttuja. `Y` on selitettävä muuttuja. Viivan kulmakerroin on `b` ja `a` on y-leikkauspiste, joka tarkoittaa arvoa `Y`, kun `X = 0`. -> ->![laske kulmakerroin](../../../../translated_images/fi/slope.f3c9d5910ddbfcf9.webp) -> -> Laske ensin kulmakerroin `b`. Infografiikka tekijältä [Jen Looper](https://twitter.com/jenlooper) -> -> Toisin sanoen ja viitaten kurpitsadatan alkuperäiseen kysymykseen: "ennustetaan kurpitsan hinta per hehtolitran myyntikuukauden mukaan", `X` viittaa aikaan (kuukauteen) ja `Y` hintaan. -> ->![täydennä kaava](../../../../translated_images/fi/calculation.a209813050a1ddb1.webp) -> -> Laske Y:n arvo. Jos maksat noin 4 dollaria, sen täytyy olla huhtikuu! Infografiikka tekijältä [Jen Looper](https://twitter.com/jenlooper) -> -> Laskelmassa viivan kulman täytyy myös ottaa huomioon leikkauspiste, eli missä `Y` sijaitsee, kun `X = 0`. -> -> Voit tutustua laskentamenetelmään arvonlaskennasta [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) -sivustolla. Käy myös [vähimmän neliösumman laskurilla](https://www.mathsisfun.com/data/least-squares-calculator.html) nähdäksesi, miten numeroarvot vaikuttavat viivaan. +> +> `X` on 'selittävä muuttuja'. `Y` on 'riippuva muuttuja'. Viivan kulmakerroin on `b` ja `a` on y-leikkaus, joka tarkoittaa `Y`-arvoa, kun `X = 0`. +> +>![kulmakertoimen laskeminen](../../../../translated_images/fi/slope.f3c9d5910ddbfcf9.webp) +> +> Ensiksi lasketaan kulmakerroin `b`. Infografiikka: [Jen Looper](https://twitter.com/jenlooper) +> +> Toisin sanoen, viitaten kurpitsadatan alkuperäiseen kysymykseen: "ennustetaan kurpitsan hinta tynnyriltä kuukauden mukaan", `X` tarkoittaisi hintaa ja `Y` myyntikuukautta. +> +>![kaavan täydentäminen](../../../../translated_images/fi/calculation.a209813050a1ddb1.webp) +> +> Lasketaan `Y` arvo. Jos maksat noin 4 dollaria, silloin on huhtikuu! Infografiikka: [Jen Looper](https://twitter.com/jenlooper) +> +> Viivan laskemiseen liittyvä matematiikka osoittaa viivan kulman, joka riippuu myös leikkauspisteestä eli missä kohtaa `Y` sijaitsee, kun `X = 0`. +> +> Voit tarkastella näiden arvojen laskentatapaa sivustolla [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Katso myös [tämä vähimmän neliösumman laskuri](https://www.mathsisfun.com/data/least-squares-calculator.html) nähdäksesi, miten lukujen arvot vaikuttavat viivaan. ## Korrelaatio -Yksi termi, jonka ymmärtäminen on tärkeää, on **korrelaatiokerroin** annetuille X- ja Y-muuttujille. Hajontakaaviolla voit nopeasti havainnollistaa tämän kertoimen. Jos pisteet ovat kauniissa rivissä, korrelaatio on korkea, mutta jos pisteet ovat hajallaan kaikkialla X:n ja Y:n välillä, korrelaatio on matala. +Yksi tärkeä termi on vielä ymmärtää: **Korrelaatiokerroin** annettujen X- ja Y-muuttujien välillä. Hajontakaaviolla (scatterplot) voi nopeasti havainnoida tätä kerrointa. Kaavio, jossa datapisteet sijoittuvat siististi yhdelle linjalle, on korkea korrelaatio, kun taas pisteet ovat hajallaan X:n ja Y:n välillä, korrelaatio on matala. -Hyvä lineaarinen regressiomalli on sellainen, jonka korrelaatiokerroin on korkea (lähellä 1 eikä 0) vähimmän neliösumman regressiomallissa. +Hyvä lineaarinen regressiomalli on sellainen, jolla on korkea (lähempänä kuin 0:aa olevan 1:n suuruinen) korrelaatiokerroin vähimmän neliösumman regressiomenetelmällä piirrettynä. -✅ Aja tämän oppitunnin mukana tuleva muistikirja ja tutki 'Kuukausi – Hinta' -hajontakaaviota. Vaikuttaako kurpitsan myyntimäärän kuukausien ja hintojen data korkean vai matalan korrelaation omaavalta, visuaalisen tulkintasi perusteella? Muuttuuko tämä, jos käytät hienojakoisempaa mittaria kuin `Kuukausi`, esim. *vuoden päivä* (eli päivien määrä vuodenvaihteesta lähtien)? +✅ Aja oppituntiin liittyvä muistikirja ja tarkastele kuukausi-hinta hajontakaaviota. Vaikuttaako kurpitsamyynnin kuukausin ja hinnan data korreloivan tiiviisti vai heikosti sen mukaan, miten visualisoit hajontakaavion? Muuttuuko se, jos käytät hienojakoisempaa mittaria kuin `Month`, esim. *vuoden päivää* (päivien määrää vuoden alusta)? -Alla olevassa koodissa oletamme, että data on puhdistettu ja saatu data frame nimeltä `new_pumpkins`, joka on samanlainen kuin seuraava: +Alla oletamme, että olemme puhdistaneet datan ja saaneet `new_pumpkins`-aineistokehyksen, joka on lähellä seuraavaa: -ID | Kuukausi | PäiväVuodessa | Lajike | Kaupunki | Pakkaus | Alhainen hinta | Korkea hinta | Hinta ----|----------|---------------|--------|----------|---------|----------------|--------------|-------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 hehtolitran laatikot | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 hehtolitran laatikot | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 hehtolitran laatikot | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 hehtolitran laatikot | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 hehtolitran laatikot | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|-------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Koodin datan puhdistamiseen löydät [`notebook.ipynb`](notebook.ipynb)-tiedostosta. Olemme tehneet samat puhdistusvaiheet kuin edellisessä oppitunnissa ja laskeneet `DayOfYear`-sarakkeen seuraavan lausekkeen avulla: +> Data on puhdistettu ja se löytyy [`notebook.ipynb`](notebook.ipynb)-tiedostosta. Olemme suorittaneet samat puhdistustoimet kuin edellisessä oppitunnissa, ja laskeneet `DayOfYear`-sarakkeen seuraavalla lausekkeella: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +Nyt kun ymmärrät lineaarisen regression taustalla olevan matematiikan, luodaan regressiomalli nähdäksesi, voimmeko ennustaa, millainen kurpitsapakkaus antaa parhaat kurpitsahinnat. Joku, joka ostaa kurpitsoja juhlapyhän koristeeksi, haluaisi tietää tämän optimoidakseen ostoksensa. -Koska sinulla on nyt käsitys lineaarisen regression taustalla olevasta matematiikasta, luodaan regressiomalli nähdäksesi, voimmeko ennustaa, mikä kurpitsapakkaus tarjoaa parhaat kurpitsanhinnat. Joulun kurpitsatilaisuutta varten ostava saattaa haluta tämän tiedon optimoidakseen ostoksensa. - -## Korrelatorin etsiminen +## Korrelaation etsiminen [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Klikkaa yllä olevaa kuvaa katsomaan lyhyt videoyhteenveto korrelaatiosta. +> 🎥 Klikkaa yllä olevaa kuvaa lyhyen videon katsomiseksi korrelaatiosta. -Viimeisestä oppitunnista olet varmaankin nähnyt, että eri kuukausien hintojen keskiarvot näyttävät tältä: +Edellisessä oppitunnissa olet varmaankin nähnyt, että eri kuukausien keskimääräinen hinta näyttää tältä: -Average price by month +Kuukausittainen keskihinta -Tämä viittaa siihen, että jonkinlainen korrelaatio on olemassa, ja voimme yrittää kouluttaa lineaarisen regressiomallin ennustamaan suhdetta `Kuukausi` ja `Hinta` tai `PäiväVuodessa` ja `Hinta` välillä. Tässä on hajontakaavio, joka näyttää jälkimmäisen suhteen: +Tämä viittaa siihen, että korrelaatiota pitäisi löytyä, ja voimme kokeilla lineaarisen regression mallia ennustamaan suhdetta `Month` ja `Price` välillä tai `DayOfYear` ja `Price` välillä. Tässä on hajontakaavio, joka näyttää jälkimmäisen suhteen: -Scatter plot of Price vs. Day of Year +Hajontakaavio: hinta vs. vuoden päivä -Katsotaan, onko korrelaatiota `corr`-funktion avulla: +Tutkitaan korrelaatiota `corr`-funktiolla: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Näyttää siltä, että korrelaatio on melko pieni, -0.15 kuukauden mukaan ja -0.17 päivän mukaan, mutta voi olla jokin toinen tärkeä suhde. Näyttää siltä, että hinnat muodostavat eri klustereita eri kurpitsalajien mukaan. Vahvistaaksemme tämän hypoteesin piirretään jokainen kurpitsakategoria omalla värillään. Antamalla `ax`-parametri `scatter`-piirtotoiminnolle voimme piirtää kaikki pisteet samaan kuvaajaan: + +Näyttää siltä, että korrelaatio on melko pieni, noin -0.15 kuukausittain ja -0.17 vuoden päivä -sarakkeen mukaan, mutta saattaa olla toinen tärkeä suhde. Näyttää siltä, että eri kurpitsalajikkeiden hinnat muodostavat erilaisia klustereita. Vahvistaaksesi tämän, piirretään kukin kurpitsaluokka eri värillä. Kun annamme `ax`-parametrin `scatter`-funktiolle, voimme piirtää kaikki pisteet samaan kuvaajaan: ```python ax=None @@ -140,41 +140,41 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Hajontakaavio: hinta vs. vuoden päivä, värikoodattu lajikkeen mukaan -Scatter plot of Price vs. Day of Year - -Tutkimuksemme viittaa siihen, että lajike vaikuttaa enemmän hintaan kuin myyntipäivämäärä. Näin näkyy myös palkkikaaviosta: +Tutkimuksemme viittaa siihen, että lajike vaikuttaa kokonaishintaan enemmän kuin todellinen myyntipäivä. Näemme tämän myös palkkikaaviolla: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Palkkikaavio: hinta lajikkeen mukaan -Bar graph of price vs variety - -Keskitymme tällä hetkellä vain yhteen kurpitsalajikkeeseen, 'pie type' -lajikkeeseen, ja katsotaan, mitä vaikutusta päivämäärällä on hintaan: +Keskitytään hetkeksi vain yhteen kurpitsalajikkeeseen, piirakkatyyppeihin, ja katsotaan, miten myyntipäivä vaikuttaa hintaan: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Hajontakaavio: hinta vs. vuoden päivä piirakkalajike -Jos nyt lasket korrelaation `Hinnan` ja `PäiväVuodessa`-arvon välillä `corr`-funktiolla, saat jotain -0.27:n tienoilla – mikä tarkoittaa, että ennustemallin kouluttaminen on järkevää. +Jos nyt lasketaan korrelaatio `Price` ja `DayOfYear` välillä käyttäen `corr`-funktiota, saamme noin `-0.27` – mikä tarkoittaa, että ennustavan mallin kouluttaminen on perusteltua. -> Ennen lineaarisen regressiomallin kouluttamista on tärkeää varmistaa, että data on puhdasta. Lineaarinen regressio ei toimi hyvin puuttuvien arvojen kanssa, joten on järkevää poistaa kaikki tyhjät solut: +> Ennen lineaarisen regressiomallin kouluttamista on tärkeää varmistaa, että datamme on puhdasta. Lineaarinen regressio ei toimi hyvin puuttuvien arvojen kanssa, joten on järkevää poistaa kaikki tyhjät solut: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Toinen lähestymistapa olisi täyttää tyhjät arvot vastaavan sarakkeen keskiarvolla. + +Toinen tapa voisi olla täyttää nämä tyhjät arvot sarakkeen keskiarvolla. ## Yksinkertainen lineaarinen regressio [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Klikkaa yllä olevaa kuvaa katsomaan lyhyt videoyhteenveto lineaarisesta ja polynomiregressiosta. +> 🎥 Klikkaa yllä olevaa kuvaa lyhyen videon katsomiseksi lineaarisesta ja polynomiregressiosta. Kouluttaaksemme lineaarisen regressiomallimme käytämme **Scikit-learn**-kirjastoa. @@ -183,32 +183,32 @@ from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Aloitamme erottelemalla syötearvot (ominaisuudet) ja odotetun tuloksen (label) omiin numpy-taulukoihinsa: + +Aloitamme erottamalla syötearvot (ominaisuudet) ja odotetun tuloksen (tunniste) erillisiin numpy-taulukoihin: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Huomaa, että meidän oli tehtävä `reshape` syötedatalle, jotta Linear Regression -paketti ymmärtäisi sen oikein. Lineaarinen regressio odottaa 2-ulotteista taulukkoa syötteenä, jossa jokainen rivin alkio vastaa syöteominaisuuksien vektoria. Meidän tapauksessamme, koska syötteitä on vain yksi, tarvitsemme N×1-ulotteisen taulukon, missä N on datasetin koko. -> Huomaa, että jouduimme tekemään `reshape`-muunnoksen syötteisiin, jotta Linear Regression -paketti ymmärtää ne oikein. Lineaarinen regressio odottaa 2-ulotteista taulukkoa syötteeksi, jossa jokainen taulukon rivi vastaa ominaisuusvektoria. Meillä on vain yksi syöte, joten tarvitaan N×1-muotoinen taulukko, missä N on datan koko. - -Seuraavaksi jaamme datan koulutus- ja testidatasettiin, jotta voimme validoida mallimme koulutuksen jälkeen: +Seuraavaksi meidän tulee jakaa data opetus- ja testiaineistoihin, jotta voimme validoida mallin kouluttamisen jälkeen: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Lopuksi lineaarisen regressiomallin kouluttaminen tapahtuu kahdella koodirivillä. Määrittelemme `LinearRegression`-olion ja sovitamme sen dataan `fit`-metodilla: + +Lopuksi varsinainen lineaarisen regression kouluttaminen vaatii vain kaksi koodiriviä. Määrittelemme `LinearRegression`-objektin ja koulutamme sen datalla `fit`-metodilla: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -LinearRegression-objekti fitauksen jälkeen sisältää kaikki regressiokertoimet, joihin pääsee käsiksi .coef_-ominaisuuden kautta. Meidän tapauksessamme on vain yksi kerroin, jonka tulisi olla noin -0,017. Tämä tarkoittaa, että hinnat näyttävät laskevan hieman ajan myötä, mutta ei paljoa, noin 2 senttiä päivässä. Pääsemme käsiksi myös regressiokäyrän leikkauspisteeseen Y-akselin kanssa käyttämällä lin_reg.intercept_ -ominaisuutta - se on meidän tapauksessamme noin 21, mikä ilmaisee hinnan vuoden alussa. +`LinearRegression`-olio `fit`-metodin suorittamisen jälkeen sisältää kaikki regressiokertoimet, joihin pääsee käsiksi `.coef_`-ominaisuudella. Tapauksessamme on vain yksi kerroin, jonka pitäisi olla noin `-0.017`. Tämä tarkoittaa, että hinnat näyttävät laskevan hieman ajan myötä, mutta eivät liian paljon, noin 2 senttiä päivässä. Voimme myös päästä käsiksi regressiolinjan leikkauspisteeseen Y-akselin kanssa käyttämällä `lin_reg.intercept_`-arvoa – se on tapauksessamme noin `21`, mikä osoittaa hinnan vuoden alussa. -Nähdäksemme, kuinka tarkka mallimme on, voimme ennustaa testidatan hinnat ja mitata sitten, kuinka lähellä ennusteemme ovat odotettuja arvoja. Tämä voidaan tehdä käyttäen neliöllisen keskiarvon neliöjuurivirhettä (RMSE), joka on kaikkien odotetun ja ennustetun arvon neliöllisten erotusten keskiarvon neliöjuuri. +Näyttääksemme, kuinka tarkka mallimme on, voimme ennustaa hintoja testidatalla ja mitata sitten, kuinka lähellä ennusteemme ovat odotettuja arvoja. Tämä voidaan tehdä juurikin neliöllisten virheiden keskiarvon neliöjuuren (RMSE) avulla, joka on kaikkien odotettujen ja ennustettujen arvojen neliöllisten erojen keskiarvon neliöjuuri. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,16 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - Virheemme näyttää olevan noin 2 pistettä, eli ~17%. Ei kovin hyvä. Toinen mallin laadun mittari on **määrityskerroin**, joka voidaan saada näin: + +Virheemme näyttää olevan noin 2 pistettä, mikä on ~17%. Ei kovin hyvä. Toinen mallin laadun mittari on **määrityskerroin**, jonka saamme näin: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Jos arvo on 0, se tarkoittaa, että malli ei huomioi syötteitä ja toimii *huonoimpana lineaarisena ennustajana*, joka on yksinkertaisesti tuloksen keskiarvo. Arvo 1 tarkoittaa, että pystymme täydellisesti ennustamaan kaikki odotetut arvot. Meillä kerroin on noin 0,06, mikä on melko alhainen. +Jos arvo on 0, se tarkoittaa, että malli ei ota syötedataa huomioon ja toimii *huonona lineaarisena ennustajana*, joka on yksinkertaisesti tuloksen keskiarvo. Arvo 1 tarkoittaa, että voimme täydellisesti ennustaa kaikki odotetut tulokset. Tapauksessamme kerroin on noin 0.06, mikä on melko matala. -Voimme myös piirtää testidatan ja regressiokäyrän samaan kuvaajaan, jotta näemme paremmin, miten regressio toimii tapauksessamme: +Voimme myös piirtää testidatan yhdessä regressioviivan kanssa nähdäksesi paremmin, miten regressio toimii tapauksessamme: ```python plt.scatter(X_test,y_test) @@ -235,17 +236,17 @@ plt.plot(X_test,pred) ## Polynominen regressio -Toinen lineaarisen regression tyyppi on polynominen regressio. Vaikka joskus muuttujien välillä on lineaarinen suhde - mitä suurempi kurpitsa tilavuudeltaan, sitä korkeampi hinta - joskus näitä suhteita ei voi esittää tasona tai suorana viivana. +Toinen lineaarisen regression muoto on polynominen regressio. Vaikka joskus muuttujien välillä on lineaarinen suhde – mitä suurempi kurpitsa tilavuudeltaan, sitä korkeampi hinta – joskus nämä suhteet eivät ole suoraan tasossa tai suoralla viivalla esitettävissä. -✅ Tässä on [joitakin lisää esimerkkejä](https://online.stat.psu.edu/stat501/lesson/9/9.8) aineistosta, johon polynominen regressio sopii +✅ Tässä on [jotakin lisää esimerkkejä](https://online.stat.psu.edu/stat501/lesson/9/9.8) datasta, jossa polynomista regressiota voisi käyttää. -Katso uudelleen suhdetta Päivämäärän ja Hinnan välillä. Näyttääkö tämä hajontakuvio siltä, että se pitäisi välttämättä analysoida suoralla viivalla? Eikö hinnat voi vaihdella? Tässä tapauksessa voit kokeilla polynomista regressiota. +Katso vielä uudestaan suhdetta Päivämäärä ja Hinta. Näyttääkö tämä hajontakaavio siltä, että se pitäisi välttämättä analysoida suoralla viivalla? Eikö hinta voi vaihdella? Tässä tapauksessa voit kokeilla polynomista regressiota. -✅ Polynomit ovat matemaattisia lausekkeita, jotka voivat sisältää yhden tai useamman muuttujan ja kertoimen +✅ Polynomit ovat matemaattisia lausekkeita, jotka voivat sisältää yhden tai useamman muuttujan ja kertoimen. -Polynominen regressio luo käyrän, joka istuu paremmin epälineaariseen dataan. Meidän tapauksessamme, jos lisäämme syötteisiin itseisarvoltaan neliöidyn DayOfYear-muuttujan, pystymme sovittamaan dataa parabolisella käyrällä, jolla on minimi tietyssä vuoden kohdassa. +Polynominen regressio luo kaarevan viivan sopimaan paremmin ei-lineaariseen dataan. Tapauksessamme, jos lisätään syötteeksi neliöity `DayOfYear`-muuttuja, voimme sovittaa datan paraabelikäyrällä, jolla on minimi tietyn vuodenhetken kohdalla. -Scikit-learn sisältää hyödyllisen [pipeline API:n](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) eri datankäsittelyvaiheiden yhdistämistä varten. **Pipeline** on ketju **estimaattoreita**. Meidän tapauksessamme luomme pipelineketjun, joka ensin lisää polynomiset piirteet malliin, ja sen jälkeen opettaa regression: +Scikit-learn sisältää hyödyllisen [pipeline-rajapinnan](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) erilaisten datankäsittelyvaiheiden yhdistämiseksi. **Pipeline** on ketju **estimaattoreita**. Tapauksessamme luomme pipeline:n, joka ensin lisää polynomiset piirteet malliin ja sen jälkeen opettaa regression: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,36 +256,59 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` - Käyttäen PolynomialFeatures(2) tarkoittaa, että otamme mukaan kaikki toisen asteen polynomit syötteestä. Meidän tapauksessamme se tarkoittaa vain DayOfYear2, mutta jos on kaksi syötemuuttujaa X ja Y, tämä lisää X2, XY ja Y2. Voimme myös käyttää korkeampiasteisia polynomeja, jos haluamme. -Pipelinetä voi käyttää samoin kuin alkuperäistä LinearRegression-objektia, eli voimme fitata pipelinen ja sitten predictata saadaksemme ennusteita. Tässä kuvaaja, jossa testidata ja likimääräinen käyrä: +Käyttäminen `PolynomialFeatures(2)` tarkoittaa, että otamme mukaan kaikki toisen asteen polynomit syötedatasta. Meidän tapauksessamme se tarkoittaa vain `DayOfYear`2, mutta jos olisi kaksi syötemuuttujaa X ja Y, se lisäisi termit X2, XY ja Y2. Voimme myös käyttää korkeampia asteen polynomeja, jos haluamme. + +Pipelineja voidaan käyttää samalla tavalla kuin alkuperäistä `LinearRegression`-oliota, eli voimme `fit`-kutsua pipelineen ja käyttää sitten `predict` ennusteiden saamiseksi: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Piirtääksemme sujuvan likimääräiskäyrän käytämme `np.linspace`-funktiota luomaan tasaisesti jakautuneen syötealueen, sen sijaan että piirrämme suoraan järjestämättömälle testidatalle (joka tuottaisi siksak-viivan): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Tässä on kuvaaja, jossa näkyy testidata ja likimääräiskäyrä: Polynomial regression -Polynomista regressiota käyttäen saamme hieman pienemmän MSE:n ja korkeamman määrityskertoimen, mutta ei merkittävästi. Tarvitsemme mukaan muita piirteitä! +Polynomista regressiota käyttämällä saamme hieman alhaisemman RMSE:n ja korkeamman määrityskertoimen, mutta ei merkittävästi. Meidän on otettava huomioon myös muita piirteitä! -> Näet, että kurpitsan pienimmät hinnat ovat havaittavissa jossakin Halloweenin tienoilla. Miten selität tämän? +> Voit nähdä, että kurpitsojen hinnat ovat alhaisimmillaan jossain Halloweeniin aikaan. Miten selität tämän? -🎃 Onneksi olkoon, olet juuri luonut mallin, joka voi auttaa ennustamaan piirakkakurpitsojen hintaa. Voit todennäköisesti toistaa saman menetelmän kaikille kurpistyyppilajikkeille, mutta se olisi työlästä. Opitaan nyt, miten kurpislajike otetaan mallissa huomioon! +🎃 Onneksi olkoon, juuri loit mallin, joka voi auttaa ennustamaan kurpitsapiirakan hintoja. Voit luultavasti toistaa saman prosessin kaikille kurpistyyppien lajikkeille, mutta se olisi työlästä. Opitaan nyt, miten otamme kurpitsalajikkeet mukaan malliin! -## Kategorialliset piirteet +## Kategoriset piirteet -Ihanteellisessa maailmassa haluamme pystyä ennustamaan eri kurpislajikkeiden hinnat samalla mallilla. Kuitenkin Variety-sarake on hieman erilainen kuin esimerkiksi Month, koska se sisältää ei-numeerisia arvoja. Tällaisia sarakkeita kutsutaan **kategoriallisiksi**. +Ihanteellisessa maailmassa haluamme pystyä ennustamaan hintoja eri kurpitsalajikkeille samalla mallilla. Kuitenkin `Variety`-sarake poikkeaa hieman esimerkiksi `Month`-sarakkeesta, koska se sisältää ei-numeerisia arvoja. Tällaisia sarakkeita kutsutaan **kategorisiksi**. -[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![ML aloittelijoille - Kategoristen piirteiden ennusteet lineaarisella regressiolla](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML aloittelijoille - Kategoristen piirteiden ennusteet lineaarisella regressiolla") -> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videon kategoriapiirteiden käytöstä. +> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen opetusvideon kategoristen piirteiden käytöstä. -Tässä voit nähdä, miten keskihinta riippuu lajikkeesta: +Tässä näkyy, miten keskihinta riippuu kurpitsalajikkeesta: Average price by variety -Ottaksemme lajikkeen huomioon, meidän tulee ensin muuntaa se numeeriseksi eli **enkoodata**. On useita tapoja tehdä tämä: +Ottamaan lajikkeet huomioon meidän täytyy ensin muuntaa ne numeeriseen muotoon eli **enkoodata**. On olemassa useita tapoja tehdä se: -* Yksinkertainen **numeraalinen enkoodaus** rakentaa taulukon eri lajikkeista ja korvaa lajikenimen taulukon indeksillä. Tämä ei ole paras idea lineaarisessa regressiossa, koska lineaarinen regressio ottaa indeksin numeerisen arvon ja lisää sen tulokseen kertoimen kanssa kerrottuna. Meidän tapauksessamme suhde indeksiluvun ja hinnan välillä on selvästi epälineaarinen, vaikka indeksit järjestettäisiin tietyllä tavalla. -* **One-hot-enkoodaus** korvaa Variety-sarakkeen neljällä eri sarakkeella, yksi kullekin lajikkeelle. Jokainen sarake sisältää arvon 1 jos rivi kuuluu kyseiseen lajikkeeseen, ja muuten 0. Tämä tarkoittaa, että lineaarisessa regressiossa on neljä kerrointa, yksi kullekin kurpislajikkeelle, jotka vastaavat "aloitushintaa" (tai pikemminkin "lisähintaa") kyseiselle lajikkeelle. +* Yksinkertainen **numeerinen enkoodaus** luo taulukon eri lajikkeista ja korvaa lajikenimen indeksillä taulukossa. Tämä ei ole paras ratkaisu lineaariselle regressiolle, koska lineaarinen regressio käyttää indeksin numeerista arvoa ja lisää sen tulokseen kerrottuna jollakin kertoimella. Tapauksessamme indeksin numeron ja hinnan suhde ei ole lineaarinen, vaikka indeksit olisi järjestetty jollain tavalla. +* **One-hot-enkoodaus** korvaa `Variety`-sarakkeen neljällä eri sarakkeella, yksi kullekin lajikkeelle. Kukin sarake sisältää `1` jos rivi on kyseistä lajiketta, ja `0` muuten. Tämä tarkoittaa, että lineaarisessa regressiossa on neljä kerrointa, yksi kullekin kurpitsalajikkeelle, jotka vastaavat "aloitushintaa" (tai oikeammin "lisähintaa") kyseiselle lajikkeelle. -Alla on koodi, jolla voimme one-hot enkoodata lajikkeen: +Alla oleva koodi näyttää, miten lajikkeen voi one-hot-enkoodata: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -301,13 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Kouluttaaksemme lineaarisen regression käyttäen one-hot enkoodattua lajiketta syötteenä, meidän tarvitsee vain alustaa X ja y -data oikein: +Lineaarisen regression kouluttamiseksi one-hot-enkoodatulla lajikkeella syötteenä, meidän tarvitsee vain laittaa `X` ja `y` oikein: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - Loput koodista on sama kuin mitä käytimme aiemmin LinearRegressionin opettamiseen. Jos kokeilet, näet, että keskimääräinen neliövirhe on suunnilleen sama, mutta saamme paljon korkeamman määrityskertoimen (~77%). Saadaksemme vieläkin tarkempia ennusteita voimme ottaa huomioon enemmän kategoriallisia piirteitä sekä numeerisia piirteitä, kuten Month tai DayOfYear. Saadaksemme yhden suuren piirteiden taulukon, voimme käyttää join-metodia: + +Muuten koodi on sama kuin yllä käyttämämme lineaarisen regression opettamiseen. Kun kokeilet tätä, huomaat, että neliöllinen virhe on noin sama, mutta määrityskerroin kohoaa noin 77 %:iin. Vielä tarkempia ennusteita varten voimme ottaa huomioon useampia kategorisia piirteitä sekä numeerisia piirteitä, kuten `Month` tai `DayOfYear`. Saadaksemme yhden suuren piirrejoukon voimme käyttää `join`-metodia: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -316,21 +341,22 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` - Tässä otamme lisäksi huomioon Cityn ja Package-tyypin, jolloin MSE on 2,84 (10%) ja määrityskerroin 0,94! -## Yhdistetään kaikki +Tässä otamme myös huomioon `City` ja `Package`-tyypin, mikä antaa RMSE-arvoksi 2.84 (10.5%) ja määrityskertoimeksi 0.94! + +## Kaiken yhdistäminen -Tehdäksemme parhaan mallin voimme käyttää yhdistettyä (one-hot enkoodattu kategoriallinen + numeerinen) dataa yllä olevasta esimerkistä yhdessä polynomisen regression kanssa. Tässä on koko koodi käyttöösi: +Parhaan mallin tekemiseksi voimme käyttää yhdistettyä (one-hot-enkoodattua kategorista + numeerista) dataa yllä olevasta esimerkistä yhdessä polynomisen regression kanssa. Tässä on valmiiksi koottu koodi: ```python -# aseta harjoitusdata +# aseta koulutusdata X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# tee harjoitus-testaus-jako +# tee koulutus- ja testijakauma X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # asenna ja kouluta putkisto @@ -340,43 +366,44 @@ pipeline.fit(X_train,y_train) # ennusta tulokset testidatalle pred = pipeline.predict(X_test) -# laske MSE ja selitysaste -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# laske RMSE ja selitysaste +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` - Tämä antaa meille parhaan määrityskertoimen lähes 97 %, ja MSE=2,23 (~8 % ennustvirhe). -| Malli | MSE | Määrityskerroin | -|-------|-----|---------------| +Tämän pitäisi antaa meille paras määrityskerroin lähes 97% ja RMSE-arvo 2.23 (~8% ennustetarkkuus). + +| Malli | RMSE | Määritys | +|-------|-----|---------| | `DayOfYear` Lineaarinen | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynominen | 2.73 (17.0%) | 0.08 | | `Variety` Lineaarinen | 5.24 (19.7%) | 0.77 | | Kaikki piirteet Lineaarinen | 2.84 (10.5%) | 0.94 | | Kaikki piirteet Polynominen | 2.23 (8.25%) | 0.97 | -🏆 Hienoa työtä! Loit neljä regressiomallia yhdessä oppitunnissa ja paransit mallin laatua 97 %:iin. Regressio-osan lopussa opit logistisesta regressiosta luokitusten määrittämiseksi. +🏆 Hienoa työtä! Loit neljä regressiomallia yhdessä oppitunnissa ja paransit mallin laatua 97 %:iin. Regressio-opin lopussa opit logistisesta regressiosta, jolla voidaan luokitella kategoriat. --- ## 🚀Haaste -Testaa tässä muistikirjassa useampaa eri muuttujaa nähdäksesi, miten korrelaatio vastaa mallin tarkkuutta. +Testaa tässä muistikirjassa useita eri muuttujia nähdäksesi, miten korrelaatio vaikuttaa mallin tarkkuuteen. -## [Luentotentin jälkeinen tietovisa](https://ff-quizzes.netlify.app/en/ml/) +## [Luentokerran testi](https://ff-quizzes.netlify.app/en/ml/) -## Kertaus & Itsestä opiskelua +## Kertaus ja itsenäinen opiskelu -Tässä oppitunnissa opimme lineaarisesta regression mallinnuksesta. On olemassa myös muita tärkeitä regressiotyyppejä. Lue Stepwise-, Ridge-, Lasso- ja Elasticnet-teknikoista. Hyvä kurssi syventymiseen on [Stanfordin statistiikan oppimisjakso](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Tässä oppitunnissa opimme lineaarisesta regressiosta. On myös muita tärkeitä regressiotyyppejä. Lue stepwise-, ridge-, lasso- ja elasticnet-menetelmistä. Hyvä kurssi oppimiseen on [Stanfordin tilastollisen oppimisen kurssi](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning). ## Tehtävä -[Rakenna malli](assignment.md) +[Laadi malli](assignment.md) --- **Vastuuvapauslauseke**: -Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, ole ystävällinen ja huomioi, että automatisoiduissa käännöksissä saattaa esiintyä virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen omalla kielellä tulee pitää ensisijaisena lähteenä. Tärkeiden tietojen osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa mahdollisista väärinymmärryksistä tai virhetulkingoista, jotka johtuvat tämän käännöksen käytöstä. +Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Pyrimme tarkkuuteen, mutta ole hyvä ja huomioi, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä pidetään virallisena lähteenä. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tästä käännöksestä johtuvista väärinkäsityksistä tai virhetulkinnoista. \ No newline at end of file diff --git a/translations/fi/2-Regression/3-Linear/solution/notebook.ipynb b/translations/fi/2-Regression/3-Linear/solution/notebook.ipynb index ff0ea1916b..8a91445f39 100644 --- a/translations/fi/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/fi/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## Lineaarinen ja polynominen regressio kurpitsan hinnoitteluun - Oppitunti 3\n", "\n", - "Lataa tarvittavat kirjastot ja datasetti. Muunna data tietokehykseksi, joka sisältää osajoukon datasta:\n", + "Lataa tarvittavat kirjastot ja aineisto. Muunna data dataframeksi, joka sisältää alijoukon aineistosta:\n", "\n", - "- Valitse vain kurpitsat, jotka on hinnoiteltu tynnyreittäin\n", + "- Hae vain kurpitsat, joiden hinta on määritelty bussiilia kohden\n", "- Muunna päivämäärä kuukaudeksi\n", - "- Laske hinta korkeiden ja matalien hintojen keskiarvona\n", - "- Muunna hinta vastaamaan tynnyrimääräistä hinnoittelua\n" + "- Laske hinta keskiarvona korkeimmasta ja matalimmasta hinnasta\n", + "- Muunna hinta vastaamaan hinnoittelua bussiilimäärän perusteella\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hajontakaavio muistuttaa meitä siitä, että meillä on kuukausitietoja vain elokuusta joulukuuhun. Tarvitsemme luultavasti enemmän tietoja voidaksemme tehdä johtopäätöksiä lineaarisesti.\n" + "Hajontakaavio muistuttaa meitä siitä, että meillä on kuukausitietoja vain elokuusta joulukuuhun. Tarvitsemme todennäköisesti lisää tietoja, jotta voimme tehdä johtopäätöksiä lineaarisessa muodossa.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Katsotaanpa, onko korrelaatiota:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Näyttää siltä, että korrelaatio on melko pieni, mutta jokin muu tärkeämpi yhteys on olemassa - koska yllä olevan kuvaajan hintapisteet näyttävät muodostavan useita erillisiä klustereita. Tehdään kuvaaja, joka näyttää eri kurpitsalajikkeet:\n" + "Näyttää siltä, että korrelaatio on melko pieni, mutta on olemassa jokin muu tärkeämpi suhde - koska yllä olevassa kuvassa hintapisteillä näyttää olevan useita eri klustereita. Tehdään kuvaaja, joka näyttää eri kurpitsalajikkeet:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Toistaiseksi keskitytään vain yhteen lajikkeeseen - **piirakkatyyppi**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Lineaarinen regressio\n", "\n", - "Käytämme Scikit Learn -kirjastoa lineaarisen regressiomallin kouluttamiseen:\n" + "Käytämme Scikit Learnia lineaarisen regressiomallin kouluttamiseen:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Suoran kulmakerroin voidaan määrittää lineaarisen regressioyhtälön kertoimista:\n" + "Suoran kaltevuus voidaan määrittää lineaarisen regression kertoimista:\n" ] }, { @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polynomisregressio\n", + "### Polynomiregressio\n", "\n", - "Joskus piirteiden ja tulosten välinen suhde on luonteeltaan epälineaarinen. Esimerkiksi kurpitsan hinnat voivat olla korkeita talvella (kuukaudet=1,2), sitten laskea kesällä (kuukaudet=5-7) ja nousta jälleen. Lineaarinen regressio ei pysty mallintamaan tätä suhdetta tarkasti.\n", + "Joskus ominaisuuksien ja tulosten välinen suhde on olennaisesti epälineaarinen. Esimerkiksi kurpitsojen hinnat voivat olla korkeita talvella (kuukaudet=1,2), laskea kesällä (kuukaudet=5-7) ja nousta taas uudelleen. Lineaarinen regressio ei pysty löytämään tätä suhdetta tarkasti.\n", "\n", - "Tässä tapauksessa voimme harkita lisäpiirteiden lisäämistä. Yksinkertainen tapa on käyttää polynomeja syötepiirteistä, mikä johtaa **polynomisregressioon**. Scikit Learnissa voimme automaattisesti esilaskentaa polynomipiirteet käyttämällä putkistoja:\n" + "Tässä tapauksessa voimme harkita lisäominaisuuksien lisäämistä. Yksinkertainen tapa on käyttää polynomeja syöteominaisuuksista, mikä johtaa **polynomiregressioon**. Scikit Learnissa voimme automaattisesti esilaskentaa polynomiset ominaisuudet putkistoilla: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Koodausvaihtoehdot\n", + "### Koodauksen muunnelmat\n", "\n", - "Ihanteellisessa maailmassa haluamme pystyä ennustamaan eri kurpitsalajikkeiden hintoja käyttämällä samaa mallia. Jotta voimme ottaa lajikkeen huomioon, meidän täytyy ensin muuntaa se numeeriseen muotoon eli **koodata**. Tähän on useita tapoja:\n", + "Ihannetapauksessa haluamme pystyä ennustamaan eri kurpitsalajien hinnat samalla mallilla. Ottaaksemme lajikkeen huomioon, meidän täytyy ensin muuntaa se numeeriseen muotoon eli **koodata** se. Sen voi tehdä usealla tavalla:\n", "\n", - "* Yksinkertainen numeerinen koodaus, joka luo taulukon eri lajikkeista ja korvaa lajikkeen nimen taulukon indeksillä. Tämä ei ole paras idea lineaarista regressiota varten, koska lineaarinen regressio ottaa indeksin numeerisen arvon huomioon, eikä numeerinen arvo todennäköisesti korreloi hinnan kanssa.\n", - "* One-hot-koodaus, joka korvaa `Variety`-sarakkeen neljällä eri sarakkeella, yksi kutakin lajiketta varten. Sarakkeessa on arvo 1, jos vastaava rivi kuuluu kyseiseen lajikkeeseen, ja 0 muuten.\n", + "* Yksinkertainen numeerinen koodaus, joka rakentaa taulukon eri lajikkeista ja korvaa lajikenimen tämän taulukon indeksillä. Tämä ei ole paras idea lineaariselle regressiolle, koska lineaarinen regressio ottaa huomioon indeksin numeerisen arvon, ja tämä arvo ei todennäköisesti korreloi numeerisesti hinnan kanssa.\n", + "* One-hot -koodaus, joka korvaa `Variety`-sarakkeen neljällä eri sarakkeella, yksi jokaiselle lajikkeelle, ja sarake sisältää 1, jos vastaava rivi kuuluu kyseiseen lajikkeeseen, ja 0 muuten.\n", "\n", - "Alla oleva koodi näyttää, kuinka voimme suorittaa one-hot-koodauksen lajikkeelle:\n" + "Alla oleva koodi näyttää, kuinka lajike voidaan one-hot -koodata:\n" ] }, { @@ -942,7 +949,7 @@ "source": [ "### Lineaarinen regressio lajikkeella\n", "\n", - "Käytämme nyt samaa koodia kuin yllä, mutta `DayOfYear`-muuttujan sijaan käytämme yksi-kuumakoodattua lajiketta syötteenä:\n" + "Käytämme nyt samaa koodia kuin yllä, mutta `DayOfYear`-muuttujan sijaan käytämme syötteenä one-hot-koodattua lajikettamme:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Voimme myös kokeilla käyttää muita ominaisuuksia samalla tavalla ja yhdistää niitä numeerisiin ominaisuuksiin, kuten `Month` tai `DayOfYear`:\n" + "Voimme myös yrittää käyttää muita ominaisuuksia samalla tavalla ja yhdistää ne numeeristen ominaisuuksien kanssa, kuten `Month` tai `DayOfYear`:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polynomiregressio\n", + "### Polynominen regressio\n", "\n", - "Polynomiregressiota voidaan käyttää myös kategoristen ominaisuuksien kanssa, jotka on koodattu one-hot-muotoon. Polynomiregression kouluttamiseen käytettävä koodi olisi periaatteessa sama kuin mitä olemme nähneet aiemmin.\n" + "Polynomista regressiota voidaan käyttää myös kategoristen, one-hot-koodattujen ominaisuuksien kanssa. Koodi polynomisen regression kouluttamiseksi olisi olennaisesti sama kuin yllä olemme nähneet.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Vastuuvapauslauseke**: \nTämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulee pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskääntämistä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinkäsityksistä tai virhetulkinnoista.\n" + "---\n\n\n**Vastuuvapauslauseke**: \nTämä asiakirja on käännetty käyttäen tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Pyrimme tarkkuuteen, mutta olethan tietoinen siitä, että automaattisissa käännöksissä saattaa esiintyä virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen omalla kielellä on ensisijainen lähde. Tärkeissä asioissa suosittelemme ammattimaista ihmiskäännöstä. Emme ole vastuussa mahdollisista väärinymmärryksistä tai tulkinnoista, jotka johtuvat tämän käännöksen käytöstä.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:20:20+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "fi" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/no/.co-op-translator.json b/translations/no/.co-op-translator.json index bc3cfbbe8b..f65965395d 100644 --- a/translations/no/.co-op-translator.json +++ b/translations/no/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "no" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T21:41:24+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:55:18+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "no" }, @@ -90,8 +90,8 @@ "language_code": "no" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:02:44+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:54:47+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "no" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "no" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:52:00+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "no" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T21:11:16+00:00", diff --git a/translations/no/1-Introduction/4-techniques-of-ML/README.md b/translations/no/1-Introduction/4-techniques-of-ML/README.md index c91be7fdbf..53e70d65bf 100644 --- a/translations/no/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/no/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # Teknikker for maskinlæring -Prosessen med å bygge, bruke og vedlikeholde maskinlæringsmodeller og dataene de bruker, er svært forskjellig fra mange andre utviklingsarbeidsflyter. I denne leksjonen vil vi avmystifisere prosessen og skissere de viktigste teknikkene du trenger å kjenne til. Du vil: +Prosessen med å bygge, bruke og vedlikeholde maskinlæringsmodeller og dataene de bruker er en svært annerledes prosess enn mange andre utviklingsarbeidsflyter. I denne leksjonen vil vi avmystifisere prosessen og skissere de viktigste teknikkene du trenger å kjenne til. Du vil: - Forstå prosessene som ligger til grunn for maskinlæring på et overordnet nivå. - Utforske grunnleggende konsepter som 'modeller', 'prediksjoner' og 'treningsdata'. -## [Quiz før leksjonen](https://ff-quizzes.netlify.app/en/ml/) +## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -[![ML for nybegynnere - Teknikker for maskinlæring](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for nybegynnere - Teknikker for maskinlæring") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") > 🎥 Klikk på bildet over for en kort video som går gjennom denne leksjonen. ## Introduksjon -På et overordnet nivå består håndverket med å lage maskinlæringsprosesser (ML) av flere steg: +På et overordnet nivå består kunstverket av å lage maskinlæringsprosesser (ML) av flere trinn: -1. **Bestem spørsmålet**. De fleste ML-prosesser starter med å stille et spørsmål som ikke kan besvares med et enkelt betingelsesbasert program eller regelbasert motor. Disse spørsmålene dreier seg ofte om prediksjoner basert på en samling data. -2. **Samle og forbered data**. For å kunne besvare spørsmålet ditt trenger du data. Kvaliteten og, noen ganger, mengden av dataene dine vil avgjøre hvor godt du kan besvare det opprinnelige spørsmålet. Visualisering av data er en viktig del av denne fasen. Denne fasen inkluderer også å dele dataene inn i en trenings- og testgruppe for å bygge en modell. -3. **Velg en treningsmetode**. Avhengig av spørsmålet ditt og naturen til dataene dine, må du velge hvordan du vil trene en modell for best å reflektere dataene og lage nøyaktige prediksjoner basert på dem. Dette er den delen av ML-prosessen som krever spesifikk ekspertise og ofte en betydelig mengde eksperimentering. -4. **Tren modellen**. Ved hjelp av treningsdataene dine bruker du ulike algoritmer for å trene en modell til å gjenkjenne mønstre i dataene. Modellen kan bruke interne vekter som kan justeres for å prioritere visse deler av dataene over andre for å bygge en bedre modell. -5. **Evaluer modellen**. Du bruker data som modellen aldri har sett før (testdataene dine) fra den innsamlede samlingen for å se hvordan modellen presterer. -6. **Parameterjustering**. Basert på modellens ytelse kan du gjenta prosessen med forskjellige parametere eller variabler som styrer oppførselen til algoritmene som brukes til å trene modellen. -7. **Prediksjon**. Bruk nye input for å teste modellens nøyaktighet. +1. **Bestem spørsmålet**. De fleste ML-prosesser starter med å stille et spørsmål som ikke kan besvares av et enkelt betinget program eller et regelbasert system. Disse spørsmålene dreier seg ofte om prediksjoner basert på en samling data. +2. **Samle inn og forberede data**. For å kunne svare på spørsmålet ditt trenger du data. Kvaliteten og av og til mengden av dataene dine vil avgjøre hvor godt du kan svare på det opprinnelige spørsmålet. Visualisering av data er en viktig del av denne fasen. Denne fasen inkluderer også å dele dataene i en trenings- og testgruppe for å bygge en modell. +3. **Velg en treningsmetode**. Avhengig av spørsmålet ditt og hva slags data du har, må du bestemme hvordan du vil trene en modell som best reflekterer dataene dine og gir nøyaktige prediksjoner. Dette er den delen av ML-prosessen som krever spesifikk ekspertise og ofte en betydelig mengde eksperimentering. +4. **Tren modellen**. Ved å bruke treningsdataene dine, vil du bruke ulike algoritmer til å trene en modell til å gjenkjenne mønstre i dataene. Modellen kan bruke interne vekter som kan justeres for å prioritere visse deler av dataene fremfor andre for å bygge en bedre modell. +5. **Evaluer modellen**. Du bruker data som aldri før er sett (testdataene dine) fra det innsamlede datasettet for å se hvordan modellen presterer. +6. **Parameterjustering**. Basert på modellens prestasjon kan du gjøre prosessen på nytt ved å bruke forskjellige parametere eller variabler som styrer adferden til algoritmene som brukes for å trene modellen. +7. **Predikere**. Bruk nye innganger for å teste nøyaktigheten til modellen din. -## Hvilket spørsmål skal du stille? +## Hvilket spørsmål skal stilles -Datamaskiner er spesielt dyktige til å oppdage skjulte mønstre i data. Denne egenskapen er svært nyttig for forskere som har spørsmål om et gitt område som ikke enkelt kan besvares ved å lage en betingelsesbasert regelmotor. Gitt en aktuariell oppgave, for eksempel, kan en dataforsker være i stand til å konstruere håndlagde regler rundt dødeligheten til røykere vs. ikke-røykere. +Datamaskiner er spesielt dyktige til å oppdage skjulte mønstre i data. Denne nytten er svært hjelpsom for forskere som har spørsmål om et gitt domene som ikke lett lar seg besvare ved å lage et regelbasert betinget system. Gitt en aktuaroppgave, for eksempel, kan en dataforsker konstruere håndlagde regler rundt dødeligheten til røykere vs ikke-røykere. -Når mange andre variabler tas med i ligningen, kan imidlertid en ML-modell vise seg å være mer effektiv til å forutsi fremtidige dødelighetsrater basert på tidligere helsehistorikk. Et mer oppløftende eksempel kan være å lage værprediksjoner for april måned på et gitt sted basert på data som inkluderer breddegrad, lengdegrad, klimaendringer, nærhet til havet, mønstre i jetstrømmen og mer. +Når mange andre variabler tas med i regnestykket, kan imidlertid en ML-modell vise seg å være mer effektiv for å forutsi fremtidige dødelighetsrater basert på tidligere helsehistorikk. Et mer lystigere eksempel kan være å lage værvarsler for april måned på et gitt sted basert på data som inkluderer breddegrad, lengdegrad, klimaendringer, nærhet til havet, mønstre i jetstrømmen og mer. -✅ Denne [presentasjonen](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) om værmodeller gir et historisk perspektiv på bruk av ML i væranalyse. +✅ Denne [slide-decken](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) om værmodeller gir et historisk perspektiv på bruk av ML i væranalyse. ## Oppgaver før bygging -Før du begynner å bygge modellen din, er det flere oppgaver du må fullføre. For å teste spørsmålet ditt og danne en hypotese basert på modellens prediksjoner, må du identifisere og konfigurere flere elementer. +Før du begynner å bygge modellen din, er det flere oppgaver du må fullføre. For å teste spørsmålet ditt og danne en hypotese basert på modellens prediksjoner må du identifisere og konfigurere flere elementer. ### Data -For å kunne besvare spørsmålet ditt med en viss grad av sikkerhet, trenger du en god mengde data av riktig type. Det er to ting du må gjøre på dette tidspunktet: +For å kunne svare på spørsmålet ditt med en viss sikkerhet, trenger du en god mengde data av riktig type. Det er to ting du må gjøre på dette tidspunktet: -- **Samle data**. Med tanke på den forrige leksjonen om rettferdighet i dataanalyse, samle dataene dine med omhu. Vær oppmerksom på kildene til disse dataene, eventuelle iboende skjevheter de kan ha, og dokumenter opprinnelsen. -- **Forbered data**. Det er flere steg i prosessen med databehandling. Du kan trenge å samle data og normalisere dem hvis de kommer fra ulike kilder. Du kan forbedre kvaliteten og mengden av dataene gjennom ulike metoder, som å konvertere strenger til tall (som vi gjør i [Clustering](../../5-Clustering/1-Visualize/README.md)). Du kan også generere nye data basert på de opprinnelige (som vi gjør i [Classification](../../4-Classification/1-Introduction/README.md)). Du kan rense og redigere dataene (som vi gjør før [Web App](../../3-Web-App/README.md)-leksjonen). Til slutt kan det hende du må randomisere og blande dem, avhengig av treningsmetodene dine. +- **Samle inn data**. Med tanke på forrige leksjon om rettferdighet i dataanalyse, samle inn dataene dine med omhu. Vær oppmerksom på kildene til disse dataene, eventuelle iboende skjevheter de kan ha, og dokumenter opprinnelsen. +- **Forbered data**. Det er flere steg i dataforberedelsesprosessen. Du kan trenge å sammenstille data og normalisere dem hvis de kommer fra ulike kilder. Du kan forbedre datakvaliteten og -mengden gjennom ulike metoder som å konvertere tekststrenger til tall (som vi gjør i [Clustering](../../5-Clustering/1-Visualize/README.md)). Du kan også generere nye data basert på originalene (som vi gjør i [Classification](../../4-Classification/1-Introduction/README.md)). Du kan rense og redigere data (som vi vil gjøre før [Web App](../../3-Web-App/README.md)-leksjonen). Til slutt kan det også være nødvendig å randomisere og stokke dataene, avhengig av treningsmetodene dine. -✅ Etter å ha samlet og behandlet dataene dine, ta et øyeblikk for å se om formen deres vil tillate deg å adressere det tiltenkte spørsmålet. Det kan være at dataene ikke vil fungere godt for den gitte oppgaven, som vi oppdager i våre [Clustering](../../5-Clustering/1-Visualize/README.md)-leksjoner! +✅ Etter å ha samlet og behandlet dataene dine, ta et øyeblikk for å se om formen på dataene tillater deg å adressere det tiltenkte spørsmålet. Det kan hende datamaterialet ikke fungerer godt til oppgaven, som vi oppdager i våre [Clustering](../../5-Clustering/1-Visualize/README.md)-leksjoner! -### Funksjoner og mål +### Egenskaper og målvariabel -En [funksjon](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) er en målbar egenskap ved dataene dine. I mange datasett uttrykkes det som en kolonneoverskrift som 'dato', 'størrelse' eller 'farge'. Funksjonsvariabelen din, vanligvis representert som `X` i kode, representerer inputvariabelen som vil bli brukt til å trene modellen. +En [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) er en målbar egenskap ved dataene dine. I mange datasett uttrykkes det som en kolonneoverskrift som 'dato', 'størrelse' eller 'farge'. Egenskapsvariabelen din, vanligvis representert som `X` i kode, er inngangsvariabelen som brukes for å trene en modell. -Et mål er det du prøver å forutsi. Målet, vanligvis representert som `y` i kode, representerer svaret på spørsmålet du prøver å stille til dataene dine: i desember, hvilken **farge** vil gresskar være billigst? I San Francisco, hvilke nabolag vil ha de beste eiendoms**prisene**? Noen ganger refereres målet også til som etikettattributt. +Et mål er noe du prøver å forutsi. Målvariabelen, vanligvis representert som `y` i kode, er svaret på spørsmålet du stiller om dataene dine: i desember, hvilken **farge** vil gresskarene være billigst? I San Francisco, hvilke bydeler vil ha den beste eiendoms**prisen**? Målet blir noen ganger også kalt en etikettattributt. -### Velge funksjonsvariabelen din +### Velge egenskapsvariabelen din -🎓 **Funksjonsvalg og funksjonsekstraksjon** Hvordan vet du hvilken variabel du skal velge når du bygger en modell? Du vil sannsynligvis gå gjennom en prosess med funksjonsvalg eller funksjonsekstraksjon for å velge de riktige variablene for den mest effektive modellen. De er imidlertid ikke det samme: "Funksjonsekstraksjon lager nye funksjoner fra funksjoner av de opprinnelige funksjonene, mens funksjonsvalg returnerer et delsett av funksjonene." ([kilde](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Feature Selection og Feature Extraction** Hvordan vet du hvilken variabel du skal velge når du bygger en modell? Du vil sannsynligvis gå gjennom en prosess med funksjonsutvalg eller funksjonsekstraksjon for å velge de riktige variablene for den mest effektive modellen. De er imidlertid ikke det samme: "Feature extraction skaper nye funksjoner fra funksjoner av de opprinnelige funksjonene, mens feature selection returnerer et delsett av funksjonene." ([kilde](https://wikipedia.org/wiki/Feature_selection)) ### Visualiser dataene dine -En viktig del av verktøysettet til en dataforsker er evnen til å visualisere data ved hjelp av flere utmerkede biblioteker som Seaborn eller MatPlotLib. Å representere dataene dine visuelt kan hjelpe deg med å avdekke skjulte korrelasjoner som du kan utnytte. Visualiseringene dine kan også hjelpe deg med å avdekke skjevheter eller ubalanserte data (som vi oppdager i [Classification](../../4-Classification/2-Classifiers-1/README.md)). +En viktig del av verktøykassen til en dataforsker er muligheten til å visualisere data ved hjelp av flere utmerkede biblioteker som Seaborn eller MatPlotLib. Å representere dataene dine visuelt kan gi deg mulighet til å avdekke skjulte korrelasjoner som du kan dra nytte av. Visualiseringene dine kan også hjelpe deg med å oppdage skjevheter eller ubalanserte data (som vi oppdager i [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Del opp datasettet ditt +### Del datasettet ditt -Før trening må du dele datasettet ditt inn i to eller flere deler av ulik størrelse som fortsatt representerer dataene godt. +Før treningen må du dele datasettet ditt i to eller flere deler av ulik størrelse som fortsatt representerer dataene godt. -- **Trening**. Denne delen av datasettet tilpasses modellen din for å trene den. Dette settet utgjør majoriteten av det opprinnelige datasettet. +- **Trening**. Denne delen av datasettet tilpasses modellen din for å trene den. Dette settet utgjør mesteparten av det opprinnelige datasettet. - **Testing**. Et testdatasett er en uavhengig gruppe data, ofte hentet fra de opprinnelige dataene, som du bruker for å bekrefte ytelsen til den bygde modellen. -- **Validering**. Et valideringssett er en mindre uavhengig gruppe eksempler som du bruker for å finjustere modellens hyperparametere eller arkitektur for å forbedre modellen. Avhengig av størrelsen på dataene dine og spørsmålet du stiller, trenger du kanskje ikke å bygge dette tredje settet (som vi bemerker i [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Validering**. Et valideringssett er en mindre uavhengig gruppe eksempler som du bruker for å justere modellens hyperparametere eller arkitektur for å forbedre modellen. Avhengig av datastørrelsen og spørsmålet du stiller, kan det hende du ikke trenger å bygge dette tredje settet (som vi bemerker i [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). ## Bygge en modell -Ved hjelp av treningsdataene dine er målet ditt å bygge en modell, eller en statistisk representasjon av dataene dine, ved hjelp av ulike algoritmer for å **trene** den. Å trene en modell eksponerer den for data og lar den gjøre antakelser om oppdagede mønstre, validere dem og akseptere eller avvise dem. +Ved å bruke treningsdataene dine, er målet ditt å bygge en modell, eller en statistisk representasjon av dataene dine, ved å bruke ulike algoritmer for å **trene** den. Å trene en modell eksponerer den for data og lar den gjøre antakelser om oppfattede mønstre den oppdager, validerer og godtar eller forkaster. -### Bestem treningsmetoden +### Velg en treningsmetode -Avhengig av spørsmålet ditt og naturen til dataene dine, vil du velge en metode for å trene dem. Ved å gå gjennom [Scikit-learn's dokumentasjon](https://scikit-learn.org/stable/user_guide.html) - som vi bruker i dette kurset - kan du utforske mange måter å trene en modell på. Avhengig av erfaringen din, kan det hende du må prøve flere forskjellige metoder for å bygge den beste modellen. Du vil sannsynligvis gå gjennom en prosess der dataforskere evaluerer ytelsen til en modell ved å mate den med ukjente data, sjekke for nøyaktighet, skjevhet og andre kvalitetsreduserende problemer, og velge den mest passende treningsmetoden for oppgaven. +Avhengig av spørsmålet ditt og dataenes natur, vil du velge en metode for å trene den. Når du går gjennom [Scikit-learns dokumentasjon](https://scikit-learn.org/stable/user_guide.html) – som vi bruker i dette kurset – kan du utforske mange måter å trene en modell på. Avhengig av erfaringen din kan det hende du må prøve flere ulike metoder for å bygge den beste modellen. Du vil sannsynligvis gå gjennom en prosess hvor dataforskere evaluerer ytelsen til en modell ved å mate den med ukjente data, sjekke for nøyaktighet, skjevhet og andre kvalitetsreduserende problemer, og velge den mest passende treningsmetoden for oppgaven som skal utføres. ### Tren en modell -Med treningsdataene dine er du klar til å 'tilpasse' dem for å lage en modell. Du vil legge merke til at i mange ML-biblioteker finner du koden 'model.fit' - det er på dette tidspunktet du sender inn funksjonsvariabelen din som en matrise av verdier (vanligvis 'X') og en målvariabel (vanligvis 'y'). +Bevæpnet med treningsdataene dine er du klar til å 'tilpasse' den for å lage en modell. Du vil legge merke til at i mange ML-biblioteker finner du koden 'model.fit' – det er på dette tidspunktet du sender inn egenskapsvariabelen som en matrise av verdier (vanligvis 'X') og målvariabelen (vanligvis 'y'). ### Evaluer modellen -Når treningsprosessen er fullført (det kan ta mange iterasjoner, eller 'epoker', å trene en stor modell), vil du kunne evaluere modellens kvalitet ved å bruke testdata for å måle ytelsen. Disse dataene er et delsett av de opprinnelige dataene som modellen ikke tidligere har analysert. Du kan skrive ut en tabell med metrikker om modellens kvalitet. +Når treningsprosessen er fullført (det kan ta mange iterasjoner, eller 'epoker', å trene en stor modell), vil du kunne evaluere modellens kvalitet ved å bruke testdata for å måle ytelsen. Disse dataene er et delsett av de opprinnelige dataene som modellen ikke har analysert tidligere. Du kan skrive ut en tabell med målinger om modellens kvalitet. 🎓 **Modelltilpasning** -I sammenheng med maskinlæring refererer modelltilpasning til nøyaktigheten av modellens underliggende funksjon når den forsøker å analysere data den ikke er kjent med. +I sammenheng med maskinlæring refererer modelltilpasning til nøyaktigheten til modellens underliggende funksjon mens den forsøker å analysere data den ikke kjenner til. -🎓 **Undertilpasning** og **overtilpasning** er vanlige problemer som reduserer modellens kvalitet, ettersom modellen enten tilpasser seg for dårlig eller for godt. Dette fører til at modellen lager prediksjoner som enten er for tett knyttet til eller for løst knyttet til treningsdataene. En overtilpasset modell forutsier treningsdataene for godt fordi den har lært detaljene og støyen i dataene for godt. En undertilpasset modell er ikke nøyaktig, da den verken kan analysere treningsdataene eller data den ikke har 'sett' på en korrekt måte. +🎓 **Underfitting** og **overfitting** er vanlige problemer som forringer modellens kvalitet, da modellen enten passer for dårlig eller for godt. Dette gjør at modellen gjør prediksjoner som enten er for nært knyttet eller for løst knyttet til treningsdataene. En overfit modell predikerer treningsdataene for godt fordi den har lært detaljene og støyen i dataene for godt. En underfit modell er ikke nøyaktig fordi den verken kan analysere treningsdataene sine nøyaktig eller data den ikke har 'sett' før. -![overtilpasset modell](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/no/overfitting.1c132d92bfd93cb6.webp) > Infografikk av [Jen Looper](https://twitter.com/jenlooper) ## Parameterjustering -Når den første treningen er fullført, observer kvaliteten på modellen og vurder å forbedre den ved å justere dens 'hyperparametere'. Les mer om prosessen [i dokumentasjonen](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Når den innledende treningen er fullført, observer modellens kvalitet og vurder å forbedre den ved å finjustere dens 'hyperparametere'. Les mer om prosessen [i dokumentasjonen](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Prediksjon -Dette er øyeblikket hvor du kan bruke helt nye data for å teste modellens nøyaktighet. I en 'anvendt' ML-setting, der du bygger nettressurser for å bruke modellen i produksjon, kan denne prosessen innebære å samle brukerinput (for eksempel et knappetrykk) for å sette en variabel og sende den til modellen for inferens eller evaluering. +Dette er øyeblikket hvor du kan bruke helt nye data for å teste modellens nøyaktighet. I et 'anvendt' ML-miljø, hvor du bygger webressurser for å bruke modellen i produksjon, kan denne prosessen innebære å samle inn brukerinngang (for eksempel et knappetrykk) for å sette en variabel og sende den til modellen for inferens eller evaluering. -I disse leksjonene vil du oppdage hvordan du bruker disse stegene til å forberede, bygge, teste, evaluere og forutsi - alle oppgavene til en dataforsker og mer, mens du utvikler deg på reisen til å bli en 'full stack' ML-ingeniør. +I disse leksjonene vil du oppdage hvordan du bruker disse trinnene for å forberede, bygge, teste, evaluere og predikere – alle bevegelsene til en dataforsker og mer, etter hvert som du utvikler deg til å bli en 'full stack' ML-ingeniør. --- ## 🚀Utfordring -Lag et flytskjema som reflekterer stegene til en ML-praktiker. Hvor ser du deg selv akkurat nå i prosessen? Hvor tror du at du vil møte vanskeligheter? Hva virker enkelt for deg? +Lag et flytskjema som gjenspeiler trinnene til en ML-utøver. Hvor ser du deg selv akkurat nå i prosessen? Hvor tror du du vil møte vanskeligheter? Hva virker lett for deg? -## [Quiz etter leksjonen](https://ff-quizzes.netlify.app/en/ml/) +## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Gjennomgang og selvstudium +## Gjennomgang & Selvstudium -Søk på nettet etter intervjuer med dataforskere som diskuterer sitt daglige arbeid. Her er [et](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Søk på nettet etter intervjuer med dataforskere som diskuterer deres daglige arbeid. Her er [et](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Oppgave @@ -119,5 +119,7 @@ Søk på nettet etter intervjuer med dataforskere som diskuterer sitt daglige ar --- + **Ansvarsfraskrivelse**: -Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. \ No newline at end of file +Dette dokumentet er oversatt ved hjelp av AI-oversettingstjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på dets opprinnelige språk skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. + \ No newline at end of file diff --git a/translations/no/2-Regression/3-Linear/README.md b/translations/no/2-Regression/3-Linear/README.md index c239dbb0b5..8de8ba6f2d 100644 --- a/translations/no/2-Regression/3-Linear/README.md +++ b/translations/no/2-Regression/3-Linear/README.md @@ -1,114 +1,113 @@ -# Bygg en regresjonsmodell med Scikit-learn: regresjon på fire måter +# Lag en regresjonsmodell med Scikit-learn: regresjon på fire måter ## Nybegynnermerknad -Lineær regresjon brukes når vi ønsker å forutsi en **numerisk verdi** (for eksempel boligpris, temperatur eller salg). -Den fungerer ved å finne en rett linje som best representerer forholdet mellom inngangsfunksjonene og utgangen. +Lineær regresjon brukes når vi ønsker å forutsi en **numerisk verdi** (for eksempel huspris, temperatur eller salg). +Den fungerer ved å finne en rett linje som best representerer forholdet mellom inngangsfunksjoner og utdata. I denne leksjonen fokuserer vi på å forstå konseptet før vi utforsker mer avanserte regresjonsteknikker. -![Infografikk lineær vs polynomisk regresjon](../../../../translated_images/no/linear-polynomial.5523c7cb6576ccab.webp) +![Linear vs polynomial regression infographic](../../../../translated_images/no/linear-polynomial.5523c7cb6576ccab.webp) > Infografikk av [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Pre-forelesningsquiz](https://ff-quizzes.netlify.app/en/ml/) +## [For-forelesningsquiz](https://ff-quizzes.netlify.app/en/ml/) > ### [Denne leksjonen er tilgjengelig på R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Introduksjon -Så langt har du utforsket hva regresjon er med eksempeldatahentet fra gresskarprisingsdatasettet som vi skal bruke gjennom denne leksjonen. Du har også visualisert det ved hjelp av Matplotlib. +Så langt har du utforsket hva regresjon er med eksemplardata hentet fra gresskarprisdataene som vi skal bruke gjennom denne leksjonen. Du har også visualisert det ved hjelp av Matplotlib. -Nå er du klar til å gå dypere inn i regresjon for ML. Mens visualisering hjelper deg med å forstå data, kommer den virkelige styrken i maskinlæring fra _trening av modeller_. Modeller trenes på historiske data for automatisk å fange dataavhengigheter, og de lar deg forutsi utfall for nye data som modellen ikke har sett før. +Nå er du klar til å fordype deg mer i regresjon for maskinlæring. Mens visualisering gjør at du kan forstå data, kommer den virkelige kraften i maskinlæring fra _trening av modeller_. Modeller trenes på historiske data for automatisk å fange avhengigheter i dataene, og de lar deg forutsi utfall for nye data, som modellen ikke har sett tidligere. -I denne leksjonen vil du lære mer om to typer regresjon: _grunnleggende lineær regresjon_ og _polynomisk regresjon_, sammen med noe av matematikken som ligger til grunn for disse teknikkene. Disse modellene vil tillate oss å forutsi gresskarpriser avhengig av ulike inngangsdata. +I denne leksjonen vil du lære mer om to typer regresjon: _grunnleggende lineær regresjon_ og _polynomregresjon_, sammen med noe av matematikken som ligger bak disse teknikkene. Disse modellene vil tillate oss å forutsi gresskarpriser avhengig av ulike inngangsdata. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") > 🎥 Klikk på bildet over for en kort videooversikt over lineær regresjon. -> Gjennom denne lærestien antar vi minimal matematikkunnskap, og søker å gjøre den tilgjengelig for studenter fra andre fagfelt, så se etter notater, 🧮 markeringer, diagrammer og andre læringsverktøy for å lette forståelsen. +> Gjennom hele dette pensumet antar vi minimal kunnskap om matematikk, og søker å gjøre det tilgjengelig for studenter fra andre fagfelt, så følg med på notater, 🧮 framhevinger, diagrammer og andre læringsverktøy for å hjelpe forståelsen. ### Forutsetning -Du bør nå være kjent med strukturen til gresskardataene vi undersøker. Du finner dem ferdig lastet og forhåndsrenset i denne leksjonens _notebook.ipynb_-fil. I filen vises gresskarprisen per bushel i en ny datastruktur. Sørg for at du kan kjøre disse notatbøkene i miljøer i Visual Studio Code. +Du bør nå være kjent med strukturen til gresskardataene vi undersøker. Du finner dem forhåndslastet og forhåndsrenset i denne leksjonens _notebook.ipynb_-fil. I filen vises gresskarprisen per bushel i en ny data frame. Sørg for at du kan kjøre disse notebookene i kjerner i Visual Studio Code. ### Forberedelse -Som en påminnelse lastes disse dataene inn for at du skal kunne stille spørsmål til dem. +Som en påminnelse laster du inn disse dataene for å kunne stille spørsmål til dem. - Når er det beste tidspunktet å kjøpe gresskar? -- Hvilken pris kan jeg forvente for en kasse med miniatyrgresskar? -- Bør jeg kjøpe dem i halvbusselkurver, eller i 1 1/9 bushel-esker? +- Hvilken pris kan jeg forvente for en kasse med minigresskar? +- Bør jeg kjøpe dem i halvbushenskurver eller i 1 1/9-bushel-kasser? La oss grave videre i disse dataene. -I forrige leksjon opprettet du en Pandas-dataramme og fylte den med deler av det originale datasettet, og standardiserte prisene per bushel. Ved å gjøre det fikk du imidlertid bare omtrent 400 datapunkter og kun for høstmånedene. +I forrige leksjon laget du en Pandas data frame og fylte den med deler av det originale datasettet, og standardiserte prisene etter bushel. Ved å gjøre det, samlet du imidlertid bare inn omtrent 400 datapunkter og bare for høstmånedene. -Ta en titt på dataene vi har lastet inn i denne leksjonens medfølgende notatbok. Dataene er forhåndslastet, og det lages et første spredningsdiagram for å vise månedens data. Kanskje vi kan få litt mer detalj rundt datanaturen ved å rense det mer. +Ta en titt på dataene vi har forhåndslastet i denne leksjonens tilhørende notebook. Dataene er forhåndslastet og en innledende spredningsgraf er tegnet for å vise månedsdata. Kanskje vi kan få mer detaljert innsikt i dataenes natur ved å rense det mer. ## En lineær regresjonslinje -Som du lærte i leksjon 1, er målet med en lineær regresjonsøvelse å kunne plotte en linje for å: +Som du lærte i leksjon 1, er målet med en lineær regresjonsøvelse å kunne tegne en linje som: -- **Vise variabelrelasjoner**. Vise forholdet mellom variabler -- **Lage spådommer**. Lage nøyaktige spådommer om hvor et nytt datapunkt vil falle i forhold til den linjen. - -Det er typisk med **Minimum kvadraters regresjon** å tegne denne typen linje. Begrepet "Minimum kvadraters" refererer til prosessen med å minimere den totale feilen i modellen vår. For hvert datapunkt måler vi den vertikale avstanden (kalt residual) mellom det faktiske punktet og vår regresjonslinje. +- **Viser variabelrelasjoner**. Viser forholdet mellom variabler +- **Gjøre spådommer**. Lage nøyaktige spådommer om hvor et nytt datapunkt vil falle i forhold til den linjen. -Vi kvadrerer disse avstandene av to hovedgrunner: +Det er typisk for **minste kvadraters regresjon** å tegne denne typen linje. Begrepet "Minste kvadraters" refererer til prosessen med å minimere den totale feilen i modellen vår. For hvert datapunkt måler vi den vertikale distansen (kalt en residual) mellom det faktiske punktet og vår regresjonslinje. + +Vi kvadrerer disse distansene av to hovedårsaker: 1. **Størrelse over retning:** Vi ønsker å behandle en feil på -5 likt som en feil på +5. Kvadrering gjør alle verdier positive. 2. **Straffe uteliggere:** Kvadrering gir større vekt til større feil, og tvinger linjen til å holde seg nærmere punkter som er langt unna. -Vi legger deretter sammen alle disse kvadrerte verdiene. Målet vårt er å finne den spesifikke linjen der denne endelige summen er minst (den minste mulige verdien)—derav navnet "Minimum kvadraters". +Vi legger så sammen alle disse kvadrerte verdiene. Målet vårt er å finne den spesifikke linjen hvor denne endelige summen er minst mulig (den minste mulige verdien) — derav navnet "Minste kvadraters". > **🧮 Vis meg matematikken** > -> Denne linjen, kalt _beste tilpassede linje_, kan uttrykkes ved [en ligning](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Denne linjen, kalt _beste tilpasningslinje_, kan uttrykkes med [en ligning](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` er 'den forklarende variabelen'. `Y` er 'den avhengige variabelen'. Helningen til linjen er `b` og `a` er y-aksens skjæringspunkt, som refererer til verdien av `Y` når `X = 0`. +> `X` er 'forklaringsvariabelen'. `Y` er 'avhengig variabel'. Stigningstallet til linjen er `b` og `a` er y-aksens skjæringspunkt, som viser verdien av `Y` når `X = 0`. > ->![beregn helningen](../../../../translated_images/no/slope.f3c9d5910ddbfcf9.webp) +>![beregn stigningstallet](../../../../translated_images/no/slope.f3c9d5910ddbfcf9.webp) > -> Først beregner vi helningen `b`. Infografikk av [Jen Looper](https://twitter.com/jenlooper) +> Først beregner man stigningstallet `b`. Infografikk av [Jen Looper](https://twitter.com/jenlooper) > -> Med andre ord, og med referanse til vår originale gresskardataspørsmål: "forutsi prisen på et gresskar per bushel etter måned", ville `X` referere til prisen og `Y` til salgs måneden. +> Med andre ord, og med henvisning til det opprinnelige spørsmålet om gresskardataene: "forutsi prisen på et gresskar per bushel per måned", vil `X` referere til prisen og `Y` vil referere til salgsmåneden. > >![fullfør ligningen](../../../../translated_images/no/calculation.a209813050a1ddb1.webp) > > Beregn verdien av Y. Hvis du betaler rundt $4, må det være april! Infografikk av [Jen Looper](https://twitter.com/jenlooper) > -> Matematikken som beregner linjen må vise helningen til linjen, som også avhenger av skjæringspunktet, altså hvor `Y` befinner seg når `X = 0`. +> Matematikk som beregner linjen, må vise stigningstallet, som også er avhengig av skjæringspunktet, eller hvor `Y` er når `X = 0`. > -> Du kan se metoden for beregning av disse verdiene på [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) sin nettside. Besøk også [denne Minimum kvadraters kalkulatoren](https://www.mathsisfun.com/data/least-squares-calculator.html) for å se hvordan tallverdiene påvirker linjen. +> Du kan observere metoden for beregning av disse verdiene på nettsiden [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Besøk også [denne minste kvadraters-kalkulatoren](https://www.mathsisfun.com/data/least-squares-calculator.html) for å se hvordan tallverdier påvirker linjen. ## Korrelasjon -Et siste begrep å forstå er **Korrelasjonskoeffisienten** mellom gitte X- og Y-variabler. Ved bruk av et spredningsdiagram kan du raskt visualisere denne koeffisienten. Et plot med datapunkter spredt langs en fin linje har høy korrelasjon, mens et plot med datapunkter spredt overalt mellom X og Y har lav korrelasjon. +Et annet begrep å forstå er **korrelasjonskoeffisienten** mellom gitte X- og Y-variabler. Ved hjelp av et spredningsdiagram kan du raskt visualisere denne koeffisienten. Et plott hvor datapunktene er spredt langs en ryddig linje har høy korrelasjon, men et plott hvor datapunktene er spredt overalt mellom X og Y har lav korrelasjon. -En god lineær regresjonsmodell vil være en som har høy (nærmere 1 enn 0) korrelasjonskoeffisient ved bruk av Minimum kvadraters regresjonsmetode med en regresjonslinje. +En god lineær regresjonsmodell vil ha en høy (nærmere 1 enn 0) korrelasjonskoeffisient ved bruk av minste kvadraters regresjonsmetode med en regresjonslinje. -✅ Kjør notatboken som følger denne leksjonen og se på spredningsdiagrammet mellom måned og pris. Ser dataene som assosierer måned til pris for gresskarsalg ut til å ha høy eller lav korrelasjon, i henhold til din visuelle tolkning av spredningsplottet? Endrer det seg om du bruker en mer finmasket måling i stedet for `Month`, f.eks. *dag på året* (altså antall dager siden starten på året)? +✅ Kjør notebooken som følger denne leksjonen og se på spredningsdiagrammet for måned mot pris. Virker dataene som assosierer måned og pris for gresskarsalg som om de har høy eller lav korrelasjon, ifølge din visuelle tolkning av spredningsdiagrammet? Endres dette hvis du bruker en mer granulær måling i stedet for `Month`, f.eks. *dag i året* (dvs. antall dager siden begynnelsen av året)? -I koden nedenfor antar vi at vi har renset dataene, og fått en dataramme kalt `new_pumpkins`, som ligner på følgende: +I koden nedenfor vil vi anta at vi har ryddet dataene, og fått en data frame kalt `new_pumpkins`, lik følgende: -ID | Måned | DagPåÅret | Variasjon | By | Pakke | Lav Pris | Høy Pris | Pris ----|-------|-----------|-----------|----|-------|----------|----------|----- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel kartonger | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel kartonger | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel kartonger | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel kartonger | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel kartonger | 15.0 | 15.0 | 13.636364 +ID | Måned | dagIÅret | Variant | By | Pakke | Lav pris | Høy pris | Pris +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kartong | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kartong | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kartong | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kartong | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kartong | 15.0 | 15.0 | 13.636364 -> Koden for å rense dataene er tilgjengelig i [`notebook.ipynb`](notebook.ipynb). Vi har utført de samme rensetrinnene som i forrige leksjon, og har beregnet `DayOfYear`-kolonnen med følgende uttrykk: +> Koden for å rense dataene er tilgjengelig i [`notebook.ipynb`](notebook.ipynb). Vi har utført de samme rengjøringsstegene som i forrige leksjon, og har beregnet kolonnen `DayOfYear` med følgende uttrykk: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Nå som du har forstått matematikken bak lineær regresjon, la oss lage en regresjonsmodell for å se om vi kan forutsi hvilken pakke gresskar som vil ha de beste prisene. Noen som kjøper gresskar til en høytidssesong kanskje vil ha denne informasjonen for å kunne optimalisere sine gresskarpakkeinnkjøp til sesongen. +Nå som du har forståelse av matematikken bak lineær regresjon, la oss lage en regresjonsmodell for å se om vi kan forutsi hvilken pakke med gresskar som vil ha de beste prisene. Noen som kjøper gresskar til en gresskarutstilling til høytiden, kan ønske denne informasjonen for å kunne optimalisere kjøp av gresskarpakker til utstillingen. ## På jakt etter korrelasjon @@ -116,23 +115,22 @@ Nå som du har forstått matematikken bak lineær regresjon, la oss lage en regr > 🎥 Klikk på bildet over for en kort videooversikt over korrelasjon. -Fra forrige leksjon har du sannsynligvis sett at gjennomsnittsprisen for ulike måneder ser slik ut: +Fra forrige leksjon har du sannsynligvis sett at gjennomsnittsprisen for forskjellige måneder ser slik ut: -Gjennomsnittspris per måned +Average price by month -Dette antyder at det bør finnes en viss korrelasjon, og vi kan prøve å trene en lineær regresjonsmodell for å forutsi forholdet mellom `Month` og `Price`, eller mellom `DayOfYear` og `Price`. Her er spredningsdiagrammet som viser sistnevnte forhold: +Dette antyder at det bør være noe korrelasjon, og vi kan prøve å trene en lineær regresjonsmodell for å forutsi forholdet mellom `Month` og `Price`, eller mellom `DayOfYear` og `Price`. Her er et spredningsdiagram som viser det siste forholdet: -Spredningsdiagram av pris vs. dag på året +Scatter plot of Price vs. Day of Year -La oss se om det er korrelasjon ved å bruke `corr`-funksjonen: +La oss se om det er korrelasjon med funksjonen `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Det ser ut som korrelasjonen er ganske liten, -0.15 for `Month` og -0.17 for `DayOfMonth`, men det kan finnes en annen viktig sammenheng. Det ser ut til å være forskjellige klynger av priser som tilsvarer ulike gresskartyper. For å bekrefte denne hypotesen, la oss plotte hver gresskarkategori med forskjellig farge. Ved å sende med `ax`-parameteren til `scatter` plottefunksjonen kan vi plotte alle punktene i samme graf: +Det ser ut til at korrelasjonen er ganske liten, -0,15 for `Month` og -0,17 for `DayOfYear`, men det kan være et annet viktig forhold. Det ser ut som det finnes forskjellige klynger av priser som tilsvarer ulike gresskarvarianter. For å bekrefte denne hypotesen, la oss plotte hver gresskarkategori med ulik farge. Ved å sende en `ax`-parameter til `scatter`-plottefunksjonen kan vi plotte alle punkter på samme graf: ```python ax=None @@ -142,43 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Spredningsdiagram av pris vs. dag på året med farge +Scatter plot of Price vs. Day of Year -Vår undersøkelse antyder at variasjon har større effekt på den totale prisen enn selve salgsdatoen. Vi kan se dette med et stolpediagram: +Undersøkelsen vår antyder at variant har mer effekt på totalprisen enn den faktiske salgstidspunktet. Vi kan se dette med et stolpediagram: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Stolpediagram av pris vs variasjon +Bar graph of price vs variety -La oss fokusere for øyeblikket kun på én gresskartype, 'pie type', og se hvilken effekt datoen har på prisen: +La oss fokusere et øyeblikk kun på én gresskarvariant, 'pie type', og se hvilken effekt datoen har på pris: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Spredningsdiagram av pris vs. dag på året for pie pumpkins +Scatter plot of Price vs. Day of Year -Hvis vi nå beregner korrelasjonen mellom `Price` og `DayOfYear` ved bruk av `corr`-funksjonen, får vi omtrent `-0.27` – noe som betyr at det gir mening å trene en prediksjonsmodell. +Hvis vi nå beregner korrelasjonen mellom `Price` og `DayOfYear` med funksjonen `corr`, vil vi få noe rundt `-0,27` — som betyr at det gir mening å trene en prediksjonsmodell. -> Før du trener en lineær regresjonsmodell, er det viktig å sørge for at dataene våre er rene. Lineær regresjon fungerer ikke godt med manglende verdier, så det er lurt å kvitte seg med tomme celler: +> Før vi trener en lineær regresjonsmodell, er det viktig å sikre at dataene våre er rene. Lineær regresjon fungerer ikke godt med manglende verdier, derfor gir det mening å kvitte seg med alle tomme celler: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -En annen tilnærming kan være å fylle disse tomme verdiene med gjennomsnittsverdier fra den tilsvarende kolonnen. +En annen tilnærming er å fylle disse tomme verdiene med gjennomsnittsverdier fra tilsvarende kolonne. ## Enkel lineær regresjon [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Klikk på bildet over for en kort videooversikt over lineær og polynomisk regresjon. +> 🎥 Klikk på bildet over for en kort videooversikt over lineær- og polynomregresjon. -For å trene vår lineære regresjonsmodell, bruker vi **Scikit-learn** biblioteket. +For å trene vår lineære regresjonsmodell vil vi bruke **Scikit-learn**-biblioteket. ```python from sklearn.linear_model import LinearRegression @@ -186,34 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Vi begynner med å separere inngangsverdiene (funksjoner) og forventet utgang (etikett) i separate numpy-arrays: +Vi starter med å skille inngangsverdier (egenskaper) og forventet utdata (etikett) i separate numpy-arrays: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` +> Merk at vi måtte bruke `reshape` på inngangsdataene for at lineær regresjonspakken skulle forstå det riktig. Lineær regresjon forventer et 2D-array som input, hvor hver rad i arrayet tilsvarer en vektor med inndata-egenskaper. I vårt tilfelle, siden vi bare har én input, trenger vi et array med form N×1, hvor N er datasettets størrelse. -> Merk at vi måtte utføre `reshape` på inngangsdataene for at Linear Regression-pakken skulle forstå dem riktig. Lineær regresjon forventer et 2D-array som input, hvor hver rad i arrayet tilsvarer en vektor av inngangsfunksjoner. I vårt tilfelle, siden vi bare har én inngang, trenger vi et array med form N×1, hvor N er dataset-størrelsen. - -Deretter må vi dele dataene i trenings- og testdatasett, slik at vi kan validere modellen vår etter trening: +Deretter må vi dele opp dataene i trenings- og testsett, slik at vi kan validere modellen etter trening: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Til slutt tar det bare to linjer med kode å trene den faktiske lineære regresjonsmodellen. Vi definerer `LinearRegression`-objektet, og passer det til dataene våre ved hjelp av `fit`-metoden: +Til slutt tar det bare to linjer å trene den faktiske lineære regresjonsmodellen. Vi definerer `LinearRegression`-objektet, og passer det på dataene våre med metoden `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression`-objektet etter at vi har "fit"-tet det inneholder alle koeffisientene til regresjonen, som kan aksesseres ved hjelp av `.coef_`-egenskapen. I vårt tilfelle er det bare én koeffisient, som skal være rundt `-0.017`. Det betyr at prisene ser ut til å synke litt med tiden, men ikke for mye, omtrent 2 cent per dag. Vi kan også aksessere skjæringspunktet for regresjonen med Y-aksen ved å bruke `lin_reg.intercept_` - det vil være rundt `21` i vårt tilfelle, noe som indikerer prisen i begynnelsen av året. +Objektet `LinearRegression` etter å ha blitt tilpasset inneholder alle koeffisientene til regresjonen, som kan nås gjennom `.coef_`-egenskapen. I vårt tilfelle er det bare én koeffisient, som bør være rundt `-0.017`. Det betyr at prisene ser ut til å synke litt med tiden, men ikke for mye, rundt 2 cent per dag. Vi kan også få tilgang til skjæringspunktet til regresjonen med Y-aksen ved å bruke `lin_reg.intercept_` - det vil være rundt `21` i vårt tilfelle, noe som indikerer prisen i begynnelsen av året. -For å se hvor nøyaktig modellen vår er, kan vi forutsi priser på en testdatasett, og deretter måle hvor nær våre prediksjoner er de forventede verdiene. Dette kan gjøres ved hjelp av rotmiddelkvadratfeil (RMSE) metrikk, som er roten av gjennomsnittet av alle kvadrerte forskjeller mellom forventet og forutsagt verdi. +For å se hvor nøyaktig modellen vår er, kan vi forutsi priser på et testdatasett, og deretter måle hvor nær våre prediksjoner er til forventede verdier. Dette kan gjøres ved hjelp av roten av gjennomsnittet av kvadrerte feil (RMSE), som er roten av gjennomsnittet av alle kvadrerte forskjeller mellom forventet og forutsagt verdi. ```python pred = lin_reg.predict(X_test) @@ -222,15 +216,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Feilen vår ser ut til å være rundt 2 poeng, som er ~17%. Ikke så bra. En annen indikator på modellkvalitet er **bestemmelseskoeffisienten**, som kan oppnås slik: +Feilen vår ser ut til å være rundt 2 poeng, noe som er ~17 %. Ikke så bra. En annen indikator på modellkvalitet er **determinajon koeffisienten**, som kan oppnås slik: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Hvis verdien er 0, betyr det at modellen ikke tar hensyn til inngangsdata, og oppfører seg som den *verste lineære prediktoren*, som rett og slett er et gjennomsnitt av resultatet. Verdien 1 betyr at vi kan perfekt forutsi alle forventede utganger. I vårt tilfelle er koeffisienten rundt 0.06, som er ganske lavt. -Vi kan også plotte testdata sammen med regresjonslinjen for bedre å se hvordan regresjonen fungerer i vårt tilfelle: +Hvis verdien er 0, betyr det at modellen ikke tar hensyn til inndataene, og fungerer som den *verst mulige lineære prediktoren*, som enkelt er gjennomsnittsverdien av resultatet. En verdi på 1 betyr at vi kan perfekt forutsi alle forventede utganger. I vårt tilfelle er koeffisienten rundt 0,06, noe som er ganske lavt. + +Vi kan også plotte testdata sammen med regresjonslinjen for å bedre se hvordan regresjonen fungerer i vårt tilfelle: ```python plt.scatter(X_test,y_test) @@ -239,19 +234,19 @@ plt.plot(X_test,pred) Linear regression -## Polynomregresjon +## Polynomisk regresjon -En annen type lineær regresjon er polynomregresjon. Selv om det noen ganger er et lineært forhold mellom variabler - jo større gresskaret er i volum, desto høyere pris - kan disse forholdene noen ganger ikke plottes som et plan eller en rett linje. +En annen type lineær regresjon er polynomisk regresjon. Selv om det noen ganger eksisterer et lineært forhold mellom variabler - jo større gresskaret er i volum, jo høyere pris - kan det noen ganger hende at disse forholdene ikke kan plottes som et plan eller en rett linje. -✅ Her er [noen flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan bruke polynomregresjon. +✅ Her er [noen flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan bruke polynomisk regresjon -Ta en ny titt på forholdet mellom dato og pris. Virker dette spredningsplottet som det nødvendigvis bør analyseres med en rett linje? Kan ikke prisene fluktuere? I så fall kan du prøve polynomregresjon. +Ta en titt på forholdet mellom Dato og Pris igjen. Virker det som om denne spredningsdiagrammet nødvendigvis bør analyseres med en rett linje? Kan ikke priser variere? I dette tilfellet kan du prøve polynomisk regresjon. -✅ Polynomuttrykk er matematiske uttrykk som kan bestå av én eller flere variabler og koeffisienter. +✅ Polynom er matematiske uttrykk som kan bestå av ett eller flere variabler og koeffisienter -Polynomregresjon lager en buet linje for bedre å tilpasse ikke-lineære data. I vårt tilfelle, hvis vi inkluderer en kvadratert `DayOfYear`-variabel i inputdataene, bør vi kunne tilpasse dataene våre med en parabolsk kurve som har et minimum på et bestemt punkt i løpet av året. +Polynomisk regresjon lager en kurvet linje for bedre å tilpasse ikke-lineære data. I vårt tilfelle, hvis vi inkluderer en kvadratisk `DayOfYear`-variabel i inndataene, bør vi kunne tilpasse dataene våre med en parabolsk kurve, som vil ha et minimum på et visst punkt i løpet av året. -Scikit-learn inkluderer en nyttig [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) for å kombinere forskjellige steg i databehandlingen. En **pipeline** er en kjede av **estimatorer**. I vårt tilfelle lager vi en pipeline som først legger til polynomfunksjoner i modellen, og deretter trener regresjonen: +Scikit-learn inkluderer en hjelpsom [pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) for å kombinere forskjellige trinn i databehandlingen. En **pipeline** er en kjede av **estimators**. I vårt tilfelle vil vi lage en pipeline som først legger til polynomiske trekk ved modellen vår, og så trener regresjonen: ```python from sklearn.preprocessing import PolynomialFeatures @@ -262,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Å bruke `PolynomialFeatures(2)` betyr at vi vil inkludere alle polynomer av andre grad fra inputdataene. I vårt tilfelle betyr det bare `DayOfYear`2, men gitt to inputvariabler X og Y, vil dette legge til X2, XY og Y2. Vi kan også bruke polynomer av høyere grad om vi ønsker. +Bruk av `PolynomialFeatures(2)` betyr at vi vil inkludere alle polynomer av andre grad fra inndataene. I vårt tilfelle vil det bare bety `DayOfYear`2, men gitt to inndatavariabler X og Y, vil dette legge til X2, XY og Y2. Vi kan også bruke polynomer av høyere grad hvis vi ønsker det. + +Pipelines kan brukes på samme måte som det opprinnelige `LinearRegression`-objektet, dvs. vi kan `fit`e pipeline, og deretter bruke `predict` for å få prediksjonsresultater: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +For å plotte den glatte tilnærmingskurven, bruker vi `np.linspace` for å lage et jevnt intervall av inputverdier, i stedet for å plotte direkte på de uordnede testdataene (som ville produsere en sikksakk-linje): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelines kan brukes på samme måte som det originale `LinearRegression`-objektet, altså kan vi `fit` pipe-linen, og deretter bruke `predict` for å få prediksjonsresultatene. Her er grafen som viser testdataene og tilnærmingskurven: +Her er grafen som viser testdataene og tilnærmingskurven: Polynomial regression -Ved å bruke polynomregresjon kan vi få litt lavere MSE og høyere bestemmelseskoeffisient, men ikke signifikant. Vi må ta hensyn til andre funksjoner! +Ved å bruke polynomisk regresjon kan vi få litt lavere RMSE og høyere determinajon, men ikke betydelig. Vi må ta hensyn til andre trekk! -> Du kan se at de minimale gresskarprisene observeres en plass rundt Halloween. Hvordan kan du forklare dette? +> Du kan se at de laveste prisene på gresskar observeres en gang rundt Halloween. Hvordan kan du forklare dette? -🎃 Gratulerer, du har nettopp laget en modell som kan hjelpe med å forutsi prisen på paigresskar. Du kan sannsynligvis gjenta den samme prosedyren for alle gresskartypene, men det ville være tidkrevende. La oss nå lære hvordan vi tar hensyn til gresskarvarianter i modellen vår! +🎃 Gratulerer, du har nettopp laget en modell som kan hjelpe med å forutsi prisene på pai-gresskar. Du kan sannsynligvis gjenta den samme prosedyren for alle gresskartyper, men det ville være kjedelig. La oss nå lære hvordan vi tar hensyn til gresskarsort i modellen vår! -## Kategoriske funksjoner +## Kategoriske trekk -I den ideelle verden ønsker vi å kunne forutsi priser for forskjellige gresskarvarianter ved hjelp av samme modell. Men `Variety`-kolonnen er noe annerledes enn kolonner som `Month`, fordi den inneholder ikke-numeriske verdier. Slike kolonner kalles **kategoriske**. +I en ideell verden ønsker vi å kunne forutsi priser for forskjellige gresskarsorter ved hjelp av den samme modellen. Men kolonnen `Variety` er noe annerledes enn kolonner som `Month`, fordi den inneholder ikke-numeriske verdier. Slike kolonner kalles **kategoriske**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Klikk bildet over for en kort videooversikt over bruk av kategoriske funksjoner. +> 🎥 Klikk på bildet ovenfor for en kort videooversikt om bruk av kategoriske trekk. -Her kan du se hvordan gjennomsnittsprisen avhenger av variant: +Her kan du se hvordan gjennomsnittsprisen avhenger av sort: Average price by variety -For å ta hensyn til variant må vi først konvertere den til numerisk form, eller **kode** den. Det finnes flere måter vi kan gjøre dette på: +For å ta hensyn til sort, må vi først konvertere den til numerisk form, eller **enkode** den. Det finnes flere måter å gjøre dette på: -* Enkel **nummerisk koding** vil bygge en tabell over ulike varianter, og deretter erstatte variantnavnet med en indeks i denne tabellen. Dette er ikke det beste for lineær regresjon, fordi lineær regresjon tar den faktiske numeriske verdien av indeksen og legger den til resultatet, multiplisert med en koeffisient. I vårt tilfelle er forholdet mellom indeksnummer og pris tydelig ikke-lineært, selv om vi sørger for at indeksene er ordnet på en bestemt måte. -* **One-hot-koding** vil erstatte `Variety`-kolonnen med 4 ulike kolonner, én for hver variant. Hver kolonne vil inneholde `1` hvis den tilsvarende raden er av en gitt variant, og `0` ellers. Dette betyr at det vil være fire koeffisienter i lineær regresjon, én for hver gresskarvariant, som er ansvarlige for "startpris" (eller heller "tilleggpris") for akkurat den varianten. +* Enkel **numerisk koding** lager en tabell over de forskjellige sortene, og erstatter sortnavnet med et indeksnummer i tabellen. Dette er ikke den beste ideen for lineær regresjon, fordi lineær regresjon tar den faktiske numeriske verdien til indeksen, og legger det til resultatet, multiplisert med en koeffisient. I vårt tilfelle er forholdet mellom indeksnummer og pris tydelig ikke-lineært, selv om vi sørger for at indeksene er ordnet på en bestemt måte. +* **One-hot koding** erstatter `Variety`-kolonnen med 4 forskjellige kolonner, en for hver sort. Hver kolonne vil inneholde `1` hvis raden tilsvarer en gitt sort, og `0` ellers. Dette betyr at det vil være fire koeffisienter i lineær regresjon, en for hver gresskarsort, som er ansvarlig for "startpris" (eller heller "tilleggpris") for den aktuelle sorten. -Koden nedenfor viser hvordan vi kan one-hot kode en variant: +Koden nedenfor viser hvordan vi kan one-hot kode en sort: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -308,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -For å trene lineær regresjon med one-hot-kodet variant som input, trenger vi bare å initialisere `X` og `y` data riktig: +For å trene lineær regresjon ved bruk av one-hot kodet sort som input må vi bare initialisere `X` og `y` dataene riktig: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Resten av koden er den samme som vi brukte overfor for å trene Linear Regression. Hvis du prøver det, vil du se at middel kvadratfeil er omtrent den samme, men vi får mye høyere bestemmelseskoeffisient (~77%). For å få enda mer nøyaktige prediksjoner kan vi ta med flere kategoriske funksjoner, samt numeriske funksjoner som `Month` eller `DayOfYear`. For å få en stor tabell med alle funksjoner kan vi bruke `join`: +Resten av koden er den samme som vi brukte ovenfor for å trene lineær regresjon. Hvis du prøver det, vil du se at middelkvadrert feil er omtrent det samme, men vi får mye høyere determinajonskoeffisient (~77%). For å få enda mer nøyaktige prediksjoner, kan vi ta flere kategoriske trekk i betraktning, samt numeriske trekk, som `Month` eller `DayOfYear`. For å få en stor array med alle trekk, kan vi bruke `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -325,60 +342,60 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Her tar vi også hensyn til `City` og `Package` type, som gir oss MSE 2.84 (10%), og bestemmelse 0.94! +Her tar vi også hensyn til `City` og `Package` type, noe som gir oss RMSE 2,84 (10,5 %) og determinajon 0,94! -## Å sette det hele sammen +## Alt samlet -For å lage den beste modellen kan vi bruke kombinert (one-hot kodet kategorisk + numerisk) data fra eksempelet ovenfor sammen med polynomregresjon. Her er den komplette koden for din bekvemmelighet: +For å lage den beste modellen kan vi bruke kombinert (one-hot kodede kategoriske + numeriske) data fra eksempelet over sammen med polynomisk regresjon. Her er hele koden for din bekvemmelighet: ```python -# Sett opp treningsdata +# sett opp treningsdata X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# Lag trenings- og testdeling +# lag trenings- og testdel X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# Sett opp og tren pipelinen +# sett opp og tren pipelinen pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# Forutsi resultater for testdata +# forutsi resultater for testdata pred = pipeline.predict(X_test) -# Beregn MSE og bestemthet -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# beregn RMSE og forklaringsgrad +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Dette skal gi oss den beste bestemmelseskoeffisienten på nesten 97%, og MSE=2.23 (~8% prediksjonsfeil). +Dette bør gi oss den beste determinajonskoeffisienten på nesten 97 %, og RMSE=2,23 (~8 % prediksjonsfeil). -| Modell | MSE | Bestemmelse | +| Modell | RMSE | Determinasjon | |-------|-----|---------------| -| `DayOfYear` Lineær | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynom | 2.73 (17.0%) | 0.08 | -| `Variety` Lineær | 5.24 (19.7%) | 0.77 | -| Alle funksjoner Lineær | 2.84 (10.5%) | 0.94 | -| Alle funksjoner Polynom | 2.23 (8.25%) | 0.97 | +| `DayOfYear` Lineær | 2,77 (17,2 %) | 0,07 | +| `DayOfYear` Polynom | 2,73 (17,0 %) | 0,08 | +| `Variety` Lineær | 5,24 (19,7 %) | 0,77 | +| Alle trekk Lineær | 2,84 (10,5 %) | 0,94 | +| Alle trekk Polynom | 2,23 (8,25 %) | 0,97 | -🏆 Bra jobbet! Du har laget fire regresjonsmodeller i én lekse, og forbedret modellkvaliteten til 97%. I den siste delen om regresjon vil du lære om logistisk regresjon for kategoribestemmelse. +🏆 Bra jobbet! Du har laget fire regresjonsmodeller i én leksjon, og forbedret modellkvaliteten til 97 %. I det siste avsnittet om regresjon vil du lære om logistisk regresjon for å bestemme kategorier. --- ## 🚀Utfordring -Test flere forskjellige variabler i denne notatboken for å se hvordan korrelasjon stemmer med modellnøyaktighet. +Test flere forskjellige variabler i denne notatboken for å se hvordan korrelasjon tilsvarer modellens nøyaktighet. ## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/) -## Gjennomgang & Selvstudium +## Gjennomgang og egenstudium -I denne leksjonen lærte vi om lineær regresjon. Det finnes andre viktige typer regresjon. Les om Stepwise, Ridge, Lasso og Elasticnet teknikker. Et godt kurs å studere for å lære mer er [Stanford Statistical Learning-kurset](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +I denne leksjonen lærte vi om lineær regresjon. Det finnes andre viktige regresjonstyper. Les om Stepwise, Ridge, Lasso og Elasticnet teknikker. Et godt kurs å studere for å lære mer er [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Oppgave @@ -388,5 +405,5 @@ I denne leksjonen lærte vi om lineær regresjon. Det finnes andre viktige typer **Ansvarsfraskrivelse**: -Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på originalsproget bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. +Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på dets opprinnelige språk skal anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen. \ No newline at end of file diff --git a/translations/no/2-Regression/3-Linear/solution/notebook.ipynb b/translations/no/2-Regression/3-Linear/solution/notebook.ipynb index cf0db78a31..2ff8cb4b96 100644 --- a/translations/no/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/no/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineær og polynomisk regresjon for prissetting av gresskar - Leksjon 3\n", + "## Lineær og polynomisk regresjon for gresskarpriser - Leksjon 3\n", "\n", - "Last inn nødvendige biblioteker og datasett. Konverter dataene til en dataframe som inneholder et utvalg av dataene:\n", + "Last inn nødvendige biblioteker og datasett. Konverter dataene til en dataframe som inneholder et delsett av dataene:\n", "\n", - "- Hent kun gresskar som er priset per skjeppe\n", + "- Hent kun gresskar priset per bushel\n", "- Konverter datoen til en måned\n", - "- Beregn prisen som et gjennomsnitt av høy og lav pris\n", - "- Konverter prisen til å reflektere prissetting basert på skjeppekvantitet\n" + "- Beregn prisen som et gjennomsnitt av høye og lave priser\n", + "- Konverter prisen til å reflektere prising per bushel mengde\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "La oss se om det er korrelasjon:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ser ut som korrelasjonen er ganske liten, men det er et annet, mer viktig forhold - fordi prisene i plottet ovenfor ser ut til å ha flere distinkte klynger. La oss lage et plott som viser forskjellige gresskarsorter:\n" + "Ser ut som korrelasjonen er ganske liten, men det er et annet mer viktig forhold - fordi prisnivåene i plottet over ser ut til å ha flere distinkte klynger. La oss lage et plott som viser forskjellige gresskarsorter:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "For øyeblikket, la oss konsentrere oss kun om én variant - **terte type**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Lineær regresjon\n", "\n", - "Vi skal bruke Scikit Learn til å trene en lineær regresjonsmodell:\n" + "Vi vil bruke Scikit Learn til å trene en lineær regresjonsmodell:\n" ] }, { @@ -661,7 +665,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Stigningen til linjen kan bestemmes fra koeffisientene i lineær regresjon:\n" + ] }, { "cell_type": "code", @@ -686,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Vi kan bruke den trente modellen til å forutsi pris:\n" + ] }, { "cell_type": "code", @@ -716,9 +724,9 @@ "source": [ "### Polynomisk regresjon\n", "\n", - "Noen ganger er forholdet mellom egenskaper og resultater iboende ikke-lineært. For eksempel kan prisen på gresskar være høy om vinteren (måneder=1,2), deretter falle om sommeren (måneder=5-7), og så stige igjen. Lineær regresjon klarer ikke å fange dette forholdet nøyaktig.\n", + "Noen ganger er forholdet mellom funksjoner og resultater iboende ikke-lineært. For eksempel kan gresskarpriser være høye om vinteren (måneder=1,2), deretter falle over sommeren (måneder=5-7), og så stige igjen. Lineær regresjon kan ikke finne dette forholdet nøyaktig.\n", "\n", - "I dette tilfellet kan vi vurdere å legge til ekstra egenskaper. En enkel måte er å bruke polynomer fra inngangsegenskapene, noe som vil resultere i **polynomisk regresjon**. I Scikit Learn kan vi automatisk forhåndsberegne polynomiske egenskaper ved hjelp av pipelines:\n" + "I dette tilfellet kan vi vurdere å legge til ekstra funksjoner. En enkel måte er å bruke polynomer fra inngangsfunksjonene, noe som vil resultere i **polynomisk regresjon**. I Scikit Learn kan vi automatisk forhåndsberegne polynomfunksjoner ved hjelp av pipelines: \n" ] }, { @@ -773,20 +781,23 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Koding av varianter\n", + "### Varianter av koding\n", "\n", - "I en ideell verden ønsker vi å kunne forutsi priser for ulike gresskarvarianter ved hjelp av samme modell. For å ta hensyn til variantene, må vi først konvertere dem til numerisk form, eller **kode**. Det finnes flere måter vi kan gjøre dette på:\n", + "I en ideell verden ønsker vi å kunne forutsi priser for forskjellige gresskarvarianter ved å bruke samme modell. For å ta hensyn til varianten, må vi først konvertere den til numerisk form, eller **kode** den. Det finnes flere måter vi kan gjøre dette på:\n", "\n", - "* Enkel numerisk koding som lager en tabell over de ulike variantene, og deretter erstatter variantnavnet med en indeks i den tabellen. Dette er ikke den beste ideen for lineær regresjon, fordi lineær regresjon tar den numeriske verdien av indeksen i betraktning, og den numeriske verdien vil sannsynligvis ikke korrelere numerisk med prisen.\n", - "* One-hot koding, som vil erstatte `Variety`-kolonnen med 4 forskjellige kolonner, én for hver variant, som vil inneholde 1 hvis den tilsvarende raden er av den gitte varianten, og 0 ellers.\n", + "* Enkel numerisk koding som vil bygge en tabell over forskjellige varianter, og deretter erstatte variantnavnet med en indeks i den tabellen. Dette er ikke den beste ideen for lineær regresjon, fordi lineær regresjon tar den numeriske verdien av indeksen i betraktning, og den numeriske verdien er sannsynligvis ikke korrelert numerisk med prisen.\n", + "* One-hot-koding, som vil erstatte `Variety`-kolonnen med 4 forskjellige kolonner, en for hver variant, som vil inneholde 1 hvis den tilsvarende raden er av gitt variant, og 0 ellers.\n", "\n", "Koden nedenfor viser hvordan vi kan one-hot kode en variant:\n" ] @@ -936,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineær regresjon på variasjon\n", + "### Lineær regresjon på sort\n", "\n", - "Vi skal nå bruke den samme koden som ovenfor, men i stedet for `DayOfYear` skal vi bruke vår one-hot-enkodede variasjon som input:\n" + "Vi vil nå bruke den samme koden som ovenfor, men i stedet for `DayOfYear` vil vi bruke vår one-hot-enkodede sort som input:\n" ] }, { @@ -986,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vi kan også prøve å bruke andre funksjoner på samme måte, og kombinere dem med numeriske funksjoner, som `Month` eller `DayOfYear`:\n" + "Vi kan også prøve å bruke andre funksjoner på samme måte, og kombinere dem med numeriske funksjoner, slik som `Month` eller `DayOfYear`:\n" ] }, { @@ -1019,7 +1030,7 @@ "source": [ "### Polynomisk regresjon\n", "\n", - "Polynomisk regresjon kan også brukes med kategoriske funksjoner som er én-hot-kodet. Koden for å trene polynomisk regresjon vil i hovedsak være den samme som vi har sett ovenfor.\n" + "Polynomisk regresjon kan også brukes med kategoriske funksjoner som er one-hot-kodet. Koden for å trene polynomisk regresjon vil i hovedsak være den samme som vi har sett ovenfor.\n" ] }, { @@ -1066,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Ansvarsfraskrivelse**: \nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.\n" + "---\n\n\n**Ansvarsfraskrivelse**:\nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på det opprinnelige språket bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som følge av bruk av denne oversettelsen.\n\n" ] } ], @@ -1096,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T11:31:31+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "no" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From f4262644f3ea51c86cb1c60d6bf32745fa4c4c38 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:04:33 +0000 Subject: [PATCH 05/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/cs/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 110 ++++--- .../cs/2-Regression/3-Linear/README.md | 243 +++++++------- .../3-Linear/solution/notebook.ipynb | 61 ++-- translations/hu/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 112 +++---- .../hu/2-Regression/3-Linear/README.md | 309 +++++++++--------- .../3-Linear/solution/notebook.ipynb | 61 ++-- translations/sw/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 114 +++---- .../sw/2-Regression/3-Linear/README.md | 276 +++++++++------- .../3-Linear/solution/notebook.ipynb | 75 +++-- 12 files changed, 746 insertions(+), 657 deletions(-) diff --git a/translations/cs/.co-op-translator.json b/translations/cs/.co-op-translator.json index c0767a5aba..511cc0bf59 100644 --- a/translations/cs/.co-op-translator.json +++ b/translations/cs/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "cs" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T00:26:41+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:04:22+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "cs" }, @@ -90,8 +90,8 @@ "language_code": "cs" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:34:25+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:03:47+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "cs" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "cs" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:59:40+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "cs" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T23:27:47+00:00", diff --git a/translations/cs/1-Introduction/4-techniques-of-ML/README.md b/translations/cs/1-Introduction/4-techniques-of-ML/README.md index 0140c99725..868a824e99 100644 --- a/translations/cs/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/cs/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Techniky strojového učení -Proces vytváření, používání a udržování modelů strojového učení a dat, která využívají, se výrazně liší od mnoha jiných vývojových pracovních postupů. V této lekci tento proces objasníme a nastíníme hlavní techniky, které je třeba znát. Naučíte se: +Proces vytváření, používání a udržování modelů strojového učení a dat, která používají, je velmi odlišný od mnoha jiných vývojových pracovních postupů. V této lekci si tento proces objasníme a nastíníme hlavní techniky, které potřebujete znát. Naučíte se: -- Porozumět procesům, které jsou základem strojového učení na vysoké úrovni. -- Prozkoumat základní pojmy, jako jsou „modely“, „predikce“ a „trénovací data“. +- Pochopit procesy, které stojí za strojovým učením na vysoké úrovni. +- Prozkoumat základní pojmy jako „modely“, „predikce“ a „tréninková data“. -## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/) +## [Kvíz před přednáškou](https://ff-quizzes.netlify.app/en/ml/) -[![ML pro začátečníky - Techniky strojového učení](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML pro začátečníky - Techniky strojového učení") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Klikněte na obrázek výše pro krátké video, které vás provede touto lekcí. +> 🎥 Klikněte na obrázek výše pro krátké video, které prochází touto lekcí. ## Úvod -Na vysoké úrovni se tvorba procesů strojového učení (ML) skládá z několika kroků: +Na vysoké úrovni je umění vytváření procesů strojového učení (ML) složeno z několika kroků: -1. **Určete otázku**. Většina procesů ML začíná položením otázky, na kterou nelze odpovědět jednoduchým podmíněným programem nebo pravidlovým systémem. Tyto otázky se často týkají predikcí na základě sbírky dat. -2. **Sbírejte a připravte data**. Abyste mohli odpovědět na svou otázku, potřebujete data. Kvalita a někdy i množství vašich dat určí, jak dobře můžete odpovědět na svou původní otázku. Vizualizace dat je důležitým aspektem této fáze. Tato fáze také zahrnuje rozdělení dat na trénovací a testovací skupinu pro vytvoření modelu. -3. **Vyberte metodu trénování**. V závislosti na vaší otázce a povaze vašich dat musíte zvolit způsob, jakým chcete model trénovat, aby co nejlépe odrážel vaše data a poskytoval přesné predikce. Tato část procesu ML vyžaduje specifické odborné znalosti a často značné množství experimentování. -4. **Trénujte model**. Pomocí vašich trénovacích dat použijete různé algoritmy k trénování modelu, aby rozpoznal vzory v datech. Model může využívat interní váhy, které lze upravit tak, aby upřednostňoval určité části dat před jinými, a tím vytvořil lepší model. -5. **Vyhodnoťte model**. Použijete data, která model nikdy předtím neviděl (vaše testovací data), abyste zjistili, jak model funguje. -6. **Ladění parametrů**. Na základě výkonu vašeho modelu můžete proces zopakovat s různými parametry nebo proměnnými, které ovládají chování algoritmů použitých k trénování modelu. -7. **Predikujte**. Použijte nové vstupy k otestování přesnosti vašeho modelu. +1. **Rozhodněte se o otázce**. Většina ML procesů začíná položením otázky, na kterou nelze odpovědět jednoduchým podmíněným programem nebo pravidlovým enginem. Tyto otázky se často točí kolem predikcí založených na sbírce dat. +2. **Sběr a příprava dat**. Abyste mohli odpovědět na svou otázku, potřebujete data. Kvalita a někdy i množství dat určí, jak dobře dokážete zodpovědět vaši původní otázku. Vizualizace dat je důležitou součástí této fáze. Tato fáze také zahrnuje rozdělení dat na tréninkovou a testovací skupinu pro vytvoření modelu. +3. **Výběr metody tréninku**. Podle vaší otázky a povahy dat je potřeba zvolit, jak chcete trénovat model tak, aby co nejlépe odrážel vaše data a umožnil přesné predikce. Toto je část ML procesu, která vyžaduje specifickou odbornost a často značné množství experimentování. +4. **Trénování modelu**. Pomocí tréninkových dat použijete různé algoritmy k natrénování modelu, který rozeznává vzory v datech. Model může využívat vnitřní váhy, které lze nastavit tak, aby upřednostňoval určité části dat před jinými a vytvořil tak lepší model. +5. **Hodnocení modelu**. Použijete dříve neviděná data (testovací data) z vašeho souboru, abyste zjistili, jak model funguje. +6. **Ladění parametrů**. Na základě výkonnosti modelu můžete celý proces zopakovat s různými parametry nebo proměnnými, které ovládají chování algoritmů použitých k tréninku modelu. +7. **Predikce**. Použijte nové vstupy k otestování přesnosti modelu. ## Jakou otázku položit -Počítače jsou obzvláště zdatné v objevování skrytých vzorů v datech. Tato schopnost je velmi užitečná pro výzkumníky, kteří mají otázky o dané oblasti, na které nelze snadno odpovědět vytvořením pravidlového systému založeného na podmínkách. Například při aktuárské úloze by datový vědec mohl vytvořit ručně sestavená pravidla týkající se úmrtnosti kuřáků vs. nekuřáků. +Počítače jsou zvlášť schopné objevovat skryté vzory v datech. Tato užitečnost je velmi přínosná pro výzkumníky, kteří mají otázky o dané oblasti, jež nelze snadno zodpovědět vytvořením podmíněného pravidlového enginu. Například datový vědec může pro aktuárské úkoly vytvořit ručně vyrobená pravidla o úmrtnosti kuřáků a nekuřáků. -Když se však do rovnice přidá mnoho dalších proměnných, model ML může být efektivnější při predikci budoucích úmrtnostních sazeb na základě minulých zdravotních záznamů. Veselejším příkladem může být předpovídání počasí na měsíc duben v dané lokalitě na základě dat, která zahrnují zeměpisnou šířku, délku, změny klimatu, blízkost oceánu, vzory proudění vzduchu a další. +Pokud však do rovnice přidáme mnoho dalších proměnných, může být model ML efektivnější pro předpověď budoucích úmrtnostních sazeb na základě minulé zdravotní historie. Veselější příklad může být předpověď počasí na měsíc duben v dané lokalitě na základě dat obsahujících zeměpisnou šířku, délku, změnu klimatu, blízkost oceánu, vzory proudění jet streamu a další. -✅ Tato [prezentace](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o modelech počasí nabízí historický pohled na využití ML v analýze počasí. +✅ Tato [prezentace](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o modelech počasí nabízí historický pohled na použití ML v analýze počasí. -## Úkoly před vytvořením modelu +## Úkoly před samotným vytvářením -Než začnete vytvářet svůj model, je třeba splnit několik úkolů. Abyste mohli otestovat svou otázku a vytvořit hypotézu na základě predikcí modelu, musíte identifikovat a nakonfigurovat několik prvků. +Než začnete stavět svůj model, musíte splnit několik úkolů. Abyste mohli otestovat svou otázku a vytvořit hypotézu na základě predikcí modelu, je potřeba identifikovat a nakonfigurovat několik prvků. ### Data -Abyste mohli odpovědět na svou otázku s jakoukoli jistotou, potřebujete dostatečné množství dat správného typu. V této fázi musíte udělat dvě věci: +Abyste mohli otázku odpovědět s jistotou, potřebujete dostatečné množství dat správného typu. V tomto bodě je třeba udělat dvě věci: -- **Sbírejte data**. S ohledem na předchozí lekci o spravedlnosti v analýze dat sbírejte svá data pečlivě. Buďte si vědomi zdrojů těchto dat, jakýchkoli inherentních předsudků, které mohou obsahovat, a dokumentujte jejich původ. -- **Připravte data**. Proces přípravy dat zahrnuje několik kroků. Možná budete muset data shromáždit a normalizovat, pokud pocházejí z různých zdrojů. Kvalitu a množství dat můžete zlepšit různými metodami, například převodem textových řetězců na čísla (jak to děláme v [Clusteringu](../../5-Clustering/1-Visualize/README.md)). Můžete také generovat nová data na základě původních (jak to děláme v [Klasifikaci](../../4-Classification/1-Introduction/README.md)). Data můžete čistit a upravovat (jak to uděláme před lekcí o [Webové aplikaci](../../3-Web-App/README.md)). Nakonec je možná budete muset náhodně uspořádat a promíchat, v závislosti na vašich trénovacích technikách. +- **Sbírejte data**. Mějte na paměti předchozí lekci o spravedlnosti v analýze dat a sbírejte data pečlivě. Buďte si vědomi zdrojů dat, jakýchkoli inherentních zkreslení a dokumentujte jejich původ. +- **Připravte data**. Existuje několik kroků v procesu přípravy dat. Můžete potřebovat data sloučit a normalizovat, pokud pocházejí z různých zdrojů. Kvalitu a množství dat můžete vylepšit různými metodami, například převodem řetězců na čísla (jak děláme v [Clustering](../../5-Clustering/1-Visualize/README.md)). Můžete také generovat nová data na základě originálních (jak děláme v [Classification](../../4-Classification/1-Introduction/README.md)). Data můžete čistit a upravovat (jak uděláme před lekcí [Web App](../../3-Web-App/README.md)). Nakonec můžete data náhodně promíchat podle použitých tréninkových technik. -✅ Po sběru a zpracování dat si udělejte chvíli na to, abyste zjistili, zda jejich struktura umožní odpovědět na vaši zamýšlenou otázku. Může se stát, že data nebudou dobře fungovat pro váš daný úkol, jak zjistíme v našich lekcích o [Clusteringu](../../5-Clustering/1-Visualize/README.md)! +✅ Po sběru a zpracování dat si udělejte chvíli čas a zjistěte, zda jejich struktura umožní odpovědět na zamýšlenou otázku. Může se stát, že data nebudou pro daný úkol vhodná, jak zjistíme v lekcích o [Clusteringu](../../5-Clustering/1-Visualize/README.md)! ### Vlastnosti a cíl -[Vlastnost](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je měřitelná vlastnost vašich dat. V mnoha datových sadách je vyjádřena jako záhlaví sloupce, například „datum“, „velikost“ nebo „barva“. Vaše proměnná vlastnosti, obvykle reprezentovaná jako `X` v kódu, představuje vstupní proměnnou, která bude použita k trénování modelu. +[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) (vlastnost) je měřitelná charakteristika dat. Většinou je vyjádřena jako nadpis sloupce, například „datum“, „velikost“ nebo „barva“. Vaše proměnná vlastnosti, obvykle označovaná jako `X` v kódu, představuje vstupní proměnnou použitou k natrénování modelu. -Cíl je věc, kterou se snažíte předpovědět. Cíl, obvykle reprezentovaný jako `y` v kódu, představuje odpověď na otázku, kterou se snažíte položit svým datům: v prosinci, jakou **barvu** budou mít nejlevnější dýně? V San Francisku, které čtvrti budou mít nejlepší **cenu** nemovitostí? Někdy se cíl označuje také jako atribut štítku. +Cíl je věc, kterou se snažíte předpovědět. Cíl, obvykle označovaný jako `y` v kódu, představuje odpověď na otázku, kterou svým datům kladete: v prosinci, jakou **barvu** budou mít nejlevnější dýně? V San Francisku, která čtvrť bude mít nejlepší cenu nemovitostí **cena**? Cíl se někdy také nazývá štítek nebo label atribut. ### Výběr proměnné vlastnosti -🎓 **Výběr vlastností a extrakce vlastností** Jak poznáte, kterou proměnnou zvolit při vytváření modelu? Pravděpodobně projdete procesem výběru vlastností nebo extrakce vlastností, abyste zvolili správné proměnné pro nejvýkonnější model. Nejsou to však stejné věci: „Extrakce vlastností vytváří nové vlastnosti z funkcí původních vlastností, zatímco výběr vlastností vrací podmnožinu vlastností.“ ([zdroj](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Výběr a extrakce vlastností** Jak vybrat správnou proměnnou při budování modelu? Pravděpodobně projdete procesem výběru vlastností nebo extrakce vlastností, abyste vybrali správné proměnné pro co nejlepší model. Nejde však o totéž: „Extrakce vlastností vytváří nové vlastnosti z funkcí originálních vlastností, zatímco výběr vlastností vybírá podmnožinu vlastností.“ ([zdroj](https://wikipedia.org/wiki/Feature_selection)) -### Vizualizace dat +### Vizualizujte svá data -Důležitým aspektem nástrojů datového vědce je schopnost vizualizovat data pomocí několika vynikajících knihoven, jako jsou Seaborn nebo MatPlotLib. Vizualizace dat vám může umožnit odhalit skryté korelace, které můžete využít. Vaše vizualizace vám také mohou pomoci odhalit předsudky nebo nevyvážená data (jak zjistíme v [Klasifikaci](../../4-Classification/2-Classifiers-1/README.md)). +Důležitou součástí nástrojů datového vědce je schopnost vizualizovat data pomocí několika vynikajících knihoven, jako jsou Seaborn nebo MatPlotLib. Vizualizace dat vám může umožnit objevit skryté korelace, které můžete využít. Vaše vizualizace vám také může pomoci odhalit zkreslení nebo nevyvážená data (jak zjistíme v lekci o [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Rozdělení datové sady +### Rozdělte svůj dataset -Před trénováním je třeba rozdělit datovou sadu na dvě nebo více částí nerovnoměrné velikosti, které stále dobře reprezentují data. +Před tréninkem je třeba dataset rozdělit na dvě nebo více částí různé velikosti, které stále dobře reprezentují data. -- **Trénovací sada**. Tato část datové sady je použita k trénování modelu. Tato sada tvoří většinu původní datové sady. -- **Testovací sada**. Testovací datová sada je nezávislá skupina dat, často získaná z původních dat, kterou používáte k potvrzení výkonu vytvořeného modelu. -- **Validační sada**. Validační sada je menší nezávislá skupina příkladů, kterou používáte k ladění hyperparametrů nebo architektury modelu, aby se zlepšil jeho výkon. V závislosti na velikosti vašich dat a otázce, kterou pokládáte, možná nebudete muset tuto třetí sadu vytvářet (jak poznamenáváme v [Časových řadách](../../7-TimeSeries/1-Introduction/README.md)). +- **Tréninková sada**. Tato část datasetu se používá k přizpůsobení modelu a jeho tréninku. Tato sada tvoří většinu původních dat. +- **Testovací sada**. Testovací data jsou nezávislá skupina dat, často vybraná z původních dat, kterou používáte ke kontrole výkonnosti natrénovaného modelu. +- **Validace**. Validace je menší nezávislá skupina příkladů, kterou používáte ke ladění hyperparametrů nebo architektury modelu, abyste model vylepšili. Podle velikosti vašich dat a otázky, kterou chcete zodpovědět, možná nebudete potřebovat tuto třetí sadu (jak uvádíme v [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). ## Vytváření modelu -Pomocí vašich trénovacích dat je vaším cílem vytvořit model, tedy statistické vyjádření vašich dat, pomocí různých algoritmů k jeho **trénování**. Trénování modelu ho vystavuje datům a umožňuje mu dělat předpoklady o vzorech, které objeví, ověří a přijme nebo odmítne. +Pomocí tréninkových dat je vaším cílem vytvořit model nebo statistické zastoupení dat pomocí různých algoritmů k jeho **tréninku**. Trénování modelu jej vystavuje datům a umožňuje mu činit předpoklady o vnímaných vzorech, které objeví, ověří a přijme nebo odmítne. -### Rozhodnutí o metodě trénování +### Rozhodněte se pro metodu tréninku -V závislosti na vaší otázce a povaze vašich dat zvolíte metodu trénování. Procházením [dokumentace Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - kterou v tomto kurzu používáme - můžete prozkoumat mnoho způsobů, jak model trénovat. V závislosti na vašich zkušenostech možná budete muset vyzkoušet několik různých metod, abyste vytvořili nejlepší model. Pravděpodobně projdete procesem, kdy datoví vědci hodnotí výkon modelu tím, že mu předkládají neviděná data, kontrolují přesnost, předsudky a další problémy snižující kvalitu a vybírají nejvhodnější metodu trénování pro daný úkol. +Podle otázky a povahy dat zvolíte vhodnou metodu pro trénování. Prozkoumáním [dokumentace Scikit-learn](https://scikit-learn.org/stable/user_guide.html) – kterou v tomto kurzu používáme – můžete objevovat mnoho způsobů, jak model trénovat. Podle zkušeností možná budete muset vyzkoušet několik různých metod, abyste vytvořili nejlepší model. Pravděpodobně se vydáte procesem, kdy datoví vědci hodnotí výkonnost modelu tak, že mu dávají neviděná data, kontrolují přesnost, zkreslení a další problémy s kvalitou a vybírají nejvhodnější metodu tréninku pro daný úkol. -### Trénování modelu +### Natrénujte model -S trénovacími daty jste připraveni je „přizpůsobit“ k vytvoření modelu. Všimnete si, že v mnoha knihovnách ML najdete kód „model.fit“ - právě v tomto okamžiku zadáváte svou proměnnou vlastnosti jako pole hodnot (obvykle „X“) a cílovou proměnnou (obvykle „y“). +Vybaveni tréninkovými daty jste připraveni 'přizpůsobit' model. V mnoha knihovnách strojového učení narazíte na kód 'model.fit' – právě tehdy posíláte vstupní proměnnou jako pole hodnot (obvykle 'X') a cílovou proměnnou (obvykle 'y'). -### Vyhodnocení modelu +### Vyhodnoťte model -Jakmile je proces trénování dokončen (u velkého modelu může trvat mnoho iterací, nebo „epoch“, než se vytrénuje), budete schopni vyhodnotit kvalitu modelu pomocí testovacích dat k posouzení jeho výkonu. Tato data jsou podmnožinou původních dat, která model dosud neanalyzoval. Můžete vytisknout tabulku metrik o kvalitě modelu. +Jakmile je trénink kompletní (může to trvat mnoho iterací, nebo „epoch“, než se natrénuje velký model), můžete vyhodnotit kvalitu modelu použitím testovacích dat k měření jeho výkonnosti. Tato data jsou podmnožinou původních dat, která model předtím neviděl. Můžete si vypsat tabulku metrik kvality modelu. 🎓 **Přizpůsobení modelu** -V kontextu strojového učení přizpůsobení modelu odkazuje na přesnost základní funkce modelu, když se snaží analyzovat data, která nezná. +V kontextu strojového učení znamená přizpůsobení modelu přesnost základní funkce modelu při pokusu analyzovat data, která nezná. -🎓 **Podtrénování** a **přetrénování** jsou běžné problémy, které snižují kvalitu modelu, protože model buď neodpovídá dostatečně dobře, nebo příliš dobře. To způsobuje, že model dělá predikce buď příliš úzce, nebo příliš volně ve vztahu k trénovacím datům. Přetrénovaný model predikuje trénovací data příliš dobře, protože se naučil detaily a šum dat příliš dobře. Podtrénovaný model není přesný, protože nedokáže přesně analyzovat ani trénovací data, ani data, která dosud „neviděl“. +🎓 **Podtrénování** a **přetrénování** jsou běžné problémy snižující kvalitu modelu, kdy je model buď „málo přizpůsobený“ nebo „příliš přizpůsobený“. To způsobuje, že model dělá predikce, které jsou buď příliš přesné, nebo příliš volné vůči tréninkovým datům. Přetrénovaný model předpovídá tréninková data příliš dobře, protože detailně poznal data a šum. Podtrénovaný model není přesný, protože nedokáže správně analyzovat ani tréninková ani nová data, která dříve „neviděl“. -![přetrénovaný model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/cs/overfitting.1c132d92bfd93cb6.webp) > Infografika od [Jen Looper](https://twitter.com/jenlooper) ## Ladění parametrů -Jakmile je vaše počáteční trénování dokončeno, sledujte kvalitu modelu a zvažte jeho zlepšení úpravou jeho „hyperparametrů“. Přečtěte si více o tomto procesu [v dokumentaci](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Jakmile dokončíte počáteční trénink, zhodnoťte kvalitu modelu a zvažte jeho zlepšení laděním jeho „hyperparametrů“. Více o procesu si můžete přečíst [v dokumentaci](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Predikce -Toto je okamžik, kdy můžete použít zcela nová data k otestování přesnosti vašeho modelu. V „aplikovaném“ nastavení ML, kde vytváříte webové nástroje pro použití modelu v produkci, může tento proces zahrnovat shromažďování uživatelských vstupů (například stisknutí tlačítka) k nastavení proměnné a jejímu odeslání modelu k inferenci nebo vyhodnocení. +Toto je okamžik, kdy můžete použít zcela nová data, abyste otestovali přesnost modelu. V „aplikačním“ prostředí ML, kdy vytváříte webové nástroje k nasazení modelu do produkce, může tento proces zahrnovat sběr uživatelského vstupu (například stisk tlačítka) k nastavení proměnné a odeslání do modelu pro odhad nebo vyhodnocení. -V těchto lekcích objevíte, jak použít tyto kroky k přípravě, vytvoření, testování, vyhodnocení a predikci - všechny úkony datového vědce a další, jak postupujete na své cestě stát se „full stack“ inženýrem ML. +V těchto lekcích zjistíte, jak používat tyto kroky k přípravě, vytváření, testování, hodnocení a predikci – všechny úkony datového vědce a více, jak postupujete na cestě stát se „full stack“ ML inženýrem. --- ## 🚀Výzva -Nakreslete diagram toku, který odráží kroky praktikanta ML. Kde se právě teď vidíte v procesu? Kde předpokládáte, že narazíte na obtíže? Co se vám zdá snadné? +Nakreslete diagram znázorňující kroky praktikanta ML. Kde se nyní v procesu vidíte? Kde předpokládáte, že narazíte na potíže? Co vám přijde snadné? -## [Kvíz po lekci](https://ff-quizzes.netlify.app/en/ml/) +## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/) -## Přehled a samostudium +## Revize & Samostudium -Vyhledejte online rozhovory s datovými vědci, kteří diskutují o své každodenní práci. Zde je [jeden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Vyhledejte online rozhovory s datovými vědci, kteří popisují svou každodenní práci. Zde je [jeden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Úkol +## Zadání -[Rozhovor s datovým vědcem](assignment.md) +[Interview s datovým vědcem](assignment.md) --- -**Prohlášení**: -Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file + +**Prohlášení o vyloučení odpovědnosti**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). I když usilujeme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho mateřském jazyce by měl být považován za závazný zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo chybné výklady vzniklé použitím tohoto překladu. + \ No newline at end of file diff --git a/translations/cs/2-Regression/3-Linear/README.md b/translations/cs/2-Regression/3-Linear/README.md index 8b4fe6c3eb..4a03a49b6c 100644 --- a/translations/cs/2-Regression/3-Linear/README.md +++ b/translations/cs/2-Regression/3-Linear/README.md @@ -1,98 +1,97 @@ -# Vytvoření regresního modelu pomocí Scikit-learn: regrese čtyřmi způsoby +# Vytvoření regresního modelu pomocí Scikit-learn: čtyři způsoby regrese ## Poznámka pro začátečníky -Lineární regrese se používá tehdy, když chceme predikovat **číselnou hodnotu** (například cenu domu, teplotu nebo tržby). -Funguje tak, že najde přímku, která nejlépe reprezentuje vztah mezi vstupními vlastnostmi a výstupem. +Lineární regrese se používá, když chceme předpovědět **číselnou hodnotu** (například cenu domu, teplotu nebo prodej). +Funguje tak, že najde přímku, jež nejlépe reprezentuje vztah mezi vstupními rysy a výstupem. -V této lekci se zaměříme na pochopení konceptu, než přejdeme k pokročilejším regresním technikám. -![Lineární vs polynomiální regrese infographic](../../../../translated_images/cs/linear-polynomial.5523c7cb6576ccab.webp) +V této lekci se zaměříme na pochopení konceptu, než prozkoumáme pokročilejší regresní techniky. +![Infografika lineární vs polynomiální regrese](../../../../translated_images/cs/linear-polynomial.5523c7cb6576ccab.webp) > Infografika od [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) > ### [Tato lekce je dostupná i v R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Úvod +### Úvod -Dosud jste prozkoumali, co regrese je, s použitím ukázkových dat získaných z datasetu s cenami dýní, který budeme používat v celé této lekci. Také jste data vizualizovali pomocí Matplotlib. +Dosud jste prozkoumali, co regrese je, na ukázkových datech ze sady dat o cenách dýní, kterou budeme používat po celou tuto lekci. Také jste je vizualizovali pomocí Matplotlib. -Nyní jste připraveni ponořit se hlouběji do regrese pro strojové učení. Zatímco vizualizace vám umožňuje data lépe pochopit, skutečná síla strojového učení spočívá ve _tréninku modelů_. Modely jsou trénovány na historických datech, aby automaticky zachytily závislosti v datech a umožnily vám predikovat výsledky pro nová data, která model ještě neviděl. +Teď jste připraveni jít hlouběji do regrese pro strojové učení. Zatímco vizualizace vám umožňuje pochopit data, skutečná síla strojového učení spočívá v _trénování modelů_. Modely se trénují na historických datech, aby automaticky zachytily závislosti v datech, a umožňují tak předpovídat výsledky pro nová data, která model dosud neviděl. -V této lekci se dozvíte více o dvou typech regrese: _základní lineární regresi_ a _polynomiální regresi_, spolu s některou z matematiky, která tyto techniky podkládá. Tyto modely nám umožní predikovat ceny dýní podle různých vstupních dat. +V této lekci se dozvíte více o dvou typech regrese: _základní lineární regresi_ a _polynomiální regresi_ společně s částí matematiky, která tyto techniky podporuje. Tyto modely nám umožní předpovídat ceny dýní v závislosti na různých vstupních datech. [![Strojové učení pro začátečníky - Pochopení lineární regrese](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Strojové učení pro začátečníky - Pochopení lineární regrese") > 🎥 Klikněte na obrázek výše pro krátké video shrnutí lineární regrese. -> V celém tomto kurikulu předpokládáme minimální znalosti matematiky a snažíme se ji zpřístupnit studentům z jiných oborů, proto sledujte poznámky, 🧮 doplňky, diagramy a další výukové pomůcky pro usnadnění pochopení. +> V průběhu tohoto kurzu předpokládáme minimální znalosti matematiky a snažíme se ji zpřístupnit studentům z jiných oborů, proto sledujte poznámky, 🧮 upozornění, diagramy a další učební pomůcky pro lepší pochopení. ### Předpoklady -Nyní byste měli být obeznámeni se strukturou dat o dýních, která zkoumáme. Najdete je přednačtená a předčištěná v souboru _notebook.ipynb_ této lekce. V souboru je cena dýně zobrazena za koš (bushel) v novém datovém rámci. Ujistěte se, že tyto notebooky můžete spustit v jádrech ve Visual Studio Code. +Měli byste již být seznámeni se strukturou dat o dýních, kterou zkoumáme. Najdete je přednačtená a předvyčištěná v souboru _notebook.ipynb_ k této lekci. V souboru je cena dýně zobrazena za koš. Ujistěte se, že dokážete spustit tyto notebooky v kernelu ve Visual Studio Code. ### Příprava -Jako připomínku, tato data načítáte proto, abyste na ně mohli klást otázky. +Pro připomenutí, načítáte tato data, abyste mohli klást otázky na jejich základě. -- Kdy je nejlepší doba na nákup dýní? +- Kdy je nejlepší čas na koupi dýní? - Jakou cenu mohu očekávat za balení mini dýní? -- Měl bych je koupit v koších o půl bushelu, nebo v krabici o 1 1/9 bushelu? +- Měl bych je koupit v koších o půl koše, nebo v krabici o 1 1/9 koše? +Pojďme do těchto dat hlouběji. -Pojďme dále prozkoumat tato data. +V předchozí lekci jste vytvořili Pandas dataframe a naplnili jej částí původní sady dat, kde jste standardizovali ceny podle koše. Tím jste ale získali pouze asi 400 datových bodů a pouze pro podzimní měsíce. -V předchozí lekci jste vytvořili Pandas data frame a naplnili ho částí původního datasetu, standardizovali ceny na bushel. Tím jste však získali asi 400 datových bodů, a to pouze pro podzimní měsíce. +Podívejte se na data, která jsme přednačetli v notebooku připojeném k této lekci. Data jsou přednačtená a je vytvořen počáteční scatterplot pro údaje o měsících. Možná můžeme získat více detailů o povaze dat jejich dalším vyčištěním. -Podívejte se na data, která jsme přednačetli v notebooku doprovázejícím tuto lekci. Data jsou přednačtená a zobrazený je počáteční scatterplot dle měsíce. Možná získáme více podrobností o povaze dat jejich důkladnějším vyčištěním. +## Lineární regrese -## Lineární regresní přímka +Jak jste se naučili v Lekci 1, cílem úlohy lineární regrese je být schopen vykreslit přímku, která: -Jak jste se naučili v lekci 1, cílem cvičení lineární regrese je umět nakreslit přímku, která: +- **Ukáže vztahy proměnných**. Ukáže vztah mezi proměnnými. +- **Provádí předpovědi**. Udělá přesné předpovědi, kde by nový datový bod mohl ležet ve vztahu k této přímce. -- **Ukáže vztahy mezi proměnnými**. -- **Umožní predikce**. Přesně predikovat, kde by se nový datový bod nacházel vzhledem k této přímce. +Typickým přístupem pro **regresi nejmenších čtverců** je nakreslit právě takovou přímku. Termín "nejmenší čtverce" označuje proces minimalizace celkové chyby v našem modelu. Pro každý datový bod měříme svislou vzdálenost (nazývanou reziduál) mezi skutečným bodem a naší regresní přímkou. -Typickým přístupem u **regrese nejmenších čtverců** (Least-Squares Regression) je nakreslit právě tento typ přímky. Termín "nejmenších čtverců" odkazuje na proces minimalizace celkové chyby v našem modelu. Pro každý datový bod měříme vertikální vzdálenost (zvanou reziduum) mezi skutečným bodem a naší regresní přímkou. +Tyto vzdálenosti umocňujeme na druhou ze dvou hlavních důvodů: -Tyto vzdálenosti umocníme na druhou ze dvou hlavních důvodů: +1. **Velikost místo směru:** Chceme, aby chyba -5 byla považována za stejně závažnou jako chyba +5. Umocnění na druhou všechny hodnoty zanesou na kladné čísla. -1. **Velikost nad směrem:** Chceme, aby chyba -5 byla považována za stejnou jako chyba +5. Umocněním získáme všechny hodnoty kladné. +2. **Postihování odlehlých hodnot:** Umocnění na druhou dává větší váhu větším chybám, čímž nutí přímku být blíže k bodům, které jsou vzdálené. -2. **Trestat odlehlé hodnoty:** Umocnění dá větší váhu větším chybám, díky čemuž se přímka snaží zůstat blíže k bodům, které jsou vzdálené. +Poté tyto umocněné hodnoty sečteme. Naším cílem je najít přesnou přímku, kde je součet těchto hodnot co nejmenší – odtud název "nejmenších čtverců". -Poté všechny tyto umocněné hodnoty sečteme. Naším cílem je najít právě tu přímku, kde je tento součet nejmenší (možná nejmenší hodnota) — odtud název "nejmenších čtverců". - -> **🧮 Ukázat mi matematiku** -> -> Tuto přímku, nazývanou _přímka nejlepšího přizpůsobení_, lze vyjádřit [rovnicí](https://cs.wikipedia.org/wiki/Line%C3%A1rn%C3%AD_regrese#Jednoduch%C3%A1_line%C3%A1rn%C3%AD_regrese): +> **🧮 Ukaž mi matematiku** +> +> Tato čára, nazývaná _čára nejlepšího přizpůsobení_, může být vyjádřena [rovnicí](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` je 'vysvětlující proměnná'. `Y` je 'závislá proměnná'. Směrnice přímky je `b` a `a` je průsečík s osou y, který odpovídá hodnotě `Y` když `X = 0`. +> `X` je 'vysvětlující proměnná'. `Y` je 'závislá proměnná'. Směrnice přímky je `b` a `a` je průsečík s osou y, což označuje hodnotu `Y` když `X = 0`. > >![výpočet směrnice](../../../../translated_images/cs/slope.f3c9d5910ddbfcf9.webp) > -> Nejprve spočítejte směrnici `b`. Infografika od [Jen Looper](https://twitter.com/jenlooper) +> Nejprve spočítáme směrnici `b`. Infografika od [Jen Looper](https://twitter.com/jenlooper) > -> Jinými slovy, a s ohledem na původní otázku k našim datům o dýních: "predikujte cenu dýně za bushel podle měsíce", pak `X` představuje cenu a `Y` měsíc prodeje. +> Jinými slovy, a vzhledem k původní otázce naší dýňové datové sady: "předpovědět cenu dýně za koš podle měsíce", by `X` označovalo cenu a `Y` by odpovídalo měsíci prodeje. > ->![doplnění rovnice](../../../../translated_images/cs/calculation.a209813050a1ddb1.webp) +>![dokončení rovnice](../../../../translated_images/cs/calculation.a209813050a1ddb1.webp) > -> Spočítejte hodnotu `Y`. Pokud platíte kolem 4 dolarů, musí být duben! Infografika od [Jen Looper](https://twitter.com/jenlooper) +> Spočítejte hodnotu Y. Pokud platíte kolem 4 dolarů, musí být duben! Infografika od [Jen Looper](https://twitter.com/jenlooper) > -> Matematika, která vypočítá přímku, musí zohlednit směrnici této přímky, která také závisí na průsečíku, tedy místě, kde je `Y`, když `X = 0`. +> Matematika, která vypočítává čáru, musí ukázat směrnici přímky, která také závisí na průsečíku, tedy kde se `Y` nachází, když `X = 0`. > -> Metodu výpočtu těchto hodnot můžete sledovat na webu [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Navštivte také [tento kalkulátor nejmenších čtverců](https://www.mathsisfun.com/data/least-squares-calculator.html), který ukazuje, jak hodnoty čísel ovlivňují přímku. +> Metodu výpočtu těchto hodnot můžete sledovat na webu [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Navštivte také [tento kalkulátor nejmenších čtverců](https://www.mathsisfun.com/data/least-squares-calculator.html), kde můžete vidět, jak hodnoty ovlivňují přímku. ## Korelace -Ještě jeden termín, který je dobré pochopit, je **korelační koeficient** mezi proměnnými X a Y. Pomocí scatterplotu můžete rychle tento koeficient vizualizovat. Graf s body roztroušenými v pěkné přímce má vysokou korelaci, zatímco graf s body rozesetými všude má nízkou korelaci. +Ještě jeden termín k pochopení je **koeficient korelace** mezi danými proměnnými X a Y. Pomocí scatterplotu můžete rychle vizualizovat tento koeficient. Graf s body rozloženými v úhledné přímce má vysokou korelaci, ale graf s body rozptýlenými všude mezi X a Y má nízkou korelaci. -Dobrý lineární regresní model bude ten, který má vysoký (blíže jedné než nule) korelační koeficient pomocí metody nejmenších čtverců. +Dobrý lineární regresní model bude ten, který má vysoký (blíže k 1 než k 0) koeficient korelace, využívající metodu regrese nejmenších čtverců s regresní čarou. -✅ Spusťte notebook doprovázející tuto lekci a podívejte se na scatterplot měsíce vs. ceny. Zdá se, že data spojující měsíc s cenou při prodeji dýní mají vysokou nebo nízkou korelaci podle vaší vizuální interpretace scatterplotu? Změní se to, pokud použijete jemnější měřítko než `Month`, např. *den v roce* (tj. počet dní od začátku roku)? +✅ Spusťte notebook připojený k této lekci a podívejte se na scatterplot měsíce a ceny. Zdá se, že data spojující měsíc a cenu u prodeje dýní mají podle vašeho vizuálního vnímání scatterplotu vysokou nebo nízkou korelaci? Změní se to, pokud místo `Month` použijete jemnější měření, například *den v roce* (tj. počet dnů od začátku roku)? -V níže uvedeném kódu budeme předpokládat, že jsme data vyčistili a získali datový rámec nazvaný `new_pumpkins`, podobný tomuto: +V následujícím kódu budeme předpokládat, že jsme data vyčistili a získali dataframe pojmenovaný `new_pumpkins`, podobný následujícímu: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -102,13 +101,13 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Kód na čištění dat je k dispozici v [`notebook.ipynb`](notebook.ipynb). Provedli jsme stejné kroky čištění jako v předchozí lekci a vypočítali sloupec `DayOfYear` pomocí následujícího výrazu: +> Kód pro vyčištění dat je dostupný v [`notebook.ipynb`](notebook.ipynb). Provedli jsme stejné kroky čištění jako v předchozí lekci a vypočítali sloupec `DayOfYear` pomocí následujícího výrazu: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Nyní, když máte pochopení matematiky za lineární regresí, vytvoříme regresní model, abychom zjistili, jestli dokážeme předpovědět, které balení dýní bude mít nejlepší cenu. Někdo, kdo kupuje dýně pro záhony na svátky, by tuto informaci mohl chtít, aby mohl optimalizovat nákupy. +Teď, když máte pochopení matematiky za lineární regresí, vytvoříme regresní model, abychom zjistili, zda dokážeme předpovědět, která balení dýní budou mít nejlepší ceny. Někdo, kdo kupuje dýně pro slavnostní záhon, by mohl tyto informace chtít pro optimalizaci nákupů dýňových balení pro záhon. ## Hledání korelace @@ -116,22 +115,22 @@ Nyní, když máte pochopení matematiky za lineární regresí, vytvoříme reg > 🎥 Klikněte na obrázek výše pro krátké video shrnutí korelace. -Z předchozí lekce jste pravděpodobně viděli, že průměrná cena v různých měsících vypadá takto: +Z předchozí lekce jste asi viděli, že průměrná cena za jednotlivé měsíce vypadá takto: Průměrná cena podle měsíce -To naznačuje, že existuje nějaká korelace a můžeme zkusit vytrénovat lineární regresní model k předpovědi vztahu mezi `Month` a `Price`, nebo mezi `DayOfYear` a `Price`. Zde je scatter plot ukazující druhý vztah: +To naznačuje, že by tam měla být nějaká korelace, a můžeme zkusit vytrénovat lineární regresní model, který předpovídá vztah mezi `Month` a `Price`, nebo mezi `DayOfYear` a `Price`. Zde je scatterplot ukazující druhý vztah: -Scatter plot Price vs. Day of Year +Scatterplot cena vs. den v roce -Podívejme se, jestli existuje korelace pomocí funkce `corr`: +Podíváme se, jestli korelace existuje pomocí funkce `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Zdá se, že korelace je poměrně malá, -0.15 podle `Month` a -0.17 podle `DayOfMonth`, ale může být ještě nějaký důležitý vztah. Zdá se, že existují různé shluky cen odpovídající různým odrůdám dýní. Abychom tuto hypotézu potvrdili, vykreslíme každou kategorii dýní jinou barvou. Předáním parametru `ax` do funkce `scatter` můžeme všechny body vykreslit do stejného grafu: +Zdá se, že korelace je dost malá, -0.15 podle `Month` a -0.17 podle `DayOfYear`, ale může tu být jiný důležitý vztah. Zdá se, že existují různé shluky cen odpovídající různým odrůdám dýní. Abychom tento předpoklad potvrdili, vykreslíme každou kategorii dýní pomocí jiné barvy. Předáním parametru `ax` funkci `scatter` můžeme všechny body vykreslit do stejného grafu: ```python ax=None @@ -141,34 +140,34 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot Price vs. Day of Year color +Scatterplot cena vs. den v roce s barvami -Naše vyšetřování naznačuje, že odrůda má větší vliv na celkovou cenu než skutečné datum prodeje. Vidíme to na sloupcovém diagramu: +Naše šetření naznačuje, že odrůda má na celkovou cenu větší vliv než skutečné datum prodeje. Vidíme to na sloupcovém grafu: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Sloupcový graf cena podle odrůdy +Sloupcový graf ceny podle odrůdy -Zaměříme se nyní pouze na jednu odrůdu dýní, 'pie type', a podíváme se, jaký vliv má datum na cenu: +Teď se zaměřme jen na jednu odrůdu dýně, 'pie type', a uvidíme, jaký vliv má datum na cenu: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot Price vs. Day of Year +Scatterplot cena vs. den v roce pro dýně typu pie -Pokud nyní spočítáme korelaci mezi `Price` a `DayOfYear` pomocí funkce `corr`, dostaneme hodnotu cca `-0.27` - což znamená, že má smysl trénovat prediktivní model. +Pokud nyní vypočítáme korelaci mezi `Price` a `DayOfYear` pomocí funkce `corr`, dostaneme něco jako `-0.27` - což znamená, že smysl má trénovat prediktivní model. -> Než začnete trénovat lineární regresní model, je důležité zajistit, že naše data jsou čistá. Lineární regrese nefunguje dobře s chybějícími hodnotami, proto je rozumné odstranit všechny prázdné buňky: +> Před trénováním lineárního regresního modelu je důležité zajistit, že naše data jsou čistá. Lineární regrese nefunguje dobře s chybějícími hodnotami, proto je vhodné se zbavit všech prázdných buněk: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Jiný přístup by byl tyto prázdné hodnoty vyplnit průměrnými hodnotami z příslušného sloupce. +Další přístup by byl vyplnit chybějící hodnoty průměrem odpovídajícího sloupce. ## Jednoduchá lineární regrese @@ -176,7 +175,7 @@ Jiný přístup by byl tyto prázdné hodnoty vyplnit průměrnými hodnotami z > 🎥 Klikněte na obrázek výše pro krátké video shrnutí lineární a polynomiální regrese. -Pro trénink našeho modelu lineární regrese použijeme knihovnu **Scikit-learn**. +Pro trénování našeho modelu lineární regrese použijeme knihovnu **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -184,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Začneme oddělením vstupních hodnot (vlastností) a očekávaného výstupu (štítku) do samostatných numpy polí: +Začínáme tím, že oddělíme vstupní hodnoty (rysy) a očekávaný výstup (cílovou proměnnou) do samostatných numpy polí: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Všimněte si, že jsme museli provést `reshape` vstupních dat, aby je balíček lineární regrese správně pochopil. Lineární regrese očekává jako vstup 2D pole, kde každý řádek pole odpovídá vektoru vstupních vlastností. V našem případě, protože máme jen jeden vstup, potřebujeme pole s rozměrem N×1, kde N je velikost datasetu. +> Všimněte si, že jsme museli použít `reshape` na vstupní data, aby je balíček Linear Regression správně pochopil. Lineární regrese očekává jako vstup 2D pole, kde každý řádek pole odpovídá vektoru vstupních rysů. V našem případě, protože máme pouze jeden vstup, potřebujeme pole s tvarem N×1, kde N je velikost datasetu. -Poté musíme data rozdělit na trénovací a testovací sady, abychom mohli ověřit náš model po tréninku: +Pak musíme data rozdělit na trénovací a testovací dataset, abychom mohli po trénování model ověřit: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Nakonec trénink samotného modelu lineární regrese zabere jen dva řádky kódu. Definujeme objekt `LinearRegression` a přizpůsobíme ho našim datům pomocí metody `fit`: +Nakonec samotné trénování modelu lineární regrese zabere jen dva řádky kódu. Definujeme objekt `LinearRegression` a přizpůsobíme jej našim datům pomocí metody `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objekt `LinearRegression` po `fit`-ování obsahuje všechny koeficienty regrese, ke kterým lze přistupovat pomocí vlastnosti `.coef_`. V našem případě je zde pouze jeden koeficient, který by měl být kolem `-0.017`. To znamená, že se ceny s časem zdají mírně snižovat, ale ne příliš, asi o 2 centy za den. K průsečíku regrese s osou Y můžeme přistoupit pomocí `lin_reg.intercept_` - v našem případě bude kolem `21`, což znamená cenu na začátku roku. +Objekt `LinearRegression` po provedení `fit` obsahuje všechny koeficienty regrese, ke kterým lze přistupovat pomocí vlastnosti `.coef_`. V našem případě je zde pouze jeden koeficient, který by měl být kolem hodnoty `-0.017`. To znamená, že ceny se zdají mírně snižovat v čase, ale nikoliv příliš, přibližně o 2 centy za den. Můžeme také získat průsečík regrese s osou Y pomocí `lin_reg.intercept_` - v našem případě bude kolem hodnoty `21`, což indikuje cenu na začátku roku. -Abychom zjistili, jak přesný náš model je, můžeme předpovídat ceny na testovacím datasetu a poté změřit, jak blízko jsou naše předpovědi očekávaným hodnotám. To lze provést pomocí metriky root mean square error (RMSE), což je odmocnina průměru všech čtverců rozdílů mezi očekávanou a předpovězenou hodnotou. +Abychom viděli, jak přesný náš model je, můžeme predikovat ceny na testovacích datech a pak změřit, jak blízko jsou naše predikce k očekávaným hodnotám. To lze udělat pomocí metriky střední kvadratické chyby (RMSE), což je odmocnina z průměru všech čtvercových rozdílů mezi očekávanou a predikovanou hodnotou. ```python pred = lin_reg.predict(X_test) @@ -217,36 +216,36 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Naše chyba se zdá být kolem 2 bodů, což je přibližně 17 %. Ne příliš dobré. Dalším ukazatelem kvality modelu je **koeficient determinace**, který lze získat takto: +Naše chyba se zdá být kolem 2 bodů, což je ~17 %. Není to moc dobré. Dalším ukazatelem kvality modelu je **koeficient determinace**, který lze získat takto: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Pokud je hodnota 0, znamená to, že model nebere vstupní data v úvahu a funguje jako *nejhorší lineární prediktor*, kterým je jednoduše průměrná hodnota výsledku. Hodnota 1 znamená, že můžeme dokonale předpovědět všechny očekávané výstupy. V našem případě je koeficient kolem 0,06, což je celkem nízké. +Pokud je hodnota 0, znamená to, že model nezohledňuje vstupní data a funguje jako *nejhorší lineární prediktor*, což je jednoduše průměr výsledku. Hodnota 1 znamená, že můžeme dokonale předpovědět všechny očekávané výstupy. V našem případě je koeficient kolem 0,06, což je poměrně nízké. -Můžeme také nakreslit testovací data spolu s regresní přímkou, abychom lépe viděli, jak regrese v našem případě funguje: +Můžeme také nakreslit testovací data společně s regresní přímkou, abychom lépe viděli, jak regrese v našem případě funguje: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` -Lineární regrese +Linear regression ## Polynomická regrese -Dalším typem Lineární regrese je Polynomická regrese. Zatímco někdy existuje lineární vztah mezi proměnnými - čím větší objem dýně, tím vyšší cena - někdy tyto vztahy nelze vykreslit jako rovinu nebo přímku. +Dalším typem lineární regrese je polynomická regrese. Zatímco někdy existuje lineární vztah mezi proměnnými – čím větší je dýně objemem, tím vyšší je cena – jindy tyto vztahy nelze znázornit jako rovinu nebo přímku. -✅ Zde jsou [některé další příklady](https://online.stat.psu.edu/stat501/lesson/9/9.8) dat, která by mohla využít Polynomickou regresi +✅ Zde jsou [další příklady](https://online.stat.psu.edu/stat501/lesson/9/9.8) dat, která by mohla využít polynomickou regresi. -Podívejte se znovu na vztah mezi Datem a Cenou. Zdá se, že tento scatterplot by nutně měl být analyzován pomocí přímky? Nemohou ceny kolísat? V takovém případě můžete zkusit polynomickou regresi. +Podívejte se znovu na vztah mezi Datem a Cenou. Zdá se vám, že by tento bodový graf nutně měl být analyzován přímkou? Nemohou ceny kolísat? V takovém případě můžete zkusit polynomickou regresi. -✅ Polynomické výrazy jsou matematické výrazy, které mohou sestávat z jedné nebo více proměnných a koeficientů. +✅ Polynomy jsou matematické výrazy, které mohou obsahovat jednu nebo více proměnných a koeficientů. -Polynomická regrese vytváří zakřivenou čáru, aby lépe seděla na nelineární data. V našem případě, pokud do vstupních dat zahrneme druhou mocninu proměnné `DayOfYear`, měli bychom být schopni fitovat naše data parabolickou křivkou, která bude mít minimum v určitém bodě během roku. +Polynomická regrese vytváří zakřivenou čáru, která lépe sedí na nelinární data. V našem případě, pokud do vstupních dat zahrneme proměnnou `DayOfYear` umocněnou na druhou, měli bychom být schopni naše data vhodně přizpůsobit parabolickou křivkou, která bude mít minimum v určitém bodě během roku. -Knihovna Scikit-learn obsahuje užitečné [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) pro spojení různých kroků zpracování dat. **Pipeline** je řetězec **estimatorů**. V našem případě vytvoříme pipeline, která nejprve přidá polynomické funkce k našemu modelu a pak provede trénování regrese: +Knihovna Scikit-learn obsahuje užitečné [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) pro spojení různých kroků zpracování dat dohromady. **Pipeline** je řetězec **odhadovačů**. V našem případě vytvoříme pipeline, která nejprve přidá polynomické rysy do modelu a poté naučí regresi: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Použití `PolynomialFeatures(2)` znamená, že zahrneme všechny druhé mocniny polynomů z vstupních dat. V našem případě to bude jen `DayOfYear`2, ale pokud máme dvě vstupní proměnné X a Y, přidá to X2, XY a Y2. Můžeme také použít polynomy vyššího stupně, pokud chceme. +Použití `PolynomialFeatures(2)` znamená, že zahrneme všechny polynomy druhého stupně z vstupních dat. V našem případě to bude znamenat pouze `DayOfYear`2, ale pokud máme dvě vstupní proměnné X a Y, přidá to X2, XY a Y2. Můžeme použít i polynomy vyššího stupně, pokud chceme. + +Pipeline lze používat stejným způsobem jako původní objekt `LinearRegression`, tj. můžeme `fit` pipeline a pak použít `predict` pro získání predikcí: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Pro vykreslení hladké aproximační křivky použijeme `np.linspace` k vytvoření rovnoměrného rozsahu vstupních hodnot, místo přímého vykreslení na neuspořádaná testovací data (což by vedlo k zubaté linii): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline lze používat stejným způsobem jako původní objekt `LinearRegression`, tj. můžeme pipeline `fit`-nout a pak použít `predict` pro získání výsledků predikce. Zde je graf ukazující testovací data a aproximační křivku: +Zde je graf zobrazující testovací data a aproximační křivku: -Polynomická regrese +Polynomial regression -Použitím polynomické regrese můžeme získat mírně nižší MSE a vyšší koeficient determinace, ale nikoliv výrazně. Musíme vzít v úvahu také další vlastnosti! +Použitím polynomické regrese můžeme dosáhnout mírně nižší RMSE a vyšší determinace, ale ne významně. Musíme vzít v úvahu další vlastnosti! -> Můžete vidět, že minimální ceny dýní se zaznamenávají někde kolem Halloweenu. Jak byste to vysvětlili? +> Můžete vidět, že nejnižší ceny dýní jsou pozorovány někde kolem Halloweenu. Jak byste to vysvětlili? -🎃 Gratulujeme, právě jste vytvořili model, který může pomoci předpovědět cenu dýňových koláčů. Pravděpodobně můžete zopakovat stejný postup pro všechny typy dýní, ale to by bylo únavné. Naučíme se nyní, jak zohlednit odrůdu dýně v našem modelu! +🎃 Gratulujeme, právě jste vytvořili model, který může pomoci předpovědět cenu dýně na koláč. Pravděpodobně byste mohli stejný postup opakovat pro všechny typy dýní, ale to by bylo zdlouhavé. Naučme se nyní, jak do našeho modelu vzít v úvahu odrůdu dýně! ## Kategorie vlastností -V ideálním světě chceme být schopni předpovídat ceny různých odrůd dýní pomocí jednoho modelu. Sloupec `Variety` je však poněkud odlišný od sloupců jako `Month`, protože obsahuje nenumerické hodnoty. Takové sloupce se nazývají **kategoriální**. +V ideálním světě chceme být schopni předpovědět ceny pro různé odrůdy dýní pomocí stejného modelu. Nicméně sloupec `Variety` se liší od sloupců jako `Month`, protože obsahuje číslicové hodnoty. Takové sloupce se nazývají **kategoriální**. [![ML pro začátečníky - Předpovědi kategoriálních vlastností pomocí lineární regrese](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML pro začátečníky - Předpovědi kategoriálních vlastností pomocí lineární regrese") -> 🎥 Klikněte na obrázek výše pro krátký video přehled použití kategoriálních vlastností. +> 🎥 Klikněte na obrázek výše pro krátké video o použití kategoriálních vlastností. Zde vidíte, jak průměrná cena závisí na odrůdě: -Průměrná cena podle odrůdy +Average price by variety -Abychom vzali odrůdu v úvahu, musíme ji nejprve převést do numerické formy, tj. **zakódovat** ji. Existuje několik způsobů, jak toho dosáhnout: +Abychom vzali odrůdu v úvahu, musíme ji nejprve převést do číselné formy, tedy **zakódovat**. Existuje několik způsobů, jak to udělat: -* Jednoduché **číselné kódování** vytvoří tabulku různých odrůd, a pak nahradí název odrůdy indexem z této tabulky. To ale není nejlepší nápad pro lineární regresi, protože lineární regrese vezme skutečnou číselnou hodnotu indexu a přidá ji k výsledku, násobenou nějakým koeficientem. Ve našem případě je vztah mezi číslem indexu a cenou zjevně nelineární, i když zajistíme, že indexy budou v určitém specifickém pořadí. -* **One-hot encoding** nahradí sloupec `Variety` čtyřmi různými sloupci, každým pro jednu odrůdu. Každý sloupec bude obsahovat `1`, pokud odpovídající řádek patří dané odrůdě, a `0` jinak. To znamená, že v lineární regresi budou čtyři koeficienty, každý pro jednu odrůdu dýně, odpovědné za "počáteční cenu" (spíše "příplatek") za tuto konkrétní odrůdu. +* Jednoduché **číselné kódování** vytvoří tabulku různých odrůd a pak nahradí název odrůdy indexem v této tabulce. To není nejlepší nápad pro lineární regresi, protože lineární regrese bere skutečnou numerickou hodnotu indexu a přičítá ji do výsledku vynásobenou nějakým koeficientem. V našem případě je vztah mezi číslem indexu a cenou evidentně nelineární, i když zajistíme, že indexy jsou seřazeny určitým způsobem. +* **One-hot encoding** nahradí sloupec `Variety` čtyřmi různými sloupci, jedním pro každou odrůdu. Každý sloupec bude obsahovat `1`, pokud odpovídající řádek patří dané odrůdě, a `0` jinak. To znamená, že v lineární regresi budou čtyři koeficienty, jeden pro každou odrůdu dýně, zodpovědný za „počáteční cenu“ (nebo spíše „přídavnou cenu“) pro tu která odrůdu. -Níže uvedený kód ukazuje, jak můžeme one-hot kódovat odrůdu: +Níže uvedený kód ukazuje, jak můžeme použít one-hot encoding pro odrůdu: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -K natrénování lineární regrese s one-hot kódovanou odrůdou jako vstupem stačí správně inicializovat data `X` a `y`: +Pro trénování lineární regrese s použitím one-hot zakódované odrůdy jako vstupu stačí správně inicializovat data `X` a `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Zbytek kódu je stejný jako ten, který jsme použili výše k trénování lineární regrese. Pokud to vyzkoušíte, uvidíte, že střední kvadratická chyba je přibližně stejná, ale získáme výrazně vyšší koeficient determinace (~77 %). Pro ještě přesnější předpovědi můžeme vzít v úvahu více kategoriálních vlastností, stejně jako číselné vlastnosti, například `Month` nebo `DayOfYear`. Pro získání jednoho velkého pole vlastností můžeme použít `join`: +Zbytek kódu je stejný jako výše použité pro trénování lineární regrese. Pokud to vyzkoušíte, uvidíte, že střední čtvercová chyba je přibližně stejná, ale koeficient determinace je mnohem vyšší (~77 %). Pro ještě přesnější predikce můžeme vzít v potaz více kategoriálních vlastností, stejně jako numerické vlastnosti, jako `Month` nebo `DayOfYear`. Pro získání jedné velké matice vlastností můžeme použít `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Zde také vezmeme v úvahu `City` a typ `Package`, což nám dává MSE 2.84 (10 %) a determinaci 0.94! +Zde také zahrnujeme `City` a typ `Package`, což nám dává RMSE 2.84 (10,5 %), a determinaci 0.94! ## Spojení všeho dohromady -Pro nejlepší model můžeme použít kombinovaná (one-hot kódovaná kategoriální + numerická) data z výše uvedeného příkladu společně s polynomickou regresí. Zde je kompletní kód pro vaše pohodlí: +Pro vytvoření nejlepšího modelu můžeme použít kombinovaná data (kategoriální zakódovaná + numerická) z výše uvedeného příkladu spolu s polynomickou regresí. Zde je kompletní kód pro vaši pohodlnost: ```python -# nastavit tréninková data +# nastavte tréninková data X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# provést rozdělení na tréninkovou a testovací sadu +# proveďte rozdělení na tréninkovou a testovací sadu X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# nastavit a trénovat pipeline +# nastavte a vytrénujte pipeline pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# předpovědět výsledky pro testovací data +# predikujte výsledky pro testovací data pred = pipeline.predict(X_test) -# vypočítat střední kvadratickou chybu a koeficient determinace -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# vypočítejte RMSE a koeficient determinace +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Toto by nám mělo dát nejlepší koeficient determinace téměř 97 % a MSE=2.23 (~8% chyba předpovědi). +To by nám mělo dát nejlepší koeficient determinace téměř 97 % a RMSE=2.23 (~8 % chyba predikce). -| Model | MSE | Determinace | +| Model | RMSE | Determinace | |-------|-----|-------------| | Lineární `DayOfYear` | 2.77 (17,2 %) | 0.07 | -| Polynomický `DayOfYear` | 2.73 (17,0 %) | 0.08 | +| Polynomická `DayOfYear` | 2.73 (17,0 %) | 0.08 | | Lineární `Variety` | 5.24 (19,7 %) | 0.77 | -| Lineární všechny vlastnosti | 2.84 (10,5 %) | 0.94 | -| Polynomický všechny vlastnosti | 2.23 (8,25 %) | 0.97 | +| Všechny vlastnosti lineární | 2.84 (10,5 %) | 0.94 | +| Všechny vlastnosti polynomická | 2.23 (8,25 %) | 0.97 | -🏆 Dobrá práce! Vytvořili jste čtyři regresní modely v jedné lekci a zlepšili kvalitu modelu na 97 %. V závěrečné části o regresi se naučíte o logistické regresi pro určení kategorií. +🏆 Výborně! V jedné lekci jste vytvořili čtyři regresní modely a zlepšili kvalitu modelu na 97 %. V poslední části o regresi se naučíte o logistické regresi pro určení kategorií. --- ## 🚀Výzva -Otestujte v tomto notebooku několik různých proměnných a zjistěte, jak korelace odpovídá přesnosti modelu. +Vyzkoušejte několik různých proměnných v tomto notebooku a zjistěte, jak korelace odpovídá přesnosti modelu. -## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/) +## [Kvíz po lekci](https://ff-quizzes.netlify.app/en/ml/) -## Přezkum a samostudium +## Recenze & samostatné studium -V této lekci jsme se naučili o lineární regresi. Existují další důležité typy regrese. Přečtěte si o technikách Stepwise, Ridge, Lasso a Elasticnet. Dobrým kurzem ke studiu je [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +V této lekci jsme se naučili o lineární regresi. Existují i další důležité typy regrese. Přečtěte si o technikách Stepwise, Ridge, Lasso a Elasticnet. Dobrým kurzem k dalšímu studiu je [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Zadání +## Zadání -[Postavte model](assignment.md) +[Vytvořte model](assignment.md) --- -**Prohlášení o vyloučení odpovědnosti**: -Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). I když usilujeme o přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro zásadní informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné výklady vzniklé použitím tohoto překladu. +**Upozornění**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). I když usilujeme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nejsme zodpovědní za jakákoliv nedorozumění nebo mylné výklady vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/2-Regression/3-Linear/solution/notebook.ipynb b/translations/cs/2-Regression/3-Linear/solution/notebook.ipynb index 5d619e99c1..df91a9f169 100644 --- a/translations/cs/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/cs/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineární a polynomiální regrese pro stanovení cen dýní - Lekce 3\n", + "## Lineární a polynomiální regrese pro oceňování dýní - Lekce 3\n", "\n", "Načtěte potřebné knihovny a dataset. Převést data na dataframe obsahující podmnožinu dat:\n", "\n", - "- Získat pouze dýně oceněné podle množství na bušl\n", + "- Získat pouze dýně oceněné za bušl\n", "- Převést datum na měsíc\n", "- Vypočítat cenu jako průměr vysokých a nízkých cen\n", - "- Převést cenu tak, aby odrážela stanovení ceny podle množství na bušl\n" + "- Převést cenu tak, aby odrážela ocenění podle množství bušl\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Bodový graf nám připomíná, že máme údaje pouze od srpna do prosince. Pravděpodobně potřebujeme více dat, abychom mohli vyvozovat závěry lineárním způsobem.\n" + "Bodový graf nám připomíná, že máme data pouze za měsíce od srpna do prosince. Pravděpodobně potřebujeme více dat, abychom mohli činit závěry lineárním způsobem.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Podívejme se, zda existuje korelace:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vypadá to, že korelace je poměrně malá, ale existuje nějaký jiný důležitější vztah - protože cenové body v grafu výše se zdají mít několik odlišných shluků. Udělejme graf, který ukáže různé odrůdy dýní:\n" + "Vypadá to, že korelace je poměrně malá, ale existuje nějaký jiný důležitější vztah – protože cenové body v grafu výše se zdají mít několik odlišných shluků. Vytvořme graf, který ukáže různé odrůdy dýní:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Prozatím se soustřeďme pouze na jednu odrůdu - **typ koláče**.\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sklon přímky lze určit z koeficientů lineární regrese:\n" + "Směrnici přímky lze určit z koeficientů lineární regrese:\n" ] }, { @@ -689,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Můžeme použít natrénovaný model k predikci ceny:\n" + "Můžeme použít natrénovaný model k předpovědi ceny:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Polynomická regrese\n", "\n", - "Někdy je vztah mezi vlastnostmi a výsledky přirozeně nelineární. Například ceny dýní mohou být vysoké v zimě (měsíce=1,2), poté klesnout během léta (měsíce=5-7) a následně opět vzrůst. Lineární regrese není schopna tento vztah přesně zachytit.\n", + "Někdy je vztah mezi rysy a výsledky inherentně nelineární. Například ceny dýní mohou být vysoké v zimě (měsíce=1,2), pak během léta (měsíce=5-7) klesnout a poté opět vzrůst. Lineární regrese tuto závislost nedokáže přesně zachytit.\n", "\n", - "V takovém případě můžeme zvážit přidání dalších vlastností. Jednoduchým způsobem je použití polynomů z vstupních vlastností, což vede k **polynomické regresi**. Ve Scikit Learn můžeme automaticky předpočítat polynomické vlastnosti pomocí pipeline:\n" + "V takovém případě můžeme zvážit přidání dalších rysů. Jednoduchým způsobem je použití polynomů vstupních rysů, což by vedlo k **polynomické regresi**. Ve Scikit Learn můžeme automaticky předpočítat polynomické rysy pomocí pipeline: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kódování odrůd\n", + "### Varianty kódování\n", "\n", - "V ideálním světě bychom chtěli být schopni předpovídat ceny různých odrůd dýní pomocí stejného modelu. Abychom mohli zohlednit odrůdu, musíme ji nejprve převést do číselné podoby, tedy **zakódovat**. Existuje několik způsobů, jak to udělat:\n", + "V ideálním světě chceme být schopni předpovídat ceny různých odrůd dýní pomocí stejného modelu. Abychom vzali odrůdu v úvahu, nejprve ji musíme převést do číselné podoby, tedy **zakódovat**. Existuje několik způsobů, jak to lze provést:\n", "\n", - "* Jednoduché číselné kódování, které vytvoří tabulku různých odrůd a poté nahradí název odrůdy indexem v této tabulce. To není nejlepší nápad pro lineární regresi, protože lineární regrese bere číselnou hodnotu indexu v úvahu, a číselná hodnota pravděpodobně nebude numericky korelovat s cenou.\n", - "* One-hot kódování, které nahradí sloupec `Variety` čtyřmi různými sloupci, každý pro jednu odrůdu, které budou obsahovat hodnotu 1, pokud odpovídající řádek patří dané odrůdě, a 0 v opačném případě.\n", + "* Jednoduché číselné kódování, které vytvoří tabulku různých odrůd a pak nahradí název odrůdy jejím indexem v této tabulce. To není nejlepší nápad pro lineární regresi, protože lineární regrese bere číselnou hodnotu indexu v potaz a číselná hodnota pravděpodobně nebude numericky korelovat s cenou.\n", + "* One-hot kódování, které nahradí sloupec `Variety` čtyřmi různými sloupci, po jednom pro každou odrůdu, které budou obsahovat 1, pokud příslušný řádek odpovídá dané odrůdě, a 0 jinak.\n", "\n", - "Níže uvedený kód ukazuje, jak můžeme provést one-hot kódování odrůdy:\n" + "Níže uvedený kód ukazuje, jak lze odrůdu zakódovat pomocí one-hot kódování:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineární regrese na odrůdě\n", + "### Lineární regrese podle odrůdy\n", "\n", - "Nyní použijeme stejný kód jako výše, ale místo `DayOfYear` použijeme naši one-hot-enkódovanou odrůdu jako vstup:\n" + "Nyní použijeme stejný kód jako výše, ale místo `DayOfYear` použijeme jako vstup naši one-hot zakódovanou odrůdu:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Můžeme také zkusit použít jiné funkce stejným způsobem a zkombinovat je s číselnými funkcemi, jako jsou `Month` nebo `DayOfYear`:\n" + "Můžeme také zkusit použít jiné vlastnosti stejným způsobem a kombinovat je s číselnými vlastnostmi, jako například `Month` nebo `DayOfYear`:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polynomická regrese\n", "\n", - "Polynomická regrese může být také použita s kategoriálními prvky, které jsou zakódovány pomocí one-hot encodingu. Kód pro trénování polynomické regrese by byl v podstatě stejný jako ten, který jsme viděli výše.\n" + "Polynomická regrese může být také použita s kategoriálními rysy, které jsou one-hot kódované. Kód pro trénování polynomické regrese by byl v podstatě stejný jako ten, který jsme viděli výše.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Prohlášení**: \nTento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o co největší přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za závazný zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné výklady vyplývající z použití tohoto překladu.\n" + "---\n\n\n**Upozornění**: \nTento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). I když usilujeme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho rodném jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoliv nedorozumění nebo špatné interpretace vyplývající z použití tohoto překladu.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:19:01+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "cs" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/hu/.co-op-translator.json b/translations/hu/.co-op-translator.json index 2c2a62960f..47a5892e8d 100644 --- a/translations/hu/.co-op-translator.json +++ b/translations/hu/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "hu" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T16:03:22+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:02:43+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "hu" }, @@ -90,8 +90,8 @@ "language_code": "hu" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:29:15+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:02:03+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "hu" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "hu" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:59:07+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "hu" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T15:15:21+00:00", diff --git a/translations/hu/1-Introduction/4-techniques-of-ML/README.md b/translations/hu/1-Introduction/4-techniques-of-ML/README.md index 99471ee9c7..8f2878be49 100644 --- a/translations/hu/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/hu/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Gépi tanulás technikái -A gépi tanulási modellek és az általuk használt adatok létrehozása, használata és karbantartása nagyon eltérő folyamat, mint sok más fejlesztési munkafolyamat. Ebben a leckében eloszlatjuk a folyamat körüli homályt, és bemutatjuk azokat a fő technikákat, amelyeket ismerned kell. A következőket fogod megtanulni: +A gépi tanulási modellek és az általuk használt adatok felépítésének, használatának és karbantartásának folyamata nagyon eltér sok más fejlesztési munkafolyamattól. Ebben a leckében ezt a folyamatot megértjük, és áttekintjük a legfontosabb technikákat, amelyeket ismerned kell. Meg fogod érteni: -- Megérteni a gépi tanulás alapvető folyamatait. -- Felfedezni az alapfogalmakat, mint például a „modellek”, „előrejelzések” és „tanító adatok”. +- A gépi tanulást alátámasztó folyamatokat magas szinten. +- Alapfogalmakat, például „modellek”, „előrejelzések” és „képzési adatok”. -## [Előzetes kvíz](https://ff-quizzes.netlify.app/en/ml/) +## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) [![Gépi tanulás kezdőknek - Gépi tanulás technikái](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Gépi tanulás kezdőknek - Gépi tanulás technikái") -> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja ezt a leckét. +> 🎥 Kattints a fenti képre egy rövid videó megtekintéséhez, amely bemutatja ezt a leckét. ## Bevezetés -Magas szinten nézve a gépi tanulási (ML) folyamatok létrehozása több lépésből áll: +Magas szinten a gépi tanulási (ML) folyamatok megalkotásának művészete több lépésből áll: -1. **Határozd meg a kérdést**. A legtöbb ML folyamat egy olyan kérdés feltevésével kezdődik, amelyet nem lehet egyszerű feltételes programmal vagy szabályalapú motorral megválaszolni. Ezek a kérdések gyakran az adatok gyűjteménye alapján történő előrejelzések körül forognak. -2. **Gyűjtsd össze és készítsd elő az adatokat**. Ahhoz, hogy megválaszolhasd a kérdésedet, adatokra van szükséged. Az adatok minősége és néha mennyisége határozza meg, hogy mennyire jól tudod megválaszolni az eredeti kérdésedet. Az adatok vizualizálása fontos része ennek a fázisnak. Ez a fázis magában foglalja az adatok tanító és tesztelő csoportokra való felosztását a modell építéséhez. -3. **Válassz egy tanítási módszert**. A kérdésed és az adataid jellege alapján ki kell választanod, hogyan szeretnéd tanítani a modellt, hogy az a legjobban tükrözze az adataidat, és pontos előrejelzéseket készítsen. Ez az ML folyamat azon része, amely specifikus szakértelmet igényel, és gyakran jelentős mennyiségű kísérletezést. -4. **Tanítsd a modellt**. A tanító adataidat használva különböző algoritmusok segítségével tanítasz egy modellt, hogy felismerje az adatokban rejlő mintázatokat. A modell belső súlyokat használhat, amelyeket úgy lehet beállítani, hogy bizonyos adatokat előnyben részesítsen másokkal szemben, hogy jobb modellt építsen. -5. **Értékeld a modellt**. Az összegyűjtött adatokból származó, korábban nem látott adatok (tesztelő adatok) segítségével ellenőrzöd, hogyan teljesít a modell. -6. **Paraméterek finomhangolása**. A modell teljesítménye alapján újra elvégezheted a folyamatot különböző paraméterek vagy változók használatával, amelyek az algoritmusok viselkedését szabályozzák. -7. **Előrejelzés**. Új bemenetek segítségével tesztelheted a modell pontosságát. +1. **Döntsd el a kérdést**. A legtöbb ML folyamat egy olyan kérdéssel kezdődik, amelyre nem lehet egyszerű feltételes programmal vagy szabályalapú motorral választ adni. Ezek a kérdések gyakran adatok alapján történő előrejelzésekhez kapcsolódnak. +2. **Gyűjtsd össze és készítsd elő az adatokat**. Ahhoz, hogy válaszolni tudj a kérdésedre, adatokra van szükséged. Az adatok minősége és néha mennyisége fogja meghatározni, hogy milyen jól tudod megválaszolni az eredeti kérdést. Az adatvizualizáció fontos része ennek a fázisnak. Ez a szakasz az adatok képzési és tesztelési csoportokra való felosztását is magában foglalja a modell felépítéséhez. +3. **Válassz képzési módszert**. A kérdésedtől és az adatok természetétől függően ki kell választanod, hogy hogyan szeretnél egy modellt tanítani, hogy az a legjobban tükrözze az adatokat és pontos előrejelzéseket adjon. Ez a gépi tanulási folyamat azon része, amely különleges szakértelmet igényel, és gyakran jelentős kísérletezést. +4. **Tanítsd meg a modellt**. A képzési adataid felhasználásával különböző algoritmusok segítségével tanítasz egy modellt, hogy felismerje az adatmintázatokat. A modell belső súlyokat alkalmazhat, amelyeket beállíthatsz, hogy bizonyos részeit az adatoknak előnyben részesítse a jobb modell érdekében. +5. **Értékeld ki a modellt**. Soha nem látott adatokkal (tesztelési adatokkal) ellenőrzöd, hogyan teljesít a modell. +6. **Paraméterhangolás**. A modell teljesítménye alapján újra végrehajthatod a folyamatot eltérő paraméterekkel, vagyis változókkal, amelyek irányítják az algoritmusok viselkedését a modell képzése során. +7. **Előrejelzés**. Új bemenetek használata a modell pontosságának tesztelésére. -## Milyen kérdést tegyünk fel? +## Milyen kérdést tegyünk fel -A számítógépek különösen ügyesek az adatokban rejtett mintázatok felfedezésében. Ez a képesség nagyon hasznos a kutatók számára, akik olyan kérdéseket tesznek fel egy adott területen, amelyeket nem lehet könnyen megválaszolni feltételes szabálymotor létrehozásával. Például egy aktuáriusi feladat esetén egy adatkutató képes lehet kézzel készített szabályokat alkotni a dohányosok és nem dohányosok halálozási arányáról. +A számítógépek különösen jók az adatokban rejtett minták felfedezésében. Ez a képesség nagyon hasznos a kutatók számára, akik olyan kérdéseket tesznek fel adott területen, amelyekre nem könnyű válaszolni feltételes szabálymotor készítésével. Egy aktuáriusi feladat esetén például egy adattudós kézzel készített szabályokat dolgozhat ki a dohányzók és nem dohányzók halálozási arányára. -Ha azonban sok más változót is figyelembe veszünk, egy ML modell hatékonyabb lehet a jövőbeli halálozási arányok előrejelzésére a korábbi egészségügyi előzmények alapján. Egy vidámabb példa lehet az áprilisi időjárás előrejelzése egy adott helyen olyan adatok alapján, mint szélesség, hosszúság, éghajlatváltozás, óceán közelsége, jet stream mintázatok és még sok más. +Amikor azonban sok más változót is figyelembe vesznek, egy ML modell hatékonyabb lehet a jövőbeli halálozási arány előrejelzésében a múltbeli egészségi adatok alapján. Egy derűsebb példa lehet az áprilisi időjárás előrejelzése egy adott területen, figyelembe véve az adatokat, például a szélességi és hosszúsági fokot, az éghajlatváltozást, a tenger közelségét, a sugáráramlat mintázatait és még sok mást. -✅ Ez a [prezentáció](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) az időjárási modellekről történelmi perspektívát nyújt az ML időjárás-elemzésben való használatáról. +✅ Ez az [időjárási modellekről szóló diákkészlet](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) történelmi perspektívát kínál a gépi tanulás időjárási elemzésben való alkalmazásához. -## Modellépítés előtti feladatok +## Előkészületek -Mielőtt elkezdenéd a modell építését, számos feladatot kell elvégezned. Ahhoz, hogy tesztelhesd a kérdésedet és hipotézist alkothass a modell előrejelzései alapján, azonosítanod és konfigurálnod kell néhány elemet. +Mielőtt elkezdenéd a modell építését, több feladatot el kell végezned. A kérdés teszteléséhez, illetve a modell előrejelzésein alapuló hipotézis kialakításához azonosítanod és konfigurálnod kell több elemet. ### Adatok -Ahhoz, hogy bármilyen bizonyossággal megválaszolhasd a kérdésedet, megfelelő mennyiségű és típusú adatra van szükséged. Ezen a ponton két dolgot kell tenned: +Ahhoz, hogy bármilyen bizonyossággal válaszolni tudj a kérdésedre, megfelelő mennyiségű és megfelelő típusú adatra van szükséged. Ebben a pontban két dolgot kell tenned: -- **Adatok gyűjtése**. Az előző leckében tárgyalt adatelemzési méltányosságot szem előtt tartva gyűjtsd össze az adataidat gondosan. Légy tisztában az adatok forrásaival, az esetleges benne rejlő torzításokkal, és dokumentáld az eredetüket. -- **Adatok előkészítése**. Az adatok előkészítési folyamatának több lépése van. Lehet, hogy össze kell gyűjtened és normalizálnod kell az adatokat, ha különböző forrásokból származnak. Az adatok minőségét és mennyiségét különböző módszerekkel javíthatod, például szöveges adatok számokká alakításával (ahogy a [Klaszterezés](../../5-Clustering/1-Visualize/README.md) során tesszük). Új adatokat is generálhatsz az eredeti alapján (ahogy a [Kategorizálás](../../4-Classification/1-Introduction/README.md) során tesszük). Az adatokat tisztíthatod és szerkesztheted (ahogy a [Webalkalmazás](../../3-Web-App/README.md) lecke előtt tesszük). Végül lehet, hogy véletlenszerűsítened és keverned kell az adatokat, az alkalmazott tanítási technikák függvényében. +- **Adatgyűjtés**. A korábbi adatelemzési igazságosságról szóló leckére emlékezve, gyűjtsd az adatokat gondosan. Legyél tudatában az adatok forrásának, esetleges torzításainak, és dokumentáld azok eredetét. +- **Adatelőkészítés**. Az adatok előkészítése több lépést foglal magában. Összeszítheted és normalizálhatod az adatokat, ha azok különböző forrásból származnak. Javíthatod az adatok minőségét és mennyiségét különböző módszerekkel, például sztringek számokká konvertálásával (ahogy a [Klaszterezés](../../5-Clustering/1-Visualize/README.md) leckében tesszük). Új adatokat is generálhatsz az eredeti alapján (ahogy a [Klasszifikáció](../../4-Classification/1-Introduction/README.md) leckében is). Az adatokat tisztíthatod és szerkesztheted (ahogyan a [Web App](../../3-Web-App/README.md) leckéhez előkészítjük). Végül lehet, hogy véletlenszerűvé kell tenned, és át kell keverned az adatot a választott képzési technikáidtól függően. -✅ Miután összegyűjtötted és feldolgoztad az adatokat, szánj egy pillanatot arra, hogy megnézd, az adatok formája lehetővé teszi-e számodra a tervezett kérdés megválaszolását. Lehet, hogy az adatok nem teljesítenek jól az adott feladatban, ahogy azt a [Klaszterezés](../../5-Clustering/1-Visualize/README.md) leckékben felfedezzük! +✅ Az adatok összegyűjtése és feldolgozása után szánj egy pillanatot arra, hogy megnézd, az adatok formája megfelel-e a szándékolt kérdés megválaszolásához. Lehet, hogy az adat nem fog jól teljesíteni az adott feladatban, ahogy azt a [Klaszterezés](../../5-Clustering/1-Visualize/README.md) leckéinkben tapasztaljuk! ### Jellemzők és cél -Egy [jellemző](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) az adataid mérhető tulajdonsága. Sok adatállományban ez oszlopfejlécként jelenik meg, például „dátum”, „méret” vagy „szín”. A jellemző változók, amelyeket általában `X`-ként jelölünk a kódban, azokat a bemeneti változókat képviselik, amelyeket a modell tanítására használunk. +A [jellemző](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) az adataid mérhető tulajdonsága. Sok adatkészlet esetén oszlopfejlécként jelenik meg, például 'dátum', 'méret' vagy 'szín'. A jellemző változó, amelyet általában `X`-ként jelölünk a kódban, az a bemeneti változó, amelyet a modell betanításához használnak. -A cél az, amit megpróbálsz előre jelezni. A célt általában `y`-ként jelöljük a kódban, és az adatokkal kapcsolatos kérdésedre adott választ képviseli: decemberben milyen **színű** tökök lesznek a legolcsóbbak? San Franciscóban melyik környékeken lesz a legjobb az ingatlanok **ára**? Néha a célt címke attribútumnak is nevezik. +A cél az, amit megpróbálsz előrejelezni. A célt, amelyet általában `y`-ként jelölnek a kódban, a kérdésed megválaszolására használt válasznak tekintjük: decemberben milyen **színű** lesz a legolcsóbb tök? San Franciscóban melyik városrészeknek lesz a legjobb ingatlan **ára**? Néha a célt címkeattribútumként is emlegetik. -### Jellemző változó kiválasztása +### Válaszd ki a jellemző változót -🎓 **Jellemzők kiválasztása és kinyerése** Hogyan döntöd el, melyik változót válaszd ki a modell építésekor? Valószínűleg végig fogsz menni egy jellemzők kiválasztási vagy kinyerési folyamatán, hogy kiválaszd a legmegfelelőbb változókat a legjobb teljesítményű modellhez. Ezek azonban nem ugyanazok: „A jellemzők kinyerése új jellemzőket hoz létre az eredeti jellemzők függvényeiből, míg a jellemzők kiválasztása az eredeti jellemzők egy részhalmazát adja vissza.” ([forrás](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Jellemző kiválasztás és jellemző kinyerés** Hogyan tudod, mely változót válaszd a modell építésénél? Valószínűleg végigjársz egy jellemzőkiválasztási vagy jellemzőkinyerési folyamatot, hogy a legmegfelelőbb változókat válaszd ki a legjobban teljesítő modellhez. Ezek azonban nem ugyanazok: „A jellemzőkinyerés új jellemzőket hoz létre az eredeti jellemzők függvényeiből, míg a jellemzőkiválasztás a jellemzők egy részhalmazát adja vissza.” ([forrás](https://wikipedia.org/wiki/Feature_selection)) -### Adatok vizualizálása +### Vizualizáld az adatokat -Az adatkutató eszköztárának fontos része az adatok vizualizálásának képessége, amelyhez számos kiváló könyvtár, például Seaborn vagy MatPlotLib áll rendelkezésre. Az adatok vizuális ábrázolása lehetővé teheti, hogy rejtett összefüggéseket fedezz fel, amelyeket kihasználhatsz. A vizualizációk segíthetnek abban is, hogy torzítást vagy kiegyensúlyozatlan adatokat fedezz fel (ahogy azt a [Kategorizálás](../../4-Classification/2-Classifiers-1/README.md) során felfedezzük). +Az adattudós eszköztárának fontos eleme az adatok vizualizációjának képessége, amely számos kiváló könyvtár segítségével elérhető, például Seaborn vagy MatPlotLib. Az adatok vizuális megjelenítése lehetővé teheti rejtett korrelációk felfedezését, amelyeket kihasználhatsz. Vizualizációid segíthetnek a torzítás vagy kiegyensúlyozatlan adatok felismerésében is (ahogyan azt a [Klasszifikáció](../../4-Classification/2-Classifiers-1/README.md) leckében látjuk). -### Adatállomány felosztása +### Oszd fel az adatkészletet -A tanítás előtt fel kell osztanod az adatállományodat két vagy több, egyenlőtlen méretű részre, amelyek még mindig jól reprezentálják az adatokat. +A képzés előtt az adatokat két vagy több, méretben eltérő, de mégis jól reprezentatív részre kell bontani. -- **Tanítás**. Az adatállomány ezen része illeszkedik a modelledhez, hogy megtanítsa azt. Ez a rész az eredeti adatállomány többségét alkotja. -- **Tesztelés**. A tesztadatállomány az eredeti adatokból származó független adatok csoportja, amelyet a modell teljesítményének megerősítésére használsz. -- **Érvényesítés**. Az érvényesítési készlet egy kisebb független példák csoportja, amelyet a modell hiperparamétereinek vagy architektúrájának finomhangolására használsz, hogy javítsd a modellt. Az adatok méretétől és a kérdésedtől függően lehet, hogy nem szükséges ezt a harmadik készletet létrehozni (ahogy azt a [Idősor előrejelzés](../../7-TimeSeries/1-Introduction/README.md) leckében megjegyezzük). +- **Képzés**. Ez az adatkészlet azon része, amelyen a modellt tanítod. Ez az eredeti adatkészlet többségét alkotja. +- **Tesztelés**. A tesztadat-készlet független adatcsoport, gyakran az eredeti adatokból gyűjtve, amellyel a létrehozott modell teljesítményét ellenőrzöd. +- **Érvényesítés**. Az érvényesítő halmaz egy kisebb, független példa csoport, amellyel a modell hiperparamétereit vagy architektúráját hangolod a modell javítása érdekében. Az adatmérettől és a kérdéstől függően előfordulhat, hogy nincs szükség erre a harmadik halmazra (ahogy azt az [Idősor előrejelzés](../../7-TimeSeries/1-Introduction/README.md) leckében megjegyezzük). ## Modell építése -A tanító adataidat használva az a célod, hogy egy modellt, vagyis az adataid statisztikai reprezentációját építsd fel különböző algoritmusok segítségével, hogy **tanítsd** azt. A modell tanítása során az adatoknak való kitettség lehetővé teszi, hogy feltételezéseket tegyen az általa felfedezett mintázatokról, amelyeket érvényesít, elfogad vagy elutasít. +A képzési adathalmaz felhasználásával célod egy olyan modell, vagy statisztikai reprezentáció felépítése az adatokról, amelyet különböző algoritmusok segítségével **tanítasz**. A modell tanítása kitenni az adatnak a modellt, amely így feltételezéseket tehet az általa felfedezett, ellenőrzött és elfogadott mintákról. -### Tanítási módszer kiválasztása +### Válassz képzési módszert -A kérdésed és az adataid jellege alapján választasz egy módszert a tanításhoz. A [Scikit-learn dokumentációjának](https://scikit-learn.org/stable/user_guide.html) átlépése során - amelyet ebben a kurzusban használunk - számos módot fedezhetsz fel a modell tanítására. Tapasztalatodtól függően lehet, hogy több különböző módszert kell kipróbálnod a legjobb modell felépítéséhez. Valószínűleg egy olyan folyamaton mész keresztül, amely során az adatkutatók értékelik a modell teljesítményét azáltal, hogy nem látott adatokat adnak neki, ellenőrzik a pontosságot, torzítást és más minőségromboló problémákat, és kiválasztják a legmegfelelőbb tanítási módszert az adott feladathoz. +A kérdésedtől és az adatok természetétől függően választhatsz egy módszert a tanításhoz. A [Scikit-learn dokumentációjában](https://scikit-learn.org/stable/user_guide.html) – amelyet ebben a kurzusban használunk – számos módon megvizsgálhatod a modell tréningjét. A tapasztalatodtól függően lehet, hogy több különböző módszert ki kell próbálnod a legjobb modell felépítéséhez. Valószínűleg végig fogsz menni egy folyamaton, amelyben adatkutatók különféle, nem látott adatok betáplálásával értékelik a modell teljesítményét, ellenőrzik pontosságát, torzítását és más minőséget rontó problémákat, majd kiválasztják a feladathoz legmegfelelőbb képzési módszert. -### Modell tanítása +### Taníts meg egy modellt -A tanító adataiddal felvértezve készen állsz arra, hogy „illeszd” azokat egy modell létrehozásához. Észre fogod venni, hogy sok ML könyvtárban megtalálható a „model.fit” kód - ekkor küldöd be a jellemző változót értékek tömbjeként (általában „X”) és egy célváltozót (általában „y”). +Az adatokkal felvértezve készen állsz arra, hogy „illeszd” (fit) a modellt. Sok ML könyvtárban találkozhatsz a 'model.fit' kóddal – itt küldöd be a jellemző változót értéktömbként (általában 'X') és a célváltozót (általában 'y'). -### Modell értékelése +### Értékeld ki a modellt -Miután a tanítási folyamat befejeződött (egy nagy modell tanítása sok iterációt, vagy „epoch”-ot igényelhet), képes leszel értékelni a modell minőségét tesztadatok segítségével, hogy felmérd a teljesítményét. Ezek az adatok az eredeti adatok egy részhalmazát képezik, amelyeket a modell korábban nem elemzett. Kinyomtathatsz egy táblázatot a modell minőségéről szóló metrikákról. +Amikor a képzési folyamat befejeződik (egy nagy modellt sok iteráció, vagy „epocha” szükséges), értékelheted a modell minőségét tesztadatokkal, hogy megmérd a teljesítményét. Ez az adat az eredeti adatok egy olyan részhalmaza, amit a modell korábban nem elemzett. Ki tudsz nyomtatni egy táblázatot a modell minőségi mérőszámairól. -🎓 **Modell illesztése** +🎓 **Modellillesztés** -A gépi tanulás kontextusában a modell illesztése arra utal, hogy a modell alapvető funkciója mennyire pontosan próbálja elemezni azokat az adatokat, amelyekkel nem ismerős. +A gépi tanulás kontextusában a modellillesztés azt jelenti, hogy a modell alapvető függvénye mennyire pontos, amikor olyan adatokat próbál elemezni, amelyekhez nem szokott hozzá. -🎓 **Alulillesztés** és **túlillesztés** gyakori problémák, amelyek rontják a modell minőségét, mivel a modell vagy nem elég jól, vagy túl jól illeszkedik. Ez azt okozza, hogy a modell vagy túl szorosan, vagy túl lazán igazodik a tanító adataihoz. Egy túlillesztett modell túl jól előrejelzi a tanító adatokat, mert túl jól megtanulta az adatok részleteit és zaját. Egy alulillesztett modell nem pontos, mivel sem a tanító adatait, sem azokat az adatokat, amelyeket még nem „látott”, nem tudja pontosan elemezni. +🎓 **Alulmérés** és **túlillesztés** gyakori problémák, amelyek rontják a modell minőségét, mivel a modell vagy nem illeszkedik eléggé, vagy túl jól. Ez azt eredményezi, hogy a modell vagy túl szorosan, vagy túl lazán igazodik a képzési adathoz. Egy túlillesztett modell túl jól előrejelez a képzési adatokon, mert túl jól megtanulta az adatok részleteit és zaját. Egy alulmért modell pontatlan, mivel sem a képzési adatokat, sem azokat az adatokat nem tudja pontosan elemezni, amelyeket még nem látott. -![túlillesztett modell](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![túlillesztett modell](../../../../translated_images/hu/overfitting.1c132d92bfd93cb6.webp) > Infografika: [Jen Looper](https://twitter.com/jenlooper) -## Paraméterek finomhangolása +## Paraméterhangolás -Miután az első tanítás befejeződött, figyeld meg a modell minőségét, és fontold meg annak javítását a „hiperparaméterek” finomhangolásával. Olvass többet a folyamatról [a dokumentációban](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Miután az első képzés befejeződött, figyeld meg a modell minőségét, és fontold meg a 'hiperparaméterek' finomhangolását a modell javítása érdekében. Olvass többet a folyamatról [a dokumentációban](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Előrejelzés -Ez az a pillanat, amikor teljesen új adatokat használhatsz a modell pontosságának tesztelésére. Egy „alkalmazott” ML környezetben, ahol webes eszközöket építesz a modell használatához a gyakorlatban, ez a folyamat magában foglalhatja a felhasználói bemenetek (például egy gombnyomás) összegyűjtését egy változó beállításához, amelyet elküldesz a modellnek következtetésre vagy értékelésre. +Ez az a pillanat, amikor teljesen új adatokat használsz a modell pontosságának tesztelésére. Egy „alkalmazott” ML környezetben, ahol webes eszközöket építesz fel a modell éles használatához, ez a folyamat magában foglalhatja a felhasználói bemenet összegyűjtését (például egy gomb megnyomását), hogy egy változót állíts tele, amelyet a modellhez továbbítasz következtetéshez vagy értékeléshez. -Ezekben a leckékben felfedezed, hogyan használhatod ezeket a lépéseket az adatok előkészítésére, modellek építésére, tesztelésére, értékelésére és előrejelzésére - mindazokat a mozdulatokat, amelyeket egy adatkutató végez, és még többet, ahogy haladsz az úton, hogy „full stack” ML mérnökké válj. +Ezekben a leckékben felfedezed, hogyan használhatod ezeket a lépéseket az adatok előkészítésére, modellépítésre, tesztelésre, értékelésre és előrejelzésre – mindezt az adattudós gesztusai szerint, és még többet, ahogy haladsz az úton, hogy „full stack” ML mérnökké válj. --- ## 🚀Kihívás -Rajzolj egy folyamatábrát, amely tükrözi egy ML szakember lépéseit. Hol látod magad jelenleg a folyamatban? Hol gondolod, hogy nehézségekbe ütközöl? Mi tűnik könnyűnek számodra? +Rajzolj egy folyamatábrát, amely bemutatja a gépi tanulással foglalkozó szakember lépéseit. Hol látod magad most a folyamatban? Hol vársz nehézségeket? Mi tűnik könnyűnek számodra? -## [Utólagos kvíz](https://ff-quizzes.netlify.app/en/ml/) +## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) ## Áttekintés és önálló tanulás -Keress online interjúkat adatkutatókkal, akik a napi munkájukról beszélnek. Itt van [egy](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Keress online interjúkat olyan adattudósokkal, akik a napi munkájukról beszélnek. Itt van [egy](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Feladat -[Interjú egy adatkutatóval](assignment.md) +[Interjú egy adattudóssal](assignment.md) --- -**Felelősség kizárása**: -Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file + +**Felelősségkizárás**: +Ezt a dokumentumot az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével fordítottuk. Bár a pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt a professzionális emberi fordítás igénybevétele. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért. + \ No newline at end of file diff --git a/translations/hu/2-Regression/3-Linear/README.md b/translations/hu/2-Regression/3-Linear/README.md index 2e0ac81439..d953e3ea6b 100644 --- a/translations/hu/2-Regression/3-Linear/README.md +++ b/translations/hu/2-Regression/3-Linear/README.md @@ -1,130 +1,127 @@ -# Regressziós modell építése Scikit-learn segítségével: regresszió négyféle módon +# Regressziós modell készítése Scikit-learn segítségével: regresszió négy módon -## Kezdő jegyzet +## Kezdő megjegyzés -A lineáris regressziót akkor használjuk, amikor egy **numerikus értéket** szeretnénk előre jelezni (például ház árát, hőmérsékletet vagy eladásokat). -Az a működése, hogy megkeresi azt a legjobb egyenest, amely bemeneti jellemzők és a kimenet közötti kapcsolatot leginkább reprezentálja. +A lineáris regressziót akkor használjuk, ha egy **numerikus értéket** szeretnénk előrejelezni (például házár, hőmérséklet vagy eladás). +Ez úgy működik, hogy megtalálja azt a egyenes vonalat, amely a legjobban reprezentálja a bemeneti jellemzők és a kimenet közötti kapcsolatot. -Ebben a leckében a koncepció megértésére fókuszálunk, mielőtt fejlettebb regressziós technikákba merülnénk. -![Lineáris vs polinomiális regresszió infografika](../../../../translated_images/hu/linear-polynomial.5523c7cb6576ccab.webp) +Ebben az órában arra fókuszálunk, hogy megértsük a fogalmat, mielőtt átfogóbb regressziós technikákat fedeznénk fel. +![Lineáris vs polinomiális regresszió infografika](../../../../translated_images/hu/linear-polynomial.5523c7cb6576ccab.webp) > Infografika készítője: [Dasani Madipalli](https://twitter.com/dasani_decoded) - ## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ez a lecke elérhető R-ben is!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) - +> ### [Ez az óra R nyelven is elérhető!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Bevezetés -Eddig megvizsgáltad, hogy mi az a regresszió, mint fogalom, mintapéldákon keresztül a sütőtök árképzési adatkészletéből, amelyet a leckén át használni fogunk. Vizualizáltad is az adatokat Matplotlib segítségével. +Eddig megtanultad, hogy mi a regresszió a tök árképzési adatain keresztül, amelyeket ezen az órán végig használni fogunk. Ezt Matplotlib segítségével vizualizáltad is. -Most készen állsz, hogy mélyebbre áss a gépi tanulás regressziós modelljeiben. Míg a vizualizáció segít az adatok értelmezésében, a gépi tanulás valódi ereje az _modellek betanításából_ ered. A modelleket történelmi adatokra tanítjuk, hogy automatikusan megragadják az adatok közötti összefüggéseket, és lehetővé tegyék, hogy előrejelzéseket készítsenek új, korábban nem látott adatokról. +Most készen állsz arra, hogy mélyebben elmerülj a gépi tanulás regressziójában. Míg a vizualizáció lehetővé teszi az adatok értelmezését, a gépi tanulás valódi ereje az _modellek tanításában_ rejlik. A modelleket történelmi adatokon tanítják, hogy automatikusan felismerjék az adatok közötti összefüggéseket, és lehetővé teszik új adatok (amelyeket a modell korábban nem látott) kimenetének előrejelzését. -Ebben a leckében két regressziótípusról tanulsz: az _alap lineáris regresszióról_ és a _polinomiális regresszióról_, illetve ezek mögött álló matematikáról. Ezek a modellek lehetővé teszik, hogy előre jelezzük a sütőtök árakat a különböző bemeneti adatok alapján. +Ebben az órában két regressziótípusról tanulsz: _alap lineáris regresszió_ és _polinomiális regresszió_, valamint az ezek mögött álló matematikai háttérről. Ezek a modellek lehetővé teszik, hogy megjósoljuk a tök árát különböző bemeneti adatok alapján. -[![Gépi tanulás kezdőknek – A lineáris regresszió megértése](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Gépi tanulás kezdőknek – A lineáris regresszió megértése") +[![Gépi tanulás kezdőknek - Lineáris regresszió megértése](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Gépi tanulás kezdőknek - Lineáris regresszió megértése") -> 🎥 Kattints a fenti képre egy rövid videós áttekintésért a lineáris regresszióról. +> 🎥 Kattints a fenti képre egy rövid videós áttekintéshez a lineáris regresszióról. -> Az egész tananyag során minimális matematikai előismeretet feltételezünk, és más területekről érkező hallgatók számára is érthetővé tesszük, ezért figyelj a jegyzetekre, 🧮 hívásokra, diagramokra és más tanulást segítő eszközökre. +> Az oktatóanyag során minimális matematikai előzetes tudással számolunk, és a cél, hogy elérhető legyen más területekről érkező diákok számára, ezért figyeld a megjegyzéseket, 🧮 hívásokat, ábrákat és egyéb tanulást segítő eszközöket. ### Előfeltétel -Már ismerned kell a sütőtök adatstruktúráját, amelyet vizsgálunk. Ezt megtalálod előbetöltve és előtisztítva a leckéhez tartozó _notebook.ipynb_ fájlban. Ebben a fájlban a sütőtök árát bushelenként jelenítjük meg egy új adatkeretben. Győződj meg róla, hogy futtatni tudod ezeket a notebookokat a Visual Studio Code kerneljeiben. - -### Előkészítés - -Emlékeztetőül, az adatokat azért töltöd be, hogy kérdéseket tehess fel velük kapcsolatban. +Mostanra ismerned kell a tök adatainak szerkezetét, amelyet vizsgálunk. Ezeket előre betöltve és megtisztítva megtalálod a dolgozat _notebook.ipynb_ fájljában. Ebben a fájlban a tök ára bushelenként jelenik meg egy új adatkeretben. Győződj meg róla, hogy ezek a notebookok futtathatóak Visual Studio Code környezetben. -- Mikor a legjobb idő sütőtököt vásárolni? -- Milyen árat várhatok egy kisebb sütőtökös dobozra? -- Érdemes fél busheles kosárban vagy 1 1/9 busheles dobozban vásárolni? +### Előkészület -Folytassuk az adatok vizsgálatát. +Emlékeztetőül: ezt az adatot azért töltöd be, hogy kérdéseket tegyél fel vele kapcsolatban. -Az előző leckében létrehoztál egy Pandas adatkeretet és feltöltötted azt az eredeti adatkészlet egy részével, szabványosítva az árakat bushel alapján. Ez azonban csak kb. 400 adatpontot eredményezett, és csak az őszi hónapokra. +- Mikor a legjobb idő tököt vásárolni? +- Milyen árat várhatok egy doboz miniatűr tökre? +- Érdemes fél bushel kosárban vagy 1 1/9 busheles dobozban vásárolni? +Térjünk vissza az adatok mélyebb vizsgálatához. -Nézd meg a leckéhez tartozó előre betöltött adatokat és az első szórásdiagramot a hónapok megjelenítésére. Talán részletesebben megérthetjük az adat természettét, ha jobban megtisztítjuk azt. +Az előző órában létrehoztál egy Pandas adatkeretet, és feltöltötted az eredeti adatok egy részével, egységesítve az árakat bushel szerint. Ezáltal azonban csak körülbelül 400 adatpontot gyűjtöttél össze, és csak az őszi hónapokra. -## Egy lineáris regressziós egyenes +Nézd meg az adatokat, amelyeket előre betöltöttünk ebben az óra jegyzetfüzetében. Az adatok előre betöltöttek, és az első szórt diagram már megmutatja a hónap adatokat. Talán több részletet tudunk kinyerni az adatok természetéről, ha jobban megtisztítjuk őket. -Amint az 1. leckében tanultad, egy lineáris regressziós gyakorlat célja, hogy egy egyenest tudjunk ábrázolni, amely: +## Lineáris regressziós egyenes -- **Változók közötti kapcsolatot mutat.** Bemutatja a változók közötti összefüggést -- **Előrejelzést tesz lehetővé.** Pontosan megjósolja, hol esik egy új adatpont az egyeneshez képest. +Ahogy az 1. órában megtanultad, a lineáris regresszió célja, hogy képes legyél felrajzolni egy olyan egyenest, amely: -Tipikusan a **legkisebb négyzetes regresszió** rajzol ilyen egyenest. A "legkisebb négyzetes" kifejezés arra utal, hogy minimalizáljuk a modell összes hibáját. Minden adatok ponthoz lemérjük a vertikális távolságot (reziduális), azaz a tényleges pont és az egyenes közötti függőleges távolságot. +- **Mutatja a változók kapcsolatát**. Megjeleníti a változók közötti kapcsolatot +- **Képes előrejelzésekre**. Pontos előrejelzéseket ad arról, hogy egy új adatpont hol eshet az egyeneshez képest. + +A **Legkisebb négyzetes regresszió** típusú vonalat szokás így húzni. A "Legkisebb négyzetes" kifejezés azt a folyamatot jelenti, amikor minimalizáljuk a modellünkben az összes hibát. Minden adatpontnál mérjük a függőleges távolságot (reziduális néven ismert) az adott pont és a regressziós vonal között. -Ezeket a távolságokat négyzetre emeljük két fő okból: +Ezeket a távolságokat négyzetre emeljük két fő okból: -1. **Nagyság irány helyett:** Az -5 hibát ugyanúgy kezeljük, mint a +5 hibát, mert a négyzetre emelés minden értéket pozitívvá tesz. +1. **Nagyobb jelentőség a nagyságra, irány helyett:** Egy -5-ös hibaértéket ugyanolyan fontosnak akarunk kezelni, mint egy +5-öst. A négyzetre emelés miatt minden érték pozitív lesz. -2. **Kiemelt büntetés a kiugró értékeknek:** A négyzetre emelés nagyobb súlyt ad a nagyobb hibáknak, így az egyenes közelebbi marad a távolabbi pontokhoz. +2. **Kiszámíthatatlan kiugrók megszűrése:** A négyzetre emelés súlyosabb következményeket ad a nagyobb hibáknak, így az egyenes közelebb húzódik a távolabb eső pontokhoz is. -Ezek után összeadjuk az összes négyzetre emelt távolságot. Célunk, hogy megtaláljuk azt az egyenest, amelynél ez az összeg a legkisebb (legkisebb érték) — innen a név: "legkisebb négyzetes". +Ezután összeadjuk az összes négyzetre emelt értéket. A célunk megtalálni azt az egyenest, amelynél az összeg a legalacsonyabb (a lehető legkisebb)—innen ered a "Legkisebb négyzetek" elnevezés. -> **🧮 Mutasd a matematikát** -> -> Ezt az egyenest, amit _legjobb illeszkedő egyenesnek_ nevezünk, a [következő egyenlettel](https://en.wikipedia.org/wiki/Simple_linear_regression) kifejezhetjük: -> +> **🧮 Mutasd meg a képletet** +> +> Ez az egyenes, amit _legjobb illeszkedő egyenesnek_ hívunk, az alábbi [egyenlettel fejezhető ki](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` az 'magyarázó változó', `Y` a 'függő változó'. Az egyenes meredeksége `b`, az `a` az y-tengely metszéspontja, vagyis az `Y` értéke, amikor `X = 0`. -> ->![meredekség kiszámítása](../../../../translated_images/hu/slope.f3c9d5910ddbfcf9.webp) -> -> Először számítsd ki a `b` meredekséget. Infografika készítője: [Jen Looper](https://twitter.com/jenlooper) -> -> Más szóval, a sütőtök adataink eredeti kérdése alapján: "előre jelezzük a sütőtök árát bushelre vetítve hónap szerint", itt az `X` az árra, az `Y` az eladási hónapra utalna. -> ->![egyenlet kiegészítése](../../../../translated_images/hu/calculation.a209813050a1ddb1.webp) -> -> Számítsd ki az Y értékét. Ha kb. 4 dollárt fizetsz, az bizonyára április! Infografika készítője: [Jen Looper](https://twitter.com/jenlooper) -> -> Az egyenes számításánál a meredekséget mutatja a formula, amely az y-metszési értéken is múlik, vagyis hol helyezkedik el az `Y`, amikor `X = 0`. -> -> A számítási módszert megtekintheted a [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) weboldalon. Használd a [Legkisebb négyzetek kalkulátort](https://www.mathsisfun.com/data/least-squares-calculator.html) is, hogy lásd, hogyan befolyásolják a számok az egyenest. +> +> `X` az 'magyarázó változó'. `Y` a 'függő változó'. Az egyenes meredeksége `b`, és `a` az y-tengely metszéspontja, ami `Y` értékét adja `X = 0` esetén. +> +>![meredekség kiszámítása](../../../../translated_images/hu/slope.f3c9d5910ddbfcf9.webp) +> +> Először kiszámoljuk a `b` meredekséget. Infografika készítője: [Jen Looper](https://twitter.com/jenlooper) +> +> Másként fogalmazva, és hivatkozva a tök adataink eredeti kérdésére: "jósoljuk meg a tök árát bushelenként hónap alapján", az `X` lenne az ár és az `Y` az eladás hónapja. +> +>![egyenlet kitöltése](../../../../translated_images/hu/calculation.a209813050a1ddb1.webp) +> +> Számítsuk ki az Y értékét. Ha $4 körül fizetsz, akkor április lehet! Infografika készítője: [Jen Looper](https://twitter.com/jenlooper) +> +> Az egyenes meghatározásának matematikája demonstrálja a meredekséget, amely a metszési ponttól is függ, vagyis attól, hogy `Y` hol helyezkedik el, ha `X = 0`. +> +> Az értékek kiszámítását megfigyelheted a [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) weboldalon. Látogasd meg továbbá ezt a [Legkisebb négyzetes számológépet](https://www.mathsisfun.com/data/least-squares-calculator.html), hogy lásd, hogyan hatnak a számértékek az egyenesre. ## Korreláció -Az utolsó fontos fogalom, amit érdemes megérteni, az adott X és Y változók közötti **korrelációs együttható**. A szórásdiagram segítségével ezt gyorsan meg tudjuk jeleníteni. Ha a pontok rendezett vonal mentén helyezkednek el, magas korrelációról beszélhetünk, míg ha szétszórtak mindenhol az X és Y között, akkor alacsony korrelációról beszélünk. +Még egy kifejezést kell megérteni: ez a **Korrelációs együttható** az adott X és Y változók között. Szórt diagram segítségével gyorsan vizualizálhatod ezt az együtthatót. Ha az adatpontok szépen rendezett vonalban helyezkednek el, a korreláció magas, de ha szétszórtan vannak, a korreláció alacsony. -Egy jó lineáris regressziós modell magas (közelebb 1-hez, mint 0-hoz) korrelációs együtthatóval rendelkezik, a Legkisebb Négyzetes Regresszió módszerével és regressziós egyenessel. +Egy jó lineáris regressziós modell az lesz, amely Legkisebb négyzetes regresszió módszerrel egy magas (inkább 1-hez közel, mint 0-hoz) Korrelációs együtthatót mutat. -✅ Futtasd a leckéhez mellékelt jegyzetet, és nézd meg a Hónap és Ár szórásdiagramját. A süvőtökeladások hónap és ár közötti adatai szerinted magas vagy alacsony korrelációt mutatnak a diagram vizuális értelmezése alapján? Változik ez, ha a `Month` helyett finomabb időmérő mértéket használunk, pl. *az év napja* (az év eleje óta eltelt napok száma)? +✅ Futtasd le az óra kísérő jegyzetfüzetét, és nézd meg a Hónap és Ár szórt diagramját. Úgy tűnik a hónap-ár kapcsolat a tök eladásoknál magas vagy alacsony korrelációt mutat? Ez változik, ha az `Hónap` helyett finomabb felbontást használsz, például az év napját (azaz hányadik napja az évnek)? -Az alábbi kódban feltételezzük, hogy megtisztítottuk az adatokat, és egy `new_pumpkins` nevű adatkeretet kaptunk, amely hasonló az alábbihoz: +A lentebbi kódban feltételezzük, hogy megtisztítottuk az adatokat, és rendelkezünk egy `new_pumpkins` nevű adatkerettel, amely hasonló a következőhöz: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Az adatok tisztítására vonatkozó kód a [`notebook.ipynb`](notebook.ipynb) fájlban található. Ugyanazokat a tisztítási lépéseket hajtottuk végre, mint az előző leckében, és a `DayOfYear` oszlopot a következő kifejezés segítségével számoltuk ki: +> A tisztításhoz használt kód megtalálható a [`notebook.ipynb`](notebook.ipynb) fájlban. Ugyanazokat a tisztítási lépéseket hajtottuk végre, mint az előző órában, és kiszámoltuk a `DayOfYear` oszlopot a következő kifejezéssel: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Most, hogy megértetted a lineáris regresszió mögötti matematikát, hozzunk létre egy regressziós modellt, hogy megnézzük, tudjuk-e megjósolni, melyik sütőtökcsomagnak lesz a legjobb ára. Valaki, aki egy ünnepi sütőtöksátorba vásárol, biztosan szeretné ezt az információt, hogy optimalizálhassa vásárlásait. + +Most, hogy érted a lineáris regresszió mögötti matematikát, hozzunk létre egy regressziós modellt, hogy megnézzük, tudjuk-e előre jelezni, melyik tökcsomag ára lesz a legjobb. Valaki, aki tököt vásárol farsangi tökkiállításra, ezt az információt felhasználhatja, hogy optimalizálja a vásárlását. ## Korreláció keresése -[![Gépi tanulás kezdőknek – Korreláció keresése: a lineáris regresszió kulcsa](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Gépi tanulás kezdőknek – Korreláció keresése: a lineáris regresszió kulcsa") +[![Gépi tanulás kezdőknek - Korreláció keresése: a lineáris regresszió kulcsa](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Gépi tanulás kezdőknek - Korreláció keresése: a lineáris regresszió kulcsa") -> 🎥 Kattints a fenti képre egy rövid videós áttekintésért a korrelációról. +> 🎥 Kattints a fenti képre egy rövid videós áttekintéshez a korrelációról. -Az előző leckéből valószínűleg láttad, hogy az átlagárak hónaponként így néznek ki: +Az előző órából valószínűleg láttad, hogy a havi átlagárak így néznek ki: -Átlagár hónaponként +Átlagár hónapok szerint -Ez arra utal, hogy van valamilyen korreláció, és megpróbálhatunk egy lineáris regressziós modellt tanítani, amely előrejelzi a `Month` és `Price`, vagy a `DayOfYear` és `Price` közötti kapcsolatot. Az alábbi szórásdiagram az utóbbi kapcsolatot mutatja be: +Ez arra utal, hogy kell lennie némi korrelációnak, és megpróbálhatunk lineáris regressziós modellt tanítani, hogy előre jelezzük a `Hónap` és `Ár` vagy a `DayOfYear` és `Ár` kapcsolatot. Itt egy szórt diagram, amely az utóbbi kapcsolatot mutatja: -Ár szórásdiagram az év napja szerint +Ár és év napja szórt diagram Nézzük meg, van-e korreláció a `corr` függvénnyel: @@ -132,8 +129,8 @@ Nézzük meg, van-e korreláció a `corr` függvénnyel: print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Úgy tűnik, hogy a korreláció meglehetősen kicsi, -0,15 a `Month`, és -0,17 a `DayOfMonth` szerint, de lehet egy másik fontos összefüggés. Úgy tűnik, hogy különböző árklaszterek vannak a sütőtök fajták szerint. Ennek megerősítésére ábrázoljuk az egyes sütőtökkategóriákat más-más színnel. Az `ax` paraméter átadásával a `scatter` függvénynek az összes pont ugyanabban a grafikonban jelenik meg: + +Úgy tűnik, a korreláció meglehetősen kicsi, -0,15 a `Hónap` szerint, és -0,17 a `DayOfYear` szerint, de lehet, hogy van egy másik fontos kapcsolat. Úgy tűnik, különböző ár clusteringek vannak, amelyek különböző tökfajtákhoz kapcsolódnak. Ennek megerősítéséhez ábrázoljuk minden tökkategóriát más színnel. Az `ax` paraméter átadásával a `scatter` függvénynek minden pont ugyanazon a grafikonon jelenik meg: ```python ax=None @@ -142,76 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - -Ár szórásdiagram az év napja szerint, színesen -Vizsgálatunk azt sugallja, hogy a fajta nagyobb hatással van a teljes árra, mint az eladási időpont. Ezt egy oszlopdiagramon is láthatjuk: +Ár és év napja szórt diagram színek szerint + +A vizsgálatunk arra utal, hogy a tökfajta jobban befolyásolja az árat, mint az eladási időpont. Ezt látjuk egy oszlopdiagramon is: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - -Ár oszlopdiagram fajta szerint -Most csak egy sütőtökfajtára, a 'pie type'-ra (pite típusra) koncentrálunk, és megnézzük, milyen hatása van az eladási dátumnak az árra: +Ár és fajta oszlopdiagram + +Most fókuszáljunk csak az egyik tökfajtára, az "pie type"-ra, és nézzük meg, milyen hatással van a dátum az árra: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` - -Ár szórásdiagram az év napja szerint, pite típus +Ár és év napja szórt diagram pie típusú tökök -Ha most kiszámoljuk a korrelációt a `Price` és a `DayOfYear` között a `corr` függvénnyel, valami ilyesmit kapunk: `-0.27` - ami azt jelenti, hogy érdemes predikciós modellt tanítani. +Ha most kiszámoljuk a korrelációt a `Price` és `DayOfYear` között a `corr` függvénnyel, az körülbelül `-0,27` lesz - ami azt jelenti, hogy érdemes prediktív modellt tanítani. -> Egy lineáris regressziós modell betanítása előtt fontos, hogy az adataink tiszták legyenek. Mivel a lineáris regresszió nem működik jól hiányzó értékekkel, ezért érdemes eltávolítani az összes üres cellát: +> A lineáris regressziós modell betanítása előtt fontos, hogy az adataink tiszták legyenek. A lineáris regresszió nem működik jól hiányzó értékekkel, ezért érdemes eltávolítani az összes üres cellát: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Egy másik megközelítés lehet, hogy az üres értékeket az adott oszlop átlagával töltjük fel. + +Egy másik megközelítés, ha ezeket az üres értékeket az adott oszlop átlagával töltjük ki. ## Egyszerű lineáris regresszió -[![Gépi tanulás kezdőknek – Lineáris és polinomiális regresszió Scikit-learn használatával](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Gépi tanulás kezdőknek – Lineáris és polinomiális regresszió Scikit-learn használatával") +[![Gépi tanulás kezdőknek - Lineáris és polinomiális regresszió Scikit-learn segítségével](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Gépi tanulás kezdőknek - Lineáris és polinomiális regresszió Scikit-learn segítségével") -> 🎥 Kattints a fenti képre egy rövid videós áttekintésért a lineáris és polinomiális regresszióról. +> 🎥 Kattints a fenti képre egy rövid videós összefoglalóhoz a lineáris és polinomiális regresszióról. -A lineáris regressziós modellünk betanításához a **Scikit-learn** könyvtárat fogjuk használni. +A lineáris regressziós modellünk betanításához a **Scikit-learn** könyvtárat használjuk. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Először szétválasztjuk a bemeneti értékeket (jellemzők) és a várt kimenetet (címkét) külön numpy tömbökbe: + +Először szétválasztjuk a bemeneti értékeket (jellemzőket) és a várt kimenetet (címkét) külön-numpy tömbökbe: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> Figyeld meg, hogy a bemeneti adaton `reshape` műveletet kellett végeznünk, hogy a Linear Regression csomag helyesen értelmezze azt. A lineáris regresszió 2D tömböt vár bemenetként, ahol a tömb minden sora egy bemeneti jellemzővektort képvisel. Mivel esetünkben csak egy bemenet van, N×1 alakú tömböt kell biztosítanunk, ahol N az adatkészlet mérete. -Ezután az adatokat szét kell osztani tanuló (train) és teszt (test) adathalmazra, hogy a modell betanítása után ellenőrizni tudjuk azt: +> Figyeljük meg, hogy a bemeneti adatokat át kellett alakítanunk a `reshape` segítségével, hogy a Lineáris Regressziós csomag helyesen értse azokat. A lineáris regresszió 2D tömböt vár bemenetként, ahol a tömb minden sora egy bemeneti jellemző vektort reprezentál. Jelen esetben egyetlen bemenet van, ezért egy N×1 alakú tömböt kell létrehoznunk, ahol N az adatkészlet mérete. + +Ezután fel kell osztanunk az adatokat tanító és teszt adatokra, hogy a modellt a tanítás után tudjuk validálni: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Végül, a lineáris regressziós modell tényleges betanítása csak két kód sor. Definiáljuk a `LinearRegression` objektumot, és megtanítjuk az adatokra a `fit` metódussal: + +Végül az lineáris regressziós modell tényleges betanítása csak két sor kódot vesz igénybe. Definiáljuk a `LinearRegression` objektumot, és az adatainkra illesztjük a `fit` módszerrel: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -A `LinearRegression` objektum a `fit`-elés után tartalmazza az összes regressziós együtthatót, amelyek a `.coef_` tulajdonsággal érhetők el. Esetünkben csak egyetlen együttható van, amely nagyjából `-0.017` körül kell, hogy legyen. Ez azt jelenti, hogy az árak idővel kissé csökkennek, de nem túl sokat, körülbelül napi 2 centtel. A regresszió Y-tengellyel való metszéspontját a `lin_reg.intercept_`-tel érhetjük el – nálunk ez kb. `21` lesz, ami az év eleji árat jelzi. +A `LinearRegression` objektum a `fit`-elés után tartalmazza a regresszió összes együtthatóját, amelyek az `.coef_` tulajdonsággal érhetőek el. Esetünkben csak egy együttható van, amely körülbelül `-0.017` körül kell legyen. Ez azt jelenti, hogy az árak idővel valamennyire csökkenni látszanak, de nem túl sokat, körülbelül 2 cent naponta. A regressziós egyenes Y-tengellyel való metszéspontjához az `lin_reg.intercept_` segítségével férhetünk hozzá - ez nálunk körülbelül `21` lesz, amely az év eleji árat jelzi. -Annak megmutatására, hogy a modellünk mennyire pontos, megjósolhatjuk az árakat egy teszt adathalmazon, majd mérhetjük, mennyire közel vannak az előrejelzéseink a várt értékekhez. Ez az átlagos négyzetes hiba négyzetgyökével (RMSE - root mean square error) tehető meg, ami az összes négyzetes különbség átlaga és gyöke. +Ahhoz, hogy lássuk, mennyire pontos a modellünk, először az árakat megjósolhatjuk egy teszt adathalmazon, majd megmérhetjük, milyen közel vannak a becslések a várt értékekhez. Ezt az úgynevezett gyökös átlagos négyzetes hibával (RMSE) mérjük, ami az elvárt és becsült értékek közötti négyzetes különbségek átlagának gyöke. ```python pred = lin_reg.predict(X_test) @@ -220,16 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Az általunk kapott hiba körülbelül 2 pont, ami ~17%. Nem túl jó. A modell minőségének másik mutatója a **determinációs együttható**, amely így szerezhető meg: +Hibaértékünk körülbelül 2 pont körül van, ami nagyjából 17%. Nem túl jó. A modell minőségének másik mutatója a **determinációs együttható**, amely így számítható ki: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` +Ha az érték 0, az azt jelenti, hogy a modell nem veszi figyelembe a bemeneti adatokat, és a *legrosszabb lineáris becslőként* működik, amely egyszerűen az eredmény átlagértéke. Az 1-es érték azt jelenti, hogy tökéletesen meg tudjuk jósolni az összes várt kimenetet. Nálunk az együttható körülbelül 0.06, ami elég alacsony. -Ha az érték 0, az azt jelenti, hogy a modell nem veszi figyelembe a bemeneti adatokat, és egy *legrosszabb lineáris prediktorként* működik, ami egyszerűen az eredmény átlagértéke. Az 1-es érték azt jelenti, hogy tökéletesen meg tudjuk jósolni az összes elvárt kimenetet. Nálunk a koefficiens körülbelül 0,06, ami elég alacsony. - -A tesztadatokat is ábrázolhatjuk a regressziós egyenessel együtt, hogy jobban lássuk a regresszió működését a mi esetünkben: +Meg is rajzolhatjuk a tesztadatokat a regressziós egyenessel együtt, hogy jobban lássuk a regresszió működését: ```python plt.scatter(X_test,y_test) @@ -240,17 +235,17 @@ plt.plot(X_test,pred) ## Polinomiális regresszió -A lineáris regresszió másik típusa a polinomiális regresszió. Bár néha lineáris kapcsolat van a változók között – minél nagyobb a tök térfogata, annál magasabb az ár –, előfordul, hogy ezeket a kapcsolatokat nem lehet egy síkkal vagy egyenes vonallal ábrázolni. +A lineáris regresszió egy másik típusa a polinomiális regresszió. Bár néha lineáris kapcsolat van a változók között – például minél nagyobb egy tök térfogata, annál magasabb az ára –, néha ezek a kapcsolatok nem ábrázolhatók síkkal vagy egyenes vonallal. -✅ Itt van néhány [további példa](https://online.stat.psu.edu/stat501/lesson/9/9.8) adatokról, amelyekhez polinomiális regressziót lehet használni. +✅ Itt vannak [további példák](https://online.stat.psu.edu/stat501/lesson/9/9.8) olyan adatokra, amelyek polinomiális regressziót igényelhetnek. -Nézzük meg újra a Date és Price kapcsolatát. Ez a szórt diagram feltétlenül úgy néz ki, hogy egyenes vonallal kellene elemezni? Nem ingadozhatnak-e az árak? Ebben az esetben érdemes kipróbálni a polinomiális regressziót. +Nézzük meg újra a Dátum és Ár közötti kapcsolatot. Ez a pontfelhő valóban úgy néz ki, hogy feltétlenül egy egyenes vonallal kell elemezni? Nem ingadozhatnak az árak? Ilyen esetben polinomiális regressziót használhatunk. -✅ A polinomok olyan matematikai kifejezések, amelyek egy vagy több változóból és együtthatóból állhatnak. +✅ A polinomok olyan matematikai kifejezések, amelyek egy vagy több változót és együtthatót tartalmazhatnak. -A polinomiális regresszió egy görbült vonalat hoz létre, hogy jobban illeszkedjen nemlineáris adatokra. A mi esetünkben, ha bevonjuk a négyzetes `DayOfYear` változót a bemeneti adatok közé, képesek leszünk az adatokat egy parabolikus görbével illeszteni, amelynek minimuma egy adott pontban lesz az éven belül. +A polinomiális regresszió ívelt görbét hoz létre, hogy jobban illeszkedjen a nemlineáris adatokra. Esetünkben, ha a bemeneti adatok közé beillesztünk egy négyzetes `DayOfYear` változót, akkor egy parabolikus görbét tudunk illeszteni, amelynek lesz minimuma az év egy bizonyos pontján. -A Scikit-learn tartalmaz egy hasznos [pipeline API-t](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), amely lehetővé teszi a különböző adatfeldolgozási lépések együttes használatát. Egy **pipeline** egy **becslők** láncolata. A mi esetünkben olyan pipeline-t hozunk létre, amely először polinomiális jellemzőket ad a modellhez, majd betanítja a regressziót: +A Scikit-learn egy hasznos [pipeline API-t](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) kínál a különböző adatfeldolgozási lépések összekapcsolására. Egy **pipeline** egy láncolata az **estimátoroknak**. Esetünkben egy olyan csővezetéket hozunk létre, amely először polinomiális jellemzőket ad a modellhez, majd megtanítja a regressziót: ```python from sklearn.preprocessing import PolynomialFeatures @@ -261,34 +256,56 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -A `PolynomialFeatures(2)` használata azt jelenti, hogy a bemeneti adatokból az összes másodfokú polinomot bevonjuk. Esetünkben ez csak a `DayOfYear`2 változót jelenti, de ha két bemeneti változó X és Y, akkor hozzáadja az X2, XY és Y2 kifejezéseket is. Magasabb fokú polinomokat is használhatunk, ha akarunk. +A `PolynomialFeatures(2)` használata azt jelenti, hogy minden másodfokú polinomot belefoglalunk a bemeneti adatokból. Esetünkben ez csak a `DayOfYear`2 lesz, de ha két bemeneti változónk van X és Y, akkor ez hozzáadja az X2, XY és Y2 kifejezéseket. Szükség esetén magasabb fokú polinomokat is használhatunk. + +A pipeline-ok ugyanúgy használhatók, mint az eredeti `LinearRegression` objektum, azaz `fit`-elhetjük őket, és azután `predict`-tel kérhetjük le az előrejelzés eredményét: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +A sima közelítő görbe megrajzolásához a `np.linspace`-t használjuk, hogy egyenletes bemeneti értéktartományt hozzunk létre, nem pedig közvetlenül a rendezetlen tesztadatokra rajzolunk (ami cikcakkos vonalat eredményezne): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -A pipeline-okat ugyanúgy használhatjuk, mint az eredeti `LinearRegression` objektumot, azaz `fit`-elhetjük a pipeline-t, majd `predict`-tel lekérhetjük az előrejelzéseket. Íme egy grafikon, amely a tesztadatokat és az illesztett görbét mutatja: +Itt látható a grafikon, amely a tesztadatokat és a közelítő görbét mutatja: Polynomial regression -Polinomiális regresszióval kicsit alacsonyabb MSE és magasabb determináció érhető el, de nem jelentősen. Más jellemzőket is figyelembe kell vennünk! +A polinomiális regresszió használatával kicsit alacsonyabb RMSE-t és magasabb determinációt érhetünk el, de nem jelentősen. Más jellemzőket is figyelembe kell vennünk! -> Látható, hogy a tök árak legalacsonyabbak valahol Halloween körül. Hogyan magyarázhatod ezt? +> Látható, hogy a legkisebb tökárak valahol Halloween környékén fordulnak elő. Hogyan magyaráznád ezt? -🎃 Gratulálok, most hoztál létre egy modellt, ami segíthet előre jelezni a sütőtök árát. Valószínűleg ugyanezt a módszert megismételheted az összes tökfajtánál, de az egy kicsit fárasztó lenne. Most tanuljuk meg, hogyan vegyük figyelembe a tökfajta különbségeket a modellben! +🎃 Gratulálok, most készítettél egy olyan modellt, amely segíthet a pitetök árának előrejelzésében. Valószínűleg ugyanígy megismételheted ugyanezt az eljárást az összes tökfajtára, de az fárasztó lenne. Most tanuljuk meg, hogyan lehet figyelembe venni a tökfajtát a modellünkben! -## Kategóriás jellemzők +## Kategóriák jellemzői -Az ideális világban képesek vagyunk ugyanazt a modellt használni különböző tökfajták árának előrejelzésére. A `Variety` oszlop azonban némileg eltér a `Month`-től, mert nem numerikus értékeket tartalmaz. Az ilyen oszlopokat **kategóriásnak** nevezzük. +Az ideális világban ugyanazzal a modellel szeretnénk képesek lenni az árak előrejelzésére különböző tökfajták esetén is. Azonban a `Variety` oszlop valamiben különbözik az olyan oszlopoktól, mint a `Month`, mert nem numerikus értékeket tartalmaz. Az ilyen oszlopokat **kategóriálisnak** nevezzük. -[![ML for beginners - Kategóriás jellemzők előrejelzése lineáris regresszióval](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Kategóriás jellemzők előrejelzése lineáris regresszióval") +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Kattints a fenti képre egy rövid videós bemutatóért kategóriás jellemzők használatáról. +> 🎥 Kattints a fenti képre egy rövid videós áttekintésért a kategóriális jellemzők használatáról. -Itt látható, hogyan függ az átlagár a fajtától: +Itt láthatod, hogy az átlagár hogyan függ a fajtától: -Átlagár fajta szerint +Average price by variety -A fajta figyelembevételéhez először számmá kell alakítanunk, vagyis **kódolnunk** kell. Többféle módon megtehetjük ezt: +A fajták figyelembevételéhez először át kell alakítani őket numerikus formára, vagyis **kódolni** kell őket. Többféle módon tehetjük ezt meg: -* Egyszerű **numerikus kódolás** egy táblázatot épít az eltérő fajtákról, majd a fajta nevét egy indexre cseréli ebben a táblázatban. Ez nem a legjobb ötlet lineáris regresszióhoz, mert a lineáris regresszió az index tényleges numerikus értékét veszi figyelembe, amit egy együtthatóval megszoroz, majd hozzáad az eredményhez. Nálunk az indexszám és az ár közötti kapcsolat jól láthatóan nemlineáris, még akkor sem, ha az indexeket valamilyen specifikus sorrendbe rendezzük. -* **One-hot kódolás** a `Variety` oszlopot 4 külön oszlopra bontja, egy-egy minden fajtához. Mindegyik oszlopban `1` lesz, ha az adott sor a szóban forgó fajta, és `0` egyébként. Ez azt jelenti, hogy négy regressziós együtthatónk lesz, egyenként minden tökfajta esetében, amelyek az adott fajta "kezdő ára" (vagy inkább "kiegészítő ára") felelnek. +* Az egyszerű **numerikus kódolás** egy táblázatot épít a különböző fajtákról, majd a fajtanév helyére egy indexet ír. Ez lineáris regresszió esetén nem a legjobb megoldás, mert a lineáris regresszió az index számértékét veszi figyelembe, és valamilyen együtthatóval szorozva adja hozzá az eredményhez. Esetünkben az indexek számszerű értéke és az ár közötti kapcsolat egyértelműen nemlineáris, még akkor is, ha az indexeket valamilyen speciális sorrendbe állítjuk. +* A **one-hot kódolás** a `Variety` oszlopot négy külön oszlopra bontja, egyre minden fajtához. Minden oszlop `1` értéket tartalmaz, ha az adott sor az adott fajtához tartozik, különben `0`-t. Ez azt jelenti, hogy négy együttható lesz a lineáris regresszióban, egy-egy minden tökfajtára, amelyek az adott fajta kezdeti árát (vagy inkább "kiegészítő árát") képviselik. Az alábbi kód megmutatja, hogyan lehet one-hot kódolni a fajtát: @@ -307,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -A lineáris regresszió tanításához one-hot kódolt fajtára egyszerűen csak helyesen kell inicializálni az `X` és `y` adatokat: +Lineáris regresszió tanításához one-hot kódolt fajta bemenettel, helyesen kell inicializálni az `X` és `y` adatokat: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -A kód többi része ugyanaz, mint amit fent használtunk a lineáris regresszió tanításához. Ha kipróbálod, látni fogod, hogy az átlagos négyzetes hiba nagyjából ugyanaz marad, de a determinációs együttható sokkal magasabb lesz (~77%). Az még pontosabb előrejelzésekhez több kategóriás jellemzőt és egyben numerikus jellemzőket is figyelembe vehetünk, például `Month` vagy `DayOfYear`. Az összes jellemzőt egy nagy tömbbe egyesíthetjük a `join` segítségével: +A többi kód ugyanolyan, mint fent a lineáris regresszió tanításánál. Ha kipróbálod, látni fogod, hogy az átlagos négyzetes hiba nagyjából ugyanaz, de a determinációs együttható sokkal magasabb (körülbelül 77%). Még pontosabb előrejelzésekhez több kategóriás jellemzőt és numerikus jellemzőket is figyelembe vehetünk, például a `Month` vagy a `DayOfYear`. Ahhoz, hogy egy nagy jellemzőtömböt kapjunk, használhatjuk a `join`-t: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -324,41 +341,41 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Itt szintén figyelembe vesszük a `City` és a `Package` típust, melyeknek az eredménye 2.84 MSE (10%) és 0.94 determináció! +Itt figyelembe vesszük a `City` és a `Package` típust is, ami 2.84-es (10.5%) RMSE-t és 0.94-es determinációs értéket eredményez! -## Összefoglalás +## Mindent egybevetve -A legjobb modell készítéséhez kombinált (one-hot kódolt kategóriás + numerikus) adatokat használhatunk a fenti példából, együtt a polinomiális regresszióval. Íme az egész kód az egyszerűség kedvéért: +A legjobb modellhez az előző példából származó kombinált (one-hot kódolt kategóriás + numerikus) adatokat használhatjuk a polinomiális regresszióval együtt. Íme a teljes kód a kényelmedért: ```python -# beállítja a tanító adatokat +# tanítóadatok előkészítése X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# készít egy tanító-teszt felosztást +# tanító-teszt felosztás készítése X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# beállítja és tanítja a folyamatot +# a folyamat beállítása és betanítása pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# megjósolja az eredményeket a teszt adatokra +# tesztadatokra eredmények előrejelzése pred = pipeline.predict(X_test) -# kiszámítja az MSE-t és a determinációt -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE és determináció számítása +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Ez az eredmény majdnem 97%-os determinációs együtthatót, és MSE=2.23-at (~8% előrejelzési hibát) ad. +Ennek a modellnek a determinációs együtthatója majdnem 97% lesz, az RMSE pedig 2.23 (kb. 8% előrejelzési hiba). -| Modell | MSE | Determináció | +| Modell | RMSE | Determináció | |-------|-----|---------------| | `DayOfYear` lineáris | 2.77 (17.2%) | 0.07 | | `DayOfYear` polinomiális | 2.73 (17.0%) | 0.08 | @@ -366,26 +383,26 @@ Ez az eredmény majdnem 97%-os determinációs együtthatót, és MSE=2.23-at (~ | Minden jellemző lineáris | 2.84 (10.5%) | 0.94 | | Minden jellemző polinomiális | 2.23 (8.25%) | 0.97 | -🏆 Szép munka! Egy órán belül négy regressziós modellt hoztál létre, és a modell minőségét 97%-ra javítottad. A regresszió záró részében a logisztikus regresszióról fogsz tanulni, ami kategóriák meghatározására szolgál. +🏆 Szép munka! Egy leckében négy regressziós modellt készítettél, és a modell pontosságát 97%-ra javítottad. A regresszió befejező szakaszában megismerkedhetsz a logisztikus regresszióval kategóriák meghatározásához. --- ## 🚀Kihívás -Tesztelj több különböző változót ebben a jegyzetfüzetben, hogy lásd, hogyan függ a korreláció a modell pontosságától. +Tesztelj több különböző változót ebben a jegyzetfüzetben, hogy lásd, hogyan korrelál a változók közötti kapcsolat a modell pontosságával. ## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) -## Áttekintés & Önálló tanulás +## Áttekintés és önálló tanulás -Ebben a leckében a lineáris regressziót tanultuk meg. Vannak más fontos regressziós típusok is. Olvass a lépésenkénti, Ridge, Lasso és Elasticnet technikákról. Egy jó tanfolyam további tanulásra a [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning). +Ebben a leckében a lineáris regresszióval ismerkedtünk meg. Vannak más fontos regressziótípusok is. Olvass a lépcsőzetes, Ridge, Lasso és Elasticnet technikákról. Jó tanfolyam a témában a [Stanford Statisztikai tanulás kurzus](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning). ## Feladat -[Modellezés](assignment.md) +[Modell készítése](assignment.md) --- -**Felmentés**: -Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordító szolgáltatásával készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum anyanyelvű változata tekinthető hivatalos forrásnak. Fontos információk esetén szakmai emberi fordítást javasolunk. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy félreértelmezésekért. +**Nyilatkozat**: +Ezt a dokumentumot az AI fordító szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével fordítottuk le. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum anyanyelvű változata tekintendő hivatalos forrásnak. Fontos információk esetén professzionális, emberi fordítást javaslunk. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy félreértelmezésekért. \ No newline at end of file diff --git a/translations/hu/2-Regression/3-Linear/solution/notebook.ipynb b/translations/hu/2-Regression/3-Linear/solution/notebook.ipynb index 1038c3b5f1..c5f0a2d460 100644 --- a/translations/hu/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/hu/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineáris és Polinomiális Regresszió a Tökárak Meghatározásához - 3. Lecke\n", + "## Lineáris és polinomiális regresszió a tök árképzésére - 3. lecke\n", "\n", - "Töltsd be a szükséges könyvtárakat és az adatállományt. Alakítsd át az adatokat egy adatkeretté, amely az adatok egy részhalmazát tartalmazza:\n", + "Töltsd be a szükséges könyvtárakat és az adathalmazt. Alakítsd az adatokat olyan adattáblává, amely az adatok egy részhalmazát tartalmazza:\n", "\n", - "- Csak azokat a tököket válaszd ki, amelyeket bushel alapján áraznak\n", + "- Csak azokat a tököket vedd, amelyeknek árát köböt alapján adják meg\n", "- Alakítsd át a dátumot hónappá\n", - "- Számítsd ki az árat a magas és alacsony árak átlagaként\n", - "- Alakítsd át az árat, hogy a bushel mennyiség szerinti árazást tükrözze\n" + "- Számítsd ki az árat a legmagasabb és legalacsonyabb ár átlaga alapján\n", + "- Alakítsd át az árat úgy, hogy tükrözze a köbös mennyiség szerinti árazást\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A szórási diagram emlékeztet minket arra, hogy csak augusztustól decemberig van havi adatunk. Valószínűleg több adatra van szükségünk ahhoz, hogy lineáris módon vonjunk le következtetéseket.\n" + "A szórásdiagram emlékeztet minket arra, hogy csak az augusztustól decemberig terjedő hónapadatok állnak rendelkezésünkre. Valószínűleg több adatra van szükségünk ahhoz, hogy lineáris módon tudjunk következtetéseket levonni.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Nézzük meg, van-e összefüggés:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Úgy tűnik, hogy a korreláció elég kicsi, de van valami más, fontosabb kapcsolat – mert a fenti ábrán az árpontok több különálló klasztert alkotnak. Készítsünk egy ábrát, amely megmutatja a különböző tökfajtákat:\n" + "Úgy tűnik, hogy a korreláció elég kicsi, de van valami más, fontosabb kapcsolat - mert a fenti ábrán az árpontok több különálló csoportot alkotnak. Készítsünk egy ábrát, ami megmutatja a különböző tökfajtákat:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Egyelőre koncentráljunk csak egy fajtára - **pitére**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Lineáris regresszió\n", "\n", - "A Scikit Learn könyvtárat fogjuk használni lineáris regressziós modell betanításához:\n" + "A lineáris regressziós modellt a Scikit Learn segítségével fogjuk tanítani:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Polinomiális regresszió\n", "\n", - "Néha a jellemzők és az eredmények közötti kapcsolat eleve nem lineáris. Például a tök ára télen (hónapok=1,2) magas lehet, majd nyáron (hónapok=5-7) csökken, és utána ismét emelkedik. A lineáris regresszió nem képes pontosan megragadni ezt a kapcsolatot.\n", + "Néha a jellemzők és az eredmények közötti kapcsolat természeténél fogva nemlineáris. Például a sütőtök ára télen (hónapok=1,2) magas lehet, majd nyáron (hónapok=5-7) csökken, és aztán újra emelkedik. A lineáris regresszió nem képes pontosan megtalálni ezt a kapcsolatot.\n", "\n", - "Ilyen esetben érdemes lehet további jellemzőket hozzáadni. Egy egyszerű módszer az, hogy az input jellemzőkből polinomokat használunk, ami **polinomiális regressziót** eredményez. A Scikit Learn-ben automatikusan előre kiszámíthatjuk a polinomiális jellemzőket pipeline-ok segítségével:\n" + "Ebben az esetben érdemes lehet plusz jellemzőket hozzáadni. Egyszerű módja ennek, ha a bemeneti jellemzőkből polinomokat használunk, ami **polinomiális regressziót** eredményez. A Scikit Learn-ben ezt automatikusan előszámíthatjuk, polinom jellemzőket generálva pipeline-ok segítségével: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Különböző kódolási módok\n", + "### Kódolási változatok\n", "\n", - "Ideális esetben szeretnénk ugyanazzal a modellel előre jelezni az árakat különböző tök fajták esetében. Ahhoz, hogy figyelembe vegyük a fajtát, először numerikus formára kell átalakítanunk, vagyis **kódolnunk**. Erre több módszer is létezik:\n", + "Az ideális világban ugyanazzal a modellel tudnánk előre jelezni az árakat különböző tökfajtákra. Ahhoz, hogy a fajtát figyelembe tudjuk venni, először számmá kell átalakítanunk, vagyis **kódolnunk** kell. Többféleképpen megtehetjük ezt:\n", "\n", - "* Egyszerű numerikus kódolás, amely egy táblázatot készít a különböző fajtákról, majd a fajta nevét lecseréli a táblázatban szereplő indexre. Ez nem a legjobb megoldás lineáris regresszióhoz, mivel a lineáris regresszió figyelembe veszi az index numerikus értékét, és az index numerikus értéke valószínűleg nem áll összefüggésben az árral.\n", - "* Egy-hot kódolás, amely a `Variety` oszlopot négy külön oszlopra cseréli, egyet minden fajtának. Ezek az oszlopok 1-et tartalmaznak, ha az adott sor az adott fajtához tartozik, és 0-t, ha nem.\n", + "* Egyszerű numerikus kódolás, amely egy táblázatot hoz létre a különböző fajtákról, majd a fajta nevét egy indexszel helyettesíti ebben a táblázatban. Ez nem a legjobb ötlet lineáris regresszióhoz, mert a lineáris regresszió figyelembe veszi az index numerikus értékét, és ez az érték valószínűleg nem korrelál számszerűen az árral.\n", + "* One-hot kódolás, amely a `Variety` oszlopot négy külön oszlopra cseréli, egy-egy minden fajtának, amelyek 1-et tartalmaznak, ha az adott sor az adott fajta, és különben 0-t.\n", "\n", - "Az alábbi kód megmutatja, hogyan tudunk egy fajtát egy-hot kódolással átalakítani:\n" + "Az alábbi kód megmutatja, hogyan tudjuk one-hot kódolni a fajtát:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineáris regresszió fajták alapján\n", + "### Lineáris regresszió fajtánként\n", "\n", - "Most ugyanazt a kódot fogjuk használni, mint korábban, de a `DayOfYear` helyett az egy-hot-kódolt fajtát fogjuk bemenetként használni:\n" + "Most ugyanazt a kódot fogjuk használni, mint fent, de `DayOfYear` helyett a one-hot kódolt fajtát fogjuk bemenetként használni:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polinomiális regresszió\n", "\n", - "A polinomiális regresszió használható egy-hot-kódolt kategóriális jellemzőkkel is. A polinomiális regresszió betanításához szükséges kód lényegében ugyanaz lenne, mint amit fentebb láttunk.\n" + "A polinomiális regresszió használható egyúttal olyan kategórikus jellemzőkkel is, amelyek one-hot kódolásúak. A polinomiális regresszió betanítására szolgáló kód lényegében ugyanaz lenne, mint amit fentebb már láttunk.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Felelősségkizárás**: \nEz a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális, emberi fordítást igénybe venni. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért.\n" + "---\n\n\n**Felelősségkizárás**:\nEz a dokumentum az AI fordító szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár igyekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Kritikus információk esetén professzionális, emberi fordítás ajánlott. Nem vállalunk felelősséget az ebből a fordításból eredő félreértésekért vagy téves értelmezésekért.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:21:41+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "hu" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sw/.co-op-translator.json b/translations/sw/.co-op-translator.json index f571a52e89..c7a5532f24 100644 --- a/translations/sw/.co-op-translator.json +++ b/translations/sw/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "sw" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T16:02:46+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:00:57+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "sw" }, @@ -90,8 +90,8 @@ "language_code": "sw" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:24:51+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:00:30+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "sw" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "sw" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:58:36+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "sw" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T15:14:22+00:00", diff --git a/translations/sw/1-Introduction/4-techniques-of-ML/README.md b/translations/sw/1-Introduction/4-techniques-of-ML/README.md index 919233b165..2c150d53ee 100644 --- a/translations/sw/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/sw/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# Mbinu za Kujifunza Mashine +# Mbinu za Kujifunza kwa Mashine -Mchakato wa kujenga, kutumia, na kudumisha mifano ya kujifunza mashine na data wanayotumia ni tofauti sana na mchakato wa maendeleo mengine. Katika somo hili, tutafafanua mchakato huo na kuelezea mbinu kuu unazohitaji kujua. Utajifunza: +Mchakato wa kujenga, kutumia, na kutunza mifano ya kujifunza kwa mashine na data wanayotumia ni mchakato tofauti kabisa na workflows nyingi nyingine za maendeleo. Katika somo hili, tutaondoa mashaka kuhusu mchakato huu, na kutoa muhtasari wa mbinu kuu unazohitaji kujua. Utajifunza: -- Kuelewa michakato inayosimamia kujifunza mashine kwa kiwango cha juu. +- Kuelewa michakato inayounga mkono kujifunza kwa mashine kwa kiwango cha juu. - Kuchunguza dhana za msingi kama 'mifano', 'utabiri', na 'data ya mafunzo'. -## [Jaribio la awali la somo](https://ff-quizzes.netlify.app/en/ml/) +## [Jaribio la kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) -[![ML kwa wanaoanza - Mbinu za Kujifunza Mashine](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML kwa wanaoanza - Mbinu za Kujifunza Mashine") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Bofya picha hapo juu kwa video fupi inayopitia somo hili. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayoelezea somo hili. ## Utangulizi -Kwa kiwango cha juu, sanaa ya kuunda michakato ya kujifunza mashine (ML) inajumuisha hatua kadhaa: +Kwa kiwango cha juu, ufundi wa kuunda michakato ya kujifunza kwa mashine (ML) unajumuisha hatua kadhaa: -1. **Amua swali**. Mchakato mwingi wa ML huanza kwa kuuliza swali ambalo haliwezi kujibiwa kwa programu rahisi ya masharti au injini ya sheria. Maswali haya mara nyingi huzunguka utabiri kulingana na mkusanyiko wa data. -2. **Kusanya na kuandaa data**. Ili uweze kujibu swali lako, unahitaji data. Ubora na, wakati mwingine, wingi wa data yako utaamua jinsi unavyoweza kujibu swali lako la awali. Kuonyesha data ni kipengele muhimu cha awamu hii. Awamu hii pia inajumuisha kugawanya data katika kikundi cha mafunzo na majaribio ili kujenga mfano. -3. **Chagua mbinu ya mafunzo**. Kulingana na swali lako na asili ya data yako, unahitaji kuchagua jinsi unavyotaka kufundisha mfano ili kuakisi data yako vizuri na kufanya utabiri sahihi dhidi yake. Hii ni sehemu ya mchakato wa ML inayohitaji utaalamu maalum na, mara nyingi, majaribio mengi. -4. **Fanya mafunzo ya mfano**. Kwa kutumia data yako ya mafunzo, utatumia algoriti mbalimbali kufundisha mfano kutambua mifumo katika data. Mfano unaweza kutumia uzito wa ndani ambao unaweza kubadilishwa ili kuzingatia sehemu fulani za data kuliko nyingine ili kujenga mfano bora. -5. **Tathmini mfano**. Unatumia data ambayo haijawahi kuonekana (data yako ya majaribio) kutoka seti yako iliyokusanywa ili kuona jinsi mfano unavyofanya kazi. -6. **Kuboresha vigezo**. Kulingana na utendaji wa mfano wako, unaweza kurudia mchakato kwa kutumia vigezo tofauti, au mabadiliko, yanayodhibiti tabia ya algoriti zinazotumika kufundisha mfano. -7. **Tabiri**. Tumia pembejeo mpya kujaribu usahihi wa mfano wako. +1. **Amua swali**. Michakato mingi ya ML huanza kwa kuuliza swali ambalo haliwezi kujibiwa na programu rahisi yenye masharti au mzunguko wa sheria. Maswali haya mara nyingi yanahusiana na utabiri unaotegemea mkusanyiko wa data. +2. **Kusanya na andaa data**. Ili kujibu swali lako, unahitaji data. Ubora na, wakati mwingine, wingi wa data yako utaamua jinsi unavyoweza kujibu swali lako la awali. Kuonyesha data kwa njia ya picha ni sehemu muhimu ya hatua hii. Hatua hii pia inajumuisha kugawanya data kuwa kundi la mafunzo na la majaribio ili kujenga mfano. +3. **Chagua njia ya mafunzo**. Kulingana na swali lako na asili ya data yako, unahitaji kuchagua jinsi unavyotaka kufundisha mfano ili kuonyesha data yako kwa usahihi na kutoa utabiri sahihi dhidi yake. Hii ni sehemu ya mchakato wako wa ML inayohitaji utaalamu maalum na mara nyingi majaribio mengi. +4. **Fanya mafunzo ya mfano**. Ukitumia data yako ya mafunzo, utatumia algoritimu mbalimbali kufundisha mfano kutambua mifumo ndani ya data. Mfano unaweza kutumia uzito wa ndani unaoweza kubadilishwa ili kutoa kipaumbele kwa sehemu fulani za data juu ya nyingine ili kujenga mfano bora. +5. **Tathmini mfano**. Unatumia data ambayo haujawahi kuona hapo awali (data yako ya majaribio) kutoka kwa mkusanyiko wako kuona jinsi mfano unavyofanya kazi. +6. **Sahihisha vigezo**. Kulingana na utendaji wa mfano wako, unaweza kurudia mchakato kwa kutumia vigezo tofauti, au tofauti, vinavyoendesha tabia ya algoritimu zinazotumika kufundisha mfano. +7. **Kifanya utabiri**. Tumia data mpya kujaribu usahihi wa mfano wako. -## Swali la kuuliza +## Swali gani la kuuliza -Kompyuta zina ujuzi wa kipekee wa kugundua mifumo iliyofichwa katika data. Uwezo huu ni muhimu sana kwa watafiti wenye maswali kuhusu uwanja fulani ambayo hayawezi kujibiwa kwa urahisi kwa kuunda injini ya sheria za masharti. Kwa mfano wa kazi ya actuarial, mwanasayansi wa data anaweza kuunda sheria za mikono kuhusu vifo vya wavutaji sigara dhidi ya wasiovuta sigara. +Kompyuta zina ujuzi maalum wa kugundua mifumo iliyofichwa ndani ya data. Huduma hii ni muhimu sana kwa watafiti wenye maswali kuhusu eneo fulani ambayo hayawezi kujibiwa kwa urahisi kwa kuunda mzunguko wa sheria kwa masharti. Kwa mfano, kazi ya kihesabu, mtaalamu wa data anaweza kuunda sheria zilizotengenezwa kwa mikono kuhusu vifo vya wavutaji sigara dhidi ya wasiovuta sigara. -Hata hivyo, wakati vigezo vingine vingi vinapojumuishwa katika hesabu, mfano wa ML unaweza kuwa bora zaidi katika kutabiri viwango vya vifo vya baadaye kulingana na historia ya afya ya zamani. Mfano wa kufurahisha zaidi unaweza kuwa kutabiri hali ya hewa kwa mwezi wa Aprili katika eneo fulani kulingana na data inayojumuisha latitudo, longitudo, mabadiliko ya hali ya hewa, ukaribu na bahari, mifumo ya mkondo wa ndege, na zaidi. +Hata hivyo, wakati vigezo vingine vingi vinapowekezwa, mfano wa ML unaweza kuwa bora zaidi kutabiri viwango vya vifo vya baadaye kulingana na historia ya afya ya zamani. Mfano wa furaha zaidi unaweza kuwa kutabiri hali ya hewa kwa mwezi wa Aprili katika eneo fulani kulingana na data inayojumuisha latitude, longitude, mabadiliko ya tabianchi, umbali na bahari, mifumo ya mteremko wa upepo wa jet, na zaidi. -✅ Hii [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) kuhusu mifano ya hali ya hewa inatoa mtazamo wa kihistoria wa kutumia ML katika uchambuzi wa hali ya hewa. +✅ Huu [jedwali la slaidi](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) kuhusu mifano ya hali ya hewa unatoa mtazamo wa kihistoria wa kutumia ML katika uchambuzi wa hali ya hewa. ## Kazi za kabla ya kujenga -Kabla ya kuanza kujenga mfano wako, kuna kazi kadhaa unazohitaji kukamilisha. Ili kujaribu swali lako na kuunda dhana kulingana na utabiri wa mfano, unahitaji kutambua na kusanidi vipengele kadhaa. +Kabla ya kuanza kujenga mfano wako, kuna kazi kadhaa unazohitaji kukamilisha. Ili kujaribu swali lako na kuunda nadharia inayotokana na utabiri wa mfano, unahitaji kutambua na kusanidi vipengele kadhaa. ### Data -Ili uweze kujibu swali lako kwa uhakika wowote, unahitaji kiasi kizuri cha data ya aina sahihi. Kuna mambo mawili unayohitaji kufanya katika hatua hii: +Ili kujibu swali lako kwa uhakika wowote, unahitaji kiasi kizuri cha data ya aina sahihi. Kuna mambo mawili unayohitaji kufanya hapo: -- **Kusanya data**. Ukizingatia somo la awali kuhusu usawa katika uchambuzi wa data, kusanya data yako kwa uangalifu. Kuwa na ufahamu wa vyanzo vya data hii, upendeleo wowote wa asili ambao inaweza kuwa nao, na andika asili yake. -- **Andaa data**. Kuna hatua kadhaa katika mchakato wa kuandaa data. Unaweza kuhitaji kuunganisha data na kuifanya kuwa ya kawaida ikiwa inatoka kwa vyanzo tofauti. Unaweza kuboresha ubora na wingi wa data kupitia mbinu mbalimbali kama kubadilisha maandishi kuwa namba (kama tunavyofanya katika [Clustering](../../5-Clustering/1-Visualize/README.md)). Unaweza pia kuzalisha data mpya, kulingana na ya awali (kama tunavyofanya katika [Classification](../../4-Classification/1-Introduction/README.md)). Unaweza kusafisha na kuhariri data (kama tutakavyofanya kabla ya somo la [Web App](../../3-Web-App/README.md)). Hatimaye, unaweza pia kuhitaji kuipangilia upya na kuichanganya, kulingana na mbinu zako za mafunzo. +- **Kusanya data**. Ukizingatia somo la awali kuhusu usawa katika uchambuzi wa data, kusanya data yako kwa makini. Fahamu vyanzo vya data hii, upendeleo wowote unaoweza kuwa nao, na andika chanzo chake. +- **Andaa data**. Kuna hatua kadhaa katika mchakato wa maandalizi ya data. Huenda ukahitaji kukusanya data na kuifanya iwe sawa ikiwa inatoka vyanzo tofauti. Unaweza kuboresha ubora na wingi wa data kwa njia mbalimbali kama kubadilisha mistari kuwa nambari (kama tunavyofanya katika [Kupanga Kundi](../../5-Clustering/1-Visualize/README.md)). Pia unaweza kuzalisha data mpya, kulingana na asili (kama tunavyofanya katika [Uainishaji](../../4-Classification/1-Introduction/README.md)). Unaweza kusafisha na kuhariri data (kama tutakavyofanya kabla ya somo la [Tovuti App](../../3-Web-App/README.md)). Hatimaye, unaweza kuhitaji kuipanga nasibu na kuchanganya, kulingana na mbinu zako za mafunzo. -✅ Baada ya kukusanya na kuchakata data yako, chukua muda kuona kama umbo lake litaruhusu kushughulikia swali lako lililokusudiwa. Inawezekana kwamba data haitafanya vizuri katika kazi yako uliyopewa, kama tunavyogundua katika masomo yetu ya [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ Baada ya kukusanya na kuchakata data yako, chukua muda kuona kama muundo wake utakuruhusu kutatua swali ulilokusudia. Huenda data isitende vyema katika kazi uliyopewa, kama tunavyogundua katika masomo yetu ya [Kupanga Kundi](../../5-Clustering/1-Visualize/README.md)! -### Vipengele na Lengo +### Sifa na Lengo -[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ni mali inayoweza kupimika ya data yako. Katika seti nyingi za data, huonyeshwa kama kichwa cha safu kama 'tarehe', 'ukubwa', au 'rangi'. Kigezo cha kipengele, ambacho kwa kawaida huwakilishwa kama `X` katika msimbo, kinawakilisha kigezo cha pembejeo ambacho kitatumika kufundisha mfano. +[Sifa](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ni kipengele kinachopimika cha data yako. Katika seti nyingi za data huonyeshwa kama kichwa cha safu kama 'tarehe', 'ukubwa' au 'rangi'. Kigezo cha sifa yako, kawaida huwakilishwa kama `X` katika nambari, kinawakilisha kigezo cha kuingiza kitakachotumika kufundisha mfano. -Lengo ni kitu unachojaribu kutabiri. Lengo, ambalo kwa kawaida huwakilishwa kama `y` katika msimbo, linawakilisha jibu la swali unalojaribu kuuliza kuhusu data yako: katika Desemba, malenge ya **rangi** gani yatakuwa ya bei rahisi? Katika San Francisco, vitongoji gani vitakuwa na **bei** bora ya mali isiyohamishika? Wakati mwingine lengo pia hujulikana kama sifa ya lebo. +Lengo ni kitu unachojaribu kutabiri. Lengo, kawaida huwakilishwa kama `y` katika nambari, linaonyesha jibu la swali unalojaribu kuuliza kwa data yako: mwezi wa Desemba, ni **rangi** gani za malenge zitakuwa nafuu zaidi? San Francisco, ni maeneo gani yatakuwa na **bei** bora zaidi ya mali isiyohamishika? Wakati mwingine lengo pia hurejelewa kama sifa ya lebo. -### Kuchagua kigezo cha kipengele +### Kuchagua kigezo chako cha sifa -🎓 **Uchaguzi wa Kipengele na Uchimbaji wa Kipengele** Unajuaje ni kigezo gani cha kuchagua wakati wa kujenga mfano? Huenda ukapitia mchakato wa kuchagua kipengele au kuchimba kipengele ili kuchagua vigezo sahihi kwa mfano wenye utendaji bora. Hata hivyo, si sawa: "Uchimbaji wa kipengele huunda vipengele vipya kutoka kwa kazi za vipengele vya awali, wakati uchaguzi wa kipengele unarudisha sehemu ndogo ya vipengele." ([chanzo](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Uchaguzi wa Sifa na Utoaji Sifa** Je, unajua jinsi ya kuchagua kigezo wapi wakati wa kujenga mfano? Huenda upite katika mchakato wa uchaguzi wa sifa au utoaji sifa kuchagua vigezo sahihi kwa mfano bora zaidi. Hata hivyo, si vitu sawa: "Utoaji sifa huunda sifa mpya kutoka kwa kazi za sifa za awali, wakati uchaguzi wa sifa hurudisha sehemu ndogo ya sifa." ([chanzo](https://wikipedia.org/wiki/Feature_selection)) -### Onyesha data yako +### Onyesha data yako kwa picha -Sehemu muhimu ya zana ya mwanasayansi wa data ni uwezo wa kuonyesha data kwa kutumia maktaba kadhaa bora kama Seaborn au MatPlotLib. Kuonyesha data yako kwa njia ya picha kunaweza kukuruhusu kugundua uhusiano uliofichwa ambao unaweza kutumia. Picha zako zinaweza pia kukusaidia kugundua upendeleo au data isiyo na uwiano (kama tunavyogundua katika [Classification](../../4-Classification/2-Classifiers-1/README.md)). +Sehemu muhimu ya zana za mtaalamu wa data ni uwezo wa kuonyesha data kwa picha kwa kutumia maktaba bora kama Seaborn au MatPlotLib. Kuonyesha data kwa picha kunaweza kukufanya ugundue uhusiano wa siri unaoweza kutumia. Mchoro wako pia unaweza kusaidia kugundua upendeleo au data isiyo sawa (kama tunavyogundua katika [Uainishaji](../../4-Classification/2-Classifiers-1/README.md)). ### Gawanya seti yako ya data -Kabla ya mafunzo, unahitaji kugawanya seti yako ya data katika sehemu mbili au zaidi za ukubwa usio sawa ambazo bado zinawakilisha data vizuri. +Kabla ya mafunzo, unahitaji kugawanya seti yako ya data katika sehemu mbili au zaidi za saizi isiyo sawa lakini bado zinazoonesha data vizuri. -- **Mafunzo**. Sehemu hii ya seti ya data inafaa kwa mfano wako ili kuufundisha. Seti hii inajumuisha sehemu kubwa ya seti ya data ya awali. -- **Majaribio**. Seti ya majaribio ni kikundi huru cha data, mara nyingi hukusanywa kutoka data ya awali, unayotumia kuthibitisha utendaji wa mfano uliojengwa. -- **Uthibitishaji**. Seti ya uthibitishaji ni kikundi kidogo cha mifano huru unayotumia kurekebisha vigezo vya mfano, au usanifu, ili kuboresha mfano. Kulingana na ukubwa wa data yako na swali unalouliza, huenda usihitaji kujenga seti hii ya tatu (kama tunavyobainisha katika [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Mafunzo**. Sehemu hii ya seti ya data imeundwa kwa mfano wako kufundisha. Seti hii inajumuisha sehemu kubwa ya seti ya awali. +- **Majaribio**. Seti ya majaribio ni kundi huru la data, mara nyingi hutolewa kutoka kwa data ya awali, unayotumia kuthibitisha utendaji wa mfano ulioujengwa. +- **Uthibitishaji**. Seti ya uthibitishaji ni kundi dogo la huru la mifano unayotumia kusahihisha hyperparameters, au usanifu, wa mfano ili kuboresha mfano. Kulingana na ukubwa wa data yako na swali unalouliza, huenda usihitaji kujenga seti hii ya tatu (kama tunavyoona katika [Utabiri wa Mfululizo wa Muda](../../7-TimeSeries/1-Introduction/README.md)). ## Kujenga mfano -Kwa kutumia data yako ya mafunzo, lengo lako ni kujenga mfano, au uwakilishi wa takwimu wa data yako, kwa kutumia algoriti mbalimbali ili **kufundisha**. Kufundisha mfano kunaupa data na kuruhusu kufanya dhana kuhusu mifumo inayotambua, kuthibitisha, na kukubali au kukataa. +Ukishaji data yako ya mafunzo, lengo lako ni kujenga mfano, au uwakilishi wa takwimu wa data yako, kwa kutumia algoritimu mbalimbali **kufundisha**. Kufundisha mfano kumfanya afahamu data na kutoa makadirio kuhusu mifumo anaogundua, kuthibitisha, na kukubali au kukataa. -### Amua mbinu ya mafunzo +### Amua njia ya mafunzo -Kulingana na swali lako na asili ya data yako, utachagua mbinu ya kuifundisha. Ukipitia [nyaraka za Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - tunazotumia katika kozi hii - unaweza kuchunguza njia nyingi za kufundisha mfano. Kulingana na uzoefu wako, huenda ukajaribu mbinu kadhaa tofauti ili kujenga mfano bora. Unaweza kupitia mchakato ambapo wanasayansi wa data wanatathmini utendaji wa mfano kwa kuupa data ambayo haijawahi kuonekana, kuangalia usahihi, upendeleo, na masuala mengine yanayopunguza ubora, na kuchagua mbinu ya mafunzo inayofaa zaidi kwa kazi iliyopo. +Kulingana na swali lako na asili ya data yako, utaamua njia ya kuifundisha. Kupitia [nyaraka za Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - tunayochukua katika kozi hii - unaweza kuchunguza njia nyingi za kufundisha mfano. Kulingana na uzoefu wako, huenda utajaribu njia tofauti tofauti kujenga mfano bora zaidi. Huenda upite kwa mchakato ambapo wataalamu wa data hutathmini utendaji wa mfano kwa kuipatia data isiyoonekana, kuangalia usahihi, upendeleo, na masuala mengine yanayopunguza ubora, na kuchagua njia bora ya kufundisha kwa kazi iliyopo. -### Fanya mafunzo ya mfano +### Fundisha mfano -Ukiwa na data yako ya mafunzo, uko tayari 'kuifaa' ili kuunda mfano. Utagundua kwamba katika maktaba nyingi za ML utapata msimbo 'model.fit' - ni wakati huu ambapo unatuma kigezo chako cha kipengele kama safu ya thamani (kwa kawaida 'X') na kigezo cha lengo (kwa kawaida 'y'). +Ukiwa na data yako ya mafunzo, uko tayari 'kuifit' ili kuunda mfano. Utaona katika maktaba nyingi za ML nambari 'model.fit' - ni wakati huu unapowasilisha parameter yako ya sifa kama safu ya maadili (kawaida 'X') na parameter ya lengo (kawaida 'y'). ### Tathmini mfano -Mara mchakato wa mafunzo unapokamilika (inaweza kuchukua marudio mengi, au 'epochs', kufundisha mfano mkubwa), utaweza kutathmini ubora wa mfano kwa kutumia data ya majaribio kupima utendaji wake. Data hii ni sehemu ndogo ya data ya awali ambayo mfano haujawahi kuchambua. Unaweza kuchapisha jedwali la vipimo kuhusu ubora wa mfano wako. +Mara mchakato wa mafunzo umekamilika (huenda ukachukua mizunguko mingi, au 'epochs', kufundisha mfano mkubwa), utaweza kutathmini ubora wa mfano kwa kutumia data ya majaribio kupima utendaji wake. Data hii ni sehemu ndogo ya data ya awali ambayo mfano haujawahi kuchambua. Unaweza kuchapisha jedwali la viashiria kuhusu ubora wa mfano wako. -🎓 **Kufaa kwa mfano** +🎓 **Kufit wa mfano** -Katika muktadha wa kujifunza mashine, kufaa kwa mfano kunahusu usahihi wa kazi ya msingi ya mfano unavyojaribu kuchambua data ambayo hauijui. +Katika muktadha wa kujifunza kwa mashine, kufit wa mfano kunahusu usahihi wa kazi msingi wa mfano unapojaribu kuchambua data isiyojulikana kwao. -🎓 **Kutofaa** na **kufaa kupita kiasi** ni matatizo ya kawaida yanayopunguza ubora wa mfano, kwani mfano unafaa aidha si vizuri vya kutosha au vizuri kupita kiasi. Hii husababisha mfano kufanya utabiri aidha kwa ukaribu sana au kwa umbali sana na data yake ya mafunzo. Mfano uliokaa kupita kiasi hutabiri data ya mafunzo vizuri sana kwa sababu umejifunza maelezo na kelele za data vizuri sana. Mfano usiofaa si sahihi kwani hauwezi kuchambua data yake ya mafunzo wala data ambayo bado haujaiona kwa usahihi. +🎓 **Underfitting** na **overfitting** ni matatizo ya kawaida yanayopunguza ubora wa mfano, wakati mfano unafit kwa kiasi kisichotosheleza au kwa kiasi kikubwa mno. Hii husababisha mfano kutoa utabiri ulio karibu sana au mbali mno na data ya mafunzo. Mfano uliopitiliza (overfit) hutabiri data ya mafunzo vizuri mno kwa sababu umejifunza kwa undani maelezo na kelele ya data. Mfano usiofaa (underfit) haupo sahihi kwa vile hauwezi kuchambua data ya mafunzo au data isiyojulikana kwa usahihi. -![mfano uliokaa kupita kiasi](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> Picha ya taarifa na [Jen Looper](https://twitter.com/jenlooper) +![overfitting model](../../../../translated_images/sw/overfitting.1c132d92bfd93cb6.webp) +> Infographic na [Jen Looper](https://twitter.com/jenlooper) -## Kuboresha vigezo +## Sahihisha vigezo -Mara mafunzo yako ya awali yanapokamilika, angalia ubora wa mfano na fikiria kuuboresha kwa kurekebisha 'vigezo vya juu'. Soma zaidi kuhusu mchakato huu [katika nyaraka](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Mara mafunzo ya awali yanapokamilika, tazama ubora wa mfano na fikiria kuuboresha kwa kubadilisha 'hyperparameters' zake. Soma zaidi kuhusu mchakato [katika nyaraka](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Utabiri -Huu ndio wakati ambapo unaweza kutumia data mpya kabisa kujaribu usahihi wa mfano wako. Katika muktadha wa ML 'iliyotumika', ambapo unajenga mali za wavuti kutumia mfano katika uzalishaji, mchakato huu unaweza kuhusisha kukusanya pembejeo za mtumiaji (mfano wa kubonyeza kitufe) kuweka kigezo na kukituma kwa mfano kwa ajili ya uchambuzi au tathmini. +Huu ni wakati ambapo unaweza kutumia data mpya kabisa kujaribu usahihi wa mfano wako. Katika mazingira ya ML 'waliyozishika', ambapo unajenga mali za wavuti kutumika mfano kwenye uzalishaji, mchakato huu unaweza kuhusisha ukusanyaji wa maingizo ya mtumiaji (bonyeza kitufe, kwa mfano) kuweka kigezo na kukituma kwa mfano kwa madhumuni ya utambuzi au tathmini. -Katika masomo haya, utagundua jinsi ya kutumia hatua hizi kuandaa, kujenga, kujaribu, kutathmini, na kutabiri - hatua zote za mwanasayansi wa data na zaidi, unavyosonga mbele katika safari yako ya kuwa mhandisi wa ML 'full stack'. +Katika masomo haya, utagundua jinsi ya kutumia hatua hizi kuandaa, kujenga, kujaribu, kutathmini, na kutabiri - vitendo vyote vya mtaalamu wa data na zaidi, unapoendelea na safari yako ya kuwa mhandisi wa ML wa 'full stack'. --- ## 🚀Changamoto -Chora mchoro wa mtiririko unaoonyesha hatua za mtaalamu wa ML. Unaona uko wapi sasa katika mchakato? Unadhani utapata ugumu wapi? Nini kinaonekana rahisi kwako? +Chora mchoro wa mtiririko unaoonyesha hatua za mtaalamu wa ML. Unaona wapi mwenyewe kwa sasa katika mchakato? Unatarajia kupata shida wapi? Nini kinaonekana rahisi kwako? ## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) -## Mapitio na Kujisomea +## Mapitio & Kujifunza Peke Yako -Tafuta mtandaoni mahojiano na wanasayansi wa data wanaojadili kazi zao za kila siku. Hapa kuna [moja](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Tafuta mtandaoni mahojiano na wataalamu wa data wanaozungumzia kazi zao za kila siku. Hapa kuna [moja](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Kazi +## Kazi ya Nyumbani -[Mahojiano na mwanasayansi wa data](assignment.md) +[Hoja na mtaalamu wa data](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Tangazo la Hukumu**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Wakati tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za moja kwa moja zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya mtaalamu wa binadamu inapendekezwa. Hatuwezi kuwajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/2-Regression/3-Linear/README.md b/translations/sw/2-Regression/3-Linear/README.md index 9515e4a29e..8040432c06 100644 --- a/translations/sw/2-Regression/3-Linear/README.md +++ b/translations/sw/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Jenga mfano wa regression kwa kutumia Scikit-learn: namna nne za regression +# Jenga mfano wa urekebishaji ukitumia Scikit-learn: urekebishaji kwa njia nne -## Kumbusho kwa Waanzaji +## Kumbuka kwa Mwanafunzi Mwanzo -Linear regression hutumika tunapotaka kutabiri **thamani ya nambari** (kwa mfano, bei ya nyumba, joto, au mauzo). -Inafanya kazi kwa kupata mstari wa moja kwa moja unaowakilisha vizuri uhusiano kati ya vipengele vya ingizo na matokeo. +Urekebishaji wa mstari hutumiwa tunapotaka kutabiri **thamani ya nambari** (kwa mfano, bei ya nyumba, halijoto, au mauzo). +Hufanya kazi kwa kupata mstari wa moja kwa moja unaowakilisha vyema uhusiano kati ya vipengele vya ingizo na matokeo. -Katika somo hili, tunazingatia kuelewa dhana kabla ya kuchunguza mbinu za regression zilizo juu zaidi. +Katika somo hili, tunazingatia kuelewa dhana kabla ya kuchunguza mbinu za urekebishaji za juu zaidi. ![Linear vs polynomial regression infographic](../../../../translated_images/sw/linear-polynomial.5523c7cb6576ccab.webp) -> Infographic na [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Jaribio la awali](https://ff-quizzes.netlify.app/en/ml/) +> Infografiki na [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Jaribio kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) -> ### [Somo hili lipo pia kwa R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Utangulizi +> ### [Somo hili linapatikana kwa R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Utangulizi -Hadi sasa umechunguza ni regression ni nini kwa data mfano iliyokusanywa kutoka kwenye dataset ya bei ya malenge ambayo tutaitumia kwa somo hili lote. Pia umeionyesha kwa kutumia Matplotlib. +Hadi sasa umechunguza nini urekebishaji kwa kutumia sampuli za data zilizokusanywa kutoka kwenye dataset ya bei za malenge ambayo tutatumia katika somo hili. Pia umeonyesha kwa kutumia Matplotlib. -Sasa uko tayari kuingia zaidi katika regression kwa ML. Wakati uoneshaji (visualization) unakuwezesha kuelewa data, nguvu halisi ya Machine Learning hutokana na _kujifunza kwa mifano_. Mifano hujifunza kwa data ya kihistoria ili kunasa uhusiano wa data kiotomatiki, na hukuwezesha kutabiri matokeo kwa data mpya, ambayo mfano haujawahi kuona kabla. +Sasa uko tayari kuzama zaidi katika urekebishaji kwa ML. Wakati uonyeshaji unaoruhusu kuelewa data, nguvu halisi ya Kujifunza kwa Mashine hutokana na _mafunzo ya mifano_. Mifano hufunzwa kwa data ya kihistoria ili moja kwa moja kushika utegemezi wa data, na huruhusu kutabiri matokeo kwa data mpya, ambayo mfano haujawahi kuona kabla. -Katika somo hili, utajifunza zaidi kuhusu aina mbili za regression: _linear regression msingi_ na _polynomial regression_, pamoja na baadhi ya hesabu zilizo nyuma ya mbinu hizi. Mifano hiyo itatuwezesha kutabiri bei za malenge kulingana na data tofauti za ingizo. +Katika somo hili, utajifunza zaidi kuhusu aina mbili za urekebishaji: _urekebishaji wa mstari wa msingi_ na _urekebishaji wa polynomial_, pamoja na baadhi ya hesabu zinazohusiana na mbinu hizi. Mifano hiyo itatuwezesha kutabiri bei za malenge kulingana na data mbalimbali za ingizo. -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML kwa wanaoanza - Kuelewa Urekebishaji wa Mstari](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML kwa wanaoanza - Kuelewa Urekebishaji wa Mstari") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya muhtasari wa linear regression. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayotoa muhtasari wa urekebishaji wa mstari. -> Katika mtaala huu mzima, tunadhani ujuzi mdogo wa hesabu, na tunalenga kuufanya uwe rahisi kwa wanafunzi kutoka nyanja nyingine, hivyo angalia vidokezo, 🧮 maelezo, michoro, na zana nyingine za kujifunzia kusaidia kuelewa. +> Katika mtaala huu mzima, tunadhani maarifa madogo ya hesabu, na tunalenga kuufanya ufikike kwa wanafunzi kutoka nyanja nyingine, hivyo angalia kwa makini noti, 🧮 maelezo ya ziada, michoro, na zana nyingine za kujifunzia kusaidia kuelewa. -### Mahitaji ya awali +### Msingi -Unapaswa kuwa unafahamu sasa muundo wa data ya malenge ambayo tunaiangalia. Unaweza kuipata tayari imepakizwa na kusafishwa kwenye faili _notebook.ipynb_ ya somo hili. Katika faili hiyo, bei ya malenge inaonyeshwa kwa kila bakuli katika fremu mpya ya data. Hakikisha unaweza kuendesha vitabu hivi kwenye kernels za Visual Studio Code. +Unapaswa kuwa umezoea sasa muundo wa data ya malenge tunayoichunguza. Unaweza kuipata tayari imepandishwa na kusafishwa kwenye faili la _notebook.ipynb_ la somo hili. Katika faili hiyo, bei ya malenge inaonyeshwa kwa kila kikapu katika fremu mpya ya data. Hakikisha unaweza kuendesha daftari hizi kwenye kernels za Visual Studio Code. ### Maandalizi -Kama kumbusho, unapopakua data hii ili kuweza kuuliza maswali juu yake. +Kama ukumbusho, unapakua data hii ili kuiuliza maswali. -- Ni lini ni wakati bora wa kununua malenge? -- Bei gani ninaweza kutarajia kwa sanduku la malenge madogo? -- Je, nipate kwa nusu-bushel katika vikapu au kwa sanduku la 1 1/9 bushel? -Tuendelee kuchunguza data hii. +- Ni wakati gani bora wa kununua malenge? +- Bei gani naweza kutegemea kwa kesi ya malenge madogo? +- Je, ninapaswa kuyununua katika vikapu vya nusu kikapu au sanduku la 1 1/9 kikapu? +Baki tuchunguze data hii zaidi. -Katika somo lililopita, uliunda fremu ya data ya Pandas na kuijaza kwa sehemu ya dataset ya awali, ukipatanisha bei kwa bakuli. Kwa kufanya hivyo, ulifanikiwa kukusanya takriban pointi 400 za data na kwa miezi ya vuli tu. +Katika somo la awali, ulitengeneza fremu ya data ya Pandas na kuijaza na sehemu ya dataset ya awali, ukibadilisha bei kwa mujibu wa kikapu. Hata hivyo, kwa kufanya hivyo, uliweza kukusanya takriban pointi 400 za data tu na kwa miezi ya vuli tu. -Tazama data tuliyoipakia tayari katika daftari la somo hili. Data imesababishwa na mchoro wa kunyeshea kuonyesha data ya mwezi. Labda tunaweza kupata maelezo zaidi kuhusu asili ya data kwa kusafisha zaidi. +Tazama data ambayo tumepandisha tayari katika daftari la somo hili linaloambatana. Data imepandishwa tayari na mchoro wa awali wa pointi umepangwa kuonyesha data ya mwezi. Labda tunaweza kupata maelezo zaidi kuhusu asili ya data kwa kuisafisha zaidi. -## Mstari wa regression wa moja kwa moja (linear regression) +## Mstari wa urekebishaji wa mstari -Kama ulivyojifunza katika Somo la 1, lengo la zoezi la linear regression ni kuwezesha kutoa mchoro wa mstari ili: +Kama ulivyojifunza katika Somo la 1, lengo la zoezi la urekebishaji wa mstari ni kupata uwezo wa kuchora mstari ili: -- **Onyesha uhusiano wa vigezo**. Onyesha uhusiano kati ya vigezo -- **Fanya utabiri**. Fanya utabiri sahihi wa mahali ambapo pointi mpya ya data itakuwa kuhusiana na mstari huo. - -Ni kawaida kwa **Least-Squares Regression** kuchora mstari wa aina hii. Neno "Least-Squares" linarejelea mchakato wa kupunguza jumla ya makosa katika mfano wetu. Kwa kila pointi ya data, tunaepima umbali wima (unaoitwa residual) kati ya pointi halisi na mstari wa regression. +- **Kuonyesha uhusiano wa tofauti.** Onyesha uhusiano kati ya tofauti +- **Kutabiri.** Tengeneza utabiri sahihi wa mahali ambapo nukta mpya itapangwa kulingana na mstari huo. -Tunazidisha umbali huu kwa mraba kwa sababu kuu mbili: +Ni kawaida kwa **Urekebishaji wa Sqare Ndogo** kuvuta mstari huu. Neno "Least-Squares" linahusu mchakato wa kupunguza jumla ya makosa katika mfano wetu. Kwa kila nukta ya data, tunapima umbali wima (ujulikanayo kama resti) kati ya nukta halisi na mstari wetu wa urekebishaji. -1. **Ukubwa kuliko Mwelekeo:** Tunataka kushughulikia kosa la -5 kama vile kosa la +5. Kupindisha mraba kunafanya thamani zote kuwa chanya. +Tunapanga mraba umbali huu kwa sababu mbili kuu: -2. **Kuwadhibiti Wasiokuwa Na Kawaida:** Kupindisha mraba kunazidisha uzito wa makosa makubwa, na kulazimisha mstari kuwa karibu zaidi na pointi zilizoko mbali. +1. **Ukubwa juu ya Mwelekeo:** Tunataka kushughulikia kosa la -5 sawa na kosa la +5. Kufanya mraba kunafanya thamani zote kuwa chanya. -Kisha tunajumlisha thamani zote hizi za mraba. Lengo letu ni kupata mstari maalum ambapo jumla hii ya mwisho ni ndogo zaidi (thamani ndogo kabisa) — ndiyo maana inaitwa "Least-Squares". +2. **Kuweka adhabu kwa Tofauti Kubwa:** Kufanya mraba kunatoa uzito zaidi kwa makosa makubwa, na kulazimisha mstari kubaki karibu na pointi zilizo mbali. -> **🧮 Nionyeshe hesabu** +Kisha tunaongeza thamani hizi za mraba pamoja. Lengo letu ni kupata mstari maalum ambapo jumla hii ni ndogo zaidi (thamani ndogo kabisa) - ndio maana linaitwa "Least-Squares". + +> **🧮 Nionyeshe hesabu** > -> Mstari huu, unaoitwa _mstari wa kufaa vizuri_, unaweza kuelezwa na [sawia](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Mstari huu, unaoitwa _mstari wa kufaa vyema_ unaweza kuonyeshwa kwa [mlinganyo](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` ni 'kigezo kinachoelezea'. `Y` ni 'kigezo kinategemea'. Mwinuko wa mstari ni `b` na `a` ni kiingilio kwenye y-mhimili (y-intercept), kinachorejelea thamani ya `Y` wakati `X = 0`. +> `X` ni ‘tofauti ya kuelezea’. `Y` ni ‘tofauti inayotegemea’. Pembe ya mstari ni `b` na `a` ni kitovu cha y, kinachoashiria thamani ya `Y` wakati `X = 0`. > ->![hesabu ya mwinuko](../../../../translated_images/sw/slope.f3c9d5910ddbfcf9.webp) +>![hesabu ya pembe](../../../../translated_images/sw/slope.f3c9d5910ddbfcf9.webp) > -> Kwanza, hesabu mwinuko `b`. Infographic na [Jen Looper](https://twitter.com/jenlooper) +> Kwanza, hesabu pembe `b`. Infografiki na [Jen Looper](https://twitter.com/jenlooper) > -> Kwa maneno mengine, na kurejelea swali la data ya malenge: "tabiri bei ya malenge kwa bakuli kwa mwezi", `X` itaonyesha bei na `Y` itaonyesha mwezi wa mauzo. +> Kwa maneno mengine na kurejelea swali la asili la data yetu ya malenge: "tabiri bei ya malenge kwa kila kikapu kwa mwezi", `X` itarejelea bei na `Y` itarejelea mwezi wa mauzo. > ->![kamilisha sawia](../../../../translated_images/sw/calculation.a209813050a1ddb1.webp) +>![kamilisha mlinganyo](../../../../translated_images/sw/calculation.a209813050a1ddb1.webp) > -> Hesabu thamani ya Y. Ikiwa unalipa karibu $4, lazima iwe Aprili! Infographic na [Jen Looper](https://twitter.com/jenlooper) +> Hesabu thamani ya Y. Ikiwa unalipa karibu $4, lazima iwe Aprili! Infografiki na [Jen Looper](https://twitter.com/jenlooper) > -> Hesabu inayopima mstari lazima ionyeshe mwinuko wa mstari, pia inategemea intercept, au mahali `Y` wanapopatikana wakati `X = 0`. +> Hesabu inayoonyesha mstari lazima ionyeshe pembe ya mstari, ambayo pia inategemea kitovu, au mahali `Y` ilipo wakati `X = 0`. > -> Unaweza kuangalia njia ya hesabu hizi kwenye tovuti ya [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Pia tembelea [kalkuleta hii ya Least-squares](https://www.mathsisfun.com/data/least-squares-calculator.html) kuona jinsi thamani za namba zinavyoathiri mstari. +> Unaweza kuona njia ya hesabu ya thamani hizi kwenye tovuti ya [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Pia tembelea [kalkuleta ya least-squares](https://www.mathsisfun.com/data/least-squares-calculator.html) ili kuona jinsi thamani za nambari zinavyoathiri mstari. ## Uhusiano (Correlation) -Neno moja zaidi la kuelewa ni **Uwiano wa Uhusiano** kati ya vigezo vya X na Y vilivyotolewa. Kutumia mchoro wa pointi za kufyatua (scatterplot), unaweza haraka kuona uwiano huu. Mchoro wenye pointi zinazopangwa kwa mstari mzuri unaonyesha uhusiano mkubwa, lakini mchoro wenye pointi zilizotawanyika kila mahali kati ya X na Y unaonyesha uhusiano mdogo. +Neno moja zaidi la kuelewa ni **Kiwango cha Uhusiano** kati ya tofauti za X na Y. Ukiweka mchoro wa pointi, unaweza haraka kuona kiwango hiki. Mchoro wenye pointi zilizo pangiliwa kwenye mstari mzuri una uhusiano mkubwa, lakini mchoro wenye pointi zilizoenea kila mahali kati ya X na Y una uhusiano mdogo. -Mfano mzuri wa linear regression utakuwa ule unaoonyesha Uwiano wa Juu (karibu na 1 kuliko 0) kwa kutumia mbinu ya Least-Squares Regression na mstari wa regression. +Mfano mzuri wa urekebishaji wa mstari utakuwa ule wenye Kiwango cha Uhusiano kwa kiwango cha juu (karibu 1 badala ya 0) ukitumia Mbinu ya Least-Squares Regression na mstari wa urekebishaji. -✅ Endesha daftari la somo hili na angalia mchoro wa Mwezi dhidi ya Bei. Je, data inayohusisha Mwezi na Bei kwa mauzo ya malenge inaonekana kuwa na uhusiano mkubwa au mdogo, kulingana na tafsiri yako ya picha ya scatterplot? Je, hiyo inabadilika ikiwa unatumia kipimo kidogo zaidi badala ya `Mwezi`, kwa mfano, *siku ya mwaka* (yaani, idadi ya siku tangu mwanzo wa mwaka)? +✅ Endesha daftari la mazoezi linaloambatana na somo hili na tazama mchoro wa Month to Price scatterplot. Je, data inayounganisha Mwezi na Bei kwa mauzo ya malenge inaonekana kuwa na uhusiano mkubwa au mdogo, kulingana na tafsiri yako ya kuona ya scatterplot? Je, hiyo hubadilika ikiwa unatumia kipimo cha kina zaidi badala ya `Month`, kwa mfano *siku ya mwaka* (yaani idadi ya siku tangu mwanzo wa mwaka)? -Katika msimbo hapa chini, tutaidhinisha kwamba tumesafisha data, na kupata fremu ya data inayoitwa `new_pumpkins`, kama ifuatavyo: +Katika msimbo hapa chini, tutadhani kwamba tumesafisha data, na kupata fremu ya data inayoitwa `new_pumpkins`, zinazofanana na yafuatayo: -ID | Mwezi | DayOfYear | Aina | Jiji | Mfuko | Bei ya Chini | Bei ya Juu | Bei ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +ID | Mwezi | SikuYaMwaka | Aina | Jiji | Pakiti | Bei Ndogo | Bei Kubwa | Bei +---|-------|-------------|-------|------|---------|-----------|-----------|------ +70 | 9 | 267 | AINA YA PIE | BALTIMORE | 1 1/9 kartoni za kikapu | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | AINA YA PIE | BALTIMORE | 1 1/9 kartoni za kikapu | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | AINA YA PIE | BALTIMORE | 1 1/9 kartoni za kikapu | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | AINA YA PIE | BALTIMORE | 1 1/9 kartoni za kikapu | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | AINA YA PIE | BALTIMORE | 1 1/9 kartoni za kikapu | 15.0 | 15.0 | 13.636364 -> Msimbo wa kusafisha data upo kwenye [`notebook.ipynb`](notebook.ipynb). Tumeifanya hatua sawa za usafi kama katika somo lililopita, na tumekokotoa safu ya `DayOfYear` kwa kutumia kaulimbiu ifuatayo: +> Msimbo wa kusafisha data upo katika [`notebook.ipynb`](notebook.ipynb). Tumefanya hatua sawa za usafi kama katika somo lililopita, na tumekokotoa safu ya `DayOfYear` kwa kutumia maelezo ifuatayo: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Sasa baada ya kuwa na ufahamu wa hesabu za nyuma ya linear regression, hebu tujenge mtindo wa Regression kuona kama tunaweza kutabiri ni mfuko gani wa malenge utakuwa na bei bora zaidi. Mtu anayenunua malenge kwa sherehe anaweza kutaka habari hii ili kuboresha ununuzi wa pakiti za malenge kwa sherehe. +Sasa kwamba unaelewa hesabu nyuma ya urekebishaji wa mstari, hebu tujenge Mfano wa Urekebishaji kuona kama tunaweza kutabiri pakiti ambayo ya malenge itakuwa na bei bora za malenge. Mtu anayenunua malenge kwa ajili ya shamba la malenge ya sikukuu anaweza kutaka taarifa hii ili aweze kuboresha ununuzi wao wa pakiti za malenge kwa shamba. ## Kutafuta Uhusiano -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![ML kwa wanaoanza - Kutafuta Uhusiano: Ufunguo wa Urekebishaji wa Mstari](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML kwa wanaoanza - Kutafuta Uhusiano: Ufunguo wa Urekebishaji wa Mstari") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya muhtasari wa uhusiano. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayotoa muhtasari wa uhusiano. -Kutoka somo lililopita huenda umeona kuwa bei ya wastani kwa miezi mbalimbali inaonekana hivi: +Kutoka somo lililopita huenda umeona kuwa bei ya wastani kwa miezi tofauti inaonekana kama hii: -Average price by month +Bei ya wastani kwa mwezi -Hii inaonyesha kuwa kunapaswa kuwepo na uhusiano, na tunaweza kujaribu kufundisha mfano wa linear regression kutabiri uhusiano kati ya `Mwezi` na `Bei`, au kati ya `DayOfYear` na `Bei`. Hapa kuna mchoro wa kina unaoonyesha uhusiano wa mwisho: +Hii inaonyesha kwamba kunapaswa kuwepo na uhusiano fulani, na tunaweza jaribu kufunza mfano wa urekebishaji wa mstari kutabiri uhusiano kati ya `Month` na `Price`, au kati ya `DayOfYear` na `Price`. Hapa kuna mchoro wa pointi unaonyesha uhusiano wa mwisho: -Scatter plot of Price vs. Day of Year +Mchoro wa Pointi wa Bei dhidi ya Siku ya Mwaka -Tuchukulie kama kuna uhusiano kwa kutumia kazi ya `corr`: +Tuchunguze kama kuna uhusiano kutumia kipengele cha `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Inaonekana uwiano ni mdogo kidogo, -0.15 kwa `Mwezi` na -0.17 kwa `DayOfMonth`, lakini kunaweza kuwepo na uhusiano mwingine muhimu. Inaonekana kama kunao makundi tofauti ya bei kulingana na aina tofauti za malenge. Ili kuthibitisha nadharia hii, tuchore kila kundi la malenge kwa rangi tofauti. Kwa kupitisha parameta `ax` kwa kazi ya scatterplot tunaweza kuchora pointi zote kwenye mchoro mmoja: +Inaonekana kama uhusiano ni mdogo, -0.15 kwa `Month` na -0.17 kwa `DayOfYear`, lakini kunaweza kuwa na uhusiano mwingine muhimu. Inaonekana kuna makundi tofauti ya bei yanayohusiana na aina tofauti za malenge. Ili kuthibitisha dhana hii, tuchore kila aina ya malenge kwa rangi tofauti. Kwa kupitisha parameter ya `ax` kwenye kazi ya kuchora `scatter` tunaweza kuchora pointi zote kwenye mchoro mmoja: ```python ax=None @@ -140,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +Mchoro wa Pointi wa Bei dhidi ya Siku ya Mwaka -Uchunguzi wetu unaonyesha kuwa aina inaathiri zaidi bei kuliko tarehe halisi ya mauzo. Tunaweza kuona hili kwa mchoro wa mihimili (bar graph): +Uchunguzi wetu unaonyesha kwamba aina ina athari zaidi kwenye bei kwa ujumla kuliko tarehe halisi ya mauzo. Tunaweza kuona hili kwa chati ya barua: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +Chati ya barua ya bei dhidi ya aina -Tujizomee kwa muda kwa aina moja tu ya malenge, 'aina ya pie type', na tuelewe athari ya tarehe kwenye bei: +Tuzingatie kwa sasa aina moja tu ya malenge, aina ya 'pie', na tuone athari ya tarehe kwenye bei: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Mchoro wa Pointi wa Bei dhidi ya Siku ya Mwaka -Sasa tukihesabu uwiano kati ya `Bei` na `DayOfYear` kwa kutumia kazi ya `corr`, tutapata kitu kama `-0.27` - ambayo ina maana kuwa kufundisha mfano wa utabiri kunaeleweka. +Kama sasa tutapima uhusiano kati ya `Price` na `DayOfYear` kwa kutumia kipengele cha `corr`, tutapata kitu kama `-0.27` - ambayo inamaanisha kwamba kufunza mfano wa utabiri kuna mantiki. -> Kabla ya kufundisha mfano wa linear regression, ni muhimu kuhakikisha data yetu ni safi. Linear regression haiendani vizuri na vipengele vilivyokosa (missing values), hivyo inafaa kuondoa seli zote tupu: +> Kabla ya kufunza mfano wa urekebishaji wa mstari, ni muhimu kuhakikisha data yetu ni safi. Urekebishaji wa mstari hauendani vizuri na thamani zisizokuwepo, hivyo ni busara kuondoa seli zote tupu: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Njia nyingine ni kujaza thamani tupu kwa thamani za wastani kutoka kwenye safu husika. +Njia nyingine itakuwa kujaza thamani hizo tupu na thamani za wastani kutoka safu husika. -## Linear Regression Rahisi +## Urekebishaji wa Mstari Msingi -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ML kwa wanaoanza - Urekebishaji wa Mstari na Polynomial ukitumia Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML kwa wanaoanza - Urekebishaji wa Mstari na Polynomial ukitumia Scikit-learn") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya muhtasari wa linear na polynomial regression. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayotoa muhtasari wa urekebishaji wa mstari na polynomial. -Ili kufundisha mfano wetu wa Linear Regression, tutatumia maktaba ya **Scikit-learn**. +Ili kufunza Mfano wetu wa Urekebishaji wa Mstari, tutatumia maktaba ya **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Tunaanza kwa kutenganisha vitu vya ingizo (features) na matokeo yanayotarajiwa (label) katika matrekta tofauti ya numpy: +Tunaanza kwa kutenganisha thamani za ingizo (vipengele) na matokeo yanayotarajiwa (lebeli) katika safu za numpy tofauti: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Kumbuka tulilazimika kufanya `reshape` kwa data ya ingizo ili kifurushi cha Linear Regression kiielewe vyema. Linear Regression inatarajia array ya 2D kama ingizo, ambapo kila safu ni vekta ya vipengele vya ingizo. Kwa kuwa tunayo ingizo moja tu, tunahitaji array yenye umbo la N×1, ambapo N ni ukubwa wa dataset. +> Kumbuka tulilazimika kufanya `reshape` kwa data ya ingizo ili kifurushi cha Urekebishaji wa Mstari kiielewe ipasavyo. Urekebishaji wa Mstari unatarajia safu ya 2D kama ingizo, ambapo kila safu ya safu ni vekta ya vipengele vya ingizo. Katika kesi yetu, kwa kuwa tuna ingizo moja tu - tunahitaji safu yenye umbo N×1, ambapo N ni ukubwa wa dataset. -Kisha, tunahitaji kugawanya data kuwa datasets za mafunzo na majaribio, ili tuweze kuthibitisha mfano baada ya mafunzo: +Kisha, tunapaswa kugawanya data kuwa sehemu ya mafunzo na sehemu ya majaribio, ili tuweze kuthibitisha mfano wetu baada ya mafunzo: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Mwishowe, kufundisha mfano halisi wa Linear Regression kunachukua mistari miwili tu ya msimbo. Tunaelezea kitu cha `LinearRegression`, na kukiambatanisha na data yetu kwa kutumia njia `fit`: +Mwishowe, kufunza mfano halisi wa Urekebishaji wa Mstari huchukua mistari miwili tu ya msimbo. Tunafafanua kitu cha `LinearRegression`, na kuifunga kwenye data yetu kwa kutumia njia ya `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Kitu cha `LinearRegression` baada ya kufanywa `fit` kina coefficients zote za regression, ambazo zinaweza kupatikana kwa kutumia mali ya `.coef_`. Katika kesi yetu, kuna coefficient moja tu, ambayo inapaswa kuwa karibu na `-0.017`. Hii ina maana bei zinaonekana kushuka kidogo kwa muda, lakini si nyingi sana, takriban senti 2 kwa siku. Tunaweza pia kupata sehemu ya kukutana ya regression na mhimili wa Y kwa kutumia `lin_reg.intercept_` - itakuwa karibu na `21` katika kesi yetu, ikionyesha bei mwanzoni mwa mwaka. +Kitu cha `LinearRegression` baada ya `fit`-ting kina coefficients zote za regression, ambazo zinaweza kupatikana kwa kutumia mali ya `.coef_`. Katika kesi yetu, kuna coefficient moja tu, ambayo inapaswa kuwa karibu na `-0.017`. Hii ina maana kuwa bei zinaonekana kushuka kidogo kwa muda, lakini sio kwa kiasi kikubwa, karibu senti 2 kwa siku. Tunaweza pia kupata kituo cha mkusanyiko wa regression na mhimili wa Y kwa kutumia `lin_reg.intercept_` - itakuwa karibu na `21` katika kesi yetu, ikiashiria bei mwanzoni mwa mwaka. -Ili kuona usahihi wa mfano wetu, tunaweza kutabiri bei kwenye seti ya data ya mtihani, kisha kupima jinsi makisio yetu yalivyo karibu na maadili yanayotarajiwa. Hii inaweza kufanyika kwa kutumia metrics ya root mean square error (RMSE), ambayo ni mizizi ya wastani wa tofauti zote zilizochukuliwa mraba kati ya thamani inayotarajiwa na inayotabiriwa. +Ili kuona usahihi wa mfano wetu, tunaweza kutabiri bei kwenye seti ya majaribio, kisha kupima jinsi makisio yetu yanavyokaribia thamani zinazotarajiwa. Hii inaweza kufanywa kwa kutumia kipimo cha root mean square error (RMSE), ambayo ni mzizi wa wastani wa tofauti zote zilizopangwa mraba kati ya thamani zinazotarajiwa na zinazotabiriwa. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Kosa letu linaonekana kuwa takriban pointi 2, ambayo ni ~17%. Si nzuri sana. Kiashiria kingine cha ubora wa mfano ni **coefficient of determination**, ambayo inaweza kupatikana kama hii: +Kosa letu linaonekana kuwa karibu na pointi 2, ambayo ni ~17%. Siyo nzuri sana. Kiashiria kingine cha ubora wa mfano ni **coefficient of determination**, ambacho kinaweza kupatikana hivi: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Ikiwa thamani ni 0, ina maana mfano hauzingatii data ya ingizo, na hufanya kama *mtabiri mbaya zaidi wa mstari*, ambao ni wastani tu wa matokeo. Thamani ya 1 ina maana tunaweza kutabiri kwa usahihi zote matokeo yote yanayotarajiwa. Katika kesi yetu, coefficient ni takriban 0.06, ambayo ni ya chini sana. +Ikiwa thamani ni 0, ina maana kuwa mfano hauzingatii data ya pembejeo, na hutenda kama *mtabiri mbaya kabisa wa mstari*, ambaye ni thamani ya wastani tu ya matokeo. Thamani ya 1 ina maana kwamba tunaweza kutabiri vyema matokeo yote yanayotarajiwa. Katika kesi yetu, coefficient ni karibu 0.06, ambayo ni ya chini kabisa. -Tunaweza pia kuchora data ya mtihani pamoja na mstari wa regression kuona vizuri jinsi regression inavyofanya kazi katika kesi yetu: +Tunaweza pia kuchora data za majaribio pamoja na mstari wa regression kuona bora jinsi regression inavyofanya kazi katika kesi yetu: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Polynomial Regression -Aina nyingine ya Linear Regression ni Polynomial Regression. Wakati mwingine kuna uhusiano wa mstari kati ya vigezo - vile vile ukubwa wa loti huongezeka, ndivyo bei inavyoongezeka - wakati mwingine uhusiano huu hauwezi kuchorwa kama usawa au mstari wa moja kwa moja. +Aina nyingine ya Linear Regression ni Polynomial Regression. Ingawa wakati mwingine kuna uhusiano wa mstari kati ya vigezo - kadri buibui linavyokuwa kubwa kwa kiasi, ndivyo bei inavyokuwa juu - wakati mwingine uhusiano huu hauwezi kuchorwa kama usawa au mstari wa moja kwa moja. -✅ Hapa kuna [mifano mingine zaidi](https://online.stat.psu.edu/stat501/lesson/9/9.8) ya data ambayo inaweza kutumia Polynomial Regression +✅ Hapa kuna [mifano zaidi](https://online.stat.psu.edu/stat501/lesson/9/9.8) ya data ambayo inaweza kutumia Polynomial Regression -Tazama tena uhusiano kati ya Tarehe na Bei. Je, mchoro huu wa mchanganyiko unaonekana kwamba lazima uchunguzwe kwa mstari wa moja kwa moja? Je, bei haziwezi kubadilika? Katika kesi hii, unaweza kujaribu polynomial regression. +Tazama tena uhusiano kati ya Tarehe na Bei. Je, mchoro huu wa points unaonekana kama unapaswa kuchambuliwa kwa kutumia mstari wa moja kwa moja? Je, bei hasi zinaweza kubadilika? Katika kesi hii, unaweza kujaribu polynomial regression. -✅ Polynomials ni misemo ya hisabati ambayo inaweza kuwa na vigezo moja au zaidi pamoja na coefficients +✅ Polynomials ni maelezo ya kihesabu ambayo yanaweza kuwa na variables moja au zaidi na coefficients -Polynomial regression huunda mstari wa mviringo ili kuendana vizuri zaidi na data isiyo mstari. Katika kesi yetu, ikiwa tutajumuisha kigezo chenye kiwango cha mraba `DayOfYear` katika data ya ingizo, tunapaswa kuwa na uwezo wa kulinganisha data yetu na curve ya parabolic, ambayo itakuwa na kiwango cha chini mahali fulani ndani ya mwaka. +Polynomial regression huunda mstari wa mviringo ili kufaa vizuri data zisizo za mstari. Katika kesi yetu, ikiwa tutajumuisha `DayOfYear` kwa mraba kuwa variable ya pembejeo, tunapaswa kuweza kufaa data zetu na mviringo wa parabolic, ambao utakuwa na chini ya thamani mahali fulani ndani ya mwaka. -Scikit-learn inajumuisha API ya [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) inayosaidia kuunganisha hatua tofauti za usindikaji wa data pamoja. **pipeline** ni mnyororo wa **estimators**. Katika kesi yetu, tutaunda pipeline ambayo kwanza inaongeza sifa za polynomial kwenye mfano wetu, kisha kuandaa regression: +Scikit-learn inajumuisha API yenye msaada ya [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) kuunganisha hatua tofauti za usindikaji data pamoja. **pipeline** ni mnyororo wa **estimators**. Katika kesi yetu, tutaunda pipeline ambayo kwanza itaongeza sifa za polynomial kwenye mfano wetu, kisha itafunza regression: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Kutumia `PolynomialFeatures(2)` ina maana kwamba tutajumuisha polynomials zote za daraja la pili kutoka kwa data ya ingizo. Katika kesi yetu itamaanisha tu `DayOfYear`2, lakini ikizingatiwa vigezo viwili vya ingizo X na Y, hii itaongeza X2, XY na Y2. Tunaweza pia kutumia polynomials za daraja kubwa zaidi ikiwa tunataka. +Kutumia `PolynomialFeatures(2)` kunamaanisha kwamba tutajumuisha polynomials zote za daraja la pili kutoka kwenye data za pembejeo. Katika kesi yetu itamaanisha tu `DayOfYear`2, lakini ikitolewa variables mbili za pembejeo X na Y, hii itaongeza X2, XY na Y2. Tunaweza pia kutumia polynomials za daraja kubwa zaidi ikiwa tunataka. + +Pipelines zinaweza kutumika kwa njia ile ile kama kitu cha awali cha `LinearRegression`, yaani tunaweza `fit` pipeline, na kisha kutumia `predict` kupata matokeo ya utabiri: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Ili kuchora mviringo laini wa makadirio, tunatumia `np.linspace` kuunda safu sawa ya thamani za pembejeo, badala ya kuchora moja kwa moja kwenye data za majaribio zisizo na mpangilio (ambazo zingetengeneza mstari wa mviringo-mviringo): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelines zinaweza kutumiwa kwa njia ile ile kama kitu cha asili cha `LinearRegression`, yaani tunaweza `fit` pipeline, kisha tumia `predict` kupata matokeo ya utabiri. Hii ni grafu inayoonyesha data ya mtihani, na curve ya makadirio: +Hapa ni mchoro unaoonyesha data za majaribio, na mviringo wa makadirio: Polynomial regression -Kwa kutumia Polynomial Regression, tunaweza kupata MSE kidogo chini na coefficient ya determination kubwa zaidi, lakini si kwa kiwango kikubwa. Tunahitaji kuzingatia sifa zingine! +Kutumia Polynomial Regression, tunaweza kupata RMSE kidogo chini na coefficient ya determination kubwa zaidi, lakini si kwa kiasi kikubwa. Tunahitaji kuzingatia sifa zingine pia! -> Unaweza kuona kuwa bei za chini kabisa za loti zinapatikana karibu na Sikukuu ya Halloween. Unawezaje kueleza hili? +> Unaweza kuona kuwa bei ndogo za buibui hupatikana karibu na Halloween. Unaelewaje hili? -🎃 Hongera, umeunda mfano ambao unaweza kusaidia kutabiri bei ya maloti ya pie. Labda unaweza kurudia utaratibu huo kwa aina zote za maloti, lakini hiyo itakuwa ya kuchosha. Sasa tufurahie kujifunza jinsi ya kuzingatia aina ya loti katika mfano wetu! +🎃 Hongera, umeunda mfano unaoweza kusaidia kutabiri bei ya buibui za pie. Huenda ukaweza kurudia hatua hii kwa aina zote za buibui, lakini hiyo itakuwa ngumu. Hebu tujifunze sasa jinsi ya kuzingatia aina ya buibui katika mfano wetu! -## Vipengele vya Kikategoria +## Sifa za Kategorikali -Katika ulimwengu wa kawaida, tunataka kuweza kutabiri bei kwa aina tofauti za loti kwa kutumia mfano mmoja. Hata hivyo, safu ya `Variety` ni tofauti kidogo na safu kama `Month`, kwa sababu ina maadili yasiyo nambari. Safu kama hizi huitwa **kategoria**. +Katika dunia bora, tunataka kuwa na uwezo wa kutabiri bei za aina tofauti za buibui kwa kutumia mfano mmoja. Hata hivyo, safu ya `Variety` ni tofauti kidogo na safu kama `Month`, kwa sababu inajumuisha thamani zisizo za nambari. Safu kama hizi huitwa **kategorikali**. -[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![ML kwa waanzilishi - Utabiri wa Sifa za Kategorikali kwa Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML kwa waanzilishi - Utabiri wa Sifa za Kategorikali kwa Linear Regression") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya matumizi ya vipengele vya kategoria. +> 🎥 Bonyeza picha hapo juu kwa muhtasari mfupi wa video kuhusu kutumia sifa za kategorikali. Hapa unaweza kuona jinsi bei ya wastani inavyotegemea aina: Average price by variety -Ili kuzingatia aina, kwanza tunahitaji kuibadilisha kuwa muundo wa nambari, au **kuandika**. Kuna njia kadhaa tunazoweza kuifanya: +Ili kuzingatia aina, kwanza tunahitaji kuibadilisha kuwa nambari, au **kuandika msimbo**. Kuna njia kadhaa za kufanya hivyo: -* **Kudhibiti mduara wa nambari rahisi** kutatengeneza jedwali la aina tofauti, kisha kubadilisha jina la aina kwa nambari ya index katika jedwali hili. Hii si wazo bora kwa regression ya mstari, kwa sababu regression ya mstari huchukua nambari halisi ya index, na kuongeza kwenye matokeo, ikizidisha na coefficient fulani. Katika kesi yetu, uhusiano kati ya nambari ya index na bei ni wazi kuwa si mstari, hata tukihakikisha kuwa maindex yamepangwa kwa njia fulani maalum. -* **One-hot encoding** itabadilisha safu ya `Variety` kuwa safu 4 tofauti, moja kwa kila aina. Kila safu itakuwa na `1` ikiwa mstari husika ni wa aina fulani, na `0` vinginevyo. Hii ina maana kutakuwa na coefficients nne katika regression ya mstari, moja kwa kila aina ya loti, inayohusika na "bei ya mwanzo" (au badala yake "bei ya ziada") kwa aina husika. +* **Kuandika msimbo wa nambari wa kawaida** kutaunda jedwali la aina tofauti, kisha kubadilisha jina la aina kuwa nambari katika jedwali hilo. Hii si wazo bora kwa regression ya mstari, kwa sababu regression ya mstari huchukua thamani halisi ya nambari ya index, na kuiongeza matokeo, ikizidishwa na coefficient fulani. Katika kesi yetu, uhusiano kati ya nambari ya index na bei ni wazi si mstari, hata kama tunahakikisha kwamba indices zipo kwa mpangilio maalum. +* **One-hot encoding** itabadilisha safu ya `Variety` kuwa safu 4 tofauti, moja kwa kila aina. Kila safu itakuwa na `1` ikiwa safu husika ni ya aina hiyo, na `0` vinginevyo. Hii ina maana kuwa kutakuwa na coefficients nne katika regression ya mstari, moja kwa kila aina ya buibui, inayohusika na "bei ya kuanzia" (au badala yake "bei ya ziada") kwa aina hiyo. -Nambari hapa chini inaonyesha jinsi ya kufanya one-hot encode kwa aina: +Msimbo hapa chini unaonyesha jinsi ya kufanya one-hot encode kwa aina: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Ili kufundisha regression ya mstari kwa kutumia aina zilizohifadhiwa kama one-hot encoded, tunahitaji tu kuanzisha data za `X` na `y` kwa usahihi: +Ili kufunza regression ya mstari kwa kutumia aina iliyowekwa one-hot encoded kama data ya pembejeo, tunahitaji tu kuanzisha data za `X` na `y` kwa usahihi: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Mengine ya msimbo ni sawa na tuliotumia hapo juu kufundisha Linear Regression. Ukijaribu, utaona kuwa mean squared error ni takriban ile ile, lakini tunapata coefficient kubwa zaidi ya determination (~77%). Ili kupata utabiri sahihi zaidi, tunaweza kuzingatia vipengele vya kategoria vingi zaidi, pamoja na vipengele vya nambari, kama `Month` au `DayOfYear`. Ili kupata safu kubwa ya vipengele, tunaweza kutumia `join`: +Msimbo wa ziada ni ule ule tulioitumia hapo juu kufunza Linear Regression. Ukijaribu, utaona kuwa msemo wa wastani wa makosa ya mraba ni karibu sawa, lakini tunapata coefficient ya determination ya juu zaidi (~77%). Ili kupata makadirio sahihi zaidi, tunaweza kuzingatia sifa za kategorikali zaidi, pamoja na sifa za nambari kama `Month` au `DayOfYear`. Ili kupata safu kubwa ya sifa, tunaweza kutumia `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,60 +341,60 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Hapa pia tunazingatia `City` na aina ya `Package`, ambayo inatupa MSE 2.84 (10%), na coefficient ya determination 0.94! +Hapa pia tunazingatia `City` na aina ya `Package`, ambayo hutoa RMSE 2.84 (10.5%), na determination 0.94! -## Kuunganisha yote pamoja +## Kuweka yote Pamoja -Ili kutengeneza mfano bora zaidi, tunaweza kutumia data mchanganyiko (ya one-hot encoded kategoria + nambari) kutoka mfano wa juu pamoja na Polynomial Regression. Huu ndio msimbo kamili kwa urahisi wako: +Ili kutengeneza mfano bora zaidi, tunaweza kutumia data zilizojumuishwa (sifa za kategorikali zilizowekwa one-hot encoded + sifa za nambari) kutoka mfano wa juu pamoja na Polynomial Regression. Hapa ni msimbo kamili kwa urahisi wako: ```python -# weka data ya mafunzo +# andaa data ya mafunzo X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# tengeneza mgawanyo wa mafunzo-na-majaribio +# fanya mgawanyo wa mafunzo-na-mtihani X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# weka na faya mfumo wa mafunzo +# andaa na fundisha mchakato pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# tabiri matokeo kwa data ya majaribio +# tabiri matokeo kwa data ya mtihani pred = pipeline.predict(X_test) -# hesabu MSE na uamuzi -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# hesabu RMSE na uamuzi +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Hii inapaswa kutupatia coefficient bora zaidi ya determination ya karibu 97%, na MSE=2.23 (~8% kosa la utabiri). +Hii inapaswa kutuletea coefficient bora zaidi ya determination karibu 97%, na RMSE=2.23 (~8% kosa la utabiri). -| Mfano | MSE | Determination | +| Mfano | RMSE | Determination | |-------|-----|---------------| | `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | | `Variety` Linear | 5.24 (19.7%) | 0.77 | -| Vipengele vyote Linear | 2.84 (10.5%) | 0.94 | -| Vipengele vyote Polynomial | 2.23 (8.25%) | 0.97 | +| Sifa Zote Linear | 2.84 (10.5%) | 0.94 | +| Sifa Zote Polynomial | 2.23 (8.25%) | 0.97 | -🏆 Hongera! Umeunda mifano minne ya Regression katika somo moja, na kuboresha ubora wa mfano hadi 97%. Katika sehemu ya mwisho kuhusu Regression, utajifunza kuhusu Logistic Regression kutambua makundi. +🏆 Hongera! Umeunda mifano minne ya Regression katika somo moja, na kuboresha ubora wa mfano hadi 97%. Katika sehemu ya mwisho kuhusu Regression, utajifunza kuhusu Logistic Regression kuamua makundi. --- ## 🚀Changamoto -Jaribu vigezo tofauti kadhaa katika daftari hili kuona jinsi uhusiano unavyolingana na usahihi wa mfano. +Jaribu vigezo tofauti katika daftari hili kuona jinsi uhusiano unavyohusiana na usahihi wa mfano. ## [Mtihani baada ya somo](https://ff-quizzes.netlify.app/en/ml/) -## Mapitio & Kujifunza Binafsi +## Mapitio na Kujifunza Binafsi -Katika somo hili tulijifunza kuhusu Linear Regression. Kuna aina zingine muhimu za Regression. Soma kuhusu mbinu za Stepwise, Ridge, Lasso na Elasticnet. Kozi nzuri ya kujifunza zaidi ni [kozi ya Stanford ya Kujifunza Takwimu](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Katika somo hili tulijifunza kuhusu Linear Regression. Kuna aina nyingine muhimu za Regression. Soma kuhusu mbinu za Stepwise, Ridge, Lasso na Elasticnet. Kozi nzuri ya kusoma zaidi ni [kozi ya Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Kazi ya Nyumbani @@ -381,6 +403,6 @@ Katika somo hili tulijifunza kuhusu Linear Regression. Kuna aina zingine muhimu --- -**Hekweti**: -Hati hii imetatuliwa kwa kutumia huduma ya kutafsiri AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au ukosefu wa usahihi. Hati ya awali katika lugha yake asili inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya mtaalamu wa binadamu inashauriwa. Hatubebwi dhamana kwa kutoelewana au tafsiri potofu zinazotokana na kutumia tafsiri hii. +**Kiaruhusi cha kutokuwa na dhamana**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kwamba tafsiri za moja kwa moja zinaweza kuwa na makosa au kasoro. Hati ya asili katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatuwajibiki kwa kutoelewana au tafsiri potofu zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/2-Regression/3-Linear/solution/notebook.ipynb b/translations/sw/2-Regression/3-Linear/solution/notebook.ipynb index adcdc9a55f..33627bcee9 100644 --- a/translations/sw/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/sw/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Usawazishaji wa Mstari na Usawazishaji wa Polynomial kwa Bei ya Maboga - Somo la 3\n", + "## Mchoro wa Mstari na Polinomia kwa Bei za Maboga - Somo la 3\n", "\n", - "Pakia maktaba zinazohitajika na seti ya data. Badilisha data kuwa fremu ya data inayoonyesha sehemu ndogo ya data:\n", + "Pakia maktaba zinazohitajika na seti ya data. Geuza data kuwa dataframe inayojumuisha sehemu ndogo ya data:\n", "\n", - "- Chagua tu maboga yaliyo na bei kwa kipimo cha bushel\n", - "- Badilisha tarehe kuwa mwezi\n", + "- Pata tu maboga yaliyopewa bei kwa bushel\n", + "- Geuza tarehe kuwa mwezi\n", "- Hesabu bei kuwa wastani wa bei ya juu na ya chini\n", - "- Badilisha bei ili kuonyesha upimaji kwa idadi ya bushel\n" + "- Geuza bei kuonyesha bei kwa idadi ya bushel\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mchoro wa kutawanyika unatukumbusha kwamba tuna data ya miezi kutoka Agosti hadi Desemba tu. Huenda tunahitaji data zaidi ili tuweze kutoa hitimisho kwa mtindo wa mstari.\n" + "Mchoro wa alama unatukumbusha kwamba tunayo data za miezi tu kutoka Agosti hadi Desemba. Labda tunahitaji data zaidi ili kuwaze uwezo wa kuvuta hitimisho kwa njia ya mstari.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Tuwone kama kuna uhusiano:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Inaonekana kama uhusiano ni mdogo sana, lakini kuna uhusiano mwingine muhimu zaidi - kwa sababu bei katika mchoro hapo juu zinaonekana kuwa na makundi tofauti tofauti. Hebu tufanye mchoro ambao utaonyesha aina mbalimbali za maboga:\n" + "Inaonekana uhusiano ni mdogo sana, lakini kuna uhusiano mwingine muhimu zaidi - kwa sababu viwango vya bei kwenye mchoro hapo juu vinaonekana kuwa na makundi kadhaa tofauti. Hebu tufanye mchoro utakaonyesha aina tofauti za malenge:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Kwa sasa, tushirikiane kwenye aina moja tu - **aina ya pai**.\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Urejeleaji wa Mstari\n", + "### Urekebishaji wa Mstari\n", "\n", - "Tutatumia Scikit Learn kufundisha mfano wa urejeleaji wa mstari:\n" + "Tutatumia Scikit Learn kufundisha mfano wa urekebishaji wa mstari:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mwelekeo wa mstari unaweza kuamuliwa kutoka kwa vigezo vya usawa wa mstari:\n" + "Kipenyo cha mstari kinaweza kubainishwa kutoka kwa viashirio vya marejeleo ya mstari:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Tunaweza kutumia modeli iliyofundishwa kutabiri bei:\n" + ] }, { "cell_type": "code", @@ -716,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Usawazishaji wa Polynomial\n", + "### Urejeshaji wa Polynomial\n", "\n", - "Wakati mwingine uhusiano kati ya vipengele na matokeo ni wa asili usio wa mstari. Kwa mfano, bei za maboga zinaweza kuwa juu wakati wa baridi (miezi=1,2), kisha zishuke wakati wa kiangazi (miezi=5-7), na kisha zipande tena. Usawazishaji wa mstari hauwezi kupata uhusiano huu kwa usahihi.\n", + "Wakati mwingine uhusiano kati ya sifa na matokeo hauko mstari moja kwa moja. Kwa mfano, bei za malenge zinaweza kuwa juu wakati wa baridi (miezi=1,2), kisha kupungua wakati wa majira ya joto (miezi=5-7), na kisha kuongezeka tena. Urejeshaji wa mstari hauwezi kupata uhusiano huu kwa usahihi.\n", "\n", - "Katika hali hii, tunaweza kufikiria kuongeza vipengele vya ziada. Njia rahisi ni kutumia polinomiali kutoka kwa vipengele vya ingizo, ambayo itasababisha **usawazishaji wa polynomial**. Katika Scikit Learn, tunaweza kuhesabu kiotomatiki vipengele vya polynomial kwa kutumia pipelines:\n" + "Katika kesi hii, tunaweza kuzingatia kuongeza sifa za ziada. Njia rahisi ni kutumia polinomiali kutoka kwa sifa za ingizo, ambayo itasababisha **urejeshaji wa polynomial**. Katika Scikit Learn, tunaweza kuhesabu awali sifa za polynomial kwa kutumia pipelines: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Aina za usimbaji\n", + "### Aina za Uwekaji Alama\n", "\n", - "Katika ulimwengu bora, tunataka kuwa na uwezo wa kutabiri bei za aina tofauti za maboga kwa kutumia modeli moja. Ili kuzingatia aina, tunahitaji kwanza kuibadilisha kuwa fomu ya nambari, au **kusimba**. Kuna njia kadhaa tunazoweza kutumia:\n", + "Katika ulimwengu bora, tunataka kuwa na uwezo wa kutabiri bei za aina tofauti za malenge kwa kutumia mfano ule ule. Ili kuzingatia aina, kwanza tunahitaji kuibadilisha kuwa nambari, au **kuweka alama**. Kuna njia kadhaa tunazoweza kufanya hivyo:\n", "\n", - "* Usimbaji rahisi wa nambari ambao utajenga jedwali la aina tofauti, kisha kubadilisha jina la aina kwa kiashiria katika jedwali hilo. Hii si wazo bora kwa urarukaji wa mstari, kwa sababu urarukaji wa mstari unazingatia thamani ya nambari ya kiashiria, na thamani ya nambari huenda isiwe na uhusiano wa moja kwa moja na bei.\n", - "* Usimbaji wa one-hot, ambao utabadilisha safu ya `Variety` kuwa safu 4 tofauti, moja kwa kila aina, ambayo itakuwa na 1 ikiwa safu husika ni ya aina fulani, na 0 vinginevyo.\n", + "* Uwekaji alama wa nambari rahisi ambao utajenga jedwali la aina tofauti, kisha kubadilisha jina la aina kwa nambari ya muhtasari katika jedwali hilo. Hii si wazo bora kwa upangaji mstari, kwa sababu upangaji mstari unazingatia thamani ya nambari ya muhtasari, na thamani hiyo haionekani kuhusiana kihesabu na bei.\n", + "* Uwekaji alama wa One-hot, ambao utabadilisha safu ya `Variety` kuwa safu 4 tofauti, moja kwa kila aina, ambayo itakuwa na 1 ikiwa safu husika ni ya aina fulani, na 0 vinginevyo.\n", "\n", - "Nambari iliyo hapa chini inaonyesha jinsi tunavyoweza kusimba aina kwa one-hot:\n" + "Msimbo hapa chini unaonyesha jinsi tunavyoweza kuweka alama aina kwa one-hot:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Urejeleaji wa Mstari kwenye Aina\n", + "### Upunguzaji wa Mstari kwa Aina \n", "\n", - "Sasa tutatumia msimbo ule ule kama hapo juu, lakini badala ya `DayOfYear` tutatumia aina yetu iliyowekwa kwa njia ya one-hot-encoding kama ingizo:\n" + "Sasa tutatumia msimbo ule ule kama ulivyo hapo juu, lakini badala ya `DayOfYear` tutatumia aina yetu iliyowekwa kwa njia ya one-hot-encoded kama ingizo:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tunaweza pia kujaribu kutumia vipengele vingine kwa njia hiyo hiyo, na kuviunganisha na vipengele vya nambari, kama vile `Month` au `DayOfYear`:\n" + "Tunaweza pia kujaribu kutumia vipengele vingine kwa njia ile ile, na kuviunganisha na vipengele vya nambari, kama vile `Month` au `DayOfYear`:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Usajili wa Polynomial\n", + "### Mwinuko wa Polynomial\n", "\n", - "Usajili wa polynomial unaweza pia kutumika na vipengele vya kategoria ambavyo vimekodishwa kwa njia ya one-hot. Msimbo wa kufundisha usajili wa polynomial kimsingi utakuwa sawa na tulivyoona hapo juu.\n" + "Mwinuko wa polynomial pia unaweza kutumika na sifa za kategoria ambazo zimewekwa kama one-hot-encoded. Msimbo wa kufundisha mwinuko wa polynomial kwa kiasi kikubwa utakuwa sawa na ule tuliouona hapo juu.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Kanusho**: \nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, inashauriwa kutumia huduma ya tafsiri ya kitaalamu ya binadamu. Hatutawajibika kwa maelewano mabaya au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.\n" + "---\n\n\n**Kauli ya Msamaha**:\nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Wakati tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au usahihi mdogo. Hati ya asili katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu kutoka kwa mtafsiri binadamu inashauriwa. Hatuna wajibu wowote kwa kusudia au makosa ya ufafanuzi yanayotokea kutokana na matumizi ya tafsiri hii.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:11:26+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "sw" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 7d70d5f0a626c7dbc77d59e98c0a50f6f9d79c33 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:12:11 +0000 Subject: [PATCH 06/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/bg/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 102 ++++--- .../bg/2-Regression/3-Linear/README.md | 273 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 65 ++-- translations/ro/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 108 +++---- .../ro/2-Regression/3-Linear/README.md | 254 +++++++++------- .../3-Linear/solution/notebook.ipynb | 71 ++--- translations/sk/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 114 +++---- .../sk/2-Regression/3-Linear/README.md | 287 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 71 ++--- 12 files changed, 743 insertions(+), 644 deletions(-) diff --git a/translations/bg/.co-op-translator.json b/translations/bg/.co-op-translator.json index b9ac2a2192..caf9b6a00b 100644 --- a/translations/bg/.co-op-translator.json +++ b/translations/bg/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "bg" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T00:26:03+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:12:00+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "bg" }, @@ -90,8 +90,8 @@ "language_code": "bg" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:41:43+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:11:25+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "bg" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "bg" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:07:21+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "bg" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T23:26:51+00:00", diff --git a/translations/bg/1-Introduction/4-techniques-of-ML/README.md b/translations/bg/1-Introduction/4-techniques-of-ML/README.md index c2881a2ebf..df406a6631 100644 --- a/translations/bg/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/bg/1-Introduction/4-techniques-of-ML/README.md @@ -1,13 +1,13 @@ # Техники на машинното обучение -Процесът на създаване, използване и поддържане на модели за машинно обучение и данните, които те използват, е много различен от много други работни потоци за разработка. В този урок ще разясним процеса и ще очертаем основните техники, които трябва да знаете. Ще: +Процесът на създаване, използване и поддръжка на модели за машинно обучение и данните, които използват, е много различен процес от много други работни потоци за разработка. В този урок ще разсеем мистерията около процеса и ще очертаем основните техники, които трябва да знаете. Вие ще: - Разберете процесите, които стоят в основата на машинното обучение на високо ниво. -- Изследвате основни концепции като „модели“, „предсказания“ и „обучаващи данни“. +- Изследвате базови понятия като „модели“, „прогнози“ и „обучаващи данни“. -## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/) +## [Квиз преди лекция](https://ff-quizzes.netlify.app/en/ml/) -[![ML за начинаещи - Техники на машинното обучение](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML за начинаещи - Техники на машинното обучение") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") > 🎥 Кликнете върху изображението по-горе за кратко видео, което разглежда този урок. @@ -15,109 +15,111 @@ На високо ниво, изкуството на създаване на процеси за машинно обучение (ML) се състои от няколко стъпки: -1. **Определете въпроса**. Повечето процеси за ML започват с въпрос, който не може да бъде отговорен чрез проста условна програма или система, базирана на правила. Тези въпроси често се въртят около предсказания, базирани на съвкупност от данни. -2. **Съберете и подгответе данни**. За да можете да отговорите на въпроса си, ви трябват данни. Качеството и, понякога, количеството на вашите данни ще определят колко добре можете да отговорите на първоначалния си въпрос. Визуализирането на данни е важен аспект на тази фаза. Тази фаза включва и разделяне на данните на групи за обучение и тестване, за да се изгради модел. -3. **Изберете метод за обучение**. В зависимост от въпроса ви и естеството на данните, трябва да изберете как искате да обучите модел, за да отразява най-добре данните и да прави точни предсказания. Това е частта от процеса на ML, която изисква специфична експертиза и често значително количество експериментиране. -4. **Обучете модела**. Използвайки обучаващите си данни, ще използвате различни алгоритми, за да обучите модел да разпознава модели в данните. Моделът може да използва вътрешни тегла, които могат да бъдат коригирани, за да се даде предимство на определени части от данните пред други, за да се изгради по-добър модел. -5. **Оценете модела**. Използвате данни, които моделът никога не е виждал преди (вашите тестови данни), за да видите как се представя моделът. -6. **Настройка на параметри**. Въз основа на представянето на модела, можете да повторите процеса, използвайки различни параметри или променливи, които контролират поведението на алгоритмите, използвани за обучение на модела. -7. **Предсказание**. Използвайте нови входни данни, за да тествате точността на модела. +1. **Определете въпроса**. Повечето ML процеси започват с поставяне на въпрос, на който не може да се отговори чрез прост условен програмен код или основан на правила двигател. Тези въпроси често се въртят около прогнози, базирани на колекция от данни. +2. **Събиране и подготовка на данните**. За да можете да отговорите на въпроса си, ви трябват данни. Качеството и понякога количеството на вашите данни ще определят колко добре можете да отговорите на първоначалния въпрос. Визуализацията на данните е важен аспект на тази фаза. Тази фаза също включва разделяне на данните на обучаваща и тестова група за създаване на модел. +3. **Изберете метод за обучение**. В зависимост от вашия въпрос и природата на данните, трябва да изберете как искате да обучите модел, за да отрази най-добре данните и да направи точни прогнози спрямо тях. Това е частта от вашия ML процес, която изисква специфичен опит и често значително количество експериментиране. +4. **Обучете модела**. Използвайки обучаващите си данни, ще използвате различни алгоритми, за да обучите модел да разпознава шаблони в данните. Моделът може да използва вътрешни тежести, които да се регулират, за да придават приоритети на определени части от данните пред други, за да се създаде по-добър модел. +5. **Оценете модела**. Използвате данни, които моделът не е виждал преди (вашите тестови данни) от събраните, за да видите как моделът се представя. +6. **Настройка на параметрите**. Въз основа на представянето на модела можете да повторите процеса, използвайки различни параметри или променливи, които контролират поведението на алгоритмите, използвани за обучението на модела. +7. **Прогнозирайте**. Използвайте нови входни данни, за да тествате точността на модела си. ## Какъв въпрос да зададете -Компютрите са особено добри в откриването на скрити модели в данните. Тази способност е много полезна за изследователи, които имат въпроси за дадена област, които не могат лесно да бъдат отговорени чрез създаване на система, базирана на правила. Например, при актюерска задача, специалист по данни може да създаде ръчно изработени правила за смъртността на пушачи спрямо непушачи. +Компютрите са особено добри в откриването на скрити модели в данните. Тази полезност е много полезна за изследователи, които имат въпроси за дадена област, на които не може лесно да се отговори чрез създаване на условен двигател базиран на правила. Например, при актуарна задача, специалист по данни може да създаде ръчно изработени правила относно смъртността на пушачи срещу непушачи. -Когато в уравнението се включат много други променливи, обаче, модел за ML може да се окаже по-ефективен за предсказване на бъдещи нива на смъртност, базирани на предишна здравна история. По-радостен пример може да бъде правенето на прогнози за времето за месец април на дадено място, базирани на данни, които включват географска ширина, дължина, климатични промени, близост до океана, модели на струйния поток и други. +Когато в уравнението се включат много други променливи, обаче, ML модел може да се окаже по-ефективен за прогнозиране на бъдещи нива на смъртност въз основа на минала здравна история. По-радостен пример може да бъде правене на прогнози за времето през месец април в дадено място, базирани на данни, които включват ширина, дължина, изменение на климата, близост до океана, модели на струята на въздуха и още много. -✅ Тази [презентация](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) за модели на времето предлага историческа перспектива за използването на ML в анализа на времето. +✅ Тази [презентация](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) за модели за времето предлага историческа перспектива за използването на ML в анализа на времето. -## Задачи преди изграждането +## Подготвителни задачи -Преди да започнете да изграждате модела си, има няколко задачи, които трябва да изпълните. За да тествате въпроса си и да формирате хипотеза, базирана на предсказанията на модела, трябва да идентифицирате и конфигурирате няколко елемента. +Преди да започнете да изграждате модела си, има няколко задачи, които трябва да завършите. За да тествате вашия въпрос и да формирате хипотеза въз основа на прогнози на модела, трябва да идентифицирате и конфигурирате няколко елемента. ### Данни -За да можете да отговорите на въпроса си с някаква сигурност, ви е необходим достатъчен обем данни от правилния тип. На този етап трябва да направите две неща: +За да можете да отговорите на въпроса си с някаква сигурност, ви е необходимо голямо количество данни от правилния тип. Тук трябва да направите две неща: -- **Съберете данни**. Имайки предвид предишния урок за справедливостта в анализа на данни, събирайте данните си внимателно. Бъдете наясно с източниците на тези данни, всякакви присъщи пристрастия, които може да имат, и документирайте техния произход. -- **Подгответе данни**. Има няколко стъпки в процеса на подготовка на данни. Може да се наложи да съберете данни и да ги нормализирате, ако идват от различни източници. Можете да подобрите качеството и количеството на данните чрез различни методи, като например преобразуване на текстови низове в числа (както правим в [Клъстеризация](../../5-Clustering/1-Visualize/README.md)). Може също да генерирате нови данни, базирани на оригиналните (както правим в [Класификация](../../4-Classification/1-Introduction/README.md)). Можете да почистите и редактирате данните (както ще направим преди урока за [Уеб приложение](../../3-Web-App/README.md)). Накрая, може да се наложи да ги рандомизирате и разбъркате, в зависимост от техниките за обучение. +- **Съберете данни**. Имайки предвид предишния урок за справедливост в анализа на данни, събирайте данните си внимателно. Бъдете наясно с източниците на тези данни, каквито и да са техните присъщи пристрастия, и документирайте тяхното произход. +- **Подгответе данните**. Процесът на подготовка на данните включва няколко стъпки. Може да се наложи да обедините данни и да ги нормализирате, ако идват от различни източници. Можете да подобрите качеството и количеството на данните чрез различни методи, като например преобразуване на низове в числа (както правим в [Групиране](../../5-Clustering/1-Visualize/README.md)). Можете също да генерирате нови данни, базирани на оригиналните (както правим в [Класификация](../../4-Classification/1-Introduction/README.md)). Можете да почистите и редактирате данните (както ще направим преди урока за [Уеб приложение](../../3-Web-App/README.md)). Накрая, може да се наложи да ги разбъркате и премесите, в зависимост от техниките ви за обучение. -✅ След като съберете и обработите данните си, отделете момент, за да видите дали тяхната структура ще ви позволи да адресирате въпроса си. Възможно е данните да не се представят добре в дадената задача, както откриваме в нашите уроци за [Клъстеризация](../../5-Clustering/1-Visualize/README.md)! +✅ След събирането и обработката на данните, отделете момент да прецените дали тяхната форма ще ви позволи да се справите с поставения въпрос. Възможно е данните да не се представят добре в задачата, както ще открием в нашите уроци по [Групиране](../../5-Clustering/1-Visualize/README.md)! -### Характеристики и цел +### Променливи и целева променлива -[Характеристика](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) е измерима собственост на вашите данни. В много набори от данни тя е изразена като заглавие на колона, като „дата“, „размер“ или „цвят“. Вашата променлива за характеристика, обикновено представена като `X` в кода, представлява входната променлива, която ще се използва за обучение на модела. +[Функция (променлива)](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) е измеримо свойство на вашите данни. В много набори от данни тя се изразява като заглавие на колона, като „дата“, „размер“ или „цвят“. Вашата променлива функция, обикновено представена като `X` в кода, представлява входната променлива, която ще се използва за обучение на модел. -Целта е това, което се опитвате да предскажете. Целта, обикновено представена като `y` в кода, представлява отговора на въпроса, който се опитвате да зададете на данните: през декември, какъв **цвят** тикви ще бъдат най-евтини? В Сан Франциско, кои квартали ще имат най-добри цени на недвижими имоти? Понякога целта се нарича и атрибут на етикета. +Целта е нещо, което се опитвате да прогнозирате. Целевата променлива, обикновено представена като `y` в кода, представлява отговора на въпроса, който задавате на данните си: през декември, какъв **цвят** ще са най-евтините тикви? В Сан Франциско, кои квартали ще имат най-добра цена на недвижими имоти? Понякога целта се нарича и етикет. -### Избор на променлива за характеристика +### Избиране на променливата Функция -🎓 **Избор на характеристики и извличане на характеристики** Как да разберете коя променлива да изберете при изграждането на модел? Вероятно ще преминете през процес на избор на характеристики или извличане на характеристики, за да изберете правилните променливи за най-добре представящия се модел. Те обаче не са едно и също: „Извличането на характеристики създава нови характеристики от функции на оригиналните характеристики, докато изборът на характеристики връща подмножество от характеристиките.“ ([източник](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Избор на функции и извличане на функции** Как да знаете коя променлива да изберете при създаване на модел? Вероятно ще преминете през процес на избор на функции или извличане на функции, за да изберете правилните променливи за най-добър модел. Те обаче не са едно и също: „Извличането на функции създава нови функции от функции на оригиналните функции, докато изборът на функции връща подмножество от функциите.“ ([източник](https://wikipedia.org/wiki/Feature_selection)) ### Визуализирайте данните си -Важен аспект от инструментариума на специалиста по данни е способността да визуализира данни, използвайки няколко отлични библиотеки като Seaborn или MatPlotLib. Представянето на данните визуално може да ви позволи да откриете скрити корелации, които можете да използвате. Вашите визуализации може също да ви помогнат да откриете пристрастия или небалансирани данни (както откриваме в [Класификация](../../4-Classification/2-Classifiers-1/README.md)). +Важен аспект от инструментария на специалиста по данни е възможността да визуализира данни с помощта на няколко отлични библиотеки като Seaborn или MatPlotLib. Визуалното представяне на данните може да ви позволи да откриете скрити корелации, които можете да използвате. Вашите визуализации също могат да ви помогнат да откриете пристрастия или небалансирани данни (както ще открием в [Класификация](../../4-Classification/2-Classifiers-1/README.md)). ### Разделете набора си от данни -Преди обучението трябва да разделите набора си от данни на две или повече части с неравни размери, които все пак добре представят данните. +Преди обучението трябва да разделите своя набор от данни на две или повече части с неравномерен размер, които все пак добре представят данните. -- **Обучение**. Тази част от набора от данни се използва за обучение на модела. Този набор представлява по-голямата част от оригиналния набор от данни. -- **Тестване**. Тестовият набор от данни е независима група от данни, често събрана от оригиналните данни, която използвате, за да потвърдите представянето на изградения модел. -- **Валидация**. Наборът за валидация е по-малка независима група от примери, която използвате, за да настроите хиперпараметрите или архитектурата на модела, за да го подобрите. В зависимост от размера на данните и въпроса, който задавате, може да не е необходимо да изграждате този трети набор (както отбелязваме в [Прогнозиране на времеви серии](../../7-TimeSeries/1-Introduction/README.md)). +- **Обучение**. Тази част от набора от данни се приспособява към вашия модел, за да го обучи. Този набор съставлява по-голямата част от оригиналния набор данни. +- **Тестване**. Тестовият набор е независима група данни, често събрана от оригиналните данни, която използвате, за да потвърдите представянето на създадения модел. +- **Валидация**. Валидиращият набор е по-малка независима група примери, която използвате, за да настроите хиперпараметрите или архитектурата на модела, за да го подобрите. В зависимост от размера на данните и въпроса, който задавате, може да не ви е нужно да създавате този трети набор (както отбелязваме в [Прогнозиране на времеви серии](../../7-TimeSeries/1-Introduction/README.md)). -## Изграждане на модел +## Създаване на модел -Използвайки обучаващите си данни, целта ви е да изградите модел, или статистическо представяне на данните, използвайки различни алгоритми за **обучение**. Обучението на модел го излага на данни и му позволява да прави предположения за възприети модели, които открива, валидира и приема или отхвърля. +Използвайки обучаващите си данни, вашата цел е да създадете модел, или статистическо представяне на вашите данни, като използвате различни алгоритми, за да го **обучите**. Обучението на модел го излага на данни и му позволява да прави предположения за възприетите от него шаблони, които открива, валидира, приема или отхвърля. ### Изберете метод за обучение -В зависимост от въпроса ви и естеството на данните, ще изберете метод за обучение. Преглеждайки [документацията на Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - която използваме в този курс - можете да изследвате много начини за обучение на модел. В зависимост от опита ви, може да се наложи да опитате няколко различни метода, за да изградите най-добрия модел. Вероятно ще преминете през процес, при който специалистите по данни оценяват представянето на модела, като му подават невиждани данни, проверяват за точност, пристрастия и други проблеми, които намаляват качеството, и избират най-подходящия метод за обучение за дадената задача. +В зависимост от въпроса и природата на данните, ще изберете метод за обучението им. Преглеждайки [документацията на Scikit-learn](https://scikit-learn.org/stable/user_guide.html) – библиотеката, която използваме в този курс – можете да проучите много начини за обучение на модел. Възможно е да се наложи да изпробвате няколко различни метода, за да създадете най-добрия модел. Вероятно ще преминете през процес, при който специалистите по данни оценяват представянето на модел, като му подават невиждани преди това данни, проверяват точността, пристрастията и други проблеми, които влошават качеството, и избират най-подходящия метод за обучение за конкретната задача. ### Обучете модел -С обучаващите си данни сте готови да ги „поставите“ в модела, за да го създадете. Ще забележите, че в много библиотеки за ML ще намерите кода 'model.fit' - това е моментът, когато подавате променливата за характеристика като масив от стойности (обикновено 'X') и целевата променлива (обикновено 'y'). +Въоръжени с обучаващите си данни, сте готови да ги 'приспособите' за създаване на модел. Ще забележите, че в много библиотеки за ML ще намерите код 'model.fit' – именно тогава подавате своята променлива функция като масив от стойности (обикновено 'X') и целевата променлива (обикновено 'y'). ### Оценете модела -След като процесът на обучение приключи (може да отнеме много итерации, или „епохи“, за да се обучи голям модел), ще можете да оцените качеството на модела, като използвате тестови данни, за да прецените представянето му. Тези данни са подмножество на оригиналните данни, които моделът не е анализирал преди. Можете да отпечатате таблица с метрики за качеството на модела. +След като обучението приключи (може да отнеме много итерации или 'епохи', за да се обучи голям модел), ще можете да оцените качеството на модела, като използвате тестови данни, за да измерите представянето му. Тези данни са подмножество от оригиналните данни, които моделът не е анализирал преди. Можете да изведете таблица с метрики за качеството на модела. -🎓 **Приспособяване на модела** +🎓 **Приспособяване на модел** -В контекста на машинното обучение, приспособяването на модела се отнася до точността на основната функция на модела, докато той се опитва да анализира данни, с които не е запознат. +В контекста на машинното обучение, приспособяването на модел се отнася до точността на функцията под модела, докато тя се опитва да анализира данни, с които не е запозната. -🎓 **Недостатъчно обучение** и **прекомерно обучение** са често срещани проблеми, които намаляват качеството на модела, тъй като моделът се приспособява или недостатъчно добре, или прекалено добре. Това води до предсказания, които са или твърде тясно свързани, или твърде свободно свързани с обучаващите данни. Прекомерно обучен модел предсказва обучаващите данни твърде добре, защото е научил детайлите и шума в данните твърде добре. Недостатъчно обучен модел не е точен, тъй като не може нито точно да анализира обучаващите данни, нито данни, които не е „виждал“. +🎓 **Недообучение** и **преобучение** са често срещани проблеми, които влошават качеството на модела, тъй като той пасва или недостатъчно, или твърде добре. Това кара модела да прави прогнози, които са твърде близки или твърде далеч от обучаващите му данни. Преобученият модел предсказва обучаващите данни прекалено добре, защото е научил детайлите и шума в тях твърде добре. Недообученият модел не е точен, тъй като не може нито да анализира точно обучаващите си данни, нито непознати за него данни. -![модел с прекомерно обучение](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/bg/overfitting.1c132d92bfd93cb6.webp) > Инфографика от [Jen Looper](https://twitter.com/jenlooper) -## Настройка на параметри +## Настройка на параметрите -След като първоначалното обучение приключи, наблюдавайте качеството на модела и обмислете подобряването му чрез настройка на неговите „хиперпараметри“. Прочетете повече за процеса [в документацията](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +След като първоначалното обучение приключи, наблюдавайте качеството на модела и обмислете да го подобрите, като коригирате неговите „хиперпараметри“. Прочетете повече за процеса [в документацията](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Предсказание +## Прогноза -Това е моментът, в който можете да използвате напълно нови данни, за да тествате точността на модела. В „практическа“ среда за ML, където изграждате уеб активи за използване на модела в продукция, този процес може да включва събиране на потребителски вход (например натискане на бутон), за да зададете променлива и да я изпратите на модела за извод или оценка. +Това е моментът, в който можете да използвате напълно нови данни, за да тествате точността на модела си. В „приложен“ ML контекст, където изграждате уеб ресурси за използване на модела в продукция, този процес може да включва събиране на вход от потребител (например натискане на бутон) за задаване на променлива и изпращането ѝ към модела за извод или оценка. -В тези уроци ще откриете как да използвате тези стъпки, за да подготвите, изградите, тествате, оцените и предскажете - всички жестове на специалист по данни и още, докато напредвате в пътуването си да станете „пълен стек“ инженер за ML. +В тези уроци ще откриете как да използвате тези стъпки за подготовка, изграждане, тестване, оценка и прогнозиране - всички жестове на специалист по данни и още, докато напредвате в пътешествието си да станете 'full stack' ML инженер. --- ## 🚀Предизвикателство -Начертайте диаграма на потока, отразяваща стъпките на специалист по ML. Къде виждате себе си в процеса в момента? Къде предвиждате, че ще срещнете трудности? Какво ви изглежда лесно? +Начертайте блок-схема, отразяваща стъпките на ML практикуващия. Къде се намирате в процеса в момента? Къде предвиждате да срещнете трудности? Какво ви изглежда лесно? -## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ml/) +## [Квиз след лекция](https://ff-quizzes.netlify.app/en/ml/) -## Преглед и самостоятелно обучение +## Преглед и самостоятелно учене -Търсете онлайн интервюта със специалисти по данни, които обсъждат ежедневната си работа. Ето [едно](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Потърсете онлайн интервюта с специалисти по данни, които говорят за ежедневната си работа. Ето [едно](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Задание +## Задача [Интервюирайте специалист по данни](assignment.md) --- + **Отказ от отговорност**: -Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file +Този документ е преведен с помощта на AI преводаческа услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод. + \ No newline at end of file diff --git a/translations/bg/2-Regression/3-Linear/README.md b/translations/bg/2-Regression/3-Linear/README.md index 92c895f52f..3c98ea1d7d 100644 --- a/translations/bg/2-Regression/3-Linear/README.md +++ b/translations/bg/2-Regression/3-Linear/README.md @@ -1,135 +1,136 @@ -# Изграждане на регресионен модел с помощта на Scikit-learn: регресия по четири начина +# Създаване на регресионен модел с Scikit-learn: регресия по четири начина -## Забележка за начинаещи +## Бележка за начинаещи -Линейната регресия се използва, когато искаме да предскажем **числена стойност** (например цена на къща, температура или продажби). Тя работи чрез намиране на права линия, която най-добре представя връзката между входните характеристики и изхода. +Линейната регресия се използва, когато искаме да предскажем **числова стойност** (например цена на къща, температура или продажби). +Тя работи чрез намиране на права линия, която най-добре представя връзката между входните признаци и изхода. -В този урок се фокусираме върху разбирането на концепцията, преди да разгледаме по-сложни регресионни техники. +В този урок се фокусираме върху разбирането на концепцията, преди да разгледаме по-усъвършенствани регресионни техники. ![Линейна срещу полиномиална регресия инфографика](../../../../translated_images/bg/linear-polynomial.5523c7cb6576ccab.webp) > Инфографика от [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Предварителен тест](https://ff-quizzes.netlify.app/en/ml/) +## [Кратък тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/) -> ### [Този урок е наличен и на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Въведение +> ### [Този урок е достъпен и на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Въведение -Досега разгледахте какво е регресия чрез примерни данни от набора с цени на тикви, който ще използваме през целия урок. Също така го визуализирахте с помощта на Matplotlib. +Досега разгледахте какво е регресия с примерни данни, събрани от набора от данни за цени на тикви, който ще използваме в целия урок. Също така ги визуализирахте с помощта на Matplotlib. -Сега сте готови да навлезете по-дълбоко в регресията за ML. Докато визуализацията ви позволява да разберете данните, истинската сила на Машинното обучение идва от _обучението на модели_. Моделите се обучават върху исторически данни, за да уловят автоматично зависимостите в данните, и ви позволяват да предсказвате резултати за нови данни, които моделът не е виждал досега. +Сега сте готови да навлезете по-дълбоко в регресията за машинно обучение. Визуализацията ви позволява да разберете данните, но истинската сила на машинното обучение идва от _обучението на модели_. Моделите се обучават върху исторически данни, за да заснемат автоматично зависимостите в данните, и ви позволяват да предсказвате резултати при нови данни, които моделът не е виждал преди. -В този урок ще научите повече за два вида регресия: _основна линейна регресия_ и _полиномиална регресия_, заедно с част от математиката зад тези техники. Тези модели ще ни позволят да предсказваме цените на тиквите в зависимост от различни входни данни. +В този урок ще научите повече за два вида регресия: _основна линейна регресия_ и _полиномиална регресия_, заедно с част от математиката, лежаща в основата на тези техники. Тези модели ще ни позволят да предсказваме цените на тиквите в зависимост от различни входни данни. [![ML за начинаещи - Разбиране на линейната регресия](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML за начинаещи - Разбиране на линейната регресия") -> 🎥 Кликнете върху изображението по-горе за кратко видео с обобщение на линейната регресия. +> 🎥 Кликнете върху изображението по-горе за кратко видео с обзор на линейната регресия. -> В целия този учебен план предполагаме минимални знания по математика и се стремим да го направим достъпен за студенти от други области, затова внимавайте за бележки, 🧮 извадки, схеми и други учебни средства, които подпомагат разбирането. +> В целия този учебен курс приемаме минимални познания по математика и се стараем да го направим достъпен за студенти от други области, затова обръщайте внимание на бележките, 🧮 математическите обръщения, диаграмите и други учебни средства за улеснение на разбирането. -### Предварителни умения +### Изисквания -До момента трябва да сте запознати със структурата на данните за тиквите, които разглеждаме. Можете да ги намерите предварително заредени и почистени във файла _notebook.ipynb_ за този урок. Във файла цената на тиквите се показва на бушел в нов DataFrame. Уверете се, че можете да стартирате тези тетрадки (notebooks) в ядра (kernels) в Visual Studio Code. +Към момента трябва да сте запознати със структурата на данните за тиквите, които разглеждаме. Можете да ги намерите предварително заредени и почистени в _notebook.ipynb_ файла за този урок. Във файла цената на тиквите е показана на бушел в нов dataframe. Уверете се, че можете да стартирате тези ноутбуци в kernel на Visual Studio Code. ### Подготовка -Като напомняне, зареждате тези данни, за да можете да задавате въпроси спрямо тях. +Напомняме, че зареждате тези данни, за да можете да задавате въпроси към тях. -- Кога е най-доброто време да се купуват тикви? -- Каква цена мога да очаквам за кутия с мини тикви? -- Трябва ли да ги купувам в кошници по половин бушел или в кутии по 1 1/9 бушел? -Нека продължим да изследваме тези данни. +- Кога е най-доброто време за покупка на тикви? +- Каква цена мога да очаквам за кашон миниатюрни тикви? +- Трябва ли да ги купувам в полубушелен кош или в кутия от 1 1/9 бушела? +Нека продължим да разглеждаме тези данни. -В предишния урок създадохте Pandas DataFrame и го запълнихте с част от оригиналния набор от данни, стандартизирайки цените на бушел. По този начин обаче събрахте само около 400 точки данни и то само за есенните месеци. +В предишния урок създадохте Pandas dataframe и го попълнихте с част от оригиналния набор от данни, стандартизирайки цените според бушел. Като направихте това, обаче събрахте само около 400 точки с данни и само за есенните месеци. -Вижте данните, които предварително заредихме в съпровождащата тетрадка за този урок. Данните са предварително заредени и е начертан първоначален разсейващ (scatter) график за данните по месеци. Може би можем да добавим малко повече детайли за естеството на данните чрез по-добро почистване. +Погледнете данните, които заредихме предварително в ноутбука за този урок. Данните са предварително заредени и е начертан начален scatterplot, показващ месечните данни. Може би можем да получим малко повече информация за характера на данните чрез по-добро почистване. -## Линия на линейната регресия +## Линия на линейна регресия -Както научихте в Урок 1, целта на упражнение по линейна регресия е да можете да начертаете линия, която да: +Както научихте в Урок 1, целта на упражнението с линейна регресия е да можем да начертаем линия, която: -- **Показва взаимовръзки между променливи**. Показва връзката между променливите -- **Прави прогнози**. Прави точни прогнози за това къде нова точка данни би попаднала в съотношение с линията. +- **Показва връзките между променливите**. Показва връзката между променливите +- **Прави предсказания**. Прави точни прогнози къде новата точка ще попадне спрямо тази линия. -Точно такава линия обичайно се чертае с помощта на **регресия с минимални квадрати** (Least-Squares Regression). Терминът "минимални квадрати" се отнася до процеса на минимизиране на общата грешка в нашия модел. За всяка точка данни измерваме вертикалното разстояние (наречено остатък) между действителната точка и нашата регресионна линия. +Обичайно за **Регресия по метод на най-малките квадрати** е да се изчертае този тип линия. Терминът „най-малки квадрати“ се отнася до процеса на минимизиране на общата грешка в нашия модел. За всяка точка измерваме вертикалното разстояние (наречено остатък) между реалната точка и нашата регресионна линия. -Тези разстояния се повдигат на квадрат по две основни причини: +Квадратираме тези разстояния по две основни причини: -1. **Величина пред посока:** Искаме да третираме грешка -5 същo като грешка +5. Квaдратирането превръща всички стойности в положителни. +1. **Модул пред посока:** Искаме да третираме грешка от -5 по същия начин, както грешка от +5. Квадратирането прави всички стойности положителни. -2. **Накaзване на екстремни стойности:** Квaдратирането придава по-голяма тежест на по-големите грешки, принуждавайки линията да стои по-близо до точки, които са далеч. +2. **Наказване на изходящи стойности:** Квадратирането придава по-голяма тежест на по-големите грешки, принуждавайки линията да стои по-близо до отдалечените точки. -След това събираме всички тези квадратирани стойности. Целта ни е да намерим конкретна линия, при която тази крайна сума е най-малка (най-малката възможна стойност) — откъдето идва и името "минимални квадрати". +Сумираме всички тези квадратирани стойности. Целта ни е да намерим конкретната линия, при която тази крайна сума е най-малка (най-малката възможна стойност) — оттук идва името „най-малки квадрати“. -> **🧮 Покажи ми математиката** +> **🧮 Покажете ми математиката** > -> Тази линия, наречена _линия на най-добро прилягане_, може да бъде изразена с [уравнение](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Тази линия, наречена _линия на най-добро приспособление_, може да се опише с [уравнение](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` е 'обяснителна променлива'. `Y` е 'зависима променлива'. Наклонът на линията е `b`, а `a` е сечението по оста y, което означава стойността на `Y` когато `X = 0`. +> `X` е 'обяснителната променлива'. `Y` е 'зависимата променлива'. Наклонът на линията е `b`, а `a` е пресечната точка с оста Y, която означава стойността на `Y`, когато `X = 0`. > >![изчисляване на наклона](../../../../translated_images/bg/slope.f3c9d5910ddbfcf9.webp) > -> Първо изчислете наклона `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper) +> Първо, изчислете наклона `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper) > -> С други думи, и във връзка с първоначалния въпрос в нашите данни за тиквите: "предскажи цената на тиква на бушел по месеци", `X` ще се отнася до цената, а `Y` до месеца на продажбата. +> С други думи, и с оглед на първоначалния въпрос за нашите тиквени данни: "предскажете цената на тиква на бушел по месеци", `X` би означавало цената, а `Y` би било месецът на продажба. > ->![завърши уравнението](../../../../translated_images/bg/calculation.a209813050a1ddb1.webp) +>![завършване на уравнението](../../../../translated_images/bg/calculation.a209813050a1ddb1.webp) > -> Изчислете стойността на Y. Ако плащате около 4 долара, трябва да е април! Инфографика от [Jen Looper](https://twitter.com/jenlooper) +> Изчислете стойността на `Y`. Ако плащате около 4 долара, значи е април! Инфографика от [Jen Looper](https://twitter.com/jenlooper) > -> Математиката зад изчисляването на линията трябва да отрази наклона на линията, който също зависи от сечението, т.е. къде е `Y` когато `X = 0`. +> Математиката, която изчислява линията, трябва да демонстрира наклона на линията, който зависи и от пресечната точка, или къде се намира `Y` когато `X = 0`. > -> Можете да видите начина на изчисление за тези стойности на уебсайта [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Посетете също [този калкулатор за минимални квадрати](https://www.mathsisfun.com/data/least-squares-calculator.html), за да проследите как стойностите влияят на линията. +> Можете да проследите метода на изчисление за тези стойности на [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Посетете и [тотова най-малки квадрати калкулатор](https://www.mathsisfun.com/data/least-squares-calculator.html), за да видите как стойностите влияят на линията. ## Корелация -Още един термин, който да разберете, е **коефициентът на корелация** между дадени променливи X и Y. Използвайки разсейващ (scatter) график, може бързо да визуализирате този коефициент. Графика с точки, подредени в чиста линия, показва висока корелация, докато графика с точки разпръснати навсякъде между X и Y показва ниска корелация. +Още един термин, който трябва да разберем е **коефициентът на корелация** между дадени променливи X и Y. С помощта на scatterplot можете бързо да визуализирате този коефициент. Графика с точки, разположени по красива права линия, има висока корелация, а графика с точки, разпръснати навсякъде между X и Y, има ниска корелация. -Добър линейно регресионен модел е този, който има висок (по-близо до 1 отколкото до 0) коефициент на корелация при приложена метода на регресия с минимални квадрати с линия на регресия. +Добър модел за линейна регресия ще има висок (по-близък до 1 отколкото до 0) коефициент на корелация, използвайки метода на най-малките квадрати с регресионна линия. -✅ Стартирайте тетрадката, придружаваща този урок, и разгледайте разсейващия график Месец към Цена. Изглежда ли асоциацията между Месец и Цена за продажбата на тикви с висока или ниска корелация според вашата визуална интерпретация на графиката? Променя ли се това, ако използвате по-фина мярка вместо `Месец`, напр. *ден от годината* (т.е. брой дни от началото на годината)? +✅ Стартирайте ноутбука, придружаващ този урок, и погледнете scatterplot на Месец спрямо Цена. Изглежда ли данните, свързващи Месец с Цена за продажбите на тиквите, имат висока или ниска корелация, според вашата визуална интерпретация на scatterplot? Променя ли се това, ако използвате по-фино измерване вместо `Month`, напр. *ден от годината* (т.е. брой дни отначалото на годината)? -В следващия код ще приемем, че сме почистили данните и сме получили DataFrame, наречен `new_pumpkins`, подобен на следния: +В кода по-долу ще приемем, че сме почистили данните и сме получили data frame с име `new_pumpkins`, подобен на следния: -ID | Месец | ДенОтГодината | Вид | Град | Опаковка | Минимална цена | Максимална цена | Цена +ID | Месец | ДенОтГодината | Вид | Град | Опаковка | Ниска Цена | Висока Цена | Цена ---|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | ПАЙ ТИП | БАЛТИМОР | 1 1/9 бушелови кутии | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | ПАЙ ТИП | БАЛТИМОР | 1 1/9 бушелови кутии | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | ПАЙ ТИП | БАЛТИМОР | 1 1/9 бушелови кутии | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | ПАЙ ТИП | БАЛТИМОР | 1 1/9 бушелови кутии | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | ПАЙ ТИП | БАЛТИМОР | 1 1/9 бушелови кутии | 15.0 | 15.0 | 13.636364 +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушел картонени кутии | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушел картонени кутии | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушел картонени кутии | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушел картонени кутии | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 бушел картонени кутии | 15.0 | 15.0 | 13.636364 -> Кодът за почистване на данните е наличен във [`notebook.ipynb`](notebook.ipynb). Извършихме същите стъпки по почистване както в предишния урок и изчислихме колоната `DayOfYear` с помощта на следното изражение: +> Кодът за почистване на данните е наличен в [`notebook.ipynb`](notebook.ipynb). Извършихме същите стъпки за почистване както в предишния урок и изчислихме колоната `DayOfYear` със следното изражение: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Сега, когато разбирате математиката зад линейната регресия, нека създадем регресионен модел, за да видим дали можем да предскажем коя опаковка тикви ще има най-добри цени. Някой, който купува тикви за празничен тиквен етикет, може да иска тази информация, за да оптимизира покупките на опаковки тикви за етикета. +Сега, когато разбирате математиката зад линейната регресия, нека създадем регресионен модел, за да видим дали можем да предскажем коя опаковка тикви ще има най-добра цена. Някой, който купува тикви за празнична градина с тикви, би искал тази информация, за да оптимизира покупките си на опаковки тикви. ## Търсене на корелация -[![ML за начинаещи - Търсене на корелация: Ключът към линейната регресия](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML за начинаещи - Търсене на корелация: Ключът към линейната регресия") +[![ML за начинаещи - Търсене на корелация: ключът към линейната регресия](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML за начинаещи - Търсене на корелация: ключът към линейната регресия") -> 🎥 Кликнете върху изображението по-горе за кратко видео с обобщение на корелацията. +> 🎥 Кликнете върху изображението по-горе за кратко видео с обзор на корелацията. -От предишния урок вероятно сте видели, че средната цена за различните месеци изглежда така: +От предишния урок вероятно сте забелязали, че средната цена за различните месеци изглежда така: Средна цена по месеци -Това предполага, че трябва да има някаква корелация и можем да пробваме да обучим модел на линейна регресия за прогнозиране на връзката между `Месец` и `Цена`, или между `ДенОтГодината` и `Цена`. Ето разсейващия график, който показва последната връзка: +Това подсказва, че има някаква корелация, и можем да опитаме да обучим линейна регресия, за да предскажем връзката между `Month` и `Price`, или между `DayOfYear` и `Price`. Ето scatterplot, който показва последната връзка: -Scatter plot Цена срещу Ден от година +Scatter plot на Цена спрямо Ден от Годината -Нека проверим дали има корелация с функцията `corr`: +Нека видим дали има корелация с функцията `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Изглежда, че корелацията е доста малка, -0.15 за `Месец` и -0.17 за `ДенОтГодината`, но може да има друга важна връзка. Изглежда има различни клъстери от цени, съответстващи на различни сортове тикви. За да потвърдим тази хипотеза, нека начертаем всяка категория тикви с различен цвят. Предавайки параметър `ax` на функцията за разсейващ график, можем да начертаем всички точки на един и същ график: +Изглежда, че корелацията е доста малка, -0.15 за `Month` и -0.17 за `DayOfYear`, но може да има друга важна връзка. Изглежда, че има различни групи цени, съответстващи на различни видове тикви. За да потвърдим тази хипотеза, нека начертаем всяка категория тикви с различен цвят. Като подаваме параметър `ax` на функцията `scatter`, можем да начертаем всички точки на една и съща графика: ```python ax=None @@ -139,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Разсейващ график Цена срещу Ден от година, цветно +Scatter plot на Цена спрямо Ден от Годината с цветове -Нашето разследване подсказва, че видът има по-голямо влияние върху цената отколкото точната дата на продажба. Можем да го видим и на лентов график: +Нашето изследване подсказва, че видът оказва по-голямо влияние върху общата цена, отколкото действителната дата на продажба. Това може да се види с помощта на бар графика: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Бар графика на цена по вид +Бар графика на цена спрямо вид -Нека се фокусираме за момент само върху един сорт тикви - 'пай тип' и да видим каква е зависимостта на цената от датата: +Нека сега се съсредоточим само върху един вид тикви, 'pie type', и видим каква е ефекта на датата върху цената: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Разсейващ график Цена срещу Ден от година +Scatter plot на Цена спрямо Ден от Годината -Ако сега изчислим корелацията между `Цена` и `ДенОтГодината` чрез функцията `corr`, ще получим нещо като `-0.27` — което означава, че има смисъл да обучим предсказващ модел. +Ако изчислим корелацията между `Price` и `DayOfYear` с функцията `corr`, ще получим стойност около `-0.27` — което означава, че обучението на предсказващ модел има смисъл. -> Преди да обучите модел на линейна регресия, е важно да сте сигурни, че данните са чисти. Линейната регресия не работи добре с липсващи стойности, затова е разумно да се отървем от всички празни клетки: +> Преди да започнете обучение на линеен регресионен модел, важно е да се уверим, че данните са чисти. Линейната регресия не работи добре с липсващи стойности, затова е добре да премахнем всички празни клетки: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Друг подход би бил да запълним празните стойности със средните стойности от съответните колони. +Друг подход би бил да запълним липсващите стойности със средни стойности от съответната колона. ## Проста линейна регресия [![ML за начинаещи - Линейна и полиномиална регресия с Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML за начинаещи - Линейна и полиномиална регресия с Scikit-learn") -> 🎥 Кликнете върху изображението по-горе за кратко видео с обобщение на линейната и полиномиалната регресия. +> 🎥 Кликнете върху изображението по-горе за кратко видео с обзор на линейната и полиномиалната регресия. -За да обучим нашия модел на Линейна Регресия, ще използваме библиотеката **Scikit-learn**. +За да обучим модела за линейна регресия, ще използваме библиотеката **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -182,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Започваме с разделяне на входните стойности (характеристики) и очаквания изход (етикет) в отделни numpy масиви: +Започваме с отделяне на входните стойности (признаци) и очаквания изход (етикет) в отделни numpy масиви: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Обърнете внимание, че трябваше да извършим `reshape` върху входните данни, за да може пакетът за Линейна Регресия да ги разбере правилно. Линейната Регресия очаква 2D-масив като вход, където всеки ред на масива съответства на вектор от входни характеристики. В нашия случай, тъй като имаме само един вход, ни трябва масив с форма N×1, където N е размерът на набора от данни. +> Забележете, че трябва да приложим `reshape` към входните данни, за да може пакетът Linear Regression да ги разбере правилно. Линейната регресия очаква 2D масив като вход, където всеки ред от масива съответства на вектор с входни признаци. В нашия случай, тъй като имаме само един вход — нуждаем се от масив с форма N×1, където N е размерът на набора от данни. -След това трябва да разделим данните на обучаващ (train) и тестов (test) набор, за да можем да валидираме модела след обучението: +След това трябва да разделим данните на тренировъчни и тестови, за да можем да валидираме модела след обучението: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Накрая, обучението на самия модел на Линейна Регресия отнема само два реда код. Дефинираме обект `LinearRegression` и го обучаваме с метода `fit` върху нашите данни: +Накрая, обучението на самия линеен регресионен модел отнема само два реда код. Дефинираме обекта `LinearRegression` и го пригодяваме към нашите данни с метода `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Обектът `LinearRegression` след като е бил трениран (`fit`) съдържа всички коефициенти на регресията, които могат да се достъпят чрез свойството `.coef_`. В нашия случай има само един коефициент, който трябва да е около `-0.017`. Това означава, че цените изглежда леко спадат с времето, но не много, около 2 цента на ден. Можем също така да достъпим точката на пресичане на регресията с Y-оста чрез `lin_reg.intercept_` - тя ще е около `21` в нашия случай, указвайки цената в началото на годината. +Обектът `LinearRegression` след като бъде обучен с `fit` съдържа всички коефициенти на регресията, които могат да бъдат достъпени чрез свойството `.coef_`. В нашия случай има само един коефициент, който трябва да бъде около `-0.017`. Това означава, че цените изглежда спадат малко с времето, но не много, около 2 цента на ден. Можем също да достъпим пресечната точка на регресията с Y-оста чрез `lin_reg.intercept_` – тя ще бъде около `21` в нашия случай, което показва цената в началото на годината. -За да видим колко е точен нашият модел, можем да предскажем цените върху тестов набор от данни и след това да измерим колко близо са предсказанията ни до очакваните стойности. Това може да се направи с помощта на метриката корен квадратен средна грешка (RMSE), която е корена на средната стойност на всички квадратирани разлики между очакваната и предсказаната стойност. +За да видим колко точен е нашият модел, можем да предскажем цените върху тестов набор от данни и след това да измерим колко близки са прогнозите ни до очакваните стойности. Това може да се направи чрез метриката средноквадратична грешка (RMSE), която е квадратният корен на средното от всички квадратирани разлики между очакваната и предсказаната стойност. ```python pred = lin_reg.predict(X_test) @@ -215,16 +216,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Грешката ни изглежда около 2 точки, което е ~17%. Не много добре. Друг индикатор за качество на модела е **коефициентът на детерминация**, който може да се получи така: +Нашата грешка е около 2 точки, което е ~17%. Не е много добре. Друг индикатор за качеството на модела е **коефициентът на детерминация**, който може да бъде изчислен по следния начин: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Ако стойността е 0, това означава, че моделът не взема предвид входните данни и действа като *най-лошия линеен предсказател*, което е просто средната стойност на резултата. Стойността 1 означава, че можем да предскажем перфектно всички очаквани изходи. В нашия случай коефициентът е около 0.06, което е доста ниско. +Ако стойността е 0, това означава, че моделът не взема предвид входните данни и действа като *най-лошия линеен предиктор*, който просто е средната стойност на резултата. Стойността 1 означава, че можем перфектно да предскажем всички очаквани изходни стойности. В нашия случай коефициентът е около 0.06, което е доста ниско. -Можем също да изобразим тестовите данни заедно с регресионната линия, за да видим по-добре как работи регресията в нашия случай: +Можем също така да начертаем тестовите данни заедно с линията на регресия, за да видим по-добре как работи регресията в нашия случай: ```python plt.scatter(X_test,y_test) @@ -235,17 +236,17 @@ plt.plot(X_test,pred) ## Полиномиална регресия -Друг вид линейна регресия е полиномиалната регресия. Докато понякога има линейна зависимост между променливите - колкото по-голяма е тиквата като обем, толкова по-висока е цената - понякога тези зависимости не могат да се представят като равнина или права линия. +Друг вид линейна регресия е полиномиалната регресия. Докато понякога има линейна зависимост между променливите - колкото по-голяма е тиквата по обем, толкова по-висока е цената - понякога тези връзки не могат да бъдат моделирани чрез равнина или права линия. -✅ Ето [още няколко примера](https://online.stat.psu.edu/stat501/lesson/9/9.8) на данни, които биха могли да използват полиномиална регресия +✅ Ето [още няколко примера](https://online.stat.psu.edu/stat501/lesson/9/9.8) на данни, които могат да се използват с полиномиална регресия -Погледнете отново връзката между дата и цена. Изглежда ли този график, че трябва непременно да бъде анализиран с права линия? Не могат ли цените да се колебаят? В този случай можете да опитате полиномиална регресия. +Погледнете отново връзката между Дата и Цена. Изглежда ли този точков график като че трябва непременно да бъде анализиран със права линия? Не могат ли цените да се колебаят? В този случай можете да опитате полиномиална регресия. -✅ Полиномите са математически изрази, които могат да съдържат една или повече променливи и коефициенти. +✅ Полиномите са математически изрази, които могат да съдържат една или повече променливи и коефициенти -Полиномиалната регресия създава извита линия, за да пасне по-добре на нелинейните данни. В нашия случай, ако включим във входните данни квадратичната променлива `DayOfYear`, би трябвало да можем да напаснем данните с параболична крива, която ще има минимум в определена точка през годината. +Полиномиалната регресия създава извита линия, за да пасне по-добре на нелинейните данни. В нашия случай, ако включим квадратната променлива `DayOfYear` в входните данни, трябва да можем да паснем данните си с параболична крива, която ще има минимум в определен момент през годината. -Scikit-learn включва полезен [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) за комбиниране на различни стъпки от обработката на данни. **Pipeline** е верига от **оценители (estimators)**. В нашия случай ще създадем pipeline, който първо добавя полиномиални характеристики към модела, и след това тренира регресия: +Scikit-learn включва полезен [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) за комбиниране на различни стъпки от обработката на данни заедно. **Pipeline** e верига от **оценители**. В нашия случай ще създадем pipeline, който първо добавя полиномиални признаци към модела, след което обучава регресията: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Използването на `PolynomialFeatures(2)` означава, че ще включим всички полиноми от втори ред от входните данни. В нашия случай това ще означава само `DayOfYear`2, но при наличието на две входни променливи X и Y, това ще добави X2, XY и Y2. Можем да използваме и полиноми с по-висока степен ако искаме. +Използването на `PolynomialFeatures(2)` означава, че ще включим всички полиноми с втора степен от входните данни. В нашия случай това просто ще означава `DayOfYear`2, но при две входни променливи X и Y, това ще добави X2, XY и Y2. Може също да използваме полиноми с по-висока степен, ако искаме. -Pipeline-ите могат да се използват по същия начин като оригиналния обект `LinearRegression`, т.е. можем да направим `fit` на pipeline-а, и след това да използваме `predict`, за да получим резултатите от предсказването. Ето графика, показваща тестовите данни и крива на апроксимация: +Pipeline-ите могат да се използват по същия начин като оригиналния обект `LinearRegression`, т.е. можем да `fit`-нем pipeline, и след това да използваме `predict` за получаване на резултати от прогнозата: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +За да начертаем гладката аппроксимационна крива, използваме `np.linspace` за създаване на равномерно разпределен диапазон от входни стойности, вместо да начертаваме директно върху неупорядочените тестови данни (което би създало зигзагообразна линия): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Ето графика, показваща тестовите данни и аппроксимационната крива: Polynomial regression -С помощта на полиномиална регресия можем да получим леко по-ниска средна квадратична грешка и по-висок коефициент на детерминация, но незначително. Трябва да вземем предвид и други характеристики! +С помощта на полиномиалната регресия можем да получим малко по-ниска RMSE и по-висок коефициент на детерминация, но незначително. Трябва да вземем предвид и други характеристики! -> Можете да видите, че минималните цени на тиквите се наблюдават някъде около Хелоуин. Как бихте го обяснили? +> Можете да видите, че минималните цени на тиквите са наблюдавани около Хелоуин. Как бихте обяснили това? -🎃 Поздравления, току-що създадохте модел, който може да помага за предсказване на цената на тикви за пай. Вероятно можете да повторите същата процедура за всички видове тикви, но това би било досадно. Нека сега научим как да вземем предвид сорта тикви в нашия модел! +🎃 Поздравления, току-що създадохте модел, който може да помогне за прогнозиране на цената на тикви за пай. Вероятно можете да повторите същата процедура и за всички типове тикви, но това би било досадно. Нека сега научим как да вземем разнообразието на тиквите предвид в нашия модел! -## Категориални характеристики +## Категориални признаци -В идеалния свят искаме да можем да предсказваме цените за различни сортове тикви, използвайки същия модел. Въпреки това, колоната `Variety` е различна от колони като `Month`, защото съдържа ненумерични стойности. Такива колони се наричат **категориални**. +В идеалния свят искаме да можем да прогнозираме цените за различни разновидности тикви, използвайки един и същ модел. Въпреки това, колоната `Variety` е някак различна от колони като `Month`, защото съдържа ненумерични стойности. Такива колони се наричат **категориални**. -[![ML за начинаещи - Предсказване с категориални характеристики с линейна регресия](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML за начинаещи - Предсказване с категориални характеристики с линейна регресия") +[![ML за начинаещи - Прогнози с категориални признаци и линейна регресия](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML за начинаещи - Прогнози с категориални признаци и линейна регресия") -> 🎥 Кликнете върху изображението по-горе за кратък видео преглед на използването на категориални характеристики. +> 🎥 Кликнете върху изображението по-горе за кратко видео представяне на използването на категориални признаци. -Тук можете да видите как средната цена зависи от сорта: +Тук можете да видите как средната цена зависи от разновидността: -Average price by variety +Средна цена по разновидност -За да вземем предвид сорта, първо трябва да го преобразуваме в числова форма, или да го **кодираме**. Има няколко начина да го направим: +За да вземем разновидността предвид, първо трябва да я конвертираме в числова форма, или да я **кодираме**. Има няколко начина да го направим: -* Простото **числово кодиране** ще изгради таблица на различни сортове, и ще замени името на сорта с индекс в тази таблица. Това не е най-добрата идея за линейна регресия, защото линейната регресия взема действителната числова стойност на индекса и я добавя към резултата, умножавайки по някакъв коефициент. В нашия случай връзката между номера на индекса и цената е явно нелинейна, дори ако направим така, че индексите да са подредени по някакъв конкретен начин. -* **One-hot кодиране** ще замени колоната `Variety` с 4 различни колони, по една за всеки сорт. Всяка колона ще съдържа `1`, ако съответният ред е от дадения сорт, и `0` в противен случай. Това означава, че в линейната регресия ще има четири коефициента, един за всеки сорт тикви, отговорни за „началната цена“ (по-скоро „допълнителна цена“) за този сорт. +* Простата **числова кодировка** ще създаде таблица с различните разновидности, след което ще замени името на разновидността с индекс в тази таблица. Това не е най-добрата идея за линейна регресия, тъй като линейната регресия взема реалната числова стойност на индекса и я добавя към резултата, умножена по някакъв коефициент. В нашия случай връзката между номера на индекса и цената е ясно нелинейна, дори и да сме сигурни, че индексите са подредени по някакъв конкретен начин. +* **One-hot кодиране** ще замени колоната `Variety` с 4 различни колони, една за всяка разновидност. Всяка колона ще съдържа `1`, ако съответният ред е от дадена разновидност, и `0` в противен случай. Това означава, че в линейната регресия ще има четири коефициента, един за всяка разновидност тикви, отговорни за "начална цена" (или по-точно "допълнителна цена") за тази разновидност. -Долният код показва как можем да приложим one-hot кодиране на сорта: +Кодът по-долу показва как можем да направим one-hot кодирането на разновидността: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -За да обучим линейна регресия, използвайки one-hot кодирания сорт като вход, просто трябва да инициализираме правилно данните `X` и `y`: +За да обучим линейна регресия, използвайки one-hot кодирана разновидност като вход, просто трябва да инициализираме правилно данните `X` и `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Останалата част от кода е същата като тази, която използвахме по-горе за трениране на линейна регресия. Ако го изпробвате, ще видите, че средната квадратна грешка е приблизително същата, но получаваме много по-висок коефициент на детерминация (~77%). За да получим още по-точни предсказания, можем да вземем предвид повече категориални характеристики, както и числови признаци като `Month` или `DayOfYear`. За да получим един голям масив характеристики, можем да използваме `join`: +Останалата част от кода е същата, която използвахме по-горе за обучение на линейна регресия. Ако опитате, ще видите, че средноквадратичната грешка е приблизително същата, но получаваме много по-висок коефициент на детерминация (~77%). За да получите още по-точни прогнози, можете да вземете предвид повече категориални признаци, както и числови признаци, като `Month` или `DayOfYear`. За да получите един масив с всички признаци, можете да използвате `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,68 +342,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Тук също вземаме предвид `City` и типа `Package`, което ни дава MSE 2.84 (10%) и коефициент на детерминация 0.94! +Тук също вземаме предвид `City` и типа `Package`, което ни дава RMSE 2.84 (10.5%) и коефициент на детерминация 0.94! -## Обобщаване +## Всичко заедно -За да направим най-добрия модел, можем да използваме комбинирани (one-hot кодирани категориални + числови) данни от горния пример заедно с полиномиална регресия. Ето пълния код за ваше удобство: +За да направим най-добрия модел, можем да използваме комбинирани (one-hot кодирани категориални + числови) данни от горния пример заедно с полиномиалната регресия. Ето пълния код за ваше удобство: ```python -# подготвяне на тренировъчните данни +# настройка на тренировъчните данни X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# направи разделяне на обучение и тест +# направи разделяне на тренировъчни и тестови данни X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# настрой и тренирай потока +# настрой и обучи конвейера pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# предвиди резултатите за тестовите данни +# предскажи резултатите за тестовите данни pred = pipeline.predict(X_test) -# изчисли MSE и коефициент на детерминация -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# изчисли RMSE и коефициент на детерминация +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Това трябва да ни даде най-добрия коефициент на детерминация от почти 97% и MSE=2.23 (~8% грешка при предсказване). +Това би трябвало да ни даде най-добрия коефициент на детерминация от почти 97% и RMSE=2.23 (~8% грешка в прогнозата). -| Модел | MSE | Коефициент на детерминация | +| Модел | RMSE | Коефициент на детерминация | |-------|-----|----------------------------| -| Линейна регресия със `DayOfYear` | 2.77 (17.2%) | 0.07 | -| Полиномиална регресия със `DayOfYear` | 2.73 (17.0%) | 0.08 | -| Линейна регресия с `Variety` | 5.24 (19.7%) | 0.77 | -| Линейна регресия с всички характеристики | 2.84 (10.5%) | 0.94 | -| Полиномиална регресия с всички характеристики | 2.23 (8.25%) | 0.97 | +| `DayOfYear` Линеен | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Полиномиален | 2.73 (17.0%) | 0.08 | +| `Variety` Линеен | 5.24 (19.7%) | 0.77 | +| Всички признаци Линеен | 2.84 (10.5%) | 0.94 | +| Всички признаци Полиномиален | 2.23 (8.25%) | 0.97 | -🏆 Отлична работа! Създадохте четири регресионни модела в един урок и подобрихте качеството на модела до 97%. В последната част за регресия ще научите за логистичната регресия за определяне на категории. +🏆 Отлична работа! Създадохте четири регресионни модела в един урок и подобрихте качеството на модела до 97%. В последната част за регресия ще научите за логистична регресия за определяне на категории. --- ## 🚀Предизвикателство -Тествайте няколко различни променливи в тази тетрадка, за да видите как корелацията съответства на точността на модела. +Тествайте няколко различни променливи в този бележник, за да видите как корелацията съответства на точността на модела. -## [Викторина след лекцията](https://ff-quizzes.netlify.app/en/ml/) +## [Кратък тест след лекцията](https://ff-quizzes.netlify.app/en/ml/) -## Преглед и самообучение +## Преглед и самостоятелно обучение -В този урок научихме за линейната регресия. Има и други важни видове регресия. Прочетете за техническите подходи Stepwise, Ridge, Lasso и Elasticnet. Добър курс за по-задълбочено изучаване е [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +В този урок научихме за линейната регресия. Има и други важни видове регресия. Прочетете за техниките Stepwise, Ridge, Lasso и Elasticnet. Добър курс за изучаване е [Statistical Learning курс на Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Задача +## Задание -[Изградете модел](assignment.md) +[Създаване на модел](assignment.md) --- **Отказ от отговорност**: -Този документ е преведен с помощта на AI преводаческа услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Не носим отговорност за никакви недоразумения или погрешни тълкувания, произтичащи от използването на този превод. +Този документ е преведен с помощта на автоматична услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, имайте предвид, че автоматичните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/2-Regression/3-Linear/solution/notebook.ipynb b/translations/bg/2-Regression/3-Linear/solution/notebook.ipynb index e28dd6e5f2..df83da3692 100644 --- a/translations/bg/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/bg/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## Линейна и полиномиална регресия за ценообразуване на тикви - Урок 3\n", "\n", - "Заредете необходимите библиотеки и набор от данни. Преобразувайте данните в датафрейм, съдържащ подмножество от данните:\n", + "Заредете необходимите библиотеки и набора от данни. Преобразувайте данните във dataframe, съдържащ подмножество от данните:\n", "\n", - "- Включете само тикви, оценени на цена за бушел\n", + "- Вземете само тиквите, ценени на бушел\n", "- Преобразувайте датата в месец\n", - "- Изчислете цената като средна стойност между високата и ниската цена\n", - "- Преобразувайте цената, за да отразява ценообразуването според количеството в бушели\n" + "- Изчислете цената като средна стойност между най-високата и най-ниската цена\n", + "- Преобразувайте цената, за да отразява ценообразуването спрямо количеството бушели\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Диаграмата с разсейване ни напомня, че разполагаме с данни само за месеците от август до декември. Вероятно ни трябват повече данни, за да можем да правим изводи по линеен начин.\n" + "Диаграмата с точки ни напомня, че разполагаме само с месечни данни от август до декември. Вероятно имаме нужда от повече данни, за да можем да правим изводи по линеен начин.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Нека видим дали има корелация:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Изглежда, че корелацията е доста малка, но има някаква друга по-важна връзка - защото ценовите точки в горния график изглежда формират няколко отделни клъстера. Нека направим графика, която ще покаже различните сортове тикви:\n" + "Изглежда, че корелацията е доста малка, но има някаква друга по-важна връзка - защото ценовите точки на графиката по-горе изглежда имат няколко отделни клъстера. Нека направим графика, която ще покаже различните сортове тикви:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "За момента, нека се съсредоточим само върху един вид - **тип пай**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Линейна регресия\n", "\n", - "Ще използваме Scikit Learn, за да обучим модел за линейна регресия:\n" + "Ще използваме Scikit Learn за обучение на модел на линейна регресия:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Наклонът на правата може да бъде определен от коефициентите на линейната регресия:\n" + "Наклонът на правата може да се определи от коефициентите на линейната регресия:\n" ] }, { @@ -689,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Можем да използваме обучената модел за прогнозиране на цената:\n" + "Можем да използваме обучен модел, за да предскажем цената:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Полиномиална регресия\n", "\n", - "Понякога връзката между характеристиките и резултатите е по природа нелинейна. Например, цените на тиквите може да са високи през зимата (месеци=1,2), след това да спаднат през лятото (месеци=5-7) и после отново да се повишат. Линейната регресия не може да улови тази връзка точно.\n", + "Понякога връзката между признаците и резултатите е по своята същност нелинейна. Например, цените на тиквите може да са високи през зимата (месеци=1,2), след което да спаднат през лятото (месеци=5-7), а после отново да се повишат. Линейната регресия не може да улови тази връзка точно.\n", "\n", - "В този случай можем да обмислим добавянето на допълнителни характеристики. Един прост начин е да използваме полиноми от входните характеристики, което води до **полиномиална регресия**. В Scikit Learn можем автоматично да изчислим предварително полиномиалните характеристики, използвайки pipelines:\n" + "В този случай можем да обмислим добавяне на допълнителни признаци. Прост начин е да използваме полиноми от входните признаци, което води до **полиномиална регресия**. В Scikit Learn можем автоматично да изчислим полиномиални признаци с помощта на pipeline:\n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Кодиране на сортове\n", + "### Варианти на кодиране\n", "\n", - "В идеалния случай искаме да можем да прогнозираме цените за различни сортове тикви, използвайки един и същ модел. За да вземем предвид сорта, първо трябва да го преобразуваме в числова форма, или **да го кодираме**. Има няколко начина да направим това:\n", + "В идеалния свят искаме да можем да предсказваме цени за различни сортове тиква, използвайки един и същ модел. За да вземем предвид сорта, първо трябва да го конвертираме в числова форма или да го **кодираме**. Има няколко начина, по които можем да го направим:\n", "\n", - "* Просто числово кодиране, което ще изгради таблица с различните сортове и след това ще замени името на сорта с индекс от тази таблица. Това не е най-добрата идея за линейна регресия, защото линейната регресия взема предвид числовата стойност на индекса, а числовата стойност вероятно няма да корелира числово с цената.\n", - "* One-hot кодиране, което ще замени колоната `Variety` с 4 различни колони, по една за всеки сорт, които ще съдържат 1, ако съответният ред е от дадения сорт, и 0 в противен случай.\n", + "* Просто цифрово кодиране, което ще създаде таблица с различни сортове и след това ще замени името на сорта с индекс в тази таблица. Това не е най-добрата идея за линейна регресия, защото линейната регресия взема предвид числовата стойност на индекса, а числовата стойност най-вероятно няма да корелира числово с цената.\n", + "* Кодирането с едно-горещо (one-hot encoding), което ще замени колоната `Variety` с 4 различни колони, една за всеки сорт, които ще съдържат 1, ако съответният ред е от дадения сорт, и 0 в противен случай.\n", "\n", - "Кодът по-долу показва как можем да направим one-hot кодиране на сорт:\n" + "Кодът по-долу показва как можем да кодираме сорт с one-hot encoding:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Линейна регресия върху сортове\n", + "### Линеен регресионен анализ на сорта\n", "\n", - "Сега ще използваме същия код като по-горе, но вместо `DayOfYear`, ще използваме нашия one-hot-кодиран сорт като вход:\n" + "Сега ще използваме същия код като по-горе, но вместо `DayOfYear` ще използваме нашия едноразрядно кодираният сорт като вход:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Можем също така да опитаме да използваме други характеристики по същия начин и да ги комбинираме с числови характеристики, като `Month` или `DayOfYear`:\n" + "Можем също да опитаме да използваме други характеристики по същия начин и да ги комбинираме с числови характеристики, като `Month` или `DayOfYear`:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Полиномиална регресия\n", "\n", - "Полиномиалната регресия може също да се използва с категорийни характеристики, които са кодирани с one-hot енкодиране. Кодът за обучение на полиномиална регресия би бил по същество същият, както видяхме по-горе.\n" + "Полиномиалната регресия може да се използва и с категориални признаци, които са едно-горещо кодирани. Кодът за обучение на полиномиална регресия ще бъде същият, както видяхме по-горе.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Отказ от отговорност**: \nТози документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.\n" + "---\n\n\n**Отказ от отговорност**: \nТози документ е преведен с помощта на AI преводаческа услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за никакви недоразумения или неправилни тълкувания, произтичащи от използването на този превод.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:18:34+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "bg" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ro/.co-op-translator.json b/translations/ro/.co-op-translator.json index 37e1c6cc2c..e1e1df0bd9 100644 --- a/translations/ro/.co-op-translator.json +++ b/translations/ro/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ro" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T16:04:52+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:10:23+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ro" }, @@ -90,8 +90,8 @@ "language_code": "ro" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:36:50+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:09:51+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ro" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ro" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:06:51+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ro" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T15:18:34+00:00", diff --git a/translations/ro/1-Introduction/4-techniques-of-ML/README.md b/translations/ro/1-Introduction/4-techniques-of-ML/README.md index 3acc317f65..9072b5f823 100644 --- a/translations/ro/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ro/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Tehnici de Învățare Automată -Procesul de construire, utilizare și întreținere a modelelor de învățare automată și a datelor pe care acestea le folosesc este foarte diferit de multe alte fluxuri de lucru din dezvoltare. În această lecție, vom demistifica procesul și vom evidenția principalele tehnici pe care trebuie să le cunoașteți. Veți: +Procesul de construire, utilizare și întreținere a modelelor de învățare automată și a datelor pe care le folosesc este un proces foarte diferit față de multe alte fluxuri de lucru de dezvoltare. În această lecție, vom demistifica procesul și vom contura principalele tehnici pe care trebuie să le cunoști. Vei: -- Înțelege procesele care stau la baza învățării automate la un nivel general. +- Înțelege procesele fundamentale ale învățării automate la un nivel înalt. - Explora concepte de bază precum „modele”, „predicții” și „date de antrenament”. -## [Chestionar înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) +## [Test pre-lectură](https://ff-quizzes.netlify.app/en/ml/) -[![ML pentru începători - Tehnici de Învățare Automată](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML pentru începători - Tehnici de Învățare Automată") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Faceți clic pe imaginea de mai sus pentru un scurt videoclip despre această lecție. +> 🎥 Click pe imaginea de mai sus pentru un scurt video care parcurge această lecție. ## Introducere -La un nivel general, arta de a crea procese de învățare automată (ML) constă dintr-o serie de pași: +La un nivel înalt, arta creării proceselor de învățare automată (ML) este alcătuită din mai mulți pași: -1. **Decideți întrebarea**. Majoritatea proceselor ML încep prin a pune o întrebare care nu poate fi răspunsă printr-un program condițional simplu sau un motor bazat pe reguli. Aceste întrebări se concentrează adesea pe predicții bazate pe o colecție de date. -2. **Colectați și pregătiți datele**. Pentru a putea răspunde la întrebare, aveți nevoie de date. Calitatea și, uneori, cantitatea datelor vor determina cât de bine puteți răspunde la întrebarea inițială. Vizualizarea datelor este un aspect important al acestei etape. Această etapă include și împărțirea datelor în grupuri de antrenament și testare pentru a construi un model. -3. **Alegeți o metodă de antrenament**. În funcție de întrebare și de natura datelor, trebuie să alegeți cum doriți să antrenați un model pentru a reflecta cel mai bine datele și pentru a face predicții precise. -4. **Antrenați modelul**. Folosind datele de antrenament, veți utiliza diferiți algoritmi pentru a antrena un model să recunoască tipare în date. Modelul poate utiliza ponderi interne care pot fi ajustate pentru a privilegia anumite părți ale datelor în detrimentul altora, pentru a construi un model mai bun. -5. **Evaluați modelul**. Utilizați date pe care modelul nu le-a mai văzut (datele de testare) din setul colectat pentru a vedea cum se comportă modelul. -6. **Ajustarea parametrilor**. Pe baza performanței modelului, puteți relua procesul folosind parametri sau variabile diferite care controlează comportamentul algoritmilor utilizați pentru antrenarea modelului. -7. **Predicție**. Utilizați noi intrări pentru a testa acuratețea modelului. +1. **Decide asupra întrebării**. Majoritatea proceselor ML încep prin a pune o întrebare care nu poate fi răspunsă printr-un program condițional simplu sau printr-un motor bazat pe reguli. Aceste întrebări se referă adesea la predicții bazate pe o colecție de date. +2. **Colectează și pregătește datele**. Pentru a putea răspunde la întrebarea ta, ai nevoie de date. Calitatea și, uneori, cantitatea datelor tale vor determina cât de bine poți răspunde la întrebarea inițială. Vizualizarea datelor este o componentă importantă a acestei faze. Această fază include și împărțirea datelor în grupuri de antrenament și test pentru a construi un model. +3. **Alege o metodă de antrenament**. În funcție de întrebarea ta și de natura datelor, trebuie să alegi cum dorești să antrenezi un model pentru a reflecta cel mai bine datele și pentru a face predicții exacte pe baza acestora. Aceasta este partea procesului tău ML care necesită expertiză specifică și, adesea, o cantitate considerabilă de experimentare. +4. **Antrenează modelul**. Folosind datele de antrenament, vei utiliza diferiți algoritmi pentru a antrena un model să recunoască tipare în date. Modelul poate folosi greutăți interne ajustabile pentru a privilegia anumite părți ale datelor în detrimentul altora pentru a construi un model mai bun. +5. **Evaluează modelul**. Folosești date noi, nevăzute anterior (datele de testare) din setul tău colectat pentru a vedea cum performează modelul. +6. **Ajustarea parametrilor**. Pe baza performanței modelului, poți reface procesul folosind parametri diferiți, sau variabile, care controlează comportamentul algoritmilor folosiți pentru antrenarea modelului. +7. **Fă predicții**. Folosește noi intrări pentru a testa acuratețea modelului tău. -## Ce întrebare să puneți +## Ce întrebări să pui -Calculatoarele sunt deosebit de abile în descoperirea tiparelor ascunse în date. Această utilitate este foarte utilă pentru cercetătorii care au întrebări despre un anumit domeniu și care nu pot fi ușor răspunse prin crearea unui motor bazat pe reguli condiționale. De exemplu, într-o sarcină actuarială, un specialist în date ar putea construi reguli manuale despre mortalitatea fumătorilor vs. nefumătorilor. +Calculatoarele sunt deosebit de pricepute la descoperirea tiparelor ascunse în date. Această utilitate este foarte folositoare pentru cercetătorii care au întrebări legate de un anumit domeniu și care nu pot fi ușor răspunse prin crearea unui motor bazat pe reguli condiționale. De exemplu, pentru o sarcină actuarială, un data scientist ar putea construi reguli manuale privind mortalitatea fumătorilor față de nefumători. -Când sunt introduse multe alte variabile în ecuație, un model ML ar putea fi mai eficient în a prezice ratele viitoare de mortalitate pe baza istoricului de sănătate din trecut. Un exemplu mai vesel ar putea fi realizarea de predicții meteorologice pentru luna aprilie într-o anumită locație, pe baza unor date precum latitudinea, longitudinea, schimbările climatice, proximitatea față de ocean, tiparele curenților de aer și altele. +Totuși, când multe alte variabile sunt incluse în ecuație, un model ML poate fi mai eficient pentru a prezice ratele viitoare de mortalitate bazate pe istoricul medical anterior. Un exemplu mai optimist ar fi realizarea predicțiilor meteo pentru luna aprilie într-o anumită locație în baza datelor care includ latitudinea, longitudinea, schimbările climatice, proximitatea față de ocean, modelele fluxului jet și altele. -✅ Acest [set de diapozitive](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) despre modelele meteorologice oferă o perspectivă istorică asupra utilizării ML în analiza vremii. +✅ Acest [set de slide-uri](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) despre modele meteorologice oferă o perspectivă istorică asupra folosirii ML în analiza meteo. -## Sarcini înainte de construire +## Sarcini pre-construire -Înainte de a începe să construiți modelul, există mai multe sarcini pe care trebuie să le finalizați. Pentru a testa întrebarea și a forma o ipoteză bazată pe predicțiile unui model, trebuie să identificați și să configurați mai mulți factori. +Înainte de a începe să construiești modelul, există mai multe sarcini pe care trebuie să le finalizezi. Pentru a testa întrebarea și a formula o ipoteză bazată pe predicțiile unui model, trebuie să identifici și să configurezi mai multe elemente. ### Date -Pentru a putea răspunde la întrebare cu un anumit grad de certitudine, aveți nevoie de o cantitate suficientă de date de tipul potrivit. Există două lucruri pe care trebuie să le faceți în acest moment: +Pentru a răspunde întrebării tale cu orice fel de certitudine, ai nevoie de o cantitate bună de date potrivite. Sunt două lucruri de făcut în acest moment: -- **Colectați date**. Ținând cont de lecția anterioară despre echitatea în analiza datelor, colectați datele cu atenție. Fiți conștienți de sursele acestor date, de eventualele prejudecăți inerente și documentați originea lor. -- **Pregătiți datele**. Există mai mulți pași în procesul de pregătire a datelor. Este posibil să fie nevoie să adunați datele și să le normalizați dacă provin din surse diverse. Puteți îmbunătăți calitatea și cantitatea datelor prin diverse metode, cum ar fi conversia șirurilor de caractere în numere (așa cum facem în [Clustering](../../5-Clustering/1-Visualize/README.md)). De asemenea, puteți genera date noi, bazate pe cele originale (așa cum facem în [Classification](../../4-Classification/1-Introduction/README.md)). Puteți curăța și edita datele (așa cum vom face înainte de lecția despre [Aplicații Web](../../3-Web-App/README.md)). În cele din urmă, este posibil să fie nevoie să le randomizați și să le amestecați, în funcție de tehnicile de antrenament. +- **Colectează date**. Ținând cont de lecția anterioară despre corectitudinea în analiza datelor, colectează datele cu grijă. Fii conștient de sursele acestor date, de orice părtinire inerentă și documentează originea acestora. +- **Pregătește datele**. Există mai mulți pași în procesul de pregătire a datelor. Este posibil să fie nevoie să le unești și să le normalizezi dacă provin din surse diverse. Poți îmbunătăți calitatea și cantitatea datelor prin diferite metode, cum ar fi convertirea șirurilor de caractere în numere (așa cum facem în [Clustering](../../5-Clustering/1-Visualize/README.md)). Poți genera date noi, bazate pe cele originale (așa cum facem în [Classification](../../4-Classification/1-Introduction/README.md)). Poți curăța și edita datele (așa cum vom face înainte de lecția [Web App](../../3-Web-App/README.md)). În final, poate fi necesar să le randomizezi și să le amesteci, în funcție de tehnicile de antrenament folosite. -✅ După ce ați colectat și procesat datele, luați un moment pentru a verifica dacă forma lor vă va permite să abordați întrebarea propusă. Este posibil ca datele să nu funcționeze bine pentru sarcina dată, așa cum descoperim în lecțiile noastre despre [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ După colectarea și procesarea datelor, ia un moment să vezi dacă forma acestora îți va permite să adresezi întrebarea dorită. Este posibil ca datele să nu performeze bine în sarcina ta, așa cum descoperim în lecțiile de [Clustering](../../5-Clustering/1-Visualize/README.md)! -### Caracteristici și Țintă +### Caracteristici și țintă -O [caracteristică](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) este o proprietate măsurabilă a datelor. În multe seturi de date, aceasta este exprimată ca un antet de coloană, cum ar fi „dată”, „dimensiune” sau „culoare”. Variabila caracteristică, de obicei reprezentată ca `X` în cod, reprezintă variabila de intrare care va fi utilizată pentru a antrena modelul. +O [caracteristică](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) este o proprietate măsurabilă a datelor tale. În multe seturi de date, este exprimată prin intermediul unui titlu de coloană precum „data”, „dimensiune” sau „culoare”. Variabila ta caracteristică, de obicei reprezentată ca `X` în cod, reprezintă variabila de intrare ce va fi folosită pentru antrenarea modelului. -Ținta este ceea ce încercați să preziceți. Ținta, de obicei reprezentată ca `y` în cod, reprezintă răspunsul la întrebarea pe care încercați să o puneți datelor: în decembrie, ce **culoare** vor avea dovlecii cei mai ieftini? În San Francisco, ce cartiere vor avea cel mai bun **preț** imobiliar? Uneori, ținta este denumită și atribut etichetă. +O țintă este ceva ce încerci să prezici. Ținta, de obicei reprezentată ca `y` în cod, reprezintă răspunsul la întrebarea pe care încerci să o adresezi datelor tale: în decembrie, ce culoare vor avea dovlecii cei mai ieftini? în San Francisco, care cartiere vor avea cel mai bun preț imobiliar? Ocazional ținta este denumită și atribut etichetă. ### Selectarea variabilei caracteristice -🎓 **Selecția și Extracția Caracteristicilor** Cum știți ce variabilă să alegeți atunci când construiți un model? Probabil veți trece printr-un proces de selecție sau extracție a caracteristicilor pentru a alege variabilele potrivite pentru cel mai performant model. Totuși, acestea nu sunt același lucru: „Extracția caracteristicilor creează noi caracteristici din funcții ale caracteristicilor originale, în timp ce selecția caracteristicilor returnează un subset al caracteristicilor.” ([sursa](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Selecția și extracția caracteristicilor** Cum știi ce variabilă să alegi când construiești un model? Probabil vei trece printr-un proces de selecție sau extracție a caracteristicilor pentru a alege variabilele potrivite pentru cel mai performant model. Totuși, acestea nu sunt același lucru: „Extracția caracteristicilor creează caracteristici noi bazate pe funcții ale caracteristicilor originale, în timp ce selecția caracteristicilor returnează un subset al caracteristicilor.” ([sursă](https://wikipedia.org/wiki/Feature_selection)) -### Vizualizați datele +### Vizualizează-ți datele -Un aspect important al trusei de instrumente a unui specialist în date este puterea de a vizualiza datele folosind mai multe biblioteci excelente, cum ar fi Seaborn sau MatPlotLib. Reprezentarea vizuală a datelor vă poate permite să descoperiți corelații ascunse pe care le puteți valorifica. Vizualizările dvs. vă pot ajuta, de asemenea, să descoperiți prejudecăți sau date dezechilibrate (așa cum descoperim în [Classification](../../4-Classification/2-Classifiers-1/README.md)). +O componentă importantă în trusa unui data scientist este puterea de a vizualiza datele folosind mai multe biblioteci excelente precum Seaborn sau MatPlotLib. Reprezentarea datelor vizual te poate ajuta să descoperi corelații ascunse pe care le poți folosi. Vizualizările ar putea de asemenea să te ajute să descoperi părtinire sau date dezechilibrate (așa cum descoperim în [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Împărțiți setul de date +### Împarte setul tău de date -Înainte de antrenament, trebuie să împărțiți setul de date în două sau mai multe părți de dimensiuni inegale care să reprezinte totuși bine datele. +Înainte de antrenare, trebuie să împarți setul de date în două sau mai multe părți de mărimi inegale care să reprezinte în continuare bine datele. -- **Antrenament**. Această parte a setului de date este utilizată pentru a antrena modelul. Acest set constituie majoritatea setului de date original. -- **Testare**. Un set de testare este un grup independent de date, adesea extras din datele originale, pe care îl utilizați pentru a confirma performanța modelului construit. -- **Validare**. Un set de validare este un grup mai mic de exemple independente pe care îl utilizați pentru a ajusta hiperparametrii sau arhitectura modelului, pentru a-l îmbunătăți. În funcție de dimensiunea datelor și de întrebarea pe care o puneți, este posibil să nu fie nevoie să construiți acest al treilea set (așa cum notăm în [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Antrenament**. Această parte a setului de date este folosită pentru a antrena modelul. Acest set constituie majoritatea setului de date original. +- **Testare**. Un set de date de test este un grup independent de date, adesea extras din datele inițiale, pe care îl folosești pentru a confirma performanța modelului construit. +- **Validare**. Un set de validare este un grup mai mic independent de exemple folosit pentru a ajusta hiperparametrii sau arhitectura modelului pentru a-l îmbunătăți. În funcție de mărimea datelor tale și întrebarea pe care o adresezi, s-ar putea să nu fie necesar să construiești acest al treilea set (așa cum notăm în [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). ## Construirea unui model -Folosind datele de antrenament, scopul dvs. este să construiți un model, sau o reprezentare statistică a datelor, utilizând diferiți algoritmi pentru a-l **antrena**. Antrenarea unui model îl expune la date și îi permite să facă presupuneri despre tiparele percepute pe care le descoperă, validează și acceptă sau respinge. +Folosindu-te de datele de antrenament, scopul tău este să construiești un model, sau o reprezentare statistică a datelor, folosind diferiți algoritmi pentru a-l **antrena**. Antrenarea unui model îl expune la date și îi permite să facă presupuneri despre tiparele percepute pe care le descoperă, validează și acceptă sau respinge. -### Decideți o metodă de antrenament +### Alege o metodă de antrenament -În funcție de întrebare și de natura datelor, veți alege o metodă pentru a le antrena. Explorând [documentația Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - pe care o folosim în acest curs - puteți descoperi multe moduri de a antrena un model. În funcție de experiența dvs., este posibil să trebuiască să încercați mai multe metode diferite pentru a construi cel mai bun model. Este probabil să treceți printr-un proces în care specialiștii în date evaluează performanța unui model, oferindu-i date nevăzute, verificând acuratețea, prejudecățile și alte probleme care degradează calitatea, și selectând metoda de antrenament cea mai potrivită pentru sarcina dată. +În funcție de întrebarea ta și de natura datelor, vei alege o metodă de antrenament. Parcurgând [documentația Scikit-learn](https://scikit-learn.org/stable/user_guide.html) — pe care o folosim în acest curs — poți explora multe metode de a antrena un model. În funcție de experiența ta, este posibil să trebuiască să încerci mai multe metode diferite pentru a construi cel mai bun model. Este probabil să treci printr-un proces în care data scientist-ii evaluează performanța unui model prin alimentarea sa cu date noi, verificând acuratețea, părtinirea și alte probleme care pot degrada calitatea, și aleg metoda de antrenament cea mai potrivită pentru sarcina respectivă. -### Antrenați un model +### Antrenează un model -Cu datele de antrenament pregătite, sunteți gata să le „potriviți” pentru a crea un model. Veți observa că în multe biblioteci ML veți găsi codul „model.fit” - este momentul în care trimiteți variabila caracteristică ca un șir de valori (de obicei „X”) și o variabilă țintă (de obicei „y”). +Înarmat cu datele tale de antrenament, ești gata să-l „potrivești” pentru a crea modelul. Vei observa că în multe biblioteci ML găsești codul „model.fit” – este în acest moment când trimiți variabila ta caracteristică ca un șir de valori (de obicei „X”) și o variabilă țintă (de obicei „y”). -### Evaluați modelul +### Evaluează modelul -Odată ce procesul de antrenament este complet (poate dura multe iterații sau „epoci” pentru a antrena un model mare), veți putea evalua calitatea modelului folosind date de testare pentru a-i măsura performanța. Aceste date sunt un subset al datelor originale pe care modelul nu le-a analizat anterior. Puteți imprima un tabel cu metrici despre calitatea modelului. +Odată ce procesul de antrenament s-a încheiat (poate dura multe iterații, sau „epoci”, pentru a antrena un model mare), vei putea evalua calitatea modelului folosind datele de test pentru a-i măsura performanța. Aceste date sunt un subset al datelor originale pe care modelul nu le-a analizat anterior. Poți afișa un tabel de metrici despre calitatea modelului tău. 🎓 **Potrivirea modelului** -În contextul învățării automate, potrivirea modelului se referă la acuratețea funcției de bază a modelului în timp ce încearcă să analizeze date cu care nu este familiarizat. +În contextul învățării automate, potrivirea modelului se referă la acuratețea funcției interne a modelului în timp ce încearcă să analizeze date cu care nu este familiar. -🎓 **Subantrenarea** și **supraantrenarea** sunt probleme comune care degradează calitatea modelului, deoarece modelul se potrivește fie prea puțin, fie prea bine. Acest lucru face ca modelul să facă predicții fie prea strâns aliniate, fie prea slab aliniate cu datele de antrenament. Un model supraantrenat prezice datele de antrenament prea bine, deoarece a învățat prea bine detaliile și zgomotul datelor. Un model subantrenat nu este precis, deoarece nu poate analiza corect nici datele de antrenament, nici datele pe care nu le-a „văzut” încă. +🎓 **Suprapotrivirea** și **subpotrivirea** sunt probleme comune care degradează calitatea modelului, deoarece modelul se potrivește fie insuficient, fie prea mult. Acest lucru determină modelul să facă predicții prea rigide sau prea slabe față de datele de antrenament. Un model suprapotrivit prezice datele de antrenament prea bine pentru că a învățat foarte bine detaliile și zgomotul din date. Un model subpotrivit nu este precis, neputând analiza corect nici datele de antrenament și nici datele nevăzute anterior. -![model supraantrenat](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/ro/overfitting.1c132d92bfd93cb6.webp) > Infografic de [Jen Looper](https://twitter.com/jenlooper) ## Ajustarea parametrilor -Odată ce antrenamentul inițial este complet, observați calitatea modelului și luați în considerare îmbunătățirea acestuia prin ajustarea „hiperparametrilor”. Citiți mai multe despre proces [în documentație](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Odată ce antrenamentul inițial s-a încheiat, observă calitatea modelului și ia în considerare îmbunătățirea sa prin ajustarea „hiperparametrilor”. Citește mai multe despre proces [în documentație](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Predicție -Acesta este momentul în care puteți utiliza date complet noi pentru a testa acuratețea modelului. Într-un context ML „aplicat”, în care construiți active web pentru a utiliza modelul în producție, acest proces ar putea implica colectarea de intrări de la utilizatori (de exemplu, apăsarea unui buton) pentru a seta o variabilă și a o trimite modelului pentru inferență sau evaluare. +Acesta este momentul în care poți folosi date complet noi pentru a testa acuratețea modelului. Într-un context ML „aplicat”, unde construiești active web pentru a folosi modelul în producție, acest proces poate implica colectarea inputului utilizatorului (de exemplu, apăsarea unui buton) pentru a seta o variabilă și a o trimite modelului pentru inferență sau evaluare. -În aceste lecții, veți descoperi cum să utilizați acești pași pentru a pregăti, construi, testa, evalua și prezice - toate gesturile unui specialist în date și mai mult, pe măsură ce progresați în călătoria dvs. pentru a deveni un inginer ML „full stack”. +În aceste lecții, vei descoperi cum să folosești acești pași pentru a pregăti, construi, testa, evalua și prezice — toate gesturile unui data scientist și mai mult, pe măsură ce avansezi în călătoria ta de a deveni un inginer ML „full stack”. --- ## 🚀Provocare -Desenați un diagramă de flux care reflectă pașii unui practician ML. Unde vă vedeți acum în proces? Unde anticipați că veți întâmpina dificultăți? Ce vi se pare ușor? +Desenează o diagramă de flux care reflectă pașii unui practician ML. Unde te vezi acum în proces? Unde crezi că vei întâmpina dificultăți? Ce ți se pare ușor? -## [Chestionar după lecție](https://ff-quizzes.netlify.app/en/ml/) +## [Test post-lectură](https://ff-quizzes.netlify.app/en/ml/) -## Recapitulare și Studiu Individual +## Recapitulare & Auto-studiu -Căutați online interviuri cu specialiști în date care discută despre munca lor zilnică. Iată [unul](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Caută online interviuri cu data scientist-i care discută despre munca lor zilnică. Iată [unul](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Temă -[Intervievați un specialist în date](assignment.md) +[Intervievează un data scientist](assignment.md) --- + **Declinare de responsabilitate**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși depunem eforturi pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un traducător uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite rezultate din utilizarea acestei traduceri. + \ No newline at end of file diff --git a/translations/ro/2-Regression/3-Linear/README.md b/translations/ro/2-Regression/3-Linear/README.md index f87430743b..b821c886dc 100644 --- a/translations/ro/2-Regression/3-Linear/README.md +++ b/translations/ro/2-Regression/3-Linear/README.md @@ -2,124 +2,124 @@ ## Notă pentru începători -Regresia liniară este folosită atunci când dorim să prezicem o **valoare numerică** (de exemplu, prețul unei case, temperatura sau vânzările). -Funcționează prin găsirea unei linii drepte care reprezintă cel mai bine relația dintre caracteristicile de intrare și ieșire. +Regresia liniară este folosită atunci când vrem să prezicem o **valoare numerică** (de exemplu, prețul unei case, temperatura sau vânzările). +Aceasta funcționează prin găsirea unei drepte care reprezintă cel mai bine relația dintre variabilele de intrare și ieșire. În această lecție, ne concentrăm pe înțelegerea conceptului înainte de a explora tehnici de regresie mai avansate. ![Linear vs polynomial regression infographic](../../../../translated_images/ro/linear-polynomial.5523c7cb6576ccab.webp) > Infografic de [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Test pre-lectură](https://ff-quizzes.netlify.app/en/ml/) +## [Chestionar pre-lectură](https://ff-quizzes.netlify.app/en/ml/) > ### [Această lecție este disponibilă în R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Introducere -Până acum ați explorat ce este regresia cu date de probă adunate din setul de date despre prețurile dovlecilor pe care îl vom folosi pe parcursul acestei lecții. De asemenea, ați vizualizat datele folosind Matplotlib. +Până acum ai explorat ce este regresia folosind un set de date despre prețurile dovlecilor pe care îl vom folosi pe parcursul acestei lecții. Ai vizualizat, de asemenea, datele folosind Matplotlib. -Acum sunteți gata să aprofundați regresia pentru învățarea automată (ML). Deși vizualizarea permite să înțelegeți datele, adevărata putere a învățării automate vine din _antrenarea modelelor_. Modelele sunt antrenate pe date istorice pentru a captura automat dependențele din date și vă permit să preziceți rezultate pentru date noi, pe care modelul nu le-a văzut anterior. +Acum ești pregătit să aprofundezi regresia pentru ML. În timp ce vizualizarea te ajută să înțelegi datele, adevărata putere a învățării automate vine din _antrenarea modelelor_. Modelele sunt antrenate pe date istorice pentru a captura automat dependențele din date și îți permit să prezici rezultate pentru date noi, pe care modelul nu le-a văzut înainte. -În această lecție veți învăța mai multe despre două tipuri de regresie: _regresie liniară de bază_ și _regresie polinomială_, împreună cu unele dintre elementele matematice ale acestor tehnici. Aceste modele ne vor permite să prezicem prețurile dovlecilor în funcție de diferite date de intrare. +În această lecție vei învăța mai multe despre două tipuri de regresie: _regresia liniară de bază_ și _regresia polinomială_, împreună cu unele dintre conceptele matematice din spatele acestor tehnici. Aceste modele ne vor permite să prezicem prețurile dovlecilor în funcție de diferiți parametri de intrare. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Faceți click pe imaginea de mai sus pentru un scurt videoclip introductiv despre regresia liniară. +> 🎥 Apasă pe imaginea de mai sus pentru un scurt videoclip despre regresia liniară. -> Pe tot parcursul acestui curriculum, presupunem cunoștințe minime de matematică și ne propunem să o facem accesibilă pentru studenți din alte domenii, așa că urmăriți notele, 🧮 apelurile, diagramele și alte unelte de învățare pentru a ajuta la înțelegere. +> Pe tot parcursul acestui curriculum, presupunem cunoștințe minimale de matematică și căutăm să le facem accesibile studenților veniți din alte domenii, așa că urmărește notele, 🧮 explicațiile, diagramele și alte unelte de învățare pentru a ușura înțelegerea. -### Cerință prealabilă +### Prerechizite -Ar trebui să fiți familiarizați până acum cu structura datelor despre dovleci pe care le examinăm. Le puteți găsi preîncărcate și preprocesate în fișierul _notebook.ipynb_ al acestei lecții. În fișier, prețul dovlecilor este afișat pe bushel într-un nou DataFrame. Asigurați-vă că puteți rula aceste noteboooks în kerneluri din Visual Studio Code. +Ar trebui să fii familiarizat acum cu structura datelor despre dovleci pe care le examinăm. Le poți găsi preîncărcate și preprocesate în fișierul _notebook.ipynb_ din această lecție. În fișier, prețul dovlecilor este afișat per bushel într-un nou data frame. Asigură-te că poți rula aceste notebook-uri în kerneluri în Visual Studio Code. ### Pregătire -Ca un memento, încărcați aceste date pentru a putea pune întrebări despre ele. +Ca reminder, încarci aceste date ca să pui întrebări despre ele. -- Când este cel mai bun moment pentru a cumpăra dovleci? -- Ce preț pot să aștept pentru un coș de dovleci miniatură? +- Care este cel mai bun moment să cumperi dovleci? +- Ce preț pot să aștept pentru o cutie de dovleci miniatură? - Ar trebui să îi cumpăr în coșuri de jumătate de bushel sau în cutii de 1 1/9 bushel? -Să continuăm să explorăm aceste date. +Să continuăm să analizăm aceste date. -În lecția anterioară, ați creat un DataFrame Pandas și l-ați populat cu o parte din setul original de date, standardizând prețurile pe bushel. Prin aceasta, totuși, ați putut colecta doar aproximativ 400 de puncte de date și numai pentru lunile de toamnă. +În lecția anterioară ai creat un Pandas data frame și l-ai populat cu o parte din setul original de date, standardizând prețul per bushel. Prin asta, însă, ai putut colecta doar vreo 400 de puncte de date și doar pentru lunile de toamnă. -Aruncați o privire la datele pe care le-am preîncărcat în notebook-ul însoțitor al acestei lecții. Datele sunt preîncărcate și este afișat un grafic de dispersie inițial pentru a arăta datele pe lună. Poate putem obține mai multe detalii despre natura datelor dacă le curățăm mai bine. +Aruncă o privire la datele preîncărcate în notebook-ul din această lecție. Datele sunt preîncărcate și un grafic de dispersie inițial este generat pentru a arăta datele lunii. Poate putem obține puțin mai multe detalii despre natura datelor printr-un proces suplimentar de curățare. ## O linie de regresie liniară -După cum ați învățat în Lecția 1, scopul unui exercițiu de regresie liniară este să puteți trasa o linie care să: +Așa cum ai învățat în Lecția 1, scopul unui exercițiu de regresie liniară este să poți trasa o linie care să: -- **Arate relațiile variabilelor**. Să arate relația dintre variabile -- **Facă predicții**. Să facă predicții precise despre unde ar cădea un nou punct de date în raport cu acea linie. +- **Arate relațiile dintre variabile**. Să arate relația dintre variabile +- **Facă predicții**. Să facă predicții corecte despre unde s-ar plasa un punct nou în raport cu acea linie. -Este tipic pentru **Regresia celor mai mici pătrate (Least-Squares Regression)** să traseze acest tip de linie. Termenul „Cei mai mici pătrate” se referă la procesul de minimizare a erorii totale în modelul nostru. Pentru fiecare punct de date, măsurăm distanța verticală (numită reziduală) între punctul real și linia noastră de regresie. +Este tipic pentru **Regresia cu Cele Mai Mici Pătrate** să se deseneze acest tip de linie. Termenul "Cele Mai Mici Pătrate" se referă la procesul de a minimiza eroarea totală din modelul nostru. Pentru fiecare punct de date, măsurăm distanța verticală (numită reziduală) dintre punctul real și linia noastră de regresie. -Aceste distanțe le pătrățim din două motive principale: +Aceste distanțe sunt pătrate din două motive principale: -1. **Magnitudine în loc de Direcție:** Dorim să tratăm o eroare de -5 la fel ca o eroare de +5. Pătratul transformă toate valorile în pozitive. +1. **Magnitudine și nu Direcție:** Vrem să tratăm o eroare de -5 la fel ca o eroare de +5. Pătratul face toate valorile pozitive. -2. **Penalizarea valorilor aberante:** Pătratul dă o greutate mai mare erorilor mari, forțând linia să rămână mai aproape de punctele care sunt departe. +2. **Penalizarea Outlierilor:** Pătratul dă o greutate mai mare erorilor mari, forțând linia să fie mai aproape de punctele care sunt îndepărtate. -Apoi adunăm toate aceste valori pătrate. Scopul nostru este să găsim linia specifică unde această sumă finală este minimă (cea mai mică valoare posibilă) - de aici și numele „Cei mai mici pătrate”. +Apoi adunăm toate aceste valori pătrate. Obiectivul nostru este să găsim linia specifică pentru care această sumă finală este cea mai mică (valoarea posibilă minimă) — de aici și numele "Cele Mai Mici Pătrate". -> **🧮 Arată-mi matematica** -> -> Această linie, denumită _linia cea mai potrivită_ poate fi exprimată prin [o ecuație](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Arată-mi matematica** +> +> Această linie, numită _linia de potrivire cea mai bună_ poate fi exprimată prin [o ecuație](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> `X` este 'variabila explicativă'. `Y` este 'variabila dependentă'. Panta liniei este `b` iar `a` este interceptul pe axa y, care se referă la valoarea lui `Y` când `X = 0`. +> `X` este 'variabila explicativă'. `Y` este 'variabila dependentă'. Panta liniei este `b` iar `a` este ordonata la origine (intersectia cu axa y), care indică valoarea lui `Y` când `X = 0`. > ->![calculate the slope](../../../../translated_images/ro/slope.f3c9d5910ddbfcf9.webp) +>![calculează panta](../../../../translated_images/ro/slope.f3c9d5910ddbfcf9.webp) > -> Mai întâi, calculăm panta `b`. Infografic de [Jen Looper](https://twitter.com/jenlooper) +> Mai întâi, calculează panta `b`. Infografic de [Jen Looper](https://twitter.com/jenlooper) > -> Cu alte cuvinte, referindu-ne la întrebarea inițială din datele noastre despre dovleci: „prezice prețul unui dovleac pe bushel pe lună”, `X` s-ar referi la preț iar `Y` s-ar referi la luna vânzării. +> Cu alte cuvinte, referindu-ne la întrebarea originală legată de datele despre dovleci: "predic prețul unui dovleac pe bushel în funcție de lună", `X` se referă la preț iar `Y` la luna vânzării. > ->![complete the equation](../../../../translated_images/ro/calculation.a209813050a1ddb1.webp) +>![completează ecuația](../../../../translated_images/ro/calculation.a209813050a1ddb1.webp) > > Calculează valoarea lui Y. Dacă plătești în jur de 4 dolari, trebuie să fie aprilie! Infografic de [Jen Looper](https://twitter.com/jenlooper) > -> Matematica care calculează linia trebuie să demonstreze panta liniei, care depinde și de intercept, sau unde se situează `Y` când `X = 0`. +> Matematica care calculează linia trebuie să demonstreze panta liniei, care depinde și de ordonata la origine, sau locul unde se află `Y` când `X = 0`. > -> Puteți observa metoda de calcul pentru aceste valori pe site-ul [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Vizitați și [acest calculator pentru cele mai mici pătrate](https://www.mathsisfun.com/data/least-squares-calculator.html) pentru a vedea cum valorile numerelor influențează linia. +> Poți observa metoda de calcul a acestor valori pe site-ul [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Vizitează și [acest calculator pentru Cele Mai Mici Pătrate](https://www.mathsisfun.com/data/least-squares-calculator.html) ca să vezi cum valorile numerice influențează linia. -## Corelație +## Corelația -Un alt termen pe care trebuie să-l înțelegem este **Coeficientul de Corelație** între variabilele date X și Y. Folosind un grafic de dispersie, puteți vizualiza rapid acest coeficient. Un grafic cu puncte de date răspândite într-o linie ordonată are corelație ridicată, iar un grafic cu punctele de date presărate peste tot între X și Y are corelație scăzută. +Un termen în plus de înțeles este **Coeficientul de Corelație** între variabilele date X și Y. Folosind un grafic în puncte (scatterplot), poți vizualiza rapid acest coeficient. Un grafic cu punctele împrăștiate într-o linie ordonată are o corelație mare, dar un grafic cu punctele răspândite oriunde între X și Y are o corelație scăzută. -Un model bun de regresie liniară va fi unul care are un coeficient de corelație mare (mai aproape de 1 decât de 0) folosind metoda regresiei celor mai mici pătrate cu linia de regresie. +Un model bun de regresie liniară este acela care are un Coeficient de Corelație ridicat (mai aproape de 1 decât de 0) folosind metoda Regresiei cu Cele Mai Mici Pătrate și o linie de regresie. -✅ Rulați notebook-ul care însoțește această lecție și priviți graficul de dispersie Lună versus Preț. Datele care asociază Luna cu Prețul pentru vânzările de dovleci par să aibă corelație mare sau mică, conform interpretării dvs. vizuale a graficului? Se schimbă dacă folosiți o măsură mai detaliată în loc de `Lună`, de ex. *ziua din an* (adică numărul de zile de la începutul anului)? +✅ Rulează notebook-ul care însoțește această lecție și uită-te la graficul scatter Month to Price. Datele care asociază Luna cu Prețul pentru vânzările de dovleci par să aibă o corelație mare sau mică, conform interpretării tale vizuale a scatterplotului? Se modifică răspunsul dacă folosești o măsură mai detaliată în loc de `Month`, de exemplu *ziua anului* (adică numărul de zile de la începutul anului)? -În codul de mai jos, vom presupune că am curățat datele și am obținut un DataFrame numit `new_pumpkins`, similar cu următorul: +În codul de mai jos, vom presupune că am curățat datele și am obținut un data frame numit `new_pumpkins`, similar cu următorul: -ID | Lună | ZiDinAn | Varietate | Oraș | Ambalaj | Preț Minim | Preț Maxim | Preț +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | TIP PENTRU PLĂCINTĂ | BALTIMORE | cutii de 1 1/9 bushel | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | TIP PENTRU PLĂCINTĂ | BALTIMORE | cutii de 1 1/9 bushel | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | TIP PENTRU PLĂCINTĂ | BALTIMORE | cutii de 1 1/9 bushel | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | TIP PENTRU PLĂCINTĂ | BALTIMORE | cutii de 1 1/9 bushel | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | TIP PENTRU PLĂCINTĂ | BALTIMORE | cutii de 1 1/9 bushel | 15.0 | 15.0 | 13.636364 +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Codul pentru curățarea datelor este disponibil în [`notebook.ipynb`](notebook.ipynb). Am efectuat aceiași pași de curățare ca în lecția anterioară și am calculat coloana `DayOfYear` folosind expresia următoare: +> Codul pentru curățarea datelor este disponibil în [`notebook.ipynb`](notebook.ipynb). Am efectuat aceiași pași de curățare ca în lecția precedentă și am calculat coloana `DayOfYear` folosind expresia următoare: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Acum că aveți o înțelegere a matematicii din spatele regresiei liniare, să creăm un model de regresie pentru a vedea dacă putem prezice care ambalaj de dovleci va avea cele mai bune prețuri. Cineva care cumpără dovleci pentru o copertină specială pentru sărbători ar putea dori aceste informații pentru a-și optimiza achizițiile de pachete de dovleci pentru acea copertină. +Acum că ai o înțelegere a matematicii din spatele regresiei liniare, să creăm un model de Regresie ca să vedem dacă putem prezice care pachet de dovleci va avea cele mai bune prețuri. Cineva care cumpără dovleci pentru un patch de dovleci de sărbători ar vrea aceste informații pentru a-și optimiza achizițiile. -## Căutarea corelației +## Căutând Corelații [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Faceți click pe imaginea de mai sus pentru un scurt videoclip despre corelație. +> 🎥 Apasă pe imaginea de mai sus pentru un scurt videoclip despre corelație. -Din lecția anterioară probabil ați văzut că prețul mediu pentru diferite luni arată astfel: +Din lecția anterioară probabil ai văzut că prețul mediu pentru diferite luni arată așa: Average price by month -Acest lucru sugerează că ar trebui să existe o corelație și putem încerca să antrenăm un model de regresie liniară pentru a prezice relația dintre `Lună` și `Preț`, sau între `ZiDinAn` și `Preț`. Iată graficul de dispersie care arată ultima relație: +Acest lucru sugerează că ar trebui să existe o corelație și putem încerca să antrenăm un model de regresie liniară pentru a prezice relația dintre `Month` și `Price`, sau dintre `DayOfYear` și `Price`. Iată graficul scatter care arată relația din urmă: Scatter plot of Price vs. Day of Year @@ -130,7 +130,7 @@ print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Se pare că corelația este destul de mică, -0.15 folosind `Month` și -0.17 folosind `DayOfMonth`, dar ar putea exista o altă relație importantă. Se pare că există grupuri diferite de prețuri care corespund diferitelor varietăți de dovleci. Pentru a confirma această ipoteză, să afișăm fiecare categorie de dovleci folosind o culoare diferită. Prin trecerea unui parametru `ax` funcției de plotare `scatter` putem afișa toate punctele pe același grafic: +Se pare că corelația este destul de mică, -0.15 pentru `Month` și -0.17 pentru `DayOfYear`, dar ar putea exista o altă relație importantă. Se pare că există diferite clustere de prețuri corespunzătoare unor varietăți diferite de dovleci. Ca să confirmăm această ipoteză, să afișăm fiecare categorie de dovleac cu o culoare diferită. Prin adăugarea unui parametru `ax` în funcția `scatter` putem desena toate punctele pe același grafic: ```python ax=None @@ -142,7 +142,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): Scatter plot of Price vs. Day of Year -Investigația noastră sugerează că varietatea are mai mult efect asupra prețului general decât data efectivă de vânzare. Putem observa acest lucru cu un grafic cu bare: +Investigația noastră sugerează că varietatea are un efect mai mare asupra prețului total decât data vânzării. Putem vedea asta și pe un grafic bara: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') @@ -150,7 +150,7 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') Bar graph of price vs variety -Să ne concentrăm pentru moment doar pe o varietate de dovleac, „tip plăcintă”, și să vedem ce efect are data asupra prețului: +Să ne concentrăm pentru moment doar pe o singură varietate de dovleci, tipul 'pie', și să vedem ce efect are data asupra prețului: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,22 +158,22 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -Dacă acum calculăm corelația între `Price` și `DayOfYear` folosind funcția `corr`, vom obține ceva în jur de `-0.27` - ceea ce înseamnă că antrenarea unui model predictiv are sens. +Dacă acum calculăm corelația dintre `Price` și `DayOfYear` folosind funcția `corr`, vom obține ceva de genul `-0.27` - ceea ce înseamnă că are sens să antrenăm un model predictiv. -> Înainte de a antrena un model de regresie liniară, este important să ne asigurăm că datele noastre sunt curate. Regresia liniară nu funcționează bine cu valori lipsă, astfel că are sens să eliminăm toate celulele goale: +> Înainte de a antrena un model de regresie liniară, este important să ne asigurăm că datele noastre sunt curate. Regresia liniară nu funcționează bine cu valori lipsă, deci este logic să eliminăm toate celulele goale: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -O altă abordare ar fi să completăm acele valori goale cu valorile medii din coloana corespunzătoare. +O altă abordare ar fi să completăm acele valori goale cu valori medii din coloana corespunzătoare. -## Regresie liniară simplă +## Regresie Liniară Simplă [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Faceți click pe imaginea de mai sus pentru un scurt videoclip despre regresia liniară și polinomială. +> 🎥 Apasă pe imaginea de mai sus pentru un scurt videoclip despre regresia liniară și polinomială. Pentru a antrena modelul nostru de regresie liniară, vom folosi biblioteca **Scikit-learn**. @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Începem prin separarea valorilor de intrare (caracteristici) și a ieșirii așteptate (eticheta) în array-uri numpy separate: +Începem prin a separa valorile de intrare (caracteristicile) și ieșirea așteptată (eticheta) în matrice numpy separate: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Observați că a fost necesar să facem `reshape` pe datele de intrare pentru ca pachetul de Regresie Liniară să înțeleagă corect datele. Regresia liniară așteaptă un array 2D ca intrare, unde fiecare rând al array-ului corespunde unui vector de caracteristici. În cazul nostru, pentru că avem o singură intrare - avem nevoie de un array cu forma N×1, unde N este dimensiunea setului de date. +> Observă că a trebuit să facem `reshape` asupra datelor de intrare pentru ca pachetul de Regresie Liniară să le înțeleagă corect. Regresia Liniară așteaptă o matrice 2D ca intrare, unde fiecare rând al matricei corespunde unui vector de caracteristici de intrare. În cazul nostru, pentru că avem o singură intrare, avem nevoie de o matrice cu forma N×1, unde N este dimensiunea datasetului. -Apoi, trebuie să împărțim datele în seturi de antrenament și de test, astfel încât să putem valida modelul după antrenare: +Apoi, trebuie să împărțim datele în seturi de antrenare și test, pentru a putea valida modelul după antrenare: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -În final, antrenarea propriu-zisă a modelului de regresie liniară durează doar două linii de cod. Definim obiectul `LinearRegression`, și îl ajustăm la datele noastre folosind metoda `fit`: +În final, antrenarea modelului efectiv de Regresie Liniară ia doar două linii de cod. Definim obiectul `LinearRegression` și îl potrivim pe date utilizând metoda `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Obiectul `LinearRegression` după ce a fost `fit`-at conține toți coeficienții regresiei, care pot fi accesati folosind proprietatea `.coef_`. În cazul nostru, există un singur coeficient, care ar trebui să fie în jur de `-0.017`. Aceasta înseamnă că prețurile par să scadă puțin în timp, dar nu prea mult, în jur de 2 cenți pe zi. Putem, de asemenea, să accesăm punctul de intersecție al regresiei cu axa Y folosind `lin_reg.intercept_` - acesta va fi în jur de `21` în cazul nostru, indicând prețul la începutul anului. +Obiectul `LinearRegression` după ce a fost `fit`-at conține toți coeficienții regresiei, care pot fi accesati folosind proprietatea `.coef_`. În cazul nostru, există doar un coeficient, care ar trebui să fie în jur de `-0.017`. Asta înseamnă că prețurile par să scadă puțin în timp, dar nu prea mult, în jur de 2 cenți pe zi. Putem accesa și punctul de intersecție al regresiei cu axa Y folosind `lin_reg.intercept_` - acesta va fi în jur de `21` în cazul nostru, indicând prețul la începutul anului. -Pentru a vedea cât de precis este modelul nostru, putem prezice prețurile pe un set de date de testare și apoi măsura cât de apropiate sunt predicțiile noastre de valorile așteptate. Acest lucru se poate face folosind metrici de eroare pătratică medie rădăcină (RMSE), care este rădăcina mediei tuturor diferențelor pătratice între valoarea așteptată și cea prezisă. +Pentru a vedea cât de precis este modelul nostru, putem prezice prețurile pe un set de date de test și apoi măsura cât de aproape sunt predicțiile noastre de valorile așteptate. Acest lucru poate fi făcut folosind metrica eroarea pătratică medie rădăcină (RMSE), care este rădăcina mediei tuturor diferențelor pătrate dintre valorile așteptate și cele prezise. ```python pred = lin_reg.predict(X_test) @@ -216,13 +216,13 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Eroarea noastră pare să fie în jur de 2 puncte, ceea ce este ~17%. Nu foarte bine. Un alt indicator al calității modelului este **coeficientul de determinare**, care poate fi obținut astfel: +Eroarea noastră pare să fie în jur de 2 puncte, ceea ce reprezintă aproximativ ~17%. Nu foarte bine. Un alt indicator al calității modelului este **coeficientul de determinare**, care poate fi obținut astfel: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Dacă valoarea este 0, înseamnă că modelul nu ia în considerare datele de intrare și acționează ca *cel mai slab predictor liniar*, care este pur și simplu valoarea medie a rezultatului. Valoarea 1 înseamnă că putem prezice perfect toate ieșirile așteptate. În cazul nostru, coeficientul este în jur de 0.06, ceea ce este destul de mic. +Dacă valoarea este 0, înseamnă că modelul nu ia în considerare datele de intrare și acționează ca *cel mai slab predictor liniar*, adică un simplu mediu al rezultatelor. Valoarea 1 înseamnă că putem prezice perfect toate valorile așteptate. În cazul nostru, coeficientul este în jur de 0.06, ceea ce este destul de scăzut. Putem, de asemenea, să reprezentăm grafic datele de test împreună cu linia de regresie pentru a vedea mai bine cum funcționează regresia în cazul nostru: @@ -231,21 +231,21 @@ plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` -Linear regression +Regresie liniară -## Regresie Polinomială +## Regresie polinomială -Un alt tip de Regresie Liniară este Regresia Polinomială. Deși uneori există o relație liniară între variabile - cu cât dovleacul are un volum mai mare, cu atât prețul este mai mare - uneori aceste relații nu pot fi reprezentate ca un plan sau o linie dreaptă. +Un alt tip de Regresie Liniară este Regresia Polinomială. Deși uneori există o relație liniară între variabile - cu cât dovleacul este mai mare ca volum, cu atât prețul este mai mare - uneori aceste relații nu pot fi reprezentate printr-o plană sau o linie dreaptă. -✅ Iată [câteva exemple suplimentare](https://online.stat.psu.edu/stat501/lesson/9/9.8) de date pentru care s-ar putea folosi Regresia Polinomială +✅ Iată [câteva exemple în plus](https://online.stat.psu.edu/stat501/lesson/9/9.8) de date care pot folosi Regresia Polinomială -Uită-te din nou la relația dintre Data și Preț. Se pare că acest scatterplot ar trebui neapărat analizat cu o linie dreaptă? Nu pot prețurile să fluctueze? În acest caz, poți încerca regresia polinomială. +Priviți din nou relația dintre Data și Preț. Acest diagramă de dispersie pare că trebuie neapărat să fie analizată printr-o linie dreaptă? Nu pot prețurile să fluctueze? În acest caz, puteți încerca regresia polinomială. ✅ Polinoamele sunt expresii matematice care pot consta din una sau mai multe variabile și coeficienți -Regresia polinomială creează o curbă pentru a se potrivi mai bine datelor neliniare. În cazul nostru, dacă includem o variabilă `DayOfYear` la pătrat în datele de intrare, ar trebui să putem potrivi datele noastre cu o curbă parabolică, care va avea un minim într-un anumit punct al anului. +Regresia polinomială creează o curbă pentru a se potrivi mai bine datelor neliniare. În cazul nostru, dacă includem o variabilă `DayOfYear` la pătrat în datele de intrare, ar trebui să putem potrivi datele cu o curbă parabolică, care va avea un minim într-un anumit punct din an. -Scikit-learn include un API util [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) pentru a combina împreună diferitele etape ale procesării datelor. Un **pipeline** este un lanț de **estimatori**. În cazul nostru, vom crea un pipeline care mai întâi adaugă caracteristici polinomiale modelului nostru, apoi antrenează regresia: +Scikit-learn include un API util [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) pentru a combina diferitele etape de procesare a datelor împreună. Un **pipeline** este un lanț de **estimatori**. În cazul nostru, vom crea un pipeline care adaugă mai întâi caracteristici polinomiale modelului, apoi antrenează regresia: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Folosind `PolynomialFeatures(2)` înseamnă că vom include toate polinoamele de gradul al doilea din datele de intrare. În cazul nostru, aceasta va însemna doar `DayOfYear`2, dar dat fiind două variabile de intrare X și Y, aceasta va adăuga X2, XY și Y2. Putem folosi, de asemenea, polinoame de grad mai mare dacă dorim. +Folosind `PolynomialFeatures(2)` înseamnă că vom include toți polinomii de gradul al doilea din datele de intrare. În cazul nostru, asta va însemna doar `DayOfYear`2, dar având două variabile de intrare X și Y, se vor adăuga X2, XY și Y2. Putem folosi și polinoame de grad mai mare dacă dorim. -Pipeline-urile pot fi folosite în același mod ca obiectul original `LinearRegression`, adică putem face `fit` pe pipeline, apoi folosi `predict` pentru a obține rezultatele predicției. Iată graficul care arată datele de test și curba de aproximare: +Pipeline-urile pot fi folosite în același mod ca obiectul original `LinearRegression`, adică putem `fit` pipeline-ul și apoi folosi `predict` pentru a obține rezultatele predicției: -Polynomial regression +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Pentru a reprezenta grafic curba de aproximare netedă, folosim `np.linspace` pentru a crea un interval uniform de valori de intrare, în loc să reprezentăm direct datele nesortate de test (care ar produce o linie zigzag): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Iată graficul care arată datele de test și curba de aproximare: + +Regresie polinomială -Folosind Regresia Polinomială, putem obține un MSE ușor mai mic și un coeficient de determinare mai mare, dar nu semnificativ. Trebuie să luăm în considerare și alte caracteristici! +Folosind Regresie Polinomială, putem obține o eroare RMSE ușor mai mică și un coeficient de determinare mai mare, însă nu semnificativ. Trebuie să luăm în calcul și alte caracteristici! -> Poți vedea că prețurile minime ale dovlecilor sunt observate undeva în jurul Halloween-ului. Cum poți explica asta? +> Se observă că prețurile minime ale dovlecilor se găsesc în jurul Halloween-ului. Cum explicați acest lucru? -🎃 Felicitări, ai creat un model care te poate ajuta să prezici prețul dovlecilor pentru plăcintă. Probabil că poți repeta aceeași procedură pentru toate tipurile de dovleci, dar ar fi obositor. Hai să învățăm acum cum să luăm în considerare varietatea de dovleci în modelul nostru! +🎃 Felicitări, tocmai ați creat un model care poate ajuta la predicția prețului pentru dovlecii de placintă. Probabil puteți repeta aceeași procedură pentru toate tipurile de dovleci, dar ar fi obositor. Haideți să învățăm acum cum să luăm în considerare soiul dovleacului în modelul nostru! -## Caracteristici Categorice +## Caracteristici categorice -În lumea ideală, vrem să putem prezice prețurile pentru diferite varietăți de dovleci folosind același model. Totuși, coloana `Variety` este oarecum diferită față de coloane precum `Month`, pentru că conține valori nenumerice. Astfel de coloane sunt numite **categorice**. +În lumea ideală, vrem să putem prezice prețurile pentru diferite soiuri de dovleac folosind același model. Totuși, coloana `Variety` este puțin diferită față de coloane precum `Month`, deoarece conține valori non-numerice. Astfel de coloane se numesc **categorice**. -[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![ML pentru începători - Predicții pentru caracteristici categorice folosind regresia liniară](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML pentru începători - Predicții pentru caracteristici categorice folosind regresia liniară") -> 🎥 Apasă pe imaginea de mai sus pentru un scurt videoclip despre folosirea caracteristicilor categorice. +> 🎥 Click pe imaginea de mai sus pentru un scurt video despre folosirea caracteristicilor categorice. -Aici poți vedea cum depinde prețul mediu de varietate: +Aici vedeți cum prețul mediu depinde de soi: -Average price by variety +Preț mediu în funcție de soi -Pentru a lua în considerare varietatea, trebuie mai întâi să o convertim în formă numerică, sau să o **encodăm**. Există mai multe moduri în care putem face asta: +Pentru a lua în calcul soiul, mai întâi trebuie să îl convertim în formă numerică sau să îl **encodăm**. Există mai multe metode prin care putem face asta: -* Encodarea numerică simplă construită o tabelă cu diferite varietăți, apoi înlocuiește numele varietății cu un indice în acea tabelă. Aceasta nu este o idee bună pentru regresia liniară, deoarece regresia liniară ia valoarea numerică reală a indicelui și o adaugă la rezultat, înmulțind cu un coeficient. În cazul nostru, relația dintre numărul indicelui și preț este clar neliniară, chiar dacă ne asigurăm că indicii sunt ordonați într-un anumit mod. -* Encodarea one-hot va înlocui coloana `Variety` cu 4 coloane diferite, câte una pentru fiecare varietate. Fiecare coloană va conține `1` dacă rândul respectiv aparține acestei varietăți și `0` altfel. Aceasta înseamnă că vor exista patru coeficienți în regresia liniară, câte unul pentru fiecare varietate de dovleac, responsabili pentru "prețul de pornire" (sau mai bine zis "prețul suplimentar") pentru acea varietate anume. +* Simplul **cod numeric** va construi un tabel cu diferite soiuri, apoi va înlocui numele soiului cu un index în acel tabel. Aceasta nu este cea mai bună idee pentru regresia liniară, deoarece regresia liniară ia valoarea numerică efectivă a indexului și o adaugă la rezultat, multiplicând cu un coeficient. În cazul nostru, relația dintre numărul indexului și preț este clar neliniară, chiar dacă ne asigurăm că indicii sunt ordonați într-un anume mod. +* **One-hot encoding** va înlocui coloana `Variety` cu 4 coloane diferite, câte una pentru fiecare soi. Fiecare coloană va conține `1` dacă rândul corespunzător e dintr-un anumit soi, și `0` altfel. Aceasta înseamnă că vor exista patru coeficienți în regresia liniară, câte unul pentru fiecare soi de dovleac, care răspund pentru "prețul de pornire" (sau mai bine zis "prețul suplimentar") pentru acel soi particular. -Codul de mai jos arată cum putem face one-hot encoding pentru o varietate: +Codul de mai jos arată cum putem face one-hot encoding pentru un soi: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Pentru a antrena regresia liniară folosind varietatea encodată one-hot ca intrare, trebuie doar să inițializăm corect datele `X` și `y`: +Pentru a antrena regresia liniară folosind variabila codificată one-hot ca intrare, trebuie doar să inițializăm corect datele `X` și `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Restul codului este la fel ca cel folosit mai sus pentru antrenarea regresiei liniare. Dacă încerci, vei vedea că eroarea pătratică medie este cam la fel, dar coeficientul de determinare crește mult (~77%). Pentru a obține predicții și mai precise, putem lua în considerare mai multe caracteristici categorice, precum și caracteristici numerice, cum ar fi `Month` sau `DayOfYear`. Pentru a obține un singur tablou mare de caracteristici, putem folosi `join`: +Restul codului este același pe care l-am folosit mai sus pentru antrenarea regresiei liniare. Dacă încercați, veți vedea că eroarea pătratică medie este aproximativ aceeași, dar coeficientul de determinare este mult mai mare (~77%). Pentru predicții și mai precise, putem lua în calcul mai multe caracteristici categorice, precum și caracteristici numerice, cum ar fi `Month` sau `DayOfYear`. Pentru a obține un singur array mare de caracteristici, putem folosi `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Aici luăm în considerare și `City` și tipul de `Package`, ceea ce ne oferă un MSE de 2.84 (10%) și un coeficient de determinare de 0.94! +Aici luăm în considerare și `City` și tipul `Package`, ceea ce ne oferă RMSE 2.84 (10.5%) și determinare 0.94! ## Punând totul cap la cap -Pentru a face cel mai bun model, putem folosi date combinate (categorice one-hot encode + numerice) din exemplul de mai sus împreună cu Regresia Polinomială. Iată codul complet pentru confortul tău: +Pentru a face cel mai bun model, putem folosi date combinate (categorice codificate one-hot + numerice) din exemplul de mai sus împreună cu regresia polinomială. Iată codul complet pentru comoditatea dvs.: ```python # configurează datele de antrenament @@ -333,54 +355,54 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# realizează împărțirea în seturi de antrenament și test +# realizează împărțirea antrenament-test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# configurează și antrenează pipeline-ul +# configurează și antrenează fluxul de procesare pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # prezice rezultatele pentru datele de test pred = pipeline.predict(X_test) -# calculează MSE și coeficientul de determinare -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calculează RMSE și coeficientul de determinare +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Aceasta ne va da cel mai bun coeficient de determinare de aproape 97%, și MSE=2.23 (~8% eroare de predicție). +Acest model ar trebui să ne dea cel mai bun coeficient de determinare de aproape 97% și RMSE=2.23 (~8% eroare de predicție). -| Model | MSE | Determinarea | -|-------|-----|--------------| -| Liniară `DayOfYear` | 2.77 (17.2%) | 0.07 | -| Polinomială `DayOfYear` | 2.73 (17.0%) | 0.08 | -| Liniară `Variety` | 5.24 (19.7%) | 0.77 | -| Toate caracteristicile Liniară | 2.84 (10.5%) | 0.94 | -| Toate caracteristicile Polinomială | 2.23 (8.25%) | 0.97 | +| Model | RMSE | Determinare | +|-------|-----|-------------| +| `DayOfYear` Liniar | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polinomial | 2.73 (17.0%) | 0.08 | +| `Variety` Liniar | 5.24 (19.7%) | 0.77 | +| Toate caracteristicile Liniar | 2.84 (10.5%) | 0.94 | +| Toate caracteristicile Polinomial | 2.23 (8.25%) | 0.97 | -🏆 Foarte bine! Ai creat patru modele de regresie într-o lecție și ai îmbunătățit calitatea modelului la 97%. În secțiunea finală despre Regresie, vei învăța despre Regresia Logistică pentru clasificare. +🏆 Bravo! Ați creat patru modele de regresie într-o singură lecție și ați îmbunătățit calitatea modelului la 97%. În secțiunea finală despre regresie, veți învăța despre regresia logistică pentru determinarea categoriilor. --- ## 🚀Provocare -Testează mai multe variabile diferite în acest notebook pentru a vedea cum corespunde corelația cu acuratețea modelului. +Testați mai multe variabile diferite în acest notebook pentru a vedea cum corelația corespunde acurateții modelului. -## [Chestionar post-lectură](https://ff-quizzes.netlify.app/en/ml/) +## [Chestionar după lecție](https://ff-quizzes.netlify.app/en/ml/) -## Recenzie & Studiu individual +## Recapitulare și Auto-studiu -În această lecție am învățat despre Regresia Liniară. Există și alte tipuri importante de regresie. Citește despre tehnicile Stepwise, Ridge, Lasso și Elasticnet. Un curs bun pentru a învăța mai multe este [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +În această lecție am învățat despre regresia liniară. Există și alte tipuri importante de regresie. Citiți despre tehnicile Stepwise, Ridge, Lasso și Elasticnet. Un curs bun de studiat pentru a învăța mai mult este [cursul de Învățare Statistică de la Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Temă +## Tema -[Construiește un Model](assignment.md) +[Construiți un model](assignment.md) --- **Declinare a responsabilității**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite rezultate din utilizarea acestei traduceri. +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim pentru acuratețe, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm nicio responsabilitate pentru eventualele neînțelegeri sau interpretări greșite care pot rezulta din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ro/2-Regression/3-Linear/solution/notebook.ipynb index 751abe6984..283be21825 100644 --- a/translations/ro/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ro/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Regresie Liniară și Polinomială pentru Stabilirea Prețului Dovlecilor - Lecția 3\n", + "## Regresie liniară și polinomială pentru stabilirea prețului dovleacului - Lecția 3\n", "\n", - "Încarcă bibliotecile necesare și setul de date. Transformă datele într-un dataframe care conține un subset al datelor:\n", + "Încarcă bibliotecile și setul de date necesare. Convertește datele într-un dataframe care conține un subset din date:\n", "\n", - "- Selectează doar dovlecii cu preț stabilit pe bușel\n", + "- Obține doar dovlecii prețați pe sac\n", "- Convertește data într-o lună\n", - "- Calculează prețul ca fiind media dintre prețurile maxime și minime\n", - "- Convertește prețul pentru a reflecta prețul pe cantitatea de bușel\n" + "- Calculează prețul ca fiind o medie între prețurile maxime și minime\n", + "- Convertește prețul pentru a reflecta prețul pe cantitatea de sac\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Un grafic de tip scatterplot ne amintește că avem date lunare doar din august până în decembrie. Probabil avem nevoie de mai multe date pentru a putea trage concluzii într-un mod liniar.\n" + "Un diagramă de dispersie ne amintește că avem date doar din lunile august până în decembrie. Probabil că avem nevoie de mai multe date pentru a putea trage concluzii într-un mod liniar.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Să vedem dacă există corelație:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Se pare că corelația este destul de mică, dar există o altă relație mai importantă - deoarece punctele de preț din graficul de mai sus par să formeze mai multe clustere distincte. Să facem un grafic care să arate diferitele soiuri de dovleac:\n" + "Se pare că corelația este destul de mică, dar există o altă relație mai importantă - deoarece punctele de preț din graficul de mai sus par să aibă mai multe clustere distincte. Hai să facem un grafic care să arate diferite soiuri de dovleci:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Pentru moment, să ne concentrăm doar pe un singur tip - **tip plăcintă**.\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresie Liniară\n", + "### Regressie liniară\n", "\n", - "Vom folosi Scikit Learn pentru a antrena un model de regresie liniară:\n" + "Vom folosi Scikit Learn pentru a antrena modelul de regresie liniară:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Putem folosi modelul antrenat pentru a prezice prețul:\n" + ] }, { "cell_type": "code", @@ -716,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresie Polinomială\n", + "### Regressie polinomială\n", "\n", - "Uneori, relația dintre caracteristici și rezultate este în mod inerent non-lineară. De exemplu, prețurile dovlecilor pot fi ridicate iarna (luni=1,2), apoi scad vara (luni=5-7) și cresc din nou. Regresia liniară nu poate identifica această relație cu acuratețe.\n", + "Uneori relația dintre caracteristici și rezultate este în mod inerent neliniară. De exemplu, prețurile dovlecilor pot fi ridicate iarna (luni=1,2), apoi scad pe timpul verii (luni=5-7), după care cresc din nou. Regressia liniară nu poate identifica această relație cu precizie.\n", "\n", - "În acest caz, putem lua în considerare adăugarea de caracteristici suplimentare. O metodă simplă este utilizarea polinoamelor din caracteristicile de intrare, ceea ce ar duce la **regresia polinomială**. În Scikit Learn, putem pre-computa automat caracteristicile polinomiale folosind pipeline-uri:\n" + "În acest caz, putem lua în considerare adăugarea de caracteristici suplimentare. Modul simplu este să folosim polinoame din caracteristicile de intrare, ceea ce ar conduce la o **regresie polinomială**. În Scikit Learn, putem pre-calcula automat caracteristicile polinomiale folosind pipeline-uri: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Codificarea soiurilor\n", + "### Varietăți de codificare\n", "\n", - "Într-o lume ideală, ne dorim să putem prezice prețurile pentru diferite soiuri de dovleci folosind același model. Pentru a ține cont de soi, mai întâi trebuie să îl convertim într-o formă numerică, sau să îl **codificăm**. Există mai multe moduri în care putem face acest lucru:\n", + "În lumea ideală, dorim să putem prezice prețurile pentru diferite soiuri de dovleac folosind același model. Pentru a lua în considerare soiul, trebuie mai întâi să-l convertim în formă numerică, adică să îl **codificăm**. Există mai multe moduri în care putem face acest lucru:\n", "\n", - "* Codificare numerică simplă, care va construi un tabel cu diferite soiuri, apoi va înlocui numele soiului cu un index din acel tabel. Aceasta nu este cea mai bună idee pentru regresia liniară, deoarece regresia liniară ia în considerare valoarea numerică a indexului, iar valoarea numerică este probabil să nu coreleze numeric cu prețul.\n", - "* Codificare one-hot, care va înlocui coloana `Variety` cu 4 coloane diferite, câte una pentru fiecare soi, care vor conține 1 dacă rândul corespunzător este din soiul respectiv și 0 în caz contrar.\n", + "* Codificarea numerică simplă, care va construi un tabel al diferitelor soiuri, apoi va înlocui numele soiului cu un indice în acel tabel. Aceasta nu este cea mai bună idee pentru regresia liniară, deoarece regresia liniară are în vedere valoarea numerică a indicelui, iar valoarea numerică probabil nu corelează numeric cu prețul.\n", + "* Codificarea one-hot, care va înlocui coloana `Variety` cu 4 coloane diferite, câte una pentru fiecare soi, care vor conține 1 dacă rândul corespunzător este din soiul respectiv și 0 în caz contrar.\n", "\n", - "Codul de mai jos arată cum putem codifica one-hot un soi:\n" + "Codul de mai jos arată cum putem face codificarea one-hot a unui soi:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresie Liniară pe Varietate\n", + "### Regresia liniară pe soiuri\n", "\n", - "Vom folosi acum același cod ca mai sus, dar în loc de `DayOfYear` vom utiliza varietatea noastră codificată one-hot ca intrare:\n" + "Acum vom folosi același cod ca mai sus, dar în loc de `DayOfYear` vom folosi soiul nostru codificat one-hot ca intrare:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Putem încerca, de asemenea, să folosim alte caracteristici în același mod și să le combinăm cu caracteristici numerice, cum ar fi `Month` sau `DayOfYear`:\n" + "Putem încerca, de asemenea, să folosim și alte caracteristici în același mod și să le combinăm cu caracteristici numerice, cum ar fi `Month` sau `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Regresie Polinomială\n", "\n", - "Regresia polinomială poate fi utilizată și cu caracteristici categorice care sunt codificate one-hot. Codul pentru antrenarea regresiei polinomiale ar fi, în esență, același cu cel pe care l-am văzut mai sus.\n" + "Regresia polinomială poate fi utilizată și cu caracteristici categorice care sunt codificate one-hot. Codul pentru antrenarea regresiei polinomiale ar fi practic același cu cel pe care l-am văzut mai sus.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Declinarea responsabilității**: \nAcest document a fost tradus utilizând serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși depunem eforturi pentru a asigura acuratețea, vă rugăm să aveți în vedere că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.\n" + "---\n\n\n**Declinare a responsabilității**: \nAcest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim pentru acuratețe, vă rugăm să aveți în vedere că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot rezulta din utilizarea acestei traduceri.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T11:31:55+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ro" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sk/.co-op-translator.json b/translations/sk/.co-op-translator.json index 1eb42f65fc..29ae54a5ce 100644 --- a/translations/sk/.co-op-translator.json +++ b/translations/sk/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "sk" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T16:04:10+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:08:51+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "sk" }, @@ -90,8 +90,8 @@ "language_code": "sk" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:32:38+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:08:20+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "sk" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "sk" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:06:22+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "sk" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T15:16:31+00:00", diff --git a/translations/sk/1-Introduction/4-techniques-of-ML/README.md b/translations/sk/1-Introduction/4-techniques-of-ML/README.md index 819ac097ed..e16072b6e4 100644 --- a/translations/sk/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/sk/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Techniky strojového učenia -Proces vytvárania, používania a udržiavania modelov strojového učenia a dát, ktoré používajú, je veľmi odlišný od mnohých iných vývojových pracovných postupov. V tejto lekcii tento proces objasníme a načrtneme hlavné techniky, ktoré potrebujete poznať. Naučíte sa: +Proces tvorby, používania a údržby modelov strojového učenia a dát, ktoré používajú, je veľmi odlišný od mnohých iných vývojových pracovných tokov. V tejto lekcii demystifikujeme tento proces a načrtneme hlavné techniky, ktoré potrebujete poznať. Naučíte sa: -- Pochopiť procesy, ktoré sú základom strojového učenia na vysokej úrovni. -- Preskúmať základné koncepty, ako sú „modely“, „predikcie“ a „tréningové dáta“. +- Pochopiť procesy, ktoré stoja za strojovým učením na vysokej úrovni. +- Preskúmať základné pojmy ako „modely“, „predikcie“ a „tréningové dáta“. -## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) +## [Prednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) -[![ML pre začiatočníkov - Techniky strojového učenia](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML pre začiatočníkov - Techniky strojového učenia") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Kliknite na obrázok vyššie pre krátke video, ktoré prechádza touto lekciou. +> 🎥 Kliknite na obrázok vyššie pre krátke video k tejto lekcii. ## Úvod -Na vysokej úrovni sa remeslo vytvárania procesov strojového učenia (ML) skladá z niekoľkých krokov: +Na vysokej úrovni je remeslo tvorby procesov strojového učenia (ML) zložené z niekoľkých krokov: -1. **Určte otázku**. Väčšina procesov ML začína položením otázky, na ktorú nemožno odpovedať jednoduchým podmieneným programom alebo pravidlovo založeným enginom. Tieto otázky sa často týkajú predikcií na základe zbierky dát. -2. **Zbierajte a pripravte dáta**. Aby ste mohli odpovedať na svoju otázku, potrebujete dáta. Kvalita a niekedy aj množstvo vašich dát určí, ako dobre dokážete odpovedať na svoju pôvodnú otázku. Vizualizácia dát je dôležitým aspektom tejto fázy. Táto fáza zahŕňa aj rozdelenie dát na tréningovú a testovaciu skupinu na vytvorenie modelu. -3. **Vyberte metódu tréningu**. V závislosti od vašej otázky a povahy vašich dát musíte zvoliť spôsob, akým chcete model trénovať, aby čo najlepšie odrážal vaše dáta a robil presné predikcie. Táto časť procesu ML vyžaduje špecifické odborné znalosti a často značné množstvo experimentovania. -4. **Trénujte model**. Pomocou vašich tréningových dát použijete rôzne algoritmy na trénovanie modelu, aby rozpoznal vzory v dátach. Model môže využívať interné váhy, ktoré je možné upraviť tak, aby uprednostňoval určité časti dát pred inými, aby vytvoril lepší model. -5. **Vyhodnoťte model**. Použijete dáta, ktoré model nikdy predtým nevidel (vaše testovacie dáta) z vašej zbierky, aby ste zistili, ako model funguje. -6. **Ladenie parametrov**. Na základe výkonu vášho modelu môžete proces zopakovať s použitím rôznych parametrov alebo premenných, ktoré ovládajú správanie algoritmov použitých na trénovanie modelu. -7. **Predikujte**. Použite nové vstupy na testovanie presnosti vášho modelu. +1. **Rozhodnite sa o otázke**. Väčšina procesov ML začína otázkou, na ktorú nemožno odpovedať jednoduchým podmieneným programom alebo pravidlovým motorom. Tieto otázky sa často týkajú predikcií založených na zbierke dát. +2. **Zhromaždite a pripravte dáta**. Aby ste mohli odpovedať na svoju otázku, potrebujete dáta. Kvalita a niekedy aj množstvo vašich dát určí, ako dobre dokážete zodpovedať vašu pôvodnú otázku. Vizualizácia dát je dôležitým aspektom tejto fázy. Táto fáza tiež zahŕňa rozdelenie dát na tréningovú a testovaciu skupinu na vytvorenie modelu. +3. **Vyberte metódu trénovania**. V závislosti od vašej otázky a povahy vašich dát potrebujete zvoliť, ako chcete model trénovať, aby najlepšie odrážal vaše dáta a umožnil presné predikcie. Táto časť vášho ML procesu vyžaduje špecifickú odbornosť a často aj značné množstvo experimentovania. +4. **Natrénujte model**. S použitím tréningových dát použijete rôzne algoritmy na trénovanie modelu, ktorý rozpozná vzory v dátach. Model môže využívať vnútorné váhy, ktoré možno upravovať na zvýhodnenie určitých častí dát, aby sa vytvoril lepší model. +5. **Vyhodnoťte model**. Použijete nikdy predtým nevidené dáta (vaše testovacie dáta) zo zberu údajov, aby ste zistili, ako model funguje. +6. **Ladenie parametrov**. Na základe výkonnosti vášho modelu môžete proces zopakovať s rôznymi parametrami, alebo premennými, ktoré riadia správanie algoritmov používaných na trénovanie modelu. +7. **Predikcia**. Použite nové vstupy na otestovanie presnosti vášho modelu. -## Akú otázku položiť +## Akú otázku sa pýtať -Počítače sú obzvlášť zručné v objavovaní skrytých vzorov v dátach. Táto schopnosť je veľmi užitočná pre výskumníkov, ktorí majú otázky o danej oblasti, na ktoré nemožno ľahko odpovedať vytvorením pravidlovo založeného enginu. Pri aktuárskej úlohe, napríklad, by dátový vedec mohol vytvoriť ručne vytvorené pravidlá týkajúce sa úmrtnosti fajčiarov vs. nefajčiarov. +Počítače sú obzvlášť zdatné v objavovaní skrytých vzorov v dátach. Táto schopnosť je veľmi užitočná pre výskumníkov, ktorí majú otázky o danej oblasti, na ktoré sa nedá ľahko odpovedať vytvorením pravidlového motoru založeného na podmienkach. Napríklad pri aktuárskej úlohe by dátový vedec mohol zostaviť ručne tvorené pravidlá týkajúce sa úmrtnosti fajčiarov a nefajčiarov. -Keď sa však do rovnice pridá mnoho ďalších premenných, model ML môže byť efektívnejší pri predikcii budúcich úmrtnostných mier na základe minulých zdravotných záznamov. Pozitívnejším príkladom môže byť predpovedanie počasia na mesiac apríl na danom mieste na základe dát, ktoré zahŕňajú zemepisnú šírku, dĺžku, klimatické zmeny, blízkosť k oceánu, vzory prúdenia vzduchu a ďalšie. +Keď však do rovnice zapojíte mnohé ďalšie premenné, model ML môže byť efektívnejší pri predpovedaní budúcich úmrtnostných mier na základe minulých zdravotných údajov. Veselším príkladom môže byť predpoveď počasia na mesiac apríl v určitej lokalite na základe dát, ktoré zahŕňajú zemepisnú šírku, dĺžku, klimatické zmeny, blízkosť oceánu, vzory prúdenia jet streamu a ďalšie. -✅ Táto [prezentácia](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o modeloch počasia ponúka historický pohľad na používanie ML v analýze počasia. +✅ Táto [prezentačná prezentácia](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o modeloch počasia ponúka historický pohľad na použitie ML v analýze počasia. -## Úlohy pred vytvorením modelu +## Úlohy pred stavbou -Predtým, než začnete vytvárať svoj model, musíte dokončiť niekoľko úloh. Aby ste mohli otestovať svoju otázku a vytvoriť hypotézu na základe predikcií modelu, musíte identifikovať a nakonfigurovať niekoľko prvkov. +Pred začatím tvorby modelu je potrebné splniť niekoľko úloh. Aby ste otestovali svoju otázku a vytvorili hypotézu na základe predikcií modelu, musíte identifikovať a nakonfigurovať niekoľko prvkov. ### Dáta -Aby ste mohli odpovedať na svoju otázku s akoukoľvek istotou, potrebujete dostatočné množstvo dát správneho typu. V tomto bode musíte urobiť dve veci: +Aby ste mohli otázku zodpovedať s nejakou istotou, potrebujete veľké množstvo správnych dát. V tomto bode treba urobiť dve veci: -- **Zbierajte dáta**. Majte na pamäti predchádzajúcu lekciu o spravodlivosti v analýze dát a zbierajte svoje dáta opatrne. Buďte si vedomí zdrojov týchto dát, akýchkoľvek inherentných predsudkov, ktoré môžu obsahovať, a dokumentujte ich pôvod. -- **Pripravte dáta**. Proces prípravy dát zahŕňa niekoľko krokov. Možno budete musieť dáta zoskupiť a normalizovať, ak pochádzajú z rôznych zdrojov. Kvalitu a množstvo dát môžete zlepšiť rôznymi metódami, ako je konverzia reťazcov na čísla (ako to robíme v [Clustering](../../5-Clustering/1-Visualize/README.md)). Môžete tiež generovať nové dáta na základe pôvodných (ako to robíme v [Classification](../../4-Classification/1-Introduction/README.md)). Dáta môžete čistiť a upravovať (ako to robíme pred lekciou [Web App](../../3-Web-App/README.md)). Nakoniec ich možno budete musieť náhodne usporiadať a premiešať, v závislosti od vašich tréningových techník. +- **Zber dát**. V duchu predchádzajúcej lekcie o spravodlivosti v analýze dát ich zozbierajte starostlivo. Buďte si vedomí zdrojov týchto dát, akýchkoľvek vrodených predsudkov a zdokumentujte ich pôvod. +- **Príprava dát**. Proces prípravy dát zahŕňa niekoľko krokov. Možno budete musieť zlúčiť dáta a normalizovať ich, ak pochádzajú z rôznych zdrojov. Kvalitu a množstvo dát môžete vylepšiť rôznymi metódami, ako je konverzia reťazcov na čísla (ako robíme v [Zhlukovaní](../../5-Clustering/1-Visualize/README.md)). Môžete tiež generovať nové dáta na základe pôvodných (ako robíme v [Klasifikácii](../../4-Classification/1-Introduction/README.md)). Dáta môžete vyčistiť a upraviť (ako budeme robiť pred lekciou [Webová aplikácia](../../3-Web-App/README.md)). Nakoniec ich možno bude potrebné náhodne zamiešať, v závislosti od vašich tréningových techník. -✅ Po zozbieraní a spracovaní vašich dát si chvíľu overte, či ich štruktúra umožní odpovedať na vašu zamýšľanú otázku. Môže sa stať, že dáta nebudú dobre fungovať pri vašej úlohe, ako zistíme v našich lekciách [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ Po zozbieraní a spracovaní dát si urobte chvíľu na posúdenie, či ich tvar umožní odpovedať na zamýšľanú otázku. Môže sa stať, že dáta nebudú vo vašej konkretnej úlohe dobre fungovať, čo zistíme v našich lekciách o [Zhlukovaní](../../5-Clustering/1-Visualize/README.md)! -### Vlastnosti a cieľ +### Prvky a cieľ -[Vlastnosť](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je merateľná vlastnosť vašich dát. V mnohých datasetoch je vyjadrená ako nadpis stĺpca, napríklad „dátum“, „veľkosť“ alebo „farba“. Vaša premenná vlastnosti, zvyčajne reprezentovaná ako `X` v kóde, predstavuje vstupnú premennú, ktorá sa použije na trénovanie modelu. +[Prvok](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je merateľná vlastnosť vášho dátového súboru. Vo väčšine datasetov sa vyjadruje ako názov stĺpca ako 'dátum', 'veľkosť' alebo 'farba'. Vaša premenná prvku, zvyčajne reprezentovaná ako `X` v kóde, predstavuje vstupnú premennú, ktorá sa použije na trénovanie modelu. -Cieľ je vec, ktorú sa snažíte predpovedať. Cieľ, zvyčajne reprezentovaný ako `y` v kóde, predstavuje odpoveď na otázku, ktorú sa snažíte položiť vašim dátam: v decembri, aká **farba** tekvíc bude najlacnejšia? V San Franciscu, ktoré štvrte budú mať najlepšiu cenu **nehnuteľností**? Niekedy sa cieľ označuje aj ako atribút označenia. +Cieľ je vec, ktorú sa snažíte predpovedať. Cieľ, zvyčajne reprezentovaný ako `y` v kóde, predstavuje odpoveď na otázku, ktorú kladiete svojim dátam: v decembri, aká **farba** tekvíc bude najlacnejšia? v San Franciscu, ktoré štvrte budú mať najlepšiu cenu nehnuteľností (real estate) **cenu**? Niekedy sa cieľ označuje aj ako atribút štítka (label). -### Výber premenných vlastností +### Výber premenných prvkov -🎓 **Výber vlastností a extrakcia vlastností** Ako viete, ktorú premennú si vybrať pri vytváraní modelu? Pravdepodobne prejdete procesom výberu vlastností alebo extrakcie vlastností, aby ste si vybrali správne premenné pre najvýkonnejší model. Nie sú to však rovnaké veci: „Extrakcia vlastností vytvára nové vlastnosti z funkcií pôvodných vlastností, zatiaľ čo výber vlastností vracia podmnožinu vlastností.“ ([zdroj](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Výber prvkov a extrakcia prvkov** Ako viete, ktorú premennú vybrať pri tvorbe modelu? Pravdepodobne prejdete proces výberu alebo extrakcie prvkov, aby ste zvolili správne premenné pre najvýkonnejší model. Nie sú to však to isté: „Extrakcia prvkov vytvára nové prvky z funkcií pôvodných prvkov, zatiaľ čo výber prvkov vracia podmnožinu prvkov.“ ([zdroj](https://wikipedia.org/wiki/Feature_selection)) -### Vizualizácia dát +### Vizualizujte svoje dáta -Dôležitým aspektom nástrojov dátového vedca je schopnosť vizualizovať dáta pomocou niekoľkých vynikajúcich knižníc, ako sú Seaborn alebo MatPlotLib. Vizualizácia dát vám môže umožniť odhaliť skryté korelácie, ktoré môžete využiť. Vaše vizualizácie vám môžu tiež pomôcť odhaliť predsudky alebo nevyvážené dáta (ako zistíme v [Classification](../../4-Classification/2-Classifiers-1/README.md)). +Dôležitým aspektom nástroja dátového vedca je schopnosť vizualizovať dáta pomocou niekoľkých vynikajúcich knižníc, ako sú Seaborn alebo MatPlotLib. Vizualizácia dát vám môže umožniť objaviť skryté korelácie, ktoré môžete využiť. Vaše vizualizácie vám môžu tiež pomôcť odhaliť zaujatosti alebo nevyvážené dáta (čo zistíme v [Klasifikácii](../../4-Classification/2-Classifiers-1/README.md)). -### Rozdelenie datasetu +### Rozdeľte svoj dataset -Pred tréningom musíte rozdeliť svoj dataset na dve alebo viac častí nerovnakej veľkosti, ktoré stále dobre reprezentujú dáta. +Pred trénovaním musíte rozdeliť svoj dataset na dve alebo viac nerovnakých častí, ktoré stále dobre reprezentujú dáta. -- **Tréning**. Táto časť datasetu sa prispôsobí vášmu modelu, aby ho trénovala. Táto sada tvorí väčšinu pôvodného datasetu. -- **Testovanie**. Testovací dataset je nezávislá skupina dát, často získaná z pôvodných dát, ktorú použijete na potvrdenie výkonu vytvoreného modelu. -- **Validácia**. Validačná sada je menšia nezávislá skupina príkladov, ktorú použijete na ladenie hyperparametrov modelu alebo jeho architektúry, aby ste model zlepšili. V závislosti od veľkosti vašich dát a otázky, ktorú kladiete, možno nebudete musieť vytvoriť túto tretiu sadu (ako poznamenávame v [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Tréning**. Táto časť datasetu sa použije na trénovanie modelu. Táto skupina predstavuje väčšinu pôvodného datasetu. +- **Testovanie**. Testovacie dáta sú nezávislá skupina dát, často získavaná z pôvodných dát, ktorú používate na potvrdenie funkčnosti vybudovaného modelu. +- **Validácia**. Validačná skupina je menšia nezávislá skupina príkladov, ktorú používate na ladenie hyperparametrov modelu, alebo architektúry, na zlepšenie modelu. V závislosti od veľkosti vašich dát a otázky, ktorú kladiete, nemusíte potrebovať vytvoriť túto tretiu skupinu (ako si všímame v [Predikcii časových radov](../../7-TimeSeries/1-Introduction/README.md)). -## Vytváranie modelu +## Tvorba modelu -Pomocou vašich tréningových dát je vaším cieľom vytvoriť model, alebo štatistickú reprezentáciu vašich dát, pomocou rôznych algoritmov na **tréning**. Tréning modelu ho vystavuje dátam a umožňuje mu robiť predpoklady o vnímaných vzoroch, ktoré objaví, overí a prijme alebo odmietne. +Použitím svojich tréningových dát je vaším cieľom zostaviť model, alebo štatistickú reprezentáciu vašich dát, pomocou rôznych algoritmov na jeho **tréning**. Trénovanie modelu znamená vystaviť ho dátam a umožniť mu robiť predpoklady o vnímaných vzoroch, ktoré objaví, overí a prijme alebo odmietne. -### Rozhodnite sa pre metódu tréningu +### Rozhodnúť sa o metóde trénovania -V závislosti od vašej otázky a povahy vašich dát si vyberiete metódu na ich tréning. Prechádzajúc [dokumentáciou Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - ktorú používame v tomto kurze - môžete preskúmať mnoho spôsobov, ako trénovať model. V závislosti od vašich skúseností možno budete musieť vyskúšať niekoľko rôznych metód, aby ste vytvorili najlepší model. Pravdepodobne prejdete procesom, pri ktorom dátoví vedci hodnotia výkon modelu tým, že mu poskytnú nevidené dáta, kontrolujú presnosť, predsudky a ďalšie problémy znižujúce kvalitu a vyberajú najvhodnejšiu metódu tréningu pre danú úlohu. +V závislosti od vašej otázky a povahy vašich dát si vyberiete metódu na trénovanie. Prechádzaním [dokumentácie Scikit-learn](https://scikit-learn.org/stable/user_guide.html) – ktorú používame v tomto kurze – môžete preskúmať mnohé spôsoby trénovania modelu. V závislosti od vašich skúseností možno budete musieť vyskúšať niekoľko rôznych metód, aby ste vybudovali najlepší model. Pravdepodobne prejdete procesom, kedy dátoví vedci vyhodnocujú výkonnosť modelu na základe testovania na nevidených dátach, kontrolujú presnosť, zaujatosti a iné problémy znižujúce kvalitu a vyberajú najvhodnejšiu metódu trénovania pre danú úlohu. -### Trénujte model +### Natrénujte model -S vašimi tréningovými dátami ste pripravení „prispôsobiť“ ich na vytvorenie modelu. Všimnete si, že v mnohých knižniciach ML nájdete kód „model.fit“ - práve v tomto momente pošlete svoju premennú vlastnosti ako pole hodnôt (zvyčajne „X“) a cieľovú premennú (zvyčajne „y“). +S tréningovými dátami ste pripravení „natrénovať“ model. V mnohých knižniciach ML nájdete kód „model.fit“ – práve v tomto momente posielate svoju premennú prvkov ako pole hodnôt (zvyčajne 'X') a cieľovú premennú (zvyčajne 'y'). ### Vyhodnoťte model -Keď je proces tréningu dokončený (tréning veľkého modelu môže trvať mnoho iterácií alebo „epoch“), budete môcť vyhodnotiť kvalitu modelu pomocou testovacích dát na posúdenie jeho výkonu. Tieto dáta sú podmnožinou pôvodných dát, ktoré model predtým neanalyzoval. Môžete vytlačiť tabuľku metrík o kvalite vášho modelu. +Keď je proces trénovania dokončený (môže to trvať mnoho iterácií, alebo „epoch“, na trénovanie veľkého modelu), budete môcť vyhodnotiť kvalitu modelu použitím testovacích dát na zmeranie jeho výkonnosti. Tieto dáta sú podmnožinou pôvodných dát, ktoré model doposiaľ neanalyzoval. Môžete vypísať tabuľku metrík o kvalite vášho modelu. -🎓 **Prispôsobenie modelu** +🎓 **Fitting modelu** -V kontexte strojového učenia prispôsobenie modelu odkazuje na presnosť základnej funkcie modelu, keď sa pokúša analyzovať dáta, s ktorými nie je oboznámený. +V kontexte strojového učenia fitting modelu znamená presnosť základnej funkcie modelu pri analýze dát, s ktorými nie je oboznámený. -🎓 **Nedostatočné prispôsobenie** a **nadmerné prispôsobenie** sú bežné problémy, ktoré zhoršujú kvalitu modelu, keď model buď nevyhovuje dostatočne dobre, alebo príliš dobre. To spôsobuje, že model robí predikcie buď príliš úzko alebo príliš voľne spojené s jeho tréningovými dátami. Nadmerne prispôsobený model predpovedá tréningové dáta príliš dobre, pretože sa naučil detaily a šum dát príliš dobre. Nedostatočne prispôsobený model nie je presný, pretože nedokáže presne analyzovať ani svoje tréningové dáta, ani dáta, ktoré ešte „nevidel“. +🎓 **Podtrénovanie** a **pretrénovanie** sú bežné problémy, ktoré znižujú kvalitu modelu, pretože model sa trénuje buď nedostatočne alebo príliš dôkladne. To spôsobuje, že model robí predikcie buď príliš presne zhodné alebo príliš voľné v porovnaní s tréningovými dátami. Pretrénovaný model predikuje tréningové dáta príliš dobre, pretože sa naučil detaily a šum v dátach príliš dôkladne. Podtrénovaný model nie je presný, pretože nedokáže ani presne analyzovať svoje tréningové dáta ani dáta, ktoré ešte nevidel. -![nadmerné prispôsobenie modelu](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/sk/overfitting.1c132d92bfd93cb6.webp) > Infografika od [Jen Looper](https://twitter.com/jenlooper) ## Ladenie parametrov -Keď je váš počiatočný tréning dokončený, pozorujte kvalitu modelu a zvážte jeho zlepšenie úpravou jeho „hyperparametrov“. Prečítajte si viac o tomto procese [v dokumentácii](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Keď je vaše počiatočné trénovanie dokončené, pozorujte kvalitu modelu a zvážte jeho zlepšenie úpravou „hyperparametrov“. Viac o tomto procese si môžete prečítať [v dokumentácii](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Predikcia -Toto je moment, keď môžete použiť úplne nové dáta na testovanie presnosti vášho modelu. V „aplikovanom“ nastavení ML, kde vytvárate webové aktíva na použitie modelu v produkcii, tento proces môže zahŕňať zhromažďovanie vstupov od používateľa (napríklad stlačenie tlačidla), aby sa nastavila premenná a poslala modelu na inferenciu alebo vyhodnotenie. +Toto je moment, kedy môžete použiť úplne nové dáta na otestovanie presnosti vášho modelu. V „aplikovanom“ prostredí ML, kde budujete webové zdroje na použitie modelu v produkcii, môže tento proces zahŕňať získavanie vstupov od používateľa (napríklad stlačením tlačidla) na nastavenie premennej a odoslanie jej do modelu na vyvodenie záveru, alebo vyhodnotenie. -V týchto lekciách objavíte, ako používať tieto kroky na prípravu, vytváranie, testovanie, vyhodnocovanie a predikciu - všetky gestá dátového vedca a viac, ako postupujete na svojej ceste stať sa „full stack“ ML inžinierom. +V týchto lekciách objavíte, ako používať tieto kroky na prípravu, tvorbu, testovanie, vyhodnocovanie a predikciu – všetky gestá dátového vedca a viac, ako napredujete na svojej ceste stať sa „full stack“ ML inžinierom. --- ## 🚀Výzva -Nakreslite diagram toku, ktorý odráža kroky praktika ML. Kde sa momentálne vidíte v procese? Kde predpokladáte, že narazíte na ťažkosti? Čo sa vám zdá jednoduché? +Nakreslite diagram znázorňujúci kroky praktikanta ML. Kde sa v procese práve vidíte? Kde predpokladáte, že budete mať ťažkosti? Čo sa vám zdá jednoduché? -## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) +## [Poprednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) ## Prehľad a samostatné štúdium -Vyhľadajte online rozhovory s dátovými vedcami, ktorí diskutujú o svojej každodennej práci. Tu je [jeden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Vyhľadajte si online rozhovory s dátovými vedcami, ktorí rozprávajú o svojej každodennej práci. Tu je [jeden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Zadanie -[Urobte rozhovor s dátovým vedcom](assignment.md) +[Rozhovor s dátovým vedcom](assignment.md) --- -**Upozornenie**: -Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, berte prosím na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. + \ No newline at end of file diff --git a/translations/sk/2-Regression/3-Linear/README.md b/translations/sk/2-Regression/3-Linear/README.md index 876d5bc6ea..c8fdea0622 100644 --- a/translations/sk/2-Regression/3-Linear/README.md +++ b/translations/sk/2-Regression/3-Linear/README.md @@ -1,113 +1,113 @@ -# Vytvorte regresný model pomocou Scikit-learn: regresia štyrmi spôsobmi +# Vytvorte regresný model pomocou Scikit-learn: štyri spôsoby regresie ## Poznámka pre začiatočníkov Lineárna regresia sa používa, keď chceme predpovedať **číselnú hodnotu** (napríklad cenu domu, teplotu alebo predaj). -Funguje tak, že nájde priamku, ktorá najlepšie reprezentuje vzťah medzi vstupnými vlastnosťami a výstupom. +Funguje tým, že nájde priamku, ktorá najlepšie reprezentuje vzťah medzi vstupnými vlastnosťami a výstupom. -V tejto lekcii sa zameriame na pochopenie konceptu predtým, než preskúmame pokročilejšie regresné techniky. +V tejto lekcii sa zameriavame na pochopenie konceptu pred tým, ako preskúmame pokročilejšie techniky regresie. ![Lineárna verzus polynomiálna regresia infografika](../../../../translated_images/sk/linear-polynomial.5523c7cb6576ccab.webp) > Infografika od [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) +## [Prednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) > ### [Táto lekcia je dostupná aj v R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Úvod +### Úvod -Doteraz ste preskúmali, čo je regresia, na vzorových dátach získaných z datasetu s cenami tekvíc, ktoré budeme používať počas celej tejto lekcie. Tiež ste ich vizualizovali pomocou Matplotlib. +Doteraz ste preskúmali, čo je regresia na vzorke dát zo súboru údajov o cenách tekvíc, ktorý budeme používať počas tejto lekcie. Tiež ste ich vizualizovali pomocou Matplotlib. -Teraz ste pripravení ponoriť sa hlbšie do regresie v strojovom učení. Kým vizualizácia umožňuje lepšie pochopiť dáta, skutočná sila strojového učenia spočíva v _trénovaní modelov_. Modely sa trénujú na historických dátach, aby automaticky zachytili závislosti v dátach, a umožňujú predpovedať výsledky pre nové dáta, ktoré model predtým nevidel. +Teraz ste pripravení ponoriť sa hlbšie do regresie pre strojové učenie. Kým vizualizácia vám umožní pochopiť dáta, skutočná sila strojového učenia spočíva v _trénovaní modelov_. Modely sa trénujú na historických údajoch, aby automaticky zachytili závislosti v dátach, a umožňujú vám predpovedať výsledky pre nové dáta, ktoré model ešte nevidel. -V tejto lekcii sa naučíte viac o dvoch typoch regresie: _základná lineárna regresia_ a _polynomiálna regresia_, spolu s niektorou matematikou, ktorá stojí za týmito technikami. Tieto modely nám umožnia predpovedať ceny tekvíc v závislosti od rôznych vstupných dát. +V tejto lekcii sa dozviete viac o dvoch typoch regresie: _základná lineárna regresia_ a _polynomiálna regresia_, spolu s niektorou matematikou, ktorá stojí za týmito technikami. Tieto modely nám umožnia predpovedať ceny tekvíc v závislosti od rôznych vstupných dát. [![ML pre začiatočníkov - Pochopenie lineárnej regresie](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML pre začiatočníkov - Pochopenie lineárnej regresie") > 🎥 Kliknite na obrázok vyššie pre krátky video prehľad lineárnej regresie. -> V celom tomto kurze predpokladáme minimálne matematické znalosti a snažíme sa sprístupniť učenie študentom z iných odborov, preto sledujte poznámky, 🧮 odkazy, diagramy a iné nástroje na uľahčenie pochopenia. +> Počas celého tohto kurzu predpokladáme minimálne matematické znalosti a snažíme sa ich sprístupniť študentom z iných oblastí, preto sledujte poznámky, 🧮 upozornenia, diagramy a ďalšie učebné pomôcky, ktoré pomôžu s porozumením. ### Predpoklady -Teraz by ste mali byť oboznámení so štruktúrou dát o tekviciach, ktoré skúmame. Nájdete ich prednačítané a predčistené v súbore _notebook.ipynb_ tejto lekcie. V súbore je cena tekvíc zobrazená na jeden košík. Uistite sa, že viete spustiť tieto notebooky v kerneloch Visual Studio Code. +Teraz by ste už mali byť oboznámení so štruktúrou údajov o tekviciach, ktoré skúmame. Môžete ich nájsť prednačítané a predspracované v súbore _notebook.ipynb_ tejto lekcie. V súbore je cena tekvice zobrazená za každý korc (bushel) v novom dátovom rámci. Uistite sa, že tieto notebooky môžete spustiť v prostredí Visual Studio Code. ### Príprava -Pripomíname, že tieto dáta načítavate preto, aby ste im mohli klásť otázky. +Ako pripomienku, načítavate tieto dáta, aby ste mohli klásť otázky. -- Kedy je najlepší čas kúpiť tekvice? -- Akú cenu môžem očakávať za balík minitekvíc? -- Mali by ste ich kupovať v polovičných košíkoch alebo v 1 1/9 košíkových krabiciach? -Poďme sa ďalej ponoriť do týchto dát. +- Kedy je najlepší čas na kúpu tekvíc? +- Akú cenu môžem očakávať za balík mini tekvíc? +- Mali by som ich kupovať v polkorcových košíkoch alebo v krabici s objemom 1 1/9 korca? +Poďme sa ďalej venovať týmto dátam. -V predchádzajúcej lekcii ste vytvorili Pandas dátový rámec a naplnili ho časťou pôvodného datasetu, štandardizujúc ceny podľa košíka. Týmto spôsobom ste však získali iba asi 400 dátových bodov a len za jesenné mesiace. +V predchádzajúcej lekcii ste vytvorili Pandas dátový rámec a naplnili ho časťou pôvodného datasetu, pričom ste štandardizovali ceny podľa korca. Týmto spôsobom ste však získali len asi 400 dátových bodov a iba za jesenné mesiace. -Pozrite sa na dáta, ktoré sme prednačítali v notebooku k tejto lekcii. Dáta sú načítané a zobrazený je počiatočný bodový graf podľa mesiaca. Možno získame viac detailov o povahe dát ich ďalším čistením. +Pozrite sa na údaje, ktoré sme prednačítali v sprevádzajúcom notebooku tejto lekcie. Dáta sú prednačítané a je vytvorený úvodný bodový graf, ktorý zobrazuje údaje podľa mesiacov. Možno dokážeme získať viac detailov o povahe dát ich dôkladnejším vyčistením. -## Lineárna regresná priamka +## Priama regresná čiara -Ako ste sa naučili v Lekcii 1, cieľom cvičenia lineárnej regresie je byť schopný vyrenderovať priamku, ktorá: +Ako ste sa naučili v lekcii 1, cieľom lineárnej regresie je nakresliť priamku, ktorá: -- **Ukáže vzťahy premenných**. Zobrazí vzťah medzi premennými. -- **Umožní predpovede**. Presne predpovedá, kde by sa nový dátový bod mohol nachádzať vzhľadom na túto priamku. +- **Zobrazuje vzťahy medzi premennými**. Ukazuje vzťah medzi premennými +- **Predpovedá**. Presne predpovedá, kde by sa nový dátový bod mohol nachádzať vzhľadom na túto priamku. -Typickým prístupom **Metódy najmenších štvorcov** je nakresliť tento typ priamky. Termín „Najmenšie štvorce“ sa vzťahuje na proces minimalizácie celkovej chyby v našom modeli. Pre každý dátový bod meriame zvislú vzdialenosť (nazývanú reziduál) medzi skutočným bodom a našou regresnou priamkou. +Bežne sa na toto používa **Least-Squares Regression (regresia metódou najmenších štvorcov)**. Výraz "Least-Squares" sa vzťahuje na proces minimalizácie celkovej chyby v našom modeli. Pre každý dátový bod meriame vertikálnu vzdialenosť (nazývanú reziduál) medzi skutočným bodom a našou regresnou priamkou. -Tieto vzdialenosti umocňujeme na druhú z dvoch hlavných dôvodov: +Tieto vzdialenosti umocníme na druhú moc z dvoch hlavných dôvodov: -1. **Veľkosť nad smerom:** Chceme, aby chyba -5 bola braná rovnako ako chyba +5. Umocnením na druhú sa všetky hodnoty stanú kladnými. +1. **Veľkosť nad smerom:** Chceme, aby chyba -5 bola rovnako vážená ako chyba +5. Umocnením na druhú dostaneme všetky hodnoty kladné. -2. **Postihovanie odľahlých hodnôt:** Umocnenie na druhú dáva väčšiu váhu väčším chybám, nútiac priamku zostať bližšie k bodom, ktoré sú ďaleko. +2. **Penalizácia odľahlých hodnôt:** Umocnenie na druhú dáva väčšiu váhu väčším chybám a núti čiaru byť bližšie k bodom, ktoré sú ďaleko. -Potom tieto štvorcové hodnoty sčítame. Naším cieľom je nájsť konkrétnu priamku, kde je tento súčet najmenší (najnižšia možná hodnota) — odtiaľ pochádza názov „Najmenšie štvorce“. +Tieto umocnené hodnoty potom sčítame. Naším cieľom je nájsť konkrétnu priamku, pre ktorú je tento súčet najmenej možný — odtiaľ názov „Least-Squares“ (najmenších štvorcov). -> **🧮 Ukáž mi matematiku** +> **🧮 Ukážte matematiku** > -> Táto priamka, nazývaná _priamkou najlepšieho prispôsobenia_, môže byť vyjadrená [rovnicou](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Táto čiara, nazývaná _čiara najlepšieho prispôsobenia_ môže byť vyjadrená [rovnicou](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` je 'vysvetľujúca premenná'. `Y` je 'závislá premenná'. Sklon priamky je `b` a `a` je y-priesečník, teda hodnota `Y` keď `X = 0`. +> `X` je 'vysvetľujúca premenná'. `Y` je 'závislá premenná'. Sklon čiary je `b` a `a` je priesečník s osou y, ktorý udáva hodnotu `Y`, keď `X = 0`. > >![vypočítajte sklon](../../../../translated_images/sk/slope.f3c9d5910ddbfcf9.webp) > > Najskôr vypočítajte sklon `b`. Infografika od [Jen Looper](https://twitter.com/jenlooper) > -> Inými slovami, ak sa vraciame k pôvodnej otázke nášho datasetu o tekviciach: „predpovedať cenu tekvice na košík podľa mesiaca“, `X` by odkazovalo na cenu a `Y` by predstavovalo mesiac predaja. +> Inými slovami, a vzhľadom na pôvodnú otázku našich údajov o tekviciach: „predpovedať cenu tekvice za bushel podľa mesiaca“, `X` by označoval cenu a `Y` by označoval mesiac predaja. > >![doplnte rovnicu](../../../../translated_images/sk/calculation.a209813050a1ddb1.webp) > -> Vypočítajte hodnotu Y. Ak platíte okolo 4 dolárov, musí to byť apríl! Infografika od [Jen Looper](https://twitter.com/jenlooper) +> Vypočítajte hodnotu y. Ak platíte okolo 4 dolárov, musí to byť apríl! Infografika od [Jen Looper](https://twitter.com/jenlooper) > -> Matematika, ktorá vypočíta priamku, musí ukázať sklon priamky, ktorý závisí aj od priesečníka, čiže kde sa nachádza `Y`, keď `X = 0`. +> Matematika, ktorá vypočítava čiaru, musí demonštrovať sklon priamky, ktorý tiež závisí od priesečníka, teda kde je `Y` umiestnené, keď `X = 0`. > -> Metódu výpočtu týchto hodnôt si môžete pozrieť na stránke [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Navštívte tiež [tento kalkulátor najmenších štvorcov](https://www.mathsisfun.com/data/least-squares-calculator.html) a sledujte, ako hodnoty čísel ovplyvňujú priamku. +> Metódu výpočtu týchto hodnôt môžete pozorovať na stránke [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Navštívte tiež [tento kalkulátor najmenších štvorcov](https://www.mathsisfun.com/data/least-squares-calculator.html) a pozrite, ako hodnoty čísel ovplyvňujú čiaru. ## Korelácia -Je potrebné pochopiť ešte jeden pojem — **korelačný koeficient** medzi danými premennými X a Y. Pomocou bodového grafu môžete tento koeficient rýchlo vizualizovať. Graf, kde sú body poukladané do peknej priamky, má vysokú koreláciu, no graf, kde sú body rozptýlené všade medzi X a Y, má nízku koreláciu. +Ešte jeden termín, ktorý treba pochopiť, je **Korelačný koeficient** medzi danými premennými X a Y. Pomocou bodového grafu môžete rýchlo vizualizovať tento koeficient. Graf, v ktorom sú body usporiadané v peknej priamke, má vysokú koreláciu, zatiaľ čo bodový graf s bodmi roztrúsenými všade medzi X a Y má nízku koreláciu. -Dobrý lineárny regresný model bude mať vysoký (bližší k 1 než k 0) korelačný koeficient pomocou metódy najmenších štvorcov s regresnou priamkou. +Dobrý lineárny regresný model bude ten, ktorého Korelačný koeficient je vysoký (bližšie k 1 než k 0) pri použití metódy Least-Squares Regression s regresnou priamkou. -✅ Spustite notebook priložený k tejto lekcii a pozrite si bodový graf Mesiac voči cene. Má dátový vzťah medzi Mesiacom a cenou pri predaji tekvíc vysokú alebo nízku koreláciu podľa vašej vizuálnej interpretácie grafu? Zmení sa to, ak namiesto `Mesiaca` použijete jemnejšie meradlo, napríklad *deň v roku* (t.j. počet dní od začiatku roka)? +✅ Spustite notebook sprevádzajúci túto lekciu a pozrite sa na bodový graf Mesiac verzus Cena. Zdá sa vám, že údaje o vzťahu Mesiac k Cene predaja tekvíc majú vysokú alebo nízku koreláciu podľa vašej vizuálnej interpretácie bodového grafu? Zmení sa to, ak použijete detailnejšie meranie namiesto `Mesiac`, napr. *deň v roku* (napríklad počet dní od začiatku roka)? -V nižšie uvedenom kóde predpokladáme, že sme dáta očistili a získali dátový rámec s názvom `new_pumpkins`, podobný nasledujúcemu: +V nasledujúcom kóde predpokladáme, že sme dáta vyčistili a získali dátový rámec nazvaný `new_pumpkins`, podobný nasledujúcemu: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +ID | Mesiac | DeňVRoku | Odroda | Mesto | Balenie | Nízka cena | Vysoká cena | Cena ---|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +70 | 9 | 267 | TYP NA KOLÁČ | BALTIMORE | kartóny 1 1/9 korca | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | TYP NA KOLÁČ | BALTIMORE | kartóny 1 1/9 korca | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | TYP NA KOLÁČ | BALTIMORE | kartóny 1 1/9 korca | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | TYP NA KOLÁČ | BALTIMORE | kartóny 1 1/9 korca | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | TYP NA KOLÁČ | BALTIMORE | kartóny 1 1/9 korca | 15.0 | 15.0 | 13.636364 -> Kód na čistenie dát je dostupný v [`notebook.ipynb`](notebook.ipynb). Prešli sme rovnakými krokmi čistenia ako v predchádzajúcej lekcii a vypočítali sme stĺpec `DayOfYear` podľa nasledujúceho výrazu: +> Kód na vyčistenie dát je dostupný v [`notebook.ipynb`](notebook.ipynb). Použili sme rovnaké čistiace kroky ako v predchádzajúcej lekcii a vypočítali sme stĺpec `DayOfYear` pomocou nasledujúceho výrazu: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Teraz, keď máte pochopenie matematiky za lineárnou regresiou, vytvorme regresný model, aby sme zistili, či vieme predpovedať, ktorý balík tekvíc bude mať najlepšie ceny. Niekto, kto kupuje tekvice na jesennú výzdobu, môže potrebovať tieto informácie na optimalizáciu svojich nákupov. +Teraz keď máte pochopenie matematiky za lineárnou regresiou, vytvorme regresný model, aby sme zistili, či môžeme predpovedať, ktoré balenie tekvíc bude mať najlepšie ceny tekvíc. Niekto, kto kupuje tekvice na jesennú tekvicovú výzdobu, by mohol túto informáciu využiť na optimalizáciu svojich nákupov balení tekvíc. ## Hľadanie korelácie @@ -115,22 +115,22 @@ Teraz, keď máte pochopenie matematiky za lineárnou regresiou, vytvorme regres > 🎥 Kliknite na obrázok vyššie pre krátky video prehľad korelácie. -Z predchádzajúcej lekcie ste pravdepodobne videli, že priemerná cena za jednotlivé mesiace vyzerá takto: +Z predchádzajúcej lekcie ste pravdepodobne videli, že priemerná cena za rôzne mesiace vyzerá takto: Priemerná cena podľa mesiaca -To naznačuje, že by mala existovať určitá korelácia, a môžeme skúsiť natrénovať lineárny regresný model na predpovedanie vzťahu medzi `Month` a `Price`, alebo medzi `DayOfYear` a `Price`. Tu je bodový graf znázorňujúci druhý vzťah: +To naznačuje, že by tu mala byť nejaká korelácia, a môžeme skúsiť vytrénovať lineárny regresný model, ktorý predpovie vzťah medzi `Mesiac` a `Cena` alebo medzi `DeňVRoku` a `Cena`. Tu je bodový graf, ktorý zobrazuje druhý vzťah: -Bodový graf Cena vs. Deň v roku +Bodový graf Cena verzus Deň v roku -Pozrime sa, či existuje korelácia pomocou funkcie `corr`: +Pozrime sa, či tu existuje korelácia pomocou funkcie `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Zdá sa, že korelácia je dosť malá, -0.15 podľa `Month` a -0.17 podľa `DayOfYear`, ale môže tam byť iný dôležitý vzťah. Vyzerá to, že existujú rôzne skupiny cien zodpovedajúce rôznym odrodám tekvíc. Aby sme túto hypotézu potvrdili, zobrazme každú kategóriu tekvíc inou farbou. Odovzdaním parametra `ax` funkcii `scatter` môžeme nakresliť všetky body na rovnakom grafe: +Zdá sa, že korelácia je pomerne malá, -0,15 podľa `Mesiac` a -0,17 podľa `DeňVRoku`, ale mohla by tu byť ďalšia dôležitá závislosť. Zdá sa, že existujú rôzne skupiny cien zodpovedajúce rôznym odrodám tekvíc. Aby sme túto hypotézu potvrdili, nakreslime každú kategóriu tekvíc použitím inej farby. Pri odovzdaní parametra `ax` do funkcie `scatter` môžeme všetky body vykresliť do rovnakého grafu: ```python ax=None @@ -140,34 +140,34 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Bodový graf Cena vs. Deň v roku so zvýraznením farby +Bodový graf Cena verzus Deň v roku s farbami -Naše vyšetrovanie naznačuje, že odroda má väčší vplyv na celkovú cenu než skutočný dátum predaja. Vidieť to môžeme aj na stĺpcovom grafe: +Náš výskum naznačuje, že druh tekvice má väčší vplyv na celkovú cenu než samotné dátum predaja. Vidíme to aj na stĺpcovom grafe: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Stĺpcový graf cena vs odroda +Stĺpcový graf cena podľa druhu -Zamerajme sa teraz len na jednu odrodu tekvíc, 'pie type', a pozrime sa, aký vplyv má dátum na cenu: +Zamerajme sa na moment len na jednu odrodu tekvice, 'pie type', a pozrime sa na vplyv dátumu na cenu: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Bodový graf Cena vs. Deň v roku pre odrodu Pie Type +Bodový graf Cena verzus Deň v roku -Ak teraz vypočítame koreláciu medzi `Price` a `DayOfYear` pomocou funkcie `corr`, dostaneme niečo okolo `-0.27` — čo znamená, že trénovanie predikčného modelu dáva zmysel. +Ak teraz vypočítame koreláciu medzi `Cena` a `DeňVRoku` pomocou funkcie `corr`, dostaneme hodnotu približne `-0,27` — čo znamená, že trénovať predikčný model dáva zmysel. -> Pred trénovaním lineárneho regresného modelu je dôležité uistiť sa, že naše dáta sú čisté. Lineárna regresia nefunguje dobre s chýbajúcimi hodnotami, preto je rozumné odstrániť všetky prázdne bunky: +> Pred trénovaním lineárneho regresného modelu je dôležité sa uistiť, že naše dáta sú čisté. Lineárna regresia nefunguje dobre s chýbajúcimi hodnotami, preto je dobré odstrániť všetky prázdne bunky: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Iný prístup je vyplniť prázdne hodnoty priemernými hodnotami zo zodpovedajúceho stĺpca. +Iným prístupom by bolo vyplniť tieto prázdne hodnoty priemernými hodnotami z príslušného stĺpca. ## Jednoduchá lineárna regresia @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Začneme oddelením vstupných hodnôt (vlastností) a očakávaného výstupu (štítku) do samostatných numpy polí: +Začneme oddelením vstupných hodnôt (vlastností) a očakávaného výstupu (označenia) do samostatných numpy polí: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Všimnite si, že sme museli vykonať `reshape` na vstupných dátach, aby ich lineárna regresia správne rozpoznala. Lineárna regresia očakáva 2D pole ako vstup, kde každý riadok poľa zodpovedá vektoru vstupných vlastností. V našom prípade, keďže máme len jeden vstup, potrebujeme pole tvaru N×1, kde N je veľkosť datasetu. +> Upozorňujeme, že sme museli upraviť tvar vstupných údajov pomocou `reshape`, aby ich balík Linear Regression správne pochopil. Lineárna regresia očakáva vstup vo forme 2D poľa, kde každý riadok predstavuje vektor vstupných vlastností. V našom prípade, keďže máme len jeden vstup, potrebujeme pole tvaru N×1, kde N je veľkosť datasetu. -Potom musíme rozdeliť dáta na trénovaciu a testovaciu množinu, aby sme mohli model po trénovaní overiť: +Ďalej musíme rozdeliť dáta na trénovaciu a testovaciu množinu, aby sme po tréningu mohli overiť náš model: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Nakoniec samotné trénovanie lineárneho regresného modelu trvá len dve riadky kódu. Definujeme objekt `LinearRegression` a fitting vykonáme pomocou metódy `fit`: +Nakoniec samotné trénovanie lineárneho regresného modelu zaberie len dva riadky kódu. Definujeme objekt `LinearRegression` a prispôsobíme ho našim dátam pomocou metódy `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objekt `LinearRegression` po príkaze `fit` obsahuje všetky koeficienty regresie, ku ktorým je možné pristúpiť pomocou vlastnosti `.coef_`. V našom prípade je tam len jeden koeficient, ktorý by mal byť okolo hodnoty `-0.017`. Znamená to, že ceny sa zdajú s časom mierne znižovať, ale nie príliš, približne o 2 centy za deň. Môžeme tiež pristúpiť k priesečníku regresie s osou Y pomocou `lin_reg.intercept_` - v našom prípade to bude okolo `21`, čo označuje cenu na začiatku roka. +Objekt `LinearRegression` po natrénovaní obsahuje všetky koeficienty regresie, ku ktorým môžeme pristupovať pomocou vlastnosti `.coef_`. V našom prípade je len jeden koeficient, ktorý by mal byť približne `-0.017`. To znamená, že ceny sa zdajú postupne trochu znižovať s časom, ale nie príliš, asi o 2 centy za deň. Môžeme tiež získať priesečník regresie s osou Y pomocou `lin_reg.intercept_` – v našom prípade to bude približne `21`, čo naznačuje cenu na začiatku roka. -Aby sme videli, aká je presnosť nášho modelu, môžeme predikovať ceny na testovacej sade dát a potom zmerať, ako blízko sú naše predikcie očakávaným hodnotám. To je možné urobiť pomocou metriky root mean square error (RMSE), čo je odmocnina z priemeru všetkých štvorcových rozdielov medzi očakávanými a predikovanými hodnotami. +Aby sme videli, aká je naša modelová presnosť, môžeme predpovedať ceny na testovacej množine a potom zmerať, ako sú naše predpovede blízke očakávaným hodnotám. To môžeme urobiť pomocou metriky strednej kvadratickej chyby (RMSE), ktorá je odmocninou strednej hodnoty všetkých štvorcov rozdielov medzi očakávanou a predpovedanou hodnotou. ```python pred = lin_reg.predict(X_test) @@ -215,37 +215,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -Naša chyba sa zdá byť okolo 2 bodov, čo je približne 17%. Nie príliš dobre. Ďalším ukazovateľom kvality modelu je **koeficient determinácie**, ktorý je možné získať takto: + +Naša chyba sa zdá byť okolo 2 bodov, čo je približne 17%. Nie veľmi dobré. Ďalším ukazovateľom kvality modelu je **koeficient determinácie**, ktorý môžeme získať takto: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Ak je hodnota 0, znamená to, že model nezohľadňuje vstupné dáta a správa sa ako *najhorší lineárny prediktor*, čo je jednoducho priemerná hodnota výsledku. Hodnota 1 znamená, že dokážeme dokonale predpovedať všetky očakávané výstupy. V našom prípade je koeficient okolo 0,06, čo je pomerne nízke. + +Ak je hodnota 0, znamená to, že model nezohľadňuje vstupné údaje a správa sa ako *najhorší lineárny prediktor*, ktorým je jednoducho priemerná hodnota výsledku. Hodnota 1 znamená, že môžeme perfektne predpovedať všetky očakávané výstupy. V našom prípade je koeficient okolo 0,06, čo je pomerne nízke. -Môžeme tiež zobraziť testovacie dáta spolu s regresnou čiarou, aby sme lepšie videli, ako regresia funguje v našom prípade: +Môžeme tiež vykresliť testovacie dáta spolu s regresnou čiarou, aby sme lepšie videli, ako regresia funguje v našom prípade: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - -Lineárna regresia + +Linear regression ## Polynomická regresia -Ďalším typom lineárnej regresie je polynomická regresia. Zatiaľ čo niekedy existuje lineárny vzťah medzi premennými - čím väčšia tekvica objemom, tým vyššia cena - niekedy tieto vzťahy nemožno zobraziť ako rovinu alebo priamku. +Ďalším typom lineárnej regresie je polynomická regresia. Zatiaľ čo niekedy existuje lineárny vzťah medzi premennými — čím väčšia tekvica objemom, tým vyššia cena — niekedy tieto vzťahy nemožno zobraziť rovinnou alebo priamkou. -✅ Tu sú [niektoré ďalšie príklady](https://online.stat.psu.edu/stat501/lesson/9/9.8) dát, ktoré by mohli využiť polynomickú regresiu +✅ Tu je [niekoľko ďalších príkladov](https://online.stat.psu.edu/stat501/lesson/9/9.8) údajov, ktoré by mohli využiť polynomickú regresiu. -Pozrite sa opäť na vzťah medzi Dátumom a Cenou. Zdá sa, že by tento rozptylový graf mal byť nevyhnutne analyzovaný priamkou? Nemôžu ceny kolísať? V takom prípade môžete skúsiť polynomickú regresiu. +Pozrite sa znova na vzťah medzi Dátumom a Cenou. Zdá sa, že tento rozptylový graf by určite mal byť analyzovaný priamkou? Nemôžu ceny kolísať? V takom prípade môžete skúsiť polynomickú regresiu. -✅ Polynómy sú matematické výrazy, ktoré môžu pozostávať z jednej alebo viacerých premenných a koeficientov +✅ Polynómy sú matematické výrazy, ktoré môžu obsahovať jednu alebo viac premenných a koeficientov. -Polynomická regresia vytvára zakrivenú čiaru, aby sa lepšie prispôsobila nelineárnym dátam. V našom prípade, ak zahrnieme do vstupných dát štvorcovú premennú `DayOfYear`, mali by sme byť schopní prispôsobiť naše dáta parabolickou krivkou, ktorá bude mať minimum v určitom bode počas roka. +Polynomická regresia vytvára zakrivenú čiaru, aby lepšie vystihla nelineárne údaje. V našom prípade, ak do vstupných údajov zahrnieme aj druhú mocninu `DayOfYear`, mali by sme byť schopní prispôsobiť naše dáta parabolickej krivke, ktorá bude mať minimum v určitom bode v rámci roka. -Scikit-learn obsahuje užitočné [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) na spojenie rôznych krokov spracovania dát. **Pipeline** je reťazec **estimatorov**. V našom prípade vytvoríme pipeline, ktorá najprv pridá polynomické príznaky do nášho modelu a potom vytrénuje regresiu: +Scikit-learn obsahuje užitočné [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), ktoré umožňuje kombinovať rôzne kroky spracovania dát. **Pipeline** je reťazec **estimatorov**. V našom prípade vytvoríme pipeline, ktorá najskôr pridá polynomické príznaky do modelu a potom natrénuje regresiu: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,61 +256,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` + +Použitie `PolynomialFeatures(2)` znamená, že zahrnieme všetky polynómy druhého stupňa zo vstupných dát. V našom prípade to bude len `DayOfYear`2, ale ak by sme mali dve vstupné premenné X a Y, pridalo by to X2, XY a Y2. Môžeme použiť aj vyššie stupne polynómov, ak chceme. + +Pipeliny môžeme použiť rovnako ako pôvodný objekt `LinearRegression`, t. j. môžeme `fit`-nuť pipeline a potom použiť `predict` na získanie predpovedí: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Na vykreslenie hladkej aproximačnej krivky použijeme `np.linspace` na vytvorenie rovnomerného rozsahu vstupných hodnôt, namiesto priameho vykreslenia na neusporiadanej testovacej množine (čo by viedlo k zygzakovej čiare): -Použitie `PolynomialFeatures(2)` znamená, že zahrnieme všetky polynómy druhého stupňa z vstupných dát. V našom prípade to bude iba `DayOfYear`2, ale ak máme dve vstupné premenné X a Y, pridajú sa X2, XY a Y2. Môžeme tiež použiť polynómy vyššieho stupňa, ak chceme. +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) -Pipeline môžeme používať rovnako ako pôvodný objekt `LinearRegression`, t.j. môžeme `fit` pipeline a potom použiť `predict` na získanie výsledkov predpovede. Tu je graf zobrazujúci testovacie dáta a aproximačnú krivku: +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Tu je graf zobrazujúci testovacie dáta a aproximačnú krivku: -Polynomická regresia +Polynomial regression -Pomocou polynomickej regresie môžeme dosiahnuť mierne nižšiu MSE a vyšší koeficient determinácie, ale nie výrazne. Musíme zohľadniť aj ďalšie vlastnosti! +Použitím polynomickej regresie môžeme získať o niečo nižší RMSE a vyšší koeficient determinácie, ale nie významne. Musíme zohľadniť aj ďalšie vlastnosti! -> Môžete vidieť, že minimálne ceny tekvíc sa vyskytujú niekde okolo Halloween. Ako by ste to vysvetlili? +> Vidíte, že minimálne ceny tekvíc sú pozorované niekde okolo Halloweenu. Ako by ste to vysvetlili? -🎃 Gratulujeme, práve ste vytvorili model, ktorý môže pomôcť predpovedať cenu tekvíc na pečenie. Pravdepodobne môžete zopakovať rovnaký postup pre všetky druhy tekvíc, ale to by bolo zdĺhavé. Teraz sa naučíme, ako zohľadniť druh tekvice v našom modeli! +🎃 Gratulujeme, práve ste vytvorili model, ktorý môže pomôcť predpovedať cenu tekvíc na koláč. Pravdepodobne tú istú procedúru môžete zopakovať pre všetky druhy tekvíc, ale to by bolo zdĺhavé. Teraz sa naučíme, ako do modelu zahrnúť odrodu tekvíc! -## Kategóriové premenné +## Kategorické vlastnosti -V ideálnom svete chceme byť schopní predpovedať ceny rôznych druhov tekvíc pomocou toho istého modelu. Avšak stĺpec `Variety` je trochu iný ako stĺpce ako `Month`, pretože obsahuje nečíselné hodnoty. Takéto stĺpce sa nazývajú **kategóriové**. +V ideálnom svete chceme vedieť predpovedať ceny pre rôzne odrody tekvíc pomocou rovnakého modelu. Avšak stĺpec `Variety` sa trochu líši od stĺpcov ako `Month`, pretože obsahuje nečíselné hodnoty. Takéto stĺpce sa nazývajú **kategorické**. -[![ML pre začiatočníkov - Predikcie kategóriových premenných pomocou lineárnej regresie](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML pre začiatočníkov - Predikcie kategóriových premenných pomocou lineárnej regresie") +[![ML pre začiatočníkov - Predikcia kategórií s lineárnou regresiou](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Kliknite na obrázok vyššie pre krátke video o použití kategóriových premenných. +> 🎥 Kliknite na obrázok vyššie pre krátke video o používaní kategórií vo vlastnostiach. -Tu vidíte, ako sa priemerná cena líši podľa druhu: +Tu vidíte, ako priemerná cena závisí od odrody: -Priemerná cena podľa druhu +Priemerná cena podľa odrody -Aby sme zohľadnili druh, musíme ho najskôr previesť na číselnú formu, teda ho **zakódovať**. Existuje niekoľko spôsobov, ako to môžeme urobiť: +Aby sme zohľadnili odrodu, najskôr ju musíme previesť na numerickú formu, teda **zakódovať** ju. Existuje niekoľko spôsobov, ako to môžeme urobiť: -* Jednoduché **číselné kódovanie** vytvorí tabuľku rôznych druhov a potom nahradí názov druhu jeho indexom v tejto tabuľke. Toto nie je najlepšia myšlienka pre lineárnu regresiu, pretože lineárna regresia berie skutočnú číselnú hodnotu indexu a pripočítava ju k výsledku, násobenú nejakým koeficientom. V našom prípade je vzťah medzi číslom indexu a cenou jasne nelineárny, aj keď by sme triedili indexy nejakým špecifickým spôsobom. -* **One-hot encoding** nahradí stĺpec `Variety` štyrmi rôznymi stĺpcami, po jednom pre každú odrodu. Každý stĺpec bude obsahovať `1`, ak príslušný riadok je daného druhu, a `0` inak. To znamená, že budú štyri koeficienty v lineárnej regresii, po jednom pre každú odrodu tekvín, ktoré budú zodpovedné za "počátečnú cenu" (alebo skôr "prídavok k cene") pre tento konkrétny druh. +* Jednoduché **číselné kódovanie** vytvorí tabuľku rôznych odrôd a potom nahradí názov odrody indexom v tejto tabuľke. To nie je najlepšie riešenie pre lineárnu regresiu, pretože lineárna regresia zoberie skutočnú číselnú hodnotu indexu a pridá ju k výsledku vynásobenú nejakým koeficientom. V našom prípade je vzťah medzi číslom indexu a cenou jasne nelineárny, aj keď zabezpečíme, že indexy budú usporiadané nejako špecificky. +* **One-hot encoding** nahradí stĺpec `Variety` štyrmi rôznymi stĺpcami, každý pre jednu odrodu. Každý stĺpec bude obsahovať `1`, ak je daný riadok danej odrody, a `0` v opačnom prípade. To znamená, že lineárna regresia bude mať štyri koeficienty, jeden pre každú odrodu tekvíc, ktoré určujú "východiskovú cenu" (alebo skôr "prídavok k cene") pre túto konkrétnu odrodu. -Nižšie je ukážka, ako môžeme pomocou one-hot encoding označiť druh: +Nižšie je kód, ktorý ukazuje použitie one-hot encoding pre odrodu: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 - -Na trénovanie lineárnej regresie používajúcej one-hot kódované druhy ako vstupné premenné je potrebné správne inicializovať dáta `X` a `y`: + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +Aby sme natrénovali lineárnu regresiu s one-hot encoded odrodou ako vstupom, stačí správne inicializovať dáta `X` a `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -Zvyšok kódu je rovnaký ako sme použili vyššie pre trénovanie lineárnej regresie. Ak to vyskúšate, uvidíte, že stredná štvorcová chyba je asi rovnaká, ale koeficient determinácie bude oveľa vyšší (~77%). Na ešte presnejšie predikcie môžeme zohľadniť viac kategóriových premenných, ako aj numerické premenné, napríklad `Month` alebo `DayOfYear`. Na vytvorenie jednej veľkej množiny príznakov môžeme použiť `join`: + +Zvyšok kódu je rovnaký ako ten, ktorý sme použili vyššie na trénovanie lineárnej regresie. Ak to vyskúšate, uvidíte, že stredná kvadratická chyba je približne rovnaká, no koeficient determinácie je oveľa vyšší (~77 %). Pre ešte presnejšie predpovede môžeme zohľadniť aj ďalšie kategórie, ako aj numerické vlastnosti ako `Month` alebo `DayOfYear`. Na získanie jednej veľkej matice príznakov môžeme použiť `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,15 +341,15 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` + +Tu tiež berieme do úvahy `City` a typ `Package`, čo nám dáva RMSE 2.84 (10.5 %) a koeficient determinácie 0.94! -Tu tiež zohľadňujeme `City` a typ balenia (`Package`), čo nám dáva MSE 2.84 (10%) a koeficient determinácie 0.94! +## Kompletný model -## Zhrnutie všetkého dokopy - -Aby sme vytvorili najlepší model, môžeme použiť kombinované (one-hot kódované kategóriové + numerické) dáta z vyššie uvedeného príkladu spolu s polynomickou regresiou. Tu je kompletný kód pre vaše pohodlie: +Na vytvorenie najlepšieho modelu môžeme použiť kombinované (one-hot encoded kategórie + numerické) dáta z vyššie uvedeného príkladu spolu s polynomickou regresiou. Tu je kompletný kód pre vaše pohodlie: ```python -# nastaviť tréningové dáta +# nastaviť trénovacie údaje X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -336,51 +359,51 @@ y = new_pumpkins['Price'] # vykonať rozdelenie na trénovaciu a testovaciu množinu X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# nastaviť a natrénovať pipeline +# nastaviť a trénovať pipeline pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # predpovedať výsledky pre testovacie dáta pred = pipeline.predict(X_test) -# vypočítať MSE a koeficient determinácie -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# vypočítať RMSE a koeficient determinácie +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` + +To by nám malo dať najlepší koeficient determinácie takmer 97 % a RMSE=2.23 (~8 % chyba predpovede). -Toto by nám malo dať najlepší koeficient determinácie takmer 97% a MSE=2.23 (~8% chyba predikcie). - -| Model | MSE | Koeficient determinácie | -|-------|-----|-------------------------| -| `DayOfYear` lineárny | 2.77 (17.2%) | 0.07 | -| `DayOfYear` polynomický | 2.73 (17.0%) | 0.08 | -| `Variety` lineárny | 5.24 (19.7%) | 0.77 | -| Všetky príznaky lineárny | 2.84 (10.5%) | 0.94 | -| Všetky príznaky polynomický | 2.23 (8.25%) | 0.97 | +| Model | RMSE | Koeficient determinácie | +|-------|-----|-------------------------| +| `DayOfYear` Lineárny | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomický | 2.73 (17.0%) | 0.08 | +| `Variety` Lineárny | 5.24 (19.7%) | 0.77 | +| Všetky vlastnosti Lineárny | 2.84 (10.5%) | 0.94 | +| Všetky vlastnosti Polynomický | 2.23 (8.25%) | 0.97 | -🏆 Výborne! Vytvorili ste štyri regresné modely v jednej lekcii a zlepšili kvalitu modelu na 97%. V poslednej časti o regresii sa naučíte o logistickej regresii na určovanie kategórií. +🏆 Výborne! Vytvorili ste štyri regresné modely v jednej lekcii a vylepšili kvalitu modelu na 97 %. V záverečnej časti o regresii sa naučíte o logistickej regresii na určenie kategórií. --- ## 🚀Výzva -Otestujte niekoľko rôznych premenných v tomto notebooku a zistite, ako korelácia súvisí s presnosťou modelu. +Otestujte niekoľko rôznych premenných v tomto notebooku, aby ste videli, ako korelácia súvisí s presnosťou modelu. ## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) -## Opakovanie a samostatné štúdium +## Prehľad a samostatné štúdium -V tejto lekcii sme sa naučili o lineárnej regresii. Existujú aj iné dôležité typy regresie. Prečítajte si o metódach Stepwise, Ridge, Lasso a Elasticnet. Dobrou študijnou pomôckou na osvojenie je kurz [Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +V tejto lekcii sme sa naučili o lineárnej regresii. Existujú však aj iné dôležité typy regresie. Prečítajte si o technikách Stepwise, Ridge, Lasso a Elasticnet. Dobrou študijnou pomôckou je [Stanfordský kurz štatistického učenia](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Zadanie -[Postavte model](assignment.md) +[Vytvorte model](assignment.md) --- -**Zrieknutie sa zodpovednosti**: -Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, vezmite prosím na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne výklady vyplývajúce z použitia tohto prekladu. +**Vyhlásenie o zodpovednosti**: +Tento dokument bol preložený pomocou automatizovanej prekladateľskej služby AI [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď usilujeme o presnosť, buďte prosím informovaní, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Originálny dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nepreberáme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/2-Regression/3-Linear/solution/notebook.ipynb b/translations/sk/2-Regression/3-Linear/solution/notebook.ipynb index f41dd74ef5..a6e946d654 100644 --- a/translations/sk/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/sk/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineárna a polynomiálna regresia pre stanovenie cien tekvíc - Lekcia 3\n", + "## Lineárna a polynomiálna regresia pre ceny tekvíc - Lekcia 3\n", "\n", - "Načítajte potrebné knižnice a dataset. Konvertujte údaje na dataframe obsahujúci podmnožinu údajov:\n", + "Načítajte potrebné knižnice a dátovú sadu. Preveďte dáta na dataframe obsahujúci podmnožinu údajov:\n", "\n", - "- Získajte iba tekvice ocenené na základe ceny za koš\n", - "- Konvertujte dátum na mesiac\n", - "- Vypočítajte cenu ako priemer vysokých a nízkych cien\n", - "- Konvertujte cenu tak, aby odrážala cenu za množstvo v koši\n" + "- Získajte len tekvice oceňované za korcom\n", + "- Preveďte dátum na mesiac\n", + "- Vypočítajte cenu ako priemer medzi vysokou a nízkou cenou\n", + "- Preveďte cenu tak, aby odzrkadľovala oceňovanie podľa množstva korcov\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Bodový graf nám pripomína, že máme údaje iba od augusta do decembra. Pravdepodobne potrebujeme viac údajov, aby sme mohli vyvodiť závery lineárnym spôsobom.\n" + "Bodový graf nám pripomína, že máme údaje iba za mesiace od augusta do decembra. Pravdepodobne budeme potrebovať viac údajov, aby sme mohli vyvodiť závery lineárnym spôsobom.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Pozrime sa, či existuje korelácia:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zdá sa, že korelácia je dosť malá, ale existuje nejaký iný dôležitejší vzťah - pretože cenové body v grafe vyššie sa zdajú mať niekoľko odlišných klastrov. Poďme vytvoriť graf, ktorý ukáže rôzne odrody tekvíc:\n" + "Zdá sa, že korelácia je pomerne malá, ale existuje nejaký iný dôležitejší vzťah – pretože cenové body v grafe vyššie sa zdajú mať niekoľko odlišných zhlukov. Vytvorme graf, ktorý ukáže rôzne odrody tekvíc:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Zatiaľ sa sústreďme len na jednu odrodu - **typ koláča**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Lineárna regresia\n", "\n", - "Použijeme Scikit Learn na natrénovanie modelu lineárnej regresie:\n" + "Použijeme Scikit Learn na trénovanie modelu lineárnej regresie:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Môžeme použiť natrénovaný model na predikciu ceny:\n" + ] }, { "cell_type": "code", @@ -716,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polynomická regresia\n", + "### Polynomiálna regresia\n", "\n", - "Niekedy je vzťah medzi vlastnosťami a výsledkami prirodzene nelineárny. Napríklad ceny tekvíc môžu byť vysoké v zime (mesiace=1,2), potom klesnúť počas leta (mesiace=5-7) a následne opäť stúpnuť. Lineárna regresia nedokáže tento vzťah presne zachytiť.\n", + "Niekedy je vzťah medzi vlastnosťami a výsledkami vrodene nelineárny. Napríklad ceny tekvíc môžu byť vysoké v zime (mesiace=1,2), potom počas leta (mesiace=5-7) klesnú a následne opäť vzrastú. Lineárna regresia tento vzťah nedokáže presne nájsť.\n", "\n", - "V takom prípade môžeme zvážiť pridanie ďalších vlastností. Jednoduchým spôsobom je použiť polynómy z vstupných vlastností, čo by viedlo k **polynomickej regresii**. V knižnici Scikit Learn môžeme automaticky predpočítať polynomiálne vlastnosti pomocou pipeline:\n" + "V takom prípade môžeme zvážiť pridané ďalších vlastností. Jednoduchým spôsobom je použiť polynómy z vstupných vlastností, čo vedie k **polynomiálnej regresii**. V Scikit Learn môžeme automaticky predpočítať polynomiálne vlastnosti pomocou pipeline: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kódovanie odrôd\n", + "### Rôzne spôsoby kódovania\n", "\n", - "V ideálnom svete by sme chceli byť schopní predpovedať ceny pre rôzne odrody tekvíc pomocou toho istého modelu. Aby sme zohľadnili odrodu, musíme ju najprv previesť do číselnej podoby, alebo ju **zakódovať**. Existuje niekoľko spôsobov, ako to môžeme urobiť:\n", + "V ideálnom svete chceme byť schopní predpovedať ceny rôznych odrôd tekvíc pomocou rovnakého modelu. Aby sme mohli zohľadniť odrodu, najskôr ju musíme previesť do číselnej formy, teda **zakódovať**. Existuje niekoľko spôsobov, ako to môžeme urobiť:\n", "\n", - "* Jednoduché číselné kódovanie, ktoré vytvorí tabuľku rôznych odrôd a potom nahradí názov odrody indexom v tejto tabuľke. Toto nie je najlepší nápad pre lineárnu regresiu, pretože lineárna regresia berie do úvahy číselnú hodnotu indexu, a tá pravdepodobne nebude číselne korelovať s cenou.\n", - "* One-hot kódovanie, ktoré nahradí stĺpec `Variety` štyrmi rôznymi stĺpcami, každý pre jednu odrodu, pričom obsahuje hodnotu 1, ak daný riadok patrí danej odrode, a 0 v opačnom prípade.\n", + "* Jednoduché číselné kódovanie, ktoré vytvorí tabuľku rôznych odrôd a potom nahradí názov odrody indexom v tejto tabuľke. To nie je najlepšia voľba pre lineárnu regresiu, pretože lineárna regresia berie do úvahy číselnú hodnotu indexu a tá pravdepodobne nebude numericky korelovať s cenou.\n", + "* One-hot kódovanie, ktoré nahradí stĺpec `Variety` 4 rôznymi stĺpcami, po jednom pre každú odrodu, kde bude 1, ak príslušný riadok patrí danej odrode, a 0 inak.\n", "\n", - "Kód nižšie ukazuje, ako môžeme zakódovať odrodu pomocou one-hot kódovania:\n" + "Nižšie uvedený kód ukazuje, ako môžeme one-hot kódovať odrodu:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineárna regresia na odrode\n", + "### Lineárna regresia podľa odrody\n", "\n", - "Teraz použijeme ten istý kód ako vyššie, ale namiesto `DayOfYear` použijeme našu one-hot-enkódovanú odrodu ako vstup:\n" + "Teraz použijeme ten istý kód ako vyššie, ale namiesto `DayOfYear` použijeme ako vstup našu one-hot-encoded odrodu:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Môžeme tiež skúsiť použiť ďalšie funkcie rovnakým spôsobom a skombinovať ich s číselnými funkciami, ako sú `Month` alebo `DayOfYear`:\n" + "Môžeme tiež skúsiť použiť iné vlastnosti rovnakým spôsobom a kombinovať ich s číselnými vlastnosťami, ako napríklad `Month` alebo `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Polynomická regresia\n", "\n", - "Polynomická regresia môže byť použitá aj s kategóriálnymi črtami, ktoré sú zakódované pomocou one-hot-encoding. Kód na trénovanie polynomickej regresie by bol v podstate rovnaký, ako sme videli vyššie.\n" + "Polynomická regresia môže byť použitá aj s kategorickými vlastnosťami, ktoré sú zakódované metódou one-hot. Kód na trénovanie polynomickej regresie by v podstate bol rovnaký, ako sme videli vyššie.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Upozornenie**: \nTento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie odporúčame profesionálny ľudský preklad. Nezodpovedáme za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.\n" + "---\n\n\n**Vyhlásenie o vylúčení zodpovednosti**: \nTento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, buďte si vedomí, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:09:45+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "sk" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 6a29b8049f996bed890bc55fa8b96fab77f351c3 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:20:08 +0000 Subject: [PATCH 07/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/lt/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 106 +++--- .../lt/2-Regression/3-Linear/README.md | 319 ++++++++-------- .../3-Linear/solution/notebook.ipynb | 67 ++-- translations/my/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 128 +++---- .../my/2-Regression/3-Linear/README.md | 341 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 81 +++-- translations/uk/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 108 +++--- .../uk/2-Regression/3-Linear/README.md | 295 ++++++++------- .../3-Linear/solution/notebook.ipynb | 67 ++-- 12 files changed, 830 insertions(+), 724 deletions(-) diff --git a/translations/lt/.co-op-translator.json b/translations/lt/.co-op-translator.json index e9532a87b7..7328b01490 100644 --- a/translations/lt/.co-op-translator.json +++ b/translations/lt/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "lt" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T07:55:51+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:19:57+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "lt" }, @@ -90,8 +90,8 @@ "language_code": "lt" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:27:01+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:19:25+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "lt" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "lt" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:15:05+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "lt" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T07:45:13+00:00", diff --git a/translations/lt/1-Introduction/4-techniques-of-ML/README.md b/translations/lt/1-Introduction/4-techniques-of-ML/README.md index 630789bc93..adc2d0efb8 100644 --- a/translations/lt/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/lt/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# Mašininio mokymosi technikos +# Mašininio mokymosi metodai -Mašininio mokymosi modelių kūrimo, naudojimo ir palaikymo procesas bei duomenys, kuriuos jie naudoja, labai skiriasi nuo daugelio kitų kūrimo darbo eigų. Šioje pamokoje mes išsklaidysime šį procesą ir apžvelgsime pagrindines technikas, kurias turite žinoti. Jūs: +Proceso, kuriuo kuriami, naudojami ir palaikomi mašininio mokymosi modeliai bei duomenys, yra labai skirtingas nuo daugelio kitų kūrimo darbo eigų. Šioje pamokoje mes atskleisime šio proceso esmę ir išdėstysime pagrindines technikas, kurias jums reikia žinoti. Jūs: -- Suprasite pagrindinius procesus, kuriais grindžiamas mašininis mokymasis. -- Išnagrinėsite pagrindines sąvokas, tokias kaip „modeliai“, „prognozės“ ir „mokymo duomenys“. +- Suprasite mašininio mokymosi pagrindinius procesus aukštu lygiu. +- Išnagrinėsite pagrindines sąvokas, tokias kaip 'modeliai', 'prognozės' ir 'mokymo duomenys'. -## [Prieš paskaitą – testas](https://ff-quizzes.netlify.app/en/ml/) +## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/) -[![ML pradedantiesiems - Mašininio mokymosi technikos](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML pradedantiesiems - Mašininio mokymosi technikos") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šią pamoką. +> 🎥 Paspauskite paveikslėlį aukščiau, kad pamatytumėte trumpą šios pamokos vaizdo įrašą. ## Įvadas -Aukštu lygiu mašininio mokymosi (ML) procesų kūrimas apima kelis žingsnius: +Aukštu lygiu mašininio mokymosi (ML) procesų kūrimo amatas susideda iš kelių žingsnių: -1. **Nuspręskite, kokį klausimą norite užduoti**. Dauguma ML procesų prasideda nuo klausimo, į kurį negalima atsakyti paprasta sąlygine programa ar taisyklėmis pagrįstu varikliu. Šie klausimai dažnai susiję su prognozėmis, pagrįstomis duomenų rinkiniu. -2. **Surinkite ir paruoškite duomenis**. Norėdami atsakyti į savo klausimą, jums reikia duomenų. Duomenų kokybė ir, kartais, kiekis nulems, kaip gerai galėsite atsakyti į pradinį klausimą. Duomenų vizualizavimas yra svarbi šio etapo dalis. Šis etapas taip pat apima duomenų padalijimą į mokymo ir testavimo grupes, kad būtų galima sukurti modelį. -3. **Pasirinkite mokymo metodą**. Atsižvelgdami į savo klausimą ir duomenų pobūdį, turite pasirinkti, kaip norite mokyti modelį, kad jis geriausiai atspindėtų jūsų duomenis ir tiksliai prognozuotų pagal juos. Ši ML proceso dalis reikalauja specifinių žinių ir dažnai nemažai eksperimentavimo. -4. **Mokykite modelį**. Naudodami mokymo duomenis, taikysite įvairius algoritmus, kad išmokytumėte modelį atpažinti duomenų šablonus. Modelis gali naudoti vidinius svorius, kuriuos galima koreguoti, kad tam tikri duomenų aspektai būtų privilegijuoti, siekiant sukurti geresnį modelį. -5. **Įvertinkite modelį**. Naudojate anksčiau nematytus duomenis (testavimo duomenis) iš surinkto rinkinio, kad pamatytumėte, kaip modelis veikia. -6. **Parametrų derinimas**. Atsižvelgdami į modelio veikimą, galite pakartoti procesą naudodami skirtingus parametrus arba kintamuosius, kurie kontroliuoja algoritmų elgesį mokymo metu. -7. **Prognozuokite**. Naudokite naujus įvesties duomenis, kad patikrintumėte modelio tikslumą. +1. **Nustatyti klausimą**. Dauguma ML procesų prasideda uždavus klausimą, kurio negalima atsakyti paprastu sąlyginiu programu arba taisyklių varikliu. Šie klausimai dažnai susiję su prognozėmis, pagrįstomis duomenų rinkiniu. +2. **Surinkti ir paruošti duomenis**. Norint atsakyti į klausimą, reikia duomenų. Duomenų kokybė ir kartais kiekis lemia, kaip gerai galite atsakyti į pirminį klausimą. Duomenų vizualizavimas yra svarbi šios fazės dalis. Šiame etape taip pat atliekamas duomenų padalinimas į mokymo ir testavimo grupes modelio kūrimui. +3. **Pasirinkti mokymo metodą**. Priklausomai nuo jūsų klausimo ir duomenų pobūdžio, turite pasirinkti, kaip norite apmokyti modelį, kad geriausiai atspindėtų duomenis ir leistų tiksliai prognozuoti. Tai ML proceso dalis, kuri reikalauja specifinių žinių ir dažnai nemažai eksperimentų. +4. **Apkrova modelį**. Naudodami mokymo duomenis, jūs įvairiais algoritmais apmokysite modelį atpažinti duomenų struktūras. Modelis gali naudoti vidinius svorius, kuriuos galima koreguoti, kad tam tikros duomenų dalys būtų svarbesnės, siekiant sukurti geresnį modelį. +5. **Įvertinti modelį**. Naudojate dar nematytus duomenis (testavimo duomenis) iš savo surinkto rinkinio, kad pamatytumėte, kaip modelis veikia. +6. **Parametrų suderinimas**. Remdamiesi modelio veikimu, galite procesą pakartoti su skirtingais parametrais arba kintamaisiais, kurie kontroliuoja algoritmų veikimą mokant modelį. +7. **Prognozė**. Naudokite naujus įvesties duomenis savo modelio tikslumui išbandyti. -## Kokį klausimą užduoti +## Koks klausimas turi būti užduotas -Kompiuteriai ypač gerai aptinka paslėptus duomenų šablonus. Ši savybė labai naudinga tyrėjams, turintiems klausimų apie tam tikrą sritį, į kuriuos negalima lengvai atsakyti sukuriant sąlyginių taisyklių variklį. Pavyzdžiui, aktuaro užduotyje duomenų mokslininkas galėtų sukurti rankiniu būdu sudarytas taisykles apie rūkalių ir nerūkalių mirtingumą. +Kompiuteriai ypač gerai atranda paslėptas tendencijas duomenyse. Ši nauda ypač svarbi tyrėjams, turintiems klausimų apie tam tikrą sritį, kurių neįmanoma lengvai atsakyti sukuriant sąlyginiu pagrindu veikiantį taisyklių variklį. Pavyzdžiui, aktuaro užduotyje duomenų mokslininkas gali sukurti rankomis aprašytas taisykles apie rūkalių ir nerūkančiųjų mirtingumo skirtumus. -Tačiau, kai į lygtį įtraukiama daug kitų kintamųjų, ML modelis gali būti efektyvesnis prognozuojant būsimus mirtingumo rodiklius, remiantis ankstesne sveikatos istorija. Džiugesnis pavyzdys galėtų būti orų prognozės balandžio mėnesiui tam tikroje vietovėje, remiantis duomenimis, įskaitant platumą, ilgumą, klimato pokyčius, artumą prie vandenyno, reaktyvinio srauto modelius ir kt. +Tačiau įtraukus daugybę kitų kintamųjų, ML modelis gali būti efektyvesnis prognozuojant būsimus mirtingumo rodiklius, remiantis praeities sveikatos istorija. Džiugesnis pavyzdys būtų orų prognozės balandžio mėnesiui tam tikroje vietovėje, remiantis duomenimis apie platumą, ilgumą, klimato kaitą, artumą prie vandenyno, srovių modelius ir kt. -✅ Ši [skaidrių prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) apie orų modelius siūlo istorinę perspektyvą, kaip ML naudojamas orų analizei. +✅ Ši [skaidrių prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) apie orų modelius pateikia istorinių ML naudojimo orų analizėje perspektyvą. -## Prieš modelio kūrimą +## Užduotys prieš modelio kūrimą -Prieš pradėdami kurti modelį, turite atlikti kelias užduotis. Norėdami patikrinti savo klausimą ir suformuoti hipotezę, pagrįstą modelio prognozėmis, turite identifikuoti ir sukonfigūruoti kelis elementus. +Prieš pradėdami kurti modelį, turite atlikti keletą užduočių. Kad galėtumėte išbandyti klausimą ir suformuluoti hipotezę, pagrįstą modelio prognozėmis, turite nustatyti ir sukonfigūruoti kelis elementus. ### Duomenys -Norėdami atsakyti į savo klausimą su tam tikru tikrumu, jums reikia pakankamo kiekio tinkamo tipo duomenų. Šiuo metu turite atlikti du dalykus: +Kad galėtumėte užtikrintai atsakyti į savo klausimą, jums reikia tinkamo tipo ir pakankamai daug duomenų. Šiuo metu reikia atlikti dvi užduotis: -- **Surinkti duomenis**. Atsižvelgdami į ankstesnę pamoką apie duomenų analizės sąžiningumą, rinkite duomenis atsargiai. Būkite sąmoningi apie šių duomenų šaltinius, galimus jų šališkumus ir dokumentuokite jų kilmę. -- **Paruošti duomenis**. Duomenų paruošimo procesas apima kelis žingsnius. Jums gali tekti sujungti duomenis ir normalizuoti juos, jei jie gaunami iš įvairių šaltinių. Duomenų kokybę ir kiekį galite pagerinti įvairiais būdais, pvz., konvertuodami tekstus į skaičius (kaip darome [Klasterizavime](../../5-Clustering/1-Visualize/README.md)). Taip pat galite generuoti naujus duomenis, remdamiesi originaliais (kaip darome [Klasifikacijoje](../../4-Classification/1-Introduction/README.md)). Galite išvalyti ir redaguoti duomenis (kaip darysime prieš [Tinklalapio programėlės](../../3-Web-App/README.md) pamoką). Galiausiai, priklausomai nuo mokymo technikų, jums gali tekti juos atsitiktinai sumaišyti. +- **Surinkti duomenis**. Atsižvelgiant į ankstesnę pamoką apie duomenų analizės sąžiningumą, duomenis rinkite atsargiai. Žinokite šių duomenų šaltinius, jų galimus šališkumus ir dokumentuokite jų kilmę. +- **Paruošti duomenis**. Duomenų paruošimo procese yra kelios užduotys. Gali prireikti surinkti duomenis ir juos normalizuoti, jei jie gaunami iš įvairių šaltinių. Duomenų kokybę ir kiekį galite pagerinti įvairiais metodais, pavyzdžiui, konvertuodami tekstines eilutes į skaičius (kaip darome [Klasterizacijoje](../../5-Clustering/1-Visualize/README.md)). Taip pat galite generuoti naujus duomenis, remdamiesi originaliais (kaip darome [Klasifikacijoje](../../4-Classification/1-Introduction/README.md)). Galite valyti ir redaguoti duomenis (kaip darysime prieš [Internetinę programėlę](../../3-Web-App/README.md)). Galiausiai, priklausomai nuo mokymo metodų, gali prireikti duomenis atsitiktinai permaišyti ir sukrauti. -✅ Surinkę ir apdoroję duomenis, skirkite laiko patikrinti, ar jų struktūra leis jums atsakyti į numatytą klausimą. Gali būti, kad duomenys nebus tinkami jūsų užduočiai, kaip sužinome [Klasterizavimo](../../5-Clustering/1-Visualize/README.md) pamokose! +✅ Surinkę ir apdoroję duomenis, patikrinkite, ar jų forma leistų jums spręsti ketinamą klausimą. Duomenys gali būti netinkami užduočiai, kaip mes atrandame mūsų [Klasterizacijos](../../5-Clustering/1-Visualize/README.md) pamokose! ### Savybės ir tikslas -[Savybė](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) yra matuojama jūsų duomenų savybė. Daugelyje duomenų rinkinių ji išreiškiama kaip stulpelio pavadinimas, pvz., „data“, „dydis“ ar „spalva“. Jūsų savybės kintamasis, paprastai žymimas kaip `X` kode, atspindi įvesties kintamąjį, kuris bus naudojamas modelio mokymui. +[Savybė](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) yra matuojama jūsų duomenų savybė. Daugelyje duomenų rinkinių ji išreiškiama kaip stulpelio pavadinimas, pvz., 'data', 'dydis' arba 'spalva'. Jūsų savybės kintamasis, dažnai žymimas kaip `X` kode, reiškia įvesties kintamąjį, kuris bus naudojamas modelio mokymui. -Tikslas yra tai, ką bandote prognozuoti. Tikslas, paprastai žymimas kaip `y` kode, atspindi atsakymą į klausimą, kurį bandote užduoti savo duomenims: gruodį, kokios **spalvos** moliūgai bus pigiausi? San Franciske, kuriuose rajonuose bus geriausios nekilnojamojo turto **kainos**? Kartais tikslas taip pat vadinamas etiketės atributu. +Tikslas yra tai, ką bandote prognozuoti. Tikslas, dažnai žymimas kaip `y` kode, yra atsakymas į klausimą, kurį bandote užduoti savo duomenims: gruodį kokios **spalvos** moliūgai bus pigiausi? San Franciske, kokie rajonai turės geriausias nekilnojamojo turto **kainas**? Kartais tikslas vadinamas žymos atributu. -### Savybių kintamojo pasirinkimas +### Savybės kintamojo pasirinkimas -🎓 **Savybių pasirinkimas ir savybių ištraukimas** Kaip žinoti, kurį kintamąjį pasirinkti kuriant modelį? Tikriausiai pereisite savybių pasirinkimo arba savybių ištraukimo procesą, kad pasirinktumėte tinkamus kintamuosius geriausiam modelio veikimui. Tačiau jie nėra tas pats: „Savybių ištraukimas sukuria naujas savybes iš originalių savybių funkcijų, o savybių pasirinkimas grąžina savybių pogrupį.“ ([šaltinis](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Savybės atranka ir savybės išgavimas** Kaip žinote, kurį kintamąjį rinktis kuriant modelį? Tikriausiai praeisite per savybės atrankos arba savybės išgavimo procesą, norėdami pasirinkti tinkamus kintamuosius geriausiam modeliui. Tačiau jie nėra tas pats: "Savybės išgavimas sukuria naujas savybes iš originalių savybių funkcijų, o savybės atranka grąžina savybių posetį." ([šaltinis](https://wikipedia.org/wiki/Feature_selection)) ### Vizualizuokite savo duomenis -Svarbi duomenų mokslininko įrankių rinkinio dalis yra galimybė vizualizuoti duomenis naudojant kelias puikias bibliotekas, tokias kaip Seaborn ar MatPlotLib. Duomenų vizualizavimas gali leisti jums atskleisti paslėptas koreliacijas, kurias galite panaudoti. Vizualizacijos taip pat gali padėti atskleisti šališkumą ar nesubalansuotus duomenis (kaip sužinome [Klasifikacijoje](../../4-Classification/2-Classifiers-1/README.md)). +Svarbi duomenų mokslininko įrankių dalis yra gebėjimas vizualizuoti duomenis naudojant kelias puikias bibliotekas, tokias kaip Seaborn arba MatPlotLib. Duomenų vizualizacija gali padėti atskleisti paslėptus koreliacijų ryšius, kuriuos galite pasinaudoti. Taip pat jūsų vaizdai gali padėti atskleisti šališkumą arba disbalansuotą duomenų pasiskirstymą (kaip sužinome [Klasifikacijoje](../../4-Classification/2-Classifiers-1/README.md)). ### Padalinkite savo duomenų rinkinį -Prieš mokymą, turite padalinti savo duomenų rinkinį į dvi ar daugiau dalių, kurios yra nevienodo dydžio, bet vis dar gerai atspindi duomenis. +Prieš mokymą reikia padalyti duomenų rinkinį į du ar daugiau nevienodo dydžio dalių, kurios vis tiek gerai atspindi duomenis. -- **Mokymas**. Ši duomenų rinkinio dalis pritaikoma jūsų modeliui, kad jį išmokytumėte. Šis rinkinys sudaro didžiąją dalį pradinio duomenų rinkinio. -- **Testavimas**. Testavimo duomenų rinkinys yra nepriklausoma duomenų grupė, dažnai surinkta iš pradinio duomenų rinkinio, kurią naudojate, kad patvirtintumėte sukurto modelio veikimą. -- **Validacija**. Validacijos rinkinys yra mažesnė nepriklausoma pavyzdžių grupė, kurią naudojate modelio hiperparametrų arba architektūros derinimui, kad pagerintumėte modelį. Priklausomai nuo jūsų duomenų dydžio ir klausimo, kurį užduodate, jums gali nereikėti kurti šio trečiojo rinkinio (kaip pastebime [Laiko eilučių prognozavimo](../../7-TimeSeries/1-Introduction/README.md) pamokoje). +- **Mokymas**. Ši dalis skirta modelio mokymui. Ji sudaro daugumą originalaus duomenų rinkinio. +- **Testavimas**. Testavimo duomenų rinkinys yra nepriklausoma duomenų grupė, dažnai gaunama iš originalių duomenų, kurią naudojate patvirtinti sukurto modelio veikimą. +- **Validavimas**. Validavimo rinkinys yra mažesnė nepriklausoma pavyzdžių grupė, kurią naudojate modelio hiperparametrams arba architektūrai derinti, siekiant pagerinti modelį. Priklausomai nuo duomenų dydžio ir keliamo klausimo, jums gali neprireikti kurti šio trečio rinkinio (kaip pastebima [Laiko eilių prognozavime](../../7-TimeSeries/1-Introduction/README.md)). ## Modelio kūrimas -Naudodami mokymo duomenis, jūsų tikslas yra sukurti modelį, arba statistinį jūsų duomenų atvaizdavimą, naudojant įvairius algoritmus, kad jį **išmokytumėte**. Modelio mokymas leidžia jam analizuoti duomenis, daryti prielaidas apie aptiktus šablonus, juos patvirtinti ir priimti arba atmesti. +Naudodami mokymo duomenis, jūsų tikslas yra sukurti modelį arba statistinį duomenų atvaizdą, naudodami įvairius algoritmus jį **apmokyti**. Mokymas leidžia modeliui įgyti duomenų ir daryti prielaidas apie aptiktas, patvirtintas arba atmestas tendencijas. ### Pasirinkite mokymo metodą -Atsižvelgdami į savo klausimą ir duomenų pobūdį, pasirinksite mokymo metodą. Naršydami [Scikit-learn dokumentaciją](https://scikit-learn.org/stable/user_guide.html) – kurią naudojame šiame kurse – galite išnagrinėti daugybę būdų, kaip mokyti modelį. Priklausomai nuo jūsų patirties, gali tekti išbandyti kelis skirtingus metodus, kad sukurtumėte geriausią modelį. Tikėtina, kad pereisite procesą, kurio metu duomenų mokslininkai vertina modelio veikimą, pateikdami jam nematytus duomenis, tikrindami tikslumą, šališkumą ir kitus kokybę mažinančius aspektus, ir pasirinkdami tinkamiausią mokymo metodą užduočiai atlikti. +Priklausomai nuo jūsų klausimo ir duomenų pobūdžio, pasirinksite mokymo metodą. Peržiūrėję [Scikit-learn dokumentaciją](https://scikit-learn.org/stable/user_guide.html) – kuria naudositės šiame kurse – galėsite išbandyti daug skirtingų būdų modelio mokymui. Priklausomai nuo patirties, gali tekti išbandyti keletą skirtingų būdų geriausiam modeliui sukurti. Dažnai duomenų mokslininkai vertina modelio veikimą, pateikdami jam nematytus duomenis, tikrindami tikslumą, šališkumą ir kitus kokybę mažinančius veiksnius, bei pasirenka tinkamiausią mokymo metodą. -### Mokykite modelį +### Apmokykite modelį -Turėdami mokymo duomenis, esate pasiruošę „pritaikyti“ juos, kad sukurtumėte modelį. Pastebėsite, kad daugelyje ML bibliotekų rasite kodą „model.fit“ – būtent tuo metu pateikiate savo savybių kintamąjį kaip reikšmių masyvą (paprastai „X“) ir tikslinį kintamąjį (paprastai „y“). +Turėdami mokymo duomenis, galite juos pritaikyti ir sukurti modelį. Daugelio ML bibliotekų kode rasite 'model.fit' – būtent šiuo metu siunčiate savo savybės kintamąjį kaip verčių masyvą (dažniausiai 'X') ir tikslo kintamąjį (dažniausiai 'y'). ### Įvertinkite modelį -Kai mokymo procesas bus baigtas (dideliems modeliams mokyti gali prireikti daugybės iteracijų arba „epochų“), galėsite įvertinti modelio kokybę, naudodami testavimo duomenis, kad įvertintumėte jo veikimą. Šie duomenys yra pradinio duomenų rinkinio dalis, kurią modelis anksčiau neanalizavo. Galite išspausdinti lentelę su metrikomis apie modelio kokybę. +Kai mokymas baigtas (tai gali užtrukti daug iteracijų arba 'epochų' mokant didelį modelį), galėsite įvertinti modelio kokybę naudodami testavimo duomenis. Šie duomenys yra dalis originalių duomenų, kurių modelis anksčiau neanalizavo. Galite atspausdinti lentelę su savo modelio kokybės metrikomis. 🎓 **Modelio pritaikymas** -Mašininio mokymosi kontekste modelio pritaikymas reiškia modelio pagrindinės funkcijos tikslumą, kai jis bando analizuoti duomenis, su kuriais nėra susipažinęs. +Mašininio mokymosi kontekste modelio pritaikymas reiškia modelio pagrindinės funkcijos tikslumą, kai modelis bando analizuoti jam nežinomus duomenis. -🎓 **Nepakankamas pritaikymas** ir **perteklinis pritaikymas** yra dažnos problemos, kurios mažina modelio kokybę, nes modelis arba per mažai, arba per daug prisitaiko. Tai sukelia modelio prognozes, kurios yra arba per daug susijusios, arba per mažai susijusios su mokymo duomenimis. Perteklinis modelis per gerai prognozuoja mokymo duomenis, nes jis per daug išmoko duomenų detales ir triukšmą. Nepakankamas modelis nėra tikslus, nes jis negali tiksliai analizuoti nei mokymo duomenų, nei duomenų, kurių dar „nematė“. +🎓 **Permaitinimas** (overfitting) ir **nepasmaitinimas** (underfitting) yra dažnos problemos, kurios mažina modelio kokybę, kai modelis pritaikomas nepakankamai arba per daug. Tai sukelia, kad modelio prognozės yra per daug artimos arba pernelyg nutolusios nuo mokymo duomenų. Permaitinamas modelis per gerai prognozuoja mokymo duomenis, nes per daug gerai išmoko jų detales ir triukšmą. Nepasmaitintas modelis nėra tikslus, nes nei tiksliai analizuoja mokymo duomenis, nei duomenis, kurių dar nematė. -![perteklinis modelis](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> Infografikas sukurtas [Jen Looper](https://twitter.com/jenlooper) +![overfitting model](../../../../translated_images/lt/overfitting.1c132d92bfd93cb6.webp) +> Infografika: [Jen Looper](https://twitter.com/jenlooper) -## Parametrų derinimas +## Parametrų suderinimas -Kai pradiniai mokymai bus baigti, stebėkite modelio kokybę ir apsvarstykite galimybę ją pagerinti koreguojant jo „hiperparametrus“. Skaitykite daugiau apie procesą [dokumentacijoje](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Baigus pradinį mokymą, stebėkite modelio kokybę ir apsvarstykite galimybę ją pagerinti koreguodami 'hiperparametrus'. Daugiau apie šį procesą skaitykite [dokumentacijoje](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Prognozė -Tai momentas, kai galite naudoti visiškai naujus duomenis, kad patikrintumėte modelio tikslumą. „Taikomojo“ ML aplinkoje, kur kuriate interneto išteklius modelio naudojimui gamyboje, šis procesas gali apimti vartotojo įvesties surinkimą (pvz., mygtuko paspaudimą), kad nustatytumėte kintamąjį ir išsiųstumėte jį modeliui įžvalgoms arba vertinimui. +Tai momentas, kai galite naudoti visiškai naujus duomenis modelio tikslumui patikrinti. 'Taikomojo' ML scenarijuje, kai kuriate internetines priemones modelio naudojimui gamyboje, šis procesas gali apimti vartotojo įvesties surinkimą (pvz., mygtuko paspaudimą), kad nustatyti kintamąjį ir išsiųsti jį modeliui inferencijai arba įvertinimui. -Šiose pamokose sužinosite, kaip naudoti šiuos žingsnius, kad pasiruoštumėte, sukurtumėte, išbandytumėte, įvertintumėte ir prognozuotumėte – visus duomenų mokslininko veiksmus ir dar daugiau, kai progresuosite savo kelionėje tapti „pilno ciklo“ ML inžinieriumi. +Šiose pamokose jūs sužinosite, kaip naudoti šiuos žingsnius modelio paruošimui, kūrimui, testavimui, vertinimui ir prognozavimui – visa tai yra duomenų mokslininko gestai ir dar daugiau, kai progresuosite link 'pilno paketo' ML inžinieriaus profesijos. --- ## 🚀Iššūkis -Nupieškite srauto diagramą, atspindinčią ML praktiko žingsnius. Kur save matote šiame procese? Kur, jūsų nuomone, susidursite su sunkumais? Kas jums atrodo lengva? +Nupieškite srautų schemą, atspindinčią ML praktiko žingsnius. Kurioje proceso dalyje dabar save matote? Kur manote, kad susidursite su sunkumais? Kas jums atrodo paprasta? -## [Po paskaitos – testas](https://ff-quizzes.netlify.app/en/ml/) +## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/) ## Apžvalga ir savarankiškas mokymasis -Ieškokite internete interviu su duomenų mokslininkais, kurie aptaria savo kasdienį darbą. Štai [vienas](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Internete ieškokite interviu su duomenų mokslininkais, kuriuose jie aptaria savo kasdienį darbą. Štai [vienas](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Užduotis +## Namų darbai [Interviu su duomenų mokslininku](assignment.md) --- + **Atsakomybės apribojimas**: -Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo. \ No newline at end of file +Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, atkreipkite dėmesį, kad automatizuoti vertimai gali turėti klaidų ar netikslumų. Pirminis dokumentas jo gimtąja kalba turi būti laikomas autoritetingu šaltiniu. Dėl svarbios informacijos rekomenduojama naudotis profesionalų žmogaus vertimu. Mes neatsakome už bet kokius nesusipratimus ar klaidingas interpretacijas, kylančias naudojant šį vertimą. + \ No newline at end of file diff --git a/translations/lt/2-Regression/3-Linear/README.md b/translations/lt/2-Regression/3-Linear/README.md index 7cd8dd66bb..ffd17671f9 100644 --- a/translations/lt/2-Regression/3-Linear/README.md +++ b/translations/lt/2-Regression/3-Linear/README.md @@ -1,136 +1,137 @@ -# Sukurkite regresijos modelį naudojant Scikit-learn: keturi regresijos būdai +# Sukurkite regresijos modelį naudodami Scikit-learn: regresija keturiais būdais ## Pradedančiojo pastaba -Linijinė regresija naudojama tada, kai norime prognozuoti **skaitinę reikšmę** (pvz., namo kainą, temperatūrą ar pardavimus). -Ji veikia ieškant tiesės, kuri geriausiai atspindi ryšį tarp įvesties požymių ir išvesties. +Linijinė regresija naudojama, kai norime prognozuoti **skaitinę reikšmę** (pavyzdžiui, namo kainą, temperatūrą ar pardavimus). Ji veikia radusi tiesią liniją, kuri geriausiai atspindi ryšį tarp įvesties požymių ir išvesties. + +Šioje pamokoje sutelkiame dėmesį į koncepcijos supratimą prieš pradedant tyrinėti pažangesnes regresijos technikas. +![Linijinės ir polininės regresijos infografika](../../../../translated_images/lt/linear-polynomial.5523c7cb6576ccab.webp) +> Infografika autoriaus [Dasani Madipalli](https://twitter.com/dasani_decoded) -Šioje pamokoje daugiausia dėmesio skirsime koncepcijos supratimui prieš nagrinėjant pažangesnes regresijos technikas. -![Linear vs polynomial regression infographic](../../../../translated_images/lt/linear-polynomial.5523c7cb6576ccab.webp) -> Infografika iš [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ši pamoka prieinama ir R kalba!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Įvadas +> ### [Ši pamoka prieinama ir R kalba!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) + +### Įvadas -Iki šiol jau tyrinėjote, kas yra regresija, naudodamiesi pavyzdiniais duomenimis iš moliūgų kainų duomenų rinkinio, kurį naudosime visos pamokos metu. Taip pat jį vizualizavote naudodami Matplotlib. +Iki šiol tyrinėjote, kas yra regresija, su pavyzdiniais duomenimis iš moliūgų kainų duomenų rinkinio, kurį naudosime per visą šią pamoką. Taip pat ją vizualizavote naudodami Matplotlib. -Dabar esate pasiruošę gilintis į regresiją mašininio mokymosi srityje. Nors vizualizacija leidžia suprasti duomenis, tikroji mašininio mokymosi galia yra modelių _mokymas_. Modeliai yra mokomi pagal istoriniai duomenys, kad automatiškai aptiktų duomenų priklausomybes ir leistų prognozuoti rezultatus naujiems, modeliui nematytiems duomenims. +Dabar esate pasiruošę gilintis į regresiją mašininio mokymosi kontekste. Nors vizualizacija leidžia geriau suprasti duomenis, tikroji Mašininio Mokymosi galia atsiskleidžia mokant modelius. Modeliai yra mokomi remiantis istoriniais duomenimis, automatiškai fiksuoja duomenų priklausomybes ir leidžia prognozuoti rezultatus naujiems, iki tol nematytiems duomenims. -Šioje pamokoje sužinosite daugiau apie du regresijos tipus: _pagrindinę linijinę regresiją_ ir _polinominę regresiją_, kartu su kai kuriais šių technikų matematiniu pagrindu. Šie modeliai leis prognozuoti moliūgų kainas, atsižvelgiant į skirtingus įvesties duomenis. +Šioje pamokoje sužinosite daugiau apie du regresijos tipus: _pagrindinę tiesinę regresiją_ ir _polilinę regresiją_ bei susipažinsite su kai kuriais matematiniais pagrindais, slypinčiais už šių technikų. Šie modeliai leis mums prognozuoti moliūgų kainas priklausomai nuo skirtingų įvesties duomenų. -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML pradedantiesiems - Linijinės regresijos supratimas](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML pradedantiesiems - Linijinės regresijos supratimas") -> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie linijinę regresiją. +> 🎥 Spustelėkite aukščiau esantį paveikslėlį trumpam linijinės regresijos apžvalgos vaizdo įrašui. -> Visos šios mokymo programos metu pradedame nuo minimalių matematikos žinių, siekdami, kad ji būtų prieinama studentams iš kitų sričių, todėl atkreipkite dėmesį į pastabas, 🧮 išryškinimus, diagramas ir kitas mokymosi priemones. +> Visos šio mokymo programos metu laikome minimalias matematikos žinias ir siekiame, kad ji būtų suprantama studentams iš kitų sričių, todėl stebėkite pastabas, 🧮 užrašus, diagramas ir kitas mokymosi priemones, kurios padės suprasti medžiagą. -### Priešžinios +### Išankstinės sąlygos -Turėtumėte jau būti susipažinę su moliūgų duomenų struktūra, kurią nagrinėjame. Juos rasite iš anksto įkeltus ir išvalytus šiame pamokos _notebook.ipynb_ faile. faile moliūgų kaina pateikiama už sklypą naujame duomenų rinkinyje. Įsitikinkite, kad galite paleisti šiuos užrašų knygeles Visual Studio Code branduoliuose. +Turėtumėte būti susipažinę su moliūgų duomenų struktūra, kurią nagrinėjame. Šiame pamokos _notebook.ipynb_ faile duomenys yra iš anksto įkelti ir išvalyti. Faile moliūgų kaina pateikiama už skerdeną naujame duomenų rinkinyje. Įsitikinkite, kad galite vykdyti šiuos užrašų knygelių (notebook) failus Visual Studio Code aplinkoje. -### Paruošimas +### Pasiruošimas -Primename, kad įkeliate šiuos duomenis, kad galėtumėte užduoti klausimus apie juos. +Primename, kad šiuos duomenis įkelsite, kad galėtumėte užduoti klausimus. -- Kada geriausia pirkti moliūgus? -- Kokios kainos galima tikėtis už dėžę miniatiūrinių moliūgų? -- Ar juos verta pirkti pusės sklypo krepšyje, ar vieno ir vienos devintosios sklypo dėžėje? -Toliau gilinkimės į šiuos duomenis. +- Kada geriausias laikas pirkti moliūgus? +- Kokią kainą galiu tikėtis už dėžę mini moliūgų? +- Ar juos geriau pirkti pusės skerdenos krepšiuose, ar 1 1/9 skerdenos dėžėse? +Toliau gilinsimės į šiuos duomenis. -Ankstesnėje pamokoje sukūrėte Pandų duomenų rėmelį ir užpildėte jį dalimi pradinio duomenų rinkinio, standartizuodami kainas pagal sklypą. Tačiau tai leido užfiksuoti tik apie 400 duomenų taškų ir tik rudens mėnesiams. +Praėjusioje pamokoje sukūrėte Pandas duomenų rėmelį ir užpildėte jį dalimi originalių duomenų rinkinio, standartizuodami kainas pagal skerdeną. Tačiau tai leido surinkti tik apie 400 duomenų taškų ir tik rudens mėnesiams. -Pažvelkite į duomenis, kuriuos iš anksto įkėlėme šios pamokos knygoje. Duomenys yra įkelti ir pavaizduota pradinė paskirstymo diagrama, rodanti mėnesių duomenis. Galbūt galime gauti šiek tiek daugiau informacijos apie duomenų prigimtį, juos dar labiau išvalydami. +Pažiūrėkite duomenis, kuriuos iš anksto įkėlėme šios pamokos užrašų knygelėje. Duomenys yra iš anksto įkelti ir pateikiamas pradinio sklaidos grafiko vaizdas, rodantis mėnesių duomenis. Gal galime gauti šiek tiek daugiau informacijos, jei duomenis išvalysime labiau. -## Linijinės regresijos tiesė +## Linijinės regresijos linija -Kaip sužinojote 1 pamokoje, linijinės regresijos tikslas yra nubrėžti tiesę, kad galėtume: +Kaip išmokote 1 pamokoje, linijinės regresijos tikslas yra nubrėžti liniją, kuri: -- **Rodyti kintamųjų santykius**. Parodyti santykį tarp kintamųjų -- **Daryti prognozes**. Tiksliai prognozuoti, kur nukris naujas taškas, palyginti su ta linija. +- **Rodo kintamųjų tarpusavio ryšį**. Rodo ryšį tarp kintamųjų +- **Atlieka prognozes**. Tiksliai prognozuoja, kur naujas duomenų taškas bus linijos atžvilgiu -Įprasta naudoti **mažiausių kvadratų regresiją** tokio tipo linijai nubrėžti. Terminas „mažiausių kvadratų“ reiškia procesą, kai sumažinamas bendras modelio klaidos dydis. Kiekvienam duomenų taškui matuojamas vertikalus atstumas (vadinamas likučiu) tarp tikro taško ir mūsų regresijos linijos. +Įprasta, kad tokia linija nubrėžiama naudojant **mažiausių kvadratų regresiją**. Terminas „Mažiausių kvadratų“ reiškia procesą, kai siekiama sumažinti bendrą klaidą mūsų modelyje. Kiekvienam duomenų taškui matuojame vertikalią atstumą (vadinamą liekana) tarp tikros reikšmės ir regresijos linijos. -Šiuos atstumus pakeliame kvadratu dėl dviejų pagrindinių priežasčių: +Šiuos atstumus kvadratuojame dėl dviejų pagrindinių priežasčių: -1. **Dydis svarbiau už kryptį:** Norime, kad klaida -5 būtų tokia pat reikšminga kaip ir klaida +5. Keldami kvadratu visa paverčiame teigiama. +1. **Dydis viršija kryptį:** Klaida -5 turi būti vertinama taip pat kaip klaida +5. Kvadratuojant visos reikšmės tampa teigiamos. -2. **Išskirtinių reikšmių bausmė:** Kvadratu pakeldami didesnė klaida sveria labiau, priversdami tiesę artėti prie tolimų taškų. +2. **Didesnių paklaidų penalizavimas:** Kvadratuojant didesnės klaidos turi didesnį svorį, verčiant liniją labiau artėti prie tolimų taškų. -Tada sudedame visas pakeltas kvadratu klaidas. Mūsų tikslas yra rasti tokią tiesę, kurioje ši suma būtų mažiausia (mažiausia įmanoma reikšmė) – todėl pavadinimas „mažiausių kvadratų“. +Tuomet sudedame visas šias kvadratuotas reikšmes. Mūsų tikslas yra rasti liniją, kurioje šių reikšmių suma yra mažiausia (mažiausia įmanoma vertė) – todėl modelis vadinamas „mažiausių kvadratų“. -> **🧮 Parodykite man matematiką** -> -> Ši linija, vadinama _geriausiai atitinkančia linija_, gali būti išreikšta [lygtimi](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Rodyk matematiką** +> +> Ši linija, vadinama _geriausiai pritaikoma linija_, gali būti išreikšta [lygtimi](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` yra „paaiškinamasis kintamasis“. `Y` yra „priklausomas kintamasis“. Linijos nuolydis yra `b`, o `a` yra y-kirčio reikšmė, kuri nurodo `Y` reikšmę, kai `X = 0`. -> ->![calculate the slope](../../../../translated_images/lt/slope.f3c9d5910ddbfcf9.webp) -> -> Pirmiausia apskaičiuokite nuolydį `b`. Infografika iš [Jen Looper](https://twitter.com/jenlooper) -> -> Kitais žodžiais tariant, ir remiantis mūsų moliūgų duomenų pradiniu klausimu: „prognozuoti moliūgo kainą už sklypą pagal mėnesį“, `X` būtų kaina, o `Y` – pardavimo mėnuo. -> ->![complete the equation](../../../../translated_images/lt/calculation.a209813050a1ddb1.webp) -> -> Apskaičiuokite `Y` reikšmę. Jei mokate apie 4 dolerius, tai turi būti balandis! Infografika iš [Jen Looper](https://twitter.com/jenlooper) -> -> Formulė, kuri apskaičiuoja liniją, turi parodyti linijos nuolydį, kuris taip pat priklauso nuo kirčio, arba kur yra `Y`, kai `X = 0`. -> -> Galite pamatyti šios vertės skaičiavimo metodą svetainėje [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Taip pat apsilankykite [šiame mažiausių kvadratų skaičiuoklyje](https://www.mathsisfun.com/data/least-squares-calculator.html), norėdami pamatyti, kaip skaičių vertės veikia liniją. + +> `X` yra „aiškinamasis kintamasis“. `Y` yra „priklausomas kintamasis“. Linijos nuolydis yra `b`, o `a` – y sankirta, reiškianti `Y` reikšmę, kai `X = 0`. +> +>![nuolydžio skaičiavimas](../../../../translated_images/lt/slope.f3c9d5910ddbfcf9.webp) +> +> Pirmiausia apskaičiuojame nuolydį `b`. Infografika autoriaus [Jen Looper](https://twitter.com/jenlooper) +> +> Kitaip tariant, ir referuodamiesi moliūgų duomenų pradiniu klausimu: „prognozuoti moliūgų kainą pagal mėnesį už skerdeną“, `X` reiškia kainą, o `Y` – pardavimo mėnesį. +> +>![lygtys papildymas](../../../../translated_images/lt/calculation.a209813050a1ddb1.webp) +> +> Apskaičiuokite Y reikšmę. Jei mokate apie 4 dolerius, tikriausiai yra balandis! Infografika autoriaus [Jen Looper](https://twitter.com/jenlooper) +> +> Matematika, kuri apskaičiuoja liniją, turi parodyti linijos nuolydį, kuris taip pat priklauso nuo sankirtos, t. y. kur yra `Y`, kai `X = 0`. +> +> Šį skaičiavimo metodą galite pamatyti svetainėje [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Taip pat apsilankykite [šiame mažiausių kvadratų skaičiuoklyje](https://www.mathsisfun.com/data/least-squares-calculator.html) ir sekite, kaip skaičių reikšmės veikia liniją. ## Koreliacija -Dar vienas suprantamas terminas yra **koreliacijos koeficientas** tarp pasirinktų `X` ir `Y` kintamųjų. Naudodami sklaidos diagramą galite greitai vizualizuoti šį koeficientą. Taškai, išsidėstę tvarkingai linijoje, rodo aukštą koreliaciją, o taškai, išmėtyti plačiai tarp X ir Y, rodo mažą koreliaciją. +Dar vienas svarbus terminas – **koreliacijos koeficientas** tarp nurodytų X ir Y kintamųjų. Naudodamiesi sklaidos grafiku, galite greitai įvertinti šį koeficientą. Taškai išdėstyti lygiagrečioje linijoje reiškia aukštą koreliaciją, o išmėtyti po visą plokštumą – žemą. -Geras linijinės regresijos modelis bus tas, kuris turi aukštą (artimą 1, o ne 0) koreliacijos koeficientą, naudojant mažiausių kvadratų regresijos metodą su regresijos linija. +Geras linijinės regresijos modelis yra tas, kurio koreliacijos koeficientas yra aukštas (artimas 1, o ne 0), naudojant mažiausių kvadratų regresijos metodą su regresijos linija. -✅ Paleiskite šios pamokos užrašų knygą ir pažiūrėkite į mėnesio ir kainos sklaidos diagramą. Ar pagal jūsų sklaidos diagramos vizualinį įvertinimą moliūgų pardavimų duomenys, susiejantys mėnesį su kaina, atrodo turintys aukštą ar žemą koreliaciją? Ar tai pasikeičia, jei naudotumėte smulkesnį matavimą, pvz., *metų dienos* (t. y. dienų skaičių nuo metų pradžios)? +✅ Vykdykite šios pamokos užrašų knygelę ir pažiūrėkite į „Mėnuo vs Kaina“ sklaidos grafiką. Ar šiame grafike matote didelę ar mažą koreliaciją tarp mėnesio ir moliūgų kainos? O ar pasikeistų, jei panaudotumėte smulkesnį rodiklį, pvz., *metų dieną* (skaičius dienų nuo metų pradžios)? -Žemiau pateiktame kode laikysimės, kad duomenys yra išvalyti ir turime duomenų rėmelį `new_pumpkins`, panašų į šį: +Toliau pateiktame kode laikysimės, kad turime išvalytus duomenis pagrindiniame duomenų rėmelyje `new_pumpkins`, panašų į šį: -ID | Mėnuo | MetųDiena | Veislė | Miestas | Pakuotė | Žemiausia Kaina | Aukščiausia Kaina | Kaina ----|-------|-----------|---------|---------|---------|----------------|-------------------|------ -70 | 9 | 267 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 15.0 | 15.0 | 13.636364 +ID | Mėnuo | MetųDiena | Veislė | Miestas | Pakuotė | Mažesnė kaina | Didžiausia kaina | Kaina +---|-------|-----------|---------|--------|---------|---------------|------------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 15.0 | 15.0 | 13.636364 -> Duomenų valymo kodas pateiktas [`notebook.ipynb`](notebook.ipynb). Atlikome tokius pačius valymo veiksmus kaip ankstesnėje pamokoje ir apskaičiavome `DayOfYear` stulpelį naudodami šią išraišką: +> Duomenų išvalymo kodas pateiktas faile [`notebook.ipynb`](notebook.ipynb). Atlikome tuos pačius išvalymo veiksmus kaip ir ankstesnėje pamokoje bei apskaičiavome stulpelį `DayOfYear` pagal šią išraišką: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +Dabar, kai suprantate linijinės regresijos matematiką, sukurkime regresijos modelį, kuris prognozuotų, kuri moliūgų pakuotė turės geriausias kainas. Pavyzdžiui, kas nors, kas perka moliūgus rudens moliūgų šventei, norėtų šios informacijos optimizuoti pakuočių pirkimą. -Dabar, kai suprantate linijinės regresijos matematiką, sukurkime regresijos modelį, kad pamatytume, ar galime prognozuoti, kuri moliūgų pakuotė turės geriausias kainas. Moliūgų pirkėjas, norintis sukurti moliūgų dekoracijų kampelį šventėms, gali norėti šios informacijos, kad optimizuotų moliūgų pirkimą. +## Koreliacijos paieška -## Ieškome koreliacijos +[![ML pradedantiesiems - Koreliacijos paieška: raktas į linijinę regresiją](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML pradedantiesiems - Koreliacijos paieška: raktas į linijinę regresiją") -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +> 🎥 Spustelėkite aukščiau esantį paveikslėlį trumpam vaizdo įrašui apie koreliaciją. -> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie koreliaciją. +Iš ankstesnės pamokos galbūt matėte, kad vidutinė kaina skirtingais mėnesiais atrodo taip: -Iš ankstesnės pamokos tikriausiai matėte, kad vidutinė kaina skirtingais mėnesiais atrodo maždaug taip: +Vidutinė kaina pagal mėnesį -Average price by month +Tai rodo, kad turėtų būti tam tikra koreliacija, ir galime pabandyti apmokyti linijinės regresijos modelį, prognozuoti ryšį tarp `Mėnuo` ir `Kaina` arba tarp `MetųDiena` ir `Kaina`. Čia pateikiamas sklaidos grafikas, rodantis pastarąjį ryšį: -Tai leidžia manyti, kad turėtų būti tam tikra koreliacija, ir galime pabandyti apmokyti linijinį regresijos modelį, prognozuojant santykį tarp `Month` ir `Price` arba tarp `DayOfYear` ir `Price`. Žemiau pateikta sklaidos diagrama rodo pastarąjį ryšį: +Sklaidos grafikas Kaina vs Metų Diena -Scatter plot of Price vs. Day of Year - -Pažiūrėkime, ar yra koreliacija, naudodami funkciją `corr`: +Patikrinkime koreliaciją naudodami funkciją `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Atrodo, kad koreliacija yra gana maža, -0.15 pagal `Mėnesį` ir -0.17 pagal `Metų dieną`, tačiau gali būti kita svarbi priklausomybė. Atrodo, kad yra skirtingų kainų grupių, atitinkančių skirtingas moliūgų veisles. Norint patvirtinti šią hipotezę, nubraižykime kiekvieną moliūgų kategoriją skirtinga spalva. Pateikdami parametrą `ax` funkcijai `scatter` galime nubrėžti visus taškus viename grafike: + +Atrodo, kad koreliacija gana maža, -0.15 pagal `Mėnesį` ir -0.17 pagal `MetųDieną`, bet gali būti kita svarbi priklausomybė. Atrodo, kad yra skirtingų kainų grupių, atitinkančių skirtingas moliūgų veisles. Norėdami patvirtinti hipotezę, pavaizduokime kiekvieną moliūgų kategoriją skirtinga spalva. Perdami parametru `ax` į `scatter` funkciją, galime pavaizduoti visus taškus viename grafike: ```python ax=None @@ -139,75 +140,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Sklaidos grafikas Kaina vs Metų diena spalvomis -Scatter plot of Price vs. Day of Year - -Mūsų tyrimas rodo, kad veislė daro didesnį poveikį bendrai kainai nei tikrasis pardavimo laikas. Tai matosi ir stulpeline diagramoje: +Mūsų tyrimas rodo, kad veislė turi didesnį poveikį kainai nei faktinė pardavimo data. Tai matyti ir juostiniame grafike: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Juostinis grafikas Kaina pagal veislę -Bar graph of price vs variety - -Šiuo metu sutelkime dėmesį tik į vieną moliūgų veislę, 'pie type', ir pažiūrėkime, kokį poveikį datą turi kaina: +Kol kas susikoncentruokime tik į vieną moliūgų veislę – 'pie type', ir pažiūrėkime, koks poveikis kainai turi data: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Sklaidos grafikas Kaina vs Metų diena pie veislei -Jei dabar apskaičiuosime koreliaciją tarp `Price` ir `DayOfYear`, naudodami funkciją `corr`, gausime apie `-0.27` - tai reiškia, kad verta mokyti prognozinį modelį. +Jeigu dabar apskaičiuosime koreliaciją tarp `Kainos` ir `MetųDienos` naudojant funkciją `corr`, gausime apie `-0.27` – tai reiškia, kad verta apmokyti prognozuojamą modelį. -> Prieš mokant linijinį regresijos modelį svarbu įsitikinti, kad mūsų duomenys yra švarūs. Linijinė regresija blogai veikia su trūkstamomis reikšmėmis, todėl verta atsikratyti visų tuščių langelių: +> Prieš apmokant linijinį regresijos modelį svarbu įsitikinti, kad mūsų duomenys yra švarūs. Linijinė regresija blogai veikia su trūkstamomis reikšmėmis, todėl verta pašalinti visas tuščias langelius: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Kita galimybė būtų užpildyti trūkstamas reikšmes vidutinėmis tos stulpelio reikšmėmis. + +Kita galimybė – trūkstamas reikšmes užpildyti atitinkamo stulpelio vidurkiu. ## Paprasta linijinė regresija -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ML pradedantiesiems - Linijinė ir polilinė regresija naudojant Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML pradedantiesiems - Linijinė ir polilinė regresija naudojant Scikit-learn") -> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie linijinę ir polinominę regresiją. +> 🎥 Spustelėkite aukščiau esantį paveikslėlį trumpam linijinės ir polilinės regresijos apžvalgos vaizdo įrašui. -Norėdami apmokyti mūsų linijinį regresijos modelį, naudosime **Scikit-learn** biblioteką. +Norėdami apmokyti linijinės regresijos modelį, naudosime **Scikit-learn** biblioteką. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Pradėsime atskirdami įvesties reikšmes (požymius) ir tikėtiną išvestį (etiketę) į atskirus numpy masyvus: + +Pradėjome atskirdami įvesties reikšmes (ypatybes) ir numatytas išvestis (etiketes) į atskirus numpy masyvus: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Atkreipkite dėmesį, kad turėjome atlikti `reshape` operaciją su įvesties duomenimis, kad Linear Regression paketas juos teisingai suprastų. Linijinė regresija laukia 2D masyvo, kuriame kiekviena eilutė atitinka vieną įvesties požymių vektorių. Mūsų atveju, tai yra masyvas su N×1 matmenimis, kur N – duomenų kiekis. -> Atkreipkite dėmesį, kad turėjome naudoti metodą `reshape` su įvesties duomenimis, kad linijinės regresijos paketas teisingai juos suprastų. Linijinė regresija tikisi 2D masyvo kaip įvesties, kur kiekviena masyvo eilutė atitinka požymių vektorių. Mūsų atveju, kadangi turime tik vieną įvestį – mums reikia masyvo formos N×1, kur N yra duomenų rinkinio dydis. - -Tuomet turime padalyti duomenis į mokymo ir testavimo rinkinius, kad vėliau patikrintume modelio veikimą: +Toliau padalinsime duomenis į mokymo ir testavimo rinkinius, kad galėtume modelio kokybę patikrinti po apmokymo: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Galiausiai, tikrasis linijinės regresijos modelio apmokymas užtrunka tik dvi kodo eilutes. Sukuriame `LinearRegression` objektą ir pritaikome jį mūsų duomenims naudodami metodą `fit`: + +Galiausiai, modelio apmokymas užtrunka tik dviem kodo eilutėmis. Apibrėžiame `LinearRegression` objektą ir pritaikome jį duomenims su `fit` metodu: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` objektas po `fit` treniravimo turi visas regresijos koeficientus, kuriuos galima pasiekti naudojant `.coef_` savybę. Mūsų atveju yra tik vienas koeficientas, kuris turėtų būti apie `-0.017`. Tai reiškia, kad kainos, atrodo, šiek tiek krinta su laiku, bet ne per daug, apie 2 centus per dieną. Taip pat galime pasiekti regresijos sankirtos su Y ašimi tašką naudodami `lin_reg.intercept_` – mūsų atveju jis bus apie `21`, rodantis kainą metų pradžioje. +`LinearRegression` objektas, atlikus `fit` pritaikymą, turi visus regresijos koeficientus, kuriuos galima pasiekti naudojant `.coef_` savybę. Mūsų atveju yra tik vienas koeficientas, kuris turėtų būti apie `-0.017`. Tai reiškia, kad kainos, atrodo, šiek tiek krinta su laiku, bet ne per daug, apie 2 centus per dieną. Taip pat galime pasiekti regresijos sandūros tašką su Y ašimi naudojant `lin_reg.intercept_` - jis bus apie `21` mūsų atveju, nurodydamas kainą metų pradžioje. -Kad pamatytume, kaip tikslus mūsų modelis, galime prognozuoti kainas testiniame duomenų rinkinyje ir tada išmatuoti, kiek mūsų prognozės yra arti tikėtinų reikšmių. Tai galima padaryti naudojant šaknies kvadratinės vidutinės klaidos (RMSE) metriką, kuri yra visų kvadratinių skirtumų tarp tikėtinos ir prognozuotos reikšmės vidurkio šaknis. +Norėdami pamatyti, kaip tikslus mūsų modelis, galime prognozuoti kainas testiniame duomenų rinkinyje ir tada išmatuoti, kiek prognozės artimos tikėtoms reikšmėms. Tai galima padaryti naudojant kvadratinės vidutinės šaknies klaidos (RMSE) metriką, kuri yra kvadratinės reikšmės vidurkio šaknis iš visų kvadratinių skirtumų tarp tikėtinų ir prognozuotų reikšmių. ```python pred = lin_reg.predict(X_test) @@ -222,9 +223,9 @@ Mūsų klaida atrodo apie 2 taškus, tai yra ~17%. Ne per gera. Kitas modelio ko score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - Jei reikšmė yra 0, tai reiškia, kad modelis neatsižvelgia į įvesties duomenis ir veikia kaip *blogiausias tiesinis prognozuotojas*, kuris tiesiog yra rezultatų vidurkis. 1 reikšmė reiškia, kad galime tobulai prognozuoti visus tikėtinus rezultatus. Mūsų atveju koeficientas yra apie 0.06, kas yra gana žema reikšmė. +Jei reikšmė yra 0, tai reiškia, kad modelis neatkreipia dėmesio į įvesties duomenis ir veikia kaip *blogiausias tiesinis prognozuotojas*, kuris yra tiesiog rezultato vidurkis. 1 reikšmė reiškia, kad galime tobulai prognozuoti visus tikėtinus rezultatus. Mūsų atveju koeficientas yra apie 0.06, kas yra gana žema. -Taip pat galime pavaizduoti testinius duomenis kartu su regresijos linija, kad geriau matytume, kaip regresija veikia mūsų atveju: +Taip pat galime nubraižyti testinius duomenis kartu su regresijos linija, kad geriau matytume, kaip mums sekasi regresija: ```python plt.scatter(X_test,y_test) @@ -235,17 +236,17 @@ plt.plot(X_test,pred) ## Polinominė regresija -Kitas tiesinės regresijos tipas yra polinominė regresija. Nors kartais tarp kintamųjų yra tiesinis ryšys – kuo didesnė moliūgo apimtis, tuo didesnė kaina – kartais šių ryšių negalima nubraižyti kaip plokštumos ar tiesės. +Kita linijinės regresijos rūšis yra polinominė regresija. Nors kartais tarp kintamųjų yra tiesinė priklausomybė – kuo didesnė moliūgo apimtis, tuo didesnė kaina – kartais šių priklausomybių negalima pavaizduoti kaip plokštumos ar tiesės. -✅ Štai [dar keletas pavyzdžių](https://online.stat.psu.edu/stat501/lesson/9/9.8) duomenų, kuriuose galima naudoti polinominę regresiją. +✅ Čia yra [dar keli pavyzdžiai](https://online.stat.psu.edu/stat501/lesson/9/9.8) duomenų, kuriems galima pritaikyti polinominę regresiją -Dar kartą pažiūrėkite į ryšį tarp Datos ir Kainos. Ar šis sklaidos grafikas tikrai turėtų būti analizuojamas tiesės pagalba? Ar kainos negali svyruoti? Tokiu atveju galima išbandyti polinominę regresiją. +Dar kartą pažvelkite į priklausomybę tarp Datos ir Kainos. Ar šis sklaidos diagrama atrodo, kad būtinai turėtų būti analizuojama tiesės būdu? Negali kainos svyruoti? Tokiu atveju galite išbandyti polinominę regresiją. -✅ Polinomai yra matematiniai reiškiniai, galintys susidaryti iš vieno ar daugiau kintamųjų ir koeficientų. +✅ Polinomai yra matematiniai reiškiniai, kurie gali susidėti iš vieno ar kelių kintamųjų ir koeficientų -Polinominė regresija sukuria išlenktą liniją, kad geriau atitiktų netiesinius duomenis. Mūsų atveju, jei įvesime kvadratinį `DayOfYear` kintamąjį, galėsime pritaikyti parabolinį kreivę, kuri turės minimumą tam tikru metų momentu. +Polinominė regresija sukuria kreivę liniją, kad geriau pritaikytųsi prie netiesinių duomenų. Mūsų atveju, jei įvedame kvadratinį `DayOfYear` kintamąjį į įvesties duomenis, turėtume galėti pritaikyti duomenis paraboliniam kreiviui, kuris turės minimumą tam tikru punktu metų viduje. -Scikit-learn turi naudingą [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), leidžiantį sujungti kelis duomenų apdorojimo žingsnius. **Pipeline** yra **vertintojų** grandinė. Mūsų atveju sukursime pipeline, kuris pirmiausia pridės polinominius bruožus modelyje, o tada išmokys regresiją: +Scikit-learn turi naudingą [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), leidžiančią sujungti skirtingus duomenų apdorojimo žingsnius. **Pipeline** yra **estimatorių** grandinė. Mūsų atveju sukursime pipeline, kuris pirmiausia prideda polinominius požymius prie modelio, o tada treniruoja regresiją: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Naudojant `PolynomialFeatures(2)` reiškia, kad naudosime visus antrinės laipsnio polinomus iš įvesties duomenų. Mūsų atveju tai reikš tik `DayOfYear`2, tačiau turint du įvesties kintamuosius, pvz., X ir Y, bus pridėta X2, XY ir Y2. Taip pat galime naudoti aukštesnių laipsnių polinomus, jei norime. +Naudojant `PolynomialFeatures(2)` reiškia, kad įtrauksime visus antrinės eilės polinomius iš įvesties duomenų. Mūsų atveju tai reikš tik `DayOfYear`2, bet turint du kintamuosius X ir Y, tai pridės X2, XY ir Y2. Taip pat galime naudoti aukštesnės eilės polinomus, jei norime. + +Pipeline galima naudoti tokiu pačiu būdu kaip originalų `LinearRegression` objektą, t.y. galime `fit` pritaikyti pipeline ir tada naudoti `predict`, kad gautume prognozes: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Kad nubraižytume sklandžią aproksimacijos kreivę, naudojame `np.linspace` sukurti vienodai paskirstytą įvesties reikšmių intervalą, o ne piešti tiesiogiai neorganizuotus testinius duomenis (kas būtų zigzaginė linija): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline galima naudoti taip pat kaip ir pradinį `LinearRegression` objektą, t.y. galime `fit` treniruoti pipeline ir tada naudoti `predict`, kad gautume prognozių rezultatus. Štai grafikas, rodantis testinius duomenis ir apytikslę kreivę: +Čia grafikas, rodantis testinius duomenis ir aproksimacijos kreivę: Polynomial regression -Naudodami polinominę regresiją galime gauti šiek tiek mažesnę MSE ir didesnį determinacijos koeficientą, bet ne žymiai. Turime atsižvelgti į kitas savybes! +Naudodami polinominę regresiją galime gauti šiek tiek mažesnį RMSE ir didesnį determinacijos koeficientą, bet ne ženkliai. Turime atsižvelgti į kitas ypatybes! -> Matote, kad mažiausios moliūgų kainos fiksuojamos kažkur apie Heloviną. Kaip tai galima paaiškinti? +> Galite pastebėti, kad minimalios moliūgų kainos stebimos maždaug Helovino metu. Kaip tai paaiškintumėte? -🎃 Sveikiname, ką tik sukūrėte modelį, kuris gali padėti prognozuoti moliūgų rūšių kainas pyragams. Tikriausiai tą patį procedūrą galima pakartoti visoms moliūgų rūšims, tačiau tai būtų varginantis darbas. Dabar išmokime, kaip mūsų modelyje atsižvelgti į moliūgo veislę! +🎃 Sveikiname, ką tik sukūrėte modelį, kuris gali padėti prognozuoti moliūgų pyrago kainą. Tikriausiai tą patį procesą galite pakartoti visoms moliūgų rūšims, tačiau tai būtų varginanti užduotis. Dabar išmokime, kaip į modelį įtraukti moliūgų įvairovę! -## Kategoriniai bruožai +## Kategoriniai požymiai -Idealioje situacijoje norėtume prognozuoti kainas skirtingoms moliūgų veislėms naudojant tą patį modelį. Tačiau stulpelis `Variety` šiek tiek skiriasi nuo tokių stulpelių kaip `Month`, nes jis turi ne skaitines reikšmes. Tokie stulpeliai vadinami **kategoriniais**. +Idealiame pasaulyje norime galėti prognozuoti kainas skirtingoms moliūgų rūšims naudojant tą patį modelį. Tačiau `Variety` stulpelis skiriasi nuo tokių stulpelių kaip `Month`, nes jis turi ne skaitines reikšmes. Tokie stulpeliai vadinami **kategoriniais**. -[![ML pradedantiesiems – kategorinių bruožų prognozės su tiesine regresija](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML pradedantiesiems – kategorinių bruožų prognozės su tiesine regresija") +[![ML pradedantiesiems - Kategorinių požymių prognozės su linijine regresija](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML pradedantiesiems - Kategorinių požymių prognozės su linijine regresija") -> 🎥 Paspauskite aukščiau esantį paveikslėlį, kad peržiūrėtumėte trumpą vaizdo įrašą apie kategorinius bruožus. +> 🎥 Spustelėkite paveikslėlį aukščiau, kad peržiūrėtumėte trumpą vaizdo pristatymą apie kategorinių požymių naudojimą. -Čia matote, kaip vidutinė kaina priklauso nuo veislės: +Čia matote, kaip vidutinė kaina priklauso nuo rūšies: Average price by variety -Kad atsižvelgtume į veislę, pirmiausia turime ją paversti į skaitmeninę formą arba **užkoduoti**. Yra keli būdai, kaip tai padaryti: +Norėdami atsižvelgti į rūšį, pirmiausia turime ją paversti skaitine forma, arba **užkoduoti**. Yra keli būdai tai padaryti: -* Paprastas **skaitmeninis kodavimas** sukurs lentelę skirtingų veislių ir pakeis veislės pavadinimą į tos lentelės indeksą. Tai nėra geriausia idėja tiesinei regresijai, nes tiesinė regresija ima tikrąjį skaitinę indekso vertę ir prideda ją prie rezultato, daugindama iš tam tikro koeficiento. Mūsų atveju ryšys tarp indekso ir kainos yra akivaizdžiai nelinijinis, net jei užtikrinsime, kad indeksai būtų tam tikra tvarka. -* **Vieno karšto kodavimas (one-hot encoding)** pakeis `Variety` stulpelį į 4 atskirus stulpelius, po vieną kiekvienai veislei. Kiekviename stulpelyje bus `1`, jei atitinkamas įrašas priklauso tai veislei, ir `0` kitu atveju. Tai reiškia, kad tiesinėje regresijoje bus keturi koeficientai, po vieną kiekvienai moliūgų veislei, atsakingi už „pradinę kainą“ (ar tiksliau „papildomą kainą“) už tą tam tikrą veislę. +* Paprastas **skaitinis kodavimas** sudarys lentelę su skirtingomis rūšimis, o tada pakeis rūšies pavadinimą indeksu šioje lentelėje. Tai nėra geriausia idėja linijinei regresijai, nes ji naudoja faktinę indekso skaitinę reikšmę ir prideda ją prie rezultato, dauginama pagal koeficientą. Mūsų atveju priklausomybė tarp indekso numerio ir kainos aiškiai nėra tiesinė, net jei užtikrinsime, kad indeksai būtų tam tikra tvarka. +* **Vieneto kodavimas (one-hot encoding)** pakeis `Variety` stulpelį keturiais atskirais stulpeliais, po vieną kiekvienai rūšiai. Kiekviename stulpelyje bus `1`, jeigu atitinkamas įrašas priklauso tai rūšiai, ir `0` kitu atveju. Tai reiškia, kad linijinėje regresijoje bus keturi koeficientai, po vieną kiekvienai moliūgų rūšiai, atsakingi už "pradinę kainą" (arba tiksliau "papildomą kainą") tai konkrečiai rūšiai. -Žemiau esantis kodas rodo, kaip galima vieno karšto kodavimo būdu užkoduoti veislę: +Žemiau pateiktas kodas, kaip galima vieneto kodavimu užkoduoti rūšį: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Kad treniruotume tiesinę regresiją su vieno karšto kodavimu kaip įvestimi, tereikia tinkamai inicializuoti `X` ir `y` duomenis: +Norėdami apmokyti linijinę regresiją naudodami vieneto koduotą rūšį kaip įvestį, tiesiog tinkamai nustatome `X` ir `y` duomenis: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Likusi kodo dalis ta pati, kaip ir anksčiau treniruojant tiesinę regresiją. Jei pabandysite, pamatysite, kad vidutinė kvadratinė klaida yra maždaug ta pati, tačiau gauname daug aukštesnį determinacijos koeficientą (~77%). Norint gauti dar tikslesnes prognozes, galime atsižvelgti į daugiau kategorinių savybių, taip pat ir į skaitmeninius kintamuosius, pavyzdžiui, `Month` ar `DayOfYear`. Kad gautume vieną didelį savybių masyvą, galime naudoti `join`: +Likusi dalis kodo tokia pati, kaip naudojome aukščiau treniruojant linijinę regresiją. Jei išbandysite, pamatysite, kad vidutinė kvadratinė klaida beveik tokia pati, bet gauname daug aukštesnį determinacijos koeficientą (~77%). Norėdami gauti dar tikslesnes prognozes, galime įtraukti daugiau kategorinių požymių, taip pat skaitinių požymių, tokių kaip `Month` ar `DayOfYear`. Norėdami sudaryti vieną didelį požymių masyvą, galime naudoti `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,14 +342,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Čia taip pat atsižvelgiama į `City` ir `Package` tipus, kas suteikia MSE 2.84 (10%) ir determinaciją 0.94! +Čia taip pat atsižvelgiame į `City` ir `Package` tipus, kas duoda RMSE 2.84 (10.5%) ir determinaciją 0.94! -## Viso sujungimas +## Viskas kartu -Kad sukurtume geriausią modelį, galime naudoti sujungtus (vieno karšto kodavimo kategorinius + skaitmeninius) duomenis kartu su polinomine regresija. Štai visas kodas jūsų patogumui: +Kad sukurtume geriausią modelį, galime naudoti sujungtus (vieneto koduotus kategorinius + skaitinius) duomenis aukščiau esančiame pavyzdyje kartu su polinomine regresija. Štai patogiam naudojimui pilnas kodas: ```python -# nustatyti mokymo duomenis +# paruošti mokymo duomenis X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -336,51 +359,51 @@ y = new_pumpkins['Price'] # atlikti mokymo ir testavimo duomenų padalijimą X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# nustatyti ir apmokyti srautą +# sukonfigūruoti ir apmokyti vamzdelį pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # prognozuoti rezultatus testavimo duomenims pred = pipeline.predict(X_test) -# apskaičiuoti vidutinę kvadratinę paklaidą ir determinacijos koeficientą -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# apskaičiuoti RMSE ir determinacijos koeficientą +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Tai turėtų suteikti geriausią determinacijos koeficientą, beveik 97%, ir MSE=2.23 (~8% prognozės klaida). +Tai turėtų duoti geriausią determinacijos koeficientą beveik 97% ir RMSE=2.23 (~8% prognozės klaida). -| Modelis | MSE | Determinacija | -|---------|-----|--------------| -| `DayOfYear` tiesinė | 2.77 (17.2%) | 0.07 | +| Modelis | RMSE | Determinacija | +|---------|------|--------------| +| `DayOfYear` linijinė | 2.77 (17.2%) | 0.07 | | `DayOfYear` polinominė | 2.73 (17.0%) | 0.08 | -| `Variety` tiesinė | 5.24 (19.7%) | 0.77 | -| Visos savybės tiesinė | 2.84 (10.5%) | 0.94 | -| Visos savybės polinominė | 2.23 (8.25%) | 0.97 | +| `Variety` linijinė | 5.24 (19.7%) | 0.77 | +| Visi požymiai linijinis | 2.84 (10.5%) | 0.94 | +| Visi požymiai polinominis | 2.23 (8.25%) | 0.97 | -🏆 Puikiai padirbėta! Šiame užsiėmime sukūrėte keturis regresijos modelius ir pagerinote modelio kokybę iki 97%. Paskutinėje regresijos dalyje sužinosite apie logistinę regresiją, skirtą klasių nustatymui. +🏆 Puikiai! Šioje pamokoje sukūrėte keturis regresijos modelius ir pagerinote modelio kokybę iki 97%. Paskutiniame regresijos skyriuje sužinosite apie logistinės regresijos taikymą kategorijų nustatymui. --- ## 🚀Iššūkis -Išbandykite kelis skirtingus kintamuosius šiame užrašų knygelėje, kad pamatytumėte, kaip koreliacija atitinka modelio tikslumą. +Išbandykite kelis skirtingus kintamuosius šiame užrašų knygoje, kad sužinotumėte, kaip koreliacija atitinka modelio tikslumą. -## [Paskaitos testas](https://ff-quizzes.netlify.app/en/ml/) +## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/) -## Peržiūra ir savarankiškas mokymasis +## Apžvalga ir savarankiškas mokymasis -Šioje pamokoje sužinojome apie tiesinę regresiją. Yra ir kitų svarbių regresijos tipų. Perskaitykite apie žingsninę, Ridge, Lasso ir Elasticnet metodikas. Gera kursų programa norint gilintis yra [Stanfordo statistinės mokymosi kursas](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Šioje pamokoje išmokome apie linijinę regresiją. Yra ir kitų svarbių regresijos rūšių. Perskaitykite apie žingsninę, Ridge, Lasso ir Elasticnet metodikas. Geras kursas gilintis yra [Stanford statistinio mokymosi kursas](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Užduotis +## Namų darbas -[Sudaryti modelį](assignment.md) +[Statykite modelį](assignment.md) --- -**Atsakomybės apribojimas**: -Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinėje informacijoje rekomenduojama naudotis profesionaliu žmogaus atliktu vertimu. Mes neatsakome už bet kokias nesusipratimus ar neteisingas interpretacijas, kylančias naudojant šį vertimą. +**Atsakomybės apribojimas**: +Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors stengiamės užtikrinti tikslumą, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų arba netikslumų. Originalus dokumentas gimtąja kalba turi būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neatsakome už jokią painiavą ar neteisingą interpretaciją, kylančią dėl šio vertimo naudojimo. \ No newline at end of file diff --git a/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb b/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb index b3831245b6..164b19ba59 100644 --- a/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linijinė ir polinominė regresija moliūgų kainodarai - Pamoka 3\n", + "## Linijinė ir polininė regresija moliūgų kainodarai – 3 pamoka\n", "\n", - "Įkelkite reikalingas bibliotekas ir duomenų rinkinį. Konvertuokite duomenis į duomenų rėmelį, kuriame yra duomenų dalis:\n", + "Įkelkite reikalingas bibliotekas ir duomenų rinkinį. Konvertuokite duomenis į duomenų rėmelį, kuriame būtų duomenų pogrupis:\n", "\n", - "- Pasirinkite tik moliūgus, kurių kaina nurodyta už statinę\n", + "- Gaukite tik moliūgus, kurių kainos nurodytos pagal bȗšelį\n", "- Konvertuokite datą į mėnesį\n", - "- Apskaičiuokite kainą kaip vidurkį tarp aukštos ir žemos kainos\n", - "- Konvertuokite kainą, kad ji atspindėtų kainodarą pagal statinės kiekį\n" + "- Apskaičiuokite kainą kaip aukštos ir žemos kainos vidurkį\n", + "- Konvertuokite kainą, kad ji atspindėtų kainodarą pagal bȗšelio kiekį\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sklaidos diagrama primena, kad turime tik mėnesių duomenis nuo rugpjūčio iki gruodžio. Tikriausiai mums reikia daugiau duomenų, kad galėtume daryti išvadas linijiniu būdu.\n" + "Sklaidos diagrama primena, kad turime mėnesio duomenis tik nuo rugpjūčio iki gruodžio. Tikriausiai mums reikia daugiau duomenų, kad galėtume daryti išvadas liniškai.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Pažiūrėkime, ar yra koreliacija:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Atrodo, kad koreliacija yra gana maža, tačiau yra kažkoks kitas svarbesnis ryšys - nes aukščiau pateiktame grafike kainų taškai atrodo turintys kelis skirtingus klasterius. Sukurkime grafiką, kuris parodys skirtingas moliūgų veisles:\n" + "Atrodo, kad koreliacija yra gana maža, tačiau yra kita svarbesnė priklausomybė – nes kainų taškai aukščiau esančiame grafike panašu, kad sudaro kelias skirtingas grupes. Padarykime grafiką, kuris parodys skirtingas moliūgų veisles:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Kol kas susitelkime tik ties viena rūšimi – **pyrago tipas**.\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Linijos nuolydis gali būti nustatytas iš linijinės regresijos koeficientų:\n" + "Linijos nuolydį galima nustatyti iš liniškos regresijos koeficientų:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Galime naudoti apmokytą modelį kainai prognozuoti:\n" + ] }, { "cell_type": "code", @@ -716,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinominė regresija\n", + "### Polininė regresija\n", "\n", - "Kartais ryšys tarp požymių ir rezultatų yra iš prigimties nelinijinis. Pavyzdžiui, moliūgų kainos gali būti aukštos žiemą (mėnesiai=1,2), tada sumažėti vasarą (mėnesiai=5-7) ir vėl pakilti. Linijinė regresija negali tiksliai nustatyti šio ryšio.\n", + "Kartais ryšys tarp požymių ir rezultatų yra iš esmės nelinearus. Pavyzdžiui, moliūgų kainos žiemą gali būti aukštos (mėnesiai=1,2), tada nukristi vasarą (mėnesiai=5-7) ir vėl pakilti. Linijinė regresija negali tiksliai nustatyti šio ryšio.\n", "\n", - "Tokiu atveju galime apsvarstyti galimybę pridėti papildomų požymių. Paprastas būdas yra naudoti įvesties požymių polinomus, kas lemtų **polinominę regresiją**. Naudojant Scikit Learn, mes galime automatiškai iš anksto apskaičiuoti polinominius požymius naudodami dujotiekius:\n" + "Tokiu atveju galime apsvarstyti galimybę pridėti papildomų požymių. Paprastas būdas yra naudoti polinomiškas funkcijas iš įvesties požymių, kas leistų gauti **polininę regresiją**. Scikit Learn galima automatiškai iš anksto apskaičiuoti polinomines savybes naudojant vamzdynus: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Veislių kodavimas\n", + "### Rūšių kodavimo įvairovė\n", "\n", - "Idealiame pasaulyje norėtume prognozuoti skirtingų moliūgų veislių kainas naudodami tą patį modelį. Kad atsižvelgtume į veislę, pirmiausia turime ją paversti skaitine forma, arba **užkoduoti**. Tai galima padaryti keliais būdais:\n", + "Idealiame pasaulyje norėtume galėti prognozuoti skirtingų moliūgų rūšių kainas naudodami tą patį modelį. Kad atsižvelgtume į rūšį, pirmiausia turime ją paversti skaitine forma arba **koduoti**. Yra keli būdai tai padaryti:\n", "\n", - "* Paprastas skaitinis kodavimas, kuris sudarys skirtingų veislių lentelę, o tada pakeis veislės pavadinimą indeksu iš tos lentelės. Tai nėra geriausia idėja tiesinei regresijai, nes tiesinė regresija atsižvelgia į indekso skaitinę vertę, o skaitinė vertė greičiausiai nesusijusi su kaina.\n", - "* Vieno ženklo kodavimas (angl. one-hot encoding), kuris pakeis `Variety` stulpelį 4 skirtingais stulpeliais, po vieną kiekvienai veislei, kuriuose bus 1, jei atitinkama eilutė priklauso tam tikrai veislei, ir 0 kitu atveju.\n", + "* Paprastas skaitmeninis kodavimas, kuris sukurs skirtingų rūšių lentelę ir tada pakeis rūšies pavadinimą tos lentelės indeksu. Tai nėra geriausia idėja tiesinei regresijai, nes tiesinė regresija atsižvelgia į indekso skaitinę reikšmę, o skaitinė reikšmė greičiausiai nesusijusi skaitmeniškai su kaina.\n", + "* Vienos vietos kodavimas (one-hot encoding), kuris pakeis stulpelį `Variety` keturiais skirtingais stulpeliais, po vieną kiekvienai rūšiai, kuriuose bus 1, jei atitinkama eilutė priklauso tam tikrai rūšiai, ir 0 kitu atveju.\n", "\n", - "Žemiau pateiktas kodas parodo, kaip galime užkoduoti veislę vieno ženklo kodavimu:\n" + "Toliau pateiktame kode parodyta, kaip galime vienos vietos kodavimu užkoduoti rūšį:\n" ] }, { @@ -940,7 +949,7 @@ "source": [ "### Linijinė regresija pagal veislę\n", "\n", - "Dabar naudosime tą patį kodą kaip aukščiau, tačiau vietoj `DayOfYear` naudosime mūsų vieno karšto kodavimo veislę kaip įvestį:\n" + "Dabar naudosime tą patį aukščiau pateiktą kodą, tačiau vietoje `DayOfYear` kaip įvestį naudosime vieno karšto kodavimo veislę:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinominė regresija\n", + "### Polininė regresija\n", "\n", - "Polinominė regresija taip pat gali būti naudojama su kategoriniais požymiais, kurie yra užkoduoti vieno karšto kodavimo būdu. Kodas, skirtas mokyti polinominę regresiją, iš esmės būtų toks pat, kaip matėme aukščiau.\n" + "Polininė regresija taip pat gali būti naudojama su kategoriniais požymiais, kurie yra užkoduoti vienu karštuoju kodu (one-hot-encoded). Kodo dalis polininės regresijos mokymui iš esmės būtų tokia pati, kaip matyta aukščiau.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Atsakomybės apribojimas**: \nŠis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.\n" + "---\n\n\n**Atsakomybės apribojimas**: \nŠis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome būti atidžiais, nes automatizuotuose vertimuose gali būti klaidų ar netikslumų. Originalus dokumentas gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojamas profesionalus žmogiškas vertimas. Mes nesame atsakingi už bet kokias nesusipratimus ar klaidingas interpretacijas, kylančias dėl šio vertimo naudojimo.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-03T19:17:08+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "lt" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/my/.co-op-translator.json b/translations/my/.co-op-translator.json index 65af55bf44..38adc61137 100644 --- a/translations/my/.co-op-translator.json +++ b/translations/my/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "my" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:45:25+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:17:10+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "my" }, @@ -90,8 +90,8 @@ "language_code": "my" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:16:35+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:16:22+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "my" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "my" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:14:06+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "my" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:37:33+00:00", diff --git a/translations/my/1-Introduction/4-techniques-of-ML/README.md b/translations/my/1-Introduction/4-techniques-of-ML/README.md index 60821699a5..1a9ee48f80 100644 --- a/translations/my/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/my/1-Introduction/4-techniques-of-ML/README.md @@ -1,119 +1,125 @@ -# စက်ရုပ်သင်ယူမှုနည်းလမ်းများ +# စက်သင်ယူမှုနည်းပညာများ -စက်ရုပ်သင်ယူမှု (Machine Learning) မော်ဒယ်များကို တည်ဆောက်ခြင်း၊ အသုံးပြုခြင်းနှင့် ထိန်းသိမ်းခြင်းလုပ်ငန်းစဉ်သည် အခြားသော ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်များနှင့် အတော်လေး ကွဲပြားနေသည်။ ဒီသင်ခန်းစာမှာ အဲဒီလုပ်ငန်းစဉ်ကို ရှင်းလင်းဖော်ပြပြီး သင်သိထားရမယ့် အဓိကနည်းလမ်းများကို ဖော်ပြပေးပါမယ်။ သင်သည်: +စက်သင်ယူမှု မော်ဒယ်များကို တည်ဆောက်၊ အသုံးပြု နှင့် ထိန်းသိမ်းခြင်းလုပ်ငန်းစဉ်သည် အခြားဖွံ့ဖြိုးရေးလုပ်ဆောင်ချက်များနှင့် ကွဲပြားခြားနားသည်။ ဤသင်ခန်းစာတွင်၊ လုပ်ငန်းစဉ်ကို ရှင်းလင်းပြသကာ သင် သိရှိရမည့် နည်းပညာအဓိကများကို ဖော်ပြမည်။ သင်သည် - -- စက်ရုပ်သင်ယူမှုကို အထွေထွေ အဆင့်မြင့်မှာ နားလည်နိုင်ပါမယ်။ -- 'မော်ဒယ်များ', 'ခန့်မှန်းချက်များ', 'သင်ကြားမှုဒေတာ' စတဲ့ အခြေခံအယူအဆများကို လေ့လာနိုင်ပါမယ်။ +- စက်သင်ယူမှုကို မြင်သာသွားစေရန် အထက်တန်းအဆင့် လုပ်ငန်းစဉ်များကို နားလည်မည်။ +- 'မော်ဒယ်များ', 'ခန့်မှန်းချက်များ', နှင့် 'လေ့ကျင့်ရေးဒေတာ' ကဲ့သို့ အခြေခံအယူအဆများကို တွေ့ရှိလေ့လာမည်။ -## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) +## [သင်ခန်းစာမတိုင်မီ စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 အပေါ်က ပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာကို လေ့လာနိုင်တဲ့ အတိုချုံးဗီဒီယိုကို ကြည့်ပါ။ +> 🎥 ဤသင်ခန်းစာအတိုးအကျယ်ကို ကြည့်ရှုရန် အပေါ်ရှိပုံကို Click နှိပ်ပါ။ -## အကျဉ်းချုပ် +## နိဒါန်း -အထွေထွေ အဆင့်မြင့်မှာ စက်ရုပ်သင်ယူမှု (ML) လုပ်ငန်းစဉ်ကို ဖန်တီးခြင်းသည် အဆင့်အတန်းများစွာ ပါဝင်သည်။ +အထက်တန်းအဆင့်တွင်၊ စက်သင်ယူမှု (ML) လုပ်ငန်းစဉ်တစ်ခု ဖန်တီးခြင်းသည် အဆင့်အတန်းပေါင်းများစွာပါဝင်သည်- -1. **မေးခွန်းကို ဆုံးဖြတ်ပါ**။ ML လုပ်ငန်းစဉ်များစွာသည် ရိုးရှင်းသော အခြေအနေ-based ပရိုဂရမ်များ သို့မဟုတ် စည်းကမ်း-based engine များဖြင့် ဖြေရှင်းလို့မရတဲ့ မေးခွန်းတစ်ခုကို မေးခြင်းဖြင့် စတင်သည်။ ဒီမေးခွန်းများသည် ဒေတာအစုအဝေးအပေါ် အခြေခံပြီး ခန့်မှန်းချက်များကို လုပ်ဆောင်ခြင်းနှင့် ဆက်စပ်နေတတ်သည်။ -2. **ဒေတာကို စုဆောင်းပြီး ပြင်ဆင်ပါ**။ မေးခွန်းကို ဖြေရှင်းနိုင်ဖို့ သင့်မှာ ဒေတာလိုအပ်ပါတယ်။ ဒေတာရဲ့ အရည်အသွေးနှင့် အချို့အခါမှာ အရေအတွက်က သင့်မေးခွန်းကို ဘယ်လောက်ကောင်းကောင်း ဖြေရှင်းနိုင်မလဲဆိုတာကို သတ်မှတ်ပေးပါမယ်။ ဒေတာကို မြင်သာအောင် ဖော်ပြခြင်းက ဒီအဆင့်မှာ အရေးကြီးပါတယ်။ ဒီအဆင့်မှာ ဒေတာကို သင်ကြားမှုအုပ်စုနဲ့ စမ်းသပ်မှုအုပ်စုအဖြစ် ခွဲခြားဖွဲ့စည်းခြင်းလည်း ပါဝင်ပါတယ်။ -3. **သင်ကြားမှုနည်းလမ်းကို ရွေးချယ်ပါ**။ မေးခွန်းနှင့် ဒေတာရဲ့ သဘာဝအပေါ် မူတည်ပြီး မော်ဒယ်ကို သင်ကြားဖို့ အကောင်းဆုံးနည်းလမ်းကို ရွေးချယ်ရပါမယ်။ ဒီအပိုင်းမှာ အထူးကျွမ်းကျင်မှုလိုအပ်ပြီး အတော်လေး စမ်းသပ်မှုများ လိုအပ်တတ်ပါတယ်။ -4. **မော်ဒယ်ကို သင်ကြားပါ**။ သင်ကြားမှုဒေတာကို အသုံးပြုပြီး မော်ဒယ်ကို ဒေတာထဲက ပုံစံများကို မှတ်မိနိုင်အောင် သင်ကြားပါမယ်။ မော်ဒယ်သည် အတွင်းပိုင်းအလေးချိန်များကို အသုံးပြုပြီး ဒေတာရဲ့ အချို့အပိုင်းများကို ပိုမိုအရေးထားနိုင်အောင် ပြင်ဆင်နိုင်ပါတယ်။ -5. **မော်ဒယ်ကို အကဲဖြတ်ပါ**။ သင်စုဆောင်းထားတဲ့ ဒေတာထဲက မော်ဒယ်မမြင်ဖူးတဲ့ ဒေတာ (စမ်းသပ်မှုဒေတာ) ကို အသုံးပြုပြီး မော်ဒယ်ရဲ့ လုပ်ဆောင်မှုကို စမ်းသပ်ပါမယ်။ -6. **Parameter tuning**။ မော်ဒယ်ရဲ့ လုပ်ဆောင်မှုအပေါ် မူတည်ပြီး သင်ကြားမှုအတွက် အသုံးပြုတဲ့ algorithm များရဲ့ အပြုအမူကို ထိန်းချုပ်တဲ့ parameter များကို ပြန်လည်ပြင်ဆင်နိုင်ပါတယ်။ -7. **ခန့်မှန်းချက်လုပ်ဆောင်ပါ**။ မော်ဒယ်ရဲ့ တိကျမှုကို စမ်းသပ်ဖို့ အခြားသော input များကို အသုံးပြုပါ။ +1. **မေးခွန်းရွေးချယ်ခြင်း**။ ML လုပ်ငန်းစဉ်များမှာ အများအားဖြင့် ရိုးရှင်းသော အခြေအနေဖော်ညွှန်းစနစ် သို့မဟုတ် စည်းမျဉ်းအား အခြေခံ၍ ဖြေရှင်း၍ မရသည့် မေးခွန်းကို မေးခြင်းဖြင့် စတင်သည်။ ဤမေးခွန်းများသည် အချက်အလက်စုစည်းမှုအပေါ် အခြေခံ၍ ခန့်မှန်းချက်များပတ်လည် ဖြစ်တတ်သည်။ +2. **ဒေတာ စုဆောင်းပြီး ပြင်ဆင်ခြင်း**။ မေးခွန်းကို ဖြေရှင်းနိုင်ရန် ဒေတာလိုအပ်သည်။ ဒေတာ၏ အရည်အသွေးနှင့်အခါခါမှာ အရေအတွက်သည် မူလမေးခွန်းကို ဘယ်တွင် မဆို ဖြေရှင်းနိုင်မှုကို သတ်မှတ်သည်။ ဒေတာကို မြင်သာပြရန် လုပ်ငန်းစဉ်သည် အရေးကြီးသည်။ ဒေတာကို လေ့ကျင့်ရေးနှင့် စမ်းသပ်ရေးအပိုင်းများသို့ ခွဲခြားခြင်းလည်း ပါဝင်သည်။ +3. **လေ့ကျင့်မှုနည်းလမ်း ရွေးချယ်ခြင်း**။ မေးခွန်းနှင့် ဒေတာ၏ အမျိုးအစားပေါ်မူတည်၍ မော်ဒယ်ကို ယုံကြည်စွာခန့်မှန်းနိုင်ရန် လေ့ကျင့်နည်းလမ်းကို ရွေးချယ်ရမည်။ ဒါဟာ ML လုပ်ငန်းစဉ်တွင် အထူးကျွမ်းကျင်မှုနှင့် စမ်းသပ်မှုများ များစွာ လိုအပ်သည်။ +4. **မော်ဒယ် လေ့ကျင့်ခြင်း**။ သင်၏လေ့ကျင့်ရေးဒေတာကို အသုံးပြုပြီး မော်ဒယ်ကို သွင်ပြင်သဏ္ဍာန်များဖြင့် လေ့ကျင့်သွားမည်။ မော်ဒယ်သည် အတွင်းရှိအလေးချိန်များကို လိုက်လျောညီညာစွာ တုံ့ပြန်စေကာ သင့်ငြိုငြောင်းမှုများကို တိုးတက်စေမည်။ +5. **မော်ဒယ် သုံးသပ်ခြင်း**။ စုဆောင်းထားသည့် စမ်းသပ်ရေးဒေတာအား အသုံးပြု၍ မော်ဒယ်၏ ဆောင်ရွက်မှုကို စစ်ဆေးမည်။ +6. **ပါရာမီတာ ပြင်ဆင်ခြင်း**။ မော်ဒယ်၏ ဆောင်ရွက်မှုအပေါ် မူတည်၍ ပါရာမီတာများကို ပြန်လည် ပြောင်းလဲ ပြင်ဆင်နိုင်သည်။ +7. **ခန့်မှန်းချက် ပြုလုပ်ခြင်း**။ သစ်သစ်သော အချက်အလက်များဖြင့် မော်ဒယ်၏ တိကျမှုကို စမ်းသပ်သုံးသပ်မည်။ -## မေးခွန်းကို ဘာလို့ မေးရမလဲ +## မေးခွန်း မေးဘို့ -ကွန်ပျူတာများသည် ဒေတာထဲက ဖုံးကွယ်နေတဲ့ ပုံစံများကို ရှာဖွေဖော်ထုတ်နိုင်စွမ်းရှိသည်။ ဒီစွမ်းရည်သည် သတ်မှတ်ထားတဲ့ နယ်ပယ်အတွင်း မေးခွန်းများကို ဖြေရှင်းဖို့ အလွန်အသုံးဝင်ပါတယ်။ +ကွန်ပျူတာများသည် ဒေတာအတွင်း ဖုံးကွယ်ထားသော ပုံစံများကို ရှာဖွေရာတွင် ထူးချွန်သည်။ ၎င်းသည် မေးခွန်းများကို ရိုးရှင်းပြီး အခြေအနေ ဖော်ညွှန်းစနစ်များဖြင့် ဖြေရှင်း၍ မရနိုင်သည့် သုတေသနများအတွက် အထောက်အကူ ဖြစ်သည်။ ဥပမာအနေဖြင့်၊ သေစာပညာရှင်တစ်ဦးသည် ဆေးလိပ်သောက်သူနှင့် မသောက်သူတို့၏ သေဆုံးမှုနှုန်းကို မူတည်၍ စည်းမျဉ်းများကို ရေးဆွဲနိုင်သည်။ -ဥပမာအားဖြင့် သေဆုံးမှုနှုန်းကို ခန့်မှန်းဖို့ actuarial task တစ်ခုမှာ ဒေတာသိပ္ပံပညာရှင်တစ်ဦးသည် ဆေးလိပ်သောက်သူများနှင့် မသောက်သူများအကြား သေဆုံးမှုနှုန်းအပေါ် စည်းကမ်းများကို လက်ဖြင့်ဖန်တီးနိုင်ပါတယ်။ +သို့သော် အခြားအချိုးအစားများ ပေါင်းစပ်လာသောအခါ ML မော်ဒယ်သည် အတိတ်ကျန်းမာရေးမှတ်တမ်းများကို အခြေခံ၍ ရွှေ့ပြောင်းသေဆုံးမှုနှုန်းတို့ကို ပိုမိုတိကျစွာ ခန့်မှန်းနိုင်သည်။ နောက်တစ် ဥပမာကတော့ လွယ်ကူ၍ ပျော်ရွှင်စရာကောင်းသော ဧပြီလအတွက် ရာသီဥတုခန့်မှန်းခြင်းဖြစ်ပြီး အချင်းချင်းတစ်နေရာနှင့် တကွ၊ အချင်းချင်း တည်ဝေးမှု၊ ရာသီဥတု မတည်မြဲမှု၊ သမုဒ္ဒရာနီးပါးမှု၊ ဂျက်စ്ട്രീမ်၏ ပုံသဏ္ဍာန်များ၊ အခြား အချက်အလက်များပေါင်းစပ်ထားသည်။ -ဒါပေမယ့် အခြားသော variable များစွာ ပါဝင်လာတဲ့အခါမှာတော့ ML မော်ဒယ်တစ်ခုသည် အတိတ်ကျန်းမာရေးမှတ်တမ်းများအပေါ် အခြေခံပြီး အနာဂတ်သေဆုံးမှုနှုန်းကို ခန့်မှန်းဖို့ ပိုမိုထိရောက်နိုင်ပါတယ်။ +✅ ဒီ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) သည် ရာသီဥတုမော်ဒယ်များအပေါ် ML အသုံးပြုမှု၏ သမိုင်းကြောင်း အလေ့အထများကို ပေးသည်။ -✅ ဒီ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) သည် မိုးလေဝသကို ML အသုံးပြု၍ ခန့်မှန်းခြင်းအပေါ် သမိုင်းအမြင်ကို ဖော်ပြထားသည်။ +## မော်ဒယ် တည်ဆောက်မီ အလုပ်များ -## မော်ဒယ်တည်ဆောက်မှုမတိုင်မီလုပ်ငန်းစဉ်များ - -မော်ဒယ်တစ်ခုကို တည်ဆောက်မတိုင်မီ သင်လုပ်ဆောင်ရမယ့် အလုပ်များစွာ ရှိပါတယ်။ မော်ဒယ်ရဲ့ ခန့်မှန်းချက်များအပေါ် အခြေခံပြီး သင့်မေးခွန်းကို စမ်းသပ်ဖို့ သင့်အနေနဲ့ အချို့သော အစိတ်အပိုင်းများကို သတ်မှတ်ပြီး ဖော်ပြရပါမယ်။ +မော်ဒယ် တည်ဆောက်ရန် စတင်ရန်အတွက် အချက်အလက် များစွာထားရှိသင့်သည်။ မော်ဒယ်၏ ခန့်မှန်းချက်များအပေါ် အခြေခံ Hypothesis တည်ဆောက်ရန်၊ ထိုမေးခွန်းကို စမ်းသပ်ရန်၊ အချက်အလက် အမျိုးမျိုးကို ရှာဖွေရန် လိုအပ်သည်။ ### ဒေတာ -သင့်မေးခွန်းကို တိကျမှုရှိရှိ ဖြေရှင်းနိုင်ဖို့ သင့်မှာ အရည်အသွေးကောင်းမွန်ပြီး သင့်တော်တဲ့ ဒေတာအရေအတွက်လိုအပ်ပါတယ်။ ဒီအချိန်မှာ သင်လုပ်ဆောင်ရမယ့် အရာနှစ်ခုရှိပါတယ်။ +သင်၏မေးခွန်းကို တိကျစွာ ဖြေရှင်းနိုင်ရန် အမျိုးအစားမှန်ကန်၍ ဒေတာများစွာလိုအပ်သည်။ ဤအချိန်တွင် လုပ်ဆောင်ရမည့် အချက် ၂ ချက် - + +- **ဒေတာ စုဆောင်းခြင်း**။ ယခင်သင်ခန်းစာတွင် ပါဝင်သော တရားမျှတမှု မူဝါဒအား ပြသထားသည့်အတိုင်း သတိထားပြီး ဒေတာကို စုဆောင်းပါ။ ဒေတာရင်းမြစ်များကို သိရှိထား၍ မူမမှန်သော ကွဲပြားချက်များကို မူတည်၍ မှတ်တမ်းတင်ပါ။ +- **ဒေတာ ပြင်ဆင်ခြင်း**။ ဒေတာ ပြင်ဆင်ခြင်း လုပ်ငန်းစဉ်တွင် အဆင့်များစွာ ပါဝင်သည်။ မတူညီသော ရင်းမြစ်များမှ ဒေတာများကို စုပေါင်း၍ ပုံမှန်တူအောင် ပြုလုပ်ရန် လိုအပ်နိုင်သည်။ စာသားများကို နံပါတ်သို့ပြောင်းခြင်းကဲ့သို့ နည်းလမ်းများဖြင့် ဒေတာ၏ အရည်အသွေးနှင့် အရေအတွက် တိုးတက်စေရန် လုပ်ဆောင်နိုင်သည် ([Clustering](../../5-Clustering/1-Visualize/README.md)တွင် မသိသောအတိုင်း)။ မူလဒေတာပေါ်မူတည်၍ ဒေတာအသစ်များ ဖန်တီးနိုင်သည် ([Classification](../../4-Classification/1-Introduction/README.md)တွင် ပြုလုပ်သည့်အတိုင်း)။ ဒေတာကို သန့်ရှင်းပြီး ပြင်ဆင်နိုင်သည် ([Web App](../../3-Web-App/README.md) သင်ခန်းစာမတိုင်မီ ပြုလုပ်သည့်အတိုင်း)။ နောက်ဆုံးတွင် သင်၏ လေ့ကျင့်မှုနည်းပညာများအပေါ်မူတည်၍ ဒေတာကို စီမံခန့်ခွဲရန် လိုအပ်နိုင်သည်။ + +✅ ဒေတာ စုဆောင်းပြီး ဆက်ဖြည်း ပြုလုပ်မှုပြီးနောက်၊ ဒေတာ၏ ပုံသဏ္ဍာန်သည် သင့်မေးခွန်း ဖြေရှင်းနိုင်မည်ဟု စူးစမ်းစစ်ဆေးပါ။ [Clustering](../../5-Clustering/1-Visualize/README.md) သင်ခန်းစာများတွင် ခံစားရသလို ဒေတာသည် သင်၏တာဝန်တွင် မကောင်းကျိုးခံစားမည် ဖြစ်နိုင်သည်။ -- **ဒေတာကို စုဆောင်းပါ**။ ဒေတာကို စုဆောင်းတဲ့အခါမှာ အရင်းအမြစ်များ၊ bias ရှိနိုင်မှုများကို သတိထားပြီး documentation လုပ်ပါ။ -- **ဒေတာကို ပြင်ဆင်ပါ**။ ဒေတာကို collate လုပ်ခြင်း၊ normalize လုပ်ခြင်း၊ string ကို number ပြောင်းခြင်း၊ ဒေတာအသစ်ဖန်တီးခြင်း၊ ဒေတာကို ရှင်းလင်းခြင်း၊ randomize လုပ်ခြင်း စတဲ့ အဆင့်များ ပါဝင်ပါတယ်။ +### အင်္ဂါရပ်များနှင့် ဦးတည်မှုပစ္စည်း -✅ ဒေတာကို စုဆောင်းပြီး ပြင်ဆင်ပြီးနောက် သင့်မေးခွန်းကို ဖြေရှင်းနိုင်ဖို့ ဒေတာရဲ့ ပုံစံကို စစ်ဆေးပါ။ +[အင်္ဂါရပ်](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ဆိုသည်မှာ သင်၏ ဒေတာ၏ တိုင်းတာနိုင်သော ဂုဏ်သတ္တိဖြစ်သည်။ ဒေတာစုစည်းမှုများတွင် ‘ရက်စွဲ’, ‘အရွယ်အစား’, ‘အရောင်’ စသဖြင့် တန်းစီထားသော ကော်လံခေါင်းစဉ်များဖော်ပြသည်။ သင်၏ feature variable သည် ပုံမှန်အားဖြင့် ကုဒ်အတွင်း `X` အဖြစ် ဖော်ပြသည်။ ၎င်းသည် မော်ဒယ်တစ်ခု ရေသန့်ကျသည့် input ကို ကိုယ်စားပြုသည်။ -### Features နှင့် Target +ဦးတည်မှု ဆိုသည်မှာ သင်အား ခန့်မှန်းလိုသည့် အရာဖြစ်သည်။ target သည် ပုံမှန်အားဖြင့် ကုဒ်အတွင်း `y` အနေဖြင့် ဖော်ပြပြီး သင်၏ ဒေတာမှ မေးခွန်းဖြေဆိုချက်ကို ကိုယ်စားပြုသည်။ ဥပမာ၊ ဒီဇင်ဘာလတွင် မည်သည့်အရောင် pumpkin များမကြာခဏစျေးနှုန်းသက်သာမည်နည်း? စန်ဖရန်စစ္စကို၌ မည်သည့်မြို့နယ်များတွင် အိမ်ခြံမြေ စျေးနှုန်းများ ပို၍ အဆင်ပြေမည်နည်း? target ကို label attribute ဟုလည်း ခေါ်ကြသည်။ -[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ဆိုတာ ဒေတာရဲ့ တိုင်းတာနိုင်တဲ့ အကျဉ်းချုပ်ပါ။ Feature variable ကို `X` အဖြစ် code မှာ ကိုယ်စားပြုပါတယ်။ +### သင်၏ feature variable ရွေးချယ်ခြင်း -Target ဆိုတာ သင့်မေးခွန်းရဲ့ အဖြေကို ကိုယ်စားပြုပါတယ်။ Target variable ကို `y` အဖြစ် code မှာ ကိုယ်စားပြုပါတယ်။ +🎓 **Feature Selection နှင့် Feature Extraction** မော်ဒယ်တစ်ခုတည်ဆောက်ရာတွင် ဘယ် variable ကို ရွေးချယ်ရမည်၊ ဘယ်နည်းလမ်းဖြင့် ရွေးချယ်ရမည်ကို ဘယ်လို ကိုသိနိုင်မလဲ။ သင်သည် feature selection သို့မဟုတ် feature extraction လုပ်ငန်းစဉ်မှတဆင့် တကယ်လက်တွေ့ အသုံးဝင်မည့် variable များကို ရွေးချယ်မည်ဖြစ်သည်။ ၎င်းများသည် အတူတူမဟုတ်ပါ - "Feature extraction သည် မူလအင်္ဂါရပ်များ၏ function များမှ အင်္ဂါရပ်အသစ်များဖန်တီးကာ၊ feature selection သည် အင်္ဂါရပ်တွေထဲမှ အနည်းငယ် ဖော်ထုတ်တင်ပြခြင်းဖြစ်သည်။" ([source](https://wikipedia.org/wiki/Feature_selection)) -### Feature variable ရွေးချယ်ခြင်း +### သင်၏ ဒေတာကို မြင်သာပုံဖော်ခြင်း -🎓 **Feature Selection နှင့် Feature Extraction** Feature variable ကို ရွေးချယ်တဲ့အခါ Feature Selection သို့မဟုတ် Feature Extraction လုပ်ဆောင်ရတတ်ပါတယ်။ Feature Extraction သည် အစပိုင်း feature များကို အသုံးပြု၍ feature အသစ်များ ဖန်တီးသည်။ Feature Selection သည် feature များ၏ အစိတ်အပိုင်းတစ်ခုကို ပြန်လည်ပေးသည်။ +ဒေတာသိပ္ပံပညာရှင်၏ ကိရိယာပစ္စည်းတစ်ခုမှာ Seaborn သို့မဟုတ် MatPlotLib ကဲ့သို့ ကျော်ကြားသော library များဖြင့် ဒေတာမြင်သာပုံဖော်ခြင်းဖြစ်သည်။ သင်၏ဒေတာကို မြင်သာမှုများ ပြုလုပ်ခြင်းအားဖြင့် ဖုံးကွယ်ထားသော ဆက်နွယ်မှုများမှ တစ်ဆင့် သင်၏ မော်ဒယ်တွင် အသုံးချနိုင်မည့် သတင်းအချက်အလက်များကို ရှာဖွေတွေ့ရှိနိုင်သည်။ သင့်မြင်သာမှုက ဒေတာထဲမှ ကွဲပြားချက် (bias) သို့မဟုတ် မတည့်ညီသော ဒေတာကို ဖော်ထုတ်ရန်ကူညီနိုင်သည် ([Classification](../../4-Classification/2-Classifiers-1/README.md) သင်ခန်းစာဖေါ်ပြသည့်အတိုင်း)။ -### ဒေတာကို မြင်သာအောင် ဖော်ပြပါ +### သင့်ဒေတာစုစည်းမှု ခွဲခြားခြင်း -Seaborn သို့မဟုတ် MatPlotLib စတဲ့ libraries များကို အသုံးပြုပြီး ဒေတာကို မြင်သာအောင် ဖော်ပြပါ။ ဒေတာကို visualized လုပ်ခြင်းက hidden correlation များကို ရှာဖွေဖော်ထုတ်နိုင်စွမ်းရှိပါတယ်။ +လေ့ကျင့်မှုမပြုမီ သင်၏ ဒေတာစုစည်းမှုကို မူလဒေတာထက် အရွယ်အစား မတူညီသောနှစ်ပိုင်း သို့မဟုတ် အပိုင်းများစွာ ခွဲခြားရပါမည်။ သို့သော် ဒေတာကို နောက်ထပ် လေ့လာမှုအတွက် မကြီးစွာ လှိုက်လှဲသောယေဘုယျ ဖြန့်ဖြူးမှု ရှိရမည်။ -### ဒေတာကို ခွဲခြားပါ +- **လေ့ကျင့်ရေး**။ ဤဒေတာအပိုင်းသည် မော်ဒယ်ကို သင့်တော်စွာ လေ့ကျင့်ရန် အသုံးပြုသည်။ ယင်းသည် မူလဒေတာစုစည်းမှု၏ အများစုဖြစ်သည်။ +- **စမ်းသပ်ရေး**။ စမ်းသပ်ရေးဒေတာသည် မော်ဒယ်၏ ဆောင်ရွက်မှုကို အတည်ပြုရန် အသုံးပြုသော မူလဒေတာမှ သီးခြား ခွဲထုတ်ထားသော ဒေတာစုစည်းမှုဖြစ်သည်။ +- **အတည်ပြုခြင်း**။ အတည်ပြုရေးဒေတာသည် မူလဒေတာထက် ပို၍ သေးငယ်ပြီး မော်ဒယ်၏ hyperparameter များ သို့မဟုတ် စက်ပစ္စည်း၏ အဆောက်အအုံကို ပြုပြင်ရန် အသုံးပြုသော အခြားသီးခြားသည့် အလေ့အထ ထောက်ခံမှုများပင်ဖြစ်သည်။ သင်၏ ဒေတာအရွယ်အစားနှင့် မေးခွန်းအမျိုးအစားအပေါ်မူတည်၍ ဒီတတိယ အစိတ်အပိုင်းကို မလိုအပ်နိုင်ပါ ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) တွင် စီစစ်ချက်များ). -သင်ကြားမှုမတိုင်မီ ဒေတာကို training, testing, validating အဖြစ် ခွဲခြားပါ။ +## မော်ဒယ် တည်ဆောက်ခြင်း -## မော်ဒယ်တည်ဆောက်ခြင်း +သင်၏ လေ့ကျင့်ရေးဒေတာကို အသုံးပြုပြီး မော်ဒယ်တစ်ခု တည်ဆောက်ရန် ရည်မှန်းချက်ရှိသည်။ မော်ဒယ်တစ်ခု လေ့ကျင့်ခြင်းက နမူနာရှိသည့် ဒေတာ အတိုင်းခန့်မှန်းချက်များကို မတ်တပ်ရပ်နေနိုင်ရန် အချက်အလက် pattern များကို သတိမရဖြစ်အောင် ထည့်သွင်းစဉ်းစားခြင်းဖြစ်သည်။ -သင့် training data ကို အသုံးပြုပြီး မော်ဒယ်တစ်ခုကို statistical representation အဖြစ် တည်ဆောက်ပါ။ +### လေ့ကျင့်မှု နည်းလမ်း ရွေးချယ်ခြင်း -### သင်ကြားမှုနည်းလမ်းကို ဆုံးဖြတ်ပါ +မေးခွန်းနှင့် ဒေတာပေါ်မူတည်၍ မော်ဒယ်ကို လေ့ကျင့်ရန် နည်းလမ်းတစ်ခုကို ရွေးချယ်ရမည်။ [Scikit-learn ၏ စာတမ်းဆိုင်ရာ](https://scikit-learn.org/stable/user_guide.html) ကို လေ့လာခြင်းဖြင့် မော်ဒယ်တစ်ခု လေ့ကျင့်နိုင်သော နည်းလမ်း များစွာကို ရှာဖွေနိုင်သည်။ သင့်အတွေ့အကြုံအရ မော်ဒယ်အကောင်းဆုံး တည်ဆောက်နိုင်ရန် နည်းလမ်းများစွာကို စမ်းသပ်ဖို့လိုနိုင်သည်။ တကယ်တော့ ဒေတာသိပ္ပံပညာရှင်များသည် မမြင်ခင် ဒေတာများဖြင့် မော်ဒယ်၏ စွမ်းဆောင်ရည်ကို မူတည်၍ တိကျမှု၊ ကွဲပြားမှုနှင့် အရည်အသွေးဆိုးကျစေသော ပြဿနာများကို စစ်ဆေးပြီး လိုအပ်သလို လေ့ကျင့်နည်းလမ်းကို ရွေးချယ်သည်။ -Scikit-learn documentation ကို လေ့လာပြီး သင့်မော်ဒယ်အတွက် သင့်တော်တဲ့ training method ကို ရွေးချယ်ပါ။ +### မော်ဒယ် လေ့ကျင့်ခြင်း -### မော်ဒယ်ကို သင်ကြားပါ +သင်၏ လေ့ကျင့်ရေး ဒေတာကို အသုံးပြု၍ 'model.fit' ကို တွေ့ရမည်ဟု မြင်ရမည်။ ၎င်းရှိချိန်တွင် သင့်၏ feature variable ကို ငါး array အဖြစ် (ပုံမှန်အားဖြင့် 'X') နှင့် target variable (ပုံမှန်အားဖြင့် 'y') ကို ပေးပို့ပြီး မော်ဒယ်ကို ထိန်းသိမ်းပြီး လေ့ကျင့်သည်။ -Training data ကို အသုံးပြုပြီး 'model.fit' ကို အသုံးပြုပါ။ +### မော်ဒယ် အသုံးချမှု ထိန်းချုပ်ခြင်း -### မော်ဒယ်ကို အကဲဖြတ်ပါ +လေ့ကျင့်မှု လုပ်ငန်းစဉ်ပြီးဆုံးသည်နှင့် (ကောင်းစွာ ကြိုးစား၍ သုံးသပ်ရန် အကူးအပြောင်းများစွာလိုသည် - 'epochs') သင်သည် မော်ဒယ်၏အရည်အသွေးကို စမ်းသပ်ထိုင်သင့်သည်။ ၎င်းသည် မော်ဒယ်အရင်က မကြည့်ဖူး သော စမ်းသပ်ရေး ဒေတာဖြစ်သည်။ သင့်မော်ဒယ်၏ အရည်အသွေးကို ဖော်ပြသည့် မှတ်တမ်းများကို ထုတ်ပြနိုင်သည်။ -Test data ကို အသုံးပြုပြီး မော်ဒယ်ရဲ့ quality ကို စစ်ဆေးပါ။ +🎓 **မော်ဒယ်တွင် လိုက်ဖက်ခြင်း** -🎓 **Model fitting** Model fitting သည် မော်ဒယ်ရဲ့ function တစ်ခုသည် မသိတဲ့ ဒေတာကို စမ်းသပ်တဲ့အခါမှာ ရရှိတဲ့ တိကျမှုကို ကိုယ်စားပြုသည်။ +စက်သင်ယူမှုတွင်၊ မော်ဒယ် fitting ဆိုသည်မှာ မော်ဒယ်၏ အောက်ခံလုပ်ဆောင်ချက်သည် မသိကြောင်း ဒေတာများကို ခန့်မှန်းရန် သတ်မှတ်ချက်တစ်ခု ဖြစ်သည်။ -🎓 **Underfitting** နှင့် **Overfitting** မော်ဒယ်ရဲ့ quality ကို ထိခိုက်စေတတ်သော ပြဿနာများဖြစ်သည်။ +🎓 **Underfitting** နှင့် **overfitting** သည် မော်ဒယ်အရည်အသွေးကို ကန့်သတ်သော ပြဿနာများဖြစ်ပြီး မော်ဒယ်သည် လေ့ကျင့်ထားသည့် ဒေတာနှင့် မညီကတိဘဲ ဖြစ်စေ သို့မဟုတ် မလုံလောက်စွာ ဖြစ်စေသည်။ Overfit မော်ဒယ်သည် လေ့ကျင့်ရေး ဒေတာကို များစွာ လေ့လာ၍ အသေးစိတ်နှင့် ဆူညံသံများကိုလည်း ကျွမ်းကျင်စွာ သင်ယူထားသောကြောင့် အလွန်တိကျစွာ ခန့်မှန်းသည်။ Underfit မော်ဒယ်မှာ မမှန်ကန်ယုံကြည်စွာလေ့ကျင့်မှုအဆင့်မရှိသဖြင့် အတိုးအကျယ် ခန့်မှန်းရန် မလုံလောက်ပါ။ -![overfitting model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/my/overfitting.1c132d92bfd93cb6.webp) > Infographic by [Jen Looper](https://twitter.com/jenlooper) -## Parameter tuning +## ပါရာမီတာ ပြင်ဆင်ခြင်း -Hyperparameters ကို ပြင်ဆင်ခြင်းဖြင့် မော်ဒယ်ရဲ့ quality ကို တိုးတက်စေပါ။ +လေ့ကျင့်မှုစတင်ပြီးနောက် မော်ဒယ်၏ အရည်အသွေးကို သတ်မှတ်၍ 'hyperparameters' များကို ပြင်ဆင်ခြင်းဖြင့် တိုးတက်စေရန် ကြိုးပမ်းနိုင်သည်။ လုပ်ငန်းစဉ် အကြောင်း [စာတမ်း](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) တွင် ဖတ်ရှုနိုင်သည်။ -## ခန့်မှန်းချက်လုပ်ဆောင်ခြင်း +## ခန့်မှန်းခြင်း -အသစ်သော input များကို အသုံးပြုပြီး မော်ဒယ်ရဲ့ တိကျမှုကို စမ်းသပ်ပါ။ +ဤအဆင့်တွင် သင့်မော်ဒယ်၏ တိကျမှုကို စမ်းသပ်ရန် ပြီးခဲ့သော ဒေတာအပြင် အသစ်တစ်ခုလုံးကို အသုံးပြုကာ ရရှိသည့် မော်ဒယ်၏ တိကျမှုကို သုံးသပ်နိုင်သည်။ 'Applied' စက်သင်ယူမှု setting မှာ မော်ဒယ်ကို ထုတ်လုပ်ရန်အသုံးပြုသော ဝက်ဘ်ပိုင်းဆိုင်ရာ အလုပ်အမှုတွေမှာ ရွေးချယ်မှုတစ်ခု (ဥပမာ button နှိပ်ခြင်း) သို့မဟုတ် ဧည့်သည် input တစ်ခု စုဆောင်း၍ မော်ဒယ်ထံ ပို့ပြီး ခန့်မှန်းချက် သို့မဟုတ် သုံးသပ်မှု ဖန်တီးသည်။ -ဒီသင်ခန်းစာများတွင် သင်သည် ML engineer အဖြစ် တိုးတက်ဖွံ့ဖြိုးရန် လိုအပ်သော အဆင့်များကို လေ့လာနိုင်ပါမယ်။ +ဤသင်ခန်းစာများတွင် သင်သည် ယင်းအဆင့်များအားလုံးကို ပြုပြင်၊ တည်ဆောက်၊ စမ်းသပ်၊ သုံးသပ်၊ နှင့် ခန့်မှန်းခြင်းတို့ကို သင်ယူမည်ဖြစ်၍ data scientist အဖြစ် တက်ကြွစွာ လေ့လာရာ၌ 'full stack' ML engineer ဖြစ်ရန် ခရီးစဉ်တစ်ခုဖြစ်ပါသည်။ --- -## 🚀Challenge +## 🚀စိန်ခေါ်မှု -ML practitioner တစ်ဦးရဲ့ လုပ်ငန်းစဉ်ကို ဖော်ပြတဲ့ flow chart တစ်ခု ရေးဆွဲပါ။ သင့်အနေဖြင့် လက်ရှိမှာ ဘယ်အဆင့်မှာ ရှိနေလဲ? ဘယ်အပိုင်းမှာ အခက်အခဲရှိမလဲ? ဘာတွေကို လွယ်ကူလို့ ထင်ပါသလဲ? +ML လုပ်ငန်းသမား၏ လုပ်ငန်းစဉ်များကို ဖော်ပြသော flow chart တစ်ခု ချရေးပါ။ လုပ်ငန်းစဉ်တွင် ပစ္စည်းဖော်မြူလာ ဘယ်မှာ ရှိနေသလဲ။ ဘယ်အဆင့်တွင် အခက်အခဲ ဖြစ်မည်ဟု ခန့်မှန်းလဲ။ ဘာတွေ သင့်အတွက် လွယ်ကူသလဲ။ -## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) +## [သင်ခန်းစာပြီးနောက် စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/) -## Review & Self Study +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း -Data scientist များရဲ့ နေ့စဉ်လုပ်ငန်းအကြောင်းကို ဆွေးနွေးထားတဲ့ အင်တာဗျူးများကို အွန်လိုင်းမှာ ရှာဖွေပါ။ ဒီမှာ [တစ်ခု](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ရှိပါတယ်။ +ဒေတာသိပ္ပံပညာရှင်များ၏ နေ့စဉ် အလုပ်လုပ်ငန်းအကြောင်း တွေ့ရှိနိုင်သော အင်တာဗျူးများကို အွန်လိုင်းရှာပါ။ ဤနေရာတွင် [တစ်ခု](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ရှိသည်။ -## Assignment +## အလုပ်အပ် -[Data scientist တစ်ဦးကို အင်တာဗျူးလုပ်ပါ](assignment.md) +[ဒေတာသိပ္ပံပညာရှင် တစ်ဦးကို အင်တာဗျူး မေးမြန်းခြင်း](assignment.md) --- -**ဝက်ဘ်ဆိုက်မှတ်ချက်**: -ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူပညာရှင်များမှ လက်တွေ့ဘာသာပြန်ဆိုမှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ဆိုမှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file + +**အနှုတ်ချုပ်** +ဤစာတမ်းသည် AI ဘာသာပြန်ဝန်ဆောင်မှုဖြစ်သည့် [Co-op Translator](https://github.com/Azure/co-op-translator) ကိုအသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားသော်လည်း စက်ရုပ်ဘာသာပြန်ချက်များတွင် အမှားများ သို့မဟုတ် မှားယွင်းမှုများ ရှိနိုင်ခြေရှိပါသည်။ မူရင်းစာတမ်းကို သက်ဆိုင်ရာဘာသာဖြင့် အခြေခံကလည်း အတည်ပြုရမည့် ရင်းမြစ်အဖြစ် သတ်မှတ်ပါရန် တိုက်တွန်းပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူအဖွဲ့ဝင်၏ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်အသုံးပြုမှုကြောင့် ဖြစ်ပေါ်လာနိုင်သည့် နားလည်မှားယွင်းမှုများ သို့မဟုတ် မှားမြင်မှုများအတွက် ကျွန်ုပ်တို့ အာမခံမထားပါ။ + \ No newline at end of file diff --git a/translations/my/2-Regression/3-Linear/README.md b/translations/my/2-Regression/3-Linear/README.md index 5cac7dbf65..acb6bf0a3d 100644 --- a/translations/my/2-Regression/3-Linear/README.md +++ b/translations/my/2-Regression/3-Linear/README.md @@ -1,137 +1,138 @@ -# Scikit-learn ကို သုံးပြီး regression မော်ဒယ်တစ်ခု တည်ဆောက်ခြင်း - regression နည်းလမ်းလေး မျိုး +# Scikit-learn ဖြင့် Regression မော်ဒယ်တစ်ခုကို တည်ဆောက်ခြင်း - regression နည်းလမ်းလေးမျိုး -## အစပြုသူအတွက် မှတ်ချက် +## အစရောက်မှတ်ချက် -Linear regression ကို **ကိန်းဂဏန်းတန်ဖိုး** (ဥပမာ၊ အိမ်ခြံမြေ စျးနှုန်း၊ အပူချိန်၊ သို့မဟုတ် အရောင်း) ကြိုတင်ခန့်မှန်းလိုသောအခါ အသုံးပြုသည်။ -ဒါဟာ input လက္ခဏာများနှင့် output အချက်အလက်တို့ကြား ဆက်နွယ်မှုကို အကောင်းဆုံးဖော်ပြနိုင်သော လိုင်းတစ်ခုကို ရှာဖွေခြင်းဖြင့် လည်ပတ်သည်။ +Linear regression ကို **ကိန်းဂဏန်းတန်ဖိုး** (ဥပမာ - အိမ်မျှော်မူ၊ အပူချိန် သို့မဟုတ် အရောင်း စသည်) ကို ခန့်မှန်းချင်သောအခါ အသုံးပြုသည်။ +ဒါဟာ input features နှင့် output ပေါ်ရှိ ဆက်စပ်မှုကို ကိုယ်စားပြုသော တိတိကျကျ စတိုးတန်းတစ်ခုကို ရှာဖွေခြင်းဖြင့် လည်ပတ်သည်။ -ဒီသင်ခန်းမှာတော့ မတော်တဆင့် တိုက်ရိုက်ပညာရှင်ကျမ်းများလုပ်ရန်မသိသေးမီ ဆက်စပ် regression နည်းလမ်းများကိုရှာဖွေဖို့မတိုင်မီ အကြောင်းအရာနားလည်မှုအပေါ် အာရုံစိုက်မှာဖြစ်ပါတယ်။ -![Linear vs polynomial regression infographic](../../../../translated_images/my/linear-polynomial.5523c7cb6576ccab.webp) -> [Dasani Madipalli](https://twitter.com/dasani_decoded) မှ infographic +ဒီသင်ခန်းစာမှာ ကိစ္စရပ်ကိုနားလည်ခြင်းကို ဦးတည်ပြီး regression နည်းပညာများပိုခက်ဆဲများကို ရှာဖွေဖို့မတိုင်ခင်လေ့လာမှာဖြစ်ပါတယ်။ +![Linear vs polynomial regression infographic](../../../../translated_images/my/linear-polynomial.5523c7cb6576ccab.webp) +> [Dasani Madipalli](https://twitter.com/dasani_decoded)၏ infographic -## [ချဉ်းကပ်ရေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/) +## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [ဒီသင်ခန်းကို R ဖြင့်လည်းရနိုင်ပါသည်!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### မိတ်ဆက် +> ### [ဒီသင်ခန်းစာကို R မှာလည်း လေ့လာနိုင်ပါတယ်!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### နိဒါန်း -အခုထိ pumpkin စျေးနှုန်း dataset မှ နမူနာဒေတာများအပေါ် regression အကြောင်း သိရှိဖူးပြီး Matplotlib ဖြင့် အနုညာတစနစ် ကွက်တိ တည်ဆောက်ထားတာကိုကြည့်နိုင်ခဲ့ပါပြီ။ +ယခုအချိန်အထိ သင်သည် regression ဆိုတာဘာလဲဆိုတာကို pumpkin စျေးနှုန်းဒေတာဝန်းကျင်ကနေရယူထားသော နမူနာဒေတာဖြင့် စတင်ကြည့်ရှုပြီး Matplotlib ဖြင့် တွေ့မြင်ကြပါတယ်။ -ယခုမော်ဒယ်သင်ကြားမှုမှာ ML ရဲ့ regression ဆိုတာ ဘယ်လိုလုပ်ဆောင်ကြောင်း နက်ရှိုင်းစွာ လေ့လာမှာဖြစ်ပြီး၊ visualization က ဒေတာကိုနားလည်မှုရဖို့သင့်ကိုကူညီပေးပေမယ့် Machine Learning ရဲ့ အမှန်တကယ် ပြင်းထန်တဲ့အားကို သိမ်းဆည်းထားတဲ့ နေရာက _training models_ ဖြစ်ပါတယ်။ မော်ဒယ်များကို သမိုင်းအချက်အလက်များမှာ လေ့ကျင့်ကာ ဒေတာ ဆက်စပ်မှုများကို အလိုအလျောက် ဖမ်းဆီးနိုင်ပြီး မကြိုက်တတ်နေသေးသော အသစ်သော ဒေတာအတွက် ရလဒ်များခန့်မှန်းနိုင်ပါတယ်။ +ယခုတွင် ML အတွက် regression ကို ပိုမိုနက်ရှိုင်းစွာ လေ့လာရန်အဆင်ပြေပြီ။ Visualization က data ကိုနားလည်စေရာပေးသော်လည်း Machine Learning ၏ တကယ့်အားကောင်းချက်မှာ _မော်ဒယ်များကို သင်ကြားသည်မှာဖြစ်သည်။_ မော်ဒယ်များဟာ နာမည်ကြီးအတိတ် ဒေတာများကို သင်ကြားခြင်းဖြင့် ဒေတာဆက်စပ်မှုများကို အလိုအလျောက် ဖမ်းဆီးနိုင်ပြီး မော်ဒယ်အသစ် မမြင်ဖူးသည့် ဒေတာများအတွက် ရလဒ်များ ရှာဖွေနိုင်စေသည်။ -ဒီသင်ခန်းမှာတော့ _မူလသော linear regression_ နှင့် _polynomial regression_ ဆိုတဲ့ regression အမျိုးအစား နှစ်မျိုးအကြောင်းကောင်းကောင်း နားလည်ကြမယ်၊ နည်းပညာများကို ဖက်ရှင်နည်းလမ်း တချို့နဲ့အတူ။ ဒီမော်ဒယ်တွေက pumpkin စျေးနှုန်းကို ကွဲပြားတဲ့ input အပေါ်မူတည်၍ ကြိုတင်ခန့်မှန်းပေးနိုင်ပါတယ်။ +ဒီသင်ခန်းစာမှာ _အခြေခံ linear regression_ နဲ့ _polynomial regression_ ဆိုတဲ့ regression နှစ်မျိုးကို ထပ်မံလေ့လာပြီး အဲ့ဒီနည်းပညာများအောက်မှာရှိတဲ့ သင်္ချာကိုလည်း တက်ကြွစွာ ဖော်ပြမှာ ဖြစ်ပါတယ်။ အဲဒီမော်ဒယ်တွေက pumpkin စျေးရှိတဲ့ input data အပေါ်မူတည်ပြီး စျေးနှုန်းခန့်မှန်းနိုင်စေပါမယ်။ [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 အပေါ်က ဓာတ်ပုံကို နှိပ်ပြီး linear regression အကြောင်းအကျဉ်းချုပ် ဗွီဒီယို မျှဝေကြည့်ပါ။ +> 🎥 Linear regression အကြောင်း တိုတိုကောက်ကပ်ချုပ် များကို ကြည့်ရန် ပုံကို နှိပ်ပါ။ -> ဒီသင်လမ်းညွှန်တစ်ခုလုံးမှာ နည်းနည်းသောသင်္ချာအသိပညာရှိသူ တွေအတွက်နဲ့ အခြားနယ်ပယ်မှလာသော ကျောင်းသားတွေအလွယ်တကူနားလည်စေချင်သောကြောင့် မှတ်ချက်များ၊ 🧮 သင်္ချာခေါ်ဆိုချက်များ၊ ပုံဆွဲနှင့် သင်ယူမှုကိရိယာများ ပါဝင်ပါတယ်။ +> ဒီသင်တန်းအစီအစဉ်မှာ သင်္ချာအခြေခံစာမျိုးနည်းနည်းသာ သိရှိထားပေးရန် အဓိကထားပြီး အခြားဘာသာရပ်မှ ကျောင်းသားများအတွက်လည်း လွယ်ကူစေမည့် မှတ်ချက်များ၊ 🧮 သင်္ချာဥပမာများ၊ ပုံပြင်နှင့် အခြားလေ့လာမှုကိရိယာများယူလာထားသည်။ -### အဆင်သင့်ဖြစ်မှု +### မပြင်ဆင်မီ မျှော်မှန်းချက် -ယခုအချိန်မှာ pumpkin ဒေတာဖွဲ့စည်းမှုနှင့် မိတ်ဆက်ထားသင့်ပါတယ်။ ဒေတာကို ဒီသင်ခန်း ရဲ့ _notebook.ipynb_ ဖိုင်ထဲမှာ ရှိပြီး ရှင်းလင်းပြီးသား ဖြစ်ပါတယ်။ ဖိုင်ထဲမှာ pumpkin စျေးနှုန်းကို bushel တစ်ခုခုအလိုက် အသစ်သော ဒေတာဇယားတစ်ခုအဖြစ် ပြထားပါသည်။ Visual Studio Code ၏ kernel များမှာ ဒီ notebook များကို ပြေးနိုင်ခြင်းကို သေချာစေရပါ။ +ယခုအထိ သင်သည် pumpkin ဒေတာ၏ ဖွဲ့စည်းပုံကို နားလည်ပြီးသား ဖြစ်ရန်လိုအပ်သည်။ ဒေတာကို ဒီသင်ခန်းစာနဲ့ ပတ်သက်သည့် _notebook.ipynb_ ဖိုင်ထဲတွင် ကြိုတင်ထည့်ထားပြီး သန့်စင်ထားပါသည်။ ဖိုင်ထဲတွင် pumpkin စျေးနှုန်းကို bushel တစ်ခုလျှင် ပြသထားပါတယ်။ Visual Studio Code တွင် kernel များကိုသုံးပြီး notebook များကို တက်နိုင်သောကြောင့် စစ်ဆေးပါ။ ### ပြင်ဆင်မှု -အသိပေးခြင်းအနေဖြင့် ဒီဒေတာကို ဖတ်ယူရခြင်းသည် ဒေတာကို ဖြေရှင်းရန် ရည်ရွယ်သည်ကို သတိပြုပါ။ +ရိုးရိုးမှတ်တမ်းအနေနဲ့ ဒေတာကို မေးမြန်းဖို့ယခု ဒေတာကိုဖွင့်ထားတယ်ဆိုတာကို မှတ်ထားပါ။ -- Pumpkin များဝယ်ရောက်ရန် အကောင်းဆုံးအချိန်က ဘယ်အချိန်လဲ? -- မိသားစုတွေအတွက် ထုပ်ပိုးထားတဲ့ အသေးစား pumpkin တစ်အိတ် စျေးနှုန်း ဘယ်လောက်လဲ? -- ထုတ်ပိုးမှု များကို half-bushel basket သို့မဟုတ် 1 1/9 bushel ဘောက်စ်ဖြင့် ဝယ်သင့်ပါသလား? -ဒီဒေတာကို ဆက်လက်စူးစမ်းကြည့်ရအောင်။ +- ဘယ်အချိန် pumpkin ဝယ်ဖို့အကောင်းဆုံးလဲ? +- miniature pumpkin case တစ်ခုအတွက် မည်သည့်စျေးဈေးမျိုးမျှော်လင့်ရမလဲ? +- pumpkin ကို half-bushel တို့မှာ ဝယ်သင့်သလား၊ 1 1/9 bushel box နဲ့ ဝယ်သင့်သလား? +ဒီဒေတာကို နက်ရှိုင်းစွာလေ့လာဆဲဖြစ်ပါတယ်။ -ပြီးခဲ့သည့်သင်ခန်းတွင် Pandas ဒေတာဖွဲ့စည်းမှု တစ်ခုကို ဖန်တီးပြီး မူရင်း dataset မှ အပိုင်းတစ်ပိုင်းဖြင့် ပြည့်စုံစွာ ပြင်ဆင်ပြီး စျေးနှုန်းကို bushel တစ်ခုအလိုက် စံပြန်းပြုလုပ်ခဲ့သည်။ သို့သော်၊ ဒီလိုလုပ်ခြင်းမကြောင့် datapoint ၄၀၀ ခန့် သာစုစည်းနိုင်ခဲ့ပြီး ရာသီဥတု ရာသီကာလများအတွက်သာ ဖြစ်ပါသည်။ +ယခင်သင်ခန်းစာမှာ Pandas data frame တစ်ခု ဖန်တီးပြီး မူလ dataset ၏ အစိတ်အပိုင်းတစ်ခုများဖြင့် bushel အရ စျေးနှုန်းကို အတိုင်းအတာတစ်ခုအဖြစ်ချိန်ညှိခဲ့ပြီဖြစ်ပါတယ်၊ သို့သော် အဲဒါကြောင့် data point များ ၄၀၀ ကျော်၊ အထူးသဖြင့် ဆောင်းရာသီလများအတွက်သာရယူနိုင်ခဲ့ပါတယ်။ -ဒီသင်ခန်းတွင် ပါဝင်သည့် notebook သို့ လေ့လာကြည့်ပါ။ ဒေတာကို အကြိုဖတ်ထားပြီး စတင် scatterplot တစ်ခုကို month အချက်အလက်များ ဖော်ပြထားပါတယ်။ နောက်ထပ်သန့်ရှင်းစင်ကြယ်မှုများအားဖြင့် ဒေတာ၏ သဘာဝအကြောင်းအရာ များကို အသေးစိတ် သိရှိနိုင်ဖို့ ကြိုးစားကြည့်ရအောင်။ +ဒီသင်ခန်းစာ notebook တွင် ကြိုတင်ထည့်ထားသည့် ဒေတာကို ကြည့်ရှုပါ။ ဒေတာကြိုထည့်ပြီး မူရင်း scatterplot တစ်ခုကို ပြုလုပ်ပြီး လကို ပြသထားသည်။ ဒေတာဂုဏ်သတ္တိများကို ပိုမိုနက်ရှိုင်းစေဖို့ သန့်စင်ကြည့်စမ်းခြင်းဖြင့် လေ့လာနိုင်မယ်။ -## Linear regression လိုင်း +## linear regression စတိုးတန်းတစ်ခု -သင်သိရှိခဲ့သည့် Lesson 1 မှာ၊ linear regression ရဲ့ ရည်ရွယ်ချက်မှာ အောက်ပါအချက်များအတွက် လိုင်းတစ်ခု အကောင်းဆုံး ဆွဲဆောင်နိုင်ခြင်း ဖြစ်သည် # +သင်ယူခဲ့ပုံစာရင်းအရ၊ linear regression လေ့လာမှုရဲ့ ရည်ရွယ်ချက်မှာ အောက်ပါအလိုဖြစ်သည်။ -- **အပြောင်းအလဲဆက်စပ်မှုကို ဖော်ပြခြင်း**။ အပြောင်းအလဲများကြား ဆက်သွယ်မှု ဖော်ပြရန် -- **ခန့်မှန်းချက်လုပ်ခြင်း**။ ဒေတာသစ်အချက်များ အတွင်း ဒီလိုင်းနှင့် ဆက်စပ်နေမည့်နေရာကို တိကျစွာ ခန့်မှန်းရန် +- **အချင်းချင်းဆက်စပ်မှုများ ပြသခြင်း။** Variable များအကြား ဆက်စပ်မှုကို ပြသပါ။ +- **ခန့်မှန်းချက် ပြုလုပ်ခြင်း။** စတိုးတန်းနဲ့ ယှဉ်ကြည့် သင်ခန့်မှန်းထားသော အချက်အသစ်တစ်ခုမှ စတိုးတန်းအပေါ်မှာ မည်သည့်နေရာတွင် ရှိပါမည်ဆိုသည်ကို မှန်ကန်ပြည့်စုံသော ခန့်မှန်းချက်သုံးပါ။ -**Least-Squares Regression** ကိုသုံး၍ ဒီလိုင်းဆွဲခြင်း ပုံမှန်ဖြစ်သည်။ "Least-Squares" ဆိုသည်မှာ မော်ဒယ်အတွင်း စုစုပေါင်း အမှား(အချက်အလွဲ) များအား လျော့နည်းအောင်လုပ်ခြင်းလုပ်ငန်းစဉ်ဖြစ်သည်။ တစ်ခုချင်းစီသော ဒေတာအချက်များအတွက် ရှိနေသည့် စစ်မှန်သော အချက်နှင့် regression လိုင်းအကြား အလျားလိုင်းအကွာအဝေး (residual လို့ခေါ်သည်) ကိုတိုင်းတာသည်။ +**Least-Squares Regression** အသုံးပြု၍ ဤအမျိုးအစား စတိုးတန်းဆွဲတတ်သည်။ "Least-Squares" ဆိုသည်မှာ မော်ဒယ်အားလုံးတွင် မှားယွင်းမှုစုစုပေါင်းကို အနည်းဆုံးလုပ်ရန်ဖြစ်သည်။ Data point တစ်ခုစီအတွက်၊ အမှန်တကယ်ရှိသောနေရာနဲ့ regression စတိုးတန်းကြား လျှပ်တလွှာအကွာအဝေး (residual ဟုခေါ်သည်) ကို တိုင်းတာသည်။ -အဆိုပါကွာခြားမှုများကို squared (ချယောင်းခြင်း) ကျင့်သုံးစို့ခုနှစ်ကြောင်းမှာ - +distance များကို square လုပ်ခြင်းသည် အဓိက နှစ်ချက်အတွက်ဖြစ်သည် - -1. **ကြီးသေးမှုကို ဦးစားပေးရန်**။ ကွာခြားချက် -၅ ကို +၅ နှင့်တူညီစေရန်လိုသည်။ squared သောကြောင့် အဖေါ်အဖြစ်မှ အားလုံးကို အပလာတန်ဖိုးပြောင်းလဲသည်။ +1. **လျှောက်လွှာအားနည်းချက်အလိုက် မဟုတ်ဘဲ အမြန်ဖြေရှင်းရန်။** -5 ပမာဏမျှ -5 လိုအတိုင်း ဆက်ဆံလိုသည်။ Square လုပ်လျှင် positive ပမာဏပဲ ဆက်မိသည်။ +2. **လွတ်လပ်မှုများကို ပြစ်ဒဏ် ချမှတ်ခြင်း။** Square လုပ်ခြင်းသည် error ကြီးများကို ပိုမိုအလေးပေးကုန်တယ်၊ ပိုမိုဝေးလွန်းသော points များပတ်သက်ထားရန်စတိုးတန်းကို နီးစီးစေသည်။ -2. **အထူးကွာခြားချက်များကို ပိုဆိုးစေခြင်း**။ squared ခြင်းမျိုးက လွယ်ပေါ့ကွန်ယက်အမှားများအားပိုမိုထိခိုက်စေပြီး လိုင်းကို အလွဲကြီးနေသော ဒေတာအချက်များနီးစပ်ရန် မျှော်လင့်စေသည်။ +ပြီးလျှင် square များအားလုံးကို ပေါင်း၍ အနည်းဆုံးတန်ဖိုးရှိသော စတိုးတန်းကိုရှာဖွေသည်။ -ပြီးမှ အားလုံးကို စုပေါင်းသည်။ ကျွန်ုပ်တို့ရည်မှန်းတဲ့လိုင်းက ဖော်ပြထားတဲ့ စုစုပေါင်း 성ရေမှာ အနည်းဆုံးဖြစ်မည့် လိုင်းဖြစ်ရမည်။ ဒါကြောင့် "Least-Squares" လို့ ခေါ်ပါတယ်။ - -> **🧮 သင်္ချာပြပါ** -> -> ဒီလိုင်းကို _line of best fit_ လို့ခေါ်ပြီး [သင်္ချာဆိုင်ရာ ပုံစံဖြင့်](https://en.wikipedia.org/wiki/Simple_linear_regression) ဖော်ပြနိုင်သည် - -> +> **🧮 သင်္ချာကိုပြပါ** +> +> ဤစတိုးတန်းကို _line of best fit_ ဟုပြောပြီး [တူညီသောသင်္ချာပြထားသည်](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` မှာ 'ရှင်းလင်းပြဿနာ ပြသသူ' (explanatory variable) ဖြစ်ပြီး `Y` ဟာ 'တာဝန်ခံပြဿနာ' (dependent variable) ဖြစ်သည်။ လိုင်း၏ စေ့ကွက် (slope) ကို `b` ဟုခေါ်ပြီး `a` သည် y-intercept ဖြစ်ပြီး `X=0` ဖြစ်စဉ်အတွင်း `Y` ရဲ့တန်ဖိုးကို ဆိုလိုသည်။ +> +> `X` သည် 'explanatory variable' ဖြစ်သည်။ `Y` သည် 'dependent variable' ဖြစ်သည်။ စတိုးတန်း၏ slope ကို `b`၊ y-intercept ကို `a` ဟု ဆိုလိုသည်။ y-intercept သည် `X = 0` ဖြစ်သောအခါ `Y` ၏တန်ဖိုးဖြစ်သည်။ > >![calculate the slope](../../../../translated_images/my/slope.f3c9d5910ddbfcf9.webp) > -> ပထမဆုံး slope `b` ကိုတွက်ပါ။ [Jen Looper](https://twitter.com/jenlooper) ရေး infographic +> slope `b` ကို ဦးစီးတွက်ချက်ခြင်း။ [Jen Looper](https://twitter.com/jenlooper) မှ infographic > -> တခြားစကားများဖြင့် ပြောရမယ်ဆိုရင်၊ ကျွန်ုပ်တို့၏ pumpkin ဒေတာ မူလ မေးခွန်းအား "လစဉ် bushel တစ်ခုအတွက် pumpkin စျေးနှုန်းကို ခန့်မှန်းပါ" ဆိုပါက `X` သည်စျေးနှုန်းကို ကိုယ်စားပြုပြီး `Y` သည် အရောင်းလကို ကိုယ်စားပြုပါသည်။ +> နှင့် အခြားနည်းဖြင့် pumpkin data ၏ မူလမေးခွန်း စကားများမှာ - "pumpkin price ကို month အလိုက် ခန့်မှန်းရေး" ။ အဲဒီမှာ `X` သည် စျေးနှုန်းအား၊ `Y` သည် ရောင်းချနေ့ (month) ကို ကိုယ်စားပြုသည်။ > >![complete the equation](../../../../translated_images/my/calculation.a209813050a1ddb1.webp) > -> Y ကို တွက်ချက်ပါ။ $4 လောက်ပေးဝယ်ရင် April လို့ မှတ်ပါ! [Jen Looper](https://twitter.com/jenlooper) infographic +> Y တန်ဖိုးကိုတွက်ချက်ပါ။ $4 ခန့်ပေးရင် ဆိုတော့ April ဖြစ်မှာပဲ! [Jen Looper](https://twitter.com/jenlooper) infographic > -> ဒီလိုင်း တွက်ချက်ရာမှာ slope အပြင် y-intercept (ဆိုလိုသည်မှာ `X=0` ဖြစ်ဆုံးသော အချိန် `Y` တည်ရှိရာ နေရာ) ကို အလေးပေးဆင်ခြင်း လိုအပ်သည်။ +> စတိုးတန်း slope ကို တွက်ချက်ရန် သင်္ချာသည် y-intercept နဲ့လည်း ဆက်နွယ်နေသည်၊ `X=0` ဖြစ်သောအခါ `Y` တန်ဖိုးဘယ်နေရာမှာရှိသည်ကို ချပြပါသည်။ > -> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ဝက်ဘ်ဆိုက်တွင် တန်ဖိုးများ တွက်ချက်နည်းကို ကြည့်ရှုနိုင်ပါတယ်။ နံပါတ်များ၏ တန်ဖိုးအစုံ မျိုး မျက်နှာပြင်ပေါ် မျဉ်းတွေလမ်းကြောင်းကို ရှုမျက် မိတ်ဆက်ရန် [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) ကိုလည်း သွားကြည့်ပါ။ +> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ဆိုဒ်တွင် ကိန်းဂဏန်းတွက်သည့်နည်းပညာကို ကြည့်ရှုနိုင်ပြီး၊ [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) တွင် နံပါတ်တန်ဖိုးများသည် စတိုးတန်းကို ဘယ်လို သက်ရောက်သနည်းကို ကြည့်ရှုပါ။ ## Correlation -နောက်တစ်ခု နားလည်ရန် လိုအပ်သော စကားလုံးမှာ X နဲ့ Y တန်ဖိုးများအတွက် **Correlation Coefficient** ဖြစ်သည်။ scatterplot တစ်ခုမှာ ချက်ချင်း ဒီ coefficient ကို မြင်တွေ့နိုင်သည်။ points များ စည်းရုံး၍ စစ်မှန်တဲ့တိုင်းဟာ correlation မြင့်ပြီး ၊ scatter များမရှိပဲ ရှုပ်ထွေးသော scatter က correlation နည်းသည်။ +နောက်ထပ် နားလည်သင့်သည့် စကားလုံးမှာပဲ၊ X နှင့် Y တန်ဖိုးများအကြား **Correlation Coefficient** ဖြစ်သည်။ Scatterplot ကိုသုံး၍ အကောင်းဆုံး သုံးသပ်နိုင်ပါသည်။ တဆင့်တည်း စတိုးတန်းတည်နေရာတွင် ပြသထားသည့် datapoint များသည် correlation အဆင့်မြင့်မှုရှိသည်ဟု ဆိုနိုင်သည်။ သို့သော် datapoint များသည် မည်သည့်နေရာတွင်မဆို ဖြန့်ဝေနေပါက correlation အနည်းငယ်ရှိသည် ဟု ဆိုနိုင်သည်။ -ကောင်းမွန်သော linear regression မော်ဒယ် အနေနဲ့ Least-Squares Regression နည်းဖြင့် correlation coefficient တန်ဖိုးဟာ 0 ထက် 1 အနီးကပ် ဖြစ်သည်။ +အကောင်းဆုံး linear regression မော်ဒယ်မှာ correlation coefficient က (0 ထက် 1 နီးကပ်) မြင့်မားပြီး Least-Squares Regression နည်းဖြင့် အလုပ်လုပ်ပါသည်။ -✅ ဒီသင်ခန်းထောက်ခံ notebook ကို run ပြီး Month နှင့် Price scatterplot ကို ကြည့်ပါ။ Pumpkin အရောင်းအတွက် Month နှင့် Price အချက်များတွင် သင့်ရဲ့ scatterplot တွင် အမြင်ဖြင့် correlation မြင့်မမှန်သလဲ? `Month` အစား *day of the year* (နှစ်အစဥ်က လနေ့ရေ) သုံးပါက ပြောင်းလဲမှုရှိပါသလား? +✅ ဒီသင်ခန်းစာနဲ့ဆက်စပ်သားတဲ့ notebook ကို ထည့်Run ထားပြီး Month နှင့် Price Scatterplot ကို ကြည့်ပါ။ Month နဲ့ Price ကို ယှဥ်ကြည့်သော pumpkin အရောင်း ဒေတာတွင် scatterplot အရ correlation က မြင့်မားသလား ၊ နည်းနည်းပေါ့မလား? Month အစား *ေန့ရက်* (စာနှစ်အစောပိုင်းမှရက်အရေအတွက်) အသုံးပြုပါက ဘယ်လိုပြောင်းလဲသလဲ? -အောက်က code မှာ `new_pumpkins` ဆိုတဲ့ data frame တစ်ခုရရှိထားတယ်ဆိုပြီး ထပ်မံယူဆမယ် - +အောက်တွင် ကျွန်ုပ်တို့ သန့်စင်ပြီးရရှိထားသော dataframe အမည် `new_pumpkins` ဟုသတ်မှတ်ထားသည်။ ဤအတိုင်းဖြစ်သည် - -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 - -> ဒေတာတိုက်ရိုက် သန့်ရှင်းဖို့ code ကို [`notebook.ipynb`](notebook.ipynb) မှာတွေ့နိုင်ပါတယ်။ ယခင်သင်ခန်းတွင် အတူတူ သန့်ရှင်းခြင်း လုပ်ဆောင်ပြီးပြီး၊ `DayOfYear` ကော်လံကို အောက်ပါ ဖော်ပြချက်အတိုင်း တွက်ချက်ထားပါတယ် - +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +> ဒေတာသန့်စင် နည်းလမ်းတွေကို [`notebook.ipynb`](notebook.ipynb) ဖိုင်ထဲမှာ ရယူနိုင်ပါတယ်။ ယခင်သင်ခန်းစာနဲ့တူညီသည့် သန့်စင်ခြင်းများကဲ့သို့ ဆောင်ရွက်ပြီး `DayOfYear` ကော်လံကို တွက်ချက်ထားသည်။ + ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Linear regression ရဲ့ သင်္ချာနောက်ခံကို နားလည်ပြီးရင်တော့ ဟုတ်တယ် Regression မော်ဒယ်တစ်ခုဖန်တီးပြီး ဘယ် package က pumpkin ရဲ့ စျေးနှုန်းအကောင်းဆုံးမျိုး ဖြစ်မလဲ ခန့်မှန်းကြည့်မယ်။ လူတစ်ယောက် holiday pumpkin patch အတွက် ရောင်းဝယ်တဲ့ အချိန်မှာ package များကို မှန်ကန်စွာ ဝယ်ယူဖို့ အကြံပေးရန်လိုလိမ့်မယ်။ -## Correlation ကို ရှာဖွေရန် +Linear regression အတွက် သင်္ချာကို နားလည်သွားသည့်အခါ Regression မော်ဒယ်တစ်ခု ဖန်တီး၍ pumpkin package မည်ဟာ ပိုမိုကောင်းမွန်သောစျေးနှုန်းရှိမလဲ ခန့်မှန်းကြည့်ပါ။ စနေတင် праздник pumpkin patch အတွက် pumpkin ဝယ်သူများအတွက် ဝယ်ယူမှုများတွင် အကောင်းဆုံး ဖြစ်စေဖို့ ဤသတင်းအချက်အလက် များလိုအပ်ပါမည်။ + +## Correlation ရှာဖွေရေး [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 အပေါ်ဓာတ်ပုံကိုနှိပ်၍ correlation အကြောင်းအကျဉ်းဗွီဒီယိုကြည့်ပါ။ +> 🎥 Correlation အကြောင်း တိုတုတ်ကောက်ကြည့်ရှုရန် ဗီဒီယို ကို အသုံးပြုလိုက်ပါ။ -ယခင်သင်ခန်းမှာ အသိပညာရထားတဲ့အတိုင်း တစ်လလျှင် စျေးနှုန်းပျမ်းမျှက ဒီလိုပုံစံဖြစ်သည် - +ယခင်သင်ခန်းစာဖြတ်သန်းမှုအရ လ အလိုက် ပျမ်းမျှစျေးနှုန်းမှာ အောက်ပါအတိုင်းမြင်ရပါသည် - Average price by month -ဒါက correlation ရှိကြောင်း အဆိုပြုရာ၊ `Month` နဲ့ `Price` သို့မဟုတ် `DayOfYear` နဲ့ `Price` ဆက်နွယ်မှု ထောက်ထားရန် linear regression မော်ဒယ် လေ့ကျင့်ကြည့်နိုင်ပါတယ်။ အောက်မှာ scatterplot တစ်ခု ရှိပြီး "Day of Year" နှင့် "Price" ဆက်နွယ်မှုကို ဖေါ်ပြထားပါတယ် - +ဒါဟာ correlation ရှိတယ်ဆိုတာကို ပြထားပြီး `Month` နဲ့ `Price`, `DayOfYear` နဲ့ `Price` ဆက်စပ်မှုကို predict လုပ်ဖို့ linear regression train/training ပြုလုပ်ကြည့်ရအောင်။ + +အောက်က scatter plot သည် `DayOfYear` နဲ့ `Price` ဆက်စပ်မှုကို ဖော်ပြသည်။ -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -`corr` function ကိုသုံးပြီး correlation ရှိ/မရှိ စစ်ဆေးကြည့်ပါ - +`corr` function ကို အသုံးပြုပြီး correlation ရှိ/မရှိ စစ်ဆေးကြည့်ရအောင် - ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Correlation က အသေးစားဖြစ်ပြီး `Month` အပေါ်မှာ -0.15, `DayOfMonth` အပေါ်မှာ -0.17 ဖြစ်သော်လည်း ခိုင်မာသော ဆက်နွယ်မှုတစ်ခုရှိနိုင်သည်။ Pumpkin အမျိုးအစားနှင့် သက်ဆိုင်သော စျေးနှုန်း အုပ်စုကွဲများရှိပါသည်။ အဲ့ဒီအကြောင်းကို မူတည်ပြီး pumpkin အမျိုးအစားတွေ မတူညီတဲ့အရောင်နဲ့ scatterplot ချထားကြည့်ပါ။ `scatter` function ကို `ax` parameter ဖြင့် အသုံးပြု၍ တစ်ခုတည်းရေးကွက်ပေါ်မှာ အချက်အားလုံးကို ပုံဖော်နိုင်သည် - + +Correlation က `Month` နှင့် -0.15၊ `DayOfYear` နဲ့ -0.17 ဖြစ်ပြီး ကြီးမားမသိသာသော်။ pumpkin မျိုးစုံပေါ်မူတည်၍ စျေးအမျိုးအစား မတူကြပါသလားဆိုသည့် ရှာဖွေရေးနည်းလမ်း (hypothesis) တစ်ခုရှိပါသည်။ အဆိုပါ အတည်ပြုပြီး အမျိုးအစားအလိုက် အရောင်ကို ခွဲခြား၍ scatterplot တစ်ခု ဖော်ဆောင်လိုက်ရအောင်။ မြေပုံ `scatter` ဖန်တီးသော `ax` parameter ကို ထည့်သုံးပြီး အချက်များအားလုံးကို တစ်ခုတည်းသောပုံတွင် စုစည်းတင်ပြနိုင်ပါသည်။ ```python ax=None @@ -140,76 +141,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - -Scatter plot of Price vs. Day of Year -စုံစမ်းတွေ့ရှိချက်အရ အမျိုးအစားဟာ စျေးနှုန်းမှာ နေရာအများကြီးသက်ရောက်စေပြီး အရောင်းရက်စွဲထက် ပိုအရေးကြီးသည်။ Bar graph ဖြင့် ထောက်ပြထားသည် - +Scatter plot of Price vs. Day of Year + +ကျွန်ုပ်များ ရေးရာ အယူအဆမှာ pumpkin variety က စျေးနှုန်း ပိုကြီးစေပါတယ်၊ ရောင်းချသော ရက်စွဲထက် ပိုမိုသက်ရောက်မှုရှိပါတယ်။ ဤအချက်ကို bar graph ဖြင့်တွေ့မြင်ရပါသည် - ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - -Bar graph of price vs variety -ယခုအချိန်မှာ pumpkin အမျိုးအစားတစ်မျိုးဖြစ်တဲ့ 'pie type' မှာ ကန်တော့လိုက်ပြီး အရောင်းရက်စွဲက စျေးနှုန်းမှာ သက်ရောက်မှု သိရှိကြည့်ပါ - +Bar graph of price vs variety + +ယခုအချိန် pumpkin မျိုးစုံ 'pie type' တစ်ခုသာ ရှု့နေပြီး ရက်စွဲသည် စျေးနှုန်းအပေါ် အကျိုးသက်ရောက်မှု ရှိသည်ကို ကြည့်ရှုကြပါစို့။ ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -`Price` နဲ့ `DayOfYear` အကြား correlation တွက်ချက်ရာ `corr` function သုံး၍ -0.27 ခန့်ရပြီး predictive model လေ့ကျင့်ရန် သေချာသည့် နေရာဖြစ်သည်။ +ယခု `corr` function နှင့် Price နှင့် DayOfYear အကြား correlation တွက်ချက်ပါက `-0.27` ခုခံရပါမည် - predictive မော်ဒယ် တစ်ခုသင်ကြားရန် သေချာသောကြောင်းအတိုင်း ဖြစ်သည်။ -> Linear regression မော်ဒယ် လေ့ကျင့်မှုမတိုင်ခင် ဒေတာ အပြည့်အဝ သန့်ရှင်းထားတာ အရေးကြီးသည်။ Missing values တွေ အနေနှင့် မရှိမဖြစ်လိုအပ်သည်။ -> ထို့ကြောင့် ဟိုခွက်ကွက်တွေ ပယ်ဖျက်သင့်ပါတယ် - +> linear regression မော်ဒယ် သင်ကြားမတိုင်မီ ဒေတာ သန့်ရှင်းမှု အရေးကြီးပါသည်။ မဖြည့်ထားသောတန်ဖိုးများစွာရှိပါက linear regression က သူ့လုပ်ငန်းကို မကောင်းစွာလုပ်နိုင်ပါ။ ထို့ကြောင့် အလယ်တန်းရွေ့တားသည့်ကွက်လပ်များကို ဖယ်ရှားသင့်သည်။ ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -အခြားနည်းလမ်းအနေနှင့် အလွတ်ရှိနေသောတန်ဖိုးများကို အဲဒီကော်လံရဲ့ ပျမ်းမျှတန်ဖိုးနဲ့ ဖြည့်စွက်နိုင်ပါတယ်။ + +အခြားနည်းလမ်းမှာ ဒီလွတ်လပ်တဲ့တန်ဖိုးများကို ဆိုင်ရာကော်လံမှ ပျမ်းမျှတန်ဖိုးဖြင့် ဖြည့်သွင်းနိုင်သည်။ ## Simple Linear Regression [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 အပေါ်ဓာတ်ပုံကို နှိပ်ပြီး Linear နှင့် Polynomial Regression အကြောင်း အကျဉ်းဗွီဒီယို ကြည့်ပါ။ +> 🎥 linear နဲ့ polynomial regression အကြောင်း တိုတုတ်ကောက်ချက်များ အတွက် ဗီဒီယိုကို တွေ့ကြည့်ရန် ပုံကိုနှိပ်ပါ။ -Linear Regression မော်ဒယ် လေ့ကျင့်ရန် **Scikit-learn** ကို အသုံးပြုမည်ဖြစ်သည်။ +Linear Regression မော်ဒယ် သင်ကြားမှုအတွက် **Scikit-learn** library ကို အသုံးပြုပါမယ်။ ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -input တန်ဖိုးများ (features) နဲ့ output ရလဒ် (label ကို) များကို numpy array များအဖြစ် သီးခြားခွဲသည် - + +input များ (features) နဲ့ မျှော်လင့်ထားသော output (label) တို့ကို numpy arrays များအဖြစ် ခွဲထုတ်ပါမယ်- ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> input data ကို Linear Regression package သဘောကျစေရန် `reshape` လုပ်ရန် ဖြစ်သည်။ Linear Regression ဟာ 2D-array အနေဖြင့် input လက်ခံပြီး array ၏ တန်းတစ်တန်းစီမှာ input feature တစ်ခုစီ ပါဝင်ရမည်။ ကျွန်ုပ်တို့မှာ input တစ်ခုသာရှိသဖြင့် N×1 အမျိုးအစား array လိုအပ်သည်။ -ပြီးနောက် train နှင့် test data များ ခွဲရန် လိုအပ်သည်။ မော်ဒယ်ကို train ပြီးနောက် ဝင်ရောက် စစ်ဆေးနိုင်စေရန်ဖြစ်ပါသည်။ +> notice that Linear Regression သုံးရန် input data ကို reshape လုပ်ရသည်။ Linear Regression အတွက် input ကို 2D-array ဖြစ်ရမည်၊ အဲဒီမှာ တန်းတိုင်းသည် input feature vector ဖြစ်ရမည်။ ငါတို့တွင် input တစ်ခုသာရှိသောကြောင့် N×1 shape ရှိတဲ့ array ဖြင့် data ပေးရန် လိုအပ်သည်။ + +ပြီးနောက် မော်ဒယ်ကို သင်ကြားမှုပြုလုပ်ပြီးနောက် စစ်ဆေးနိုင်ရန် train & test datasets များခွဲထုတ်ရမည်။ ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -နောက်ဆုံး အမှန်တကယ် Linear Regression မော်ဒယ် လေ့ကျင့်ခြင်း code နှစ်ကြောင်းသာ လိုအပ်သည်။ `LinearRegression` သို့ အသင့်သတ်မှတ်ပြီး `fit` method ဖြင့် လေ့ကျင့်သည်။ + +နောက်ဆုံးမှာ Linear Regression မော်ဒယ်ကို ပြုလုပ်ရန် ၂လိုင်းသာလိုသည်။ `LinearRegression` object ကို သတ်မှတ်ပြီး `fit` method ဖြင့် data ကို သင်ကြားသည်။ ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit`-ပြီးပြီးနောက် `LinearRegression` အရာဝတ္ထုတွင် regression ၏ coefficients အားလုံးပါရှိပြီး၊ ထို coefficients များကို `.coef_` ပိုင်ဆိုင်မှုမှတဆင့် access လုပ်နိုင်သည်။ ကျွန်ုပ်တို့အခြေအနေတွင် coefficient တစ်ခုသာရှိပြီး၊ လျှင် `-0.017` အနားအနီးရှိသင့်သည်။ ၎င်းသည် စျေးနှုန်းများသည် အချိန်အလိုက် တစ်နေ့လျှင် လက်မ ၂ စင့်ခန့် ပျော့မှုတစ်ခုခုရှိသည့်အတိုင်း ပြသနေသည်။ `lin_reg.intercept_` ကို သုံးကာ regression ၏ Y-axis နှင့် အစပ်ကိုလည်း access လုပ်နိုင်ပြီး ကျွန်ုပ်တို့အတွက်နှစ်အစတွင်စျေးနှုန်းအနီး `21` ခန့်ရှိမည်ဖြစ်သည်။ +`fit` ပြီးနောက် `LinearRegression` အရာဝတ္ထုတွင် regression ၏ coefficient များအားလုံး ပါရှိပြီး `.coef_` property ကို အသုံးပြု၍ ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ ကျွန်ုပ်တို့၏အတွက် coefficient တစ်ခုတည်းရှိပြီး၊ ၎င်းသည် `-0.017` ဘယ်ဘက်လောက ပတ်လည်ရှိသင့်သည်။ ၎င်းမှာ ကာလကြာမြင့်သလို ပါးလျော့နည်းနည်းကျဆင်းသည်ကို အဓိပ္ပါယ်ရသည်၊ တစ်နေ့လျှင် စင့် ၂ ခန့် ကျဆင်းကြောင်း ဖြစ်သည်။ regression ၏ Y-axis နှင့်ထိတွေ့ရာနေရာကို `lin_reg.intercept_` ဖြင့်လည်း ဝင်ရောက်ကြည့်ရှုနိုင်ပြီး ကျွန်ုပ်တို့အတွက် ၎င်းက `21` ခန့်ရှိပြီး ၂၀၁၉ ခုနှစ်အစ အချိန်တွင်စျေးနှုန်းအဆင့်ကို ဖော်ပြသည်။ -မော်ဒယ်၏တိကျမှုကို ကြည့်ရန် မဟာဗျူဟာ dataset တွင် စျေးနှုန်းများကို ခန့်မှန်းပြီး ထိုခန့်မှန်းချက်များနှင့် မျှော်မှန်းထားသည့်တန်ဖိုးများ မည်မျှနီးကပ်သည်ကို ရှာဖွေရမည်။ ဤကို root mean square error (RMSE) မှ အသုံးပြု၍ တိုင်းတာနိုင်ပြီး၊ မျှော်မှန်းထားသည့်တန်ဖိုးနှင့် ခန့်မှန်းထားသည့်တန်ဖိုးတို့၏ ကွာခြားချက်များ၏ စတုရန်းပျားများ၏ ပျမ်းမျှ ၏ မျိုးကို ရွေ့လျား စတုရန်းမှောက်တန်ဖိုးဖြစ်သည်။ +ကျွန်ုပ်တို့၏ မော်ဒယ် တိကျမှုကို ကြည့်ရန်၊ စမ်းသပ်ဒေတာ စုစည်းမှုတွင် စျေးနှုန်း များကို ခန့်မှန်းပြီး ခန့်မှန်းချက်များသည် မျှော်မှန်းထားသောတန်ဖိုးများနှင့် မည်မျှ နီးကပ်သလဲ ဆွေးနွေးနိုင်သည်။ ၎င်းကို Root Mean Square Error (RMSE) ကိုအသုံးပြုပြီး ခန့်မှန်းချက်များ နှင့် မျှော်မှန်းတန်ဖိုးများအကြား ကွာခြားချက်များ၏ စတုဂံ၏ မြည်းတေကို ရှာဖွေရန် အသုံးပြုနိုင်သည်။ ```python pred = lin_reg.predict(X_test) @@ -217,37 +217,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -ကျွန်ုပ်တို့ error သည် ၂ ခန့်ရှိပြီး ဒါဟာ ~၁၇% ဖြစ်သည်။ မလွန်စွာကောင်းမှု မရှိပါ။ မော်ဒယ်အရည်အသွေး၏ အခြားပြသနာတစ်ခုမှာ **coefficient of determination** ဖြစ်ပြီး အောက်ပါအတိုင်း ရနိုင်သည်- + +ကျွန်ုပ်တို့၏ error သည် ၂ ပွင့်ခန့်ရှိပြီး ~၁၇% ဖြစ်သည်။ မကောင်းပါဘူး။ မော်ဒယ်၏ အရည်အသွေး အနေနဲ့တစ်ခုက **coefficient of determination** ဖြစ်ပြီး အောက်ပါအတိုင်း ရယူနိုင်သည်- ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Value သည် 0 ဖြစ်ပါက မော်ဒယ်သည် input ဒေတာကို ထည့်သွင်းစဉ်းစားမှုမရှိပါ၊ အဲ့ဒါဟာ *အဆိုးဆုံး linear predictor* အဖြစ် အလုပ်လုပ်ပြီး ရလဒ်၏ ပျမ်းမျှတန်ဖိုးကို ပြသသည်။ 1 ဆိုသည်မှာ မျှော်မှန်းထားသည့် output များအားလုံးကို တိကျစွာ ခန့်မှန်းနိုင်သည်ကို ကိုယ်စားပြုသည်။ ကျွန်ုပ်တို့အတွက် coefficient သည် 0.06 အနည်းငယ်၏ နီးပါးဖြစ်ပြီး၊ အလွန်နိမ့်ပါသည်။ + +တန်ဖိုး 0 ဖြစ်လျှင် မော်ဒယ်သည် input ဒေတာကို လက်မခံဘဲ အလုပ်လုပ်နေပြီး အနုတ်ဆုံး Linear Predictor ဖြစ်သည်ဟု ဆိုလိုသည်၊ ၎င်းအနေဖြင့်ရလဒ်၏ ကြားနာ တန်ဖိုးသာ ဖြစ်သော mean တန်ဖိုးဖြစ်သည်။ 1 ရလဒ်ကနေ အားလုံးကို မှန်ကန်စွာ ခန့်မှန်းနိုင်သည်ကို ဆိုလိုသည်။ ကျွန်ပ်တို့အတွက် တန်ဖိုးက 0.06 ခန့်ရှိပြီး တော်တော်နည်းပါးသည်။ -test dataset နှင့် regression လိုင်းကို တွဲ၍ ဖော်ပြနိုင်ပါတယ် မော်ဒယ်အလုပ်လုပ်ပုံကို ပိုမိုရှင်းလင်းစေရန်- +ကျွန်ုပ်တို့သည် စမ်းသပ် ဒေတာနှင့် regression line ကို တိုက်ရိုက်ပုံဆွဲ၍ Regression ၏ အလုပ်လုပ်ပုံကို ကောင်းစွာမြင်နိုင်သည်- ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - + Linear regression ## Polynomial Regression -Linear Regression ၏ အမျိုးအစားတစ်ခုမှာ Polynomial Regression ဖြစ်သည်။ ကွဲပြားခြားနားသောအချိန်များတွင် variables များအကြားလိုင်းတူဆက်နွယ်မှုရှိနိုင်ပေမယ့် - ပန်းကန်၏ အရွယ်အစား များလာသည်နှင့်အမျှ စျေးနှုန်းမြင့်တက်သည် - တချို့အခြေအနေတွင် ဤဆက်နွယ်မှုများကို ပြင်သစ်လမ်းကြောင်း သို့မဟုတ် သတ်မှတ်ထားသောတန်းတူ အနားများဖြင့် ဖော်ပြ၍ မရနိုင်ပါ။ +Linear Regression ၏ နှစ် 번째 မျိုးကတော့ Polynomial Regression ဖြစ်သည်။ ခဏခဏ variable များအကြား ဆက်စပ်မှုတည်ရှိသောကြောင်း - ဥပမာ ဂဏန်းအရ အပူအကြီးဆုံးပါဝင်သည့် pumpkin ၏ ပမာဏ နှင့် စျေးနှုန်းတို့ အချိန်တည်းရှိခြင်းရှိသော်လည်း - တစ်ခါတစ်ရံတွင် ဒီဆက်စပ်မှုများသည် တန်းတူစတိုင်နယ်လိုင်း သို့ မဟုတ် မှန်းဆနိုင်သော ကွဲပြားမှု မဖြစ်နိုင်ပါ။ -✅ [Polynomial Regression အသုံးပြုနိုင်သည့် အခြား ဥပမာများ](https://online.stat.psu.edu/stat501/lesson/9/9.8) +✅ [Polynomial Regression အသုံးပြုနိုင်သော ဒေတာများ](https://online.stat.psu.edu/stat501/lesson/9/9.8) ဥပမာအချို့ -Date နှင့် Price အချက်အလက်တို့ ညီမျှမှုကို ထပ်မံကြည့်ပါ။ Scatterplot သည် လိုင်းတစ်လမ်းဖြင့် အသေးစိတ် သုံးသပ်ရန် လိုအပ်သည် ဟုတ်သလား? စျေးနှုန်းများ မပြေပဲ ကွဲပြားခြားနားနိုင်အောင်။ ဤအဖြစ်တွင် polynomial regression ကို စမ်းသပ်နိုင်သည်။ +Date နှင့် Price အကြား ဆက်နွယ်မှုကို ထပ်မံကြည့်ပါ။ ဒီ scatterplot ကို သို့တိုင်သော တန်းနယ်လိုင်းဖြင့်သာ ခွဲခြားရန် သင်ယူသင့်ပါသလား? စျေးနှုန်းများ တက် ကြွေ့ ရန်လား? ဒီအခြေအနေနှင့် polynomial regression ကို စမ်းကြည့်နိုင်သည်။ -✅ Polynomial များမှာ တစ်ခု သို့မဟုတ် ၎င်းထက်ပိုသော variables နှင့် coefficients ပါဝင်သည့် သင်္ချာရေးသားချက်များဖြစ်သည်။ +✅ Polynomial တွင် များစွာသော variables နှင့် coefficients ပါဝင်နိုင်သည့် သင်္ချာရေးဖော်ပြချက်များဖြစ်သည်။ -Polynomial regression သည် nonlinear data ကို ပိုပိုက်ကာစွာသင့်တော်အောင် curved လိုင်း တစ်ခု ဖန်တီးသည်။ ကျွန်ုပ်တို့အတွက် squared `DayOfYear` variable ကို input data ထဲသို့ ထည့်သွင်းပါက parabolic curve အမျိုးအစားဖြင့် data ကို လိုက်ဖက်နိုင်ပြီး နှစ်အတွင်း တစ်နေရာတည်းတွင် အနည်းဆုံးရှိမည်။ +Polynomial regression သည် nonlinear ဒေတာအသုံးပြုမှုများအတွက် ကွေးလာပုံဖြင့် အလိုက်ဖက်မှု ပိုတိုးစေသည်။ ကျွန်ုပ်တို့အတွက် `DayOfYear` ကို ကျော်သွားပြီး squared variable ကို input data ထဲသို့ ထည့်သွင်းပါက၊ နှစ်တွင်း တည်ရှိသည့် ဥပမာ parabolic curve တစ်ခုကို ချိတ်ဆွဲနိုင်သည်။ -Scikit-learn တွင် [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ကိုများသည် data processing အဆင့်ခွဲခြားမှုများကို တွဲဖက် အသုံးပြုနိုင်ရန်အတွက် ပါဝင်သည်။ **pipeline** သည် **estimators** များ၏ လွှဲစရာဖြစ်သည်။ ကျွန်ုပ်တို့အနေဖြင့် ပထမဆုံး polynomial features များကို မော်ဒယ်ထဲသို့ ထည့်သွင်းပြီး regression သင်ကြားမှုလုပ်မည့် pipeline တစ်ခုဖန်တီးမည်။ +Scikit-learn တွင် [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) များပါဝင်ပြီး data processing ၏အဆင့်ဆင့်ကို ပေါင်းစပ်နိုင်သည်။ **pipeline** သည် **estimators** သက်ဆိုင်မှုချိတ်ဆက်မှုတစ်ခု ဖြစ်သည်။ ကျွန်ုပ်တို့အတွက် Pipeline ကိုတည်ဆောက်ပြီး ပထမဦးဆုံး polynomial features များကို မော်ဒယ်ထဲ ထည့်သွင်းပြီး နောက်ဆုံး regression ကိုသင်ကြားမည်- ```python from sklearn.preprocessing import PolynomialFeatures @@ -258,60 +259,82 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` ကိုသုံးခြင်းဖြင့် input data ထဲမှ ဒုတိယကုန်လီပေါ်မီယနယ်များအားလုံး ပါဝင်သည်။ ကျွန်ုပ်တို့အတွက် သည်မှာ `DayOfYear`2 တစ်ခုသာဖြစ်မည်၊ ဒါပေမယ့် X နှင့် Y တို့ရှိပါက X2, XY နှင့် Y2 ကိုလည်း ထည့်သွင်းသည်။ ပိုမိုမြင့်မားသောကုန်လီပေါ်မီယနယ်များကိုလည်း အသုံးပြုနိုင်သည်။ +`PolynomialFeatures(2)` က input data မှ အပေါ်တန်းဒဂရီ များကို ထည့်သွင်းရန် အဓိပ္ပါယ် ရှိသည်။ ကျွန်ုပ်တို့တွင်၎င်းသည် `DayOfYear`2 ကိုသာ ပါဝင်သော်လည်း input variables နှစ်ခု X နှင့် Y ရှိပါက X2, XY နှင့် Y2 ဖြစ်သည်။ နိမ့်နေ့တန်းဒဂရီ ပိုများလည်း အသုံးပြုနိုင်သည်။ + +Pipeline များကို `LinearRegression` အတိုင်း အသုံးပြုနိုင်သည်၊ တူညီပြီး pipeline ကို `fit` ပြီး `predict` ဖြင့် ခန့်မှန်းချက် ရယူနိုင်သည်။ + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Smooth approximation curve ကို ပုံဆွဲရန် `np.linspace` ကို အသုံးပြုကာ input တန်ဖိုး များကို တည်ငြိမ်စေရန်၊ စမ်းသပ် ဒေတာမဟုတ်ဘဲ တိုက်ရိုက် ပုံဆွဲခြင်းက zigzag ဟူသောရိုးလိုင်း ထုတ်ပေးနိုင်သည်။ + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) -Pipeline များကို မူရင်း `LinearRegression` object များနှင့်တူညီစွာ အသုံးပြုနိုင်၍၊ pipeline ကို `fit` ပြီး `predict` ဖြင့် ခန့်မှန်းချက်များ ရနိုင်သည်။ ဤနေရာတွင် test data နှင့် approximation curve ကို ဖော်ပြထားသည်- +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +graph သည် စမ်းသပ်ဒေတာနှင့် approximation curve ကို ဖော်ပြထားသည်- Polynomial regression -Polynomial Regression ဖြင့် MSE သာနည်းနည်းချိုသာ၍ determination မြင့်တက်သည်၊ သို့သော် ထူးခြားမှုမရှိသေးပါ။ အခြား features များကိုလည်း ပေါင်းစပ်စဉ်းစားရမည်။ +Polynomial Regression သုံးပြီး RMSE နည်းနည်း သာ ပိုနည်းပြီး determination ပိုမြင့်လာ၍ အနည်းငယ်သာပြောင်းလဲသည်။ အခြား features များကိုလည်း ထည့်သွင်းစဉ်းစားရမည်။ -> မျက်နှာတစ်ခုအနေဖြင့် အနည်းဆုံး pumpkin စျေးနှုန်းများသည် Halloween အားအနီးတွင် တွေ့ရှိနေရသည်။ ၎င်းအကြောင်း ဘယ်လိုရှင်းလင်းမည်နည်း? +> minimal pumpkin စျေးနှုန်း သည် Halloween အနီးတွင် တွေ့ရှိရသည်။ ၎င်းကို မည်သို့ရှင်းလင်းနိုင်သနည်း? -🎃 ဂုဏ်ယူပါတယ်၊ သင်သည် pumpkin မှာ pie အမျိုးအစား စျေးနှုန်းခန့်မှန်းနိုင်သည့် မော်ဒယ်တစ်ခု ဖန်တီးနိုင်လိုက်ပြီ။ Pumpkin အမျိုးအစားအားလုံးအတွက် ထပ်မံပြုလုပ်ပါက ပင်ပန်းနွမ်းနယ်လိမ့်မည်။ ယခု Pumpkin အမျိုးအစားအား မော်ဒယ်တွင် ထည့်သွင်းစဥ်းစားမည့် နည်းလမ်းကို လေ့လာကြမည်။ +🎃 သင်သည် စျေးနှုန်း ခန့်မှန်းနိုင်သော pie pumpkin မော်ဒယ် တစ်ခု ဖန်တီးထားသဖြင့် ဂုဏ်ပြုသည်။ အခြား pumpkin အမျိုးအစားများအတွက်လည်း ဒီလုပ်နည်းကို ထပ်မံ သုံးနိုင်သည်၊ သို့သော်၎င်းသည် မကြာခဏအလုပ်များသည်။ Pumpkin အမျိုးအစားကို မော်ဒယ်တွင် စဉ်စားဖို့ လေ့လာကြမယ်။ ## Categorical Features -ကောင်းမွန်သောကမ္ဘာကြီးထဲ၌ pumpkin အမျိုးအစားအလိုက် စျေးနှုန်းများကို တစ်ခုတည်းသောမော်ဒယ်ဖြင့် ခန့်မှန်းနိုင်ရန် ဆန္ဒရှိကြသည်။ သို့ပေမယ့် `Variety` ကော်လမ်သည် `Month` ကဲ့သို့ ကော်လမ်များနှင့် မတူဘဲ နံပါတ်မဟုတ်သော တန်ဖိုးများပါရှိသည်။ ဒီလိုကော်လမ်များကို **categorical** ဟုခေါ်သည်။ +Ideal အာကာသတွင် မတူညီသော pumpkin အမျိုးအစားများအတွက် တူညီသော မော်ဒယ် အသုံးပြု၍ စျေးနှုန်းများ ခန့်မှန်းနိုင်စေရန် မျှော်လင့်သည်။ သို့သော် `Variety` ကော်လံသည် `Month` ကဲ့သို့ မျိုးဖြစ်၍၊ ချည်းများကို number မဟုတ်သော တန်ဖိုးများပါရှိသည်။ ယင်းကော်လံများအား **categorical** ဟု ခေါ်သည်။ [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 အပေါ်ရှိ ဇာတ်ပုံကို နှိပ်၍ categorical features အသုံးပြုခြင်း၏ အကျဉ်းချုပ် ဗီဒီယိုကို ကြည့်ရှုနိုင်ပါသည်။ +> 🎥 ပုံနှိပ်ပြီး categorical features အသုံးပြုခြင်းအတွင်း ရှုထောင့်တို video ကြည့်ပါ။ -Variety အလိုက် စျေးနှုန်းပျမ်းမျှသည် ဤအတိုင်း ဖြစ်ပါသည်- +Variety အလိုက် ပျမ်းမျှစျေးနှုန်းကို ကြည့်ရှုပါ- Average price by variety -Variety ကို စဉ်းစားရန်အတွက် ပထမဦးစွာ နံပါတ်တန်ဖိုးသို့ သို့မဟုတ် **encode** ပြုလုပ်ရန် လိုအပ်သည်။ လုပ်နည်းများမှာ- +Variety ကို စဉ်းစားရန် ဦးစွာ ဂဏန်းပုံစံ သို့ပြောင်းရန်(encode) လိုအပ်သည်။ အဖြစ်ဆုံး မြင်သာသည့် နည်းလမ်းမှာ- -* ရိုးရိုး **နံပါတ်အမှတ်ပေးခြင်း** သည် variété များကို စာရင်းတစ်ခုဖန်တီးပြီး variety နာမည်ကို စာရင်းအတွင်းရှိ အညွှန်းနံပါတ်ဖြင့် အစားထိုးသည်။ အကြောင်းက linear regression အတွက် အကောင်းဆုံးမဟုတ်ပါ၊ မကြာခဏ linear regression သည် index နံပါတ်၏ နံပါတ်တန်ဖိုးကို အသုံးပြုပြီး ရလဒ်ထဲ ထည့်သွင်းခြင်းဖြင့် coefficient တစ်ခုနှင့် မြှောက်သည်။ ကျွန်ုပ်တို့အနေဖြင့် index နံပါတ်နှင့် စျေးနှုန်းအကြား ဆက်စပ်မှုသည် ရိုးရှင်း linear မဟုတ်ပေ။ -* **One-hot encoding** သည် `Variety` ကော်လမ်ကို စားကြီးသုံးကော်လမ်အစားထိုးပေးပြီး၊ ကြိုက်သော variety အတန်းတစ်ခုစီအတွက် ကော်လမ်တစ်ခုစီဖန်တီးသည်။ အတန်းအလိုက် အဆိုပါ variety ရှိပါက ကော်လမ်တွင် `1`၊ မရှိပါက `0` ပါဝင်သည်။ ထို့ကြောင့် linear regression တွင် pumpkin variety တစ်ခုစီအတွက် coefficient ၄ ခုရှိပြီး၊ ၎င်းတွင် အစောပိုင်းစျေးနှုန်း(သို့မဟုတ် "အပိုစျေး") အတွက် တာဝန်ရှိသည်။ +* အလွယ်တကူ **numeric encoding** - ရှားစီးပြား Variety များစာရင်းဖြင့်တ Table တည်ဆောက်ပြီး Variety အမည်များကို ထိုစာရင်းအတွင်း အညွှန်း नंबर ဖြင့် ဖြည့်စွက်သည်။ ဒါပေမယ့် linear regression ကလည်း အမှန်တကယ် ဂဏန်းတန်ဖိုးကို အသုံးပြု၍ လုပ်ဆောင်သဖြင့် အညွှန်းနံပါတ်နှင့် စျေးနှုန်း အကြား ဆက်စပ်မှု ပုံမှန်မဖြစ်ပါ၊ နှိုင်းပြောင်မှု မရှိရင်လည်း။ +* **One-hot encoding** သည် `Variety` ကို 4 ကော်လံအသစ်တွင် ဖြန့်ဝေပြီး variety တစ်ခုချင်းစီအတွက် column တစ်ခုထားမည်။ အသီးသီးကော်လံများတွင် 해당က variety row ဖြစ်ခဲ့လျှင် `1` ရရှိပြီး မဖြစ်လျှင် `0` ဖြစ်သည်။ ၎င်းသည် liner regression တွင် variety အသီးသီးအတွက် coefficient ၄ ခုရှိမည် ဖြစ်ပြီး pumpkin အမျိုးအစားတစ်ခု၏ စတင်မှု စျေးနှုန်း "သို့မဟုတ်" "ထပ်မံစျေးနှုန်း" ကို ဖော်ပြသည်။ -Variety ကို one-hot encode ပြုလုပ်သည့်နည်းလမ်းကို အောက်ပါကုဒ်က ဖော်ပြထားသည်- +အောက်ပါကုဒ်တွင် variety ကို one-hot encode ပြုလုပ်ခြင်းပြသာနာရှိသည်- ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 - -One-hot encoded variety ကို input အဖြစ်သုံးပြီး linear regression ကို သင်ကြားရာတွင် `X` နှင့် `y` ဒေတာများကို မှန်မှန်ကန်ကန် သတ်မှတ်ရုံဖြစ်သည်- + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +one-hot encoded variety ကို input အသုံးပြုပြီး linear regression သပ်မတ်ရန် `X` နှင့် `y` data ကိုမှန်ကန်စွာ initialize လုပ်ရုံပဲ လိုသည်- ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -Linear Regression သင်ကြားခြင်းတွက် အခြားကုဒ်ပိုင်းများထက်မတူဘဲမဟုတ်ပါ၊ မူလသင်ကြားထားသည့်ပုံစံနှင့် တူညီသည်။ စမ်းသပ်ပါက mean squared error ပြောင်းလဲမှုမပြင်းထန်ပေ၊ determination coefficient သည် ၀.၇၇ ခန့် ရရှိမည်။ ပိုမိုတိကျသော ခန့်မှန်းချက်များ ရယူရန် categorical features များနှင့် numeric features များ (ဥပမာ- `Month`, `DayOfYear`) ကိုပါ သွင်းစဉ်းစားနိုင်သည်။ feature များကို တစ်စုစည်း array တစ်ခုတွင် ပေါင်းစပ်ဖို့ `join` ကို အသုံးပြုနိုင်သည်- + +အခြားကုဒ်များသည် အထက်တွင် Linear Regression သင်ကြားသည့်နည်းလမ်း တူညီသည်။ စမ်းသပ်၍ mean squared error တန်ဖိုးတူညီသော်လည်း coefficient of determination သည် (၇၇%) ပိုမြင့်စေသည်။ တိကျမှု ပိုစွမ်းဆောင်ရန် categorical features နောက်ထပ်များ၊ numeric features (ဥပမာ `Month` သို့မဟုတ် `DayOfYear`) များပါ သတ်မှတ်နိုင်သည်။ feature တစ်ခုကို စုစည်းရန် `join` ကို အသုံးပြုနိုင်သည်- ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,69 +343,69 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` + +ဒီမှာ `City` နှင့် `Package` Type ကိုပါ ထည့်သွင်းပြီး RMSE = 2.84 (10.5%), determination = 0.94 ရသည်။ -ဤတွင် `City` နှင့် `Package` အမျိုးအစားများလည်း သွင်းစဉ်းစားပြီး၊ MSE 2.84 (၁၀%) နှင့် determination 0.94 ထိရရှိပါသည်။ - -## စုပေါင်းပြီး မော်ဒယ်ကို ဖန်တီးခြင်း +## ပြန်လည်ပေါင်းစပ်ခြင်း -အကောင်းဆုံးမော်ဒယ်ဖန်တီးရန် အပေါ်ပါ ဥပမာမှ Categorical (one-hot encoded) နှင့် numeric ဒေတာများကို Polynomial Regression နှင့် တွဲဖက်၍ အသုံးပြုနိုင်သည်။ အဆင်ပြေစေရန် မူလကုဒ် here ပါ- +အကောင်းဆုံး မော်ဒယ် ရရှိစေရန် အထက်ပါ စုစုပေါင်း( one-hot encoded categorical + numeric) ဒေတာများကို Polynomial Regression နှင့် ပေါင်းစပ်နိုင်သည်။ အောက်မှာ အကုန်လုံးစုံလင်သော ကုဒ်ဖြစ်သည်- ```python -# လေ့ကျင့်ရေးဒေတာကို စီစဉ်ပါ +# လေ့ကျင့်မှုဒေတာကို သတ်မှတ်ပါ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# လေ့ကျင့်မှုနှင့် စမ်းသပ်မှု ခွဲခြားပါ +# လေ့ကျင့်မှု-စမ်းသပ်မှု ခွဲခြားပါ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# ပိုင်းလိုင်းကို အသင့်ပြင်ပြီး လေ့ကျင့်ပါ +# pipeline ကို စီစဉ်ပြီး လေ့ကျင့်ပါ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# စမ်းသပ်ဒေတာအတွက် ဖော်ထုတ်ဆောင်ရွက်မှု +# စမ်းသပ်ဒေတာအတွက် မျှော်မှန်းချက်များကို ထုတ်ယူပါ pred = pipeline.predict(X_test) -# MSE နှင့် သတ်မှတ်ချက်ကို ချည်းကပ်ပါ -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE နှင့် သတ်မှတ်ချက်ကိုတွက်ချက်ပါ +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` + +ဤက ဒါကာမှာ determination coefficient ၉၇% ခန့်ရပြီး RMSE=2.23 (~8% ခန့်ခန့် ခန့်မှန်းမှားယွင်းမှု) ဖြစ်ပါမည်။ -ဒါမှတစ်ပါး determination coefficient ကို ၉၇% ခန့်၊ MSE=2.23 (~၈%ခန့် မျှော်မှန်းချက် အချက်အလက်အမှား) ရရှိမည်။ - -| Model | MSE | Determination | -|-------|-----|---------------| -| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | -| `Variety` Linear | 5.24 (19.7%) | 0.77 | -| All features Linear | 2.84 (10.5%) | 0.94 | -| All features Polynomial | 2.23 (8.25%) | 0.97 | +| Model | RMSE | Determination | +|-------|-----|---------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| All features Linear | 2.84 (10.5%) | 0.94 | +| All features Polynomial | 2.23 (8.25%) | 0.97 | -🏆 အလုပ်ကောင်းပါတယ်! သင်သည် သင်ခန်းစာတစ်ခုအတွင်း Regression မော်ဒယ် (၄) များ ဖန်တီးပြီး မော်ဒယ်အရည်အသွေးကို ၉၇% ဆုတ်ခဲ့ပြီ။ Regression ၏ နောက်ဆုံးပိုင်းတွင် Logistic Regression အကြောင်း လေ့လာ၍ ကဏ္ဍ သတ်မှတ်ခြင်းကို သင်ယူမည်ဖြစ်သည်။ +🏆 ကောင်းပါတယ်! သင်သည် Regression မော်ဒယ် ၄ မျိုးကို တစ်သင်ခန်းစာအတွင်း ဖန်တီးပြီး မော်ဒယ် အရည်အသွေးကို ၉၇% ထိ တိုးတက်စေခဲ့သည်။ Logistic Regression ကို သင်ကြားရန် နောက်ထပ် ကျန်ရှိသည့် Regression အပိုင်းတွင် သင်ယူမည်။ --- -## 🚀စိန်ခေါ်မှု +## 🚀Challenge -ဤ notebook တွင် မတူညီသော variable များစမ်းသပ်၍ correlation နှင့် မော်ဒယ်တိကျမှု ဆက်စပ်မှုကို တွေ့ပါ။ +ဒီ Notebook တွင် မတူညီသည့် variables များစမ်းသပ်လေ့လာပြီး correlation နှင့် model တိကျမှုကြား ဆက်စပ်မှုဘယ်လောက်ရှိကြောင်း ခွဲခြားပါ။ -## [သင်ခန်းစာ အပေါ်တွင် စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/) +## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## ပြန်လည်သုံးသပ်ရန် နှင့် ကိုယ်တိုင်လေ့လာရန် +## Review & Self Study -ဤသင်ခန်းစာတွင် Linear Regression အကြောင်း သင်ယူခဲ့သည်။ အခြား အရေးကြီးသော Regression အမျိုးအစားများလည်းရှိပါသည်။ Stepwise, Ridge, Lasso, နှင့် Elasticnet နည်းများကို အသေးစိတ်လေ့လာပါ။ ပိုမိုသိရှိရန် [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ကို အကြံပြုသည်။ +ဒီသင်ခန်းစာတွင် Linear Regression အကြောင်း သင်ယူခဲ့သည်။ အခြား အရေးပါ Regression မျိုးလည်း ရှိသည်။ Stepwise, Ridge, Lasso နှင့် Elasticnet နည်းပညာများကို လေ့လာပါ။ ပိုမိုလေ့လာလိုသူများအတွက် [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) သင်တန်းကောင်းတစ်ခု ဖြစ်သည်။ -## အလုပ်လက်တွေ့ +## Assignment -[Model တစ်ခု တည်ဆောက်ရန်](assignment.md) +[Build a Model](assignment.md) --- -**ကာကွယ်ချက်** -ဤစာရွက်စာတမ်းကို AI ဘာသာပြန် စနစ်ဖြစ်သော [Co-op Translator](https://github.com/Azure/co-op-translator) မှ အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားသော်လည်း အလိုအလျှောက်ဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ခြင်းကို ကျေးဇူးပြုပြီး သိရှိထားရပါမည်။ စာရွက်စာတမ်းပိုင်ဆိုင်ခြင်းနှင့် အခိုင်အမာအချက်အလက်အဖြစ် မူလစာရွက်စာတမ်းကို သတ်မှတ်သည်။ အရေးကြီးသော အချက်အလက်များအတွက် အတတ်ပညာရှင် လူသား ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုရာအတွင်း ဖြစ်ပေါ်လာသော လွဲမှားခြင်းများ သို့မဟုတ် သဘောနားလည်မှုမှားယွင်းမှုများအတွက် ကျွန်ုပ်တို့မှာ တာဝန်မရှိပါ။ +**ရှင်းလင်းချက်** +ဤစာရွက်စာတမ်းသည် AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားခြင်းဖြစ်ပါသည်။ တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းပါသော်လည်း အလိုအလျောက်ဘာသာပြန်ချက်များတွင် အမှားများ သို့မဟုတ် တိကျမှုနည်းပါးမှုများ ရှိနိုင်ကြောင်း သတိပြုပါရန်။ မူရင်းစာရွက်စာတမ်းကို အစစ်အမှန်အရင်းအမြစ်အဖြစ် အယူခံသင့်ပါသည်။ အရေးကြပ်သောသတင်းအချက်အလက်များအတွက် များသောအားဖြင့် လူ့ဘာသာပြန်သူများ၏ ပညာရှင်ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုမှုကြောင့် ဖြစ်ပေါ်လာနိုင်သော်လည်း နားမလည်မှုများ သို့မဟုတ် မှားယွင်းဖော်ပြချက်များအတွက် ကျွန်ုပ်တို့ တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/2-Regression/3-Linear/solution/notebook.ipynb b/translations/my/2-Regression/3-Linear/solution/notebook.ipynb index d1dba85e45..dddea2fb5a 100644 --- a/translations/my/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/my/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ဖရုံသီးဈေးနှုန်းအတွက် လိုင်းနီယာနှင့် ပေါလီနိုမီယာ ရေဂရက်ရှင်း - သင်ခန်းစာ ၃\n", + "## Linear and Polynomial Regression for Pumpkin Pricing - Lesson 3\n", "\n", - "လိုအပ်သော လိုက်ဘရရီများနှင့် ဒေတာစနစ်ကို load လုပ်ပါ။ ဒေတာကို အောက်ပါအချက်များပါဝင်သော dataframe အဖြစ် ပြောင်းပါ။\n", + "လိုအပ်သောစာကြည့်တိုက်များနှင့် ဒေတာကိုတင်ပါ။ ဒေတာကို အချက်အလက်တစ်စစ်အတွက် အပိုင်းအစပါဝင်သည့် dataframe သို့ပြောင်းပါ - \n", "\n", - "- bushel အလိုက်ဈေးနှုန်းထားသော ဖရုံသီးများကိုသာ ရယူပါ\n", - "- ရက်စွဲကို လပြောင်းပါ\n", - "- ဈေးနှုန်းကို အမြင့်နှင့် အနိမ့်ဈေးနှုန်းများ၏ ပျမ်းမျှတန်ဖိုးအဖြစ်တွက်ချက်ပါ\n", - "- bushel အရေအတွက်အလိုက် ဈေးနှုန်းကို ပြောင်းလဲပါ\n" + "- အထူးသဖြင့် တန်ဖိုးအနေနဲ့ bushel ဖြင့် တန်ဖိုးထားသော pumpkins များကိုသာ ရယူပါ\n", + "- ရက်စွဲကို လအဖြစ်ပြောင်းပါ\n", + "- တန်ဖိုးကို အပေါ်ဆုံးနှင့် အောက်ဆုံး တန်ဖိုး၏ သော့ချက်ဖြင့်တွက်ချက်ပါ\n", + "- တန်ဖိုးကို bushel ပမာဏအတွက်တန်ဖိုးပြောင်းရန် ပြောင်းပါ\n" ] }, { @@ -376,7 +376,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "scatterplot သည် အောက်တိုဘာမှ ဒီဇင်ဘာအထိသာ လစဉ်ဒေတာရှိသည်ကို သတိပေးသည်။ ဖော်မြူလာအတိုင်း နိုင်ငံသားများရဲ့ သရုပ်အရာများကို ရေးဆွဲနိုင်ရန် ဒေတာပိုများရန် လိုအပ်နိုင်သည်။\n" + ] }, { "cell_type": "code", @@ -445,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ကြည့်ကြမယ် အကြားဆက်စပ်မှုရှိမရှိ:\n" + ] }, { "cell_type": "code", @@ -470,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "အချင်းချင်းဆက်စပ်မှုက တော်တော်ငယ်သလိုပဲ၊ ဒါပေမယ့် အခြားအရေးကြီးတဲ့ဆက်စပ်မှုတစ်ခုရှိနေတယ်လို့ပုံရတယ် - အထက်ပါပုံတွင် စျေးနှုန်းအချက်များမှာ သီးခြားအုပ်စုအချို့ရှိနေသလိုပဲ။ အမျိုးမျိုးသောဖရုံသီးအမျိုးအစားများကို ပြသမယ့်ပုံတစ်ခု ပြုလုပ်ကြည့်ရအောင်:\n" + "ဆက်စပ်မှုကတကယ်တော့သေးသေးငယ်ငယ်ပဲပုံရတယ်၊ ဒါပေမယ့်တခြားအရေးကြီးတဲ့ဆက်နွယ်မှုတစ်ခုရှိနေတယ် - အထက်မှာပြထားတဲ့ ဈေးနှုန်းအချက်များမှာ ကွဲပြားတဲ့အုပ်စုအနည်းငယ်ရှိနေတယ်လိုမျိုး ဖော်ပြနေတဲ့အတွက်ပါ။ ယခု မိန့်ခြင်းမှာ ခြစ်ချာအမျိုးအစား အသီးသီးကို ပြချင်တဲ့ ပုံတစ်ပုံ ဖန်တီးကြရအောင် - ။\n" ] }, { @@ -533,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "အခုအချိန်အတွက်တော့ အသေးစိတ်အနေနဲ့ **ပိုင်အမျိုးအစား** တစ်မျိုးပဲ အာရုံစိုက်ကြပါစို့။\n" + ] }, { "cell_type": "code", @@ -580,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### လိုင်းနာ ရေဂရက်ရှင်း\n", + "### Linear Regression\n", "\n", - "ကျွန်တော်တို့ Scikit Learn ကို အသုံးပြုပြီး လိုင်းနာ ရေဂရက်ရှင်း မော်ဒယ်ကို လေ့ကျင့်သွားမယ်။\n" + "ကျွန်ုပ်တို့သည် linear regression မော်ဒယ်ကိုလေ့ကျင့်ရန် Scikit Learn ကိုအသုံးပြုမည်။\n" ] }, { @@ -659,7 +665,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "လိုင်း၏ ထောင့်ချိုင့်ကို ရိုးရာအကြောင်းအရာသင့်ရေးဆွဲမှု ကော်ဌာနမှ ဆုံးဖြတ်နိုင်သည်။\n" + ] }, { "cell_type": "code", @@ -684,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ကျွန်ုပ်တို့သည် သင်ကြားပြီးသော မော်ဒယ်ကို စျေးနှုန်းခန့်မှန်းရန် အသုံးပြုနိုင်ပါသည်။\n" + ] }, { "cell_type": "code", @@ -712,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ပိုလီနိုမီယာ ရီဂရက်ရှင်း\n", + "### Polynomial Regression\n", "\n", - "တစ်ခါတစ်ရံမှာ အင်္ဂါရပ်တွေ (features) နဲ့ ရလဒ်တွေ (results) အကြား ဆက်နွယ်မှုဟာ သဘာဝအတိုင်း မတည့်တည့် ဖြစ်တတ်ပါတယ်။ ဥပမာ၊ ဖရုံစျေးနှုန်းတွေဟာ ဆောင်းရာသီ (လ=1,2) မှာ မြင့်တက်ပြီး နွေရာသီ (လ=5-7) မှာ ကျဆင်းပြီး နောက်ထပ် မြင့်တက်လာနိုင်ပါတယ်။ Linear regression က ဒီဆက်နွယ်မှုကို တိကျစွာ ရှာဖွေမရနိုင်ပါ။\n", + "တခါတရံ အင်္ဂါရပ်များနှင့်ရလဒ်များအကြား ဆက်စပ်မှုသည် သဘာဝတရားနည်းဖြင့် သတ်မှတ်ချက်မရှိသော လိုင်းမဟုတ်သောတန်ဖိုးရှိသည်။ ဥပမာအားဖြင့်၊ ဖရဲဖူးစျေးသည် ဆောင်းရာသီ(လ=1,2)တွင် မြင့်မားတတ်ပြီး၊ နွေရာသီ(လ=5-7)အတွင်းကျဆင်းပြီး၊ နောက်ပြန်တက်တတ်သည်။ လိုင်းရိုးညီသော ရောဂါခွဲခြားခြင်းသည် ဤဆက်သွယ်မှုကို တိကျစွာ မတွေ့နိုင်ပါ။\n", "\n", - "ဒီလိုအခြေအနေမှာ အပိုအင်္ဂါရပ်တွေ ထည့်သွင်းစဉ်းစားနိုင်ပါတယ်။ ရိုးရှင်းတဲ့နည်းလမ်းကတော့ input အင်္ဂါရပ်တွေကို ပိုလီနိုမီယာ (polynomials) အဖြစ် ပြောင်းလဲပြီး **ပိုလီနိုမီယာ ရီဂရက်ရှင်း** ကို ရလဒ်အဖြစ် ရရှိစေမှာ ဖြစ်ပါတယ်။ Scikit Learn မှာတော့ pipelines ကို အသုံးပြုပြီး ပိုလီနိုမီယာ အင်္ဂါရပ်တွေကို အလိုအလျောက် ကြိုတင်တွက်ချက်နိုင်ပါတယ်။\n" + "ဤအခါတွင်၊ အပို အင်္ဂါရပ်များ ထည့်သွင်းရန် စဉ်းစားနိုင်သည်။ ရိုးရာနည်းလမ်းမှာ ထွက်လာသော အင်္ဂါရပ်များမှ ပိုလီနမီယာများကို အသုံးပြုခြင်းဖြစ်ပြီး၊ ၎င်းသည် **polynomial regression** ဖြစ်စေမည်။ Scikit Learn တွင် ရိုးရိုးလိုင်းမဟုတ်သော အင်္ဂါရပ်များကို အလိုအလျောက် ကြိုတင်တွက်ချက်ရန် pipeline များကို အသုံးပြုနိုင်သည်။\n" ] }, { @@ -771,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### အမျိုးအစားများကို Encode လုပ်ခြင်း\n", + "### ချဲ့ထွင်ခြင်း မျိုးစုံ\n", "\n", - "အကောင်းဆုံးကမ္ဘာမှာတော့ တူညီတဲ့မော်ဒယ်တစ်ခုကို အသုံးပြုပြီး ဖရုံမျိုးစုံအတွက် စျေးနှုန်းတွေကို ခန့်မှန်းနိုင်ချင်ပါတယ်။ အမျိုးအစားကို ထည့်သွင်းစဉ်းစားဖို့အတွက် အရင်ဆုံး အမျိုးအစားကို ကိန်းဂဏန်းပုံစံ (numeric form) သို့မဟုတ် **encode** လုပ်ဖို့လိုပါတယ်။ ဒါကို လုပ်နိုင်တဲ့နည်းလမ်းအမျိုးမျိုးရှိပါတယ်-\n", + "စံနမူနာကမ္ဘာတွင်၊ ကျွန်ုပ်တို့သည် မော်ဒယ်တစ်ခုတည်းဖြင့် ဖရဲသီးမျိုးစုံအတွက် စျေးနှုန်းများကို ခန့်မှန်းနိုင်ရန်လိုအပ်သည်။ မျိုးစုံကို ထည့်သွင်းစဉ်းစားရန် အရင်ဆုံး၊ ဒါကို ဂဏန်းပုံသို့ ပြောင်းရန်လိုတယ်၊ ဒါမှမဟုတ် **encode** လုပ်ရန်လိုသည်။ သင်ပြုလုပ်နိုင်သော နည်းလမ်း အချို့ရှိသည်မှာ-\n", "\n", - "* ရိုးရှင်းတဲ့ ကိန်းဂဏန်း encode လုပ်နည်းက အမျိုးအစားအမျိုးမျိုးကို စာရင်းတစ်ခုထဲမှာ တည်ဆောက်ပြီး၊ အဲ့ဒီစာရင်းထဲက အမျိုးအစားနာမည်ကို အညွှန်း (index) နံပါတ်နဲ့ အစားထိုးပေးမှာဖြစ်ပါတယ်။ ဒါပေမယ့် ဒီနည်းလမ်းက linear regression အတွက် အကောင်းဆုံးမဟုတ်ပါဘူး၊ အကြောင်းကတော့ linear regression က အညွှန်းနံပါတ်ရဲ့ ကိန်းဂဏန်းတန်ဖိုးကို သက်ဆိုင်အောင် သုံးတတ်ပြီး၊ အဲ့ဒီကိန်းဂဏန်းတန်ဖိုးက စျေးနှုန်းနဲ့ တိုက်ရိုက်ဆက်နွယ်မှု မရှိနိုင်တဲ့ အခွင့်အလမ်းများ ရှိနိုင်ပါတယ်။\n", - "* One-hot encoding ကတော့ `Variety` ကော်လံကို အမျိုးအစားတစ်ခုစီအတွက် ကော်လံ ၄ ခုအဖြစ် အစားထိုးပေးမှာဖြစ်ပြီး၊ အဲ့ဒီကော်လံတွေမှာ အတန်းတစ်ခုဟာ အချို့အမျိုးအစားနဲ့ ကိုက်ညီရင် 1 ဖြစ်ပြီး၊ မဟုတ်ရင် 0 ဖြစ်ပါမယ်။\n", + "* မျိုးစုံအမျိုးအစားများ၏ ဇယားတစ်ခု တည်ဆောက်ပြီး၊ အဲ့ဒီဇယားအတွင်း မြောက်နံပါတ်ဖြင့် မျိုးစုံအမည်ကို အစားထိုးပြောင်းလဲပေးသည့် ရိုးရှင်းဂဏန်း encode လုပ်ခြင်း။ ဤနည်းသည် လေးနက်ဂဏန်းပြန်လည်ဆက်စပ်မှု (linear regression) အတွက် အကောင်းဆုံး မဟုတ်ပါ၊ ဟုတ်သောကြောင့် တန်ဖိုးဂဏန်းသည် စျေးနှုန်းနှင့် ဂဏန်းဆိုင်ရာ သက်ဆိုင်မှု မရှိနိုင်ပါ။\n", + "* One-hot encoding ဖြစ်သော `Variety` ကော်လံကို များပြားသော ၄ မျိုးခြားထပ် များသောကော်လံ ၄ခုဖြင့် အစားထိုးပြီး၊ သတ္တိကြောင်းသည် ဤမျိုးစုံဖြစ်လျှင် ၁ ပါရှိခြင်းဖြင့်၊ မဟုတ်လျှင် ၀ ပါရှိခြင်း။\n", "\n", - "အောက်မှာပါတဲ့ ကုဒ်က အမျိုးအစားတစ်ခုကို one-hot encode လုပ်နိုင်တဲ့ နည်းလမ်းကို ပြသထားပါတယ်-\n" + "အောက်ပါ ကုဒ်ကို မျိုးစုံတစ်ခုကို one-hot encode ပြုလုပ်သည့် နည်းလမ်းကို ပြကြသည်-\n" ] }, { @@ -934,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### အမျိုးအစားအပေါ် Linear Regression\n", + "### Linear Regression on Variety \n", "\n", - "ယခုအခါတွင် အထက်ပါကုဒ်တူတူကို အသုံးပြုမည်ဖြစ်ပြီး၊ သို့သော် `DayOfYear` အစား၊ one-hot-encoded အမျိုးအစားကို input အဖြစ် အသုံးပြုမည်:\n" + "We will now use the same code as above, but instead of `DayOfYear` we will use our one-hot-encoded variety as input:\n" ] }, { @@ -984,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ကျွန်ုပ်တို့သည် အခြားအင်္ဂါရပ်များကိုလည်း အတူတူပုံစံဖြင့် အသုံးပြုကြည့်နိုင်ပြီး၊ `Month` သို့မဟုတ် `DayOfYear` ကဲ့သို့သော ကိန်းဂဏန်းအင်္ဂါရပ်များနှင့် ပေါင်းစပ်နိုင်ပါသည်။\n" + "ကျွန်ုပ်တို့သည် အခြားသော လက္ခဏာများကိုလည်း ထိုနည်းတူစမ်းသပ်နိုင်ပြီး၊ ဥပမာ `Month` သို့မဟုတ် `DayOfYear` ကဲ့သို့သော နံပါတ်ဆိုင်ရာ လက္ခဏာများနှင့် ပေါင်းစပ်အသုံးပြုနိုင်ပါသည်။\n" ] }, { @@ -1015,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ပေါလီနိုမီးယား ပြန်လည်သုံးသပ်မှု\n", + "### Polynomial Regression\n", "\n", - "ပေါလီနိုမီးယား ပြန်လည်သုံးသပ်မှုကို တစ်ခုတည်းသော hot-encoded အမျိုးအစားအချက်အလက်များနှင့်လည်း အသုံးပြုနိုင်ပါသည်။ ပေါလီနိုမီးယား ပြန်လည်သုံးသပ်မှုကို လေ့ကျင့်ရန် ကုဒ်သည် အထက်တွင် မြင်ခဲ့သည့်အတိုင်း အခြေခံအားဖြင့် တူညီနေပါမည်။\n" + "Polynomial regression သည် one-hot-encoded categorical features များနှင့်အတူလည်း အသုံးပြုနိုင်ပါသည်။ polynomial regression ကိုလေ့ကျင့်ရန်ကုဒ်သည် အထက်တွင်မြင်ခဲ့သည့်အတိုင်း ဆင်တူပင်ဖြစ်ပါသည်။\n" ] }, { @@ -1064,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**ဝက်ဘ်ဆိုက်မှတ်ချက်**: \nဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်ရန် လိုအပ်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူကောင်းမွန်သော ပရော်ဖက်ရှင်နယ်ဘာသာပြန်ဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပါယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။\n" + "---\n\n\n**အာမခံချက်** \nဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှုဖြစ်သော [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြုပြီး ဘာသာပြန်ထားပါသည်။ တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းမည်ဖြစ်ပေမယ့်၊ စက်ရုပ်အမှတ်အသားပြန်ဆိုမှုတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ပါသည်။ မူလစာတမ်း၏ မိခင်ဘာသာဖြင့်ရေးသားထားသည့် မူရင်းစာတမ်းကို တရားဝင်အတည်ပြု အရင်းအမြစ်အဖြစ်ယူဆသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် ကျွမ်းကျင်သော လူသားဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှု အသုံးပြုမှုမှ ဖြစ်ပေါ်လာသည့် မသိမှတ်မိမှုများ သို့မဟုတ် မှားယွင်းသဘောဆောင်မှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မရှိပါ။\n\n" ] } ], @@ -1094,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T11:30:43+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "my" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/uk/.co-op-translator.json b/translations/uk/.co-op-translator.json index c5dd4b8422..83f45ccefa 100644 --- a/translations/uk/.co-op-translator.json +++ b/translations/uk/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "uk" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:44:40+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:18:26+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "uk" }, @@ -90,8 +90,8 @@ "language_code": "uk" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:21:55+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:18:00+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "uk" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "uk" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:14:35+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "uk" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:36:28+00:00", diff --git a/translations/uk/1-Introduction/4-techniques-of-ML/README.md b/translations/uk/1-Introduction/4-techniques-of-ML/README.md index 7e8e2ba5f2..b880d9c913 100644 --- a/translations/uk/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/uk/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Техніки машинного навчання -Процес створення, використання та підтримки моделей машинного навчання і даних, які вони використовують, значно відрізняється від багатьох інших робочих процесів розробки. У цьому уроці ми розкриємо цей процес і окреслимо основні техніки, які вам потрібно знати. Ви: +Процес створення, використання та підтримки моделей машинного навчання та даних, які вони використовують, дуже відрізняється від багатьох інших робочих процесів розробки. У цьому уроці ми розкриємо цей процес і окреслимо основні техніки, які вам потрібно знати. Ви: - Зрозумієте процеси, що лежать в основі машинного навчання на високому рівні. -- Дослідите базові концепції, такі як "моделі", "прогнози" та "навчальні дані". +- Дослідите базові поняття, такі як «моделі», «прогнози» та «навчальні дані». -## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/) +## [Опитування перед лекцією](https://ff-quizzes.netlify.app/en/ml/) -[![ML для початківців - Техніки машинного навчання](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML для початківців - Техніки машинного навчання") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео, яке пояснює цей урок. +> 🎥 Натисніть на зображення вище для перегляду короткого відео, яке розбирає цей урок. ## Вступ -На високому рівні мистецтво створення процесів машинного навчання (ML) складається з кількох етапів: +На високому рівні миттєва створення процесів машинного навчання (ML) складається з кількох кроків: -1. **Визначте питання**. Більшість процесів ML починаються з постановки питання, яке не можна вирішити за допомогою простих умовних програм або систем на основі правил. Ці питання часто стосуються прогнозів на основі зібраних даних. -2. **Зберіть і підготуйте дані**. Щоб відповісти на ваше питання, вам потрібні дані. Якість і, іноді, кількість ваших даних визначатиме, наскільки добре ви зможете відповісти на початкове питання. Візуалізація даних є важливим аспектом цього етапу. Цей етап також включає розділення даних на навчальну та тестову групи для створення моделі. -3. **Виберіть метод навчання**. Залежно від вашого питання і природи ваших даних, вам потрібно вибрати, як ви хочете навчати модель, щоб вона найкраще відображала ваші дані і робила точні прогнози. Ця частина процесу ML вимагає спеціальних знань і часто значної кількості експериментів. -4. **Навчіть модель**. Використовуючи ваші навчальні дані, ви будете використовувати різні алгоритми для навчання моделі розпізнавати шаблони в даних. Модель може використовувати внутрішні ваги, які можна налаштувати, щоб надавати перевагу певним частинам даних над іншими для створення кращої моделі. -5. **Оцініть модель**. Ви використовуєте дані, які модель раніше не бачила (ваші тестові дані), щоб перевірити, як вона працює. -6. **Налаштування параметрів**. Виходячи з продуктивності вашої моделі, ви можете повторити процес, використовуючи різні параметри або змінні, які контролюють поведінку алгоритмів, що використовуються для навчання моделі. -7. **Прогнозуйте**. Використовуйте нові вхідні дані, щоб перевірити точність вашої моделі. +1. **Визначте питання**. Більшість процесів ML починаються з запитання, на яке не можна відповісти простою умовною програмою або системою правил. Ці питання часто пов’язані з прогнозами на базі зібраних даних. +2. **Збір та підготовка даних**. Щоб відповісти на ваше питання, потрібні дані. Якість і, іноді, кількість ваших даних визначать, наскільки добре ви зможете відповісти на початкове питання. Візуалізація даних є важливим аспектом цього етапу. Цей етап також включає розподіл даних на навчальну та тестову групи для побудови моделі. +3. **Вибір методу навчання**. Залежно від вашого питання та характеру даних, потрібно вибрати, як ви хочете навчати модель, щоб найкраще відобразити ваші дані та робити точні прогнози. Це частина процесу ML, яка вимагає спеціалізованих знань і, часто, значних експериментів. +4. **Навчання моделі**. Використовуючи навчальні дані, ви застосуєте різні алгоритми для навчання моделі розпізнавати закономірності в даних. Модель може використовувати внутрішні ваги, які можна налаштовувати, щоб акцентувати певні частини даних для покращення моделі. +5. **Оцінка моделі**. Ви використовуєте ще не бачені раніше дані (тестові), щоб перевірити, як працює модель. +6. **Налаштування параметрів**. На основі продуктивності моделі ви можете повторити процес із різними параметрами або змінними, які керують поведінкою алгоритмів навчання. +7. **Прогнозування**. Використовуйте нові вхідні дані, щоб перевірити точність вашої моделі. ## Яке питання ставити -Комп'ютери особливо добре вміють знаходити приховані шаблони в даних. Ця здатність дуже корисна для дослідників, які мають питання про певну область, на які не можна легко відповісти, створивши систему на основі умовних правил. Наприклад, у задачі актуарного аналізу дата-сайєнтист може створити вручну правила щодо смертності курців і некурців. +Комп’ютери особливо добре виявляють приховані закономірності в даних. Ця корисність дуже цінна для дослідників, які мають питання про певну галузь, на які не можна легко відповісти, створивши систему умовних правил. Для прикладу, в актуарних завданнях, дата-сайєнтист міг би виготовити ручні правила щодо смертності курців на відміну від некурців. -Однак, коли до рівняння додається багато інших змінних, модель ML може виявитися більш ефективною для прогнозування майбутніх показників смертності на основі історії здоров'я. Більш оптимістичний приклад може включати прогнозування погоди на квітень у певному місці на основі даних, які включають широту, довготу, зміни клімату, близькість до океану, шаблони струменевих потоків тощо. +Однак, коли до рівняння додається багато інших змінних, модель ML може бути ефективнішою для прогнозування майбутніх показників смертності на основі минулої медичної історії. Веселіший приклад — прогнозування погоди на квітень для певного місця з урахуванням широти, довготи, зміни клімату, близькості до океану, закономірностей струменевого течії тощо. -✅ Ця [презентація](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) про моделі погоди пропонує історичний погляд на використання ML в аналізі погоди. +✅ Цей [презентаційний матеріал](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) про погодні моделі пропонує історичний погляд на використання ML у погодному аналізі. -## Завдання перед створенням моделі +## Завдання перед побудовою -Перед тим як почати створювати модель, є кілька завдань, які потрібно виконати. Щоб перевірити ваше питання і сформувати гіпотезу на основі прогнозів моделі, вам потрібно визначити і налаштувати кілька елементів. +Перед тим, як почати будувати модель, потрібно виконати кілька завдань. Щоб перевірити своє питання та сформувати гіпотезу на основі прогнозів моделі, потрібно визначити та налаштувати кілька елементів. ### Дані -Щоб відповісти на ваше питання з будь-якою впевненістю, вам потрібна достатня кількість даних відповідного типу. На цьому етапі потрібно зробити дві речі: +Щоб із певною впевненістю відповісти на ваше питання, потрібна достатня кількість відповідних даних. На цьому етапі потрібно зробити дві речі: -- **Зберіть дані**. З огляду на попередній урок про справедливість в аналізі даних, збирайте дані з обережністю. Звертайте увагу на джерела цих даних, будь-які властиві їм упередження і документуйте їх походження. -- **Підготуйте дані**. У процесі підготовки даних є кілька кроків. Можливо, вам доведеться об'єднати дані і нормалізувати їх, якщо вони надходять з різних джерел. Ви можете покращити якість і кількість даних різними методами, такими як перетворення рядків у числа (як ми робимо в [Кластеризації](../../5-Clustering/1-Visualize/README.md)). Ви також можете генерувати нові дані на основі оригінальних (як ми робимо в [Класифікації](../../4-Classification/1-Introduction/README.md)). Ви можете очищати і редагувати дані (як ми будемо робити перед уроком [Веб-додаток](../../3-Web-App/README.md)). Нарешті, можливо, вам доведеться рандомізувати і перемішати їх залежно від ваших технік навчання. +- **Зібрати дані**. Пам’ятайте про попередній урок щодо справедливості в аналізі даних — збирайте дані ретельно. Усвідомлюйте джерела цих даних, існуючі упередження та документуйте походження. +- **Підготувати дані**. Процес підготовки даних складається з кількох кроків. Можливо, потрібно об’єднати та нормалізувати дані, якщо вони походять з різних джерел. Ви можете покращити якість і кількість даних різними методами, наприклад, перетворювати рядки у числа (як у [Кластеризації](../../5-Clustering/1-Visualize/README.md)). Можна також генерувати нові дані на основі оригіналу (як у [Класифікації](../../4-Classification/1-Introduction/README.md)). Можна очищувати та редагувати дані (як ми робитимемо перед уроком [Web App](../../3-Web-App/README.md)). Нарешті, можливо, потрібно їх перемішати або рандомізувати залежно від вашої техніки навчання. -✅ Після збору і обробки даних, приділіть час, щоб перевірити, чи їх структура дозволить вам вирішити ваше заплановане питання. Можливо, дані не будуть добре працювати у вашій задачі, як ми виявляємо в наших уроках [Кластеризації](../../5-Clustering/1-Visualize/README.md)! +✅ Після збору та обробки даних приділіть час, щоб оцінити, чи їх форма дозволить вам відповісти на поставлене питання. Можливо, дані не будуть відповідними для вашої задачі, як ми дізнаємося у наших уроках із [Кластеризації](../../5-Clustering/1-Visualize/README.md)! -### Ознаки і ціль +### Ознаки та ціль -[Ознака](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — це вимірювана властивість ваших даних. У багатьох наборах даних вона виражається як заголовок стовпця, наприклад, "дата", "розмір" або "колір". Змінна ознаки, зазвичай представлена як `X` у коді, представляє вхідну змінну, яка буде використовуватися для навчання моделі. +[Ознака](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — це вимірювана властивість ваших даних. У багатьох наборах даних вона виражена у вигляді заголовка стовпця, наприклад 'дата', 'розмір' або 'колір'. Ваша змінна ознаки, зазвичай позначена `X` в коді, — це вхідна змінна, яка використовується для навчання моделі. -Ціль — це те, що ви намагаєтеся передбачити. Ціль, зазвичай представлена як `y` у коді, представляє відповідь на питання, яке ви намагаєтеся поставити до ваших даних: у грудні, якого **кольору** гарбузи будуть найдешевшими? У Сан-Франциско, які райони матимуть найкращу **ціну** на нерухомість? Іноді ціль також називають атрибутом мітки. +Ціль — це те, що ви намагаєтеся спрогнозувати. Ціль, зазвичай позначена `y` у коді, — це відповідь на питання, яке ви ставите своїм даним: у грудні, який **колір** гарбузів буде найдешевший? в Сан-Франциско, які райони матимуть найкращу **ціну** на нерухомість? Іноді ціль також називають атрибутом мітки. ### Вибір змінної ознаки -🎓 **Вибір ознак і витяг ознак** Як зрозуміти, яку змінну вибрати при створенні моделі? Ви, ймовірно, пройдете процес вибору ознак або витягу ознак, щоб вибрати правильні змінні для найкращої моделі. Однак це не одне й те саме: "Витяг ознак створює нові ознаки з функцій оригінальних ознак, тоді як вибір ознак повертає підмножину ознак." ([джерело](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Вибір ознак та вилучення ознак** Як зрозуміти, яку змінну обрати для побудови моделі? Ймовірно, ви пройдете процес вибору або вилучення ознак, щоб вибрати правильні змінні для максимально ефективної моделі. Проте це не те саме: "Вилучення ознак створює нові ознаки з функцій початкових ознак, тоді як вибір ознак повертає підмножину початкових ознак." ([джерело](https://wikipedia.org/wiki/Feature_selection)) -### Візуалізація даних +### Візуалізуйте свої дані -Важливим аспектом інструментарію дата-сайєнтиста є здатність візуалізувати дані за допомогою кількох чудових бібліотек, таких як Seaborn або MatPlotLib. Візуалізація даних може дозволити вам виявити приховані кореляції, які ви можете використати. Ваші візуалізації також можуть допомогти вам виявити упередження або незбалансовані дані (як ми виявляємо в [Класифікації](../../4-Classification/2-Classifiers-1/README.md)). +Важливим інструментом дата-сайєнтиста є можливість візуалізації даних за допомогою чудових бібліотек, таких як Seaborn або MatPlotLib. Відображення даних у вигляді графіків може допомогти виявити приховані кореляції, які можна використати. Візуалізації також можуть допомогти виявити упередженість або дисбаланс у даних (як ми бачимо у [Класифікації](../../4-Classification/2-Classifiers-1/README.md)). -### Розділення набору даних +### Розділіть ваш набір даних -Перед навчанням вам потрібно розділити ваш набір даних на дві або більше частини нерівного розміру, які все ще добре представляють дані. +Перед навчанням вам потрібно розділити набір даних на дві чи більше частин нерівного розміру, які при цьому добре відображають дані. -- **Навчання**. Ця частина набору даних використовується для навчання моделі. Цей набір складає більшість оригінального набору даних. -- **Тестування**. Тестовий набір даних — це незалежна група даних, часто зібрана з оригінальних даних, яку ви використовуєте для підтвердження продуктивності створеної моделі. -- **Валідація**. Набір для валідації — це менша незалежна група прикладів, яку ви використовуєте для налаштування гіперпараметрів або архітектури моделі, щоб покращити її. Залежно від розміру ваших даних і питання, яке ви ставите, вам може не знадобитися створювати цей третій набір (як ми зазначаємо в [Прогнозуванні часових рядів](../../7-TimeSeries/1-Introduction/README.md)). +- **Навчання**. Цю частину даних використовують для навчання моделі. Вона становить більшість оригінального набору. +- **Тестування**. Тестовий набір — це незалежна група даних, часто отримана з оригіналу, яку використовують для перевірки продуктивності побудованої моделі. +- **Валідація**. Валідаційний набір — це менша незалежна група прикладів, яку використовують для налаштування гіперпараметрів або архітектури моделі задля її покращення. Залежно від розміру даних та поставленого питання, третій набір може бути не потрібен (як ми зазначаємо у [Прогнозуванні часових рядів](../../7-TimeSeries/1-Introduction/README.md)). -## Створення моделі +## Побудова моделі -Використовуючи ваші навчальні дані, ваша мета — створити модель, або статистичне представлення ваших даних, використовуючи різні алгоритми для її **навчання**. Навчання моделі дозволяє їй робити припущення про виявлені шаблони, перевіряти їх і приймати або відхиляти. +Використовуючи навчальні дані, ваша мета — побудувати модель, або статистичне уявлення ваших даних, застосовуючи різні алгоритми для **тренування** її. Навчання моделі дає їй змогу аналізувати дані та робити припущення про виявлені закономірності, підтверджує їх та приймає або відхиляє. -### Вибір методу навчання +### Визначте метод навчання -Залежно від вашого питання і природи ваших даних, ви виберете метод для навчання. Переглядаючи [документацію Scikit-learn](https://scikit-learn.org/stable/user_guide.html) — яку ми використовуємо в цьому курсі — ви можете дослідити багато способів навчання моделі. Залежно від вашого досвіду, вам, можливо, доведеться спробувати кілька різних методів, щоб створити найкращу модель. Ви, ймовірно, пройдете процес, під час якого дата-сайєнтисти оцінюють продуктивність моделі, подаючи їй невідомі дані, перевіряючи точність, упередження та інші проблеми, що знижують якість, і вибираючи найбільш відповідний метод навчання для поставленої задачі. +Залежно від вашого питання та природи даних, ви оберете метод для навчання. Переглядаючи [документацію Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - яку ми використовуємо в цьому курсі - ви знайдете багато способів навчання моделей. Залежно від вашого досвіду, можливо, доведеться спробувати кілька різних методів, щоб побудувати найкращу модель. Зазвичай дата-сайєнтисти проходять процес оцінки якості моделі, подаючи їй нові дані, оцінюючи точність, упередженість та інші проблеми, що знижують якість, і вибирають найбільш відповідний метод навчання. ### Навчання моделі -Озброївшись вашими навчальними даними, ви готові "підганяти" їх для створення моделі. Ви помітите, що в багатьох бібліотеках ML ви знайдете код 'model.fit' — саме в цей момент ви передаєте змінну ознаки як масив значень (зазвичай 'X') і змінну цілі (зазвичай 'y'). +Маючи навчальні дані, ви готові 'натренувати' модель. Ви побачите у багатьох ML бібліотеках код 'model.fit' — саме в цей момент передаються значення змінної ознаки масивом (зазвичай 'X') та цільової змінної (зазвичай 'y'). ### Оцінка моделі -Після завершення процесу навчання (для навчання великої моделі може знадобитися багато ітерацій або "епох"), ви зможете оцінити якість моделі, використовуючи тестові дані для оцінки її продуктивності. Ці дані є підмножиною оригінальних даних, які модель раніше не аналізувала. Ви можете вивести таблицю метрик про якість вашої моделі. +Після завершення навчання (це може зайняти багато ітерацій, або 'епох', для великої моделі) ви зможете оцінити якість моделі, використавши тестові дані для вимірювання її продуктивності. Ці дані — підмножина оригінальних, які модель раніше не обробляла. Ви можете вивести таблицю з метриками щодо якості моделі. 🎓 **Підгонка моделі** -У контексті машинного навчання підгонка моделі стосується точності функції моделі, коли вона намагається аналізувати дані, з якими вона не знайома. +У контексті машинного навчання підгонка моделі означає точність функції моделі при спробі аналізувати незнайомі для неї дані. -🎓 **Недопідгонка** і **перепідгонка** — це поширені проблеми, які знижують якість моделі, коли модель підганяється або недостатньо добре, або занадто добре. Це призводить до того, що модель робить прогнози або занадто тісно пов'язані, або занадто слабо пов'язані з її навчальними даними. Перепідгонка моделі передбачає навчальні дані занадто добре, оскільки вона занадто добре вивчила деталі і шум даних. Недопідгонка моделі є неточною, оскільки вона не може точно аналізувати ні свої навчальні дані, ні дані, які вона ще не "бачила". +🎓 **Недонавчання** і **перенавчання** — це поширені проблеми, які погіршують якість моделі: модель або погано навчається, або занадто добре. Це призводить до дуже точних або, навпаки, надто загальних прогнозів щодо тренувальних даних. Модель із перенавчанням занадто добре слідкує за деталями та шумом тренувальних даних. Модель із недонавчанням є неточною, бо вона не може ні точно проаналізувати тренувальні, ні нові дані. -![перепідгонка моделі](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/uk/overfitting.1c132d92bfd93cb6.webp) > Інфографіка від [Jen Looper](https://twitter.com/jenlooper) ## Налаштування параметрів -Після завершення початкового навчання спостерігайте за якістю моделі і розгляньте можливість її покращення шляхом налаштування її "гіперпараметрів". Дізнайтеся більше про процес [у документації](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Після початкового навчання спостерігайте за якістю моделі і подумайте про можливість її покращення, налаштовуючи її «гіперпараметри». Детальніше про цей процес читайте [у документації](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Прогнозування -Це момент, коли ви можете використовувати абсолютно нові дані, щоб перевірити точність вашої моделі. У "прикладному" середовищі ML, де ви створюєте веб-ресурси для використання моделі в продакшені, цей процес може включати збір даних від користувача (наприклад, натискання кнопки), щоб встановити змінну і передати її моделі для інференсу або оцінки. +Ось момент, коли ви можете використати абсолютно нові дані для перевірки точності вашої моделі. У прикладному середовищі ML, коли ви створюєте веб-ресурси для використання моделі в продакшені, цей процес може означати збір вводу користувача (наприклад, натискання кнопки) для встановлення змінної і надсилання її в модель для висновку або оцінки. -У цих уроках ви дізнаєтеся, як використовувати ці кроки для підготовки, створення, тестування, оцінки і прогнозування — всі дії дата-сайєнтиста і більше, коли ви просуваєтеся у своїй подорожі, щоб стати "фул-стек" ML-інженером. +У цих уроках ви дізнаєтеся, як використати ці кроки для підготовки, побудови, тестування, оцінки та прогнозування — всі дії, притаманні дата-сайєнтисту, і не тільки, у вашій подорожі до становлення «повноцінним» ML-інженером. --- -## 🚀Завдання +## 🚀Виклик -Намалюйте блок-схему, яка відображає кроки практикуючого ML. Де ви бачите себе зараз у процесі? Де, на вашу думку, ви зіткнетеся з труднощами? Що здається вам легким? +Намалюйте схему кроків практикуючого ML-фахівця. Де ви зараз у цьому процесі? Де, на вашу думку, можуть виникнути труднощі? Що вам здається легким? -## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/) +## [Опитування після лекції](https://ff-quizzes.netlify.app/en/ml/) -## Огляд і самостійне навчання +## Огляд та самостійне вивчення -Шукайте в інтернеті інтерв'ю з дата-сайєнтистами, які обговорюють свою щоденну роботу. Ось [одне](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Пошукайте в інтернеті інтерв’ю з дата-сайєнтистами, які говорять про свою щоденну роботу. Ось [одне](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Завдання -[Інтерв'ю з дата-сайєнтистом](assignment.md) +[Інтерв’ю з дата-сайєнтистом](assignment.md) --- -**Відмова від відповідальності**: -Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний переклад людиною. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу штучного інтелекту [Co-op Translator](https://github.com/Azure/co-op-translator). Хоч ми й прагнемо до точності, будь ласка, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильне тлумачення, що виникли внаслідок використання цього перекладу. + \ No newline at end of file diff --git a/translations/uk/2-Regression/3-Linear/README.md b/translations/uk/2-Regression/3-Linear/README.md index b87620cca6..3a93deae2d 100644 --- a/translations/uk/2-Regression/3-Linear/README.md +++ b/translations/uk/2-Regression/3-Linear/README.md @@ -1,138 +1,136 @@ -# Побудова регресійної моделі з використанням Scikit-learn: регресія чотирма способами +# Побудова регресійної моделі за допомогою Scikit-learn: регресія чотирма способами ## Примітка для початківців -Лінійна регресія використовується, коли ми хочемо передбачити **числове значення** (наприклад, ціну будинку, температуру або продажі). -Вона працює, знаходячи пряму, яка найкраще відображає зв’язок між вхідними ознаками й виходом. +Лінійна регресія використовується, коли ми хочемо передбачити **числове значення** (наприклад, ціну будинку, температуру чи продажі). +Вона працює шляхом пошуку прямої лінії, яка найкраще описує зв’язок між вхідними ознаками та результатом. -У цьому уроці ми зосереджуємося на розумінні концепції перед тим, як вивчати більш просунуті методи регресії. -![Linear vs polynomial regression infographic](../../../../translated_images/uk/linear-polynomial.5523c7cb6576ccab.webp) +У цьому уроці ми зосереджуємося на розумінні концепції перед тим, як вивчати більш просунуті методи регресії. +![Linear vs polynomial regression infographic](../../../../translated_images/uk/linear-polynomial.5523c7cb6576ccab.webp) > Інфографіка від [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Передлекційний тест](https://ff-quizzes.netlify.app/en/ml/) -## [Перевірка знань перед лекцією](https://ff-quizzes.netlify.app/en/ml/) - -> ### [Цей урок доступний на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) - +> ### [Цей урок доступний також на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Вступ -До цього моменту ви досліджували, що таке регресія, на прикладі даних про ціни на гарбузи, які ми використаємо протягом цього уроку. Ви також візуалізували дані за допомогою Matplotlib. +Поки що ви ознайомилися з тим, що таке регресія на прикладі зібраних даних із датасету цін на гарбуза, який ми використовуватимемо протягом усього уроку. Ви також візуалізували їх за допомогою Matplotlib. -Тепер ви готові заглибитися в регресію для машинного навчання (ML). Візуалізація допомагає зрозуміти дані, але справжня сила машинного навчання полягає у _навчанні моделей_. Моделі тренуються на історичних даних, щоб автоматично вловлювати залежності в даних і дозволяють робити прогнози для нових даних, які модель раніше не бачила. +Тепер ви готові зануритися глибше в регресію для ML. Хоча візуалізація дозволяє розуміти дані, справжня сила машинного навчання полягає в _навчанні моделей_. Моделі навчаються на історичних даних, щоб автоматично захоплювати залежності у даних і дозволяють передбачати результати для нових даних, з якими модель раніше не стикалась. -У цьому уроці ви дізнаєтесь більше про два типи регресії: _базова лінійна регресія_ та _поліноміальна регресія_, а також про математику, що лежить в основі цих методів. Ці моделі дозволять нам передбачати ціни на гарбузи залежно від різних вхідних даних. +У цьому уроці ви дізнаєтеся більше про два типи регресії: _базову лінійну регресію_ та _поліноміальну регресію_, а також про математику, що лежить в основі цих методів. Ці моделі дозволять нам передбачати ціни гарбузів залежно від різних вхідних даних. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відеоогляд лінійної регресії. +> 🎥 Натисніть на зображення вище для короткого відеоогляду лінійної регресії. -> Протягом цього курсу ми припускаємо мінімальні знання математики і прагнемо зробити матеріал доступним для студентів з різних галузей, тому звертайте увагу на примітки, 🧮 позначки, діаграми та інші інструменти навчання, які допоможуть зрозуміти матеріал. +> Протягом цієї навчальної програми ми припускаємо мінімальні знання математики і намагаємося зробити матеріал доступним для студентів з інших галузей, тож звертайте увагу на примітки, 🧮 пояснення, діаграми та інші інструменти навчання для кращого розуміння. -### Вимоги +### Передумови -Ви вже знайомі зі структурою даних про гарбузи, які ми досліджуємо. Ви можете знайти їх завантаженими та попередньо очищеними у файлі цього уроку _notebook.ipynb_. У файлі ціна гарбуза відображається за бушель у новому фреймі даних. Переконайтеся, що ви можете запускати ці ноутбуки у Visual Studio Code. +Ви вже повинні бути знайомі зі структурою даних про гарбузи, які ми аналізуємо. Вони попередньо завантажені і очищені у файлі _notebook.ipynb_ цього уроку. У файлі ціна гарбуза показана за бушель у новому датафреймі. Переконайтеся, що ви можете запускати ці ноутбуки у Visual Studio Code. ### Підготовка -Нагадаємо, ви завантажуєте ці дані, щоб ставити питання. +Нагадаємо, що ви завантажуєте ці дані, щоб ставити до них запитання. -- Коли найкращий час купувати гарбузи? -- Яку ціну можна очікувати за коробку мініатюрних гарбузів? -- Чи варто купувати їх у кошиках на півбушеля, чи в коробках на 1 1/9 бушеля? - -Продовжимо копатися в цих даних. +- Коли найкращий час купувати гарбузи? +- Яку ціну можна очікувати за коробку мініатюрних гарбузів? +- Чи краще купувати їх у півбушельних кошиках чи в коробках місткістю 1 1/9 бушеля? +Давайте продовжимо досліджувати ці дані. -У попередньому уроці ви створили Pandas DataFrame і заповнили його частиною оригінального набору даних, стандартизуючи ціни за бушель. Проте таким чином вдалося зібрати лише близько 400 точок даних і тільки за осінні місяці. +У попередньому уроці ви створили Pandas DataFrame і заповнили його частиною вихідного датасету, стандартизуючи ціну за бушель. Проте таким чином вдалося зібрати близько 400 точок даних лише за осінні місяці. -Ознайомтеся з даними, які ми завантажили у супровідному ноутбуці цього уроку. Дані завантажені, і початковий розсіювальний графік відображає дані за місяцями. Можливо, ми зможемо дізнатися більше про природу даних, очистивши їх більш ретельно. +Погляньте на дані, які ми попередньо завантажили у ноутбуці до цього уроку. Дані вже завантажені, і початковий scatterplot показує місячні дані. Можливо, ми зможемо краще зрозуміти природу цих даних, якщо їх більше почистимо. ## Лінійна регресійна лінія -Як ви дізналися в уроці 1, мета лінійної регресійної вправи — побудувати лінію, щоб: +Як ви дізналися в Уроці 1, мета лінійної регресії — побудувати лінію, яка: -- **Показати залежності змінних.** Відобразити зв’язок між змінними -- **Зробити прогнози.** Робити точні прогнози про те, де нова точка даних розміститься відносно цієї лінії +- **Показує взаємозв’язки змінних**. Відображає відношення між змінними +- **Дозволяє робити прогнози**. Точні прогнози, де буде знаходитися нова точка відносно цієї лінії. -Зазвичай для цього використовується **регресія найменших квадратів (Least-Squares Regression)**. Термін «найменших квадратів» означає процес мінімізації загальної похибки в нашій моделі. Для кожної точки даних ми вимірюємо вертикальну відстань (результат, який називається залишком) між фактичною точкою та нашою регресійною лінією. +Зазвичай для побудови такої лінії використовують **метод найменших квадратів**. Терміни "найменших квадратів" стосуються процесу мінімізації загальної похибки у моделі. Для кожної точки даних вимірюється вертикальна відстань (звана залишком) між фактичною точкою та лінією регресії. -Ми підносимо ці відстані у квадрат з двох основних причин: +Ці відстані підносять у квадрат з двох основних причин: -1. **Величина важливіша за напрямок:** Хочемо, щоб похибка -5 розглядалася так само, як і +5. Квадрат робить всі значення позитивними. +1. **Величина важливіша за напрямок:** Ми хочемо трактувати помилки -5 і +5 однаково. Квадрат усіх значень робить їх додатними. -2. **Штрафування викидів:** Квадрат надає більшу вагу великим похибкам, що змушує лінію ближче підходити до точок, які розташовані далеко. +2. **Штрафування викидів:** Квадрати надають більшу вагу більшим помилкам, вимушуючи лінію бути ближчою до точок, що знаходяться далеко. -Потім ми складаємо всі ці квадрати. Наша мета — знайти лінію, де ця сума квадратичних відхилень буде найменшою (мінімальною) — звідси й назва «найменших квадратів». +Потім ми сумуємо усі ці квадрати. Наша мета — знайти таку лінію, де ця сума буде мінімальною — звідси й назва "найменших квадратів". -> **🧮 Покажіть мені математику** -> Цю лінію, яку називають _лінією найкращого прилягання_, можна подати за допомогою [рівняння](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Пояснення математики** +> +> Цю лінію, яку називають _лінією найкращого приросту_, можна описати [рівнянням](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` — 'пояснювальна змінна', `Y` — 'залежна змінна'. Кут нахилу лінії — `b`, а `a` — це перетин з віссю Y, тобто значення `Y`, коли `X = 0`. -> ->![calculate the slope](../../../../translated_images/uk/slope.f3c9d5910ddbfcf9.webp) -> -> Спершу обчислюємо нахил `b`. Інфографіка від [Jen Looper](https://twitter.com/jenlooper) -> -> Іншими словами, у нашому прикладі з гарбузами, де треба "передбачити ціну гарбуза за бушель залежно від місяця", `X` — це ціна, а `Y` — місяць продажу. -> ->![complete the equation](../../../../translated_images/uk/calculation.a209813050a1ddb1.webp) -> -> Обчисліть значення Y. Якщо ви платите близько $4, це має бути квітень! Інфографіка від [Jen Looper](https://twitter.com/jenlooper) -> -> Математика, що обчислює лінію, має враховувати нахил і перетин лінії, тобто де знаходиться `Y`, коли `X = 0`. -> -> Ви можете ознайомитися з методом обчислення на сайті [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Також відвідайте [цей калькулятор найменших квадратів](https://www.mathsisfun.com/data/least-squares-calculator.html), щоб подивитися, як значення впливають на лінію. +> +> `X` — це «пояснювальна змінна». `Y` — «залежна змінна». Кут нахилу лінії позначається `b`, а `a` — це точка перетину з віссю Y, тобто значення `Y` при `X = 0`. +> +>![calculate the slope](../../../../translated_images/uk/slope.f3c9d5910ddbfcf9.webp) +> +> Спершу обчислюємо нахил `b`. Інфографіка від [Jen Looper](https://twitter.com/jenlooper) +> +> По-простому та у контексті нашого запитання про гарбузи: "передбачити ціну гарбуза за бушель за місяць", `X` відповідатиме за ціну, а `Y` — за місяць продажу. +> +>![complete the equation](../../../../translated_images/uk/calculation.a209813050a1ddb1.webp) +> +> Обчислюємо значення Y. Якщо ви платите близько $4, це мусить бути квітень! Інфографіка від [Jen Looper](https://twitter.com/jenlooper) +> +> Математика обчислює цю лінію, враховуючи нахил і перетин, тобто де розташоване `Y` при `X = 0`. +> +> Детальніше про цей метод можна почитати на сайті [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Також відвідайте [цей калькулятор найменших квадратів](https://www.mathsisfun.com/data/least-squares-calculator.html), щоб побачити, як значення впливають на лінію. ## Кореляція -Ще один термін для розуміння — це **коефіцієнт кореляції** між змінними X і Y. За допомогою розсіювального графіку ви можете швидко побачити цей коефіцієнт. Якщо точки показані впорядковано уздовж лінії, кореляція висока, якщо розкидані хаотично — кореляція низька. +Ще один термін, який варто знати, — це **коефіцієнт кореляції** між змінними X і Y. Використовуючи scatterplot, ви швидко побачите цей коефіцієнт. Точки, розкидані впорядковано вздовж лінії, мають високу кореляцію, а точки, розкидані хаотично, — низьку. + +Гарна модель лінійної регресії матиме високий коефіцієнт кореляції (ближчий до 1, а не до 0) з використанням методу найменших квадратів з лінією регресії. + +✅ Запустіть ноутбук для цього уроку та подивіться на scatterplot між місяцем і ціною. Чи здається вам, що між місяцем та ціною гарбузів є висока чи низька кореляція, з огляду на вашу візуальну інтерпретацію цього графіку? Чи зміниться це, якщо замінити `Month` більш точним показником, наприклад, *день року* (кількість днів з початку року)? -Добрий лінійний регресійний модель — це та, у якої коефіцієнт кореляції високо (ближче до 1, ніж до 0) і з використанням методу найменших квадратів із регресійною лінією. +У коді нижче ми припускаємо, що дані очищені, і одержали датафрейм `new_pumpkins`, схожий на такий: -✅ Запустіть ноутбук, що супроводжує цей урок, та подивіться на розсіювальний графік "Місяць - Ціна". Чи виглядає, що дані, що зв’язують місяць і ціну продажу гарбузів, мають високу чи низьку кореляцію згідно з вашим візуальним аналізом графіка? Чи зміниться це, якщо використати більш детальний показник замість `Month`, наприклад, *день року* (число днів від початку року)? +ID | Місяць | ДеньРоку | Сорт | Місто | Упаковка | Мінімальна ціна | Максимальна ціна | Ціна +---|--------|----------|-------|-------|-----------|-----------------|------------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 15.0 | 15.0 | 13.636364 -У наведеному нижче коді ми припускаємо, що дані були очищені і отримано DataFrame з назвою `new_pumpkins`, схожий на наступний: +> Код для очищення даних доступний у файлі [`notebook.ipynb`](notebook.ipynb). Ми виконали такі ж кроки очищення, як і в попередньому уроці, а колонку `DayOfYear` обчислили за формулою: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|--------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 - -> Код для очищення даних доступний у файлі [`notebook.ipynb`](notebook.ipynb). Ми виконали ті самі кроки очищення, що й у попередньому уроці, і обчислили стовпець `DayOfYear` за допомогою такого виразу: - ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Тепер, коли ви маєте уявлення про математику лінійної регресії, давайте створимо регресійну модель, щоб побачити, чи можемо ми передбачити, яка упаковка гарбузів матиме найкращі ціни. Хтось, хто купує гарбузи для осіннього ярмарку, може хотіти цю інформацію, щоб оптимізувати свої покупки. + +Тепер, коли ви маєте базове розуміння математики лінійної регресії, давайте створимо модель регресії, щоб спробувати передбачити, яка упаковка гарбузів матиме найкращі ціни. Хтось, хто купує гарбузи для святкової ділянки, може зацікавитись цією інформацією для оптимізації покупки. ## Пошук кореляції [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про кореляцію. +> 🎥 Натисніть на зображення вище для короткого відеоогляду кореляції. -Із попереднього уроку ви, мабуть, бачили, що середня ціна по місяцях виглядає так: +З попереднього уроку ви, мабуть, бачили, що середня ціна по місяцях виглядає так: Average price by month -Це підказує, що повинна бути певна кореляція, і ми можемо спробувати навчити модель лінійної регресії для прогнозу зв’язку між `Month` і `Price`, або між `DayOfYear` і `Price`. Ось розсіювальний графік для останнього зв’язку: +Це натякає на існування певної кореляції, і ми можемо спробувати натренувати модель лінійної регресії для передбачення зв’язку між `Month` і `Price` або між `DayOfYear` і `Price`. Ось scatter plot для останньої залежності: Scatter plot of Price vs. Day of Year -Поглянемо, чи є кореляція, використовуючи функцію `corr`: +Перевіримо кореляцію за допомогою функції `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Здається, кореляція досить мала: -0.15 за `Month` та -0.17 за `DayOfMonth`, але може бути ще один важливий зв’язок. Виглядає, що існують різні кластери цін відповідно до сортів гарбуза. Щоб підтвердити це припущення, побудуємо графік, де кожен сорт гарбузів виділено іншим кольором. Передаючи параметр `ax` в функцію `scatter`, ми можемо відобразити всі точки на одному графіку: + +Кореляція невелика: -0,15 за `Month` і -0,17 за `DayOfYear`, але можлива інша важлива залежність. Схоже, що різні кластери цін відповідають різним сортам гарбуза. Щоб підтвердити цю гіпотезу, відобразимо кожну категорію гарбузів різними кольорами. Передаючи параметр `ax` у функцію `scatter`, ми можемо нанести всі точки на один графік: ```python ax=None @@ -141,76 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - + Scatter plot of Price vs. Day of Year -Наше дослідження свідчить про те, що сорт має більший вплив на загальну ціну, ніж фактична дата продажу. Це можна бачити на стовпчиковій діаграмі: +Наша перевірка показує, що сорт впливає сильніше на загальну ціну, ніж дата продажу. Це підтверджується графіком: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - + Bar graph of price vs variety -Зараз зосередимося лише на одному сорті гарбуза, 'pie type', і подивимось, який вплив має дата на ціну: +Наразі зосередимось лише на одному сорті гарбузів — 'pie type' — і подивимось, як дата впливає на ціну: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` - Scatter plot of Price vs. Day of Year -Якщо тепер порахувати кореляцію між `Price` і `DayOfYear` за допомогою функції `corr`, отримаємо приблизно `-0.27` — це означає, що навчання прогнозної моделі має сенс. +Якщо тепер обчислити кореляцію між `Price` та `DayOfYear` за допомогою `corr`, отримаємо приблизно `-0.27` — це означає, що навчання предиктивної моделі має сенс. -> Перед тим, як навчати лінійну регресійну модель, важливо переконатися, що дані чисті. Лінійна регресія погано працює з пропущеними значеннями, тому має сенс позбутися порожніх клітинок: +> Перед навчанням лінійної регресійної моделі важливо переконатися, що наші дані чисті. Лінійна регресія погано працює з пропущеними значеннями, тому варто позбутися пустих клітинок: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Іншим підходом може бути заповнення порожніх значень середніми значеннями стовпця. + +Альтернативний підхід — заповнити порожні значення середніми по стовпцю. ## Проста лінійна регресія [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відеоогляд лінійної та поліноміальної регресії. +> 🎥 Натисніть на зображення вище для короткого відеоогляду лінійної та поліноміальної регресії. -Для навчання моделі лінійної регресії ми використаємо бібліотеку **Scikit-learn**. +Для навчання нашої моделі лінійної регресії використаємо бібліотеку **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Почнемо з розділення вхідних значень (ознаки) і очікуваного результату (мітки) у окремі масиви numpy: + +Почнемо з розділення вхідних значень (ознаки) та очікуваних результатів (мітки) у окремі масиви numpy: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> Зверніть увагу, що довелося застосувати `reshape` до вхідних даних, щоб пакет лінійної регресії правильно їх сприйняв. Лінійна регресія очікує 2D-масив на вході, де кожен рядок — це вектор вхідних ознак. В нашому випадку, оскільки вхідна ознака лише одна, потрібен масив розміру N×1, де N — розмір набору даних. -Далі потрібно розділити дані на навчальний (train) та тестовий (test) набори, щоб можна було перевірити модель після навчання: +> Зверніть увагу, що нам довелося застосувати `reshape` до вхідних даних, щоб пакет Linear Regression коректно їх зрозумів. Лінійна регресія очікує 2-вимірний масив, де кожен рядок — це вектор вхідних ознак. У нашому випадку, маючи лише одну ознаку, потрібен масив розміру N×1, де N — розмір датасету. + +Далі потрібно розділити дані на тренувальний і тестовий набори, щоб перевірити модель після навчання: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Нарешті, навчання лінійної регресійної моделі займає лише два рядки коду. Ми створюємо об’єкт `LinearRegression` і навчаємо його на наших даних за допомогою методу `fit`: + +Нарешті, навчання власне моделі лінійної регресії — це лише два рядки коду. Створюємо об’єкт `LinearRegression` і навчаємо його методом `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` - -Об'єкт `LinearRegression` після виконання `fit` містить усі коефіцієнти регресії, до яких можна звернутися за допомогою властивості `.coef_`. У нашому випадку є лише один коефіцієнт, який повинен бути близько `-0.017`. Це означає, що ціни, здається, трохи зменшуються з часом, але не надто сильно, приблизно на 2 центи на день. Ми також можемо отримати точку перетину регресії з віссю Y за допомогою `lin_reg.intercept_` — у нашому випадку вона буде близько `21`, що вказує на ціну на початку року. -Щоб побачити, наскільки точна наша модель, ми можемо передбачити ціни на тестовому наборі даних, а потім виміряти, наскільки близькі наші прогнози до очікуваних значень. Це можна зробити за допомогою метрики кореня середньоквадратичної помилки (RMSE), яка є коренем середнього значення всіх квадратів різниці між очікуваним і передбаченим значеннями. +Об'єкт `LinearRegression` після виконання методу `fit` містить усі коефіцієнти регресії, до яких можна звернутися за допомогою властивості `.coef_`. У нашому випадку є лише один коефіцієнт, який має бути близько до `-0.017`. Це означає, що ціни, схоже, трохи падають із часом, але не надто сильно, приблизно на 2 центи на день. Ми також можемо отримати точку перетину регресії з віссю Y за допомогою `lin_reg.intercept_` – вона буде близько до `21` у нашому випадку, що вказує на ціну на початку року. + +Щоб побачити, наскільки точна наша модель, ми можемо передбачити ціни на тестовому наборі даних, а потім виміряти, наскільки близькі наші прогнози до очікуваних значень. Це можна зробити за допомогою метрики кореня середнього квадратичного відхилення (RMSE), яка є коренем з середнього значення усіх квадратів різниць між очікуваним та передбаченим значеннями. ```python pred = lin_reg.predict(X_test) @@ -219,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Наша похибка, здається, близько 2 балів, що приблизно ~17%. Не дуже добре. Ще одним показником якості моделі є **коефіцієнт детермінації**, який можна отримати ось так: +Наша помилка становить приблизно 2 пункти, що приблизно ~17%. Не дуже добре. Іншим показником якості моделі є **коефіцієнт детермінації**, який можна отримати так: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Якщо значення дорівнює 0, це означає, що модель не враховує вхідні дані і поводиться як *найгірший лінійний предиктор*, який просто повертає середнє значення результату. Значення 1 означає, що ми можемо ідеально передбачити всі очікувані виходи. В нашому випадку коефіцієнт близько 0.06, що досить низько. +Якщо значення дорівнює 0, це означає, що модель не бере до уваги вхідні дані та діє як *найгірший лінійний предиктор*, тобто просто середнє значення результату. Значення 1 означає, що ми можемо ідеально передбачити всі очікувані виходи. У нашому випадку коефіцієнт близько 0.06, що досить низько. -Ми також можемо побудувати графік тестових даних разом з лінією регресії, щоб краще побачити, як регресія працює в нашому випадку: +Ми також можемо побудувати графік тестових даних разом із лінією регресії, щоб краще побачити, як працює регресія у нашому випадку: ```python plt.scatter(X_test,y_test) @@ -238,17 +235,17 @@ plt.plot(X_test,pred) ## Поліноміальна регресія -Інший тип лінійної регресії — це поліноміальна регресія. Хоча іноді між змінними існує лінійний зв’язок — чим більша гарбуз за обсягом, тим вища ціна — іноді такі зв’язки не можна відобразити у вигляді площини чи прямої лінії. +Інший тип лінійної регресії — поліноміальна регресія. Хоч інколи існує лінійний зв’язок між змінними — чим більша гарбуз за обсягом, тим вища ціна — інколи ці зв’язки не можна зобразити як площину або пряму лінію. -✅ Ось [декілька інших прикладів](https://online.stat.psu.edu/stat501/lesson/9/9.8) даних, які можуть потребувати поліноміальної регресії. +✅ Ось [ще деякі приклади](https://online.stat.psu.edu/stat501/lesson/9/9.8) даних, для яких можна застосувати поліноміальну регресію -Подивіться ще раз на зв’язок між датою та ціною. Чи цього розсіювання досить, щоб його обов’язково слід аналізувати прямою лінією? А чи не можуть ціни коливатися? У такому разі можна спробувати поліноміальну регресію. +Ще раз погляньте на зв’язок між Датою та Ціною. Чи справді цей розсіювальний графік потрібно аналізувати виключно прямою лінією? Хіба ціни не можуть коливатися? У такому випадку можна спробувати поліноміальну регресію. -✅ Поліноми — це математичні вирази, які можуть складатися з однієї чи кількох змінних і коефіцієнтів. +✅ Поліноми — це математичні вирази, які можуть складатися з однієї або кількох змінних і коефіцієнтів -Поліноміальна регресія створює криву лінію, щоб краще підходити нелінійним даним. У нашому випадку, якщо включити змінну `DayOfYear` у квадраті в вхідні дані, ми зможемо апроксимувати наші дані параболою, що має мінімум у певній точці року. +Поліноміальна регресія створює криву лінію, щоб краще підходити нелінійним даним. У нашому випадку, якщо додати до вхідних даних змінну `DayOfYear` у квадраті, ми зможемо апроксимувати дані параболічною кривою, яка матиме мінімум у певній точці протягом року. -Scikit-learn має корисний [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) для об’єднання різних кроків обробки даних. **Pipeline** — це ланцюжок **оцінювачів**. У нашому випадку ми створимо pipeline, який спочатку додасть поліноміальні ознаки до моделі, а потім навчатиме регресію: +Scikit-learn включає корисний [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) для поєднання різних етапів обробки даних. **Пайплайн** — це ланцюжок **оцінювачів**. У нашому випадку ми створимо пайплайн, який спочатку додає поліноміальні ознаки до моделі, а потім навчає регресію: ```python from sklearn.preprocessing import PolynomialFeatures @@ -259,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Використання `PolynomialFeatures(2)` означає, що ми включимо всі поліноми другого ступеня із вхідних даних. У нашому випадку це просто `DayOfYear`2, але якщо є дві вхідні змінні X і Y, додадуться X2, XY і Y2. Ми також можемо використати поліноми вищого ступеня, якщо хочемо. +Використання `PolynomialFeatures(2)` означає, що ми включимо всі поліноми другого ступеня з вхідних даних. У нашому випадку це просто `DayOfYear`2, але, якщо є дві вхідні змінні X та Y, це додасть X2, XY і Y2. Ми також можемо використати поліноми вищого ступеня, якщо хочемо. + +Пайплайни можна використовувати так само, як і об'єкт `LinearRegression`, тобто ми можемо `fit` пайплайн, а потім застосовувати `predict` для отримання результатів прогнозу: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Для побудови гладкої апроксимуючої кривої ми використовуємо `np.linspace` для створення рівномірного діапазону вхідних значень, замість прямого побудови по неупорядкованих тестових даних (що дало б зубчасту лінію): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline можна використовувати так само, як і оригінальний об'єкт `LinearRegression`, тобто ми можемо `fit` pipeline, а потім викликати `predict` для отримання прогнозів. Ось графік, що показує тестові дані та криву апроксимації: +Ось графік з тестовими даними та апроксимуючою кривою: Polynomial regression -За допомогою поліноміальної регресії ми можемо отримати дещо нижче MSE та вищий коефіцієнт детермінації, але не суттєво. Потрібно враховувати інші ознаки! +Використовуючи поліноміальну регресію, ми можемо отримати трохи нижче значення RMSE і вищий коефіцієнт детермінації, але не суттєво. Потрібно враховувати інші ознаки! -> Ви бачите, що мінімальні ціни на гарбузи спостерігаються десь біля Геловіну. Як це можна пояснити? +> Ви можете побачити, що мінімальні ціни на гарбузи спостерігаються приблизно наприкінці жовтня. Як ви це поясните? -🎃 Вітаємо, ви щойно створили модель, яка може допомогти передбачити ціну гарбузів для пирогів. Ймовірно, ви можете повторити цю процедуру для всіх типів гарбузів, але це було б нудно. Давайте навчимося враховувати сорт гарбуза в нашій моделі! +🎃 Вітаємо, ви щойно створили модель, яка допоможе передбачати ціну гарбузів для пирогів. Ви, мабуть, можете повторити ту саму процедуру для всіх типів гарбузів, але це буде нудно. Тепер навчаємося враховувати сорт гарбуза у нашій моделі! ## Категоріальні ознаки -В ідеальному світі ми хочемо передбачати ціни для різних сортів гарбузів за допомогою однієї моделі. Однак стовпець `Variety` дещо відрізняється від стовпців на кшталт `Month`, тому що містить нечислові значення. Такі стовпці називаються **категоріальними**. +В ідеалі ми хочемо мати змогу передбачати ціни для різних сортів гарбуза, використовуючи одну й ту саму модель. Однак стовпець `Variety` дещо відрізняється від таких, як `Month`, бо містить нечислові значення. Такі стовпці називаються **категоріальними**. -[![ML для початківців - передбачення з категоріальними ознаками за допомогою лінійної регресії](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML для початківців - передбачення з категоріальними ознаками за допомогою лінійної регресії") +[![ML для початківців - Передбачення категоріальних ознак з лінійною регресією](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML для початківців - Передбачення категоріальних ознак з лінійною регресією") -> 🎥 Натисніть на зображення вище для короткого відеоогляду використання категоріальних ознак. +> 🎥 Клікніть на зображення вище, щоб переглянути короткий відеоогляд використання категоріальних ознак. Тут ви бачите, як середня ціна залежить від сорту: Average price by variety -Щоб врахувати сорт, спочатку потрібно перетворити його у числову форму, або **закодувати**. Є кілька способів це зробити: +Щоб врахувати сорт, спершу потрібно перетворити його у числову форму, або **закодувати**. Є кілька способів це зробити: -* Просте **числове кодування** створює таблицю різних сортів, а потім замінює назву сорту індексом у цій таблиці. Це не найкраща ідея для лінійної регресії, оскільки регресія бере фактичне числове значення індексу і додає його до результату, множачи на коефіцієнт. У нашому випадку залежність між номером індексу і ціною очевидно нелінійна, навіть якщо впорядкувати індекси певним чином. -* **One-hot кодування** замінить стовпець `Variety` на 4 різні стовпці — по одному для кожного сорту. Кожен стовпець міститиме `1`, якщо відповідний рядок — це даний сорт, і `0` інакше. Це означає, що у лінійній регресії буде чотири коефіцієнти, по одному для кожного сорту гарбузів, які відповідають за "початкову ціну" (або радше "додаткову ціну") для цього сорту. +* Просте **числове кодування** створює таблицю з різними сортами, а потім замінює назву сорту індексом із цієї таблиці. Це не найкраща ідея для лінійної регресії, оскільки регресія враховує саме числове значення індексу і додає його до результату, помноженого на якийсь коефіцієнт. У нашому випадку зв’язок між номером індексу та ціною явно нелінійний, навіть якщо ми впевнимося, що індекси впорядковані певним чином. +* **One-hot кодування** замінить стовпець `Variety` на 4 окремі стовпці, по одному для кожного сорту. Кожен стовпець матиме `1`, якщо відповідний рядок відноситься до цього сорту, і `0` інакше. Це означає, що буде чотири коефіцієнти у лінійній регресії, по одному для кожного сорту гарбуза, які відповідальні за "початкову ціну" (або скоріше "додаткову ціну") для цього сорту. -Код нижче показує, як можна виконати one-hot кодування сорту: +Код нижче показує, як можна застосувати one-hot кодування для сорту: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -305,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Щоб навчити лінійну регресію з one-hot кодуванням сорту у вхідних даних, нам просто потрібно правильно ініціалізувати `X` і `y`: +Щоб навчати лінійну регресію, використовуючи one-hot закодований сорт як вхід, нам потрібно правильно ініціалізувати дані `X` і `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Решта коду така сама, як і вище для навчання лінійної регресії. Якщо спробувати, побачите, що середньоквадратична помилка приблизно така ж, але коефіцієнт детермінації значно вищий (~77%). Щоб отримати ще точніші прогнози, ми можемо враховувати більше категоріальних ознак, а також числові, такі як `Month` або `DayOfYear`. Щоб отримати один великий масив ознак, можна використати `join`: +Решта коду така ж, як і в попередніх прикладах для навчання лінійної регресії. Якщо спробувати, ви побачите, що середньоквадратична помилка приблизно така сама, але коефіцієнт детермінації набагато вищий (~77%). Щоб отримати більш точні передбачення, можна враховувати більше категоріальних ознак, а також числові, таких як `Month` або `DayOfYear`. Щоб отримати один великий масив ознак, можна використовувати `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -322,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Тут ми також враховуємо `City` і тип упаковки `Package`, що дає нам MSE = 2.84 (10%) і коефіцієнт детермінації 0.94! +Тут ми також враховуємо `City` і тип `Package`, що дає RMSE 2.84 (10.5%) і детермінацію 0.94! -## Підсумовуємо +## Підсумовуючі результати -Щоб створити найкращу модель, ми можемо використовувати комбіновані (one-hot закодовані категоріальні + числові) дані з вищенаведеного прикладу разом з поліноміальною регресією. Ось повний код для вашої зручності: +Щоб отримати найкращу модель, можна використати комбіновані (one-hot закодовані категоріальні + числові) дані з попереднього прикладу разом із поліноміальною регресією. Ось повний код для зручності: ```python -# налаштувати навчальні дані +# налаштувати тренувальні дані X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# зробити розподіл на навчальну та тестову вибірки +# зробити розподіл на тренувальні та тестові дані X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# налаштувати та навчити конвеєр +# налаштувати і натренувати конвеєр pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # передбачити результати для тестових даних pred = pipeline.predict(X_test) -# обчислити середньоквадратичну помилку та коефіцієнт детермінації -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# обчислити RMSE та коефіцієнт детермінації +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Це має дати нам найкращий коефіцієнт детермінації майже 97% і MSE=2.23 (~8% похибка прогнозу). +Це має дати нам найкращий коефіцієнт детермінації майже 97% та RMSE=2.23 (~8% похибки прогнозу). -| Модель | MSE | Коефіцієнт детермінації | -|-------|-----|-------------------------| +| Модель | RMSE | Детермінація | +|-------|-----|---------------| | Лінійна за `DayOfYear` | 2.77 (17.2%) | 0.07 | | Поліноміальна за `DayOfYear` | 2.73 (17.0%) | 0.08 | | Лінійна за `Variety` | 5.24 (19.7%) | 0.77 | | Лінійна за всіма ознаками | 2.84 (10.5%) | 0.94 | | Поліноміальна за всіма ознаками | 2.23 (8.25%) | 0.97 | -🏆 Відмінна робота! Ви створили чотири моделі регресії в одному уроці і покращили якість моделі до 97%. У фінальній частині про регресію ви дізнаєтесь про логістичну регресію для визначення категорій. +🏆 Чудова робота! Ви створили чотири моделі регресії в одному уроці та покращили якість моделі до 97%. У фінальному розділі про регресію ви дізнаєтеся про логістичну регресію для визначення категорій. --- -## 🚀 Виклик +## 🚀Виклик -Перевірте кілька різних змінних у цьому ноутбуці, щоб побачити, як кореляція відповідає точності моделі. +Перевірте декілька різних змінних у цьому блокноті, щоб побачити, як кореляція відповідає якості моделі. -## [Вікторина після лекції](https://ff-quizzes.netlify.app/en/ml/) +## [Квіз після лекції](https://ff-quizzes.netlify.app/en/ml/) -## Огляд та самостійне вивчення +## Огляд і самостійне вивчення -В цьому уроці ми вивчили лінійну регресію. Існують також інші важливі типи регресії. Прочитайте про крокову, Ridge, Lasso та Elasticnet техніки. Хорошим курсом для поглибленого вивчення є [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +У цьому уроці ми вивчили лінійну регресію. Є й інші важливі типи регресії. Прочитайте про методи Stepwise, Ridge, Lasso та Elasticnet. Хорошим курсом для навчання є [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Завдання -[Побудуйте модель](assignment.md) +[Побудувати модель](assignment.md) --- -**Відмова від відповідальності**: -Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу машинного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоч ми і прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb b/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb index e22b0f96c1..0804b2dfb4 100644 --- a/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Лінійна та поліноміальна регресія для визначення ціни на гарбузи - Урок 3\n", + "## Лінійна та поліноміальна регресія для ціноутворення гарбузів - Урок 3\n", "\n", "Завантажте необхідні бібліотеки та набір даних. Перетворіть дані у датафрейм, що містить підмножину даних:\n", "\n", - "- Виберіть лише гарбузи, ціна яких вказана за бушель\n", - "- Перетворіть дату на місяць\n", - "- Розрахуйте ціну як середнє значення між високою та низькою ціною\n", - "- Перетворіть ціну, щоб вона відображала вартість за кількість у бушелях\n" + "- Отримуйте лише гарбузи, ціна яких встановлена за бушель\n", + "- Перетворіть дату у місяць\n", + "- Обчисліть ціну як середнє значення між високою та низькою цінами\n", + "- Перетворіть ціну так, щоб вона відповідала ціноутворенню за кількість бушелів\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Діаграма розсіювання нагадує нам, що ми маємо дані лише за місяці з серпня по грудень. Ймовірно, нам потрібно більше даних, щоб зробити висновки лінійним способом.\n" + "Точкова діаграма нагадує нам, що у нас є дані лише за місяці з серпня по грудень. Ймовірно, нам потрібно більше даних, щоб мати можливість робити висновки у лінійній формі.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Давайте перевіримо, чи існує кореляція:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Здається, кореляція досить мала, але існує інший, більш важливий зв'язок - оскільки точки цін на графіку вище, здається, утворюють кілька окремих кластерів. Давайте створимо графік, який покаже різні сорти гарбузів:\n" + "Схоже, кореляція досить мала, але існує інший, більш важливий зв’язок — оскільки цінові точки на графіку вище, здається, мають кілька окремих кластерів. Давайте зробимо графік, який покаже різні сорти гарбузів:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Поки що зосередьмося лише на одному виді - **тип пирога**.\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Нахил прямої можна визначити за коефіцієнтами лінійної регресії:\n" + "Нахил лінії можна визначити за коефіцієнтами лінійної регресії:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Ми можемо використовувати навчану модель для прогнозування ціни:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Поліноміальна регресія\n", "\n", - "Іноді зв'язок між ознаками та результатами є природно нелінійним. Наприклад, ціни на гарбузи можуть бути високими взимку (місяці=1,2), потім знижуватися влітку (місяці=5-7), а потім знову зростати. Лінійна регресія не здатна точно визначити цей зв'язок.\n", + "Іноді залежність між ознаками та результатами є за своєю суттю нелінійною. Наприклад, ціни на гарбузи можуть бути високими взимку (місяці=1,2), потім падати влітку (місяці=5-7), а потім знову зростати. Лінійна регресія не в змозі точно відобразити цю залежність.\n", "\n", - "У такому випадку можна розглянути додавання додаткових ознак. Простий спосіб — використовувати поліноми з вхідних ознак, що призведе до **поліноміальної регресії**. У Scikit Learn ми можемо автоматично попередньо обчислювати поліноміальні ознаки за допомогою конвеєрів:\n" + "У цьому випадку можна розглянути додавання додаткових ознак. Простий спосіб – використати поліноми від вхідних ознак, що призведе до **поліноміальної регресії**. У Scikit Learn ми можемо автоматично попередньо обчислити поліноміальні ознаки за допомогою пайплайнів: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Кодування сортів\n", + "### Варіанти кодування\n", "\n", - "У ідеальному світі ми хочемо мати можливість прогнозувати ціни для різних сортів гарбуза, використовуючи одну й ту саму модель. Щоб врахувати сорт, спочатку потрібно перетворити його в числову форму, або **закодувати**. Є кілька способів зробити це:\n", + "В ідеальному світі ми хочемо мати можливість прогнозувати ціни для різних сортів гарбуза, використовуючи одну й ту саму модель. Щоб врахувати сорт, спочатку потрібно перетворити його у числову форму, або **закодувати**. Існує кілька способів, як це можна зробити:\n", "\n", - "* Просте числове кодування, яке створить таблицю різних сортів, а потім замінить назву сорту на індекс у цій таблиці. Це не найкраща ідея для лінійної регресії, оскільки лінійна регресія враховує числове значення індексу, а числове значення, ймовірно, не буде корелювати чисельно з ціною.\n", - "* Одновимірне кодування (one-hot encoding), яке замінить стовпець `Variety` на 4 різні стовпці, по одному для кожного сорту, які міститимуть 1, якщо відповідний рядок належить до даного сорту, і 0 в іншому випадку.\n", + "* Прості числові кодування, які створять таблицю різних сортів, а потім замінять назву сорту на індекс у цій таблиці. Це не найкраща ідея для лінійної регресії, бо лінійна регресія враховує числове значення індексу, і це числове значення навряд чи буде корелювати з ціною.\n", + "* Кодування в одному гарячому форматі (one-hot encoding), яке замінить стовпець `Variety` на 4 різні стовпці, по одному для кожного сорту, які будуть містити 1, якщо відповідний рядок належить цьому сорту, і 0 – інакше.\n", "\n", - "Код нижче показує, як можна закодувати сорт за допомогою одновимірного кодування:\n" + "Код нижче показує, як ми можемо виконати кодування в одному гарячому форматі для сорту:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Лінійна регресія на основі сорту\n", + "### Лінійна регресія за сортом\n", "\n", - "Тепер ми використаємо той самий код, що й вище, але замість `DayOfYear` використаємо наш закодований у форматі one-hot сорт як вхідні дані:\n" + "Ми тепер використаємо той самий код, що й вище, але замість `DayOfYear` ми використаємо наш одноразове кодування сорту як вхідні дані:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ми також можемо спробувати використовувати інші функції таким же чином і комбінувати їх з числовими характеристиками, такими як `Month` або `DayOfYear`:\n" + "Ми також можемо спробувати використовувати інші ознаки аналогічним чином і комбінувати їх з числовими ознаками, такими як `Month` або `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Поліноміальна регресія\n", "\n", - "Поліноміальну регресію також можна використовувати з категоріальними ознаками, які закодовані методом one-hot-encoding. Код для навчання поліноміальної регресії буде фактично таким самим, як ми бачили вище.\n" + "Поліноміальну регресію також можна використовувати з категоріальними ознаками, які закодовані методом one-hot. Код для навчання поліноміальної регресії, по суті, буде таким самим, як ми бачили вище.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Відмова від відповідальності**: \nЦей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.\n" + "---\n\n\n**Відмова від відповідальності**: \nЦей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критичної інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння чи неправильні тлумачення, що виникли внаслідок використання цього перекладу.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:22:30+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "uk" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 52aff4bf9046a4e4d5f3133433f8d37814b5d315 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:27:01 +0000 Subject: [PATCH 08/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/et/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 112 ++--- .../et/2-Regression/3-Linear/README.md | 301 +++++++------- .../3-Linear/solution/notebook.ipynb | 63 ++- translations/pcm/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 94 ++--- .../pcm/2-Regression/3-Linear/README.md | 214 +++++----- .../3-Linear/solution/notebook.ipynb | 57 ++- translations/ta/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 122 +++--- .../ta/2-Regression/3-Linear/README.md | 382 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++-- 12 files changed, 770 insertions(+), 686 deletions(-) diff --git a/translations/et/.co-op-translator.json b/translations/et/.co-op-translator.json index 2122377ab9..19e8278a9c 100644 --- a/translations/et/.co-op-translator.json +++ b/translations/et/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "et" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-10-11T11:29:27+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:25:37+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "et" }, @@ -90,8 +90,8 @@ "language_code": "et" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:13:13+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:25:13+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "et" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "et" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:22:25+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "et" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-10-11T11:42:07+00:00", diff --git a/translations/et/1-Introduction/4-techniques-of-ML/README.md b/translations/et/1-Introduction/4-techniques-of-ML/README.md index 1379006936..b10a8fc8ad 100644 --- a/translations/et/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/et/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Masinõppe tehnikad -Masinõppe mudelite ja nende kasutatava andmete loomise, kasutamise ja hooldamise protsess erineb oluliselt paljudest teistest arendusvoogudest. Selles õppetükis selgitame seda protsessi ja toome välja peamised tehnikad, mida peate teadma. Te saate: +Masinõppemudelite loomise, kasutamise ja hooldamise protsess ning andmed, mida nad kasutavad, on väga erinev paljudest teistest arendusvoogudest. Selles õppetükis demüstifitseerime protsessi ja anname ülevaate peamistest tehnikatest, mida on vaja teada. Sa: -- Mõista masinõppe aluseks olevaid protsesse üldisel tasemel. -- Uurida põhimõisteid nagu "mudelid", "ennustused" ja "treeningandmed". +- Mõistad masinõppe alusprotsesse ülevaatlikult. +- Uurite põhimõisteid nagu „mudelid“, „ennustused“ ja „õppematerjalid“. -## [Eelloengu viktoriin](https://ff-quizzes.netlify.app/en/ml/) +## [Eelõppe viktoriin](https://ff-quizzes.netlify.app/en/ml/) -[![Masinõpe algajatele - Masinõppe tehnikad](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Masinõpe algajatele - Masinõppe tehnikad") +[![ML algajatele - Masinõppe tehnikad](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML algajatele - Masinõppe tehnikad") -> 🎥 Klõpsake ülaloleval pildil, et vaadata lühivideot, mis käsitleb seda õppetundi. +> 🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot, mis läbib selle õppetüki. ## Sissejuhatus -Üldisel tasemel koosneb masinõppe (ML) protsesside loomise kunst mitmest etapist: +Kõrgemal tasemel koosneb masinõppe (ML) protsesside loomine mitmest etapist: -1. **Küsimuse määratlemine**. Enamik ML-protsesse algab küsimuse esitamisega, millele ei saa vastata lihtsa tingimusliku programmi või reeglipõhise mootoriga. Need küsimused keskenduvad sageli ennustustele, mis põhinevad andmekogumil. -2. **Andmete kogumine ja ettevalmistamine**. Küsimusele vastamiseks on vaja andmeid. Teie andmete kvaliteet ja mõnikord ka kogus määravad, kui hästi saate oma algsele küsimusele vastata. Andmete visualiseerimine on selle etapi oluline osa. See etapp hõlmab ka andmete jagamist treening- ja testimisgruppideks, et mudelit ehitada. -3. **Treeningmeetodi valimine**. Sõltuvalt teie küsimusest ja andmete olemusest peate valima, kuidas soovite mudelit treenida, et see kõige paremini kajastaks teie andmeid ja teeks täpseid ennustusi. See ML-protsessi osa nõuab spetsiifilist ekspertiisi ja sageli märkimisväärset katsetamist. -4. **Mudeli treenimine**. Kasutades oma treeningandmeid, kasutate erinevaid algoritme, et treenida mudelit andmetes mustrite äratundmiseks. Mudel võib kasutada sisemisi kaalusid, mida saab kohandada, et eelistada teatud andmeosi teiste ees, et luua parem mudel. -5. **Mudeli hindamine**. Kasutate varem nägemata andmeid (oma testimisandmeid) kogutud komplektist, et näha, kuidas mudel toimib. -6. **Parameetrite häälestamine**. Mudeli toimivuse põhjal saate protsessi uuesti läbi teha, kasutades erinevaid parameetreid või muutujaid, mis kontrollivad mudeli treenimiseks kasutatud algoritmide käitumist. +1. **Küsimuse valimine**. Enamik ML protsesse algab küsimusest, millele ei saa vastata lihtsa tingimusprogrammi või reeglitel põhineva mootoriga. Need küsimused keerlevad sageli andmekogumi põhjal tehtavate ennustuste ümber. +2. **Andmete kogumine ja ettevalmistamine**. Küsimusele vastamiseks on vaja andmeid. Andmete kvaliteet ja mõnikord ka hulk määravad, kui hästi saate oma algset küsimust vastata. Andmete visualiseerimine on selle etapi oluline osa. Käesolev etapp hõlmab ka andmete jagamist treening- ja testimisrühmadeks mudeli ehitamiseks. +3. **Õppemeetodi valimine**. Sõltuvalt küsimusest ja andmete olemusest peate valima, kuidas mudelit treenida, et kõige paremini andmeid kajastada ja teha täpseid ennustusi. See on ML protsessi osa, mis nõuab eriteadmisi ja sageli ka rohkelt katsetamist. +4. **Mudeli treenimine**. Kasutades treeningandmeid, kasutate erinevaid algoritme, et treenida mudelit, mis tunneb ära mustreid andmetes. Mudel võib kasutada sisemisi kaalusid, mida saab kohandada, et anda teatud andmeosadele eelistust parema mudeli loomiseks. +5. **Mudeli hindamine**. Kasutate esmakordselt nägemata andmeid (testandmed) oma kogumist, et näha, kuidas mudel toimib. +6. **Parameetrite häälestamine**. Tuginedes mudeli jõudlusele, saate protsessi läbi teha uuesti, kasutades erinevaid parameetreid või muutujaid, mis kontrollivad algoritmide käitumist mudeli treenimiseks. 7. **Ennustamine**. Kasutage uusi sisendeid, et testida mudeli täpsust. -## Millist küsimust esitada +## Millist küsimust küsida -Arvutid on eriti osavad andmetes peidetud mustrite avastamisel. See oskus on väga kasulik teadlastele, kellel on küsimusi antud valdkonna kohta, millele ei saa lihtsalt vastata tingimuslikult põhineva reeglimootoriga. Näiteks aktuaari ülesande puhul võib andmeteadlane koostada käsitsi loodud reeglid suitsetajate ja mittesuitsetajate suremuse kohta. +Arvutid on eriti osavad varjatud mustrite avastamisel andmetes. See omadus on väga kasulik teadlastele, kellel on küsimusi antud valdkonna kohta, millele ei saa lihtsalt tingimusel põhineva reeglimootoriga vastata. Näiteks aktuaariülesandes võib andmeteadlane koostada käsitsi loodud reegleid suitsetajate ja mitte-suitsetajate suremuse kohta. -Kui võrrandisse tuuakse palju muid muutujaid, võib ML-mudel osutuda tõhusamaks, et ennustada tulevasi suremuse määrasid varasema terviseajaloo põhjal. Rõõmsam näide võiks olla aprillikuu ilmaprognooside tegemine antud asukohas, kasutades andmeid, mis hõlmavad laius- ja pikkuskraadi, kliimamuutusi, ookeani lähedust, jugavoolu mustreid ja palju muud. +Kui võetakse arvesse palju teisi muutujaid, võib masinõppemudel olla efektiivsem tulevaste suremusmäärade ennustamiseks varasema terviseandmete põhjal. Rõõmsam näide võib olla aprilli kuu ilmaennustuse tegemine antud asukoha kohta, põhinedes andmetel, mis sisaldavad laiust, pikkust, kliimamuutust, lähedust ookeanile, jetivoolu mustreid ja palju muud. -✅ See [slaidiesitlus](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ilmamudelite kohta pakub ajaloolist perspektiivi ML-i kasutamiseks ilmaanaluüsi tegemisel. +✅ See [slaidikomplekt](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ilma mudelite kohta pakub ajaloolist perspektiivi masinõppe kasutamise kohta ilmaanalüüsis. -## Ehituseelne töö +## Enne ehitamise ülesanded -Enne mudeli ehitamist on mitmeid ülesandeid, mida peate täitma. Oma küsimuse testimiseks ja hüpoteesi loomiseks mudeli ennustuste põhjal peate tuvastama ja seadistama mitmeid elemente. +Enne mudeli ehitamise alustamist tuleb sooritada mitu ülesannet. Selleks, et testida oma küsimust ja vormida hüpoteesi mudeli ennustuste põhjal, peate kindlaks tegema ja seadistama mitmed elemendid. ### Andmed -Küsimusele kindlusega vastamiseks vajate piisavalt õiget tüüpi andmeid. Sellel hetkel peate tegema kaks asja: +Et küsimusele kindlusega vastata, on vaja head kogust andmeid õiges formaadis. Sel hetkel tuleb teha kaks asja: -- **Andmete kogumine**. Pidades silmas eelmist õppetundi andmeanalüüsi õiglusest, koguge oma andmeid hoolikalt. Olge teadlik nende andmete allikatest, võimalikest sisemistest kallutustest ja dokumenteerige nende päritolu. -- **Andmete ettevalmistamine**. Andmete ettevalmistamise protsess hõlmab mitmeid samme. Võib-olla peate andmeid koondama ja normaliseerima, kui need pärinevad erinevatest allikatest. Andmete kvaliteeti ja kvantiteeti saab parandada mitmel viisil, näiteks teisendades stringe numbriteks (nagu teeme [klasterdamises](../../5-Clustering/1-Visualize/README.md)). Võite ka luua uusi andmeid, mis põhinevad algsetel andmetel (nagu teeme [klassifitseerimises](../../4-Classification/1-Introduction/README.md)). Andmeid saab puhastada ja redigeerida (nagu teeme enne [veebirakenduse](../../3-Web-App/README.md) õppetundi). Lõpuks võib osutuda vajalikuks andmete juhuslikustamine ja segamine, sõltuvalt teie treeningtehnikatest. +- **Koguge andmed**. Pidades meeles eelmist õppetundi õiglusest andmeanalüüsis, koguge andmed hoolikalt. Olge teadlik andmete allikatest, võimalike kallutatuste olemasolust ja dokumenteerige selle päritolu. +- **Valmistage andmed ette**. Andmete ettevalmistamise protsessis on mitu sammu. Võite vajada andmete kogumist ja normaliseerimist, kui need pärinevad erinevatest allikatest. Andmete kvaliteeti ja hulka saab parandada erinevate meetoditega, näiteks konverteerides stringid numbriteks (nagu teeme [klastris](../../5-Clustering/1-Visualize/README.md)). Samuti võite genereerida uusi andmeid, lähtudes algsetest andmetest (nagu teeme [klassifitseerimises](../../4-Classification/1-Introduction/README.md)). Andmeid saab puhastada ja redigeerida (nagu teeme enne [veebirakenduse](../../3-Web-App/README.md) õpetust). Lõpuks võib olla vajalik andmete juhuslikustamine ja segamine, sõltuvalt teie õppetehnikatest. -✅ Pärast andmete kogumist ja töötlemist võtke hetk, et näha, kas nende kuju võimaldab teil vastata kavandatud küsimusele. Võib juhtuda, et andmed ei tööta teie antud ülesandes hästi, nagu avastame [klasterdamise](../../5-Clustering/1-Visualize/README.md) õppetundides! +✅ Pärast andmete kogumist ja töötlemist võtke hetk, et hinnata, kas andmete kuju võimaldab teil esitatud küsimusele vastata. Võib-olla ei sobi andmed teie ülesande jaoks hästi, nagu avastame meie [klastrite](../../5-Clustering/1-Visualize/README.md) õppetundides! -### Omadused ja sihtmärk +### Tunnused ja sihtmärk -[Omadus](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) on teie andmete mõõdetav omadus. Paljudes andmekogumites väljendatakse seda veerupäisena, näiteks "kuupäev", "suurus" või "värv". Teie omadusmuutuja, mida tavaliselt tähistatakse koodis `X`, esindab sisendmuutujat, mida kasutatakse mudeli treenimiseks. +[Tunnus](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) on andmete mõõdetav omadus. Paljudes andmekogumites väljendub see veerupäisena nagu „kuupäev“, „suurus“ või „värv“. Teie tunnuse muutuja, tavaliselt koodis tähistatud `X`-ga, esindab sisendmuutujat, mida kasutatakse mudeli treenimiseks. -Sihtmärk on asi, mida proovite ennustada. Sihtmärk, mida tavaliselt tähistatakse koodis `y`, esindab vastust küsimusele, mida proovite oma andmetelt küsida: detsembris, milline **värv** kõrvitsatest on kõige odavam? San Franciscos, millised naabruskonnad pakuvad parimat kinnisvara **hinda**? Mõnikord viidatakse sihtmärgile ka kui sildi atribuudile. +Sihtmärk on see, mida püüate ennustada. Sihtmärk, tavaliselt tähistatud koodis `y`-ga, esindab küsimusele, mida esitate oma andmetele, vastust: detsembris, mis värvi kõrvitsad on odavaimad? San Franciscos, millistel linnaosadel on parim kinnisvara hind? Mõnikord nimetatakse sihtmärki ka sildi atribuudi nimega. -### Omadusmuutuja valimine +### Tunnuse muutuja valimine -🎓 **Omaduste valik ja omaduste ekstraheerimine** Kuidas valida, millist muutujat mudeli ehitamisel kasutada? Tõenäoliselt läbite protsessi, kus valite omaduste valiku või ekstraheerimise abil õiged muutujad kõige paremini toimiva mudeli jaoks. Need pole siiski samad: "Omaduste ekstraheerimine loob uusi omadusi algsete omaduste funktsioonidest, samas kui omaduste valik tagastab omaduste alamhulga." ([allikas](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Tunnuse valik ja tunnuse ekstraheerimine** Kuidas valida muutuja mudeli ehitamisel? Tõenäoliselt läbite tunnuse valiku või tunnuse ekstraheerimise protsessi, et valida kõige sobivamad muutujad parima jõudlusega mudeli jaoks. Need pole siiski sama asi: "Tunnuse ekstraheerimine loob uusi tunnuseid originaaltunnuste funktsioonidest, samas kui tunnuse valik tagastab tunnuste alamhulga." ([allikas](https://wikipedia.org/wiki/Feature_selection)) -### Andmete visualiseerimine +### Visualiseeri oma andmeid -Andmeteadlase tööriistakomplekti oluline aspekt on võime visualiseerida andmeid, kasutades mitmeid suurepäraseid teeke, nagu Seaborn või MatPlotLib. Andmete visuaalne esitamine võib võimaldada teil avastada peidetud korrelatsioone, mida saate ära kasutada. Teie visualisatsioonid võivad aidata teil avastada kallutatust või tasakaalustamata andmeid (nagu avastame [klassifitseerimises](../../4-Classification/2-Classifiers-1/README.md)). +Andmeteadlase tööriistakasti oluline aspekt on võime visualiseerida andmeid, kasutades mitmeid suurepäraseid raamistikke nagu Seaborn või MatPlotLib. Andmete visuaalne esitamine võib aidata teil avastada varjatud korrelatsioone, mida saate ära kasutada. Teie visualiseeringud võivad aidata ka avastada kallutatust või ebatasakaalustatud andmeid (nagu avastame [klassifitseerimises](../../4-Classification/2-Classifiers-1/README.md)). -### Andmekogumi jagamine +### Jagage oma andmekogum -Enne treenimist peate jagama oma andmekogumi kaheks või enamaks ebavõrdse suurusega osaks, mis siiski esindavad andmeid hästi. +Enne treenimist peate jagama oma andmekogu kahte või enamasse ebavõrdsesse ossa, mis siiski andmeid hästi esindavad. -- **Treening**. See osa andmekogumist sobitatakse teie mudeliga, et seda treenida. See komplekt moodustab suurema osa algsest andmekogumist. -- **Testimine**. Testandmekogum on sõltumatu andmete grupp, mis sageli kogutakse algsetest andmetest ja mida kasutatakse ehitatud mudeli toimivuse kinnitamiseks. -- **Valideerimine**. Valideerimiskomplekt on väiksem sõltumatu näidete grupp, mida kasutatakse mudeli hüperparameetrite või arhitektuuri häälestamiseks, et mudelit täiustada. Sõltuvalt teie andmete suurusest ja küsimusest, mida esitate, ei pruugi teil olla vaja seda kolmandat komplekti luua (nagu märgime [ajasarja prognoosimise](../../7-TimeSeries/1-Introduction/README.md) õppetundides). +- **Treening**. See osa andmekogumist sobitub mudeliga selle treenimiseks. See komplekt moodustab enamikku algsest andmekogumist. +- **Testimine**. Testandmekogu on sõltumatu andmed rühm, sageli kogutud algsetest andmetest, mida kasutatakse ehitatud mudeli jõudluse kinnitamiseks. +- **Kinnitamine**. Kinnitamise komplekt on väiksem sõltumatu näidiste kogum, mida kasutatakse mudeli hüperparameetrite või arhitektuuri häälestamiseks mudeli parandamiseks. Sõltuvalt andmete suurusest ja küsimusest, mida esitate, ei pruugi olla vaja seda kolmandat komplekti luua (nagu märgime [aegrea ennustamises](../../7-TimeSeries/1-Introduction/README.md)). ## Mudeli ehitamine -Kasutades oma treeningandmeid, on teie eesmärk ehitada mudel ehk teie andmete statistiline esitus, kasutades erinevaid algoritme selle **treenimiseks**. Mudeli treenimine võimaldab sellel andmetega tutvuda ja teha oletusi tajutud mustrite kohta, mida see avastab, valideerib ja aktsepteerib või lükkab tagasi. +Kasutades treeningandmeid, on eesmärgiks ehitada mudel ehk statistiline andmete esitlus, kasutades erinevaid algoritme selle **treenimiseks**. Mudeli treenimine eksponeerib seda andmetele ja võimaldab tal teha oletusi avastatud mustrite kohta, kinnitada neid ja vastu võtta või tagasi lükata. -### Treeningmeetodi valimine +### Õppemeetodi valimine -Sõltuvalt teie küsimusest ja andmete olemusest valite meetodi selle treenimiseks. Läbi käies [Scikit-learn'i dokumentatsiooni](https://scikit-learn.org/stable/user_guide.html) - mida me selles kursuses kasutame - saate uurida mitmeid viise mudeli treenimiseks. Sõltuvalt teie kogemustest peate võib-olla proovima mitmeid erinevaid meetodeid, et ehitada parim mudel. Tõenäoliselt läbite protsessi, kus andmeteadlased hindavad mudeli toimivust, toites sellele varem nägemata andmeid, kontrollides täpsust, kallutatust ja muid kvaliteeti halvendavaid probleeme ning valides ülesande jaoks kõige sobivama treeningmeetodi. +Sõltuvalt küsimusest ja andmete olemusest valite, kuidas mudelit treenida. Läbides [Scikit-learni dokumentatsiooni](https://scikit-learn.org/stable/user_guide.html) – mida selles kursuses kasutame – saate uurida mitmeid viise, kuidas mudelit treenida. Oma kogemuse põhjal võib teil olla vaja proovida mitut erinevat meetodit parima mudeli ehitamiseks. Tõenäoliselt läbite protsessi, kus andmeteadlased hindavad mudeli jõudlust, pakkudes sellele nägemata andmeid, kontrollides täpsust, kallutatust ja muid kvaliteeti halvendavaid tegureid ning valides ülesande jaoks kõige sobivama õppemeetodi. ### Mudeli treenimine -Relvastatud oma treeningandmetega olete valmis neid "sobitama", et luua mudel. Märkate, et paljudes ML-teekides leiate koodi "model.fit" - just sel ajal saadate oma omadusmuutuja väärtuste massiivina (tavaliselt "X") ja sihtmuutuja (tavaliselt "y"). +Varustatuna treeningandmetega olete valmis mudelit „sobitama“. Paljuski leiab paljudes ML raamistikus koodi 'model.fit' – just sel hetkel saadate oma tunnuse muutuja väärtuste massiivi (tavaliselt 'X') ja sihtmuutuja (tavaliselt 'y'). ### Mudeli hindamine -Kui treenimisprotsess on lõpule jõudnud (suure mudeli treenimiseks võib kuluda palju iteratsioone ehk "epohhe"), saate mudeli kvaliteeti hinnata, kasutades testandmeid selle toimivuse mõõtmiseks. Need andmed on algsete andmete alamhulk, mida mudel pole varem analüüsinud. Saate printida välja tabeli mudeli kvaliteedi mõõdikutega. +Kui treenimisprotsess on lõpule jõudnud (suurte mudelite treenimine võib võtta mitu iteratsiooni ehk "epohhi"), saate mudeli kvaliteeti hinnata, kasutades testandmeid tema jõudluse mõõtmiseks. Need andmed on alamhulk algsetest andmetest, mida mudel pole varem analüüsinud. Saate printida mudeli kvaliteedi mõõdikute tabeli. 🎓 **Mudeli sobitamine** -Masinõppe kontekstis viitab mudeli sobitamine mudeli aluseks oleva funktsiooni täpsusele, kui see üritab analüüsida andmeid, millega see pole tuttav. +Masinõppe kontekstis viitab mudeli sobitamine mudeli aluseks oleva funktsiooni täpsusele, kui ta proovib analüüsida andmeid, millega tal veel kogemusi pole. -🎓 **Alasobitamine** ja **ülesobitamine** on levinud probleemid, mis halvendavad mudeli kvaliteeti, kuna mudel sobitub kas liiga halvasti või liiga hästi. See põhjustab mudeli ennustusi, mis on kas liiga tihedalt seotud või liiga lõdvalt seotud treeningandmetega. Ülesobitunud mudel ennustab treeningandmeid liiga hästi, kuna see on õppinud andmete üksikasju ja müra liiga hästi. Alasobitunud mudel pole täpne, kuna see ei suuda täpselt analüüsida ei oma treeningandmeid ega andmeid, mida see pole veel "näinud". +🎓 **Alasobitamine** ja **ülesobitamine** on levinud probleemid, mis vähendavad mudeli kvaliteeti, kui mudel kas ei sobitu piisavalt hästi või sobitub liiga täpselt. Selline olukord põhjustab, et mudel teeb ennustusi kas liiga rangelt või liiga vabalt sobitudes oma treeningandmetega. Ülesobitatud mudel ennustab treeningandmeid liiga hästi, kuna on õppinud andmete detailid ja müra liiga põhjalikult. Alasobitatud mudel ei ole täpne, kuna ei suuda täpselt analüüsida ei oma treeningandmeid ega ka varem "nägemata" andmeid. -![ülesobitunud mudel](../../../../translated_images/et/overfitting.1c132d92bfd93cb6.webp) -> Infograafik: [Jen Looper](https://twitter.com/jenlooper) +![ülesobitatud mudel](../../../../translated_images/et/overfitting.1c132d92bfd93cb6.webp) +> Infograafika autor: [Jen Looper](https://twitter.com/jenlooper) ## Parameetrite häälestamine -Kui teie algne treenimine on lõpule jõudnud, jälgige mudeli kvaliteeti ja kaaluge selle parandamist, kohandades selle "hüperparameetreid". Lugege selle protsessi kohta rohkem [dokumentatsioonis](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Kui esmane treening on tehtud, jälgige mudeli kvaliteeti ja kaalutlege selle parandamist, häälestades selle „hüperparameetreid“. Selle protsessi kohta lugege rohkem [dokumentatsioonist](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Ennustamine -See on hetk, mil saate kasutada täiesti uusi andmeid, et testida mudeli täpsust. Rakendatud ML-i seadetes, kus ehitate veebivarasid mudeli kasutamiseks tootmises, võib see protsess hõlmata kasutaja sisendi kogumist (näiteks nupuvajutus), et määrata muutuja ja saata see mudelile järeldamiseks või hindamiseks. +See on hetk, kus saate kasutada täiesti uusi andmeid, et testida mudeli täpsust. Rakendusliku ML keskkonnas, kus ehitate veebivarasid mudeli kasutamiseks tootmises, võib see protsess hõlmata kasutajasisendi kogumist (näiteks nupu vajutuse) muutuja seadmiseks ja mudelile edastamiseks inferentsiks ehk hinnanguks. -Nendes õppetundides avastate, kuidas kasutada neid samme andmete ettevalmistamiseks, mudeli ehitamiseks, testimiseks, hindamiseks ja ennustamiseks - kõik andmeteadlase žestid ja palju muud, kui edendate oma teekonda "täisstack" ML-inseneriks saamiseks. +Nendes õppetundides avastate, kuidas neid samme kasutada ettevalmistamiseks, ehitamiseks, testimiseks, hindamiseks ja ennustamiseks – kõik need on andmeteadlase žestid ja palju muud – kui te arendate end ‘täispaketi’ masinõppe inseneriks. --- ## 🚀Väljakutse -Joonistage vooskeem, mis kajastab ML-praktiku samme. Kus näete end praegu protsessis? Kus ennustate, et teil võib tekkida raskusi? Mis tundub teile lihtne? +Joonista vooskeem, mis peegeldab masinõppe praktikandi samme. Kus sa hetkel protsessis seisad? Kus arvad, et võivad tekkida raskused? Mis tundub sulle kerge? -## [Järelloengu viktoriin](https://ff-quizzes.netlify.app/en/ml/) +## [Pärastloengu viktoriin](https://ff-quizzes.netlify.app/en/ml/) -## Ülevaade ja iseseisev õppimine +## Kordamine ja iseseisev õppimine -Otsige veebist intervjuusid andmeteadlastega, kes räägivad oma igapäevasest tööst. Siin on [üks](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Otsi internetist intervjuusid andmeteadlastega, kes räägivad oma igapäevatööst. Siin on [üks](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Ülesanne +## Kodune ülesanne -[Intervjueerige andmeteadlast](assignment.md) +[Intervjueeri andmeteadlast](assignment.md) --- -**Lahtiütlus**: -See dokument on tõlgitud AI tõlketeenuse [Co-op Translator](https://github.com/Azure/co-op-translator) abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest. \ No newline at end of file + +**Vastutusest loobumine**: +See dokument on tõlgitud AI tõlketeenuse [Co-op Translator](https://github.com/Azure/co-op-translator) abil. Kuigi püüame täpsust, palun pange tähele, et automatiseeritud tõlked võivad sisaldada vigu või ebatäpsusi. Originaaldokument oma emakeeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitatakse professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste ega valesti tõlgendamise eest. + \ No newline at end of file diff --git a/translations/et/2-Regression/3-Linear/README.md b/translations/et/2-Regression/3-Linear/README.md index 3a69495150..e815d944cc 100644 --- a/translations/et/2-Regression/3-Linear/README.md +++ b/translations/et/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Ehita regressioonimudel kasutades Scikit-learn'i: regressioon neljal moel +# Regresseerimudeli loomine Scikit-learni abil: regressioon neli moodi ## Algaja märkus -Lineaarset regressiooni kasutatakse siis, kui soovime ennustada **numbrilist väärtust** (näiteks maja hind, temperatuur või müük). -See toimib, leides sirgjoone, mis kõige paremini esindab seost sisendomaduste ja väljundi vahel. +Lineaarset regressiooni kasutatakse siis, kui soovime ennustada **numbrilist väärtust** (näiteks maja hind, temperatuur või müük). +See töötab, leides sirgjoone, mis kõige paremini kirjeldab seost sisendiomaduste ja väljundi vahel. -Selles õppetükis keskendume mõiste mõistmisele enne kui uurime keerukamaid regressioonitehnikaid. -![Lineaarne vs polünoomne regressioon infograafik](../../../../translated_images/et/linear-polynomial.5523c7cb6576ccab.webp) -> Infograafik autorilt [Dasani Madipalli](https://twitter.com/dasani_decoded) +Selles õppetükis keskendume esmalt mõiste mõistmisele, enne kui uurime edasijõudnutele mõeldud regressioonitehnikaid. +![Lineaarse ja polünoomi regressiooni infograafik](../../../../translated_images/et/linear-polynomial.5523c7cb6576ccab.webp) +> Infograafiku autor on [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Loengu-eelne viktoriin](https://ff-quizzes.netlify.app/en/ml/) -> ### [See õppetükk on saadaval R keeles!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Sissejuhatus +> ### [See õppetükk on saadaval ka R-is!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Sissejuhatus -Nii kaugele oled uurinud, mis on regressioon, kasutades proovidataid kõrvitsahindade andmestikust, mida kasutame kogu selle õppetüki vältel. Sa oled ka visualiseerinud andmeid Matplotlibi abil. +Nii kaugele oled uurinud, mis on regressioon, lähtudes kõrvitsate hindade andmekogumist, mida kasutame kogu selle õppetüki vältel. Oled ka visualiseerinud seda Matplotlibiga. -Nüüd oled valmis süvenema sügavamalt regressioonisse masinõppes. Kuigi visualiseerimine aitab andmeid mõista, tuleb masinõppe tõeline jõud mudelite koolitamisest. Mudelid koolitatakse ajalooliste andmetega, et automaatselt tabada andmete seoseid, ja need võimaldavad prognoosida uusi tulemusi, mida mudel pole varem näinud. +Nüüd oled valmis regressiooni sügavamalt uurima masinõppes. Kuigi visualiseerimine võimaldab sul andmeid mõista, tuleb masinõppe tõeline võimsus mudelite _treenimisest_. Mudelid treenitakse ajalooliste andmete peal, et automaatselt tabada andmete sõltuvusi, ja need lubavad ennustada tulemusi uue andme kohta, mida mudel varem ei näinud. -Selles õppetükis õpid rohkem kahe regressioonitüübi kohta: _põhiline lineaarne regressioon_ ja _polünoomne regressioon_, koos mõne nende tehnika matemaatikaga. Need mudelid võimaldavad meil ennustada kõrvitsahindu sõltuvalt erinevatest sisendandmetest. +Selles õppetükis õpid rohkem kahest regressiooni tüübist: _lihtne lineaarne regressioon_ ja _polünoomne regressioon_, koos mõne matemaatikaga, mis neid tehnikaid aluseks on. Need mudelid lubavad ennustada kõrvitsate hinda sõltuvalt erinevatest sisendandmetest. [![Masinõpe algajatele - Lineaarse regressiooni mõistmine](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Masinõpe algajatele - Lineaarse regressiooni mõistmine") -> 🎥 Kliki pildil ülalpool, et vaadata lühike video ülevaade lineaarse regressiooni kohta. +> 🎥 Vajuta ülalolevale pildile, et vaadata lühike video lineaarse regressiooni ülevaatest. -> Kogu selle õppekava jooksul eeldame minimaalseid teadmisi matemaatikast ja püüame teha selle ligipääsetavaks teiste valdkondade tudengitele, seega pööra tähelepanu märkmetele, 🧮 kõrvalinfole, diagrammidele ja teistele õppimisvahenditele mõistmise hõlbustamiseks. +> Selle õppekava vältel eeldame matemaatikast vähest või üldse mitteoskust ning püüdleme selle poole, et see oleks ligipääsetav ka teiste alade tudengitele, seega hoia silm peal märkmetel, 🧮 arvutustel, diagrammidel ja muudel õppematerjalidel, mis aitavad mõistmist. ### Eelteadmised -Peaksid olema nüüd tuttav kõrvitsate andmete struktuuriga, mida me uurime. Selle leiad eellaadituna ja puhastatuna selle õppetüki _notebook.ipynb_ failist. Failis on kõrvitsahind kuvatud korvi kohta uues andmeraamis. Veendu, et suudaksid neid sülearvutieeskirju Visual Studio Code kernelites käivitada. +Nüüd peaksid olema tuttavaks saanud kõrvitsate andmete struktuuriga, mida uurime. Selle leiad eelnevalt laadituna ja puhastatuna selle õppetüki _notebook.ipynb_ failist. Seal on kõrvitsa hind toodud ühe busheli kohta uues andmekaadris. Veendu, et suudad käivitada neid märkmeid Visual Studio Code'i kerneli sees. ### Ettevalmistus -Meenutuseks, laadid neid andmeid, et esitada neile küsimusi. +Nagu meelde tuletuseks, laadid seda andmestikku, et saaksid selle kohta küsimusi esitada. -- Millal on parim aeg kõrvitsaid osta? -- Millist hinda võin oodata väikeste kõrvitsakastide eest? -- Kas peaksin ostma neid poolkorvi kaupa või 1 1/9-korviku hulka? -Jätkame selle andmestiku uurimist. +- Millal on parim aeg kõrvitsaid osta? +- Millist hinda võin oodata väikeste kõrvitsate kaubaaluse kohta? +- Kas peaksin ostma neid poolbusheli korvides või 1 1/9 busheli kastides? +Vaatleme seda andmestikku edasi. -Eelmises õppetükis lõid Pandase andmeraami ja täitsid selle osa originaalandmestikust, standardiseerides hinnad korvi kohta. Sellega suutsid koguda umbes 400 andmepunkti ja ainult sügiskuude kohta. +Eelnevas õppetükis lõid Pandase andmekaarvi ja täitsid selle originaalandmekogumi osaga, standardiseerides hinna busheli järgi. Nii toimides kogusid aga vaid umbes 400 andmepunkti ja ainult sügiskuude kohta. -Vaata andmeid, mis on eellaaditud selle õppetüki kaasnevas sülearvutis. Andmed on eellaaditud ja esimene hajuvdiagramm joonistatud näitamaks kuuandmeid. Võime saada rohkem üksikasju andmete olemuse kohta, neid rohkem puhastades. +Vaata andmeid, mis on eelnevalt laetud selle õppetüki kaasaegse märkme menüüsse. Andmed on eelnevalt laetud ja esialgne hajusdiagramm kuupäevade kohta joonistatud. Võib-olla saame andmete olemuse kohta rohkem detaili, kui need veelgi puhastada. ## Lineaarne regressioonijoon -Nagu õppisid õppetükis 1, on lineaarse regressiooni eesmärk joonistada joon, mis: +Nagu õppisid 1. õppetükis, on lineaarse regressiooni eesmärk: -- **Näitab muutujate seoseid**. Näitab muutujate omavahelist seost -- **Teeb ennustusi**. Teeb täpseid ennustusi, kus uus andmepunkt joonel paikneb. +- **Näidata muutujate seoseid.** Näidata seost muutujate vahel +- **Tee ennustusi.** Teha täpseid ennustusi, kuhu uus andmepunkt selle joone suhtes langeks -Tavaline on kasutada **väikseimruutude regressiooni**, et seda tüüpi joon joonistada. Mõiste "väikseim ruut" viitab protsessile, mille käigus minimeeritakse kogu vea summa mudelis. Iga andmepunkti jaoks mõõdame vertikaalse kauguse (nn residuaal) tegeliku punkti ja meie regressioonijoone vahel. +Tüüpiline on joonistada sellist joont **Vähimruutude regressioon** meetodiga. Mõiste "Least-Squares" viitab meetodile, kus minimeeritakse kogu mudeli viga. Iga andmepunkti kohta mõõdame vertikaalset kaugust (jäänukit) tegeliku punkti ja regressioonijoone vahel. -Me ruudutame need kaugused kahest põhjusest: +Need kaugused ruudutatakse kahe põhjusel: -1. **Suurus, mitte suund:** Soovime käsitleda viga -5 samaväärsena veaga +5. Ruudutamine muudab kõik väärtused positiivseks. +1. **Suuru üle suuna:** Soovime, et viga -5 oleks sama kui +5. Ruudutamine muudab kõik väärtused positiivseks. -2. **Outlierite karistamine:** Ruudutamine annab suurematele vigadele suurema kaalu, sundides joont jääma kaugel olevate punktide lähedusse. +2. **Hukkamõistmine väljud:** Suurematel vigadel on suurem kaal, mis sunnib joont jääma kaugete punktide lähedale. -Seejärel liidame kõik need ruudutatud väärtused kokku. Meie eesmärk on leida see konkreetne joon, kus see summa on minimaalne – seega nimi "väikseim ruut". +Seejärel liidame kõik ruutväärtused kokku. Meie eesmärk on leida joon, mille kõigi jäänukruutude summa on minimaalne — seepärast nimetatakse seda "Least-Squares". -> **🧮 Näita matemaatikat** +> **🧮 Näita mulle matemaatikat** +> +> Seda joont, mida kutsutakse _parima sobivuse jooneks_, saab väljendada [valemiga](https://en.wikipedia.org/wiki/Simple_linear_regression): > -> Seda joont, mida nimetatakse _parima sobivuse jooneks_, saab väljendada [valemiga](https://en.wikipedia.org/wiki/Simple_linear_regression): -> > ``` > Y = a + bX > ``` -> -> `X` on "selgitav muutuja". `Y` on "sõltuv muutuja". Joonise tõus on `b` ja `a` on y-telgi lõikepunkt, mis tähendab väärtust `Y`, kui `X = 0`. -> ->![tõusu arvutus](../../../../translated_images/et/slope.f3c9d5910ddbfcf9.webp) -> -> Esiteks arvuta tõus `b`. Infograafik autorilt [Jen Looper](https://twitter.com/jenlooper) -> -> Teisisõnu ja viidates meie kõrvitsate andmete algsele küsimusele: "prognoosi kõrvitsa hind korvi kohta kuude kaupa", võib `X` tähistada hinda ja `Y` müügikuud. -> ->![täienda valemit](../../../../translated_images/et/calculation.a209813050a1ddb1.webp) -> -> Arvuta Y väärtus. Kui maksad umbes 4 dollarit, peab olema aprill! Infograafik autorilt [Jen Looper](https://twitter.com/jenlooper) -> -> Matemaatika, mis arvutab joone, peab näitama joone tõusu, mis sõltub ka lõikepunktist ehk kus `Y` paikneb kui `X = 0`. -> -> Selle väärtuse arvutusmeetodi võid vaadata veebisaidil [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Samuti külasta [Väikseima ruudu kalkulaatorit](https://www.mathsisfun.com/data/least-squares-calculator.html), et näha, kuidas arvude väärtused joont mõjutavad. +> +> `X` on 'selgitav muutuja'. `Y` on 'sõltuv muutuja'. Joonet tähistab kalle `b` ja y-lõikepunkt `a`, mis näitab väärtust `Y`, kui `X = 0`. +> +>![kalle arvutamine](../../../../translated_images/et/slope.f3c9d5910ddbfcf9.webp) +> +> Esiteks arvuta kalle `b`. Infograafiku autor on [Jen Looper](https://twitter.com/jenlooper) +> +> Teisisõnu, ja viidates meie kõrvitsate andmestiku algsele küsimusele: "ennusta kõrvitsa hind busheli kohta kuu järgi", tähendab `X` hinda ja `Y` müügikuud. +> +>![võrrandi lõpetamine](../../../../translated_images/et/calculation.a209813050a1ddb1.webp) +> +> Arvuta `Y` väärtus. Kui maksad umbes 4 dollarit, peab olema aprill! Infograafiku autor on [Jen Looper](https://twitter.com/jenlooper) +> +> Jooni arvutav matemaatika peab näitama kallet, mis sõltub ka lõikepunktist ehk sellest, kus `Y` asub, kui `X = 0`. +> +> Võid vaadata arvutusmeetodit [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) veebisaidilt. Samuti külasta [Vähimruutude kalkulaatorit](https://www.mathsisfun.com/data/least-squares-calculator.html), et näha, kuidas arvude väärtused joont mõjutavad. ## Korrelatsioon -Veel üks mõiste, mida mõista, on **korrelatsioonikordaja** antud X ja Y muutujate vahel. Hajuvdiagrammi abil saad seda kiiresti visualiseerida. Diagramm, kus andmepunktid on ilusti joonel, näitab kõrget korrelatsiooni, aga hajuv diagramm, kus andmepunktid on kõikjal X ja Y vahel, näitab madalat korrelatsiooni. +Veel üks termin, mida tuleb mõista, on **korrelatsioonikordaja** antud `X` ja `Y` muutujate vahel. Hajusdiagrammiga saab selle kordaja kiiresti visualiseerida. Punktide laialivalgumine sirgjoonel näitab kõrget korrelatsiooni, aga kui punktid on kogu `X` ja `Y` vahel laiali, on korrelatsioon madal. -Hea lineaarne regressioonimudel on selline, millel on kõrge (lähemal 1 kui 0) korrelatsioonikordaja, kasutades väikseimruutude regressioonimeetodit koos regressioonijoonega. +Hea lineaarne regressioonimudel on selline, millel on suur (lähemal 1 kui 0) korrelatsioonikordaja, kasutades vähimruutude regressioonimeetodit ja regressioonijoont. -✅ Käivita selle õppetüki kaasas olev sülearvuti ja vaata kuhjumist kuu ja hinna vahel. Kas andmed, mis seovad kuu ja kõrvitsahinna müüki, tunduvad visuaalse hinnangu põhjal kõrge või madala korrelatsiooniga? Kas see muutub, kui kasutad üksikasjalikumat mõõdet kui `Month`, nt *aasta päeva* (st päevade arv aasta algusest)? +✅ Käivita selle õppetüki kaasasolev märkmik ja vaata kuupäeva ja hinna hajusdiagrammi. Kas sinu visuaalse hinnangu järgi on kõrvitsamüükude puhul kuu ja hinna seos pigem tugev või nõrk? Kas see muutub, kui kasutad kuupäeva asemel graniitsemat mõõdet, nt *päeva aastas* (päevade arv aasta algusest)? -Alljärgnevas koodis eeldame, et oleme andmed puhastanud ja saame andmeraami nimega `new_pumpkins`, mis sarnaneb järgmisele: +Järgnevas koodis eeldame, et andmed on puhastatud ja meil on andmekaader nimega `new_pumpkins`, mis sarnaneb sellise tabeliga: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Andmete puhastamise kood on saadaval [`notebook.ipynb`](notebook.ipynb) failis. Oleme teinud samad puhastusetapid nagu eelnevas õppetükis ja arvutanud `DayOfYear` veeru järgmise avaldisega: +> Andmete puhastamise kood on saadaval failis [`notebook.ipynb`](notebook.ipynb). Oleme teinud samad puhastusastmed nagu eelnevas õppetükis ning arvutanud `DayOfYear` veeru järgmiselt: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Nüüd kui sul on arusaam lineaarse regressiooni matemaatikast, loome regressioonimudeli, et näha, kas suudame ennustada, millisel kõrvitsapakendil on parim hind. Keegi, kes ostab kõrvitsaid püha kõrvitsapeenra jaoks, võib seda infot vajada, et oma ostusid optimeerida. + +Nüüd, kui mõistad lineaarse regressiooni matemaatikat, loome regressioonimudeli, et näha, kas suudame ennustada, milline kõrvitsapakend annab parima hinna. Mõni, kes ostab kõrvitsaid püha kõrvitsapeenra jaoks, võiks seda infot kasutada, et optimeerida kõrvitsaostu. ## Korrelatsiooni otsimine -[![Masinõpe algajatele - korrelatsiooni otsimine: võti lineaarse regressiooni jaoks](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Masinõpe algajatele - korrelatsiooni otsimine: võti lineaarse regressiooni jaoks") +[![Masinõpe algajatele - Korrelatsiooni otsimine: lineaarse regressiooni võti](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Masinõpe algajatele - Korrelatsiooni otsimine: lineaarse regressiooni võti") -> 🎥 Kliki pildil ülalpool, et vaadata lühike video ülevaade korrelatsioonist. +> 🎥 Vajuta ülalolevale pildile, et vaadata lühike video korrelatsioonist. -Eelmises õppetükis nägid ilmselt, et keskmine hind kuude lõikes näeb välja selline: +Eelmisest õppetükist oled ilmselt näinud, et kuude keskmine hind näeb välja selline: Keskmine hind kuude lõikes -See viitab sellele, et peaks olema mingi korrelatsioon ja saame proovida koolitada lineaarse regressiooni mudelit, et prognoosida seost `Month` ja `Price` vahel või `DayOfYear` ja `Price` vahel. Järgnevalt on hajuvdiagramm, mis näitab viimast seost: +See viitab sellele, et peaks olema mingi korrelatsioon ning me võime proovida treenida lineaarset regressioonimudelit, et ennustada seost `Month` ja `Price` vahel või `DayOfYear` ja `Price` vahel. Alljärgnev hajusdiagramm näitab viimast seost: -Hajuvdiagramm: hind versus aasta päev +Hajusdiagramm hind vs aasta päev -Vaatame, kas korrelatsioon olemas on, kasutades `corr` funktsiooni: +Vaatame, kas korrelatsioon eksisteerib, kasutades `corr` funktsiooni: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Tundub, et korrelatsioon on üsna väike, -0.15 kuu järgi ja -0.17 kuupäeva järgi, aga võib olla teine oluline seos. Näib, et on erinevad hinnaklastrid eri kõrvitsatüüpide jaoks. Selle hüpoteesi kinnitamiseks joonistame iga kategooria erinevas värvis. Edastades `scatter` funktsioonile `ax` parameetri, saame joonistada kõik punktid samale graafikule: + +Näib, et korrelatsioon on üsna väike: -0.15 kuu korral ja -0.17 aasta päeva korral, kuid võib olla veel mõni oluline seos. Tundub, et erinevatel kõrvitsatüüpidel on erinevad hinnaklastrid. Selle hüpoteesi kinnitamiseks joonistame iga kõrvitsatüübi erineva värviga. Edastades `ax` parameetri `scatter` funktsioonile, saame joonistada kõik punktid samale diagrammile: ```python ax=None @@ -139,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Hajusdiagramm hinna ja aasta päeva vahel, värviliselt -Hajuvdiagramm: hind versus aasta päev värvilinea - -Uuring viitab, et sort mõjutab hinda rohkem kui müügi kuupäev. Seda näeme ka tulpdiagrammil: +Meie uurimus viitab, et sort mõjub hinna üldisele käitumisele rohkem kui müügikuupäev. Seda näitab mugavalt ka tulpdiagramm: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Tulpdiagramm hindade kohta kasvatatavate sortide kaupa -Tulpdiagramm hinna ja sorti kohta - -Jätkame esialgu ainult ühe kõrvitsatüübi, 'pie type', uurimisega ja vaatame, kuidas müügikuupäev hindadele mõjub: +Keskendume praegu ühele kõrvitsatüübile, 'pie type', ja vaatame, millist mõju kuupäev hindadele avaldab: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Hajuvdiagramm hind versus aasta päev +Hajusdiagramm hinna ja aasta päeva vahel pie type kõrvitsate kohta -Kui nüüd arvutada korrelatsioon `Price` ja `DayOfYear` vahel `corr` funktsiooniga, saame midagi sellist nagu `-0.27` - mis tähendab, et prognoosimudeliga koolitamine on mõistlik. +Kui nüüd arvutada korrelatsioon `Price` ja `DayOfYear` vahel `corr` funktsiooniga, saame tulemuseks umbes `-0.27`, mis näitab, et mudeli treenimine ennustamiseks on mõistlik. -> Enne lineaarse regressioonimudeli koolitamist on oluline veenduda, et andmed on puhastatud. Lineaarne regressioon ei tööta hästi puuduvate väärtustega, seega on mõistlik need tühjad lahtrid eemaldada: +> Enne lineaarse regressioonimudeli treenimist on oluline veenduda, et andmestik on puhas. Lineaarne regressioon ei toimi hästi puuduva väärtusega, seega on mõistlik need tühjad lahtrid eemaldada: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Teine lähenemine oleks need puuduolevad väärtused täita vastava veeru keskmiste väärtustega. + +Teine variant oleks need tühjad väärtused asendada veeru keskmiste väärtustega. ## Lihtne lineaarne regressioon -[![Masinõpe algajatele - lineaarne ja polünoomne regressioon Scikit-learniga](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Masinõpe algajatele - lineaarne ja polünoomne regressioon Scikit-learniga") +[![Masinõpe algajatele - Lineaarne ja polünoomne regressioon Scikit-learniga](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Masinõpe algajatele - Lineaarne ja polünoomne regressioon Scikit-learniga") -> 🎥 Kliki pildil ülalpool, et vaadata lühike video ülevaade lineaarse ja polünoomse regressiooni kohta. +> 🎥 Vajuta ülalolevale pildile, et vaadata lühike video lineaarse ja polünoomse regressiooni teemal. -Lineaarse regressioonimudeli koolitamiseks kasutame **Scikit-learn**i teeki. +Lineaarse regressioonimudeli treenimiseks kasutame **Scikit-learn** teeki. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Alustame sisendväärtuste (omaduste) ja ootuspärase väljundi (sildi) eraldamisest eraldi numpy massiividesse: + +Alustame sisendi (omaduste) ja väljundi (sildi) eraldamisega eraldi numpy massiividesse: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Pane tähele, et pidime tegema `reshape` sisendandmetele, et lineaarse regressiooni pakett mõistaks neid õigesti. Lineaarne regressioon eeldab 2D-massiivi sisendit, kus iga rida vastab sisendomaduste vektorile. Meie juhul, kui meil on ainult üks sisend, vajame massiivi kujuga N×1, kus N on andmekogu suurus. -> Märka, et pidime kasutama `reshape` meetodit sisendandmetel, et Linear Regression pakett mõistaks seda õigesti. Lineaarne regressioon ootab 2-maatriksit sisendina, kus iga rida on vektor sisendomadustest. Kuna meil on ainult üks sisend, vajame N×1 kujuga massiivi, kus N on andmestiku suurus. - -Seejärel tuleb andmestik jagada treening- ja testandmestikeks, et saaksime mudelit pärast koolitamist valideerida: +Seejärel peame jagama andmed treening- ja testandmeteks, et saaksime mudelit treeningu järel testida: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Lõpuks võtab lineaarse regressioonimudeli treenimine vaid kaks koodirida. Määratleme `LinearRegression` objekti ning sobitame selle meie andmetega `fit` meetodi abil: + +Lõpuks võtab maaline lineaarse regressioonimudeli treenimine vaid kaks kodeerimisrida. Definieren `LinearRegression` objekti ja sobitame selle andmetega `fit` meetodiga: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` objekt pärast `fit`-imist sisaldab regressiooni kõiki koefitsiente, millele saab ligi `.coef_` omaduse kaudu. Meie puhul on ainult üks koefitsient, mis peaks olema umbes `-0.017`. See tähendab, et hinnad näivad aja jooksul veidi langevat, kuid mitte väga palju, umbes 2 senti päevas. Meile on ka võimalik juurdepääs regressiooni lõikepunktile Y-teljel, kasutades `lin_reg.intercept_` - see on meie puhul umbes `21`, mis näitab hinna alguses aasta alguses. +`LinearRegression` objekt pärast sobitamist (`fit`) sisaldab kõiki regressiooni koefitsiente, millele pääseb ligi omaduse `.coef_` kaudu. Meie puhul on ainult üks koefitsient, mis peaks olema umbes `-0.017`. See tähendab, et hinnad näivad aja jooksul veidi langemas, aga mitte liiga palju, umbes 2 senti päevas. Saame ka regressioonijoonise lõikepunkti Y-teljega vaadata, kasutades `lin_reg.intercept_` - see on meie puhul umbes `21`, mis näitab hinna taset aasta alguses. -Selleks, et näha, kui täpne meie mudel on, võime prognoosida hindu testiandmestikul ja siis mõõta, kui lähedal meie ennustused on oodatud väärtustele. Seda saab teha ruutkeskmise vea (RMSE) mõõdiku abil, mis on kõigi ruutude erinevuste keskmise ruutjuur oodatud ja ennustatud väärtuste vahel. +Selleks, et näha, kui täpne meie mudel on, võime prognoosida testandmete põhjal hindu ja seejärel mõõta, kui lähedal on meie prognoosid oodatud väärtustele. Seda saab teha ruutkeskmise vea (RMSE) meetrika abil, mis on kõigi ootuspäraste ja prognoositud väärtuste ruutude keskmise ruutjuur. ```python pred = lin_reg.predict(X_test) @@ -216,36 +216,37 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Meie viga paistab olevat umbes 2 punkti, mis on ~17%. Mitte väga hea. Mudeli kvaliteedi teine näitaja on **määramise koefitsient**, mida saab saada järgmiselt: +Meie viga näib olevat umbes 2 punkti ringis, mis on ~17%. Mitte väga hea. Teine mudeli kvaliteedi näitaja on **määramiskordaja**, mida saab arvutada järgnevalt: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Kui väärtus on 0, tähendab see, et mudel ei arvesta sisendiandmeid ja käitub kui *kõige halvem lineaarne ennustaja*, mis on lihtsalt tulemuse keskmine väärtus. Väärtus 1 tähendab, et me suudame täiuslikult ennustada kõiki oodatud väljundeid. Meie puhul on koefitsient umbes 0.06, mis on üsna madal. -Võime ka joonistada testandmed koos regressioonijoonega, et paremini näha, kuidas regressioon meie juhul töötab: +Kui väärtus on 0, tähendab see, et mudel ei võta sisendandmeid arvesse ja toimib nagu *halvim lineaarne prognoosija*, mis on lihtsalt tulemi keskmine väärtus. Väärtus 1 tähendab, et suudame ideaalselt prognoosida kõiki oodatud väljundeid. Meie puhul on kordaja umbes 0.06, mis on üsna madal. + +Saame ka testandmed koos regressioonijoonisega joonistada, et paremini näha, kuidas regressioon meie puhul toimib: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` -Linear regression +Lineaarne regressioon ## Polünoomne regressioon -Teine lineaarse regressiooni tüüp on polünoomne regressioon. Kuigi mõnikord on muutujate vahel lineaarne seos - kui kõrvitsa maht suureneb, tõuseb hind - vahel ei saa neid seoseid joonistada tasapinnana või sirgjoonena. +Teine lineaarse regressiooni tüüp on polünoomne regressioon. Kuigi mõnikord on muutujate vahel lineaarne seos — suurem kõrvits mahu poolest tähendab kõrgemat hinda — siis mõnikord ei saa neid seoseid joonistada tasapinnana ega sirgel joonel. -✅ Siin on [veel mõned näited](https://online.stat.psu.edu/stat501/lesson/9/9.8) andmetest, mille jaoks võiks sobida polünoomne regressioon +✅ Siin on [mõned muud näited](https://online.stat.psu.edu/stat501/lesson/9/9.8) andmetest, mille puhul võiks kasutada polünoomset regressiooni -Vaadake uuesti suhet kuupäeva ja hinna vahel. Kas see hajuvusdiagramm peaks tingimata olema analüüsitud sirgjoonena? Kas hinnad ei saa kõikuda? Sellisel juhul võite proovida polünoomset regressiooni. +Vaatame uuesti kuupäeva ja hinna suhet. Kas see hajuvusdiagramm tundub tingimata sobivat sirgel joonel analüüsimiseks? Kas hinnad ei võiks kõikuda? Sellisel juhul võite proovida polünoomset regressiooni. -✅ Polünoomid on matemaatilised avaldised, mis võivad koosneda ühest või mitmest muutujast ja koefitsiendist +✅ Polünoomid on matemaatilised avaldised, mis võivad koosneda ühest või mitmest muutujast ja koefitsientidest -Polünoomne regressioon loob kõverjoone, mis sobib paremini mitte-lineaarsete andmetega. Meie puhul, kui lisame sisendandmetesse ruudus oleva `DayOfYear` muutuja, peaksime suutma sobitada andmed paraboolkõveraga, millel on teatud aasta jooksul minimaalne punkt. +Polünoomne regressioon loob kõverjoone, et paremini sobitada mittelineaarseid andmeid. Meie puhul, kui lisada sisendandmetesse ruuduline `DayOfYear` muutuja, peaksime suutma sobitada andmed parabolic kõveraga, millel on aasta jooksul mingi miinimum. -Scikit-learn sisaldab kasulikku [torujuhtme (pipeline) API-t](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), et ühendada erinevad andmetöötlusetapid. **Torujuhtme** moodustab **estimatsioonide** ahel. Meie puhul loome torujuhtme, mis esmalt lisab polünoomsed tunnused mudelile ja siis treenib regressiooni: +Scikit-learn sisaldab abistavat [pipeline API-d](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), millega saab ühendada erinevad andmetöötluse etapid. **Pipeline** on **hinnangute** ahel. Meie puhul loome pipeline‘i, mis esmalt lisab mudelile polünoomsed tunnused ja seejärel treenib regressiooni: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` kasutamine tähendab, et kaasame kõik teise astme polünoomid sisendandmetest. Meie puhul tähendab see vaid `DayOfYear`2, aga kahe sisendmuutuja X ja Y korral lisab see X2, XY ja Y2. Võime ka kasutada kõrgema astme polünoome, kui soovime. +`PolynomialFeatures(2)` tähendab, et kaasatakse kõik teise astme polünoomid sisendandmetest. Meie puhul tähendab see ainult `DayOfYear`2, aga kahe sisendmuutuja X ja Y puhul lisab see X2, XY ja Y2. Võime kasutada ka kõrgema astme polünoome, kui soovime. + +Pipelines saab kasutada samamoodi nagu algset `LinearRegression` objekti, st me saame pipeline‘i `fit`-ida ja seejärel kasutada `predict` prognooside saamiseks: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Sujuva ligikaudse kõvera joonistamiseks kasutame `np.linspace`, et luua sisendväärtuste ühtlane vahemik, mitte joonistada otse järjestamata testandmete peal (mis annaks kõvera siksakiliselt): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Torujuhtmeid võib kasutada samamoodi nagu algset `LinearRegression` objekti, st võime `fit` torujuhtme ja seejärel kasutada `predict`, et saada ennustustulemused. Siin on graafik, mis näitab testiandmeid ja ligikaudset kõverat: +Siin on graafik, mis näitab testandmeid ja ligikaudset kõverat: -Polynomial regression +Polünoomne regressioon -Polünoomse regressiooni kasutades saame veidi madalama MSE ja kõrgema määramise, kuid mitte oluliselt. Peame arvesse võtma ka muid tunnuseid! +Polünoomse regressiooni kasutades saame veidi madalama RMSE ja kõrgema määramiskordaja, kuid mitte oluliselt. Peame arvesse võtma ka muid tunnuseid! -> Näete, et madalaimad kõrvitsahinnad esinevad kuskil Halloween’i ajal. Kuidas seda seletate? +> Näete, et madalaimad kõrvitsa hinnad esinevad kuskil ümber Halloween’i. Kuidas seda seletada? -🎃 Palju õnne, just lõite mudeli, mis aitab prognoosida pirukakõrvitsate hinda. Tõenäoliselt saate sama protseduuri korrata kõigi kõrvitsatüüpide puhul, kuid see oleks tüütu. Õpime nüüd, kuidas mudelis arvesse võtta kõrvitsatüüpi! +🎃 Palju õnne, sa just lõid mudeli, mis aitab ennustada pirukakõrvitsa hinda. Tõenäoliselt saad sama protseduuri korrata ka teiste kõrvitsatüüpide jaoks, kuid see oleks tülikas. Õpime nüüd, kuidas mudelis arvesse võtta kõrvitsatüüpi! ## Kategoorilised tunnused -Ideaalis tahame suuta erinevate kõrvitsatüüpide hindu ennustada sama mudeli abil. Kuid `Variety` veerg on mõnevõrra erinev veergudest nagu `Month`, sest see sisaldab mittenumerilisi väärtusi. Selliseid veerge nimetatakse **kategoorilisteks**. +Ideaalmaailmas tahame ennustada hindu erinevate kõrvitsatüüpide jaoks sama mudeli abil. Kuid veerg `Variety` erineb veergudest nagu `Month`, kuna see sisaldab mittesisulisi (mittearvulisi) väärtusi. Neid veerge nimetatakse **kategoorilisteks**. -[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![Algajatele masinõppes - Kategooriliste tunnuste prognoos lineaarse regressiooniga](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "Algajatele masinõppes - Kategooriliste tunnuste prognoos lineaarse regressiooniga") -> 🎥 Klõpsake ülaloleval pildil, et vaadata lühivideot kategooriliste tunnuste kasutamisest. +> 🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot kategooriliste tunnuste kasutamisest. -Siin näete, kuidas keskmine hind sõltub sordist: +Siin näed, kuidas keskmine hind sõltub tüvest: -Average price by variety +Keskmine hind vastavalt tüübile -Sordi arvestamiseks peame esmalt selle teisendama numbriliseks, ehk **kodeerima**. Selleks on mitu võimalust: +Tüübi arvestamiseks peame esmalt selle ümber kodeerima numbriliseks ehk **kodeerima**. Selleks on mitu võimalust: -* Lihtne **numbriline kodeerimine** loob tabeli erinevatest sortidest ja seejärel asendab sordinime indeksiga selles tabelis. See pole lineaarse regressiooni puhul parim mõte, sest lineaarne regressioon võtab indeksinumbri tegeliku numbrilise väärtuse ja lisab selle tulemile, korrutades selle mõne koefitsiendiga. Meie puhul on seos indeksinumbri ja hinna vahel selgelt mittelineaarne, isegi kui tagada indeksite spetsiifiline järjekord. -* **Ühe-kuuma kodeerimine (one-hot encoding)** asendab `Variety` veeru nelja erineva veeruga, iga kõrvitsasordi jaoks eraldi. Igas veerus on `1`, kui vastaval real on see sort, ja muidu `0`. See tähendab, et lineaarse regressiooni puhul on neli koefitsienti, üks iga kõrvitsatüübi kohta, mis vastutab selle sordi "algushinna" (või pigem "lisahinna") eest. +* Lihtne **numbriline kodeerimine** koostab tabeli erinevatest tüvedest ja asendab tüve nime indeksiga selles tabelis. See pole lineaarse regressiooni jaoks parim, sest lineaarne regressioon võtab indeksnumbrilise väärtuse ja lisab selle tulemi koefitsiendi korrutisena. Meie puhul seos indeksi numbri ja hinna vahel on selgelt mittelineaarne, isegi kui järjekord on mingil viisil korrektselt määratud. +* **One-hot kodeerimine** asendab veeru `Variety` nelja erineva veeruga, ühe iga tüve jaoks. Igas veerus on `1`, kui vastaval real on see tüüp, ja `0` muul juhul. See tähendab, et lineaarse regressiooni jaoks on neli koefitsienti, üks iga kõrvitsatüübi kohta, mis määravad selle tüve "algse hinna" (või pigem "lisahinna"). -Allolev kood näitab, kuidas sort ühekoodina kodeerida: +Alljärgnev kood näitab, kuidas saame tüve one-hot kodeerida: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Lineaarse regressiooni treenimiseks, kasutades ühe-kuuma kodeeritud sorti sisendina, peame lihtsalt õigesti initsialiseerima `X` ja `y` andmed: +Et treenida lineaarset regressiooni one-hot kodeeritud tüvega sisendina, peame lihtsalt õigesti algatama andmed `X` ja `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Ülejäänud kood on sama, mida kasutasime ees lineaarse regressiooni treenimiseks. Kui proovite, näete, et ruutkeskmine viga on umbes sama, kuid saame palju kõrgema määramise koefitsiendi (~77%). Veelgi täpsemate ennustuste saamiseks võime lisada ka teisi kategoorilisi tunnuseid ja numbrilisi tunnuseid nagu `Month` või `DayOfYear`. Et saada üks suur tunnuste massiiv, võime kasutada `join`: +Ülejäänud kood on sama, mida kasutasime ülal LinearRegression treenimiseks. Kui proovite seda, näete, et ruutkeskmine viga on umbes sama, kuid määramiskordaja on palju kõrgem (~77%). Veelgi täpsemate prognooside saamiseks võime lisaks käsitleda veel kategoorilisi tunnuseid ning ka numbrilisi tunnuseid, nagu `Month` või `DayOfYear`. Et saada üks suur tunnuste massiiv, võime kasutada `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,11 +342,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Siin arvestame ka `City` ja `Package` tüüpi, mis annab meile MSE 2.84 (10%) ja määramise 0.94! +Siin arvestame ka `City` ja `Package` tüüpi, mis annab meile RMSE 2.84 (10.5%) ja määramiskordaja 0.94! -## Kõige kokku panek +## Kõik kokku -Parima mudeli tegemiseks võime kasutada kombineeritud (ühe-kuuma kodeeritud kategoorilised + numbrilised) andmeid eelmisest näitest koos polünoomse regressiooniga. Siin on mugavaks kasutamiseks kogu kood: +Parima mudeli tegemiseks võime kasutada kombineeritud (one-hot kodeeritud kategoorilised + numbrilised) andmeid eelnevast näitest koos polünoomse regressiooniga. Siin on mugav täiskood: ```python # seadista treeningandmed @@ -336,51 +359,51 @@ y = new_pumpkins['Price'] # tee treening- ja testandmete jagamine X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# seadista ja treeni andmevoog +# seadista ja treeni torujuhe pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ennusta tulemused testandmete jaoks +# ennusta testandmete tulemusi pred = pipeline.predict(X_test) -# arvuta keskmine ruutviga ja määramise koefitsient -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# arvuta RMSE ja määramise kordaja +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -See peaks andma peaaegu 97% määramise koefitsiendi ja MSE=2.23 (~8% prognoosiviga). +See peaks andma parima määramiskordaja ligikaudu 97% ja RMSE=2.23 (~8% prognoosiviga). -| Mudel | MSE | Määramine | -|-------|-----|-----------| +| Mudel | RMSE | Määramiskordaja | +|-------|-----|-----------------| | `DayOfYear` lineaarne | 2.77 (17.2%) | 0.07 | | `DayOfYear` polünoomne | 2.73 (17.0%) | 0.08 | | `Variety` lineaarne | 5.24 (19.7%) | 0.77 | | Kõik tunnused lineaarne | 2.84 (10.5%) | 0.94 | | Kõik tunnused polünoomne | 2.23 (8.25%) | 0.97 | -🏆 Väga tubli! Sa lõid ühe õppetunni jooksul neli regressioonimudelit ja parandasid mudeli kvaliteeti 97%-ni. Regressiooni lõpus peatükis õpid ka logistilise regressiooni kategooriate määramiseks. +🏆 Väga hästi! Sa lõid ühe õppetunni jooksul neli regressioonimudelit ja parandasid mudeli kvaliteedi 97%-ni. Lõpuks regressiooni osas õpime logistilise regressiooni, et kategooriaid määrata. --- -## 🚀Väljakutse +## 🚀 Väljakutse -Testeeri selles märkmikus mitut erinevat muutujat ja vaata, kuidas korrelatsioon mõjutab mudeli täpsust. +Testi selles märkmikus mitut erinevat muutujat, et näha, kuidas korrelatsioon mõjutab mudeli täpsust. ## [Loengu järel test](https://ff-quizzes.netlify.app/en/ml/) -## Ülevaade ja iseseisev õppimine +## Kordamine ja iseseisev õppimine -Selles õppetükis õppisime lineaarse regressiooni kohta. On ka teisi olulisi regressiooniliike. Loe stepwise, ridge, lasso ja elasticnet tehnikate kohta. Hea kursus õppimiseks on [Stanfordi statistikõppe kursus](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning). +Selles õppetükis õppisime lineaarset regressiooni. On ka teisi olulisi regressioonitüüpe. Loe Stepwise, Ridge, Lasso ja Elasticnet meetodite kohta. Hea kursus lisatud teadmise saamiseks on [Stanfordi statistilise õppimise kursus](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Kodune ülesanne +## Kodune ülesanne -[Ehita mudel](assignment.md) +[Loo mudel](assignment.md) --- -**Vastutusest loobumine**: -See dokument on tõlgitud kasutades AI tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi püüame täpsust, palun arvestage, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleks pidada autoriteetseks allikaks. Kriitilise informatsiooni puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta selle tõlkega seotud võimalike arusaamatuste või valesti tõlgenduste eest. +**Lahtiütlus**: +See dokument on tõlgitud kasutades tehisintellekti tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi püüame tagada täpsust, palun pidage meeles, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Originaaldokument selle algkeeles tuleks pidada autoriteetseks allikaks. Olulise info puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tingitud arusaamatuste või väärtõlgenduste eest. \ No newline at end of file diff --git a/translations/et/2-Regression/3-Linear/solution/notebook.ipynb b/translations/et/2-Regression/3-Linear/solution/notebook.ipynb index f45791aea0..f8077a757e 100644 --- a/translations/et/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/et/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineaarne ja polünoomne regressioon kõrvitsate hinnastamiseks - Õppetund 3\n", + "## Lineaarne ja polünoomne regressioon kõrvitsahindade jaoks - õppetund 3\n", "\n", - "Laadi vajalikud teegid ja andmestik. Muuda andmed andmeraamiks, mis sisaldab andmete alamhulka:\n", + "Laadige vajalikud teegid ja andmestik. Konverteerige andmed andmeraamistikuks, mis sisaldab alamkogumit andmetest:\n", "\n", - "- Vali ainult kõrvitsad, mille hind on määratud bushelite järgi\n", - "- Konverteeri kuupäev kuuks\n", - "- Arvuta hind kõrge ja madala hinna keskmisena\n", - "- Muuda hind, et see kajastaks hinda bushelite koguse järgi\n" + "- Võtke ainult kõrvitsad, mille hinnad on setu kohta\n", + "- Konverteerige kuupäev kuuks\n", + "- Arvutage hind kõrgete ja madalate hindade keskmisena\n", + "- Konverteerige hind nii, et see kajastaks hinda setu koguse järgi\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hajuvälja diagram tuletab meelde, et meil on kuuandmed ainult augustist detsembrini. Tõenäoliselt vajame rohkem andmeid, et teha järeldusi lineaarsel viisil.\n" + "Hajuvusdiagramm tuletab meelde, et meil on ainult augustist detsembrini kuupõhised andmed. Tõenäoliselt vajame tõenäosuse joonistamiseks lineaarse järelduse tegemiseks rohkem andmeid.\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tundub, et korrelatsioon on üsna väike, kuid on olemas mingi muu olulisem seos - sest ülaltoodud graafiku hinnapunktid näivad moodustavat mitu eristatavat klastrit. Teeme graafiku, mis näitab erinevaid kõrvitsasorte:\n" + "Tundub, et korrelatsioon on üsna väike, kuid on olemas mõni muu olulisem seos - sest ülaltoodud joonisel tunduvad hinnapunktidel olevat mitu erinevat klastrit. Teeme joonise, mis näitab erinevaid kõrvitsatüüpe:\n" ] }, { @@ -538,7 +538,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Praegu keskendume ainult ühele sordile - **pirukatüüp**.\n" + "Praegu keskendume ainult ühele tüübile - **pirukate tüüp**.\n" ] }, { @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Joone tõusu saab määrata lineaarse regressiooni koefitsientide abil:\n" + "Joonise tõusukord saab määrata lineaarsest regressioonikordajatest:\n" ] }, { @@ -722,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polünoomiline regressioon\n", + "### Polünoomne regressioon\n", "\n", - "Mõnikord on tunnuste ja tulemuste vaheline seos olemuslikult mittelineaarne. Näiteks võivad kõrvitsahinnad talvel (kuud=1,2) olla kõrged, suvel (kuud=5-7) langeda ja seejärel taas tõusta. Lineaarne regressioon ei suuda seda seost täpselt leida.\n", + "Mõnikord on seos tunnuste ja tulemuste vahel olemuslikult mitte-lineaarne. Näiteks kõrvitsa hinnad võivad talvel (kuud=1,2) olla kõrged, seejärel suvel (kuud=5-7) langeda ning siis uuesti tõusta. Lineaarne regressioon ei suuda seda suhet täpselt leida.\n", "\n", - "Sellisel juhul võiks kaaluda täiendavate tunnuste lisamist. Lihtne viis on kasutada sisendtunnustest polünoome, mis viib **polünoomilise regressioonini**. Scikit Learn'is saame polünoomilised tunnused automaatselt ette arvutada, kasutades torustikke:\n" + "Sellisel juhul võime kaaluda lisatunnuste lisamist. Lihtne viis on kasutada sisendmuutujate polünoome, mis annab tulemuseks **polünoomse regressiooni**. Scikit Learnis saame polünoomsed tunnused automaatselt eel-arvutada, kasutades pipeline’e:\n" ] }, { @@ -781,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Koodimine erinevatele sortidele\n", + "### Kodeerimise variatsioonid\n", "\n", - "Ideaalis soovime prognoosida erinevate kõrvitsasortide hindu sama mudeli abil. Selleks, et sorti arvesse võtta, peame esmalt selle numbriliseks vormiks teisendama ehk **kodeerima**. Selleks on mitmeid viise:\n", + "Ideaalmaailmas tahame suuta prognoosida erinevate kõrvitsa sortide hindu sama mudeli abil. Selleks, et sorti arvesse võtta, peame esmalt selle arvulisse vormi teisendama ehk **kodeerima**. Selleks on mitu võimalust:\n", "\n", - "* Lihtne numbriline kodeerimine, mis loob tabeli erinevatest sortidest ja asendab seejärel sordinime selle tabeli indeksiga. See pole lineaarse regressiooni jaoks parim lahendus, kuna lineaarne regressioon arvestab indeksi numbrilist väärtust, mis tõenäoliselt ei korreleeri numbriliselt hinnaga.\n", - "* Üks-ühele kodeerimine (one-hot encoding), mis asendab `Variety` veeru nelja erineva veeruga, üks iga sordi jaoks. Need veerud sisaldavad väärtust 1, kui vastav rida kuulub antud sordile, ja 0, kui mitte.\n", + "* Lihtne arvuline kodeerimine, mis loob tabeli erinevate sortidega ja asendab seejärel sordinime selle tabeli indeksiga. See pole lineaarse regressiooni jaoks parim idee, sest lineaarne regressioon võtab indeksite arvulist väärtust arvesse ning see väärtus ei pruugi numbriliselt korreleeruda hinnaga.\n", + "* One-hot kodeerimine, mis asendab `Variety` veeru 4 erineva veeruga, üks iga sorti jaoks, milles on 1, kui vastav rida kuulub sellesse sorte ja 0 muul juhul.\n", "\n", - "Allolev kood näitab, kuidas saame sordi üks-ühele kodeerida:\n" + "Alljärgnev kood näitab, kuidas saab sorte one-hot kodeerida:\n" ] }, { @@ -944,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineaarne regressioon sordile\n", + "### Lineaarne regressioon sortide kaupa\n", "\n", - "Kasutame nüüd sama koodi nagu ülal, kuid sisendina kasutame ühekuumkooditud sorti `DayOfYear` asemel:\n" + "Nüüd kasutame sama koodi nagu ülal, kuid `DayOfYear` asemel kasutame sisendina meie ühesoojuskodeeritud sorti:\n" ] }, { @@ -994,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Me võime proovida kasutada ka teisi tunnuseid samal viisil ning kombineerida neid arvuliste tunnustega, nagu `Month` või `DayOfYear`:\n" + "Me võime proovida ka teisi omadusi samal viisil ning kombineerida neid numbriliste omadustega, nagu `Month` või `DayOfYear`:\n" ] }, { @@ -1025,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polünoomiline regressioon\n", + "### Polünoomne regressioon\n", "\n", - "Polünoomilist regressiooni saab kasutada ka kategooriliste tunnuste puhul, mis on kodeeritud ühekuumkoodimisega. Polünoomilise regressiooni treenimiseks vajalik kood oleks sisuliselt sama, mida oleme ülalpool näinud.\n" + "Polünoomset regressiooni saab kasutada ka ühe-kuuma kodeerimisega kategoriaalsete tunnustega. Koodi polünoomse regressiooni treenimiseks oleks sisuliselt sama, mida oleme eespool näinud.\n" ] }, { @@ -1074,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Lahtiütlus**: \nSee dokument on tõlgitud AI tõlketeenuse [Co-op Translator](https://github.com/Azure/co-op-translator) abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.\n" + "---\n\n\n**Vastutusest loobumine**: \nSee dokument on tõlgitud kasutades tehisintellektil põhinevat tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi püüdleme täpsuse poole, palun arvestage, et automatiseeritud tõlked võivad sisaldada vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleb lugeda autoriteetse allikana. Olulise teabe puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta ühegi arusaamatuste või valesti mõistmiste eest, mis võivad tekkida selle tõlke kasutamisest.\n\n" ] } ], @@ -1104,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-10-11T12:21:09+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "et" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pcm/.co-op-translator.json b/translations/pcm/.co-op-translator.json index f944bd0e4b..485cdb0cdf 100644 --- a/translations/pcm/.co-op-translator.json +++ b/translations/pcm/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "pcm" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-11-18T18:26:10+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:26:50+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "pcm" }, @@ -90,8 +90,8 @@ "language_code": "pcm" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:18:55+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:26:27+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "pcm" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "pcm" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:22:54+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "pcm" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-11-18T18:38:18+00:00", diff --git a/translations/pcm/1-Introduction/4-techniques-of-ML/README.md b/translations/pcm/1-Introduction/4-techniques-of-ML/README.md index 0ed2bd7489..db8b70bbb8 100644 --- a/translations/pcm/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/pcm/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # Techniques of Machine Learning -Di process wey dem dey use build, use, and maintain machine learning models and di data wey dem dey use no be di same as oda development workflows. For dis lesson, we go break di process down, and show di main techniques wey you need sabi. You go: +Di process wey dey build, use, and maintain machine learning models and di data dem use na different kin process from plenty oda development workflows. For dis lesson, we go clear di process, and show di main techniques wey you need sabi. You go: -- Understand di processes wey dey under machine learning for high level. -- Check base concepts like 'models', 'predictions', and 'training data'. +- Understand di processes wey machine learning dey follow for high level. +- Explore base concepts like 'models', 'predictions', and 'training data'. ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Click di image wey dey up to watch short video wey explain dis lesson. +> 🎥 Click di image up dere for short video wey go run through dis lesson. ## Introduction -For high level, di work wey dem dey do to create machine learning (ML) processes get plenty steps: +For high level, di skill of creating machine learning (ML) processes get plenty steps: -1. **Decide di question**. Most ML processes dey start by asking question wey no fit get answer with simple conditional program or rules-based engine. Dis kind question dey usually about predictions based on data wey dem collect. -2. **Collect and prepare data**. To fit answer your question, you need data. Di quality and sometimes di quantity of your data go determine how well you fit answer di question. To see di data well, you go need visualize am. Dis phase still include how you go divide di data into training and testing group to build di model. -3. **Choose training method**. Based on your question and di kind data wey you get, you go choose how you wan train di model to fit reflect di data well and make correct predictions. Dis part of ML process need special skill and sometimes plenty trial and error. -4. **Train di model**. With your training data, you go use different algorithms to train di model to sabi di patterns wey dey di data. Di model fit use internal weights wey dem fit adjust to focus on some parts of di data to make di model better. -5. **Evaluate di model**. You go use data wey di model never see before (your testing data) to check how di model dey perform. -6. **Parameter tuning**. Based on how di model perform, you fit start di process again with different parameters or variables wey dey control di behavior of di algorithms wey dem use train di model. -7. **Predict**. Use new inputs to test di accuracy of your model. +1. **Decide on the question**. Most ML processes dey start by asking question wey conditional program or rules-based engine no fit answer easily. These questions dey usually about predictions wey base on data wey dem collect. +2. **Collect and prepare data**. To fit answer your question, you need data. Di quality and sometimes di quantity of your data go determine how well you fit answer your question. To visualize data na important part of dis phase. Dis phase also get splitting di data into training and testing group to build model. +3. **Choose a training method**. Based on your question and di kind data wey you get, you gats choose how you go train model to best represent your data and make correct predictions. Dis na di part of ML process wey need special skill and sometimes plenty trial and error. +4. **Train the model**. Use your training data, you go use algorithms train di model to recognize patterns inside di data. Di model fit get internal weights wey you fit adjust to focus on some parts of di data pass oda parts to build better model. +5. **Evaluate the model**. Use data wey di model never see before (your testing data) to check how di model dey perform. +6. **Parameter tuning**. Based on how di model perform, you fit repeat di process using different parameters or variables wey control di algorithms behaviour wey train di model. +7. **Predict**. Use new inputs to test how correct your model predictions be. -## Wetin you go ask? +## Wetin question to ask -Computers sabi well well how to find hidden patterns for data. Dis skill dey help researchers wey get questions about one area wey no fit get answer with conditionally-based rules engine. For example, if dem wan calculate di life expectancy of smokers vs non-smokers, data scientist fit create rules for am. +Computa sabi find hidden patterns inside data well well. Dis tin dey help researchers wey get questions about domain wey no easy to answer by conditional rules engine. For example, data scientist fit fit handcrafted rules for mortality between smokers and non-smokers for actuarial task. -But if di question get plenty variables, ML model fit dey more efficient to predict future life expectancy based on past health history. Another example fit be to predict weather for April for one place based on data like latitude, longitude, climate change, how close di place dey to di ocean, jet stream patterns, and more. +But if many other variables enter di matter, ML model fit balance well to predict future mortality from past health history. Another example be forecasting weather for April for one place based on latitude, longitude, climate change, near ocean, jet stream patterns, and more. -✅ Dis [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) about weather models dey give historical perspective on how dem dey use ML for weather analysis. +✅ Dis [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) about weather models get historical view of how dem dey use ML for weather analysis. -## Before you start to build +## Pre-building tasks -Before you start to build your model, you go need do some tasks. To test your question and form hypothesis based on di model predictions, you go need identify and set some things. +Before you start to build model, you gots to finish some tasks. To test your question and form hypothesis from model predictions, you need to identify and arrange some elements. ### Data -To fit answer your question well, you need plenty data wey dey correct. You go do two things for dis stage: +To fit answer your question for sure, you need plenty data wey correct kind. Two tins you gots to do for here: -- **Collect data**. Remember di lesson wey we talk about fairness for data analysis, collect your data well. Know di source of di data, any bias wey fit dey inside, and write down where you get am from. -- **Prepare data**. Di process to prepare data get steps. You fit need join data together and normalize am if e come from different sources. You fit improve di quality and quantity of di data by converting strings to numbers (like we do for [Clustering](../../5-Clustering/1-Visualize/README.md)). You fit still generate new data from di original one (like we do for [Classification](../../4-Classification/1-Introduction/README.md)). You fit clean and edit di data (like we go do before di [Web App](../../3-Web-App/README.md) lesson). Finally, you fit need randomize and shuffle di data, depending on di training techniques. +- **Collect data**. Remember di lesson on fairness for data analysis, collect your data carefully. Know where di data come from, any biases inside, and write down where e originate. +- **Prepare data**. Data preparation get many steps. You fit combine data and normalize if e come from different sources. You fit improve data quality and quantity with methods like changing strings to numbers (like we do for [Clustering](../../5-Clustering/1-Visualize/README.md)). You fit make new data from original data (like we do for [Classification](../../4-Classification/1-Introduction/README.md)). You fit clean and edit data (like before [Web App](../../3-Web-App/README.md) lesson). Finally, you fit randomize and shuffle am, depend on your training techniques. -✅ After you don collect and process your data, check if di shape of di data go fit help you answer di question wey you wan solve. E fit be say di data no go work well for di task, like we see for our [Clustering](../../5-Clustering/1-Visualize/README.md) lessons! +✅ After you don collect and process your data, check if di shape of am fit answer your question. Sometimes data no go perform well for your task, like we see for our [Clustering](../../5-Clustering/1-Visualize/README.md) lessons! ### Features and Target -[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) na measurable property of your data. For many datasets, e dey show as column heading like 'date', 'size', or 'color'. Your feature variable, wey dem dey usually represent as `X` for code, na di input variable wey dem go use train di model. +[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) na measurable property for your data. For many dataset, e dey show as column header like 'date' 'size' or 'color'. Your feature variable, most time dem call am `X` for code, na di input variable wey you go use train model. -Target na di thing wey you wan predict. Dem dey usually represent target as `y` for code, and e dey answer di question wey you dey ask from your data: for December, which **color** of pumpkin go cheap pass? For San Francisco, which neighborhood go get di best real estate **price**? Sometimes, dem dey call target label attribute. +Target na wetin you dey try predict. Target, wey dem dey call `y` for code, na di answer to di question you dey ask your data: for December, which **color** pumpkins go cheap? for San Francisco, which neighborhoods get best real estate **price**? Sometime target fit also be label attribute. -### How to choose your feature variable +### Selecting your feature variable -🎓 **Feature Selection and Feature Extraction** How you go sabi which variable to choose when you dey build model? You go probably go through process of feature selection or feature extraction to choose di correct variables for di best model. But dem no be di same thing: "Feature extraction dey create new features from functions of di original features, but feature selection dey return subset of di features." ([source](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Feature Selection and Feature Extraction** How you go sabi which variable to choose to build model? You fit do feature selection or feature extraction to choose correct variables wey model go perform well. Dem no mean di same: "Feature extraction dey create new features from original features functions, but feature selection na to pick subset of features." ([source](https://wikipedia.org/wiki/Feature_selection)) ### Visualize your data -One important tool wey data scientist dey use na di power to visualize data with libraries like Seaborn or MatPlotLib. To show your data visually fit help you see hidden correlations wey you fit use. Your visualizations fit still help you see bias or unbalanced data (like we see for [Classification](../../4-Classification/2-Classifiers-1/README.md)). +One power data scientist get na how to visualize data with good libraries like Seaborn or MatPlotLib. To show your data visually fit help you find hidden connections wey you fit use. Your visualizations fit also help find bias or unbalanced data (like we see for [Classification](../../4-Classification/2-Classifiers-1/README.md)). ### Split your dataset -Before you train, you go need divide your dataset into two or more parts wey no dey equal but still represent di data well. +Before training, you gots split your dataset into two or more parts wey no equal size but still represent di data well. -- **Training**. Dis part of di dataset na di one wey you go use train di model. E dey make up di majority of di original dataset. -- **Testing**. Test dataset na independent group of data, wey you go use check di performance of di model wey you don build. -- **Validating**. Validation set na smaller independent group of examples wey you go use tune di model hyperparameters or architecture to improve di model. Depending on di size of your data and di question wey you dey ask, you fit no need build dis third set (like we talk for [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Training**. Dis part of dataset na for train your model. E be di majority of original dataset. +- **Testing**. Test dataset na independent data group, often from original data, wey you use check how model dey perform. +- **Validating**. Validation set na smaller independent sample wey you use tune model hyperparameters or architecture to improve model. Depending on your data size and question, you fit no need build this third group (like we talk for [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). -## How to build model +## Building a model -With your training data, your goal na to build model, or statistical representation of your data, using different algorithms to **train** am. Training di model go expose am to di data and e go make assumptions about di patterns wey e see, validate, and accept or reject. +Use your training data, your aim na to build model, or statistical representation of your data, with algorithms to **train** am. Training model mean you expose am to data so e fit make assumptions about patterns e finds, confirms, accept or reject. -### Choose training method +### Decide on a training method -Based on your question and di kind data wey you get, you go choose method to train am. If you check [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html) - wey we dey use for dis course - you go see plenty ways to train model. Based on your experience, you fit need try different methods to build di best model. You go likely go through process where data scientists dey check di performance of di model by giving am data wey e never see before, check for accuracy, bias, and oda issues, and choose di best training method for di task. +Based on your question and your data type, you go select method to train am. If you check [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html) - we dey use am for this course - you fit explore many ways to train model. Depending on your experience, you fit try many methods before you build best model. Data scientists dey evaluate model by feeding am unseen data, look how accurate e be, check bias or quality wahala, then pick best training method. -### Train di model +### Train a model -With your training data, you go 'fit' am to create model. You go notice say for many ML libraries, you go see code like 'model.fit' - na dis time you go send your feature variable as array of values (usually 'X') and target variable (usually 'y'). +With your training data, you ready to 'fit' am build model. For many ML libraries, you go find code 'model.fit' - this na when you send your feature variable as array (usually 'X') and target variable (usually 'y'). -### Evaluate di model +### Evaluate the model -Once di training process don complete (e fit take many iterations, or 'epochs', to train big model), you go fit evaluate di model quality by using test data to check how e perform. Dis data na subset of di original data wey di model never analyze before. You fit print table of metrics about di model quality. +After training complete (e fit take many rounds or 'epochs' to train big model), you fit check model quality using test data to see how am perform. Dis data na part of original data wey model never analyze before. You fit print table of metrics for your model quality. 🎓 **Model fitting** -For machine learning, model fitting mean how accurate di model function dey as e dey try analyze data wey e no sabi. +For machine learning, model fitting mean how accurate model function dey wen e dey try analyze data wey e never see before. -🎓 **Underfitting** and **overfitting** na common problems wey dey reduce di quality of di model, as di model fit no fit well or e fit too fit. Dis one dey make di model predictions either too close or too far from di training data. Overfit model dey predict training data too well because e don sabi di details and noise of di data too much. Underfit model no dey accurate because e no fit analyze di training data or di data wey e never see well. +🎓 **Underfitting** and **overfitting** na common problems wey spoil model quality, as model fit no fit well or e fit too well. This one fit cause model to make predictions wey too close or too far from training data. Overfit model dey predict training data well because e sabi di detail and noise well well. Underfit model no accurate because e no fit analyze training data or unseen data correctly. ![overfitting model](../../../../translated_images/pcm/overfitting.1c132d92bfd93cb6.webp) > Infographic by [Jen Looper](https://twitter.com/jenlooper) ## Parameter tuning -After your first training, check di quality of di model and think of how you fit improve am by adjusting di 'hyperparameters'. Read more about di process [for di documentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +After your first training finish, watch model quality and think about improving am by adjusting 'hyperparameters'. Read more about dis process [for documentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Prediction -Dis na di time wey you go use new data to test di model accuracy. For 'applied' ML setting, where you dey build web assets to use di model for production, dis process fit involve collecting user input (like button press) to set variable and send am to di model for inference or evaluation. +Na dis time you go use fresh data test your model accuracy. For 'applied' ML setting, where you dey build web tools to use model for production, dis tin fit involve gathering user input (like pressing button) to set variable and send am go model for inference or evaluation. -For dis lessons, you go learn how to use dis steps to prepare, build, test, evaluate, and predict - all di work wey data scientist dey do and more, as you dey progress to become 'full stack' ML engineer. +For dis lessons, you go learn how to use these steps to prepare, build, test, evaluate, and predict - all di skills wey data scientists get and more, as you dey waka your journey to become 'full stack' ML engineer. --- ## 🚀Challenge -Draw flow chart wey show di steps of ML practitioner. Where you dey now for di process? Where you think say you go get difficulty? Wetin dey easy for you? +Draw flow chart wey show steps wey ML practitioner dey follow. Where you dey now for di process? Which part you think go hard? Which part go easy for you? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) ## Review & Self Study -Search online for interviews with data scientists wey dey talk about their daily work. Here na [one](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Search online for interviews with data scientists wey talk about their daily work. Here be [one](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Assignment @@ -121,5 +121,5 @@ Search online for interviews with data scientists wey dey talk about their daily **Disclaimer**: -Dis dokyument don use AI transleto service [Co-op Translator](https://github.com/Azure/co-op-translator) do di translation. Even as we dey try make am correct, abeg sabi say machine translation fit get mistake or no dey accurate well. Di original dokyument for im native language na di main source wey you go fit trust. For important mata, e good make professional human transleto check am. We no go fit take blame for any misunderstanding or wrong interpretation wey fit happen because you use dis translation. +Dis dokument don get translate by AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we dey try make am correct, abeg sabi say automated translation fit get mistake or no too correct. The original dokument wey dey im own language na im be correct source. For important information, make person wey sabi human translation do am. We no go responsible if any misunderstanding or wrong meaning show because of this translation. \ No newline at end of file diff --git a/translations/pcm/2-Regression/3-Linear/README.md b/translations/pcm/2-Regression/3-Linear/README.md index d26ea7904b..3ffa45b6c2 100644 --- a/translations/pcm/2-Regression/3-Linear/README.md +++ b/translations/pcm/2-Regression/3-Linear/README.md @@ -3,95 +3,95 @@ ## Beginner Note Linear regression na wen we wan predict **numerical value** (for example, house price, temperature, or sales). -E dey work by finding straight line wey go best show di relationship between input features and di output. +E dey work by finding straight line wey go represent beta di relationship between input features and output. -For dis lesson, we go focus on understanding di concept before we go explore advance regression techniques. +For dis lesson, we go focus on to sabi the concept before we explore more advanced regression techniques. ![Linear vs polynomial regression infographic](../../../../translated_images/pcm/linear-polynomial.5523c7cb6576ccab.webp) > Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [This lesson dey R too!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [This lesson dey available for R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Introduction -So far, you don explore wetin regression mean with sample data we gather from di pumpkin pricing dataset wey we go dey use through dis lesson. You don also visualize am using Matplotlib. +So far, you don explore wetin regression be with sample data wey we gather from pumpkin pricing dataset wey we go take use for dis whole lesson. You don also use Matplotlib do visualisation. -Now, you ready to dive deeper into regression for ML. Visualizing dey help you understand data, but real power for Machine Learning come from _training models_. Models dem dey train on historic data to dey automatically capture data dependencies, and dem allow you predict outcomes for new data wey di model never see before. +Now you ready to go deeper for regression for ML. Even though visualisation dey help you understand data, the real power of Machine Learning na from _training models_. Models dey trained on historic data to automatically capture data dependencies, and dem allow you predict outcomes for new data, wey model never see before. -For dis lesson, you go learn more about two types of regression: _basic linear regression_ and _polynomial regression_, plus some math wey dey under these techniques. Dem models go allow us predict pumpkin prices depending on different input data. +For dis lesson, you go learn more about two types of regression: _basic linear regression_ and _polynomial regression_, plus some of di math wey dey behind these techniques. Those models go allow us predict pumpkin prices depending on the different input data. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Click di image up top for small video overview of linear regression. +> 🎥 Click di picture above for short video wey go explain linear regression. -> Throughout dis curriculum, we assume say you get little knowledge of math, and we wan make am easy for students wey come from other fields, so lookout for notes, 🧮 callouts, diagrams, and other learning tools wey go help you understand. +> Throughout dis curriculum, we dey assume say people no too sabi math, and we wan make am easy for students from different fields, so watch for notes, 🧮 callouts, diagrams, and other learning tools wey go help you understand. ### Prerequisite -By now, you suppose sabi di structure of di pumpkin data wey we dey look. You fit find am preloaded and pre-cleaned for dis lesson's _notebook.ipynb_ file. For di file, pumpkin price dey show per bushel for new data frame. Make sure say you fit run these notebooks for kernels for Visual Studio Code. +By now, you suppose don sabi the structure of di pumpkin data we dey look. You fit see am preloaded and pre-cleaned for this lesson's _notebook.ipynb_ file. For di file, pumpkin price dey show per bushel inside new data frame. Make sure say you fit run dis notebook dem for kernels for Visual Studio Code. ### Preparation -Just reminder, you dey load dis data so you fit ask questions about am. +Just to remind you, you dey load this data so you fit ask questions about am. -- When bae time to buy pumpkins? -- Wetin price I fit expect for one case of miniature pumpkins? -- Make I buy dem for half-bushel basket or for 1 1/9 bushel box? -Make we continue to dig into dis data. +- When be di best time to buy pumpkins? +- Wetin price I fit expect for case of miniature pumpkins? +- Make I buy dem for half-bushel baskets or for the 1 1/9 bushel box? +Make we continue dig this data. -For di previous lesson, you create Pandas data frame and put part of di original dataset inside, standardize di pricing by di bushel. But by doing that one, you only fit gather about 400 datapoints and only for fall months. +For di previous lesson, you create Pandas data frame and fill am with part of di original dataset, dem standardize price by bushel. But as you do am, you fit only gather about 400 datapoints and na only for fall months. -Check di data wey we preload for dis lesson’s notebook. Di data dey preloaded and dem don chart initial scatterplot to show month data. Maybe we fit get small more detail about di nature of di data if we clean am more. +Make you check di data wey we preloaded inside this lesson's notebook. Di data dey preloaded and initial scatterplot dey show month data. Maybe we fit get small extra detail about di data by cleaning am more. ## A linear regression line -Like you learn for Lesson 1, di goal of linear regression exercise na to fit draw line to: +As you learn for Lesson 1, the goal of linear regression exercise na to fit line wey go: -- **Show variable relationships**. Show d relationship between variables -- **Make predictions**. Make correct predictions how where new datapoint go land for di relationship to dat line. - -Na normal for **Least-Squares Regression** to draw dis kain line. Di "Least-Squares" term mean say you dey minimize total error for our model. For every data point, we measure di vertical distance (wey dem dey call _residual_) between di actual point and di regression line. +- **Show variable relationships**. Show di relationship between variables +- **Make predictions**. Make correct predictions about where new datapoint fit fall compared to dat line. -We dey square these distances for two main reasons: +E normal for **Least-Squares Regression** to draw line like dis. Di term "Least-Squares" mean say na di process to reduce total error for our model. For every data point, we measure di vertical distance (we go call am residual) between the real point and our regression line. -1. **Magnitude over Direction:** We want treat -5 error same as +5 error. Squaring go make all values positive. +We dey square these distances for two main reasons: -2. **Penalizing Outliers:** Squaring dey give more weight to big errors, e go make line stay close to points wey far away. +1. **Magnitude over Direction:** We wan treat error of -5 same as error of +5. Squaring go make all values positive. -We go add all di squared values join. Our goal na to find di one exact line where di sum of dem less (smallest possible value)—na im cause di name "Least-Squares". +2. **Punish Outliers:** Squaring dey put more weight for bigger errors, so di line go stay close to points wey dey far. -> **🧮 Show me di math** +Then we put all dis squared values join. Our goal na to find dat line wey get smallest total sum—na why dem call am "Least-Squares". + +> **🧮 Show me the math** > -> Dis line, wey dem dey call _line of best fit_ fit express by [an equation](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Dis line, wey dem call _line of best fit_ fit express by [equation](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` na di 'explanatory variable'. `Y` na di 'dependent variable'. Di slope of di line na `b` and `a` na di y-intercept, wey mean di value of `Y` when `X = 0`. +> `X` na di 'explanatory variable'. `Y` na di 'dependent variable'. Di slope of di line na `b` and `a` na y-intercept, wey mean di value of `Y` when `X = 0`. > >![calculate the slope](../../../../translated_images/pcm/slope.f3c9d5910ddbfcf9.webp) > > First, calculate slope `b`. Infographic by [Jen Looper](https://twitter.com/jenlooper) > -> In oda words, and referring to di original question wey our pumpkin data get: "predict di price of pumpkin per bushel by month", `X` go mean di price and `Y` go mean di month of sale. +> For example, regarding our pumpkin data question: "predict price of pumpkin per bushel by month", `X` go mean price, and `Y` go mean di month of sale. > >![complete the equation](../../../../translated_images/pcm/calculation.a209813050a1ddb1.webp) > -> Calculate di value of Y. If you dey pay about $4, e suppose be April! Infographic by [Jen Looper](https://twitter.com/jenlooper) +> Calculate di value of Y. If you dey pay around $4, e must be April! Infographic by [Jen Looper](https://twitter.com/jenlooper) > -> Di math wey dey calculate di line gats show di slope of di line, wey also depend on di intercept, or where `Y` dey when `X = 0`. +> Di math wey calculate di line must show slope of di line, wey also depend on intercept, or di place wey `Y` dey when `X = 0`. > -> You fit see how to calculate these values for [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) website. You fit also visit [dis Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) to see how numbers values fit affect di line. +> You fit see how to calculate these values from [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) website. You fit also try [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) to see how numbers fit affect di line. ## Correlation -One more term wey you gats sabi na **Correlation Coefficient** between given X and Y variables. With scatterplot, you fit quickly see dis coefficient. Scatterplot wey get points for neat line get high correlation, but scatterplot wey get points scatter everywah for X and Y get low correlation. +One more term wey you suppose sabi na **Correlation Coefficient** between X and Y variables. Using scatterplot, you fit quickly see dis coefficient. When datapoints dey scatter nicely for line, e mean high correlation, but if dem scatter everywhere between X and Y, na low correlation. -Good linear regression model go get high (near 1 pass 0) Correlation Coefficient using Least-Squares Regression with regression line. +Good linear regression model go get high (near 1, no be 0) Correlation Coefficient with Least-Squares Regression line. -✅ Run di notebook for dis lesson and see di Month to Price scatterplot. Di data wey connect Month to Price for pumpkin sales get high or low correlation based on your visual check of di scatterplot? E fit change if you use fine-grained measure instead of `Month`, like *day of di year* (number of days since year start)? +✅ Run di lesson notebook and check Month to Price scatterplot. Di data wey connect Month to Price for pumpkin sales get high or low correlation, based on how you see di scatterplot? E go change if you use detailed measure instead of `Month`, e.g. *day of the year* (number of days since beginning of year)? -For di code below, we go assume say we don clean di data, and dem get data frame wey dem call `new_pumpkins`, similar to dis one: +For code below, we assume say data don clean and we get data frame name `new_pumpkins`, similar to di one below: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Di code to clean di data dey for [`notebook.ipynb`](notebook.ipynb). We don do same cleaning steps like for previous lesson, and we calculate `DayOfYear` column using dis expression: +> Code to clean data dey inside [`notebook.ipynb`](notebook.ipynb). We follow same cleaning steps like before and calculate `DayOfYear` column with this expression: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Now wey you don understand di math behind linear regression, make we create Regression model to see if we fit predict which pumpkin package go get di best pumpkin prices. Anybody wey wan buy pumpkins for holiday pumpkin patch fit want this info to optimize dem pumpkin package purchases. +Now we don understand the math behind linear regression, make we create Regression model to see if we fit predict which pumpkin package go get best price. Person wey wan buy pumpkins for holiday pumpkin patch fit like get this info to optimise their pumpkin package purchases. ## Looking for Correlation [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Click di image up top for small video overview of correlation. +> 🎥 Click di picture above for quick video overview of correlation. -From previous lesson, you don probably see say average price for different months look like dis: +From the previous lesson, you don notice say average price for different months look like dis: Average price by month -Dis one suggest say e get correlation, and we fit try train linear regression model to predict di relationship between `Month` and `Price`, or between `DayOfYear` and `Price`. Here na di scatter plot wey show dis latter relationship: +Dis one mean say correlation dey, and we fit try train linear regression model to predict di relationship between `Month` and `Price`, or between `DayOfYear` and `Price`. Below na scatter plot wey show dat latter relation: -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -Make we check if correlation dey using di `corr` function: +Let’s check if correlation dey using `corr` function: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -E look like say di correlation small small, -0.15 by `Month` and -0.17 by `DayOfMonth`, but fit get another important relationship. E look like different price clusters dey correspond to different pumpkin varieties. To confirm dis guess, make we plot each pumpkin category with different color. By passing `ax` parameter to `scatter` plotting function, we fit plot all points for same graph: +E be like say correlation small, -0.15 by `Month` and -0.17 by `DayOfYear`, but maybe another important connection dey. E be like different price clusters dey based on pumpkin varieties. To confirm, make we plot each pumpkin category with different color. By passing `ax` parameter to `scatter` function, we fit plot all points for same graph: ```python ax=None @@ -140,40 +140,40 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -Our investigation show say variety get more effect on price than di selling date. We fit see dis with bar graph: +Our observation show say variety get more effect on price than di day wey dem sell am. We fit see am with bar graph: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +Bar graph of price vs variety -Make we focus for now on one pumpkin variety, 'pie type', and see wetin di date dey do to price: +Make we focus for while on one pumpkin variety, 'pie type', to see how date dey affect price: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -If we calculate correlation between `Price` and `DayOfYear` with `corr` function, we go get something like `-0.27` - e mean say training predictive model make sense. +If we calculate correlation between `Price` and `DayOfYear` with `corr` function, e fit be about `-0.27`—which mean training model make sense. -> Before you train linear regression model, e important say make sure say our data clean. Linear regression no dey work well if e get missing values, so e make sense to remove all empty cells: +> Before you train linear regression model, make sure data clean well. Linear regression no dey work well with missing values, so e good to clear all empty cells: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Another way fit be to fill empty values with mean from di column wey get dem. +Another way na to fill them empty cells with mean values of di column. ## Simple Linear Regression [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Click di image up top for short video overview of linear and polynomial regression. +> 🎥 Click di picture above for short video about linear and polynomial regression. To train our Linear Regression model, we go use **Scikit-learn** library. @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -We dey start by separating input values (features) and expected output (label) into separate numpy arrays: +We start by separating input values (features) and expected output (label) into separate numpy arrays: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Note say we gats do `reshape` on input data make Linear Regression package fit understand am correct. Linear Regression dey expect 2D-array as input, wey each row get vector of input features inside. For our case, we get only one input, so we need array with shape N×1, where N na dataset size. +> Note say we do `reshape` on the input data so that Linear Regression package go understand am well. Linear Regression expect 2D-array as input, where each row be vector of input features. For our case, we get only one input so we need array with shape N×1, where N be dataset size. -Next, we need split data into train and test datasets, so that we fit validate our model after training: +Then, we wan split data into train and test datasets, so we fit validate our model after training: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Finally, training di real Linear Regression model na just two lines code. We define `LinearRegression` object, then fit am to our data using `fit` method: +Finally, training the actual Linear Regression model dey only take two lines of code. We define `LinearRegression` object, then fit am to data using `fit` method: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Di `LinearRegression` object afta `fit`-ting get all di coefficients of di regression, wey fit access wit `.coef_` property. For our case, e get only one coefficient, wey suppose be round `-0.017`. E mean say di prices dey drop small wit time, but no too much, around 2 cents per day. We fit still access di intersection point of di regression wit Y-axis wit `lin_reg.intercept_` - e go be around `21` for our case, wey mean di price for di beginning of di year. +Di `LinearRegression` object afta `fit`-ting get all di coefficients of di regression, we fit access wit `.coef_` property. For our case, e get just one coefficient wey suppose dey around `-0.017`. E mean say di prices dey like dey drop small wit time, but no too much, like 2 cents per day. We fit also access di intersection point of di regression wit Y-axis wit `lin_reg.intercept_` - e go be like `21` for our case, wey mean di price for di beginning of di year. -To see how correct our model be, we fit predict prices for test dataset, then measure how near our predictions be to di expected values. Dis one fit do wit root mean square error (RMSE) metrics, wey be root of di mean of all squared differences between expected and predicted value. +To see how correct our model be, we fit predict prices for test dataset, den measure how near our predictions be to di values wey we suppose get. Dis one fit use root mean square error (RMSE) metrics, wey be di root of di mean of all squared difference between di expected and predicted value. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Our error look like around 2 points, wey be ~17%. No too good. Another indicator of model quality na di **coefficient of determination**, wey fit get like dis: +Our error dey around 2 points, wey be ~17%. No too good. Another sign of model quality na di **coefficient of determination**, wey fit get like dis: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -If di value na 0, e mean say di model no dey use input data, e just act as di *worst linear predictor*, wey be just mean value of di result. If e be 1, e mean say we fit predict all expected outputs perfectly. For our case, di coefficient na around 0.06, wey low small. +If di value be 0, e mean say di model no dey consider di input data at all, e dey behave as di *worst linear predictor*, wey be just mean value of di result. If di value be 1, e mean say we fit predict di expected outputs perfectly. For our case, di coefficient dey around 0.06, wey low well well. -We fit still plot di test data with di regression line to betta see how di regression dey work for our case: +We fit plot di test data togida wit di regression line make we fit see well how di regression dey work for our case: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Polynomial Regression -Another kind of Linear Regression na Polynomial Regression. Sometimes, e dey get linear relationship between variables - like di bigger pumpkin in volume, di higher di price - but sometimes dis relationship no fit plot as plane or straight line. +Another Kind of Linear Regression na Polynomial Regression. Sometimes, di relationship between variables be linear - di bigger di pumpkin volume, di higher di price - but sometimes di relationship no dey fit plot as plane or straight line. -✅ Here be [some more examples](https://online.stat.psu.edu/stat501/lesson/9/9.8) of data we fit use Polynomial Regression +✅ Here be [some more examples](https://online.stat.psu.edu/stat501/lesson/9/9.8) of data wey Polynomial Regression fit use -Make you check di relationship between Date and Price again. Dis scatterplot look like e suppose necessarily analyze wit straight line? Prices no dey fluctuate abi? For dis kain case, you fit try polynomial regression. +Make you check di relationship between Date and Price again. Dis scatterplot be like e suppose analyze by straight line? Prices no fit dey change? For dis kain case, you fit try polynomial regression. -✅ Polynomials na mathematical expressions wey fit get one or more variables plus coefficients +✅ Polynomials na mathematical expressions wey fit get one or more variables and coefficients -Polynomial regression dey create curved line to betta fit nonlinear data. For our case, if we put squared `DayOfYear` variable for input data, e suppose fit our data wit parabolic curve wey go get minimum for some point inside di year. +Polynomial regression dey create curved line to fit nonlinear data better. For our case, if we add squared `DayOfYear` variable inside input data, we suppose fit plot our data with parabolic curve, wey get minimum point somewhere inside di year. -Scikit-learn get better [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) wey fit join different steps of data processing. **Pipeline** na chain of **estimators**. For our case, we go create pipeline wey first add polynomial features to our model, then go train di regression: +Scikit-learn get beta [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) wey combine different steps of data processing together. A **pipeline** na chain of **estimators**. For our case, we go create pipeline wey first add polynomial features to our model, then train di regression: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -If we use `PolynomialFeatures(2)`, e mean say we go include all second-degree polynomials from di input data. For our case, e go be just `DayOfYear`2, but if e get two input variables X and Y, e go add X2, XY and Y2. We fit still use higher degree polynomials if we want. +Using `PolynomialFeatures(2)` mean say we go include all second-degree polynomials from di input data. For our case, e mean `DayOfYear`2, but if we get two variables X and Y, e go add X2, XY, and Y2. We fit still use higher degree polynomials if we want. + +Pipelines fit work same way as original `LinearRegression` object, so we fit `fit` di pipeline, and then use `predict` to get prediction results: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +To plot smooth approximation curve, we dey use `np.linspace` to create uniform input values range, no just plot directly on unordered test data (wey fit produce zigzag line): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelines fit use same way as di original `LinearRegression` object, we fit `fit` di pipeline, then use `predict` get prediction results. Dis na graph wey show test data with approximation curve: +Na here di graph wey show test data, plus di approximation curve: Polynomial regression -If we use Polynomial Regression, we fit get small lower MSE and higher determination, but no too much. We need take other features join! +Using Polynomial Regression, we fit get small lower RMSE and higher determination but no too much. We need consider other features! -> You fit see say minimum pumpkin prices dey happen around Halloween. How you fit explain dis? +> You fit see say di minimal pumpkin prices dey around Halloween. How you fit explain dis? -🎃 Congrats, you don create model wey fit help predict price of pie pumpkins. You fit fit do di same for all pumpkin types, but dat one go be tedious. Make we learn now how take pumpkin variety join our model! +🎃 Congrats! You just create model wey fit predict pie pumpkin price. You fit do same for all pumpkin types but e go hard. Make we learn now how pumpkin variety fit enter our model! ## Categorical Features -For ideal world, we want fit predict prices for different pumpkin varieties wit one model. But di `Variety` column different small from `Month` column, because e get non-numeric values. Dis kin columns na **categorical**. +For perfect world, we wan fit predict prices for different pumpkin varieties inside di same model. But di `Variety` column different small from columns like `Month`, because e get non-numeric values. Such column dem dey call **categorical**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Click di image for short video wey show how to use categorical features. +> 🎥 Click di picture above to watch short video about using categorical features. -Here you fit see how average price dey depend on variety: +Here you fit see how di average price depend on variety: Average price by variety -To take variety join, we first need convert am to numeric form, wey be **encode** am. Several ways dey we fit do am: +To take variety enter account, we first gats convert am to numeric form, or **encode** am. We get some ways to do am: -* Simple **numeric encoding** go create table of different varieties, then go replace variety name wit index for dat table. Dis no be di best idea for linear regression because linear regression go take di actual numeric value of dat index and add am to di result, multiply by some coefficient. For our case, di relationship between di index number and di price no linear, even if we arrange di indices somehow. -* **One-hot encoding** go replace `Variety` column wit 4 different columns, one for every variety. Each column go get `1` if di row na dat variety, else `0`. Dis mean say di linear regression go get four coefficients, one for each pumpkin variety, wey go control "starting price" (or "additional price") for dat variety. +* Simple **numeric encoding** go build table of different varieties, then replace di variety name wit index for dat table. Dis no be good plan for linear regression, because linear regression go take actual numeric value of index, den add am to result, wey dem go multiply by some coefficient. For our case, di relationship between index number and price no linear, even if we arrange di indices in one specific order. +* **One-hot encoding** go replace di `Variety` column wit 4 different columns, one for each variety. Each column go contain `1` if dat row belong to dat particular variety, else `0`. Dis mean say di linear regression go get four coefficients, one for each pumpkin variety, wey dey responsible for "starting price" (or "additional price") for dat variety. -Code below show how to do one-hot encode for variety: +Code below show how to one-hot encode variety: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -309,7 +331,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Other code still be same wit how we train Linear Regression before. If you try am, you go see say mean squared error dey nearly di same, but coefficient of determination high pass (~77%). To get more correct predictions, we fit take more categorical features join, plus numeric features, like `Month` or `DayOfYear`. To get one big feature array, we fit use `join`: +Rest of di code be di same as we use before to train Linear Regression. If you try am, you go see say mean squared error still about de same, but we get much higher coefficient of determination (~77%). To get more accurate predictions, we fit also take more categorical features into account, plus numeric features like `Month` or `DayOfYear`. To get one big features array, we fit use `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,41 +341,41 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Here we still take `City` and `Package` type join, wey bring MSE 2.84 (10%) and determination 0.94! +Here we also consider `City` and `Package` type, wey give RMSE 2.84 (10.5%), and determination 0.94! -## Putting it all together +## Put am all together -To make di best model, we fit combine (one-hot encoded categorical + numeric) data from above example wit Polynomial Regression. Here be full code for you: +To make di best model, we fit use combined (one-hot encoded categorical + numeric) data from di example above together wit Polynomial Regression. Here na complete code for your convenience: ```python -# arrange training data +# set up training data X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# make train-test divide +# make train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# setup and train di pipeline +# setup and train the pipeline pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # predict results for test data pred = pipeline.predict(X_test) -# calculate MSE and determination -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calculate RMSE and determination +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Dis one suppose give us di best determination coefficient nearly 97%, and MSE=2.23 (~8% prediction error). +Dis one suppose give best determination coefficient close to 97%, and RMSE=2.23 (~8% error for prediction). -| Model | MSE | Determination | +| Model | RMSE | Determination | |-------|-----|---------------| | `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | @@ -361,18 +383,18 @@ Dis one suppose give us di best determination coefficient nearly 97%, and MSE=2. | All features Linear | 2.84 (10.5%) | 0.94 | | All features Polynomial | 2.23 (8.25%) | 0.97 | -🏆 Well done! You don create four Regression models for one lesson, and improve model quality to 97%. For final section on Regression, you go learn about Logistic Regression to know categories. +🏆 Well done! You create four Regression models inside one lesson, and improve model quality to 97%. For final section about Regression, you go learn Logistic Regression to find categories. --- ## 🚀Challenge -Try different variables for dis notebook to see how correlation dey relate to model accuracy. +Try different variables inside dis notebook to see how correlation relate to model accuracy. ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) ## Review & Self Study -For dis lesson we learn about Linear Regression. Other important kinds of Regression dey. Read about Stepwise, Ridge, Lasso and Elasticnet techniques. Better course to learn more na [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +For dis lesson, we learn about Linear Regression. Other important Regression types dey. Read about Stepwise, Ridge, Lasso and Elasticnet techniques. One good course to study na di [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Assignment @@ -382,5 +404,5 @@ For dis lesson we learn about Linear Regression. Other important kinds of Regres **Disclaimer**: -Dis document don translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even tho we dey try make am correct, abeg make you sabi say automated translations fit get errors or wahala for accuracy. Di original document for im own language na di correct source wey you suppose trust pass. For important tori dem, better make professional human translation dey used. We no go gree for any misunderstanding or wrong meaning wey fit happen because of this translation. +Dis document don be translated by AI translation service wey dem dey call [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make am correct, abeg sabi say automated translation fit get some error or mistake. The original document for im own language na im be the correct and original source. For important mata, e better make person wey sabi do professional human translation look am. We no go responsible for any kasala or misunderstanding wey fit happen because of how dis translation be. \ No newline at end of file diff --git a/translations/pcm/2-Regression/3-Linear/solution/notebook.ipynb b/translations/pcm/2-Regression/3-Linear/solution/notebook.ipynb index b6b51493ea..9e86a18ef3 100644 --- a/translations/pcm/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/pcm/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## Linear and Polynomial Regression for Pumpkin Pricing - Lesson 3\n", "\n", - "Load di libraries wey you need and di dataset. Change di data to dataframe wey get small part of di data:\n", + "Load all di libraries wey you need and di dataset. Convert di data to one dataframe wey get small part of di data:\n", "\n", - "- Only collect pumpkins wey dem price by bushel\n", + "- Only take pumpkins wey dem price by di bushel\n", "- Change di date to month\n", - "- Calculate di price make e be average of di high and low prices\n", - "- Change di price make e show di pricing by bushel quantity\n" + "- Calculate di price as average of high and low prices\n", + "- Change di price make e show di price by bushel quantity\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Scatterplot dey remind us say we only get month data from August go reach December. We go need more data to fit draw conclusion for linear way.\n" + "A scatterplot dey remind us say we only get month data from August go reach December. We fit need more data to fit draw conclusion for linear way.\n" ] }, { @@ -448,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Make we see if dem dey connect:\n" + "Mek we see if dem get connection:\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "E be like say di correlation no too strong, but e get one oda relationship wey dey more important - because di price points for di plot wey dey up get some distinct clusters. Make we do one plot wey go show di different pumpkin varieties:\n" + "E dey look like say di correlation small, bot di get some oda more important relationship - becos di price points wey dey di plot up dere get several different cluster dem. Make we make one plot wey go show different pumpkin varieties:\n" ] }, { @@ -538,7 +538,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For now, make we focus only on one type - **pie type**.\n" + "For now, make we focus only for one kind - **pie type**.\n" ] }, { @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Di slope of di line fit dey determined from linear regression coefficients:\n" + "Di slope of di line fit fit find from linear regression coefficients:\n" ] }, { @@ -693,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We fit use di trained model take predict price:\n" + "We fit use the trained model predict price:\n" ] }, { @@ -724,9 +724,9 @@ "source": [ "### Polynomial Regression\n", "\n", - "Sometimes di relationship wey dey between di features and di results no dey straight. For example, pumpkin price fit high for winter (months=1,2), then e go drop for summer (months=5-7), and later e go rise again. Linear regression no fit catch dis kain relationship well.\n", + "Sometayms di kin relation wey dey between features and di results na non-linear. For example, pumpkin price fit high for winter (months=1,2), den e fit fall for summer (months=5-7), and den e go rise again. Linear regression no fit find dis kain relation correct.\n", "\n", - "For dis kain case, we fit add extra features. One simple way na to use polynomials from di input features, wey go give us **polynomial regression**. For Scikit Learn, we fit use pipelines to pre-compute polynomial features automatically:\n" + "For dis kain case, we fit add extra features. Simple way na to use polynomials from input features, wey go give us **polynomial regression**. For Scikit Learn, we fit automatically pre-compute polynomial features using pipelines: \n" ] }, { @@ -781,8 +781,11 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { @@ -791,12 +794,12 @@ "source": [ "### Encoding varieties\n", "\n", - "For better world, we go like make we fit predict price for different pumpkin varieties wit di same model. To fit variety inside di model, we first need to change am to number form, or **encode**. We get plenty ways wey we fit do am:\n", + "For dia perfect world, we wan fit predict price for different pumpkin varieties using di same model. To fit count variety, we first gats convert am to number form, or **encode**. Several way dey we fit do am:\n", "\n", - "* Simple numeric encoding wey go build table of di different varieties, then go replace di variety name wit index for dat table. Dis one no be di best idea for linear regression, because linear regression dey use di number value of di index, and di number value no go fit match di price well well.\n", - "* One-hot encoding, wey go replace `Variety` column wit 4 different columns, one for each variety, wey go get 1 if di row na di variety wey dem talk, and 0 if e no be.\n", + "* Simple number encoding wey go build table of different varieties, then replace variety name with index for dat table. Dis no be di best idea for linear regression, because linear regression go consider di number value of di index, and di number value fit no relate well with di price.\n", + "* One-hot encoding, wey go replace `Variety` column with 4 different columns, one for each variety, wey go get 1 if di row na di correct variety, and 0 if e no be.\n", "\n", - "Di code wey dey below go show how we fit one-hot encode variety:\n" + "Di code wey dey below show how we fit do one-hot encode for variety:\n" ] }, { @@ -944,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Linear Regression on Variety\n", + "### Linear Regression on Variety \n", "\n", - "We go use di same code wey dey up, but dis time, instead of `DayOfYear`, we go use our one-hot-encoded variety as input:\n" + "We go use the same code wey dey up, but instead make we use `DayOfYear` we go use our one-hot-encoded variety as input:\n" ] }, { @@ -994,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We fit try use oda features for di same way, and join dem wit numerical features, like `Month` or `DayOfYear`:\n" + "We fit still try use oda features for di same way, and join dem wit numerical features, like `Month` or `DayOfYear`:\n" ] }, { @@ -1027,7 +1030,7 @@ "source": [ "### Polynomial Regression\n", "\n", - "Polynomial regression fit work too with categorical features wey dem don one-hot-encode. Di code to train polynomial regression go dey basically di same as wetin we don see before.\n" + "Polynomial regression fit fit also use wit categorical features wey dem don one-hot encode. Di code to train polynomial regression go basically be di same as we don see above.\n" ] }, { @@ -1074,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**Disclaimer**: \nDis docu don use AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator) take translate am. Even though we dey try make e accurate, abeg no forget say automatic translation fit get mistake or no correct well. Di original docu for di language wey dem write am first na di main correct one. For important information, e better make professional human translator check am. We no go fit take blame for any misunderstanding or wrong interpretation wey fit happen because of dis translation.\n\n" + "---\n\n\n**Disclaimer**:\nDis document don translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even tho we dey try to make am correct, abeg sabi say automated translation fit get mistakes or no too accurate. Di original document for im own language na di correct source wey you suppose trust. For important information, make you use professional human translation. We no go responsible for any misunderstanding or wahala wey fit happen because of dis translation.\n\n" ] } ], @@ -1104,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-11-18T19:17:17+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "pcm" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ta/.co-op-translator.json b/translations/ta/.co-op-translator.json index 0324c55f48..fce4e95b1a 100644 --- a/translations/ta/.co-op-translator.json +++ b/translations/ta/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ta" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-10-11T11:28:53+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:24:27+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ta" }, @@ -90,8 +90,8 @@ "language_code": "ta" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:08:50+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:23:55+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ta" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ta" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:21:57+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ta" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-10-11T11:41:17+00:00", diff --git a/translations/ta/1-Introduction/4-techniques-of-ML/README.md b/translations/ta/1-Introduction/4-techniques-of-ML/README.md index 8137a3271d..23321b3262 100644 --- a/translations/ta/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ta/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # இயந்திர கற்றல் நுட்பங்கள் -இயந்திர கற்றல் மாதிரிகளை உருவாக்குவது, பயன்படுத்துவது மற்றும் பராமரிப்பது, அவற்றின் தரவுகளை கையாள்வது போன்ற செயல்முறைகள் பல்வேறு அபிவிருத்தி பணிமுறைகளிலிருந்து மிகவும் வேறுபட்டவை. இந்த பாடத்தில், இந்த செயல்முறையை தெளிவுபடுத்தி, நீங்கள் அறிந்துகொள்ள வேண்டிய முக்கிய நுட்பங்களை விளக்குவோம். நீங்கள்: +இயந்திர கற்றல் மாதிரிகளை உருவாக்குவது, பயன்படுத்துவது, மற்றும் பராமரிப்பது மற்றும் அவற்றில் பயன்படுத்தப்படும் தரவு என்பது பல்வேறு பிற மேம்பாட்டு பணியெழுத்துக்களிலிருந்து மிகவும் வேறுபட்ட செயல்முறை ஆகும். இந்த பாடத்தில், நாம் இந்த செயல்முறையை புரிந்துகொண்டு, நீங்கள் அறிந்து கொள்ள வேண்டிய முக்கிய நுட்பங்களை விளக்கப்போகிறோம். நீங்கள்: -- இயந்திர கற்றலின் அடிப்படை செயல்முறைகளை உயர்ந்த நிலை பார்வையில் புரிந்துகொள்வீர்கள். -- 'மாதிரிகள்', 'முன்கூட்டிய கணிப்புகள்', மற்றும் 'பயிற்சி தரவுகள்' போன்ற அடிப்படை கருத்துகளை ஆராய்வீர்கள். +- இயந்திர கற்றலை ஆதரிக்கும் செயல்முறைகளை உயர்நிலை அளவில் புரிந்துகொள்ளலாம். +- 'மாடல்கள்', 'முன்னறிவிப்புகள்', மற்றும் 'பயிற்சி தரவு' போன்ற அடிப்படை கருத்துக்களை ஆராயலாம். -## [பாடத்துக்கு முன் கேள்வி](https://ff-quizzes.netlify.app/en/ml/) +## [முன்-பாட நிகழ்ச்சி வினாடி விடை](https://ff-quizzes.netlify.app/en/ml/) -[![இயந்திர கற்றல் தொடக்கத்திற்கான - இயந்திர கற்றல் நுட்பங்கள்](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "இயந்திர கற்றல் தொடக்கத்திற்கான - இயந்திர கற்றல் நுட்பங்கள்") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து இந்த பாடத்தைப் பற்றிய குறுகிய வீடியோவைப் பாருங்கள். +> 🎥 இமேஜ் மீது கிளிக் செய்து, இந்த பாடத்தைக் குறுகிய காணொளியாக பார்க்கவும். ## அறிமுகம் -உயர்ந்த நிலை பார்வையில், இயந்திர கற்றல் (ML) செயல்முறைகளை உருவாக்கும் கலை பல படிகளைக் கொண்டுள்ளது: +உயர் நிலை திருப்பத்தில், இயந்திர கற்றல் (ML) செயல்முறைகளை உருவாக்கும் கலை பல படிகளால் ஆனது: -1. **கேள்வியைத் தீர்மானிக்கவும்**. பெரும்பாலான ML செயல்முறைகள் ஒரு கேள்வியை கேட்பதிலிருந்து தொடங்குகின்றன, இது ஒரு எளிய நிபந்தனையுடன் செயல்படும் நிரலால் அல்லது விதிமுறைகளின் அடிப்படையிலான இயந்திரத்தால் பதிலளிக்க முடியாது. இந்த கேள்விகள் பெரும்பாலும் தரவின் அடிப்படையில் முன்கூட்டிய கணிப்புகளைச் சுற்றி மையமாக இருக்கும். -2. **தரவை சேகரித்து தயாரிக்கவும்**. உங்கள் கேள்விக்கு பதிலளிக்க, உங்களுக்கு தரவுகள் தேவைப்படும். உங்கள் தரவின் தரம் மற்றும் சில நேரங்களில் அளவு, உங்கள் ஆரம்ப கேள்விக்கு நீங்கள் எவ்வளவு நன்றாக பதிலளிக்க முடியும் என்பதை தீர்மானிக்கும். தரவுகளை காட்சிப்படுத்துவது இந்த கட்டத்தின் முக்கிய அம்சமாகும். இந்த கட்டம், மாதிரியை உருவாக்க தரவுகளை பயிற்சி மற்றும் சோதனை குழுவாகப் பிரிப்பதையும் உள்ளடக்கியது. -3. **பயிற்சி முறையைத் தேர்ந்தெடுக்கவும்**. உங்கள் கேள்வி மற்றும் உங்கள் தரவின் தன்மை ஆகியவற்றைப் பொறுத்து, உங்கள் தரவுகளை சிறப்பாக பிரதிபலிக்கவும், அதற்கு எதிராக துல்லியமான கணிப்புகளைச் செய்யவும் ஒரு மாதிரியை எப்படி பயிற்சி செய்ய வேண்டும் என்பதை நீங்கள் தேர்ந்தெடுக்க வேண்டும். இது உங்கள் ML செயல்முறையின் ஒரு பகுதி, இது குறிப்பிட்ட நிபுணத்துவத்தைத் தேவைப்படும் மற்றும் பெரும்பாலும் கணிசமான அளவிலான பரிசோதனையைத் தேவைப்படும். -4. **மாதிரியை பயிற்சி செய்யவும்**. உங்கள் பயிற்சி தரவுகளைப் பயன்படுத்தி, தரவிலுள்ள முறைமைகளை அடையாளம் காண ஒரு மாதிரியை பயிற்சி செய்ய பல்வேறு அல்காரிதங்களைப் பயன்படுத்துவீர்கள். மாதிரி, தரவின் சில பகுதிகளை மற்றவற்றை விட முன்னுரிமை அளிக்க, உள்நாட்டு எடைகளை பயன்படுத்தி ஒரு சிறந்த மாதிரியை உருவாக்கலாம். -5. **மாதிரியை மதிப்பீடு செய்யவும்**. உங்கள் சேகரிக்கப்பட்ட தொகுப்பிலிருந்து, உங்கள் சோதனை தரவுகளைப் பயன்படுத்தி, மாதிரி எப்படி செயல்படுகிறது என்பதைப் பாருங்கள். -6. **அளவுரு அமைத்தல்**. உங்கள் மாதிரியின் செயல்திறனை அடிப்படையாகக் கொண்டு, நீங்கள் மாதிரியை பயிற்சி செய்ய பயன்படுத்தப்படும் அல்காரிதங்களின் நடத்தை கட்டுப்படுத்தும் பல்வேறு அளவுருக்கள் அல்லது மாறிகள் மூலம் செயல்முறையை மீண்டும் செய்யலாம். -7. **கணிக்கவும்**. உங்கள் மாதிரியின் துல்லியத்தை சோதிக்க புதிய உள்ளீடுகளைப் பயன்படுத்தவும். +1. **வினாவைத் தீர்மானிக்கவும்**. பெரும்பாலான ML செயல்முறைகள் ஒரு எளிய நிபந்தனை சார்ந்த நிரல் அல்லது விதிகளின் இயந்திரத்தால் பதில் அளிக்க முடியாத கேள்வியுடன் ஆரம்பிக்கின்றன. இக் கேள்விகள் பெரும்பாலும் தரவுத் தொகுப்பின் அடிப்படையில் முன்னறிவிப்புகளையும் சுற்றுகிறது. +2. **தரவை சேகரித்து தயாரிக்கவும்**. உங்கள் கேள்விக்கு பதில் அளிக்க நீங்கள் தரவு தேவை. உங்கள் தரவின் தரமும், சில நேரங்களில் அளவும், உங்கள் ஆரம்ப கேள்வியை எவ்வாறு நன்றாக நீங்கள் பதில் அளிக்க முடியும் என்பதை தீர்மானிக்கும். தரவு காட்சிப்படுத்தல் இந்த படியின் முக்கிய அம்சமாகும். இந்த படியில் தரவுகளை பயிற்சி மற்றும் சோதனை குழுக்களாகப் பிரிப்பதும் அடக்கம். +3. **பயிற்சி முறையைத் தேர்ந்தெடுக்கவும்**. உங்கள் கேள்வியும், தரவின் இயல்பும் அடிப்படையில், நீங்கள் ஒரு மாதிரியை எப்படி பயிற்றுவிக்க வேண்டும் எனத் தேர்ந்தெடுக்க வேண்டும், அது உங்கள் தரவை சிறப்பாக பிரதிபலிக்கவும், அதன் மீது துல்லியமான முன்னறிவிப்புகளைச் செய்யவும். இது உங்கள் ML செயல்முறையின் அந்த பகுதி ஆகும், இது சிறப்பான நிபுணத்துவத்தையும், பெரும்பாலும் ஏராளமான சோதனைகளையும் தேவைக்கும். +4. **மாதிரியை பயிற்றுவிக்கவும்**. உங்கள் பயிற்சி தரவைப் பயன்படுத்தி, பல்வேறு அல்காரிதம்களை கொண்டு மாதிரியை பயிற்றுவித்து, தரவில் உள்ள வடிவங்களை அடையாளம் காண அதிகரிக்கவும். மாதிரி சில இடைவெளித் எடைகள் போன்றவற்றை பயன்படுத்தி தரவின் சில பகுதிகளை முன்னுரிமை தரும் வகையில் சரிசெய்யலாம். +5. **மாதிரியை மதிப்பீடு செய்யவும்**. முன்பே காணாத தரவுகளை (உங்கள் சோதனை தரவு) பயன்படுத்தி மாதிரியின் செயல்திறனை பாருங்கள். +6. **பராமிதி சரிசெய்தல்**. உங்கள் மாதிரியின் செயல்திறன்படி, நீங்கள் மாதிரியை பயிற்றுவிக்க பயன்படுத்தும் அல்காரிதங்களில் கட்டுப்பாடு கொண்ட பராமிதிகளுடன் செயல்முறை மீண்டும் செய்யலாம். +7. **முன்னறிவு செய்யவும்**. புதிய உள்ளீடுகளை பயன்படுத்தி உங்கள் மாதிரியின் துல்லியத்தை பரிசோதிக்கவும். ## எந்த கேள்வியை கேட்க வேண்டும் -கணினிகள் தரவிலுள்ள மறைக்கப்பட்ட முறைமைகளை கண்டறிவதில் மிகவும் திறமையானவை. இது ஒரு குறிப்பிட்ட துறையில் கேள்விகள் உள்ள ஆராய்ச்சியாளர்களுக்கு மிகவும் உதவியாக இருக்கும், இது ஒரு நிபந்தனையுடன் செயல்படும் விதிமுறைகளின் இயந்திரத்தை உருவாக்குவதன் மூலம் எளிதாக பதிலளிக்க முடியாது. உதாரணமாக, ஒரு கணக்கீட்டு பணியில், ஒரு தரவியல் விஞ்ஞானி புகைபிடிப்பவர்களின் மரணத்திற்கான விதிகளை உருவாக்க முடியும். +கணினிகள் தரவுகளில் மறைந்து உள்ள வடிவங்களை கண்டுபிடிப்பதில் சிறந்த திறமையுடையவையாக இருக்கின்றன. இது ஒரு வலுவான உதவியாக இருக்கும், ஏனெனில் சில துறைகளில் உள்ள கேள்விகளை ஒரு நிபந்தனைவாத விதிகள் இயந்திரத்தை உருவாக்குவதால் எளிதில் பதில் அளிக்க முடியாது. உதாரணமாக, ஒரு டேட்டா விஞ்ஞானி வரும் காலத்தில் புகையிலைபிடிப்பவர்களும், பிடிப்பவர்களும் உடைய மரண விகிதங்களை குறிக்கும் விதிகளை நுண்ணறிவுடன் உருவாக்கலாம். -எனினும், பல்வேறு மாறிகள் சமன்பாட்டில் கொண்டு வரப்பட்டால், கடந்த கால சுகாதார வரலாற்றின் அடிப்படையில் எதிர்கால மரண விகிதங்களை கணிக்க ஒரு ML மாதிரி மிகவும் திறமையாக இருக்கலாம். ஒரு மகிழ்ச்சியான உதாரணமாக, ஒரு குறிப்பிட்ட இடத்தில் ஏப்ரல் மாதத்திற்கான வானிலை கணிப்புகளை, அகலாங்கு, நீளாங்கு, காலநிலை மாற்றம், கடலுக்கு அருகாமை, ஜெட் ஸ்ட்ரீம் முறைமைகள் மற்றும் பலவற்றை உள்ளடக்கிய தரவின் அடிப்படையில் செய்யலாம். +இருப்பினும், பல்வேறு மாற்றிகள் சேர்க்கப்பட்டால், கடந்த கால ஆரோக்கிய வரலாறு அடிப்படையில் எதிர்கால மரண விகிதங்களை முன் கணிப்பதில் ML மாதிரி மிகவும் திறமையானது ஆகும். மேலும் சந்தோஷமான உதாரணமாக, ஏப்ரல் மாதத்தில் ஒரு குறிப்பிட்ட இடத்தில் காலநிலை முன் கணிப்புகளை செய்யலாம், அதில் அகலம், நீளரம், காலநிலை மாற்றம், கடலுக்கு நெருக்கம், ஜெட் ஸ்ட்ரீம் வடிவங்கள் மற்றும் பல அம்சங்கள் உள்ளன. -✅ வானிலை மாதிரிகளைப் பற்றிய இந்த [சுருக்கமான சுருக்கம்](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) வானிலை பகுப்பாய்வில் ML ஐப் பயன்படுத்துவதற்கான வரலாற்று பார்வையை வழங்குகிறது. +✅ இந்த [ஸ்லைட் வெரைகள்](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) காலநிலை மாதிரிகளில் ML பயன்படுத்துவதற்கு ஒரு வரலாற்று பார்வையை வழங்குகின்றன. -## மாதிரி உருவாக்கத்திற்கு முன் பணிகள் +## கட்டுமான முன் பணிகள் -மாதிரியை உருவாக்கத் தொடங்குவதற்கு முன், நீங்கள் நிறைவேற்ற வேண்டிய பல பணிகள் உள்ளன. உங்கள் கேள்வியை சோதிக்கவும், மாதிரியின் கணிப்புகளின் அடிப்படையில் ஒரு கருதுகோளை உருவாக்கவும், பல கூறுகளை அடையாளம் காணவும் மற்றும் அமைக்கவும் வேண்டும். +உங்கள் மாதிரியை உருவாக்கும் முன், நிறைய பணிகளை நீங்கள் நிறைவேற்ற வேண்டும். உங்கள் கேள்வியை சோதித்து, ஒரு வரைவைக் கணிக்க, மாதிரியின் முன்னறிவிப்புகளுக்கு அடிப்படையாக பல கூறுகளை அடையாளம் கண்டு, கட்டமைக்க வேண்டும். -### தரவுகள் +### தரவு -உங்கள் கேள்விக்கு எந்தவிதமான உறுதிப்பாட்டுடன் பதிலளிக்க, சரியான வகையான போதுமான அளவிலான தரவுகள் தேவைப்படும். இந்த நேரத்தில் நீங்கள் செய்ய வேண்டிய இரண்டு விஷயங்கள் உள்ளன: +உங்கள் கேள்விக்கு எந்த விதமான உறுதிப்படுத்தலும் இல்லாமல் பதில் அளிக்க, சரியான வகை மற்றும் போதுமான அளவு தரவு தேவை. இதற்காக இரண்டு முக்கிய நடவடிக்கைகள் உண்டு: -- **தரவை சேகரிக்கவும்**. தரவுகள் பகுப்பாய்வில் நியாயம் பற்றிய முந்தைய பாடத்தை மனதில் வைத்துக்கொண்டு, உங்கள் தரவுகளை கவனமாக சேகரிக்கவும். இந்த தரவின் மூலங்கள், அதில் உள்ள எந்தவொரு உட்கார்ந்த பாகுபாடுகள் மற்றும் அதன் தோற்றத்தை ஆவணப்படுத்தவும். -- **தரவைத் தயாரிக்கவும்**. தரவுகளை தயாரிக்கும் செயல்முறையில் பல படிகள் உள்ளன. இது பல்வேறு மூலங்களிலிருந்து வந்தால், தரவுகளை ஒருங்கிணைத்து, சாதாரணமாக்க வேண்டும். தரவின் தரத்தை மற்றும் அளவினை மேம்படுத்த, சரங்களை எண்களாக மாற்றுவது போன்ற பல்வேறு முறைகளைப் பயன்படுத்தலாம் (நாம் [கிளஸ்டரிங்](../../5-Clustering/1-Visualize/README.md) இல் செய்யும் போல்). நீங்கள் அசல் தரவின் அடிப்படையில் புதிய தரவுகளை உருவாக்கலாம் (நாம் [வகைப்படுத்தல்](../../4-Classification/1-Introduction/README.md) இல் செய்யும் போல்). தரவுகளை சுத்தம் செய்து திருத்தலாம் (நாம் [வெப் பயன்பாட்டிற்கு](../../3-Web-App/README.md) முன் செய்யும் போல்). இறுதியாக, உங்கள் பயிற்சி நுட்பங்களைப் பொறுத்து, அதை சீரற்றதாக்கி கலக்கவும். +- **தரவை சேகரிக்கவும்**. கடந்த பாடத்தில் மதிப்பீட்டின் நியாயமான தரவு அணுகுமுறையை நினைவில் வைத்து, உங்கள் தரவை கவனமாக சேகரிக்கவும். தரவின் மூலங்களை, அதில் உள்ள முன்கூட்டிய பக்கவாதங்களை அறிந்து அதை ஆவணப்படுத்துக. +- **தரவை தயார் செய்யவும்**. தரவு தயாரிப்பு பல படிகளைக் கொண்டுள்ளது. வேறு வேறு மூலங்களிலிருந்து வந்ததாக இருந்தால், தரவை ஒன்றிணைத்து சமமுறைப்படுத்த வேண்டும். தரவு தரம் மற்றும் அளவை மேம்படுத்த நீங்கள் பல முறைகள் பயன்படுத்தலாம், எடுத்துக்காட்டாக எண்களாக சரங்கள் மாற்றுதல் ([கீழே போல கிளஸ்டரிங்](../../5-Clustering/1-Visualize/README.md)). நீங்கள் புதிய தரவையும் உருவாக்கலாம் ([கிளாசிபிகேஷன்](../../4-Classification/1-Introduction/README.md) பாடத்தில் போல). வரம்பற்ற மற்றும் மாற்றியமைத்தலும் (நாம் [Web App](../../3-Web-App/README.md) பாடத்திற்கு முன் செய்வது போல்) இதில் அடக்கம். இறுதியில் உங்கள் பயிற்சி நுட்பங்களுக்கு ஏற்ப அதனை அசைவுசெய்து அசைவுப்படுத்தவும் வேண்டும். -✅ உங்கள் தரவுகளை சேகரித்து செயல்படுத்திய பிறகு, உங்கள் கேள்வியைத் தீர்மானிக்க அதன் வடிவம் உங்களை அனுமதிக்குமா என்பதைப் பாருங்கள். உங்கள் கொடுக்கப்பட்ட பணியில் தரவுகள் நன்றாக செயல்படாது என்று கண்டுபிடிக்கலாம், [கிளஸ்டரிங்](../../5-Clustering/1-Visualize/README.md) பாடங்களில் நாம் கண்டுபிடித்தது போல! +✅ தரவு சேகரிப்பு மற்றும் செயலாக்கம் முடிந்தபின், அதன் வடிவம் உங்கள் கேள்வியைத் தீர்க்க அனுமதிப்பதா என ஒரு நிமிடம் பாருங்கள். தரவு உங்கள் பணிக்கு நன்றாகச் செயல்படாமல் இருக்கக்கூடும் என்பது, நாங்கள் [கிளஸ்டரிங்](../../5-Clustering/1-Visualize/README.md) பாடங்களில் கண்டுபிடிப்பதுபோல்! ### அம்சங்கள் மற்றும் இலக்கு -ஒரு [அம்சம்](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) என்பது உங்கள் தரவின் அளவிடக்கூடிய பண்பாகும். பல தரவுத்தொகுப்புகளில் இது 'தேதி', 'அளவு' அல்லது 'நிறம்' போன்ற தலைப்புகளாக வெளிப்படுகிறது. உங்கள் அம்ச மாறி, பொதுவாக `X` என குறிக்கப்படும், மாதிரியை பயிற்சி செய்ய பயன்படுத்தப்படும் உள்ளீடு மாறியை பிரதிநிதித்துவப்படுத்துகிறது. +ஒரு [அம்சம்](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) உங்கள் தரவின் அளவிடக்கூடிய பண்பாகும். பல தரவு தொகுப்புகளில் அது ஒரு நெடுவரிசை தலைப்பாக, உதாரணமாக 'தேதி', 'அளவு' அல்லது 'நிறம்' என வெளிக்காட்டப்படுகிறது. உங்கள் அம்ச மாறி, பொதுவாக குறியிடப்பட்டுள்ள `X`, ஒரு மாதிரியை பயிற்றுவிக்க பயன்படுத்தப்படும் உள்ளீடு மாறியை குறிக்கிறது. -இலக்கு என்பது நீங்கள் கணிக்க முயற்சிக்கும் விஷயமாகும். இலக்கு பொதுவாக `y` என குறிக்கப்படும், இது உங்கள் தரவிலிருந்து நீங்கள் கேட்க முயற்சிக்கும் கேள்விக்கு பதிலாகும்: டிசம்பர் மாதத்தில் எந்த **நிறம்** கொண்ட பூசணிக்காய்கள் குறைந்த விலையில் இருக்கும்? சான் பிரான்சிஸ்கோவில், எந்தப் பகுதிகளில் சிறந்த நிலம் **விலை** இருக்கும்? சில நேரங்களில் இலக்கு 'லேபிள் அட்ரிப்யூட்' என்றும் குறிப்பிடப்படுகிறது. +ஒரு இலக்கு என்பது நீங்கள் முன்னறிவிக்க முயற்சிக்கும் ஒன்று ஆகும். இலக்கு பொதுவாக குறிக்கப்படும் `y` உங்கள் கேள்விக்கு தரவிற்கு நீங்கள் கேட்கிற பதிலை குறிக்கிறது: டிசம்பரில், எந்த **நிறம்** பாம்பாக்கள் மிகவும் மலையாக இருக்கும்? சான் பிரான்சிஸ்கோவில், எந்த பகுதியில் சிறந்த நில சொத்துக் **விலை** இருக்கும்? சில நேரங்களில் இலக்கு ஒரு லேபிள் பண்பாகும். -### உங்கள் அம்ச மாறியைத் தேர்ந்தெடுக்கவும் +### உங்கள் அம்ச மாறியை தேர்வு செய்தல் -🎓 **அம்சத் தேர்வு மற்றும் அம்சம் எடுக்கும் செயல்முறை**. ஒரு மாதிரியை உருவாக்கும்போது எந்த மாறியைத் தேர்ந்தெடுப்பது என்று நீங்கள் எப்படி தெரிந்துகொள்வீர்கள்? நீங்கள் சரியான மாறிகளை தேர்ந்தெடுக்கும் செயல்முறையைப் பின்பற்றுவீர்கள். அவை ஒரே மாதிரியானவை அல்ல: "அம்சம் எடுக்கும் செயல்முறை அசல் அம்சங்களின் செயல்பாடுகளிலிருந்து புதிய அம்சங்களை உருவாக்குகிறது, ஆனால் அம்சத் தேர்வு அம்சங்களின் ஒரு துண்டை மட்டுமே திரும்ப அளிக்கிறது." ([மூலம்](https://wikipedia.org/wiki/Feature_selection)) +🎓 **அம்ச தேர்வு மற்றும் அம்ச உற்பத்தி** மாதிரி உருவாக்கும்போது எந்த மாறியைத் தேர்வு செய்வது என்று எப்படி அறிவீர்கள்? நீங்கள் அதிக செயல்திறன் கொண்ட மாதிரிக்கு ஏற்றதாக அம்ச தேர்வு அல்லது அம்ச உற்பத்தி செயல்முறையை கடந்து செல்கீங்கள். அவை ஒருபோதும் ஒரே மாதிரியல்ல: "அம்ச உற்பத்தி என்பது அசல் அம்சங்களின் செயல்பாடுகளிலிருந்து புதிய அம்சங்களை உருவாக்குகிறது, ஆனால் அம்ச தேர்வு என்பது அம்சங்களின் துணுக்கைப் பின்வரும்." ([மூலம்](https://wikipedia.org/wiki/Feature_selection)) -### உங்கள் தரவுகளை காட்சிப்படுத்தவும் +### உங்கள் தரவை காட்சிப்படுத்தல் -தரவுகளை காட்சிப்படுத்துவதற்கான பல சிறந்த நூலகங்களைப் பயன்படுத்தும் திறன் என்பது ஒரு தரவியல் விஞ்ஞானியின் கருவிகளின் முக்கிய அம்சமாகும். உங்கள் தரவுகளை காட்சிப்படுத்துவது, நீங்கள் பயன்படுத்தக்கூடிய மறைக்கப்பட்ட தொடர்புகளை கண்டறிய உதவலாம். உங்கள் காட்சிப்படுத்தல்கள் பாகுபாடு அல்லது சமநிலையற்ற தரவுகளை கண்டறியவும் உதவலாம் ([வகைப்படுத்தல்](../../4-Classification/2-Classifiers-1/README.md) இல் நாம் கண்டுபிடித்தது போல). +ஒரு தகவல் விஞ்ஞானி கருவிகளின் முக்கிய அம்சமாக தரவை பல சிறந்த நூலகங்கள் போன்று Seaborn அல்லது MatPlotLib மூலம் காட்சிப்படுத்துவதற்கு திறன் உள்ளது. உங்கள் தரவை காட்சிப்படுத்துவதால் மறைந்துள்ள இணைப்புகளைக் கண்டுபிடித்து அவற்றை பயன்படுத்த முடியும். உங்கள் காட்சிகள் பக்கவாதம் அல்லது சமநிலையற்ற தரவையும் கண்டுபிடிக்க உதவும் ([கிளாசிபிகேஷன்](../../4-Classification/2-Classifiers-1/README.md) பாடத்தில் பார்க்கலாம்). ### உங்கள் தரவுத்தொகுப்பை பிரிக்கவும் -பயிற்சி செய்யும் முன், உங்கள் தரவுத்தொகுப்பை சம அளவில்லாத அளவுகளில் இரண்டு அல்லது அதற்கு மேற்பட்ட பகுதிகளாகப் பிரிக்க வேண்டும், ஆனால் தரவுகளை நன்றாக பிரதிநிதித்துவப்படுத்த வேண்டும். +பயிற்சி முன்னதாக, உங்கள் தரவுத்தொகுப்பை குறைவான அளவு கொண்ட ஒருகூட்டமாக அல்லாமல், பல பகுதிகளாக பிரிக்க வேண்டும், ஆனால் அவை தரவைக் சிறப்பாக பிரதிபலிக்க வேண்டும். -- **பயிற்சி**. தரவுத்தொகுப்பின் இந்த பகுதி உங்கள் மாதிரிக்கு பொருத்தமாக உள்ளது. இது அசல் தரவுத்தொகுப்பின் பெரும்பகுதியை உள்ளடக்கியது. -- **சோதனை**. சோதனை தரவுத்தொகுப்பு என்பது அசல் தரவிலிருந்து சேகரிக்கப்பட்ட சுயாதீன தரவுகளின் குழு, இது உருவாக்கப்பட்ட மாதிரியின் செயல்திறனை உறுதிப்படுத்த பயன்படுத்தப்படுகிறது. -- **சரிபார்ப்பு**. சரிபார்ப்பு தொகுப்பு என்பது மாதிரியின் ஹைப்பர்பாராமீட்டர்கள் அல்லது கட்டமைப்பை மேம்படுத்த ஒரு சிறிய சுயாதீன தரவுகளின் குழு ஆகும். உங்கள் தரவின் அளவு மற்றும் நீங்கள் கேட்கும் கேள்வியைப் பொறுத்து, இந்த மூன்றாவது தொகுப்பை உருவாக்க தேவையில்லை ([நேரம் வரலாற்று கணிப்பு](../../7-TimeSeries/1-Introduction/README.md) இல் நாம் குறிப்பிட்டது போல). +- **பயிற்சி**. இந்த பகுதி உங்கள் மாதிரிக்குப் பொருந்தும், பயிற்றுவிப்பதற்கு. இது அசல் தரவுத்தொகுப்பின் பெரும்பங்கு. +- **சோதனை**. சோதனை தரவு என்பது தனித்துப் பகுதி தரவு, பொதுவாக அசல் தரவிலிருந்து சேகரிக்கப்பட்டது, உருவாக்கப்பட்ட மாதிரியின் செயல்திறன் உறுதிப்படுத்த பயன்படும். +- **செல்லுபடியாக்கல்**. செல்லுபடியாக்கல் தொகுப்பு என்பதன் பெரும்பாலும் சிறிய தனித்துக் கூறுகளின் தொகுப்பு, அதனை மாதிரியின் ஹைப்பர்பராமிதர்களை, அல்லது கட்டமைப்பை, மேம்படுத்த பயன்படுத்துகிறீர்கள். உங்கள் தரவு அளவிற்கு மற்றும் கேள்விக்கு ஏற்ப, இந்த மூன்றாவது தொகுப்பை கட்டியமைக்க வேண்டாமாயிருக்கலாம் ([டைம் சீரி ஃபோர்காஸ்டிங்](../../7-TimeSeries/1-Introduction/README.md) பாடமாக உள்ளது). -## ஒரு மாதிரியை உருவாக்குதல் +## மாதிரியை கட்டமைத்தல் -உங்கள் பயிற்சி தரவுகளைப் பயன்படுத்தி, உங்கள் நோக்கம் ஒரு மாதிரியை உருவாக்குவது, அல்லது உங்கள் தரவின் புள்ளிவிவரங்களை பிரதிநிதித்துவப்படுத்துவது, பல்வேறு அல்காரிதங்களைப் பயன்படுத்தி அதை **பயிற்சி** செய்ய வேண்டும். ஒரு மாதிரியை பயிற்சி செய்வது, தரவுகளை வெளிப்படுத்தி, அது கண்டறியும் முறைமைகளைப் பற்றி கருதுகோள்களை உருவாக்க, சரிபார்க்க மற்றும் ஏற்க அல்லது மறுக்க அனுமதிக்கிறது. +உங்கள் பயிற்சி தரவைக் கொண்டு, அவற்றின் பல அல்காரிதங்களைப் பயன்படுத்தி, உங்கள் தரவின் ஒரு புள்ளியியல் பிரதிபலிப்பான, ஒரு மாதிரியை **பயிறுத்த** உருவாக்குவது உங்கள் குறிக்கோள். மாதிரியை பயிற்றுவிப்பது அதற்கு தரவை காட்டுவது மற்றும் அது கண்டுபிடிக்கும் காட்சி வடிவங்களை பற்றிய கருதுகோள்களை செய்ய அனுமதிக்கும். -### பயிற்சி முறையைத் தீர்மானிக்கவும் +### பயிற்சி முறையைத் தேர்வு செய்யவும் -உங்கள் கேள்வி மற்றும் உங்கள் தரவின் தன்மை ஆகியவற்றைப் பொறுத்து, அதை பயிற்சி செய்ய ஒரு முறையை நீங்கள் தேர்ந்தெடுப்பீர்கள். [Scikit-learn இன் ஆவணங்களை](https://scikit-learn.org/stable/user_guide.html) - நாம் இந்த பாடத்தில் பயன்படுத்துகிறோம் - படிக்கும்போது, ஒரு மாதிரியை பயிற்சி செய்ய பல வழிகளை நீங்கள் ஆராயலாம். உங்கள் அனுபவத்தைப் பொறுத்து, சிறந்த மாதிரியை உருவாக்க பல்வேறு முறைகளை முயற்சிக்க வேண்டியிருக்கும். தரவியல் விஞ்ஞானிகள் ஒரு மாதிரியின் செயல்திறனை மதிப்பீடு செய்யும் செயல்முறையை நீங்கள் கடந்து செல்ல வாய்ப்பு உள்ளது, அதற்கு தெரியாத தரவுகளை வழங்கி, துல்லியம், பாகுபாடு மற்றும் தரத்தை குறைக்கும் பிற பிரச்சினைகளைச் சரிபார்த்து, கொடுக்கப்பட்ட பணிக்கான மிகவும் பொருத்தமான பயிற்சி முறையைத் தேர்ந்தெடுக்கவும். +உங்கள் கேள்வி மற்றும் தரவு இயல்பின்படி, அதனை பயிற்றுவிக்க ஒரு முறை தேர்வு செய்ய வேண்டும். [Scikit-learn ஆவணங்களை](https://scikit-learn.org/stable/user_guide.html) நோக்கி பயண்படுத்தும் இந்த பாடத் தொடரில் பல பயிற்சி முறைகளை ஆராயலாம். அனுபவம் அடிப்படையில் சிறந்த மாதிரியை கட்டமைக்க பல முறைகளை முயற்சி செய்ய வேண்டும். தரவு விஞ்ஞானிகள் பல நேரங்களில் ஒளியற்ற தரவை மாதிரிக்கு வழங்கி அதன் செயல்திறனை மதிப்பீடு செய்து, துல்லியம், பக்கவாதம் மற்றும் பெயர் குறைவான பிரச்சினைகளை பார்வையிட்டு, பணிக்கான உகந்த பயிற்சி முறையைத் தேர்வு செய்கின்றனர். -### ஒரு மாதிரியை பயிற்சி செய்யவும் +### மாதிரியை பயிற்றுவிக்கவும் -உங்கள் பயிற்சி தரவுகளுடன், ஒரு மாதிரியை உருவாக்க 'பிட்' செய்ய நீங்கள் தயாராக இருக்கிறீர்கள். பல ML நூலகங்களில், 'model.fit' என்ற குறியீட்டை நீங்கள் காண்பீர்கள் - இது உங்கள் அம்ச மாறியை (பொதுவாக 'X') மற்றும் ஒரு இலக்கு மாறியை (பொதுவாக 'y') மதிப்பீடு செய்ய அனுப்பும் நேரம். +உங்கள் பயிற்சி தரவோடு, அதை 'பிடி'செய்து மாதிரியை உருவாக்கத் தயாராக இருப்பீர்கள். பல ML நூலகங்களில் 'model.fit' போன்ற குறியீடு காணப்படும் - இந்த நேரத்தில் நீங்கள் பெரும்பாலும் 'X' எனும் அம்ச மாறியை மதிப்புகளின் வரிசையாகவும், 'y' எனும் இலக்கு மாறியையும் அனுப்புகிறீர்கள். ### மாதிரியை மதிப்பீடு செய்யவும் -பயிற்சி செயல்முறை முடிந்தவுடன் (ஒரு பெரிய மாதிரியை பயிற்சி செய்ய பல முறை அல்லது 'எபோக்கள்' ஆகலாம்), அதன் செயல்திறனை மதிப்பீடு செய்ய நீங்கள் சோதனை தரவுகளைப் பயன்படுத்தலாம். இந்த தரவுகள், மாதிரி முன்பு பகுப்பாய்வு செய்யாத அசல் தரவின் ஒரு துண்டாகும். உங்கள் மாதிரியின் தரத்தைப் பற்றிய அளவுகோல் அட்டவணையை நீங்கள் அச்சிடலாம். +பயிற்சி செயல்முறை முடிந்ததும் (பல முறை திருப்பங்கள் அல்லது 'எபோச்சுகள்' தேவைப்படலாம்), நீங்கள் சோதனை தரவைப் பயன்படுத்தி மாதிரியின் தரத்தை மதிப்பீடு செய்யலாம். இந்த தரவு மாதிரி முன் அணுகாத, அசலில் இருந்த தரவின் ஒரு துணுக்குதான். மாதிரியின் தரத்தைக் குறிக்க முறைமைகளை அச்சிடலாம். -🎓 **மாதிரி பொருத்தம்** +🎓 **மாதிரி பிடித்தல்** -இயந்திர கற்றல் சூழலில், மாதிரி பொருத்தம் என்பது, அது அறியாத தரவுகளை பகுப்பாய்வு செய்ய முயற்சிக்கும் போது மாதிரியின் அடிப்படை செயல்பாட்டின் துல்லியத்தைக் குறிக்கிறது. +இயந்திர கற்றல் சூழலில், மாதிரி பிடித்தல் என்பது மாதிரியின் அடிப்படை செயல்பாட்டின் துல்லியம்; அது பழகாத தரவைக் கணிக்க முயற்சிக்கிறது. -🎓 **குறைவான பொருத்தம்** மற்றும் **அதிக பொருத்தம்** ஆகியவை மாதிரியின் தரத்தை குறைக்கும் பொதுவான பிரச்சினைகள், ஏனெனில் மாதிரி போதுமான அளவு பொருந்தவில்லை அல்லது மிகவும் பொருந்துகிறது. இது மாதிரியை அதன் பயிற்சி தரவுகளுடன் மிகவும் நெருக்கமாக அல்லது மிகவும் தளர்வாக இணைக்கச் செய்கிறது. ஒரு அதிக பொருத்தமான மாதிரி, பயிற்சி தரவுகளை மிகவும் நன்றாக கணிக்கிறது, ஏனெனில் அது தரவின் விவரங்கள் மற்றும் சத்தத்தை மிகவும் நன்றாக கற்றுக்கொண்டுள்ளது. ஒரு குறைவான பொருத்தமான மாதிரி, அதன் பயிற்சி தரவுகளை அல்லது அது 'கண்டறியாத' தரவுகளை சரியாகப் பகுப்பாய்வு செய்ய முடியாது. +🎓 **அதிகபிடித்தல்** மற்றும் **குறைபிடித்தல்** என்பது மாதிரியின் தரத்தை குறைக்கும் சாதாரண பிரச்சினைகள்; மாதிரி சரியாக பயிறுத்தப்படாமல் அல்லது மிக বেশি பயிற்றுவிப்பதால் ஏற்படும். அதிகபிடித்தல் மாதிரி பயிற்சி தரவை மிகச் நன்கு கணிக்கிறது ஏனெனில் அது தரவின் விவரங்கள் மற்றும் ஒலி நன்றாகக் கற்றுக்கொண்டுள்ளது. குறைபிடித்தல் மாதிரி துல்லியமாக அல்ல; அது பயிற்சி தரவை சரியாக பரிசோதிக்க இயலாது, மற்றும் முன் காணாத தரவையும் சரியாக மதிப்பிடமுடியாது. -![அதிக பொருத்தமான மாதிரி](../../../../translated_images/ta/overfitting.1c132d92bfd93cb6.webp) -> [ஜென் லூப்பர்](https://twitter.com/jenlooper) உருவாக்கிய தகவல் வரைபடம் +![overfitting model](../../../../translated_images/ta/overfitting.1c132d92bfd93cb6.webp) +> படக்கதை வடிவம்: [ஜென் லூப்பர்](https://twitter.com/jenlooper) -## அளவுரு அமைத்தல் +## பராமிதி சரிசெய்தல் -உங்கள் ஆரம்ப பயிற்சி முடிந்தவுடன், மாதிரியின் தரத்தை கவனித்து, அதன் 'ஹைப்பர்பாராமீட்டர்கள்' ஐ சரிசெய்து அதை மேம்படுத்துவது பற்றி யோசிக்கவும். இந்த செயல்முறையைப் பற்றிய மேலும் தகவலுக்கு [ஆவணங்களை](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) படிக்கவும். +உங்கள் ஆரம்ப பயிற்சி முடிந்தவுடன், மாதிரியின் தரத்தை கவனித்து, அதன் 'ஹைப்பர்பராமிதர்களை' சரிசெய்து மேம்படுத்தலாம். இந்த செயல்முறை பற்றி மேலும் படிக்க [ஆவணங்களில்](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) பார்க்கவும். -## கணிப்பு +## முன்னறிவு -இது உங்கள் மாதிரியின் துல்லியத்தை சோதிக்க புதிய தரவுகளை முழுமையாகப் பயன்படுத்தும் தருணம். 'விண்ணப்பிக்கப்பட்ட' ML அமைப்பில், நீங்கள் உற்பத்தியில் மாதிரியைப் பயன்படுத்த வெப் சொத்துகளை உருவாக்கும்போது, இந்த செயல்முறை ஒரு மாறியை அமைக்கவும், மாதிரிக்கு மதிப்பீடு அல்லது கணிப்பு செய்ய அனுப்பவும் பயனர் உள்ளீட்டை (உதாரணமாக ஒரு பொத்தானை அழுத்துதல்) சேகரிப்பதை உள்ளடக்கலாம். +முழுமையாக புதிய தரவை பயன்படுத்தி மாதிரியின் துல்லியத்தைச் சோதிக்க இப்பொழுது நேரம். 'பயன்பாட்டுக்' கொண்ட ML சூழலில், நீங்கள் மாதிரியை உற்பத்தியில் பயன்படுத்த வலை சொத்துகளை உருவாக்கும் போது, இந்த செயல்முறை பயனர் உள்ளீட்டை (உதாரணமாக ஒரு பொத்தான் அழுத்தம்) சேகரித்து அதை மாதிரிக்குக் கட்டளையிடுதல் அல்லது மதிப்பிடுதல் ஆகியவற்றை கொண்டிருக்கலாம். -இந்த பாடங்களில், நீங்கள் தயாரிக்க, உருவாக்க, சோதிக்க, மதிப்பீடு செய்ய மற்றும் கணிக்க எப்படி என்பதை கண்டறிவீர்கள் - தரவியல் விஞ்ஞானியின் அனைத்து நடவடிக்கைகளையும் மேலும், 'முழு ஸ்டாக்' ML பொறியாளராக மாற உங்கள் பயணத்தில் முன்னேறுவீர்கள். +இந்த பாடங்களில், நீங்கள் இந்த படிகளைப் பயன்படுத்தி, தயார் செய்ய, கட்டமைக்க, சோதனை செய்ய, மதிப்பீடு செய்ய, மற்றும் முன்னறிவு செய்ய கற்றுக் கொள்ளப்போகிறீர்கள் - ஒரு தகவல் விஞ்ஞானியின்Gestureகளும் இதயமும் உங்களுக்கு வளர்ந்து, ஒரு 'முழுமையான' ML பொறியாளராகவும் உங்களைக் கொண்டு செல்லும். --- -## 🚀சவால் +## 🚀போட்டி -ஒரு ML பயிற்சியாளரின் படி படி செயல்முறையை பிரதிபலிக்கும் ஒரு ஓட்டப் படத்தை வரை. இந்த செயல்முறையில் நீங்கள் தற்போது எங்கு இருக்கிறீர்கள்? நீங்கள் எந்த இடத்தில் சிக்கல்களை எதிர்கொள்வீர்கள் என்று நீங்கள் கணிக்கிறீர்கள்? உங்களுக்கு எது எளிதாக தோன்றுகிறது? +ML பயPractitioner (பயிற்றுநர்) செயல்முறைகளை ஒளிபடமாக ஒரு இயக்கவரிசை வரைபடத்தை வரைந்திடுங்கள். இப்பொழுது நீங்கள் செயல்முறையில் எங்கு இருக்கிறீர்கள்? எந்த இடத்தில் கடினமாக இருக்கும் என்று நீங்கள் முன்னறிவிக்கின்றீர்கள்? எது எளிதாகத் தோன்றுகிறது? -## [பாடத்திற்குப் பின் கேள்வி](https://ff-quizzes.netlify.app/en/ml/) +## [போஸ்ட்-பாட நிகழ்ச்சி வினாடி விடை](https://ff-quizzes.netlify.app/en/ml/) -## மதிப்பீடு மற்றும் சுயபயிற்சி +## மதிப்பாய்வு மற்றும் சுயநிலைபாடம் -தரவியல் விஞ்ஞானிகள் தங்கள் தினசரி பணிகளைப் பற்றி விவாதிக்கும் ஆன்லைன் நேர்காணல்களைத் தேடுங்கள். இதோ [ஒரு நேர்காணல்](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +தகவல் விஞ்ஞானிகள் தங்கள் தினசரி வேலையை விவரிக்கும் நேர்முகங்களை ஆன்லைனில் தேடுங்கள். இதோ [ஒன்று](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## பணிக்கான ஒப்பந்தம் +## பணிகள் -[ஒரு தரவியல் விஞ்ஞானியை நேர்காணல் செய்யவும்](assignment.md) +[தகவல் விஞ்ஞானியை நேர்முகம் கொள்ளவும்](assignment.md) --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கின்றோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ No newline at end of file + +**முகவரி**: +இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) மூலம் மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் சரியான மொழிபெயர்ப்புக்காக முயலுகிறோம், இருப்பினும் தானாக உருவாக்கப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை தயவுசெய்து கருத்தில் கொள்ளவும். முதன்மை ஆவணம் அதன் சொந்த மொழியில் அதிகாரப்பூர்வ மூலமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்ப மனித மொழிபெயர்ப்பை பரிந்துரைக்கிறோம். இந்த மொழிபெயர்ப்பைப் பயன்படுத்தி ஏற்படும் எந்தவொரு தவறான புரிதல்களுக்கும் அல்லது தவறான பொருள்களுக்கும் எங்கள் பொறுப்பு இல்லை. + \ No newline at end of file diff --git a/translations/ta/2-Regression/3-Linear/README.md b/translations/ta/2-Regression/3-Linear/README.md index 3305cab15c..e91200c93f 100644 --- a/translations/ta/2-Regression/3-Linear/README.md +++ b/translations/ta/2-Regression/3-Linear/README.md @@ -1,135 +1,137 @@ -# Scikit-learn பயன்படுத்தி ஒரு பகுப்பாய்வு மாதிரியை உருவாக்குதல்: regression நான்கு வழிகள் +# Scikit-learn பயன்படுத்தி ஒரு ரெக்ரஷன் மாதிரியை உருவாக்குக: நான்கு விதமான ரெக்ரஷன் -## ஆரம்பக்காரர் குறிப்பு +## தொடக்கம் குறிப்பு -எண் மதிப்பை (உதாரணமாக, வீட்டு விலை, வெப்ப நிலை அல்லது விற்பனை) கணிக்க linear regression பயன்படுத்தப்படுகிறது. -இது உள்ளீட்டு அம்சங்களுக்கும் வெளியீட்டு மதிப்பிற்குமான தொடர்பை சிறந்த முறையில் பிரதிநிதித்துவப்படுத்தும் நேர்கைக்கோவை கண்டுபிடிப்பதன் மூலம் செயல்படுகிறது. +நேரியல் ரெக்ரஷன் என்பது நாம் **அளவைக் கணிக்க** விரும்பும் போது பயன்படுத்தப்படுகிறது (உதாரணமாக, வீட்டின் விலை, வெப்பநிலை, அல்லது விற்பனைகள்). +இது உள்ளீட்டு அம்சங்களுக்கும் வெளியீட்டு மதிப்புக்கும் இடையிலான தொடர்பைக் சிறந்த முறையில் பிரதிநிதித்துவம் செய்யும் நேர்கோட்டை கண்டுபிடிப்பதன் மூலம் செயல்படுகிறது. -இந்த பாடத்தில், நாம் regression முறைகளை புரிந்து கொள்வதில் கவனம் செலுத்தி இன்னும் மேம்பட்ட regression நுட்பங்களை ஆராய்வதற்கு முன் இத்தொடர்பை புரிந்து கொள்கிறோம். -![Linear vs polynomial regression infographic](../../../../translated_images/ta/linear-polynomial.5523c7cb6576ccab.webp) -> [Dasani Madipalli](https://twitter.com/dasani_decoded) என்பவரின் தகவல்காட்சி -## [பாடமுன் வினாத்தாளி](https://ff-quizzes.netlify.app/en/ml/) +இந்த பாடத்தில், மேம்பட்ட ரெக்ரஷன் தொழில்நுட்பங்களை ஆராயும் முன் இந்த கருத்தைப் புரிந்துகொள்ள கவனம் செலுத்துகிறோம். +![நேரியல் மற்றும் பல்கோணம் ரெக்ரஷன் தகவல்படம்](../../../../translated_images/ta/linear-polynomial.5523c7cb6576ccab.webp) +> தகவல்படம்: [டாசனி மடிபள்ளி](https://twitter.com/dasani_decoded) + +## [முன்பாடக் கேள்வித்தட்டு](https://ff-quizzes.netlify.app/en/ml/) + +> ### [இந்த பாடம் R மொழியிலும் கிடைக்கிறது!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -> ### [இந்த பாடம் R இல் கிடைக்கும்!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### அறிமுகம் -இதுவரை நீங்கள் regression என்பது என்ன என்பதை pumpkin விலை தரவுத்தொகுப்பிலிருந்து எடுத்துக்காட்டுக் கூரிய தரவுடன் ஆராய்ந்துள்ளீர்கள், இதை இந்த பாடத்துடன் முழுமையாக பயன்படுத்த உள்ளோம். Matplotlib பயன்படுத்தி அதனை காண்பித்துள்ளீர்கள். +இப்பொழுது வரை நீங்கள் ரெக்ரஷன் என்பது என்ன என்று கற்றுக்கொண்டது மற்றும் இந்த பாடத்தில் பயன்படுத்தப்படும் பரங்கிக்குருவி விலை தரவுகள் மூலம் எடுத்துக்காட்டு தரவுகளை ஆராய்ந்துள்ளீர்கள். நீங்கள் இந்த தரவை Matplotlib மூலம் காட்சிப்படுத்தவும் செய்துள்ளீர்கள். -இப்போது நீங்கள் ML க்கான regression இல் மேலும் நுழைய தயாராக உள்ளீர்கள். தரவுகளை காண்பிப்பது அவற்றை புரிந்துகொள்ள உதவுகிறது, ஆனாலும் இயந்திரக் கற்றல் மாட்சிமை என்பது _மாதிரிகளை பயிற்சி செய்வதில்_ உள்ளது. மாதிரிகள் கடந்த தரவுகளில் பயிற்சி பெற்று தரவு சார்புகளை தானாக பறைசெய்கின்றன, மேலும் புதிய தரவிற்கான முடிவுகளை கணிக்க உதவுகின்றன, இந்த மாதிரி பழைய தரவுகளை காட்டியதில்லை. +இப்பொழுது, இயந்திரக் கற்றலுக்கான ரெக்ரஷனில் ஆழமாக நுழைய தயாராக உள்ளீர்கள். காட்சிப்படுத்தல் தரவை புரிந்து கொள்ள உதவுகிறது, ஆனால் இயந்திரக் கற்றலின் உண்மையான சக்தி _மாதிரிகளை பயிற்சிசெய்யும்_ செயலிலிருந்து வருகிறது. மாதிரிகள் கடந்த கால தரவில் பயிற்சி பெற்று, தரவின் சார்புகளை தானாகவே அடையாளம் காண்கிறன, மேலும் புதிய தரவுகள் குறித்து (மாதிரி முன்பே பார்க்காதவை) முடிவுகளை கணிக்க உதவுகின்றன. -இந்த பாடத்தில், நீங்கள் இரண்டு regression வகைகள், _அடிப்படை நேரியல் regression_ மற்றும் _பல்கோண regression_ கொஞ்சம் கணிதத்துடன் பற்றி கற்றுக்கொள்வீர்கள். அவை pumpkin விலை கணிக்க உதவும், உள்ளீட்டு தரவை பொருத்து. +இந்த பாடத்தில், இரண்டு வகை ரெக்ரஷன்கள் பற்றி கூடுதல் கற்றுக்கொள்வீர்கள்: _அடிப்படையான நேரியல் ரெக்ரஷன்_ மற்றும் _பல்கோணம் ரெக்ரஷன்_, மற்றும் இத்தொழில்நுட்பங்களுக்கான சில கணிதங்களும். இவை பரங்கிக்குருவி விலைகளை பல்வேறு உள்ளீட்டு தரவுகளைப் பொருத்து கணிக்க உதவும். -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML தொடக்கநரர்களுக்கான - நேரியல் ரெக்ரஷன் புரிதல்](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML தொடக்கநரர்களுக்கான - நேரியல் ரெக்ரஷன் புரிதல்") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து நேரியல் regression குறித்த சிறு வீடியோ சர்போட்டைப் பெறவும். +> 🎥 மேலுள்ள படத்தை கிளிக் செய்து நேரியல் ரெக்ரஷன் குறித்த ஒரு குறுகிய வீடியோக்களை பார்க்கவும். -> இந்த பாடத்திட்டத்தில், கணிதத்தில் மிகக் குறைந்த அறிவுப்பார்வையை மதிப்பிடுகிறோம், மற்றும் வேறு துறையிலிருந்து வரும் மாணவர்களுக்கு சோதனை செய்யிறோம், ஆகையால் குறிப்பு, 🧮 அழைப்புகள், வரைபடங்கள் மற்றும் பிற கற்றல் கருவிகளை கவனியுங்கள். +> இந்த பாடத்திட்டத்தில், கணிதம் குறைந்த அளவாக தெரிந்திருப்பத assumptionsஇல் உள்ளோம், மற்ற துறைகள் வந்துள்ள மாணவர்களுக்குப் புரியுமாறு செய்ய முயல்கிறோம்; எனவே குறிப்பு குறிப்புகள், 🧮 கணக்கீடுகள், வரைபடங்கள் மற்றும் பிற கற்றல் உதவிகள் மூலம் விளக்கங்களைக் கொடுக்கின்றோம். -### முன் அறிவு +### முன்னோடியான அறிவு -இப்போது நாம் பார்க்கும் pumpkin தரவின் அமைப்புக்குப் பழகியிருக்க வேண்டும். இந்த பாடத்தில் முன்னமே preloaded மற்றும் pre-cleaned செய்யப்பட்டுள்ளது. இதில் pumpkin விலை புதிய தரவு பெட்டியில் bushel வீதம் காட்டப்பட்டுள்ளது. Visual Studio Codeல் இந்த notebook இனை கெர்னல்களில் இயக்கு என்பது உறுதியாக்கொள்ள வேண்டும். +நீங்கள் இன்று பரங்கிக்குருவி தரவு அமைப்பைப் பற்றி பழகியிருப்பீர்கள். இந்த பாடத்திட்டத்தின் _notebook.ipynb_ கோப்பில் அது முன் ஏற்றப்பட்டு சுத்தம் செய்யப்பட்டு உள்ளது. அங்கு பரங்கிக்குருவி விலை புஷல் ஒன்றுக்கு கணிக்கப்பட்டு புதிய தரவுக் கட்டத்தில் காணப்படுகிறது. Visual Studio Code இனிப்புகளில் இந்த நோட்புக்களை இயக்க முடியும் என்பதை உறுதிப்படுத்திக்கொள்ளவும். -### தயாரிப்பு +### தயார் செய்தல் -நீங்கள் இந்த தரவை ஏற்று அதில் கேள்விகள் கேட்கப் போகிறீர்கள் என்பதைக் நினைவுக்கொள்ளுங்கள். +ஒரு நினைவூட்டல் போல, நீங்கள் இந்த தரவை ஏற்றிக் கொண்டு அதை பற்றி கேள்விகள் கேட்கவிருந்தீர்கள். -- pumpkins வாங்க எந்த நேரம் சிறந்தது? -- குறுந்துண்டு pumpkins ஒரு பெட்டிக்கு என்ன விலை எதிர்பார்க்கலாம்? -- பால்-bushel தொட்டிகளில் வாங்க மறுப்பதா அல்லது 1 1/9 bushel பெட்டியில் வாங்குமா? -நாம் இந்த தரவை ஆராய்வு செய்கிறோம். +- பரங்கிக்குருவிகளை வாங்க சிறந்த நேரம் எப்போது? +- ஒரு சிறிய பரங்கிக்குருவி தொகுப்பின் விலை என்ன இருக்கலாம்? +- அதைப் பாதி புஷல் கூடை அல்லது 1 1/9 புஷல் பெட்டியில் வாங்குவது நல்லதா? +இந்த தரவை இன்னும் ஆராய பயிற்சியைத் தொடர்வோம். -கடந்த பாடத்தில், நீங்கள் Pandas data frame உருவாக்கி அதனை ஆரம்ப தரவின் ஒரு பகுதியுடன் நிரப்பி, விலையை bushel கூறு விகிதத்தால் சீரமைத்துள்ளீர்கள். ஆனால், இதனால் நீங்கள் சுமார் 400 தரவு புள்ளிகளை மட்டுமே மற்றும் இறறுநீண்ட காலங்களுக்குப் பொருந்தி சேகரித்துள்ளீர்கள். +முந்தைய பாடத்தில், நீங்கள் ஒரு Pandas தரவுக் கட்டமைப்பை உருவாக்கி, அசல் தரவுத்தொகுதியின் ஒரு பகுதிக்கு விலை பொருத்தப்பட்டு படிந்துள்ளீர்கள், புஷல் எண்ணிக்கையின் அடிப்படையில் விலை நிலைத்திருத்தம் செய்யப்பட்டது. ஆனால் அதனால், சுமார் 400 தரவுப் புள்ளிகள் மட்டுமே வரிசைப்படுத்தப்பட்டன மற்றும் முந்தைய காலக் காலங்களுக்குப் பொருந்தியது. -இந்த பாடத் தொடர்பாக உள்ள notebook இல் முன்னதாக ஏற்றப்பட்ட தரவைக் கவனியுங்கள். அங்கு ஆரம்ப scatterplot வரைபடம் மாத தரவை காட்டுகிறது. கூடுதலான தரவின் இயல்பைப் புரிந்துகொள்ள, மேலும் சுத்திகரிப்பது வாய்ப்பு உள்ளது. +இந்த பாடத்திட்டத்தின் கூடுதலான நோட்புக் முன் ஏற்றிய தரவை பாருங்கள். இதில் ஒரு தொடக்கமான ஸ்காட்டர்ப்ளாட் வரைபடமாக மாத விவரங்கள் காட்டப்பட்டுள்ளது. மீண்டும் அதனை சுத்தம் செய்யும்போது தரவின் இயல்பைக் குறித்த கூடுதல் விவரங்களைப் பெறலாம். -## ஒரு நேரியல் regression கோடு +## ஒரு நேரியல் ரெக்ரஷன் கோடு -பாடம் 1ல் கற்றுக்கொண்டது போல, linear regression பயிற்சியின் நோக்கம் கோடை வரைபடத்தைக் கடைப்பிடிப்பதற்குள் இருக்கிறது: +பாடம் 1 இல் நீங்கள் கற்றுக்கொண்டது போல, நேரியல் ரெக்ரஷன் செயல்முறை நோக்கு: -- **மாற்றியமை கடத்தியவை** ஓர் மாறில்களுக்கு இடையேயான தொடர்பை காட்ட -- **பரிந்துரைகள் செய்ய** புதிய தரவு புள்ளி அந்தக் கோட்டிற்கு எங்கிருக்கும் என்பதில் துல்லியமான கணிப்பை செய்ய +- **மாறி தொடர்புகளை காட்டுக**. மாறிகளுக்கு இடையிலான தொடர்பை காண்பிக்கவும் +- **முன்னறிவிப்புகளைச் செய்யும்**. புதிய தரவுப் புள்ளி அந்த கோட்டோடு எப்படி தொடர்புடையிருக்கும் என்பதை துல்லியமாக கணிக்கவும் -**Least-Squares Regression** இல் இந்த வகையான கோடு வரைபடம் கிட்டத்தட்ட வழக்கம். Least-Squares என்பது, மாதிரியின் மொத்த பிழையை குறைத்துக் கொள்ளும் செயல்முறையை குறிக்கும். ஒவ்வொரு தரவு புள்ளிக்கும், நாங்கள் உண்மையான புள்ளி மற்றும் கோடி இடையே நேரடி தொலைவான (residual என்று அழைக்கப்படும்) அளவை அளவிடுகிறோம். +**குறைந்த இடர்களுக்கான ரெக்ரஷன் (Least-Squares Regression)** இல் இந்த வகை கோட்டை வரைப்பது சாமானியம். "குறைந்த இடர்கள்" என்பது மாதிரியிலுள்ள முழு பிழையை குறைக்க முயற்சிக்கும் செயல்முறையைக் குறிக்கும். ஒவ்வொரு தரவுப் புள்ளிக்கும், நமது ரெக்ரஷன் கோடு மற்றும் புள்ளி இடையே உள்ளது ஆகிய செங்குத்து தூரம் (அதை மீதமுள்ளவை என கூறுவர்) அளக்கப்படுகிறது. -இதைக் مربع முறையில் மதிப்பீடு செய்வதற்குக் காரணங்கள் இரண்டு: +இத்தூரங்களுக்கு மேற்கோள்கின்ற இரண்டு முக்கிய காரணங்கள்: -1. **திசை சாரா அளவு:** -5 என்ற பிழையை +5 பிழை போலவே கையாள்வது தேவை. مربع செய்வதால் அனைத்து மதிப்புகளும் நேர்மறை ஆனவை ஆகின்றன. +1. **திசை விட அளவு முக்கியம்**: -5 பிழை மற்றும் +5 பிழை இரண்டையும் சமமாக பார்க்க வேண்டும். அளவுகளின் வரம்பைக் கவனிக்க வெளிப்படுத்தல் அனைத்து மதிப்புகளையும் நேர்மறையாக மாற்றும். -2. **விலகிய தரவுகளுக்கு அதிகம் போக்குதல்:** பெரிய பிழைகள் இல் مربع அதிக மதிப்பளிக்கிறது, அதனால் கோடு அந்த புள்ளிகளுக்கு நெருக்கம் படுகிறது. +2. **மாறான புள்ளிகளுக்கு அதிக தண்டனை**: பெரும் பிழைகளுக்கு அதிக முக்கியத்துவம் கொடுத்து கோட்டை அருகில் இருக்க வைக்கிறது. -பிறகு அனைத்து مربع மதிப்புகளையும் கூட்டுகிறோம். குறைந்தபட்சமான மொத்தம் (சிறந்த துல்லியத்துடன்) உள்ள கோட்டை கண்டுபிடிப்பதே நோக்கம்— அதனால் இது "Least-Squares" எனப்படும். +பின்பு நாங்கள் அனைத்து அளவுக் கணக்குகளையும் கூடச் சேர்ப்போம். நமது நோக்கம் இந்த கூட்டு மதிப்பின் குறைந்த விலை கொண்ட குறிப்பிட்ட கோட்டை கண்டுபிடிப்பதே (இது தான் "குறைந்த இடர்கள்" என்ற பெயரின் காரணம்). -> **🧮 எண்கணிதம் காட்டவும்** -> இது _சிறந்த பொருந்தக்கூடிய கோடு_ என அழைக்கப்படுகின்றது மற்றும் [ஒரு சமன்பாடால்](https://en.wikipedia.org/wiki/Simple_linear_regression) வெளிப்படுகிறது: +> **🧮 கணிதத்தை காண்பி** +> இந்த கோடு, _சிறந்த பொருத்த கோடு_ என்று அழைக்கப்படுவது, [ஒரு சமன்பாட்டில்](https://en.wikipedia.org/wiki/Simple_linear_regression) வெளிப்படுத்தலாம்: > > ``` > Y = a + bX > ``` -> -> `X` என்பது ‘விளக்க மாறி’. `Y` என்பது ‘மாறாக உள்ள மாறி’. கோட்டின் சாய்வு `b` ஆகும் மேலும் `a` என்பது y-இலக்கு, இது `X = 0` ஆகும் போது `Y`ன் மதிப்பை குறிக்கிறது. -> ->![calculate the slope](../../../../translated_images/ta/slope.f3c9d5910ddbfcf9.webp) -> -> முதலில், சாய்வு `b`-ஐ கணக்கிடவும். தகவல்காட்சி [Jen Looper](https://twitter.com/jenlooper) என்பவருடையது -> -> மற்றொரு வழியில் கூறுவதில், pumpkin தரவின் ஆரம்ப கேள்வியை கூறும் போது: "ஒரு pumpkin விலையை மாத வாரியாக predict செய்ய", `X` விலை மற்றும் `Y` விற்பனை மாதமாக இருக்கும். -> ->![complete the equation](../../../../translated_images/ta/calculation.a209813050a1ddb1.webp) -> -> Y இன் மதிப்பை கணக்கிடுங்கள். நீங்கள் $4 ஆல் பாவிக்கிறீர்கள் எனில் அது ஏப்ரல் மாதம் என்பதுதான்! தகவல்காட்சி [Jen Looper](https://twitter.com/jenlooper) என்பவருடையது -> -> கோட்டின் சாய்வும், இப்படியே மதிப்பிடும் கோட்டின் இடைச்சேதம் (intercept) கூட Y இடம் நிரந்தரப்படுத்தும் இடமும் கணிதத்தில் அடங்கியிருக்க வேண்டும். -> -> இந்த மதிப்பீட்டுக்கான முறைகளை [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) இணையதளத்தில் பார்க்கலாம். மேலும் [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) இல் எண்களின் மதிப்புகள் கோட்டிற்கு எப்படி பாதகம் செய்கின்றன என காணலாம். - -## தொடர்பு (Correlation) - -இன்னொரு முக்கியமான மாறி என்பது கொடுக்கப்பட்டு X மற்றும் Y மாறில்களுக்கு இடையேயான **Correlation Coefficient** ஆகும். scatterplot பயன்படுத்தி இதை விரைவாக காட்சி படுத்தலாம். தரவு புள்ளிகள் ஓர் நேரடி கோட்டில் சீராக பரவியிருந்தால் அதிக தொடர்பு, அந்நிலையை வாயிலாக புள்ளிகள் எங்கெங்கும் பரவியிருந்தாலும் குறைந்த தொடர்பு. - -சிறந்த linear regression மாதிரி, Least-Squares Regression முறையிலும் regression கோட்டுடன் Correlation Coefficient 1க்கு அருகிலும் (0க்கு அல்ல) இருப்பதே. - -✅ இந்த பாடத்திற்கான notebook இனை இயக்கு, Month மற்றும் Price இடையேயான scatterplot பார்க்கவும். Month மற்றும் Price இடையே தாவரவியல் தொடர்பு அதிகமாக இருக்கிறதா, குறைவா என்ற விவரமளித்துக் கொள்ளவும். இதை Month பதிலாக வருடத்தின் நாட்கள் (day of the year) போன்ற சுருக்கமான அளவீட்டுடன் மாற்றியால் நிலைமைகள் மாறுமா? - -கீழே உள்ள குறியீட்டில், தரவை சுத்திகரித்து, `new_pumpkins` எனும் data frame உருவாக்கிவிட்டோம், இதோ அதர்வானது: - -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 - -> தரவை சுத்திகரிக்கும் குறியீடு [`notebook.ipynb`](notebook.ipynb) இல் உள்ளது. கடந்த பாடத்தில் செய்த அதே சுத்திகரிப்பு நடவடிக்கைகள் கையாண்டோம். `DayOfYear` பத்தியை பின்வரும் வெளிப்பாட்டின் மூலம் உருவாக்கியுள்ளோம்: +> +> `X` என்பது 'விளக்க மாறி', `Y` என்பது 'பொறுப்பு மாறி'. கோட்டின் சரிவு `b`; `a` என்பது y குறுக்கு இடைநிலை. `X = 0` ஆக இருக்கும் போது `Y` மதிப்பைக் குறிக்கும். +> +>![சரிவைக் கணக்கிடுக](../../../../translated_images/ta/slope.f3c9d5910ddbfcf9.webp) +> +> முதலில் சரிவு `b`-ஐ கணக்கிடுக. தகவல்படம்: [ஜென் லூப்பர்](https://twitter.com/jenlooper) +> +> வேறு வார்த்தைகளில், நமது பரங்கிக்குருவி தரவின் அசல் கேள்வி: "ஒரு பரங்கிக்குருவி புஷல் விலையில் மாதம் அடிப்படையில் கணிதம் செய்ய", `X` விலை மற்றும் `Y` விற்பனை மாதம் ஆகும். +> +>![சமன்பாட்டை முடிக்கவும்](../../../../translated_images/ta/calculation.a209813050a1ddb1.webp) +> +> `Y` மதிப்பைக் கணக்கிடுக. நீங்கள் சுமார் $4 செலுத்தினால், அது ஏப்ரல் மாதமாக இருக்கலாம்! தகவல்படம்: [ஜென் லூப்பர்](https://twitter.com/jenlooper) +> +> கோட்டின் சரிவு மற்றும் இடைநிலையைக் கணக்கிடும் கணிதம், `X = 0` ஆகும்போது `Y` எங்கு அமைகிறது என்பதையும் கண்டறிவது அவசியம். +> +> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) இனிப்பது கணக்கீடுகளை கவனகரமாக பார்க்கவும். மேலும் [குறைந்த இடர் கணக்கி](https://www.mathsisfun.com/data/least-squares-calculator.html) கோட்டை மொத்த மதிப்புகளை எப்படி பாதிக்கிறது என்பதைக் காணவும். + +## தொடர்பு + +மேலும் ஒரு முக்கியமான பதம் விளக்கப்பட வேண்டும் என்பது `X` மற்றும் `Y` மாறிகளுக்கு இடையேயான **தொடர்பு காரிகை**. ஸ்காட்டர்பிளாட்டின் மூலம் இக்காரிகையை எளிதில் காணலாம். ஒரு நேர்கோட்டில் சீராக விரிந்துள்ள புள்ளிகளுக்கு உயர் தொடர்பு உள்ளது; ஆனால் புள்ளிகள் பரவியிருக்கிறபோது குறைந்த தொடர்பு இருக்கும். + +சிறந்த நேரியல் ரெக்ரஷன் மாதிரி தான் பின்வரும் தன்மையை உடையது: `Least-Squares Regression` முறையுடன் ஒரு உயர் தொடர்பு காரிகை (0 விட 1க்கு நெருங்கிய) கொண்டது. + +✅ இந்த பாடத்திட்டத்துடன் கூடிய நோட்புக் ஓடுங்கள் மற்றும் மாதத்திற்கான விலை ஸ்காட்டர்ப்ளாட்டைப் பாருங்கள். உங்கள் பார்வையின் படி, பரங்கிக்குருவி விற்பனைகளுக்கான மாதத்துக்கும் விலைக்கும் இடையேயான தரவு உயர் அல்லது குறைந்த தொடர்பு உள்ளதா? `Month` மாறி பதிலாக வருட நாள் (ஆதரவு காலத்தின் தொடக்கம் முதல் நாட்கள் எண்ணிக்கை) பயன்படுத்தினால் அது மாறுமா? + +பின்வரும் குறியீட்டில், நாம் தரவை சுத்தமாக்கி, கீழ்க்கண்ட மாதிரியில் தோற்றம் கொண்ட `new_pumpkins` என்ற ஒரு தரவுக் கட்டமைப்பைக் கொண்டிருப்பதாக எண்ணுகிறோம்: + +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 + +> தரவைச் சுத்தம் செய்வதற்கான குறியீடு [`notebook.ipynb`](notebook.ipynb) இல் உள்ளது. முந்தைய பாடத்தில் செய்த நிலையான சுத்தம் செய்யும் படிகளே இங்கே பிரயோகிக்கப்பட்டுள்ளன, மேலும் `DayOfYear` நிரலை பின்வரும் சமன்பாட்டைப் பயன்படுத்தி கணக்கிட்டுள்ளோம்: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +இப்போது, நேரியல் ரெக்ரஷன் பின்னணியில் உள்ள கணிதத்தை புரிந்துகொண்டு, எந்த பஞ்சுப் பாட்டில் தொகுப்புக்கு சிறந்த விலைகள் இருக்கும் என்பதை கணிக்க ஒரு கேள்வி மாதிரியை உருவாக்குவோம். விடுமுறை பரங்கிக்குருவி பண்ணைக்கு பரங்கிப்பொருட்கள் வாங்குபவர், இந்தத் தகவலைச் கொண்டு தங்கள் கொள்முதல் முடிவுகளை மேம்படுத்த விரும்புவர். -இப்போது linear regression மேலான கணிதம் புரிந்திருக்கிறது; pumpkin விலையில் எது சிறந்தது என்று predict செய்ய Regression மாதிரி உருவாக்குவோம். ஓர் pumpkin கிளப்புக்காக pumpkins வாங்கும் நபர், வாங்கும் தொகுதிகளை முறையாக தேர்ந்தெடுக்க இதன் உதவிச்செய்யலாம். - -## தொடர்பை தேடுதல் +## தொடர்பைத் தேடுதல் -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![ML தொடக்கநரர்கள் - தொடர்பைக் காண்பது: நேரியல் ரெக்ரஷனுக்கான முக்கியம்](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML தொடக்கநரர்கள் - தொடர்பைக் காண்பது: நேரியல் ரெக்ரஷனுக்கான முக்கியம்") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து தொடர்பு குறித்த சிறிய காணொளி பெறவும். +> 🎥 மேலுள்ள படத்தை கிளிக் செய்து தொடர்பு பற்றிய குறுகிய வீடியோவைப் பாருங்கள். -கடந்த பாடத்தில், விதிவிலக்கு, மாதத்திற்கு பேராசை விலை இப்படியே இருந்தது என்று பார்த்திருப்பீர்கள்: +முந்தைய பாடத்தில் நீங்கள் கண்டிருப்பீர்கள், வெவ்வேறு மாதங்களுக்கு சராசரி விலை இதுபோன்று காணப்படுகிறது: -Average price by month +மாதம் அடிப்படையிலான சராசரி விலை -இதன் மூலம் தொடர்பு இருக்கவேண்டும் என்றும், நாங்கள் linear regression மாதிரியை பயிற்சி செய்து `Month` மற்றும் `Price`, அல்லது `DayOfYear` மற்றும் `Price` இடையேயான தொடர்பை கணிக்கலாம். கீழே உடன் வரும் scatter plot, அந்த இரண்டாவது தொடர்பை காட்டுகிறது: +இதனால் எந்தவொரு தொடர்பும் இருக்க வேண்டும் என்று தோன்றுகிறது, மேலும் `Month` மற்றும் `Price` அல்லது `DayOfYear` மற்றும் `Price` இடையேயான உறவை கணிக்க நேரியல் ரெக்ரஷன் மாதிரியை பயிற்சி செய்தால் பலனுள்ளதாக இருக்கும். கீழே அப்படி தொடர்புடைய தரவு பார்வை: -Scatter plot of Price vs. Day of Year +விலை மற்றும் வருட நாளின் ஸ்காட்டர்ப்ளாட் -`corr` function பயன்படுத்தி தொடர்பு சரிபார்ப்போம்: +`corr` செயல்பாட்டைப் பயன்படுத்தி தொடர்பை காண்போம்: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -மாதத்தில் -0.15 மற்றும் தினத்தில் -0.17 ஆகியவை போன்ற குறைந்த தொடர்புகள் இருப்பதாக தெரிகிறது, ஆனால் வேறு முக்கியமான தொடர்பு இருக்கலாம். pumpkin வகைகள் விலை ஒருங்கிணைப்பின் வேறுபாடு இருப்பதாக தோன்றுகிறது. இதில் நம்பிக்கை பெற pumpkin வகைகளுக்கு வெவ்வேறு வண்ணங்களில் பரவியானது காட்டுவோம். `scatter` வரைபட செயல்பாட்டுக்கு `ax` அளவுருவை கொடுத்து அனைத்து புள்ளிகளையும் ஒரே வரைபடத்தில் காட்டலாம்: + +`Month` முறையில் -0.15 மற்றும் `DayOfYear` முறையில் -0.17 என்ற அளவுக்கு குறைந்த தொடர்பு உள்ளது போலத் தெரிகிறது; ஆனால் வேறு முக்கியமான உறவு இருக்கலாம். விலை நிலைகள் வெவ்வேறு பரங்கிக்குருவி வகைகளுக்கு முரண்படுகின்றன. இந்த எண்ணத்தை உறுதிப்படுத்த, ஒவ்வொரு வகைக்கும் வேறு வண்ணத்தைப் பயன்படுத்தி ஸ்காட்டர்ப்ளாட் வரைபடத்தை இடுவோம். `scatter` வரைபட செயல்பாட்டுக்கு `ax` அளவுருவை வழங்கி அனைத்து புள்ளிகளும் ஒரே வரைபடத்தில் இருப்பதாக ஆரம்பிக்கலாம்: ```python ax=None @@ -138,75 +140,77 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +விலை மற்றும் வருட நாள் ஸ்காட்டர்ப்ளாட் வண்ணத்துடன் -Scatter plot of Price vs. Day of Year - -மாத இறுதியில் pumpkin வகை விலை மீது விடுவிக்கப்படும் விளைவுகள் தேதி விட அதிகமானது என்பதை மாதிரியாக்கலாம்: +நமது ஆய்வு பரங்கிக்குருவி வகை விலை பருவத்தை விட விலைக்கு அதிக தாக்கம் ஏற்படுத்துகிறது என்று காட்டுகிறது. இதை ஒரு பட்டியல்படமாகவும் காணலாம்: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +விலை மற்றும் வகை தொடர்புடைய பட்டியல்படம் -Bar graph of price vs variety - -நாம் 'pie type' pumpkin வகையில் மட்டும் கவனம் செலுத்தி நாளில் விலை மீது விலை விளைவுகளை பார்க்கலாம்: +இப்பொழுது நாம் 'பை வகை' என்ற பரங்கிக்குருவி வகையிலேயே கவனம் செலுத்தி, விற்பனை தேதியின் விலை மீது தாக்கத்தை பார்ப்போம்: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year + +பை வகை பரங்கிக்குருவி ஸ்காட்டர்ப்ளாட் -இப்போது `Price` மற்றும் `DayOfYear` இடையேயான தொடர்பை `corr` மூலம் கணக்கிடினால், `-0.27` போன்ற மதிப்பை பெறுவீர்கள் – அதாவது கணிப்புத் தன்மைக்கான மாதிரியின் பயிற்சி அர்த்தமுள்ளதாகும். +`corr` மூலம் `Price` மற்றும் `DayOfYear` இடையேயான தொடர்பை கணக்கிடுவோம், அது சுமார் `-0.27` இருக்கும் — அதன்படி கணிக்கும் மாதிரிகள் பயிற்சி செய்வது பொருத்தமாகும். -> linear regression பயிற்சி செய்யும் முன், தரவு சுத்தமாக இருப்பதை உறுதி செய்வது அவசியம். linear regression காணாமல் போன மதிப்புகளுடன் நல்ல செயல்பாட்டைத் தராது; ஆகையால் வெறும் காலியான செல்களை அகற்றுவது நன்றானது: +> நேரியல் ரெக்ரஷன் மாதிரியை பயிற்சி செய்யும் முன் தரவு சுத்தமாக இருக்க வேண்டும். நேரியல் ரெக்ரஷன் குறைந்த மதிப்புள்ள தரவுகளுடன் சரியல்ல. ஆதலால் வெற்றிடங்களைக் கழிப்பது நல்லது: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` + +மறுபடியும், வெற்றிடங்களை நிரப்ப எதிர்கால நிலைகளின் சராசரி மதிப்புகள் கொண்டு நிரப்புவது ஒரு நடுத்தரமாக இருக்கும். -மற்றொரு வழி காலியான மதிப்புகளை கோலத்தின் சராசரி மதிப்புகளால் நிரப்புவது. - -## எளிமையான நேரியல் Regression +## எளிய நேரியல் ரெக்ரஷன் -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ML தொடக்கநரர்கள் - Scikit-learn மூலம் நேரியல் மற்றும் பல்கோணம் ரெக்ரஷன்](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML தொடக்கநரர்கள் - Scikit-learn மூலம் நேரியல் மற்றும் பல்கோணம் ரெக்ரஷன்") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து linear மற்றும் polynomial regression குறித்த சிறு வீடியோ பார்வை பெறவும். +> 🎥 மேலுள்ள படத்தை கிளிக் செய்து நேரியல் மற்றும் பல்கோணம் ரெக்ரஷன் குறித்த குறுகிய வீடியோக்களைப் பாருங்கள். -நாம் Linear Regression மாதிரியை பயிற்சியிட Scikit-learn நூலகத்தை பயன்படுத்துவோம். +நாம் எங்கள் நேரியல் ரெக்ரஷன் மாதிரியை பயிற்சி செய்ய **Scikit-learn** நூலகத்தை பயன்படுத்தப் போகிறோம். ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -முதல் நிலையாக உள்ளீட்டு மதிப்புகள் (அம்சங்கள்) மற்றும் எதிர்பார்க்கப்படும் வெளியீடு (குறி) பிரித்து numpy arrays ஆக மாற்றுவோம்: + +நீங்கள் முதலில் உள்ளீட்டு மதிப்புகளை (அம்சங்கள்) மற்றும் எதிர்பார்க்கப்படும் வெளியீட்டை (லேபிள்) தனித்தனி numpy வரிசைகளாக பிரிக்கிறோம்: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> கவனிக்க வேண்டியது, நாம் உள்ளீட்டை Linear Regression தொகுப்பின் சரியான புரிதலுக்காக `reshape` செய்யவேண்டியிருந்தது. Linear Regression 2D வரிசையாக உள்ளீட்டை எதிர்பார்க்கிறது, அங்கு வரிசையில் ஒவ்வொரு வரிசையும் உள்ளீட்டு அம்சப்படிவத்தை வைத்திருக்கும். எங்கள் நிலைமை ஓர் உள்ளீட்டுடன் உள்ளது; எனவே N×1 வடிவிலான வரிசை ஒன்று தேவை, இதில் N என்பது தரவுத் தொகுதி அளவு ஆகும். -> எச்சரிக்கை: Linear Regression தொகுப்பை சரியாக புரிந்துகொள்ள,input தரவுகள் `reshape` செய்யப்பட்டு 2D array ஆக மாற்ற வேண்டியது அவசியம். Linear Regression 2D array (ஒரு வரி ஒரு அம்ச குறியீடு) வடிவம் எதிர்பார்க்கிறது. நமது வழியில், உள்ளீடு ஒன்றை மட்டும் கொண்டு இருப்பதால், வடிவம் N×1 ஆக வேண்டும், இதில் N என்பது தரவு அளவு. - -பின்னர், பயிற்சி மற்றும் சோதனை தரவுதொகுதிகளை பிரித்து, பயிற்சியில் மாதிரியை சரிபார்க்க வேண்டும்: +பின்பு, பயிற்சி மற்றும் சோதனை தரவுக் கட்டமைப்புகளாக தரவை பிரிக்க வேண்டும், அப்படித்தான் பயிற்சி முடிந்ததும் நமது மாதிரியை சரிபார்க்க முடியும்: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -இறுதியில், Linear Regression மாதிரியை தவிர்க்க இரண்டு வரிகளிலேயே பயிற்சி செய்கிறது. `LinearRegression` பொருளை வரையறுக்கி, அதை `fit` முறையால் தரவுக்கு பொருத்துவோம்: + +கடைசியாக, நேரியல் ரெக்ரஷன் மாதிரியை பயிற்சி செய்வது இரண்டு கட்டங்களையே கொண்டது. `LinearRegression` பொருளை வரையறுக்கி, அதனை `fit` முறையால் நம் தரவுக்கு பொருத்துகிறோம்: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` + -`LinearRegression` பொருள் `fit` செய்த பிறகு, அனைத்து ரெגרெஷன் коэффициентுகளை `.coef_` சொத்தைப் பயன்படுத்தி அணுக முடியும். எங்கள் நிலையில், ஒரு коэффициентே உள்ளது, அது `-0.017` கிட்டத்தட்ட இருக்க வேண்டும். இதன் பொருள், விலைகள் காலத்தோடு சிறிது குறையும் போலும், ஆனால் அதிகமாக அல்ல, ஒரு நாளுக்கு சுமார் 2 சென்ட். ரெגרெஷன் வையின் Y அச்சுடன் கட்டாயிடும் புள்ளியை `lin_reg.intercept_` மூலம் அணுகலாம் - இது எங்கள் நிலையில் சுமார் `21` இருக்கும், அதாவது வருடத்தின் தொடக்கத்தில் விலை. +`fit` செய்த பிறகு `LinearRegression` பொருள் ரெக்ரஷனின் அனைத்து கூட்டுறவுகளையும் கொண்டிருக்கும், அவற்றை `.coef_` சொத்து மூலம் அணுகலாம். எங்கள் வழக்கில், ஒரு மட்டுமே கூட்டுறவு உள்ளது, அது சுமார் `-0.017` இருக்க வேண்டும். இது விலை காலத்துடன் சிறிது குறையும் போன்று தெரிகிறது, ஆனால் அதிகமாக இல்லாமல், தினத்திற்கு சுமார் 2 சென்ட் 정도. நாமே ரெக்ரஷன் Y-அச்சுடன் கடிக்கும் இடத்தை `lin_reg.intercept_` மூலம் அணுகலாம் - எங்கள் வழக்கில் இது சுமார் `21` இருக்கும், ஆண்டு தொடக்கத்தின் விலையை குறிக்கின்றது. -எங்கள் மாதிரி எவ்வளவு நுட்பமாக உள்ளது என்று பார்க்க, நாம் ஒரு சோதனை தரவுத்தொகுப்பில் விலை கணிக்கலாம், பிறகு எவ்வளவு நமது கணிப்புகள் எதிர்பார்க்கப்பட்ட மதிப்புகளுக்கு அருகில் உள்ளது என்பதை மதிப்பிடலாம். இது root mean square error (RMSE) அளவுகோலை பயன்படுத்தி செய்ய முடியும், இது எதிர்பார்க்கப்படும் மற்றும் கணிக்கப்பட்ட மதிப்புகளுக்கிடையேயான அனைத்து சதுர வேறுபாடுகளின் சராசரி வேர் ஆகும். +எங்கள் மாதிரி எவ்வாறு துல்லியமாக இருக்கின்றது என்பதைப் பார்க்க, நாமே ஒரு சோதனை தரவுத்தொகுதியில் விலைகளை கணிக்கலாம், பின்னர் நமது கணிப்புகள் எதிர்பார்க்கப்பட்ட மதிப்புகளுடன் எவ்வளவு நெருக்கமாக உள்ளது என்பதை அளக்கலாம். இது ருட் மீன் ஸ்கொயர் ஏரர் (RMSE) அளவுகளால் செய்யப்படலாம், இது எதிர்பார்க்கப்பட்ட மற்றும் கணிக்கப்பட்ட மதிப்புகளுக்கு இடையேயான அனைத்து சதுர வேறுபாடுகளின் சராசரி வேரின் வரவு ஆகும். ```python pred = lin_reg.predict(X_test) @@ -214,38 +218,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -எமது பிழை சுமார் 2 புள்ளிகள் இருக்குமென தெரிகிறது, இது ~17% ஆகும். மிகவும் நன்றாக இல்லை. மாதிரி தரத்தின் மற்றொரு குறியீடு **coefficient of determination** ஆகும், இதைப் பின்வருமாறு பெறலாம்: + +எமது பிழை சுமார் 2 புள்ளிகள், அதாவது ~17% ஆக இருக்கிறது. அது மிக நல்லது அல்ல. மாதிரி தரத்தின் மற்றொரு குறியீடு **coefficient of determination** ஆகும், இதைப் பிறகு பெறலாம்: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - -மதிப்பு 0 என்றால், மாதிரி உள்ளீட்டு தரவை எடுத்துக்கொள்வதில்லை என்றும், *மிக மோசமான நேர்காணல் முன்மாதிரி* போல செயல்படுகிறது என்றும் பொருள், இது வெறும் முடிவின் சராசரி மதிப்பாகும். மதிப்பு 1 என்றால், நாம் எதிர்பார்க்கப்படும் அனைத்து வெளியீடுகளையும் முற்றிலும் கணிக்க முடியும் என்று பொருள். எங்கள் நிலையில், коэффициент சுமார் 0.06, இது மிகவும் குறைவாக உள்ளது. -சோதனை தரவுத்தொகுப்பைக் கூட்டி ரெเกஸ்ஸனின் கோட்டுடன் வரைபடம் வரைதல் மூலம் எமது மாதிரி எவ்வாறு செயல்படுகிறது என்பதை தெளிவாக பார்க்கலாம்: +மதிப்பு 0 என்றால், மாதிரி உள்ளீட்டு தரவை கவனிக்கவில்லை என்று பொருள், அது *கெட்ட linear முன்னறிவிப்பாளர்* ஆக செயல்படும், அது வெறும் முடிவின் சராசரியான மதிப்பாகும். மதிப்பு 1 என்றால், நாம் அனைத்து எதிர்பார்க்கப்பட்ட வெளியீடுகளையும் சரியாக கணிக்க முடியும். எங்கள் வழக்கில், கூட்டுநிலைகள் சுமார் 0.06 ஆகும், இது மிகவும் குறைவாகும். + +சோதனை தரவையும் ரெக்ரஷன் கோட்டையும் ஒன்றாக வரைபடக்கூடியது, எங்கள் வழக்கில் ரெக்ரஷன் எப்படி வேலை செய்கிறது என்பதைச் சிறப்பாக காண: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - + Linear regression -## Polynomial Regression +## பாலினோமியல் ரெக்ரஷன் -Linear Regression இன் மற்றொரு வகை Polynomial Regression ஆகும். சில நேரங்களில், மாறிலிகளுக்கு நேர்காணல் தொடர்பு உள்ளது - ஒரு பூசணிக்காய் அதிக அளவில் இருந்தால் விலை உயர்ந்திருக்கும் - ஆனால் சில சமயங்களில் இத்தகைய தொடர்புகளை சமத்துவமான அல்லது நேரியல் கோட்டாக வரைய முடியாது. +Linear Regression இன் மற்றொரு வகை பாலினோமியல் ரெக்ரஷன் ஆகும். சில நேரங்களில், வேறுபாடுகளுக்கு நேர்காணல் தொடர்பு இருக்கலாம் - அளவில் பெரிய பூசணிக்காய் விலை அதிகம் - ஆனால் சில நேரங்களில் இந்த தொடர்புகளை பிளேன் அல்லது நேர்க் கோட்டாக வரைபடமிட முடியாது. -✅ இங்கு [இன்னும் சில எடுத்துக்காட்டுகள்](https://online.stat.psu.edu/stat501/lesson/9/9.8) உள்ளன, Polynomial Regression பயன்படும் தரவுக்கு +✅ இங்கே [மேலும் சில உதாரணங்கள்](https://online.stat.psu.edu/stat501/lesson/9/9.8) உள்ளன, பாலினோமியல் ரெக்ரஷனை பயன்படுத்த கூடிய தரவுக்கான. -Date மற்றும் Price இடையேயான தொடர்பை மறுபடியும் பாருங்கள். இந்த scatterplot நேர்காணல் கோட்டால் பகுப்பாய்வு செய்ய வேண்டுமா? விலை மாற்றமடைய முடியாது என்றாய்? இவ்வாறு இருந்தால், polynomial regression முயற்சி செய்யலாம். +தேதியும் விலையும் இடையேயான தொடர்பை மீண்டும் பாருங்கள். இந்த ஸ்காட்டர்பிளாட் கண்டிப்பாக நேர்க் கோட்டால் ஆய்வு செய்ய வேண்டுமா? விலைகள் மாற முடியாது என்று என்ன? இந்த வேழையில், நீங்கள் பாலினோமியல் ரெக்ரஷனை முயற்சிக்கலாம். -✅ Polynomial என்பது ஒரு அல்லது அதற்கு மேற்பட்ட மாறிலிகள் மற்றும் коэффициентுகள் கொண்ட கணித வெளிப்பாடுகள் ஆகும் +✅ பாலினோம் என்பது ஒருங்கிலு அல்லது பல மாறிகள் மற்றும் கூட்டாக்களைக் கொண்ட கணித வெளிப்பாடுகள். -Polynomial regression ஒரு வளைந்த கோட்டைக் உருவாக்கி, நேரியல் அல்லாத தரவுக்கு சிறந்த பொருத்தத்தை அளிக்கிறது. எங்கள் நிலைமையில், வகையான `DayOfYear²` மாறியை உள்ளீடு தரவில் சேர்த்தால், நாம் ஒரு பரபோலிக் வளைவை பொருத்த முடியும், அதில் வருடத்தின் ஒரு குறிப்பிட்ட இடத்தில் குறைந்தபட்சம் இருக்கும். +பாலினோம் ரெக்ரஷன் நேர்கொண்டாட்டம் இல்லாத தரவுக்கு பொருத்தமான வளைவு கோட்டை உருவாக்கும். எங்கள் வழக்கில், நாமே உள்ளீட்டு தரவுக்கு சதுரமான `DayOfYear` மாறியை சேர்க்கும்போது, ஆண்டு முழுவதும் ஒரு குறிப்பிட்ட கட்டத்தில் குறைந்த அளவு கொண்ட பரப்பைக் கொண்ட வளைவு கோட்டை பெற்று தரவுடன் பொருந்துவோம். -Scikit-learn ஆல் ஒரு பயனுள்ள [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) உள்ளது, இது தரவு செயலாக்க பல படிகளை ஒன்றிணைக்க உதவுகிறது. **pipeline** என்பது பல **estimators** வரிசையாகும். எங்கள் நிலையில், முதலில் polynomial பண்புகளை மாதிரிக்கு சேர்த்து, பிறகு ரெக்ரெஷன் பயிற்சி பெறும் pipeline ஒன்றை உருவாக்குவோம்: +Scikit-learn ஒரு உதவியுள்ள [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) கொண்டுள்ளது, இது தரவு செயலாக்கத்தின் வெவ்வேறு படிகளை ஒன்றிணைக்க உதவும். ஒரு **pipeline** என்பது **மதிப்பீடுகளின்** சங்கிலி ஆகும். எங்கள் வழக்கில், முதலில் பாலினோமியல் அம்சங்களை நமது மாதிரிக்கு சேர்க்கும் மற்றும் பிறகு ரெக்ரஷன் பயிற்சி செய்யும் pipeline ஒன்றை உருவாக்குவோம்: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,61 +259,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` - -`PolynomialFeatures(2)` பயன்படுத்துவது, உள்ளீடு தரவின் இரண்டாம் நிலை அனைத்து polynomial யையும் சேர்த்துக் கொள்வதை 의미ம். எங்கள் நிலைமையில் இது `DayOfYear²` ஆகும், ஆனால் இரண்டு மாறிலிகள் X மற்றும் Y என்றால், இது X², XY, Y² ஆகியவற்றை சேர்க்கும். மேல் நிலை polynomial களை நாங்கள் விரும்பினால் பயன்படுத்தலாம். -Pipelines ஐ இயல்பான `LinearRegression` பொருளின் மாதிரியே பயன்படுத்தலாம், அதாவது pipeline ஐ `fit` செய்து, பிறகு `predict` மூலம் கணிப்புகளை பெறலாம். கீழே சோதனை தரவும், பரபோலிக் பரப்பையும் காட்டியுள்ளோம்: +`PolynomialFeatures(2)` பயன்படுத்துவது, உள்ளீட்டு தரவிலிருந்து அனைத்து இரண்டாம் நிலை பாலினோம் சேர்க்கும் என்று பொருள். எங்கள் வழக்கில் அது `DayOfYear`2 மட்டுமே இருக்கும், ஆனால் இரண்டு உள்ளீட்டு மாறிகள் X மற்றும் Y இருந்தால், இது X2, XY மற்றும் Y2 ஐ சேர்க்கும். நாமே அதிகநிலை பாலினோம்களையும் பயன்படுத்தலாம். + +Pipelines-ஐ முதன்மை `LinearRegression` பொருளைப் போல பயன்படுத்தலாம், அதாவது நாம் pipeline-ஐ `fit` செய்து, பின்னர் `predict` மூலம் கணிப்புகளைப் பெறலாம்: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +மென்மையான அணுகுமுறை வளைவு வரைபடம் காண, `np.linspace` பயன்படுத்தி உள்ளீட்டு மதிப்புகளின் நேர்மையான வரம்பை உருவாக்குகிறோம், நேரடியாக ஒழுங்கற்ற சோதனை தரவுக்கே இல்லாமல் (அது சுழற்படியான கோட்டைக் கொடுக்கும்): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +சோதனை தரவும் அணுகுமுறை வளைவுக் கோட்டும் காட்டும் வரைபடம் இதோ: Polynomial regression -Polynomial Regression பயன்படுத்தி சில அளவிற்கு குறைந்த MSE மற்றும் அதிகமாகும் determination பெற முடியும், ஆனால் அதிக மாறுபாடு இல்லை. மற்ற பண்புகளையும் கவனிக்க வேண்டும்! +பாலினோமியல் ரெக்ரஷன் மூலம், நாமே சிறிது குறைந்த RMSE மற்றும் அதிகமான நிர்ணயக்கூறாடலை பெற முடியும், ஆனால் பெரிய மாற்றம் இல்லை. நாமே வேறு அம்சங்களையும் கருத்தில் கொள்ள வேண்டும்! -> பீ பதங்களை அதிகரிக்கும் மிகக் குறைந்த விலைகள் ஹாலோவீன் சுற்றிலும் உள்ளது என்று நீங்கள் கவனித்தீர்களா? இதனை எப்படி விளக்கமுடியும்? +> குறைந்தபட்ச பூசணிக்காய் விலைகள் ஹாலோவீனுக்கு அருகில் காணப்படுகின்றது. இதை நீங்கள் எப்படி விளக்கவிட்டீர்கள்? -🎃 வாழ்த்துக்கள், நீங்கள் பை பீற்கூடிய பீ விலையை கணிக்க உதவும் மாதிரியை உருவாக்கினீர்கள். இதே சீரியல் முறையை அனைத்து பீ வகைகளுக்கும் பயன்படுத்தலாம், ஆனால் அது களைப்பானதாக இருக்கும். இப்போது உங்கள் மாதிரியில் பீ விதத்தை மாற்றுவது எப்படி என்று கற்றுக் கொள்வோம்! +🎃 வாழ்த்துக்கள், நீங்கள் பை பூசணிக்காய் விலையை கணிக்க உதவும் மாதிரியை உருவாக்கியுள்ளீர்கள். நீங்கள் அனைத்து பூசணிக்காய் வகைகளுக்குமான அதே செயல்முறையை மீளவும் செய்யலாம் என்றாலும் அது சலுகையாக இருக்கும். இப்போது பூசணிக்காய் வகைப் பிரிவை எங்கள் மாதிரியில் எவ்வாறு கருத வேண்டும் என்பதை கற்றுக்கொள்வோம்! -## Categorical Features +## வகை அம்சங்கள் -சரியான உலகில், நம்முடைய மாதிரி பல பீ விதங்களுக்கு விலை கணிக்க முடியும். ஆனால், `Variety` நெடுவரிசை `Month` போன்ற எண் சார்ந்த அல்லாத மதிப்புகளை கொண்டுள்ளது. இந்த நெடுவரிசைகள் **categorical** என அழைக்கப்படுகின்றன. +இடையில், ஒரே மாதிரியைக் கொண்டு வெவ்வேறு பூசணிக்காய் வகைகளுக்கான விலைகளைக் கணிக்கக்கூடியதாக கருதுகிறோம். ஆனால், `Variety` பத்தியில் சிலவிதமாக `Month` போன்ற பத்திகளைக் காட்டிலும் வேறுபடுகிறது, ஏனெனில் அதில் எண்காணிப்பற்ற மதிப்புகள் உள்ளன. இத்தരം பத்திகள் **வகைபடுத்தப்பட்டவை (categorical)** என அழைக்கப்படுகின்றன. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 தெரிந்துகொள்ள முக்கிய வீடியோ - categorical பண்புகளை எப்படி பயன்படுத்துவது. +> 🎥 மேற்கண்ட படத்தை கிளிக் செய்து வகை அம்சங்களை பயன்படுத்தும் குறுந்தட நிழற்படத்தை பார்க்கலாம். -இங்கு விதத்தின் அடிப்படையில் சராசரி விலை எப்படி உள்ளது பார்க்கலாம்: +இங்கு வகையின் அடிப்படையில் சராசரி விலை எப்படி இருக்கும் என்று காணலாம்: Average price by variety -விதத்தை எண்ணிக்கையாக மாற்ற, அதாவது **encode** செய்ய முதலில் அதை எண்கள் வடிவத்திற்குப் பதிக்க வேண்டும். இதற்குள் பல வழிகள் உள்ளன: +வகையை கருத்தில் கொள்ள, முதலில் அதை எண்கள் வடிவத்தில் மாற்ற வேண்டியிருக்கும், அதாவது **எண் குறியீடு அளித்தல் (encoding)**. இதனை செய்வதற்கான பல வழிகள் உள்ளன: -* எளிய **எண்ணியல் எண்கோவை** விதங்களின் பட்டியலை நோக்கி அமைத்து, பெயரை அந்த பட்டியலில் உள்ள இடமான எண்ணுடன் மாற்றும். இது linear regression க்கு நல்லதல்ல, ஏனெனில் linear regression அந்த எண்ணை நேரடி மதிப்பாக எடுத்துக்கொண்டு, சில коэффициентுகளுடன் கூடிய கூட்டலைச் செய்கிறது. எங்கள் நிலைகளில், இந்த எண்ணும் விலை இடையேயான தொடர்பு நேர்காணல் அல்ல என்பதுவரை, இத்தெரிவு நல்லது அல்ல. -* **One-hot encoding** என்பது `Variety` நெடுவரிசையை 4 வித்தியாசமான நெடுவரிசைகளாக மாற்றும், ஒவ்வொரு விதத்திற்கும் ஒரு நெடுவரிசை இருக்கும். அந்த வரி அந்த வகையாக இருந்தால் 1, இல்லையெனில் 0 ஆகும். இதனால் linear regression-ல் நான்கு коэффициентுகள் இருப்பார்கள், ஒவ்வொரு மாதியன் விதத்திற்கும் "தொடங்கு விலை" அல்லது "மேலதிக விலை" என பொறுப்பாக இருக்கும். +* எளிமையான **எண் குறியீடு அளித்தல்** இயற்கை விருப்பங்களை பட்டியலிடும் அட்டவணையைக் உருவாக்கி, அதற்குப் பின்னர் அந்த அட்டவணையில் பெயரைக் குறியீட்டு எண்ணாக மாற்றும். இது ரெக்ரஷனுக்கு சிறந்தது அல்ல, ஏனெனில் ரெக்ரஷன் எதிர்கொள்ளும் நேரடிக் குறிப்பான எண் மதிப்பை எடுத்துக்கொண்டு அதற்கேற்ப பலி அளிக்கும். எங்கள் வழக்கில், குறியீட்டு எண்ணும் விலையுடனான தொடர்பு தெளிவாக நேர்க் கோட்டை அல்லாமல் இருக்கும், கூடவே குறியீட்டுக்கள் நிச்சயமான முறையில் வரிசைப்படுத்த இருந்தாலும். +* **ஒன்-ஹாட் எண்கிறது (One-hot encoding)**, `Variety` பத்தியை 4 வேறு பத்திகளாக மாற்றும், ஒவ்வொன்றும் ஒரு வகைக்கானது. ஒவ்வொரு வரிசை விசோட்ட வகைக்கானதாக இருந்தால் பத்தி `1`, இல்லையெனில் `0` உள்ளது. இதனால் ஒரே நேர்க் ரெக்ரஷனில் நான்கு கூட்டுறுக்கள் இருக்கும், ஒவ்வொரு பூசணிக்காய் வகைக்கும் தனித்தனியான "ஆரம்ப விலை" (அல்லது "மேலும் விலை") பொறுப்பேற்கும். -எப்படி வகையை one-hot encode செய்வது என்று கீழே காணலாம்: +கீழ்காணும் குறியீடு வகையை ஒன்-ஹாட் ஆக்குவதற்கான உதாரணமாகும்: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 - -one-hot encoded variety ஐ உள்ளீடு கொண்டு linear regression பயிற்சி பெற `X` மற்றும் `y` தரவை சரியாக தயார் செய்யவேண்டும்: + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +ஒன்-ஹாட் குறியீட்டு வகையை உள்ளீட்டு தரவாக கொண்டு லினியர் ரெக்ரஷன் பயிற்சி செய்ய, நமக்கு `X` மற்றும் `y` தரவை சரியாக ஆரம்பிப்பதே போதும்: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -மீதியானக் குறியிடல் மேலே பயன்படுத்திய Linear Regression பயிற்சிக்குத் தன்னோடே அதே மாதிரியானது. முயற்சி செய்தால், சராசரி சதுர பிழை சுமார் அதே அளவில் இருக்கும், ஆனால் coefficient of determination அதிக வேகம் (~77%) பெறப்படும். மேலும் நுட்பமான கணிப்புகள் பெற, பல categorical பண்புகளை மேலும் எண்ணிக்கையான பண்புகளுடன் (`Month` அல்லது `DayOfYear` போன்ற) சேர்த்து, `join` உபயோகித்து ஒன்றாக கூட்டலாம்: + +மீதமுள்ள குறியீடு மேலே பயன்படுத்திய லினியர் ரெக்ரஷன் பயிற்சியைப் போன்றது. நீங்கள் இதை முயற்சித்தால், சராசரி சதுர வேறுபாடு சுமார் அதேபோல் இருக்கும், ஆனால் நாமே மிக்க உயர்ந்த நிர்ணயக்கூறுகளை (~77%) பெறுவோம். கூடுதல் துல்லியமான கணிப்புகளைச் செய்ய, மேலும் வகை அம்சங்களையும், எண் அம்சங்களும் (காரணமாக `Month` அல்லது `DayOfYear`) கருதலாம். பெரிய அம்ச தொகுப்பு பெற `join` பயன்படுத்தலாம்: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,12 +344,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` - -இங்கு மேலும் `City` மற்றும் `Package` வகையும் சேர்த்து, MSE 2.84 (10%), determination 0.94 கிடைத்துள்ளது! -## அனைத்தையும் ஒருங்கிணைத்தல் +இங்கு நாமே `City` மற்றும் `Package` வகையும் சேர்க்கின்றோம், இதனால் RMSE 2.84 (10.5%) மற்றும் நிர்ணயக்கூறு 0.94 பெறுகிறோம்! -சிறந்த மாதிரியை உருவாக்க, மேலே கொடுக்கப்பட்ட இணைந்த (one-hot encoded categorical + numeric) தரவை Polynomial Regression உடன் பயன்படுத்தலாம். இங்கே முழுமையான குறியீடு உள்ளது: +## அனைத்தையும் ஒன்று சேர்ந்தாக்குதல் + +சிறந்த மாதிரியை உருவாக்க, நமக்கு மேலே கூறிய ஒன்-ஹாட் குறியீடு செய்யப்பட்ட வகை + எண் அம்சங்கள் எனத் தொடர்ந்து பாலினோமியல் ரெக்ரஷன் பயன்படுத்த முடியும். கீழ்க்கண்ட முழுமையான குறியீடு உங்களுக்கு உதவும்: ```python # பயிற்சி தரவுகளை அமைக்கவும் @@ -333,54 +359,54 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# பயிற்சி மற்றும் சோதனை பாகங்களை பிரிக்கவும் +# பயிற்சி-சோதனை பிரிவை உருவாக்கவும் X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# குழாய்க்குழியை அமைத்து பயிற்சி செய்யவும் +# குழாய்கோட்டைப் அமைத்து பயிற்சி அளிக்கவும் pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# சோதனை தரவுகளுக்கான முன்னறிவிப்பை செய்யவும் +# சோதனை தரவுக்கான முடிவுகளை கணிக்கவும் pred = pipeline.predict(X_test) -# MSE மற்றும் தீர்மானத்தை கணக்கிடவும் -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE மற்றும் தீர்மானக்கூறு கணக்கிடவும் +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` - -இது சுமார் 97% determination коэффициентுடன் மற்றும் MSE=2.23 (~8% பிழை) தர வேண்டும். -| Model | MSE | Determination | -|-------|-----|---------------| -| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | -| `Variety` Linear | 5.24 (19.7%) | 0.77 | -| All features Linear | 2.84 (10.5%) | 0.94 | -| All features Polynomial | 2.23 (8.25%) | 0.97 | +இது சுமார் 97% உயர் நிர்ணயக்கூறு மற்றும் RMSE=2.23 (~8% கணிப்பு பிழை) தர வேண்டும். + +| மாதிரி | RMSE | நிர்ணயக்கூறு | +|-------|-----|---------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| அனைத்து அம்சங்கள் Linear | 2.84 (10.5%) | 0.94 | +| அனைத்து அம்சங்கள் Polynomial | 2.23 (8.25%) | 0.97 | -🏆 நன்றாக செய்தீர்கள்! நீண்ட பாடத்தில் நான்கு Regression மாதிரிகள் உருவாக்கித் தேர்வு தரத்தை 97% வரை மேம்படுத்தினீர்கள். Regression இறுதி பகுதியில் நீங்கள் Logistic Regression பற்றி கற்றுக் கொண்டு வகைகளை தீர்மானிப்பீர்கள். +🏆 மிகச்சிறப்பு! நீங்கள் ஒரே பாடத்தில் நான்கு ரெக்ரஷன் மாதிரிகளை உருவாக்கி, மாதிரி தரத்தை 97% ஆக மேம்படுத்தியுள்ளீர்கள். ரெக்ரஷன் இறுதி பிரிவில், வாரிப் பிரிவுகளை நிர்ணயிக்கும் லாஜிஸ்டிக் ரெக்ரஷன் பற்றி கற்பீர்கள். --- ## 🚀சவால் -இந்த நோட்புக்கில் பல மாறிலிகளை சோதித்து, பொறுத்து மாதிரி நுட்பத்திற்கு எப்படி ஏற்படுகிறது என்று காண்க. +இந்த நோட்புக்கில் பல்வேறு மாறிலாளர்களை சோதித்து, தொடர்பு நிலை மாதிரி துல்லியத்துடன் எப்படி பொருந்துகிறது என்று பாருங்கள். -## [பாட முடிந்த பிறகு விடைத் தேர்வு](https://ff-quizzes.netlify.app/en/ml/) +## [தொடர்பு பரீட்சை](https://ff-quizzes.netlify.app/en/ml/) -## பார்வை & சுயபடிப்பு +## விமர்சனம் & சுயபாடம் -இந்த பாடத்தில் Linear Regression பற்றி கற்றோம். மற்ற முக்கியமான Regression வகைகளும் உள்ளன. Stepwise, Ridge, Lasso மற்றும் Elasticnet தொழில்நுட்பங்களைப் பற்றிக் கற்றுக்கொள்ளுங்கள். இன்னும் அதிகமாக கற்க விரும்புவோருக்கு [Stanford Statistical Learning பாடநெறி](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) சாத்தியமாகும். +இந்த பாடத்தில் நாமே லினியர் ரெக்ரஷன் பற்றி கற்றுக்கொண்டோம். ரெக்ரஷனின் மற்ற முக்கிய வகைகள் உள்ளன. Stepwise, Ridge, Lasso மற்றும் Elasticnet முறைகளைப் படியுங்கள். மேலும் தெரிந்துகொள்ள நல்ல பாடநெறி [ஸ்டான்போர்டு புள்ளியியல் கற்றல் பாடநெறி](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ஆகும். -## பணியாளர் வேலை +## பணியியல் -[Model உருவாக்குக](assignment.md) +[ஒரு மாதிரியை உருவாக்கவும்](assignment.md) --- -**எச்சரிக்கை**: -இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) மூலம் மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் சரியான தன்மையை உறுதிப்படுத்த முயலுகிறோம், எனினும் தானியங்கி மொழிபெயர்ப்புகளில் தவறுகள் அல்லது பிழைகள் இருக்கக்கூடும் என்பதைக் கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் சொந்த மொழியில் அதிகாரப்பூர்வ மூலமாகக் கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பை பயன்படுத்துவதால் ஏற்படும் தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பாக மாறமாட்டோம். +**பணிமொழி**: +இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற செயற்கை நுண்ணறிவு மொழிபெயர்ப்புச் சேவையை பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சித்தாலும், தன்னிச்சையான மொழிபெயர்ப்புகளில் தவறுகள் அல்லது துல்லியமற்ற செய்திகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். துவக்கம் மொழியில் உள்ள அசல் ஆவணம் அதிகாரப்பூர்வ வளமாக கருதப்பட வேண்டும். முக்கியமான தகவலுக்காக, தொழில்முறை மனித மொழிபெயர்ப்பாளரை பரிந்துரை செய்கின்றோம். இந்த மொழிபெயர்ப்பின் பயன்படுத்தலிலிருந்து ஏற்படும் எந்த ஒரு தவறான புரிதலும் அல்லது தவறான விளக்கங்களுக்கும் நாங்கள் பொறுப்பு ஏற்கவில்லை. \ No newline at end of file diff --git a/translations/ta/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ta/2-Regression/3-Linear/solution/notebook.ipynb index 0719a1cd2e..be35ddb847 100644 --- a/translations/ta/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ta/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## பம்ப்கின் விலை நிர்ணயத்திற்கு நேரியல் மற்றும் பாலினோமியல் ரிக்ரஷன் - பாடம் 3\n", + "## பூசணிக்காய் விலை நிர்ணயத்திற்கு கோட்லைன் மற்றும் பன்முறை ரிக்ரஷன் - பாடம் 3\n", "\n", - "தேவையான நூலகங்கள் மற்றும் தரவுத்தொகுப்பை ஏற்றவும். தரவுகளை கீழே உள்ள subset ஆக மாற்றவும்:\n", + "தேவையான நூலகங்களையும் தரவுத்தொகுப்பையும் ஏற்றவும். தரவுகளை பின்வரும் அம்சங்களின் உட்பிரிவாக கொண்டிருக்கும் ஒரு தரவுத்தட்டமாக மாற்றவும்:\n", "\n", - "- புஷல் மூலம் விலை நிர்ணயிக்கப்பட்ட பம்ப்கின்களை மட்டும் பெறவும்\n", + "- பஸ்செல் மூலம் விலை நிர்ணயிக்கப்பட்ட பூசணிக்காய்களை மட்டுமே எடுக்கவும்\n", "- தேதியை மாதமாக மாற்றவும்\n", - "- உயர் மற்றும் குறைந்த விலைகளின் சராசரியாக விலையை கணக்கிடவும்\n", - "- புஷல் அளவுக்கு ஏற்ப விலையை மாற்றவும்\n" + "- அதிக மற்றும் குறைந்த விலைகளின் சராசரியாக விலையை கணக்கிடவும்\n", + "- விலையை பஸ்செல் அளவுக்கு பொருந்துமாறு மாற்றவும்\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ஒரு சிதறல் வரைபடம் நமக்கு ஆகஸ்ட் முதல் டிசம்பர் வரை மாத தரவுகள் மட்டுமே உள்ளன என்பதை நினைவூட்டுகிறது. நேரியல் முறையில் முடிவுகளை வரையறுக்க மேலும் தரவுகள் தேவைப்படலாம்.\n" + "ஒரு சிதறல் வரைபடம் எங்களுக்கு ஆகஸ்ட் முதல் திசம்பர் வரை மாதத் தகவல்களே உள்ளன என்பதை நினைவூட்டுகிறது. கோடுரு வடிவில் முடிவுகள் எடுக்க, நாம் கூடுதல் தரவுகள் தேவைப்படும் என நினைக்கலாம்.\n" ] }, { @@ -448,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "இங்கே தொடர்பு உள்ளதா என்று பார்ப்போம்:\n" + "ஒரு தொடர்பு இருக்கிறதா என்று பார்க்கலாம்:\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "மிகவும் குறைந்த தொடர்பு இருப்பது போல தெரிகிறது, ஆனால் மற்றொரு முக்கியமான தொடர்பு உள்ளது - ஏனெனில் மேலே உள்ள வரைபடத்தில் விலை புள்ளிகள் பல தனித்த தனிப்பட்ட குழுக்களைக் கொண்டுள்ளன. பம்ப்கின் வகைகளை காட்டும் ஒரு வரைபடத்தை உருவாக்குவோம்:\n" + "பொதுவாக தொடர்பு மிகவும் குறைவாகத் தெரிகிறது, ஆனால் மேலே உள்ள படத்தில் விலை புள்ளிகளுக்கு பல தனித்துவமான குழுக்கள் உள்ளதால், வேறு ஒரு முக்கியமான தொடர்பு இருக்கிறது. பல்வேறு பூசணி வகைகளை காட்டும் ஒரு படத்தை உருவாக்கலாம்:\n" ] }, { @@ -538,7 +538,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "இப்போது, ஒரு வகை - **பை வகை** - மீது மட்டும் கவனம் செலுத்துவோம்.\n" + "பொதுவாக, நாம் தற்போது ஒரே வகையே கவனிப்போம் - **பை வகை**.\n" ] }, { @@ -586,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### நேரியல் முறைமைகள்\n", + "### கோட்டுரை சரி பதிவு\n", "\n", - "நாம் Scikit Learn-ஐ பயன்படுத்தி நேரியல் முறைமைகள் மாதிரியை பயிற்சி செய்யப் போகிறோம்:\n" + "நாம் Scikit Learn ஐ பயன்படுத்தி கோட்டுரை சரி பதிவு மாதிரியை பயிற்றுவிப்போம்:\n" ] }, { @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "கோட்டின் சரிவை நேரியல் பின்வாங்கல் குணகங்கள் மூலம் தீர்மானிக்கலாம்:\n" + "கோட்டின் சாய்வு கோட்டுருவாக்க காரணிகளிலிருந்து கணக்கிடப்படலாம்:\n" ] }, { @@ -693,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "நாம் பயிற்சி பெற்ற மாதிரியை விலை கணிக்க பயன்படுத்தலாம்:\n" + "நாம் பயிற்சி பெற்ற மாடலைப் பயன்படுத்தி விலையை முன்னறிக்கை செய்யலாம்:\n" ] }, { @@ -722,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### பாலினோமியல் ரிக்ரஷன்\n", + "### செர் வரிசை பின்வாசல்\n", "\n", - "சில நேரங்களில் அம்சங்கள் மற்றும் முடிவுகளுக்கிடையேயான தொடர்பு இயல்பாகவே நேர்மறையானது அல்ல. உதாரணமாக, கும்முட்டி விலை குளிர்காலத்தில் (மாதங்கள்=1,2) அதிகமாக இருக்கலாம், பின்னர் கோடை காலத்தில் (மாதங்கள்=5-7) குறைந்து, பின்னர் மீண்டும் அதிகரிக்கலாம். நேர்மறை ரிக்ரஷன் இந்த தொடர்பை துல்லியமாக கண்டறிய முடியாது.\n", + "சில சமயம் அம்சங்களுக்கும் முடிவுகளுக்கும் இடையிலான தொடர்பு இயல்பாகவே நேரியல் அல்ல. உதாரணமாக, புகட்டுப் பழ விலை குளிர்காலத்தில் (மாதங்கள்=1,2) அதிகமாக இருக்கலாம், பின்னர் கோடையில் (மாதங்கள்=5-7) தாழ்ந்து, மீண்டும் உயர்தலை அடையலாம். நேரியல் பின்வாசல் இந்த தொடர்பை துல்லியமாகக் கண்டுபிடிக்க முடியாது.\n", "\n", - "இந்தச் சூழலில், கூடுதல் அம்சங்களைச் சேர்க்கலாம் என்று நாம் கருதலாம். எளிய வழி என்னவென்றால், உள்ளீட்டு அம்சங்களில் இருந்து பாலினோமியல்களைப் பயன்படுத்துவது, இது **பாலினோமியல் ரிக்ரஷன்** எனப்படும். Scikit Learn-இல், நாங்கள் பைப்லைன்களைப் பயன்படுத்தி பாலினோமியல் அம்சங்களை தானாக முன்கூட்டியே கணக்கிடலாம்:\n" + "இந்த நிலைமையில், கூடுதல் அம்சங்களைச் சேர்ப்பதை நாம் பரிசீலிக்கலாம். எளிய வழி என்பது உள்ளீட்டு அம்சங்களிலிருந்து செர் வரிசைகளைப் பயன்படுத்துவது, இதனால் **செர் வரிசை பின்வாசல்** உருவாகும். Scikit Learn இல், நாம் இணையக் கூறுகளைப் பயன்படுத்தி செர் வரிசை அம்சங்களை தானாக முன்னிலை கணக்கிடலாம்: \n" ] }, { @@ -781,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### வகைகளின் குறியாக்கம்\n", + "### குறியாக்க வகைகள்\n", "\n", - "சிறந்த உலகில், ஒரே மாதிரியான மாடலைப் பயன்படுத்தி வெவ்வேறு பூசணிக்காய் வகைகளுக்கான விலைகளை கணிக்க முடியும் என்று நாங்கள் விரும்புகிறோம். வகையை கணக்கில் எடுத்துக்கொள்ள, முதலில் அதை எண் வடிவமாக மாற்ற வேண்டும், அல்லது **குறியாக்கம் செய்ய வேண்டும்**. இதைச் செய்ய பல வழிகள் உள்ளன:\n", + "சரியான உலகத்தில், நாம் ஒரே மாதிரி பயன்படுத்தி வேறுபட்ட பூசணிக்காய்களின் விலைகளை கணிக்க இயல வேண்டும். வகை காரணமாக கணிக்க, முதலில் அதை எண்களாக மாற்ற வேண்டும் அல்லது **குறியாக்க** செய்ய வேண்டும். இதற்கான பல வழிகள் உள்ளன:\n", "\n", - "* எளிய எண் குறியாக்கம், இது வெவ்வேறு வகைகளின் ஒரு அட்டவணையை உருவாக்கும், பின்னர் அந்த அட்டவணையில் உள்ள குறியீட்டின் அடிப்படையில் வகையின் பெயரை மாற்றும். இது நேரியல் மடக்குக்கான சிறந்த யோசனை அல்ல, ஏனெனில் நேரியல் மடக்கு குறியீட்டின் எண் மதிப்பை கணக்கில் எடுத்துக்கொள்கிறது, மேலும் அந்த எண் மதிப்பு விலையுடன் எண் ரீதியாக தொடர்புடையதாக இருக்க வாய்ப்பு குறைவு.\n", - "* ஒன்-ஹாட் குறியாக்கம், இது `Variety` பத்தியை 4 வெவ்வேறு பத்திகளால் மாற்றும், ஒவ்வொரு வகைக்கும் ஒன்று, அதில் குறிப்பிட்ட வரிசை கொடுக்கப்பட்ட வகையைச் சேர்ந்தது என்றால் 1 இருக்கும், இல்லையெனில் 0 இருக்கும்.\n", + "* எளிய எண் குறியாக்கம், இது வெவ்வேறு வகைகளின் அட்டவணையை உருவாக்கி, அந்த அட்டவணையில் உள்ள பட்டியலில் இருந்து வகை பெயரை ஒரு குறியீட்டில் மாற்றும். ஆனால், இது நேர்காணல் செல்லுபடியாகாது, ஏனெனில் நேர்காணல் இந்நumerical குறியீட்டின் மதிப்பை பொருந்தும், மேலும் அந்த மதிப்பு விலை உடன் தொடர்பு இல்லாததாக இருக்கலாம்.\n", + "* ஒன்-ஹோட் குறியாக்கம், இது `Variety` நெடுவரிசையை 4 வெவ்வேறு நெடுவரிசைகளாக மாற்றும், ஒவ்வொன்றும் ஒரு வகைக்காக, அந்த வரிசை கொடுக்கப்பட்ட வகைக்கு சேர்ந்தது என்றால் 1, இல்லையெனில் 0 இருக்கும்.\n", "\n", - "கீழே உள்ள குறியீடு ஒரு வகையை ஒன்-ஹாட் குறியாக்கம் செய்ய எப்படி முடியும் என்பதை காட்டுகிறது:\n" + "கீழே உள்ள குறியீடு, வகையை ஒன்-ஹோட் குறியாக்கம் செய்யும் முறையை காட்டுகிறது:\n" ] }, { @@ -944,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### வகைகளில் நேரியல் முறை\n", + "### வகை மீது நேரியல் ரிகிரஷன்\n", "\n", - "இப்போது மேலே உள்ள அதே குறியீட்டை பயன்படுத்துவோம், ஆனால் `DayOfYear`-க்கு பதிலாக, நமது ஒரே-ஹாட்-கோடிட்ட வகையை உள்ளீடாக பயன்படுத்துவோம்:\n" + "மேலேயுள்ள அதே குறியீட்டை நாம் இப்போது பயன்படுத்தப் போகிறோம், ஆனால் `DayOfYear`-ஐ பதிலாக நமது ஒன்-ஹாட்-என்கோடிட் வகையை உள்ளீடாக பயன்படுத்துவோம்:\n" ] }, { @@ -994,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "நாம் இதே முறையில் பிற அம்சங்களைப் பயன்படுத்த முயற்சிக்கலாம், மேலும் அவற்றை `Month` அல்லது `DayOfYear` போன்ற எண் அம்சங்களுடன் இணைக்கலாம்:\n" + "நாம் அதே முறையில் மற்ற அம்சங்களையும் பயன்படுத்தி, அவற்றை `Month` அல்லது `DayOfYear` என்ற எண்கணித அம்சங்களுடன் இணைக்க முயற்சி செய்யலாம்:\n" ] }, { @@ -1025,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### பாலினோமியல் ரிக்ரஷன்\n", + "### பவர் சரிபிரச்சாரம்\n", "\n", - "பாலினோமியல் ரிக்ரஷன் ஒரு-ஹாட்-என்கோடு செய்யப்பட்ட வகைமைய அம்சங்களுடன் பயன்படுத்தப்படலாம். பாலினோமியல் ரிக்ரஷனை பயிற்சி செய்யும் குறியீடு மேலே பார்த்ததுபோலவே இருக்கும்.\n" + "பவர் சரிபிரச்சாரம் ஒரே ஹாட் கடக்கப்பட்ட வகைப்பாட்டு அம்சங்களுடன் கூட பயன்படுத்தலாம். பவர் சரிபிரச்சாரத்தை பயிற்சி செய்யும் குறியீடு மேலே பார்த்ததாகவே இருக்கும்.\n" ] }, { @@ -1074,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**குறிப்பு**: \nஇந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கிறோம், ஆனால் தானியக்க மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளுங்கள். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல.\n" + "---\n\n\n**தனிப்பட்ட விளக்கம்**: \nஇந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) மூலம் மொழி பெயர்க்கப்பட்டுள்ளது. நிச்சயத்துக்காக நாம் முயற்சி செய்கிறோம் என்றாலும், தானாக செயல்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது துல்லியமின்மைகள் இருக்க வாய்ப்பு உள்ளது. பெற்றோ மொழியில் உள்ள அசல் ஆவணம் அதிகாரபூர்வமான ஆதாரமாகக் கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பை பரிந்துரைக்கிறோம். இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்பட்ட எந்தவொரு தவறான புரிதல்களுக்கும் அல்லது தவறான விளக்கல்களுக்கும் நாம் பொறுப்பேற்கவில்லை.\n\n" ] } ], @@ -1104,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-10-11T12:20:42+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ta" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From d177b6f2d8b7453cd401e54ec1c19413e64c60e5 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:35:12 +0000 Subject: [PATCH 09/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/kn/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 112 +++--- .../kn/2-Regression/3-Linear/README.md | 350 +++++++++--------- .../3-Linear/solution/notebook.ipynb | 71 ++-- translations/ml/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 108 +++--- .../ml/2-Regression/3-Linear/README.md | 336 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++-- translations/te/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 114 +++--- .../te/2-Regression/3-Linear/README.md | 273 +++++++------- .../3-Linear/solution/notebook.ipynb | 65 ++-- 12 files changed, 807 insertions(+), 733 deletions(-) diff --git a/translations/kn/.co-op-translator.json b/translations/kn/.co-op-translator.json index 34e02cae6a..6f4b0987dc 100644 --- a/translations/kn/.co-op-translator.json +++ b/translations/kn/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "kn" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-12-19T13:37:50+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:35:01+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "kn" }, @@ -90,8 +90,8 @@ "language_code": "kn" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:45:45+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:34:24+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "kn" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "kn" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:29:56+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "kn" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-12-19T14:06:13+00:00", diff --git a/translations/kn/1-Introduction/4-techniques-of-ML/README.md b/translations/kn/1-Introduction/4-techniques-of-ML/README.md index e32fa7c930..1c9fcf2718 100644 --- a/translations/kn/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/kn/1-Introduction/4-techniques-of-ML/README.md @@ -1,125 +1,127 @@ -# ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರಗಳು +# ಯಂತ್ರ ಕಲಿಕೆ ತಂತ್ರಗಳು -ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವುದು, ಬಳಸುವುದು ಮತ್ತು ನಿರ್ವಹಿಸುವ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಅವು ಬಳಸುವ ಡೇಟಾ ಅನೇಕ ಇತರ ಅಭಿವೃದ್ಧಿ ಕಾರ್ಯಪ್ರವಾಹಗಳಿಂದ ಬಹಳ ವಿಭಿನ್ನ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ಪಷ್ಟಪಡಿಸಿ, ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಪ್ರಮುಖ ತಂತ್ರಗಳನ್ನು ವಿವರಿಸುವೆವು. ನೀವು: +ಯಂತ್ರ ಕಲಿಕಾ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವುದು, ಬಳಸುವುದು ಮತ್ತು ನಿರ್ವಹಿಸುವ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಅವು ಬಳಸುವ ಡೇಟಾ ವಿವಿಧ ಇತರ ಅಭಿವೃದ್ಧಿ ಕಾರ್ಯಪ್ರವಾಹಗಳಿಂದ ಬಹಳ ವಿಭಿನ್ನವಾಗಿದೆ. ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸಪಷ್ಟೀಕರಿಸಿ, ನಿಮಗೆ ತಿಳಿಯಬೇಕು ಎಂಬ ಮುಖ್ಯ ತಂತ್ರಗಳನ್ನು ವಿವರಿಸುತ್ತೇವೆ. ನೀವು: -- ಯಂತ್ರ ಅಧ್ಯಯನದ ಅಡಿಯಲ್ಲಿ ಇರುವ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಉನ್ನತ ಮಟ್ಟದಲ್ಲಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತೀರಿ. -- 'ಮಾದರಿಗಳು', 'ಭವಿಷ್ಯವಾಣಿ', ಮತ್ತು 'ತರಬೇತಿ ಡೇಟಾ' ಎಂಬ ಮೂಲಭೂತ ಸಂಪ್ರದಾಯಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತೀರಿ. +- ಯಂತ್ರ ಕಲಿಕೆಯ ಮೂಲಭೂತ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಹೆಚ್ಚಿನ ಮಟ್ಟದಲ್ಲಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತೀರಿ. +- 'ಮಾಡೆಲ್ಸ್', 'ಭವಿಷ್ಯವಾಣಿಗಳು' ಮತ್ತು 'ತರಬೇತಿ ಡೇಟಾ' ಎಂಬ ಮೂಲಭಾವನೆಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತೀರಿ. -## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) +## [ಪೂರ್ವ-ಲೇಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 ಈ ಪಾಠವನ್ನು ಕೆಲಸಮಾಡುವ ಸಣ್ಣ ವೀಡಿಯೊಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. +> 🎥 ಈ ಪಾಠವನ್ನು ನೆನೆಸಿಕೊಳ್ಳುವ ಚಿಕ್ಕ ವೀಡಿಯೊಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. ## ಪರಿಚಯ -ಉನ್ನತ ಮಟ್ಟದಲ್ಲಿ, ಯಂತ್ರ ಅಧ್ಯಯನ (ML) ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ರಚಿಸುವ ಕಲೆ ಹಲವಾರು ಹಂತಗಳಿಂದ ಕೂಡಿದೆ: +ಎತ್ತರದ ಮಟ್ಟದಲ್ಲಿ, ಯಂತ್ರ ಕಲಿಕೆ (ML) ಪ್ರಕ್ರಿಯೆಗಳ ವಿನ್ಯಾಸದಲ್ಲಿ ಕೆಲವು ಹಂತಗಳಿವೆ: -1. **ಪ್ರಶ್ನೆಯನ್ನು ನಿರ್ಧರಿಸಿ**. ಬಹುತೇಕ ML ಪ್ರಕ್ರಿಯೆಗಳು ಸರಳ ಶರತಿನ ಪ್ರೋಗ್ರಾಮ್ ಅಥವಾ ನಿಯಮಾಧಾರಿತ ಎಂಜಿನ್ ಮೂಲಕ ಉತ್ತರಿಸದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ. ಈ ಪ್ರಶ್ನೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾ ಸಂಗ್ರಹದ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿಗಳ ಸುತ್ತಲೂ ಇರುತ್ತವೆ. -2. **ಡೇಟಾ ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ಸಿದ್ಧಪಡಿಸಿ**. ನಿಮ್ಮ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸಲು, ನಿಮಗೆ ಡೇಟಾ ಬೇಕಾಗುತ್ತದೆ. ನಿಮ್ಮ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ಪ್ರಮಾಣವು ನಿಮ್ಮ ಪ್ರಾಥಮಿಕ ಪ್ರಶ್ನೆಗೆ ನೀವು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಉತ್ತರಿಸಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವುದು ಈ ಹಂತದ ಪ್ರಮುಖ ಅಂಶವಾಗಿದೆ. ಈ ಹಂತದಲ್ಲಿ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಾಗಿ ಡೇಟಾವನ್ನು ವಿಭಜಿಸುವುದೂ ಸೇರಿದೆ. -3. **ತರಬೇತಿ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡಿ**. ನಿಮ್ಮ ಪ್ರಶ್ನೆ ಮತ್ತು ಡೇಟಾದ ಸ್ವಭಾವದ ಆಧಾರದ ಮೇಲೆ, ನೀವು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಪ್ರತಿಬಿಂಬಿಸುವ ಮತ್ತು ಅದಕ್ಕೆ ಸರಿಯಾದ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಲು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹೇಗೆ ತರಬೇತಿಮಾಡಬೇಕೆಂದು ಆಯ್ಕೆಮಾಡಬೇಕು. ಇದು ನಿಮ್ಮ ML ಪ್ರಕ್ರಿಯೆಯ ಭಾಗವಾಗಿದ್ದು, ವಿಶೇಷ ಪರಿಣತಿ ಮತ್ತು ಬಹುಶಃ ಸಾಕಷ್ಟು ಪ್ರಯೋಗಗಳನ್ನು ಅಗತ್ಯವಿರುತ್ತದೆ. -4. **ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ**. ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು, ನೀವು ವಿವಿಧ ಅಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ ಡೇಟಾದಲ್ಲಿನ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸುವಂತೆ ಮಾಡುತ್ತೀರಿ. ಮಾದರಿ ಒಳಗಿನ ತೂಕಗಳನ್ನು ಬಳಸಬಹುದು, ಅವುಗಳನ್ನು ಹೊಂದಿಸಿ ಡೇಟಾದ ಕೆಲವು ಭಾಗಗಳನ್ನು ಪ್ರಾಧಾನ್ಯತೆ ನೀಡಲು ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು. -5. **ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ**. ನೀವು ಸಂಗ್ರಹಿಸಿದ ಡೇಟಾದಿಂದ ಮೊದಲೇ ನೋಡದ ಡೇಟಾ (ನಿಮ್ಮ ಪರೀಕ್ಷಾ ಡೇಟಾ) ಬಳಸಿ ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ನೋಡುತ್ತೀರಿ. -6. **ಪ್ಯಾರಾಮೀಟರ್ ಟ್ಯೂನಿಂಗ್**. ನಿಮ್ಮ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಧಾರದ ಮೇಲೆ, ನೀವು ವಿವಿಧ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಅಥವಾ ಅಲ್ಗಾರಿದಮ್‌ಗಳ ವರ್ತನೆಯನ್ನು ನಿಯಂತ್ರಿಸುವ ಚರಗಳನ್ನು ಬಳಸಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮರುಕಳಿಸಬಹುದು. -7. **ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ**. ಹೊಸ ಇನ್‌ಪುಟ್‌ಗಳನ್ನು ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. +1. **ಪ್ರಶ್ನೆ ನಿರ್ಧರಿಸಿ**. ಹೆಚ್ಚಿನ ML ಪ್ರಕ್ರಿಯೆಗಳು ಸರಳ ಶರತ್ತುಯುಕ್ತ ಕಾರ್ಯಕ್ರಮ ಅಥವಾ ನಿಯಮ ಆಧಾರಿತ ಎಂಜಿನ್ ಮೂಲಕ ಉತ್ತರಿಸಲಾರಾದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದರಿಂದ ಆರಂಭವಾಗುತ್ತದೆ. ಈ ಪ್ರಶ್ನೆಗಳು ಡೇಟಾ ಸಂಗ್ರಹದ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯವಾಣಿ ಬಗ್ಗೆ ತಿರುಗುತ್ತವೆ. +2. **ಡೇಟಾ ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ತಯಾರಿಸಿಕೊಳ್ಳಿ**. ನಿಮ್ಮ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸಲು, ನಿಮ್ಮ ಬಳಿ ಡೇಟಾ ಬೇಕಾಗುತ್ತದೆ. ನಿಮ್ಮ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ಪ್ರಮಾಣವು ನೀವು ನಿಮ್ಮ ಮೂಲ ಪ್ರಶ್ನೆಗೆ ಎಷ್ಟರಮಟ್ಟಿಗೆ ಉತ್ತರಿಸಬಹುದು ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಡೇಟಾ ದೃಶ್ಯೀಕರಣವು ಈ ಹಂತದ ಪ್ರಮುಖ ಅಂಶವಾಗಿದೆ. ಈ ಹಂತದಲ್ಲಿ ಡೇಟಾವನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಲ್ಲಿ ವಿಭಜಿಸುವುದೂ ಸೇರಿದೆ. +3. **ತರಬೇತಿ ವಿಧಾನ ಆಯ್ಕೆಮಾಡಿ**. ನಿಮ್ಮ ಪ್ರಶ್ನೆ ಮತ್ತು ಡೇಟಾದ ಸ್ವಭಾವದ ಆಧಾರದ ಮೇಲೆ, ಡೇಟಾವನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿ ಪ್ರತಿಬಿಂಬಿಸುವ ಮತ್ತು ಅದಕ್ಕೆ ತಕ್ಕ ವಿವಿಧ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಲು ನೀವು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡುವ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇದು ನಿಮ್ಮ ML ಪ್ರಕ್ರಿಯೆಯ ಭಾಗವಾಗಿದ್ದು ವಿಶೇಷ ಪರಿಣತಿಯನ್ನು ಹಾಗೂ ಕೆಲವು ಬಾರಿ ಹೆಚ್ಚಿನ ಪ್ರಯೋಗಗಳನ್ನು ಅಗತ್ಯವಿರುತ್ತದೆ. +4. **ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ**. ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಬಳಸಿ, ನೀವು ವಿವಿಧ ಅಲ್ಗೋರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡುತ್ತೀರಿ ಮತ್ತು ಡೇಟಾದಲ್ಲಿರುವ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸುವಂತೆ ಮಾಡುತ್ತೀರಿ. ಮಾದರಿ ಒಳಗಿನ ತೂಕಗಳನ್ನು ಹೊಂದಬಹುದು, ಅವುಗಳನ್ನು ಡೇಟಾದ ಕೆಲವು ಭಾಗಗಳನ್ನು ಹೆಚ್ಚಿನ ಪ್ರಾಮುಖ್ಯತೆಯನ್ನಾಗಿಸಲು ಸರಿಪಡಿಸಲು ಬಳಸಬಹುದು. +5. **ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ**. ನೀವು ಈಗಾಗಲೇ ನೋಡದ ಡೇಟಾವನ್ನು (ನಿಮ್ಮ ಪರೀಕ್ಷಾ ಡೇಟಾ) ಬಳಸಿ ಮಾದರಿ ಹೇಗೆ ಕಾರ್ಯಾಚರಿಸುತ್ತಿದೆ ಎಂದು ಪರखಗೊಳ್ಳುತ್ತೀರಿ. +6. **ಪ್ಯಾರಾಮೀಟರ್ ಟ್ಯೂನಿಂಗ್**. ನಿಮ್ಮ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಧಾರದ ಮೇಲೆ, ನೀವು ವಿಭಿನ್ನ ನಿಯಂತ್ರಕಗಳು ಅಥವಾ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಬಳಸಿ ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಬಹುದು, ಇದು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡುವ ಅಲ್ಗೋರಿದಮ್‌ಗಳ ಕೃತ್ವವನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. +7. **ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ**. ಹೊಸ ಇನ್ಪುಟ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಮಾದರಿಯ ಖಚಿತತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. -## ಯಾವ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳಬೇಕು +## ಯಾವ ಪ್ರಶ್ನೆ ಕೇಳಬೇಕೆಂದು -ಕಂಪ್ಯೂಟರ್‌ಗಳು ಡೇಟಾದಲ್ಲಿನ ಗುಪ್ತ ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವಲ್ಲಿ ವಿಶೇಷವಾಗಿ ನಿಪುಣರಾಗಿವೆ. ಈ ಉಪಯೋಗವು ನಿರ್ದಿಷ್ಟ ಕ್ಷೇತ್ರದ ಬಗ್ಗೆ ಪ್ರಶ್ನೆಗಳಿರುವ ಸಂಶೋಧಕರಿಗೆ ಬಹಳ ಸಹಾಯಕವಾಗಿದೆ, ಅವುಗಳನ್ನು ಸರಳ ನಿಯಮಾಧಾರಿತ ಎಂಜಿನ್ ರಚಿಸುವ ಮೂಲಕ ಸುಲಭವಾಗಿ ಉತ್ತರಿಸಲಾಗುವುದಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಅಕ್ಟ್ಯೂರಿಯಲ್ ಕಾರ್ಯದಲ್ಲಿ, ಡೇಟಾ ವಿಜ್ಞಾನಿ ಧೂಮಪಾನ ಮಾಡುವವರ ಮತ್ತು ಧೂಮಪಾನ ಮಾಡದವರ ಮರಣಾಂಶದ ಬಗ್ಗೆ ಕೈಯಿಂದ ರಚಿಸಿದ ನಿಯಮಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು. +ಕಂಪ್ಯೂಟರ್‍ಗಳು ಡೇಟಾದಲ್ಲಿರುವ ಮರೆಮಾಗಿದ ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದರಲ್ಲಿ ವಿಶೇಷ ನೈಪುಣ್ಯ ಹೊಂದಿವೆ. ಈ ಉಪಯೋಗವೇ ಡೊಮೇನ್ ಕುರಿತು ಪ್ರಶ್ನೆಗಳಿರುವ ಸಂಶೋಧಕರಿಗೆ ಬಹಳ ಸಹಾಯಕವಾಗಿದೆ; ಅವರಿಗೆ ನಿಯಮಾಧಾರಿತ ಎಂಜಿನ್ ನಿರ್ಮಿಸುವ ಮೂಲಕ ಸುಲಭವಾಗಿ ಉತ್ತರ ಸಿಗಲಿಲ್ಲ. -ಆದರೆ, ಅನೇಕ ಇತರ ಚರಗಳನ್ನು ಸಮೀಕರಣಕ್ಕೆ ಸೇರಿಸಿದಾಗ, ಭೂತಕಾಲದ ಆರೋಗ್ಯ ಇತಿಹಾಸದ ಆಧಾರದ ಮೇಲೆ ಭವಿಷ್ಯದ ಮರಣಾಂಶ ದರಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ML ಮಾದರಿ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಬಹುದು. ಇನ್ನೊಂದು ಸಂತೋಷದ ಉದಾಹರಣೆ ಎಂದರೆ, ಲ್ಯಾಟಿಟ್ಯೂಡ್, ಲಾಂಗಿಟ್ಯೂಡ್, ಹವಾಮಾನ ಬದಲಾವಣೆ, ಸಮುದ್ರದ ಸಮೀಪತೆ, ಜೆಟ್ ಸ್ಟ್ರೀಮ್ ಮಾದರಿಗಳು ಮತ್ತು ಇನ್ನಷ್ಟು ಡೇಟಾ ಆಧಾರದ ಮೇಲೆ ನಿರ್ದಿಷ್ಟ ಸ್ಥಳದಲ್ಲಿ ಏಪ್ರಿಲ್ ತಿಂಗಳ ಹವಾಮಾನ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡುವುದು. +ಉದಾಹರಣೆಗೆ, ಒಂದು ಆಕ್ಟೂವರಿಯಲ್ ಕಾರ್ಯಕ್ಕಾಗಿ, ಡೇಟಾ ವಿಜ್ಞಾನಿ ಧೂಮಪಾನ ಮಾಡುವವರ ಮತ್ತು ಇಲ್ಲದವರ ಸಾವು-ಬದುಕಿನ ಕುರಿತಾದ ಕೈಯಿಂದ ನಿರ್ಮಿತ ನಿಯಮಗಳನ್ನು ರಚಿಸಬಹುದು. -✅ ಈ [ಸ್ಲೈಡ್ ಡೆಕ್](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ಹವಾಮಾನ ಮಾದರಿಗಳ ಮೇಲೆ ML ಬಳಕೆಯ ಐತಿಹಾಸಿಕ ದೃಷ್ಟಿಕೋನವನ್ನು ನೀಡುತ್ತದೆ. +ಆದರೆ ಅನೇಕ ಬೇರೆಯೂ ಅಂಶಗಳು ಹೇರಲಾಗುವುದಾದಾಗ, ML ಮಾದರಿ ಭವಿಷ್ಯದ ಸಾವು ದರಗಳನ್ನು ಹಿಂದಿನ ಆರೋಗ್ಯ ಇತಿಹಾಸದ ಆಧಾರದ ಮೇಲೆ ಅಭಿಪ್ರೇತಿಸುವುದಕ್ಕೆ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಎಂದು ತೋರುತ್ತದೆ. ಮತ್ತೊಂದು ಆನಂದದಾಯಕ ಉದಾಹರಣೆ ಎಂದರೆ ಯಾವಾಗಲಾದರೂ ಏಪ್ರಿಲ್ ತಿಂಗಳಿನ ಹವಾಮಾನವನ್ನು ಅವಲಂಬಿಸಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದು, ಇದು ಅಗತ್ಯವಿರುವ ಸ್ಥಳದ ಅಕ್ಷಾಂಶ, ರೇಖಾಂಶ, ಹವಾಮಾನ ಬದಲಾವಣೆ, ಸಮುದ್ರದ ಸಮೀಪತೆ, ಜೆಟ್ ಸ್ಟ್ರೀಮ್ ಮಾದರಿಗಳು ಮತ್ತು ಇನ್ನಿತರ ಅಂಶಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. -## ನಿರ್ಮಾಣಕ್ಕೂ ಮುಂಚಿನ ಕಾರ್ಯಗಳು +✅ ಈ [ಸ್ಲೈಡ್ ಡೆಕ್](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ಹವಾಮಾನ ಮಾದರಿಗಳ ಬಗ್ಗೆ ಐತಿಹಾಸಿಕ ದೃಷ್ಟಿಕೋನವನ್ನು ನೀಡುತ್ತದೆ ಮತ್ತು ಹವಾಮಾನ ವಿಶ್ಲೇಷಣೆಯಲ್ಲಿ ML ಬಳಸುವ ಕುರಿತು ತಿಳಿಸುತ್ತದೆ. -ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ನೀವು ಪೂರ್ಣಗೊಳಿಸಬೇಕಾದ ಹಲವಾರು ಕಾರ್ಯಗಳಿವೆ. ನಿಮ್ಮ ಪ್ರಶ್ನೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಗಳ ಆಧಾರದ ಮೇಲೆ ಊಹೆಯನ್ನು ರೂಪಿಸಲು, ನೀವು ಹಲವಾರು ಅಂಶಗಳನ್ನು ಗುರುತಿಸಿ ಸಂರಚಿಸಬೇಕಾಗುತ್ತದೆ. +## ನಿರ್ಮಿಸುವ ಮುಂಚಿನ ಕರ್ತವ್ಯಗಳು + +ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಮುಂಚೆ, ನೀವು ಪೂರ್ಣಗೊಳಿಸಬೇಕಾದ ಹಲವಾರು ಕಾರ್ಯಗಳಿವೆ. ನಿಮ್ಮ ಪ್ರಶ್ನೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಗಳ ಆಧಾರದ ಮೇಲೆ ಹಿಪೊತಿಸಿಸಬೇಕಾದ ಕುರಿತು ನೀವು ಹಲವು ಅಂಶಗಳನ್ನು ಗುರುತಿಸಿ ಸಂರಚಿಸಬೇಕು. ### ಡೇಟಾ -ನಿಮ್ಮ ಪ್ರಶ್ನೆಗೆ ಯಾವುದೇ ರೀತಿಯ ಖಚಿತತೆಯಿಂದ ಉತ್ತರಿಸಲು, ನಿಮಗೆ ಸರಿಯಾದ ಪ್ರಕಾರದ ಸಾಕಷ್ಟು ಡೇಟಾ ಬೇಕಾಗುತ್ತದೆ. ಈ ಸಮಯದಲ್ಲಿ ನೀವು ಮಾಡಬೇಕಾದ ಎರಡು ಕಾರ್ಯಗಳಿವೆ: +ನಿಮ್ಮ ಪ್ರಶ್ನೆಗೆ ಯಾವುದೇ ಖಚಿತತೆಯೊಂದಿಗೆ ಉತ್ತರಿಸಲು, ನೀವು ಸರಿಯಾದ ಪ್ರಕಾರದ ಸಾಕಷ್ಟು ಪ್ರಮಾಣದ ಡೇಟಾ ಬೇಕು. ಈ ಹಂತದಲ್ಲಿ ನೀವು ಮಾಡಬೇಕಾಗಿರುವ ಎರಡು ಕಾರ್ಯಗಳಿವೆ: -- **ಡೇಟಾ ಸಂಗ್ರಹಿಸಿ**. ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯಲ್ಲಿ ನ್ಯಾಯತೆಯ ಬಗ್ಗೆ ಹಿಂದಿನ ಪಾಠವನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಜಾಗರೂಕತೆಯಿಂದ ಸಂಗ್ರಹಿಸಿ. ಈ ಡೇಟಾದ ಮೂಲಗಳು, ಅದರಲ್ಲಿರುವ ಯಾವುದೇ ಅಂತರಂಗಪೂರ್ವಾಗ್ರಹಗಳು ಮತ್ತು ಅದರ ಮೂಲವನ್ನು ದಾಖಲಿಸಿ. -- **ಡೇಟಾ ಸಿದ್ಧಪಡಿಸಿ**. ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಹಲವಾರು ಹಂತಗಳಿವೆ. ನೀವು ವಿಭಿನ್ನ ಮೂಲಗಳಿಂದ ಬಂದಿದ್ದರೆ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ ಸಾಮಾನ್ಯೀಕರಿಸಬೇಕಾಗಬಹುದು. ನೀವು ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಪ್ರಮಾಣವನ್ನು ಸುಧಾರಿಸಲು ವಿವಿಧ ವಿಧಾನಗಳನ್ನು ಬಳಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಸ್ಟ್ರಿಂಗ್‌ಗಳನ್ನು ಸಂಖ್ಯೆಗಳಾಗಿ ಪರಿವರ್ತಿಸುವುದು ([Clustering](../../5-Clustering/1-Visualize/README.md) ನಲ್ಲಿ ಮಾಡುತ್ತೇವೆ). ನೀವು ಮೂಲದ ಆಧಾರದ ಮೇಲೆ ಹೊಸ ಡೇಟಾವನ್ನು ರಚಿಸಬಹುದು ([Classification](../../4-Classification/1-Introduction/README.md) ನಲ್ಲಿ ಮಾಡುತ್ತೇವೆ). ನೀವು ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಸಂಪಾದಿಸಬಹುದು ([Web App](../../3-Web-App/README.md) ಪಾಠದ ಮುಂಚೆ ಮಾಡುತ್ತೇವೆ). ಕೊನೆಗೆ, ನೀವು ತರಬೇತಿ ತಂತ್ರಗಳನ್ನು ಅವಲಂಬಿಸಿ ಅದನ್ನು ಯಾದೃಚ್ಛಿಕಗೊಳಿಸಿ ಮಿಶ್ರಣ ಮಾಡಬೇಕಾಗಬಹುದು. +- **ಡೇಟಾ ಸಂಗ್ರಹಿಸು**. ಡೇಟಾ ವಿಶ್ಲೇಷಣದಲ್ಲಿ ನ್ಯಾಯಸಾಧ್ಯತೆಯ ಕುರಿತು ಮುಂಚಿನ ಪಾಠವು ನಿಮ್ಮ ಮೆದುಳಿನಲ್ಲಿ ಇರಲಿ, ನಿಮ್ಮ ಡೇಟಾ ಎಡತಡೆಯಿಲ್ಲದೆ ಕಲಕೊಳ್ಳಿ. ಈ ಡೇಟಾದ ಮೂಲ, ಅದರ ಒಳನಡಿಕೆ ಮತ್ತು ಮೂಲವನ್ನು ದಾಖಲಿಸಿ. +- **ಡೇಟಾ ತಯಾರಿಸು**. ಡೇಟಾ ತಯಾರಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಹಲವು ಹಂತಗಳಿವೆ. ವಿಭಿನ್ನ ಮೂಲಗಳಿಂದ ಬಂದಾಗ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ ಸಾಮಾನ್ಯೀಕರಿಸಲು ಆಗಬಹುದು. ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಪ್ರಮಾಣವನ್ನು ಸುಧಾರಿಸಲು ನೀವು ಒಬ್ಬ ತಿಳಿವಳಿಕೆಯವರಾಗಿ ಕೋಟೆಯ ಕಡೆಗೆ ಸಂಖ್ಯೆಗೆ ಪರಿವರ್ತನೆ ಮಾಡಬಹುದು (ಹಾಗೆ ನಾವೇ [ಕ್ಲಸ್ಟರಿಂಗ್](../../5-Clustering/1-Visualize/README.md) ನಲ್ಲಿ ತಿಳಿದಿದ್ದೇವೆ). ಮೂಲ ಆಧಾರದ ಮೇಲೆ ನೀವು ಹೊಸ ಡೇಟಾವನ್ನು ಸಹ ಉತ್ಪನ್ನ ಮಾಡಬಹುದು ([ವರ್ಗೀಕರಣ](../../4-Classification/1-Introduction/README.md) ನಲ್ಲಿ ಮಾಡಿದ್ದಂತೆ). ಡೇಟಾವನ್ನು ಶುದ್ಧೀಕರಿಸಿ ಸಂಪಾದಿಸುವುದೂ ಆಗಬಹುದು ([ವೆಬ್ ಅಪ್](../../3-Web-App/README.md) ಪಾಠದ ಮುಂಚೆ ನಾವು ಮಾಡುತ್ತೇವೆ). ಟೆರಬೇಟಿ ತಂತ್ರಗಳನ್ನು ಆಧರಿಸಿ ಯಾವಾಗಲಾದರೂ ಇದನ್ನು ಅಪವ್ಯವಸ್ಥಿತಗೊಳಿಸಲು, ಅನಿಯಮಿತಗೊಳಿಸಲು ಅಗತ್ಯವಿರಬಹುದು. -✅ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದ ನಂತರ, ಅದರ ಆಕಾರವು ನಿಮ್ಮ ಉದ್ದೇಶಿತ ಪ್ರಶ್ನೆಯನ್ನು ಪರಿಹರಿಸಲು ಅನುಕೂಲಕರವಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ನೀವು ನೀಡಿದ ಕಾರ್ಯದಲ್ಲಿ ಡೇಟಾ ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು, ನಾವು [Clustering](../../5-Clustering/1-Visualize/README.md) ಪಾಠಗಳಲ್ಲಿ ಕಂಡುಕೊಳ್ಳುವಂತೆ! +✅ ಡೇಟಾ ಸಂಗ್ರಹಿಸಿ ಪ್ರಕ್ರಿಯೆ ಮಾಡಿಕೊಂಡ ನಂತರ, ಅದರ ಆಕಾರ ನಿಮಗೆ ಬಯಸಿದ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆಯೇ ಎಂದು ಗಮನಿಸಿ. ನಮ್ಮ [ಕ್ಲಸ್ಟರಿಂಗ್](../../5-Clustering/1-Visualize/README.md) ಪಾಠಗಳಲ್ಲಿ ನಾವು ಕಂಡುಕೊಂಡಂತೆ, ಕೆಲವೊಮ್ಮೆ ಡೇಟಾ ನೀಡಲಾದ ಕಾರ್ಯದಲ್ಲಿ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ! -### ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಗುರಿ +### ಲಕ್ಷಣಗಳು ಮತ್ತು ಗುರಿ -[ವೈಶಿಷ್ಟ್ಯ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ಎಂದರೆ ನಿಮ್ಮ ಡೇಟಾದ ಮಾಪನೀಯ ಗುಣಲಕ್ಷಣ. ಅನೇಕ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಇದು 'ದಿನಾಂಕ', 'ಗಾತ್ರ' ಅಥವಾ 'ಬಣ್ಣ' ಎಂಬ ಕಾಲಮ್ ಶೀರ್ಷಿಕೆಯಾಗಿ ವ್ಯಕ್ತವಾಗುತ್ತದೆ. ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯ ಚರ, ಸಾಮಾನ್ಯವಾಗಿ ಕೋಡ್‌ನಲ್ಲಿ `X` ಎಂದು ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ಇದು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಬಳಸುವ ಇನ್‌ಪುಟ್ ಚರವನ್ನು ಸೂಚಿಸುತ್ತದೆ. +[ಲಕ್ಷಣ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ಎಂದರೆ ನಿಮ್ಮ ಡೇಟಾದ ಮಾಪನೆಗೆ ಬಂದಿದೆ. ಹಲವಾರು ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ಇದು 'ದಿನಾಂಕ', 'ಗಾತ್ರ' ಅಥವಾ 'ಬಣ್ಣ' ಮುಂತಾದ ಕಾಲಮ್ ಹೆಡಿಂಗ್‌ಗೆ ಸಮಾನ. ಲಕ್ಷಣ ವ್ಯತ್ಯಾಸ, ಸಾಮಾನ್ಯವಾಗಿ `X` ಎಂಬುದಾಗಿ ಕೋಡ್ನಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ಅದು ತರಬೇತಿಗಾಗಿ ಬಳಸುವ ಇನ್ಪುಟ್ ವ್ಯತ್ಯಾಸವನ್ನು ಸೂಚಿಸುತ್ತದೆ. -ಗುರಿ ಎಂದರೆ ನೀವು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಯತ್ನಿಸುತ್ತಿರುವ ವಸ್ತು. ಗುರಿ ಸಾಮಾನ್ಯವಾಗಿ ಕೋಡ್‌ನಲ್ಲಿ `y` ಎಂದು ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ಇದು ನಿಮ್ಮ ಡೇಟಾದಿಂದ ಕೇಳುತ್ತಿರುವ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರವನ್ನು ಸೂಚಿಸುತ್ತದೆ: ಡಿಸೆಂಬರ್‌ನಲ್ಲಿ, ಯಾವ **ಬಣ್ಣದ** ಕಂಬಳಿಗಳು ಅತಿ ಕಡಿಮೆ ಬೆಲೆಯಿರುತ್ತವೆ? ಸಾನ್ ಫ್ರಾನ್ಸಿಸ್ಕೋದಲ್ಲಿ, ಯಾವ ನೆರೆಹೊರೆಯು ಉತ್ತಮ ರಿಯಲ್ ಎಸ್ಟೇಟ್ **ಬೆಲೆ** ಹೊಂದಿರುತ್ತದೆ? ಕೆಲವೊಮ್ಮೆ ಗುರಿಯನ್ನು ಲೇಬಲ್ ಗುಣಲಕ್ಷಣ ಎಂದು ಕೂಡ ಕರೆಯುತ್ತಾರೆ. +ಗುರಿ ಎಂದರೆ ನೀವು ಭವಿಷ್ಯವನ್ನು ಊಹಿಸುವುದು. ಗುರಿ, ಸಾಮಾನ್ಯವಾಗಿ `y` ಎಂದು ಕೋಡ್ನಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಲ್ಪಡುತ್ತದೆ, ಇದು ನೀವು ಕೇಳುತ್ತಿರುವ ಪ್ರಶ್ನೆಯ ಉತ್ತರ: ಡಿಸೆಂಬರ್ ամսದಲ್ಲಿ, ಯಾವ **ಬಣ್ಣದ** ಫಲಕಿಗಳು ಅತ್ಯಂತ ಕಡಿಮೆ ದರದಲ್ಲಿ ಲಭ್ಯವಾಗುತ್ತವೆ? ಸಂ ಫ್ರಾನ್ಸಿಸ್ಕೋದಲ್ಲಿನ ಯಾವ ಮತ್ತು ಪ್ರದೇಶಗಳು ಉತ್ತಮ **ಬೆಲೆ** ಇರುವ ರಿಯಲ್ ಎಸ್ಟೇಟ್ ಹೊಂದಿರುತ್ತವೆ? ಗುರಿಯನ್ನು ಲೇಬಲ್ ಗುಣಲಕ್ಷಣ ಎಂದು ಕರೆದಿರಬಹುದು. -### ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯ ಚರವನ್ನು ಆಯ್ಕೆಮಾಡುವುದು +### ನಿಮ್ಮ ಲಕ್ಷಣ ವ್ಯತ್ಯಾಸ ಆಯ್ಕೆ ಮಾಡಿಕೊಳ್ಳಿ -🎓 **ವೈಶಿಷ್ಟ್ಯ ಆಯ್ಕೆ ಮತ್ತು ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ** ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವಾಗ ಯಾವ ಚರವನ್ನು ಆಯ್ಕೆಮಾಡಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ತಿಳಿದುಕೊಳ್ಳುತ್ತೀರಿ? ನೀವು ಬಹುಶಃ ಅತ್ಯುತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮಾದರಿಗಾಗಿ ಸರಿಯಾದ ಚರಗಳನ್ನು ಆಯ್ಕೆಮಾಡಲು ವೈಶಿಷ್ಟ್ಯ ಆಯ್ಕೆ ಅಥವಾ ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನುಸರಿಸುತ್ತೀರಿ. ಅವು ಒಂದೇ ಅಲ್ಲ: "ವೈಶಿಷ್ಟ್ಯ ಹೊರತೆಗೆಯುವಿಕೆ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳ ಕಾರ್ಯಗಳಿಂದ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ರಚಿಸುತ್ತದೆ, ಆದರೆ ವೈಶಿಷ್ಟ್ಯ ಆಯ್ಕೆ ವೈಶಿಷ್ಟ್ಯಗಳ ಉಪಸಮೂಹವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ." ([ಮೂಲ](https://wikipedia.org/wiki/Feature_selection)) +🎓 **ಲಕ್ಷಣ ಆಯ್ಕೆ ಮತ್ತು ಲಕ್ಷಣ ಹೊರಹಾಕಿಕೆ** ಮಾದರಿ ನಿರ್ಮಿಸುವಾಗ ಯಾವ ವ್ಯತ್ಯಾಸವನ್ನು ಆರಿಸುವುದು? ಅತ್ಯುತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆ ಹೊಂದಿದ ಮಾದರಿಗಾಗಿ ನೀವು ಲಕ್ಷಣ ಆಯ್ಕೆ ಅಥವಾ ಲಕ್ಷಣ ಹೊರಹಾಕಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯಿಂದಾಗಿ ಹೋಗಬಹುದು. ಅವರ ನಡುವೆ ವ್ಯತ್ಯಾಸವಿದೆ: "ಲಕ್ಷಣ ಹೊರಹಾಕಿಕೆ ಮೂಲ ಲಕ್ಷಣಗಳಿಂದ ಹೊಸ ಲಕ್ಷಣಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ, ಆದರೆ ಲಕ್ಷಣ ಆಯ್ಕೆ ಲಕ್ಷಣಗಳ ಉಪಸಮೂಹವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ." ([ಮೂಲ](https://wikipedia.org/wiki/Feature_selection)) ### ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಿ -ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಉಪಕರಣಗಳ ಪ್ರಮುಖ ಅಂಶವೆಂದರೆ Seaborn ಅಥವಾ MatPlotLib ಮುಂತಾದ ಕೆಲವು ಅತ್ಯುತ್ತಮ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಬಳಸಿ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಶಕ್ತಿ. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯರೂಪದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸುವುದು ನೀವು ಬಳಸಬಹುದಾದ ಗುಪ್ತ ಸಂಬಂಧಗಳನ್ನು ಅನಾವರಣಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ನಿಮ್ಮ ದೃಶ್ಯೀಕರಣಗಳು ಅಸಮತೋಲನ ಅಥವಾ ಅಸಮತೋಲನ ಡೇಟಾವನ್ನು ಅನಾವರಣಗೊಳಿಸಲು ಸಹ ಸಹಾಯ ಮಾಡಬಹುದು ([Classification](../../4-Classification/2-Classifiers-1/README.md) ನಲ್ಲಿ ನಾವು ಕಂಡುಕೊಳ್ಳುವಂತೆ). +ಡೇಟಾಸೈನ್ಟಿಸ್ಟ್ ಉಪಕರಣಗಳ ಪ್ರಮುಖ ಅಂಶವೆಂದರೆ ಡೇಟಾವನ್ನು ಹಲವಾರು ಶ್ರೇಷ್ಠ ಲೈಬ್ರರಿಗಳಾದ ಸೀಬೋರ್ನ್ ಅಥವಾ ಮ್ಯಾಟ್‌ಪ್ಲಾಟ್‌ಲಿಬ್ ಬಳಸಿ ದೃಶ್ಯೀಕರಿಸುವ ಶಕ್ತಿ. ನಿಮ್ಮ ಡೇಟಾವನ್ನು ದೃಶ್ಯ ರೂಪದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸುವುದರಿಂದ ನೀವು ಉಪಯುಕ್ತವಾದ ಅಡಗಿದ ಸಂಬಂಧಗಳನ್ನು ಕಾಣಬಹುದು. ನಿಮ್ಮ ದೃಶ್ಯೀಕರಣವು ಪ್ರತ್ಯರ್ಥ ಅಥವಾ ಅಸಮತೋಲನ ಡೇಟಾವನ್ನು ಕಾಣಲು ಸಹ ಸಹಾಯಕವಾಗಬಹುದು (ನಾವು [ವರ್ಗೀಕರಣ](../../4-Classification/2-Classifiers-1/README.md) ಪಾಠಗಳಲ್ಲಿ ಕಂಡುಕೊಳ್ಳುತ್ತೇವೆ). ### ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಅನ್ನು ವಿಭಜಿಸಿ -ತರಬೇತಿಗೆ ಮುಂಚೆ, ನೀವು ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅಸಮಾನ ಗಾತ್ರದ ಎರಡು ಅಥವಾ ಹೆಚ್ಚು ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು, ಆದರೆ ಅವು ಡೇಟಾವನ್ನು ಚೆನ್ನಾಗಿ ಪ್ರತಿನಿಧಿಸಬೇಕು. +ತರಬೇತಿಗೆ ಮುಂಚೆ, ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅನುಪಾಲಿತ ಗಾತ್ರದ ಎರಡು ಅಥವಾ ಹೆಚ್ಚು ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು, ಆದರೆ ಡೇಟಾದ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ತಪ್ಪದಂತೆ. -- **ತರಬೇತಿ**. ಡೇಟಾಸೆಟ್‌ನ ಈ ಭಾಗವನ್ನು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹೊಂದಿಸಲಾಗುತ್ತದೆ. ಈ ಸೆಟ್ ಮೂಲ ಡೇಟಾಸೆಟ್‌ನ ಬಹುಮತವನ್ನು ಹೊಂದಿದೆ. -- **ಪರೀಕ್ಷೆ**. ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್ ಸ್ವತಂತ್ರ ಡೇಟಾ ಗುಂಪಾಗಿದೆ, ಸಾಮಾನ್ಯವಾಗಿ ಮೂಲ ಡೇಟಾದಿಂದ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ನೀವು ನಿರ್ಮಿಸಿದ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ದೃಢೀಕರಿಸಲು ಬಳಸುತ್ತೀರಿ. -- **ಮಾನ್ಯತೆ**. ಮಾನ್ಯತೆ ಸೆಟ್ ಒಂದು ಸಣ್ಣ ಸ್ವತಂತ್ರ ಉದಾಹರಣೆಗಳ ಗುಂಪು, ನೀವು ಮಾದರಿಯ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಅಥವಾ ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಸುಧಾರಿಸಲು ಬಳಸುತ್ತೀರಿ. ನಿಮ್ಮ ಡೇಟಾದ ಗಾತ್ರ ಮತ್ತು ನೀವು ಕೇಳುತ್ತಿರುವ ಪ್ರಶ್ನೆಯ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಈ ಮೂರನೇ ಸೆಟ್ ಅನ್ನು ನಿರ್ಮಿಸುವ ಅಗತ್ಯವಿಲ್ಲದಿರಬಹುದು ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) ನಲ್ಲಿ ನಾವು ಗಮನಿಸುತ್ತೇವೆ). +- **ತರಬೇತಿ**. ಡೇಟಾಸೆಟ್‌ನ ಈ ಭಾಗವು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹೊಂದಿಕೊಳ್ಳುತ್ತವೆ. ಇದು ಮೂಲ ಡೇಟಾಸೆಟ್‌ನ ಬಹುತೇಕ ಭಾಗವಾಗಿದೆ. +- **ಪರೀಕ್ಷೆ**. ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್ ಸ್ವತಂತ್ರ ಗುಂಪು, ಸಾಮಾನ್ಯವಾಗಿ ಮೂಲ ಡೇಟಾದಿಂದ ಸಂಗ್ರಹಿಸಲ್ಪಟ್ಟಿದ್ದು, ನಿರ್ಮಿತ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ದೃಢೀಕರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. +- **ಮಾನ್ಯತೆ**. ಮಾನ್ಯತಾ ಸೆಟ್ ಒಂದು ಸಣ್ಣ ಸ್ವತಂತ್ರ ಉದಾಹರಣೆ ಗುಂಪಾಗಿದೆ, ಇದನ್ನು ಮಾದರಿಯ ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಅಥವಾ ರಚನೆ ತಿದ್ದುಪಡಿ ಮಾಡಲು ಬಳಸಿಸಲಾಗುತ್ತದೆ, ಮಾದರಿಯ ಗುಣಮಟ್ಟ ಸುಧಾರಣೆಗೆ. ಡೇಟಾದ ಗಾತ್ರ ಮತ್ತು ಪ್ರಶ್ನೆಯ ಮೇಲೆ ಪರಿಗಣಿಸಿ, ನೀವು ಈ ಮೂರನೇ ಸೆಟ್ ಅನ್ನು ರಚಿಸುವ ಅಗತ್ಯವಿರಲಾರದು ([ಸಮಯ ಸರಣಿ ಪೂರ್ವಕಾಣಿಕೆ](../../7-TimeSeries/1-Introduction/README.md) ನಲ್ಲಿ ತಿಳಿಸಲಾಗಿದೆ). -## ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವುದು +## ಮಾದರಿ ನಿರ್ಮಾಣ -ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಬಳಸಿ, ನಿಮ್ಮ ಗುರಿ ವಿವಿಧ ಅಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿ ಮಾದರಿಯನ್ನು **ತರಬೇತಿಮಾಡುವುದು** ಅಥವಾ ನಿಮ್ಮ ಡೇಟಾದ ಸಾಂಖ್ಯಿಕ ಪ್ರತಿನಿಧಾನವನ್ನು ನಿರ್ಮಿಸುವುದು. ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡುವುದು ಅದನ್ನು ಡೇಟಾಗೆ ಪರಿಚಯಿಸುವುದು ಮತ್ತು ಅದು ಕಂಡುಹಿಡಿದ ಮಾದರಿಗಳನ್ನು ಊಹಿಸಲು, ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಅಂಗೀಕರಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ. +ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು, ನಿಮ್ಮ ಗುರಿ ಮಾದರಿ ಅಥವಾ ಡೇಟಾದ ಸಂಖ್ಯಾಶಾಸ್ತ್ರೀಯ ಪ್ರತಿನಿಧಿಯನ್ನು ವಿವಿಧ ಅಲ್ಗೋರಿದಮ್‌ಗಳ ಮೂಲಕ ತರಬೇತಿಮಾಡುವುದು. ಮಾದರಿ ತರಬೇತಿಸುವಿಕೆ ಡೇಟಾನ್ನು ಅನಾಲಿಸುಮಾಡುವಿಕೆಗಳಿಗೆ ಒಳಪಡಿಸುವುದು ಮತ್ತು ಕಂಡುಹಿಡಿದ ಮಾದರಿಗಳನ್ನು ಅದೃಷ್ಟಿಸಿಕೊಂಡು ಸ್ವೀಕರಿಸುವ ಅಥವಾ ನಿರಾಕರಿಸುವ ಅವಕಾಶವನ್ನು ಕಲ್ಪಿಸುತ್ತದೆ. -### ತರಬೇತಿ ವಿಧಾನವನ್ನು ನಿರ್ಧರಿಸಿ +### ತರಬೇತಿ ವಿಧಾನ ಆಯ್ಕೆಮಾಡಿ -ನಿಮ್ಮ ಪ್ರಶ್ನೆ ಮತ್ತು ಡೇಟಾದ ಸ್ವಭಾವದ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಅದನ್ನು ತರಬೇತಿಮಾಡಲು ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ. [Scikit-learn ನ ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/user_guide.html) ಅನ್ನು ಅನುಸರಿಸಿ - ನಾವು ಈ ಕೋರ್ಸ್‌ನಲ್ಲಿ ಬಳಸುತ್ತೇವೆ - ನೀವು ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ಅನ್ವೇಷಿಸಬಹುದು. ನಿಮ್ಮ ಅನುಭವದ ಆಧಾರದ ಮೇಲೆ, ನೀವು ಅತ್ಯುತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಹಲವು ವಿಭಿನ್ನ ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬೇಕಾಗಬಹುದು. ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಅಪ್ರತ്യക്ഷ ಡೇಟಾವನ್ನು ನೀಡುವ ಮೂಲಕ, ನಿಖರತೆ, ಪೂರ್ವಾಗ್ರಹ ಮತ್ತು ಇತರ ಗುಣಮಟ್ಟ ಕುಗ್ಗಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ, ಮತ್ತು ಕಾರ್ಯಕ್ಕೆ ಸೂಕ್ತವಾದ ತರಬೇತಿ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನೀವು ಅನುಭವಿಸುವಿರಿ. +ನಿಮ್ಮ ಪ್ರಶ್ನೆ ಮತ್ತು ಡೇಟಾದ ಸ್ವಭಾವದ ಆಧಾರದ ಮೇಲೆ, ನೀವು ತರಬೇತಿಗೆ ಕ್ರಮವನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ. [ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ನ ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://scikit-learn.org/stable/user_guide.html) ಮೂಲಕ ನೀವು ಅನೇಕ ವಿಧಾನಗಳನ್ನು ಅನ್ವೇಷಿಸಬಹುದು. ನಿಮ್ಮ ಅನುಭಾವದ ಪ್ರಕಾರ, ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ನೀವು ಹಲವು ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು. ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಕಾಣದ ಡೇಟಾವನ್ನು ಚುಂಬಿಸುವ ಮೂಲಕ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತಾರೆ, ಖಚಿತತೆ, ಅಡಚಣೆ ಮತ್ತು ಗುಣಮಟ್ಟವನ್ನು ಹಾಳುಮಾಡುವ ಇತರ ಸಮಸ್ಯೆಗಳನ್ನು ತಪಾಸಣೆ ಮಾಡುವ ಮೂಲಕ ಕಾರ್ಯಕ್ಕೆ ಸರಿಯಾದ ತರಬೇತಿ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತಾರೆ. -### ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ +### ಮಾದರಿ ತರಬೇತಿಮಾಡಿ -ನಿಮ್ಮ ತರಬೇತಿ ಡೇಟಾ ಸಿದ್ಧವಾಗಿರುವಾಗ, ನೀವು ಅದನ್ನು 'ಫಿಟ್' ಮಾಡಿ ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ಬಹುಶಃ ನೀವು ಹಲವಾರು ML ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ 'model.fit' ಎಂಬ ಕೋಡ್ ಅನ್ನು ಕಾಣುತ್ತೀರಿ - ಈ ಸಮಯದಲ್ಲಿ ನೀವು ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯ ಚರವನ್ನು ಮೌಲ್ಯಗಳ ಸರಣಿಯಾಗಿ (ಸಾಮಾನ್ಯವಾಗಿ 'X') ಮತ್ತು ಗುರಿ ಚರವನ್ನು (ಸಾಮಾನ್ಯವಾಗಿ 'y') ಕಳುಹಿಸುತ್ತೀರಿ. +ತರಬೇತಿ ಡೇಟಾ ಹೊಂದಿ, ನೀವು 'model.fit' ಕೋಡ್ ಅನ್ನು ದೃಷ್ಟಿಸಿ, ಇದೇನೆಂದರೆ ನೀವು ನಿಮ್ಮ ಲಕ್ಷಣ ವ್ಯತ್ಯಾಸವನ್ನು (ಸರಾಸರಿ 'X' ಎಂದು), ಮತ್ತು ಗುರಿ ವ್ಯತ್ಯಾಸವನ್ನು (ಸರಾಸರಿ 'y' ಎಂದು) ಸರಣಿಯಾಗಿ ಸಲ್ಲಿಸುತ್ತೀರಿ. ### ಮಾದರಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ -ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆ ಪೂರ್ಣಗೊಂಡ ನಂತರ (ದೊಡ್ಡ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಲು ಹಲವಾರು ಪುನರಾವೃತ್ತಿಗಳು ಅಥವಾ 'ಎಪೋಕ್ಸ್' ಬೇಕಾಗಬಹುದು), ನೀವು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಬಳಸಿ ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. ಈ ಡೇಟಾ ಮೂಲ ಡೇಟಾದ ಉಪಸಮೂಹವಾಗಿದ್ದು, ಮಾದರಿ ಮೊದಲು ವಿಶ್ಲೇಷಿಸದ ಡೇಟಾಗೆ ಸೇರಿದೆ. ನೀವು ನಿಮ್ಮ ಮಾದರಿಯ ಗುಣಮಟ್ಟದ ಬಗ್ಗೆ ಮೆಟ್ರಿಕ್‌ಗಳ ಟೇಬಲ್ ಅನ್ನು ಮುದ್ರಿಸಬಹುದು. +ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆ ಪೂರ್ಣಗೊಂಡಾಗ (ಜನರಾಗಿ 'ಎಪೊಕ್ಸ್' ಎಂಬ ಹಲವಾರು ಪುನರಾವೃತಿಗಳನ್ನು ಬೇಕಾಗಬಹುದು), ನಿಮ್ಮ ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಪರೀಕ್ಷಾ ಡೇಟಾಗಳು ಬಳಸಿ ಪರಿಶೀಲಿಸಬಹುದು. ಈ ಡೇಟಾ ಮೂಲ ಡೇಟಾದ ಉಪಸಮೂಹವಾಗಿದ್ದು, ಮಾದರಿಯತ್ತ ಮೊದಲಿಗ್ ನೋಡಲ್ಪಟ್ಟಿಲ್ಲ. ನೀವು ಮಾದರಿಯ ಗುಣಮಟ್ಟದ ಮೀರಿಗಳುಳ್ಳ ಟೇಬಲ್ಲನ್ನು ಮುದ್ರಣ ಮಾಡಬಹುದು. 🎓 **ಮಾದರಿ ಫಿಟಿಂಗ್** -ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಂದರ್ಭದಲ್ಲಿ, ಮಾದರಿ ಫಿಟಿಂಗ್ ಎಂದರೆ ಮಾದರಿಯ ಅಡಿಪಾಯ ಕಾರ್ಯವು ಪರಿಚಿತವಲ್ಲದ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಯತ್ನಿಸುವಾಗ ಅದರ ನಿಖರತೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. +ಯಂತ್ರ ಕಲಿಕೆಯಲ್ಲಿ, ಮಾದರಿ ಫಿಟಿಂಗ್ ಎಂದರೆ ಮಾದರಿಯ ಮೂಲ ಕಾರ್ಯವೇಧನೆಯ ಖಚಿತತೆ, ಇದು ಅದಕ್ಕೆ ಪರಿಚಿತವಿಲ್ಲದ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. -🎓 **ಅಡಿಗೊಳಿಸುವಿಕೆ** ಮತ್ತು **ಅತಿಗೊಳಿಸುವಿಕೆ** ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳು, ಅವು ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಕುಗ್ಗಿಸುತ್ತವೆ, ಏಕೆಂದರೆ ಮಾದರಿ ಸರಿಯಾಗಿ ಹೊಂದದಿರುವುದು ಅಥವಾ ತುಂಬಾ ಚೆನ್ನಾಗಿ ಹೊಂದಿರುವುದು. ಇದರಿಂದ ಮಾದರಿ ತರಬೇತಿ ಡೇಟಾದೊಂದಿಗೆ ತುಂಬಾ ಸಮೀಪವಾಗಿ ಅಥವಾ ತುಂಬಾ ದೂರವಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಅತಿಗೊಳಿಸಿದ ಮಾದರಿ ತರಬೇತಿ ಡೇಟಾದ ವಿವರಗಳು ಮತ್ತು ಶಬ್ದವನ್ನು ತುಂಬಾ ಚೆನ್ನಾಗಿ ಕಲಿತಿರುವುದರಿಂದ ಅದನ್ನು ತುಂಬಾ ಚೆನ್ನಾಗಿ ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತದೆ. ಅಡಿಗೊಳಿಸಿದ ಮಾದರಿ ನಿಖರವಿಲ್ಲ, ಏಕೆಂದರೆ ಅದು ತನ್ನ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಅಥವಾ ಇನ್ನೂ 'ನೋಡದ' ಡೇಟಾವನ್ನು ಸರಿಯಾಗಿ ವಿಶ್ಲೇಷಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. +🎓 **ಅಡವಿಕೆ** ಮತ್ತು **ಅತಿಯಾಗಿ ಫಿಟಿಂಗ್** ಎಂಬವು ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳಾಗಿದ್ದು, ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಹಾಳುಮಾಡುವುದಕ್ಕೆ ಕಾರಣವಾಗುತ್ತವೆ, ಏಕೆಂದರೆ ಮಾದರಿ ಎಷ್ಟು ಚೆನ್ನಾಗಿಲ್ಲದೆ ಅಥವಾ ಹೆಚ್ಚು ಚೆನ್ನಾಗಿಯೂ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. ಇದು ಮಾದರಿಗೆ ತರಬೇತಿ ಡೇಟಾವಿಗಿಂತ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ಸಮೀಪಿಸುವ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಮಾಡಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ. ಅತಿಯಾಗಿ ಫಿಟ್ ಮಾಡಿದ ಮಾದರಿ ತರಬೇತಿ ಡೇಟಾ ವಿವರಗಳನ್ನು ಹಾಗೂ ಶಬ್ದಗಳನ್ನು ತುಂಬಾ ಚೆನ್ನಾಗಿ ಕಲಿತದ್ದರಿಂದ ಒಂದು ರೀತಿಯಲ್ಲಿ ಹೆಚ್ಚು ನಿಖರವಾಗಿರುತ್ತದೆ. ಅಡವಿಕೆಯಾಗಿರುವ ಮಾದರಿ ತನ್ನ ತರಬೇತಿ ಡೇಟಾವನ್ನು ಮತ್ತು ನೋಡದ ಡೇಟಾವನ್ನು ನಿಖರವಾಗಿ ವಿಶ್ಲೇಷಿಸಲು ಅಸಮರ್ಥವಾಗಿದೆ. ![overfitting model](../../../../translated_images/kn/overfitting.1c132d92bfd93cb6.webp) -> ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ +> ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ## ಪ್ಯಾರಾಮೀಟರ್ ಟ್ಯೂನಿಂಗ್ -ನಿಮ್ಮ ಪ್ರಾಥಮಿಕ ತರಬೇತಿ ಪೂರ್ಣಗೊಂಡ ನಂತರ, ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಗಮನಿಸಿ ಮತ್ತು ಅದರ 'ಹೈಪರ್‌ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು' ಸುಧಾರಿಸಲು ಪರಿಗಣಿಸಿ. ಪ್ರಕ್ರಿಯೆಯ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) ಓದಿ. +ನಿಮ್ಮ ಪ್ರಾಥಮಿಕ ತರಬೇತಿ ಪೂರ್ಣವಾದ ನಂತರ, ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು ಗಮನಿಸಿ ಅದರ 'ಹೈಪರ್‍ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು' ತಿದ್ದುಪಡಿ ಮಾಡುವ ಮೂಲಕ ಸುಧಾರಿಸಲು ಯೋಚಿಸಿ. ಈ ಪ್ರಕ್ರಿಯೆಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಡಾಕ್ಯುಮೆಂಟೇಶನ್](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) ಓದಿ. ## ಭವಿಷ್ಯವಾಣಿ -ಈ ಸಮಯದಲ್ಲಿ ನೀವು ಸಂಪೂರ್ಣ ಹೊಸ ಡೇಟಾವನ್ನು ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಬಹುದು. 'ಅಪ್ಲೈಡ್' ML ಪರಿಸರದಲ್ಲಿ, ನೀವು ಮಾದರಿಯನ್ನು ಉತ್ಪಾದನೆಯಲ್ಲಿ ಬಳಸಲು ವೆಬ್ ಆಸ್ತಿ ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಈ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ (ಉದಾಹರಣೆಗೆ ಬಟನ್ ಒತ್ತುವುದು) ಸಂಗ್ರಹಿಸಿ, ಚರವನ್ನು ಸೆಟ್ ಮಾಡಿ ಮತ್ತು ಮಾದರಿಗೆ ಇನ್ಫರೆನ್ಸ್ ಅಥವಾ ಮೌಲ್ಯಮಾಪನಕ್ಕಾಗಿ ಕಳುಹಿಸುವುದು ಸೇರಬಹುದು. +ಈ ಸಮಯದಲ್ಲಿ ನೀವು ಸಂಪೂರ್ಣ ಹೊಸ ಡೇಟಾವನ್ನು ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ನಿಖರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಬಹುದು. 'ಅಪ್ಲೈಡ್' ML ಪಾರಂಪರಿಕದಲ್ಲಿ, ನೀವು ವೆಬ್ ಆಸ್ತಿ ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಈ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ (ಉದಾ: ಒಂದು ಬಟನ್ ಒತ್ತುವುದು) ಸಂಗ್ರಹಿಸಿ ಅದನ್ನು ಮಾದರಿಗೆ ನಿರ್ಣಯ ಅಥವಾ ಮೌಲ್ಯಮಾಪನ ನಡೆಸಲು ಕಳುಹಿಸುವುದು ಒಳಗೊಂಡಿರಬಹುದು. -ಈ ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಈ ಹಂತಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಿದ್ಧಪಡಿಸುವುದು, ನಿರ್ಮಿಸುವುದು, ಪರೀಕ್ಷಿಸುವುದು, ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದನ್ನು ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತೀರಿ - ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಎಲ್ಲಾ ಚಲನೆಗಳು ಮತ್ತು ಇನ್ನಷ್ಟು, ನೀವು 'ಫುಲ್ ಸ್ಟಾಕ್' ML ಎಂಜಿನಿಯರ್ ಆಗಲು ನಿಮ್ಮ ಪ್ರಯಾಣದಲ್ಲಿ ಮುಂದುವರಿಯುವಂತೆ. +ಈ ಪಾಠಗಳಲ್ಲಿ, ನೀವು ಈ ಹಂತಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು, ತಯಾರಿಸುವುದು, ನಿರ್ಮಿಸುವುದು, ಪರೀಕ್ಷಿಸುವುದು, ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು ಮತ್ತು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತೀರಿ — ಇದು ಒಂದು ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಎಲ್ಲಾ ಚಲನೆಗಳು ಮತ್ತು ವಿಸ್ತಾರವಾಗಿ, ನಿಮಗೆ 'ಫುಲ್ ಸ್ಟ್ಯಾಕ್' ML ಎಂಜಿನಿಯರ್ ಆಗಲು ದಾರಿತೋರಲಿದೆ. --- ## 🚀ಸವಾಲು -ML ಅಭ್ಯಾಸಗಾರರ ಹಂತಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಫ್ಲೋ ಚಾರ್ಟ್ ರಚಿಸಿ. ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ನೀವು ಈಗ ಎಲ್ಲಿದ್ದೀರಿ ಎಂದು ನೀವು ಎಲ್ಲಿ ನೋಡುತ್ತೀರಿ? ನೀವು ಯಾವಲ್ಲಿ ಕಷ್ಟವನ್ನು ಎದುರಿಸುವಿರಿ ಎಂದು ಭವಿಷ್ಯವಾಣಿ ಮಾಡುತ್ತೀರಿ? ನಿಮಗೆ ಯಾವುದು ಸುಲಭವಾಗುತ್ತದೆ? +ಯಂತ್ರ ಕಲಿಕೆಯ ಅಭ್ಯಾಸಗಾರನ ಹಂತಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಫ್ಲೋ ಚಾರ್ಟ್ ರಚಿಸಿ. ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿದ್ದ ನೀವು ಈಗ ಎಲ್ಲಿದ್ದೀರಿ? ಎಲ್ಲಿ ತೊಂದರೆ ಸಹಮತಿಸುವಿರಿ? ಯಾವ ಹಂತ ನಿಮ್ಮಿಗೆ ಸುಲಭವಾಗದು? -## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) +## [ಪೋಸ್ಟ್-ಲೇಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) -## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ +## ಪರಿಶೀಲನೆ ಮತ್ತು ಸ್ವ-ಅಧ್ಯಯನ -ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ತಮ್ಮ ದೈನಂದಿನ ಕೆಲಸವನ್ನು ಚರ್ಚಿಸುವ ಸಂದರ್ಶನಗಳನ್ನು ಆನ್ಲೈನ್‌ನಲ್ಲಿ ಹುಡುಕಿ. ಇಲ್ಲಿ ಒಂದು [ಇದು](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ಇದೆ. +ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳ ದೈನಂದಿನ ಕೆಲಸದ ಬಗ್ಗೆ ಸಂದರ್ಶನಗಳನ್ನು ಆನ್ಲೈನಿನಲ್ಲಿ ಹುಡುಕಿ. ಇಲ್ಲಿ ಒಂದು [ಇದು](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ಇದೆ. -## ನಿಯೋಜನೆ +## ಕಾರ್ಯಾವಳಿ -[ಡೇಟಾ ವಿಜ್ಞಾನಿಯನ್ನು ಸಂದರ್ಶನ ಮಾಡಿ](assignment.md) +[ಡೇಟಾ ವಿಜ್ಞಾನಿಯನ್ನು ಸಂದರ್ಶನ ಮಾಡು](assignment.md) --- -**ಅಸ್ವೀಕರಣ**: -ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. +**ಡೆಸ್ಕ್ಲೇಮರ್**: +ಈ ಡಾಕ್ಯೂಮೆಂಟ್ ಅನ್ನು AI ಭಾಷಾಂತರ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸarak್ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿರ್ವಹಿಸುವಿದ್ದರೂ ಕೂಡ, ಸ್ವಯಂಚಾಲಿತ ಭಾಷಾಂತರಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ತಪ್ಪು ಮಾಹಿತಿಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಡಾಕ್ಯೂಮೆಂಟ್ ತನ್ನ ತಾಯ್ನಾಡಿನ ಭಾಷೆಯಲ್ಲಿ ಅಧಿಕೃತ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಗಂಭೀರ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಭಾಷಾಂತರವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದವನ್ನು ಬಳಸುವ ಮೂಲಕ ಉಂಟಾಗುವ ಯಾವುದೇ ಅಸಮಜಸ್ಟತೆಗಳು ಅಥವಾ ತಪ್ಪು ಅರ್ಥಗರ್ಭಿತತೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಲ್ಲ. \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/README.md b/translations/kn/2-Regression/3-Linear/README.md index 0d72c51369..b4cfd20dcb 100644 --- a/translations/kn/2-Regression/3-Linear/README.md +++ b/translations/kn/2-Regression/3-Linear/README.md @@ -1,137 +1,136 @@ -# ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ಬಳಸಿ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತಯಾರಿಸುವುದು: ರೆಗ್ರೆಷನ್ ನಾಲ್ಕು ವಿಧಾನಗಳು +# Scikit-learn ಬಳಸಿ ರೆಗ್ರೆಷನ್ ಮಾದರಿ ರಚಿಸಿ: ನಾಲವಾರು ರೆಗ್ರೆಷನ್ ರೀತೆಗಳು -## ಪ್ರಾರಂಭಿಕ ಟಿಪ್ಪಣಿ +## ಆರಂಭಿಕ ಗಮನಿಕೆ -ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಅನ್ನು ನಾವು **ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯ** (ಉದಾಹರಣೆಗೆ, ಮನೆ ಬೆಲೆ, ತಾಪಮಾನ ಅಥವಾ ಮಾರಾಟ) ಅನ್ನು ಊಹಿಸಲು ಬಯಸುವಾಗ ಬಳಸಲಾಗುತ್ತದೆ. -ಇದು ಇನ್ಪುಟ್ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಔಟ್‌ಪುಟ್ ನಡುವಣ ಸಂಬಂಧವನ್ನು ಉತ್ತಮವಾಗಿ ಪ್ರತಿನಿಧಿಸುವ ಸರಳ ರೇಖೆಯನ್ನು ಹುಡುಕುವುದರಿಂದ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. +ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಅನ್ನು ನಮಗೆ **ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು** (ಉದಾಹರಣೆಗೆ, ಮನೆಯ ಬೆಲೆ, ತಾಪಮಾನ, ಅಥವಾ ಮಾರಾಟ) ಮೊತ್ತ предಿಕ್ಟ್ ಮಾಡಲು ಬಳಸದಾಗ ಬಳಸಲಾಗುತ್ತದೆ. +ಇದು ಇನ್ಪುಟ್ ವೈಶಿಷ್ಟ್ಯಗಳ ಮತ್ತು ಔಟ್‌ಪುಟ್ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿ ಪ್ರತಿನಿಧಿಸುವ ಸರಳ ರೇಖೆಯನ್ನು ಕಂಡುಹಿಡಿಯುವುದರ ಮೂಲಕ ಕೆಲಸ ಮಾಡುತ್ತದೆ. -ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಹೆಚ್ಚು ಮುಂದುವರಿದ ರೆಗ್ರೆಷನ್ ತಂತ್ರಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಮೊದಲು ಕನ್ಸೆಪ್ಟ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದರ ಮೇಲೆ ಗಮನಹರಿಸುತ್ತೇವೆ. -![ಲೀನಿಯರ್ ಮತ್ತು ಪೊಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಷನ್ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/kn/linear-polynomial.5523c7cb6576ccab.webp) -> ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) ಅವರಿಂದ -## [ಪೂರ್ವ-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/) +ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಹೆಚ್ಚು ಪ್ರಗತಿಶೀಲ ರೆಗ್ರೆಷನ್ ತಂತ್ರಗಳ ಅನ್ವೇಷಣೆಗೆ ಮೊದಲು ಆ ಕಲ್ಪನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಕೇಂದ್ರಿತವಾಗಿದ್ದೇವೆ. +![ಲೀನಿಯರ್ ವಿರುದ್ಧ ಪಾಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಷನ್ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/kn/linear-polynomial.5523c7cb6576ccab.webp) +> ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) +## [ಪೂರ್ವ-ವರ್ಗ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) -> ### [ಈ ಪಾಠ R ಭಾಷೆಯಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### ಪರಿಚಯ +> ### [ಈ ಪಾಠವು R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### ಪರಿಚಯ -ಇಲ್ಲಿಯವರೆಗಿನಂತೆ ನೀವು ರೆಗರೇಶನ್ ಏನೆಂದು ತಿಳಿದುಕೊಂಡಿದ್ದೀರಿ ಮತ್ತು ಇದು ನಾವು ಈ ಪಾಠದಲ್ಲಿ ಬಳಸಲಿರುವ ಕಡಲೆಕಾಯಿ ಬೆಲೆಗಳ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿರುವ ಮಾದರಿ ಡೇಟಾದೊಂದಿಗೆ ಆಗಿತ್ತು. ನೀವು ಇದನ್ನು ಮೆಟ್ಪ್ಲಾಟ್‌ಲಿಬ್ ಬಳಸಿ ದೃಶ್ಯೀಕರಿಸಿರುವಿರಿ. +ಈವರೆಗೂ ನೀವು ರೆಗ್ರೆಷನ್ ಎಂದರೇನು ಎಂದು ಪಂಪ್‌ಕಿನ್ ಬೆಲೆ ನಿಗಧಿ ಡೇಟಾ ಸೆಟ್‌ನ ಮಾದರಿ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ಅನ್ವೇಷಿಸಿದ್ದು, ಅದನ್ನು Matplotlib ಬಳಸಿ ದೃಶ್ಯೀಕರಿಸಿರುವಿರಿ. -ಈಗ ನೀವು ಎಂಎಲ್ ನ ರೆಗ್ರೆಷನನ್ನು ಇನ್ನೂ ಆಳವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ದೃಶ್ಯೀಕರಣವು ಡೇಟಾವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯಮಾಡುತ್ತದೆ ಆದರೆ ಯಥಾರ್ಥ ಶಕ್ತಿ ಮಷೀನ್ ಲರ್ನಿಂಗಿನಲ್ಲಿ ಬರುತ್ತದೆ _ಮಾಡೆಲ್ಗಳನ್ನು ತರಬೇತುಗೊಳಿಸುವುದರಿಂದ_. -ಮಾಡೆಲ್ಗಳು ಇತಿಹಾಸದ ಡೇಟಾದಲ್ಲಿ ತರಬೇತುಗೊಳ್ಳುತ್ತವೆ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೇಟಾ ಅವಲಂಬನೆಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳುತ್ತವೆ, ಮತ್ತು ಹೊಸ ಡೇಟಾಗೆ ಫಲಿತಾಂಶಗಳನ್ನು ಊಹಿಸಲು ಸಹಾಯಮಾಡುತ್ತವೆ, ಇದು ಮಾಡೆಲು ಹಿಂದಿನಿಂದಲೇ ನೋಡುವುದಿಲ್ಲ. +ಈಗ ನೀವು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ಗಾಗಿ ರೆಗ್ರೆಷ್ನ್ ಮಾಡಲು ಇನ್ನಷ್ಟು ಆಳಕ್ಕೆ ಹೋಗಲು ಸಿದ್ಧರಿದ್ದು. ದೃಶ್ಯೀಕರಣದಿಂದ ಡೇಟಾವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು, ಆದರೆ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ನ ನಿಜವಾದ ಶಕ್ತಿ _ಮಾದರಿಗಳನ್ನು ತರಬೇತಿಮಾಡುವುದರಿಂದ_ ಬರುತ್ತದೆ. ಮಾದರಿಗಳನ್ನು ಇತಿಹಾಸದ ಡೇಟಾಬನ್ನ ಮೇಲೆ ತರಬೇತಿಮಾಡಲಾಗುತ್ತದೆ, ಇದು ಸ್ವಯಂಕ್ರಿಯವಾಗಿ ಡೇಟಾ ಅವಲಂಬನೆಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ಮಾದರಿ ಇತ್ತೀಚೆಗೆ ಕಾಣದ ಹೊಸ ಡೇಟಾ ಬಗ್ಗೆ ಭವಿಷ್ಯ ನುಡಿಸುವುದಕ್ಕೆ ಅನುಮತಿಸುತ್ತದೆ. -ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಎರಡು ಪ್ರಕಾರದ ರೆಗ್ರೆಷನ್ಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚು ತಿಳಿಯುತ್ತೀರಿ: _ಮೂಲಭೂತ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್_ ಮತ್ತು _ಪೊಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಷನ್_, ಜೊತೆಯಲ್ಲಿ ಈ ತಂತ್ರಗಳ ಮೂಲ ಗಣಿತ. ಆ ಮಾದರಿಗಳು ವಿವಿಧ ಇನ್‌ಪುಟ್ ಡೇಟಾದ ಮೇಲೆ ಆಧರಿಸಿ ಕಡಲೆಕಾಯಿ ಬೆಲೆಗಳನ್ನು ಊಹಿಸಲು ನಮಗೆ ಸಹಾಯಮಾಡುತ್ತವೆ. +ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಎರಡು ವಿಧದ ರೆಗ್ರೆಷನ್‌ಗಳಿಗೆ ಹೆಚ್ಚಿನ ಅರಿವು ಪಡೆಯುತ್ತೀರಿ: _ಮೂಲ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್_ ಮತ್ತು _ಪಾಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಷನ್_, ಮತ್ತು ಈ ತಂತ್ರಗಳ ಅಡಿಯಲ್ಲಿ ಕೆಲವು ಗಣಿತ ಸಹ ತಿಳಿಯಲಿದ್ದೀರಿ. ಆ ಮಾದರಿಗಳು ನಮಗೆ ಬಗೆಬಗೆಯ ಇನ್ಪುಟ್ ಡೇಟಾ ಆಧರಿಸಿ ಪಂಪ್‌ಕಿನ್ ಬೆಲೆಗಳನ್ನು ಭವಿಷ್ಯ ನುಡಿಸಲು ಸಹಾಯ ಮಾಡುವುದಾಗಿದೆ. -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ಬಿಗ್ನರ್ಸ್‌ಗಾಗಿ ML - ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ಬಿಗ್ನರ್ಸ್‌ಗಾಗಿ ML - ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು") -> 🎥 ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಅನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ವಿಡಿಯೋ ಮೂಲಕ ನೋಡಲು ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್‌ ಬಗ್ಗೆ ಚಿಕ್ಕ ವಿಡಿಯೋ ನೋಡಿ. -> ಈ ಕುರಿತ ಶಿಖರಣೆಯಲ್ಲಿ, ನಾವು ಗಣಿತದ ಕನಿಷ್ಠ ಜ್ಞಾನದನ್ನೇ ಊಹಿಸಿಕೊಂಡಿದ್ದು, ಬೇರೆ ಕ್ಷೇತ್ರಗಳಿಂದ ಬಂದ ಶಿಕ್ಷಣಾರ್ಥಿಗಳಿಗೆ ಸುಲಭವಾಗುವಂತೆ ಮಾಡಬೇಕಾಗಿದೆ, ಆದ್ದರಿಂದ ಟಿಪ್ಪಣಿಗಳು, 🧮 ಖಾತರಿಪಡಿಸುವ ಪದಗಳು, ರೇಖಾಚಿತ್ರಗಳು ಮತ್ತು ಇತರೆ ಕಲಿಕಾ ಟೂಲ್‌ಗಳನ್ನು ಗಮನಿಸಿ. +> ಈ ಪಠ್ಯಕ್ರಮದಾದ್ಯಾಂತ, ನಾವು ಗಣಿತದ ಅಲ್ಪ ಕೌಶಲ್ಯAssume ಮಾಡುತ್ತೇವೆ, ಮತ್ತು ಇತರ ಕ್ಷೇತ್ರಗಳಿಂದ ಬರುವ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಈ ವಿಷಯವನ್ನು ಸುಲಭಗೊಳಿಸಲು ಟಿಪ್ಪಣಿಗಳು, 🧮 ಪ್ರಶ್ನೆಗಳು, ಚಿತ್ರ, ಮತ್ತು ಇತರ ಅಧ್ಯಯನ ಸಾಧನಗಳನ್ನು ನೀಡುತ್ತೇವೆ. -### ಪೂರ್ವಾ ಅವಶ್ಯಕತೆ +### ಪೂರ್ವಾಪೇಕ್ಷಿತ -ನೀವು ಈಗಾಗಲೆ ಈ ಪಾಠದ ಕಡಲೆಕಾಯಿ ಡೇಟಾ ರಚನೆಯೊಂದಿಗೆ ಪರಿಚಿತರಾಗಿದ್ದೀರಿ. ಈ ಡೇಟಾ ಪೂರ್ವaload ಮಾಡಲ್ಪಟ್ಟಿರುವುದು ಮತ್ತು ಪೂರ್ವ-ಶುದ್ಧೀಕರಿಸಲ್ಪಟ್ಟಿದ್ದು ಈ ಪಾಠದ _notebook.ipynb_ ಫೈಲ್‌ನಲ್ಲಿ ಇದೆ. ಫೈಲ್‌ನಲ್ಲಿ ಕಡಲೆಕಾಯಿ ಬೆಲೆ ಹೊಸ ಡೇಟಾ ಫ್ರೇಮ್‌ನಲ್ಲಿ ಪ್ರತಿ ಬுஷೆಲ್‌ಗೆ ಪ್ರದರ್ಶಿಸಲಾಗಿದೆ. Visual Studio Code‌ನಲ್ಲಿ kernels ನಲ್ಲಿ ಈ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ನಡಿಸಲು ನೀವು ಸಾಧ್ಯವಾಗಬೇಕು. +ಈಗವರೆಗೆ ನೀವು ಪರಿಶೀಲಿಸುತ್ತಿರುವ ಪಂಪ್‌ಕಿನ್ ಡೇಟಾದ ರಚನೆಗೆ ಪರಿಚಿತರಾಗಿರಬೇಕು. ಈ ಪಾಠದ _notebook.ipynb_ ಫೈಲ್ ಒಳಗೆ ಈ ಡೇಟಾವನ್ನು ಪೂರ್ವಲೋಡ್ ಮತ್ತು ಪೂರ್ವ-ಶುದ್ಧೀಕರಣ ಮಾಡಲಾಗಿದೆ. ಫೈಲ್‌ನಲ್ಲಿ ಪಂಪ್‌ಕಿನ್ ಬೆಲೆ ಪ್ರತಿಬುಷೆಲ್ ಪ್ರದರ್ಶನ ಮಾಡಲಾಗಿದೆ. Visual Studio Code ಕಫ್ kernel ಕ್ಕೆ ಈ ನೋಟ್ಬುಕ್ ರನ್ನಿಂಗ್ ಮಾಡಬಹುದಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ### ತಯಾರಿ -ಮತ್ತೆ ನೆನಪಿಸಿಕೊಳ್ಳಿ, ನೀವು ಈ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಇದನ್ನು ಲೋಡ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಮತ್ತು ಅದರಿಂದ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು. +ಮತ್ತೆ ಸ್ಮರಣೆಗಾಗಿ, ನೀವು ಈ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡಿದ್ದೀರಿ ಅದರಿಂದ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು. -- ಕಡಲೆಕಾಯಿಗಳನ್ನು ಖರೀದಿಸಲು ಉತ್ತಮ ಸಮಯ ಯಾವುದು? -- ಸಣ್ಣ ಕಡಲೆಕಾಯಿ ಸಂಕೆಯಲ್ಲಿ ಬೆಲೆ ಎಷ್ಟು ನಿರೀಕ್ಷಿಸಬಹುದು? -- ಅವುಗಳನ್ನು ಅರ್ಧ ಬಷೆಲ್ ಟೋकरಿ ಅಥವಾ 1 1/9 ಬಷೆಲ್ ಬಾಕ್ಸ್‌ನಲ್ಲಿ ಖರೀದಿಸಬೇಕೆ? -ನಾವು ಈ ಡೇಟಾದಲ್ಲಿ ಇನ್ನೂ ಆಳವಾಗಿ ತಿದ್ದಿ ನೋಡೋಣ. +- ಯಾವ ಸಮಯದಲ್ಲಿ ಪಂಪ್‌ಕಿನ್‌ಗಳನ್ನು ಖರೀದಿಸುವುದು ಉತ್ತಮ? +- ಚಿಕ್ಕ ಪಂಪ್‌ಕಿನ್‌ಗಳ ಒಂದು ಕೇಸ್ ಬೆಲೆ ಯಾವಾಗನು ನಿರೀಕ್ಷಿಸಬಹುದು? +- ನಾನು ಅವುಗಳನ್ನು ಅರ್ಧ-ಬುಷೆಲ್ ಟೋಕರೆಗಳಲ್ಲಿಯೇ ಅಥವಾ 1 1/9 ಬುಷೆಲ್ ಬಾಕ್ಸ್‌ನಲ್ಲಿ ಖರೀದಿಸಬೇಕೇ? +ನಾವು ಈ ಡೇಟಾದನ್ನು ಮತ್ತಷ್ಟು ವಿಚಾರಿಸೋಣ. -ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ, ನೀವು ಪಾಂಡಾಸ್ ಡೇಟಾ ಫ್ರೇಮ್ನ್ನು ಸೃಷ್ಟಿಸಿದಿರಿ ಮತ್ತು ಮೂಲ ಡೇಟಾಸೆಟ್‌ನ ಒಂದು ಭಾಗದಿಂದ ಅಂದರ್ಜಾಲದಲ್ಲಿ ಬಷೆಲ್ ಮೂಲಕ ಬೆಲೆಯನ್ನು ನಿಯಮಿತಗೊಳಿಸಿದ್ದೀರಿ. ಆದರೂ ಅದು ಕೇವಲ 400 ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳಷ್ಟೇ ಮತ್ತು ಅದು ಸೀಮಿತವಾಗಿತ್ತು ಪತನ ಮಾಸಗಳ ಮೇಲೆ. +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನೀವು ಪ್ಯಾಂಡಾಸ್ ಡೇಟಾ ಫ್ರೇಮ್ ಸೃಷ್ಟಿಸಿ ಮೂಲ ಡೇಟಾಸೆಟ್‌ನ ಭಾಗದಿಂದ ಮೆಷ್‌ಮಾಡುವಂತೆ ಮಾಡಿದ್ದಿರಿ, ಬೆಲೆಯನ್ನಿಂದು ಬುಷೆಲ್ ಮೂಲಕ ಮಾನಕೀಕೃತ ಮಾಡಲಾಗಿತ್ತು. ಆದರೆ, ಇದರ ಮೂಲಕ ನೀವು ಸುಮಾರು 400 ಡೇಟಾಪಾಯಿಂಟ್ ಮಾತ್ರ ಸಂಗ್ರಹಿಸಿದ್ದೀರಿ ಮತ್ತು ಕೇವಲ ಅದು ಸರ್ಫ್ ಹಂತದ ತಿಂಗಳುಗಳಿಗೆ ಸಂಬಂಧಿಸಿದೆ. -ಈ ಪಾಠದ ಜೊತೆಗೆ ಲೋಡ್ ಮಾಡಲಾದ ಡೇಟಾದ ನೋಡಿ. ಡೇಟಾವನ್ನು ಪೂರ್ವaload ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಮೊದಲ scatterplot ತಿಂಗಳು ಡೇಟಾವನ್ನು ತೋರಿಸಲು ರೇಖಾಚಿತ್ರ ಮಾಡಲಾಗಿದೆ. ಡೇಟಾ ನಿರ್ಮಲಗೊಳಿಸುವ ಮೂಲಕ ಅದು ಇನ್ನಷ್ಟು ವಿವರಗಳನ್ನು ಕೊಡಬಹುದಾಗಿದೆ. +ಈ ಪಾಠದ ಸಹಾಯಕ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ನಾವು ಪೂರ್ವತಃ ಲೋಡ್ ಮಾಡಿರುವ ಡೇಟಾವನ್ನೂ ನೋಡಿ. ಡೇಟಾ ಪೂರ್ವಲೋಡ್ ಆಗಿದೆ ಮತ್ತು ಪ್ರಾಥಮಿಕ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ತಿಂಗಳ ಡೇಟಾವನ್ನು ತೋರಿಸಲು ಚಾರ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಡೇಟಾದ ಸ್ವರೂಪವನ್ನು ಇನ್ನಷ್ಟು ವಿವರವಾಗಿ ತಿಳಿಯಲು ಇದನ್ನು ಮತ್ತಷ್ಟು ಶುದ್ಧೀಕರಿಸಿಕೊಂಡು ನೋಡಬಹುದು. -## ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ರೇಖೆ +## ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ರೇಖೆ -ಪಾಠ 1ರಲ್ಲಿ ಕಲಿತದ್ದರಂತೆ, ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ವ್ಯಾಯಾಮದ ಉದ್ದೇಶ: +ಪಾಠ 1 ರಲ್ಲಿ ಕಲಿತಂತೆ, ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ವ್ಯಾಯಾಮದ ಗುರಿ ಬರಿ: -- **ಚರದ ನಡುವಣ ಸಂಬಂಧ ತೋರಿಸುವುದು**. ಚರಗಳ ನಡುವೆ ಸಂಬಂಧವನ್ನು ತೋರಿಸಿ -- **ಭವಿಷ್ಯವಾಣಿ ಮಾಡುವುದು**. ಹೊಸ ಡೇಟಾಪಾಯಿಂಟು ಆ ರೇಖೆಯ ಎಲ್ಲಿ ಬರುತ್ತದೆ ಎಂದು ಸರಿಯಾಗಿ ಊಹಿಸಲು +- **ಚರ ವೈಶಿಷ್ಟ್ಯಗಳ ಸಂಬಂಧ ತೋರಿಸುವುದು**. ವ್ಯತ್ಯಾಸಗಳಿಗೆ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವುದು +- **ಭವಿಷ್ಯ ನುಡಿಸುವುದು**. ಹೊಸ ಡೇಟಾಪಾಯಿಂಟ್ ಲಭ್ಯವಾದಾಗ ಅದರ ಸ್ಥಾನವನ್ನು ಸರಿಯಾದ ರೀತಿಯಲ್ಲಿ ಕಂಡುಹಿಡಿಯುವುದು -**ಲೀಸ್ಟ್ಸ್ಕ್ವೇರ್ಸ್ ರೆಗ್ರೆಷನ್**‌ನಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಇಂತಹ ರೇಖೆಯನ್ನು ರೇಖೆಸುತ್ತಾರೆ. "ಲೀಸ್ಟ್ಸ್ಕ್ವೇರ್ಸ್" ಎಂಬ ಪದವು ನಮ್ಮ ಮಾದರಿಯಲ್ಲಿನ ತೊಂದರೆಯನ್ನು ಕನಿಷ್ಠಗೊಳಿಸುವ ಪ್ರಕ್ರಿಯೆಗೆ ಸೂಚನೆ ನೀಡುತ್ತದೆ. ಪ್ರತಿ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಾಗಿ ನಾವು ವಾಸ್ತವಿಕ ಬಿಂದುವಿನ ಮತ್ತು ನಮ್ಮ ರೆಗ್ರೆಷನ್ ರೇಖೆಯ ನಡುವೆ ಲಂಬ ದೂರವನ್ನು (ಬಾಕಿ ಅಥವಾ ಶೇಷವೆಂದು ಕರೆಯಲಾಗುತ್ತದೆ) ಮಾಪಿಸುತ್ತೇವೆ. +**ಕನಿಷ್ಠ ವৰ্ঘ ರೇಖಾ ರೆಗ್ರೆಷನ್**ಗೆ ಈ ರೇಖೆಯನ್ನು ನಡೆಸುವುದು ವಿಶೇಷ. "ಕನಿಷ್ಠ ವರ್ಗ" ಪದಗಳು ನಮ್ಮ ಮಾದರಿಯ ಒಟ್ಟು ತಪ್ಪನ್ನು ಕನಿಷ್ಠಗೊಳಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸೂಚಿಸುತ್ತವೆ. ಪ್ರತಿಯೊಂದು ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಾಗಿ, ನಾವು ಲೆಕ್ಕ ಹಿಮ್ಮುಖ (ಅಗಲದ ದೂರ) ಅನ್ನು ಮಾಪಿಸಿಕೊಂಡು, ರೇಖೆಯ ಬಳಿ ಇರುವ ಅಕ್ಷಮತೆ (residual) ಅನ್ನು ಪರಿಗಣಿಸುತ್ತೇವೆ. -ಈ ದೂರಗಳನ್ನು ಎರಡು ಪ್ರಮುಖ ಕಾರಣಗಳಿಂದ ವರ್ಗಾಕಾರ ಮಾಡುತ್ತೇವೆ: +ಈ ದೂರಗಳನ್ನು ನಾವು ಎರಡು ಮುಖ್ಯ ಕಾರಣಗಳಿಗಾಗಿ ವರ್ಗಮಾಡುತ್ತೇವೆ: -1. **ದಿಕ್ಕಿನ ಮೇಲೆ ಮಹತ್ವಕ್ಕಿಂತ ಮಿತಿಮೀರುವುದರ ಮೇಲೆ ಗಮನ**: -5 ಎಂಬ ತಪ್ಪನ್ನು +5 ಎಂಬ ತಪ್ಪಿನಂತೆ ಟ್ರೀಟ್ ಮಾಡಬೇಕು. ವರ್ಗಾಕಾರವು ಎಲ್ಲ ಮೌಲ್ಯಗಳನ್ನು ಧನಾತ್ಮಕವಾಗಿಸುತ್ತದೆ. +1. **ದಿಕ್ಕಿನ ಮೇಲ್ಪಟ್ಟ ಮೆಚ್ಚುಗೆಯ ಪರಿಗಣನೆ:** -5 ಎಂಬ ತಪ್ಪು ಮತ್ತು +5 ಎಂಬ ತಪ್ಪು ಒಂದೇ ರೀತಿಯಾಗಿ ಪರಿಗಣಿಸಬೇಕಾಗಿದೆ. ವರ್ಗಮಾಡುವ ಮೂಲಕ ಎಲ್ಲ ಮೌಲ್ಯಗಳನ್ನು ಧನಾತ್ಮಕವೆಂದು ಮಾಡುವುದು. -2. **ಅಲೌಕಿಕ ಅಂಕಿಗಳನ್ನು ಶಿಕ್ಷಿಸುವುದು**: ಹೆಚ್ಚುವರಿ ತಪ್ಪುಗಳಿಗೆ ಹೆಚ್ಚು ತೂಕ ನೀಡುವುದರಿಂದ ರೇಖೆಯು ದೂರದ ಅಂಕಿಗಳ ಹತ್ತಿರ ಉಳಿಯಲು ಬಾಧ್ಯವಾಗುತ್ತದೆ. +2. **ಅತಿರಿಕ್ತ ದೂರಗಳ ದಂಡನೆ:** ವರ್ಗಘಾ ತುಟುಗಳಿಂದ ದೊಡ್ಡ ತಪ್ಪುಗಳಿಗೆ ಹೆಚ್ಚಿನ ತೂಕಂಬಿದಷ್ಟು, ರೇಖೆಯನ್ನು ದೂರ ಇರುವ ಅಂಕೆಗಳಿಗೆ ಹತ್ತಿರ ಇರಿಸಲು ಈ ಕ್ರಮ ಪ್ರೇರೇಪಿಸುತ್ತದೆ. -ನಂತರ ನಾವು ಈ ಎಲ್ಲಾ ವರ್ಗಾಕೃತ ಮೌಲ್ಯಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ. ನಮ್ಮ ಗುರಿ ಈ ಅಂತಿಮ ಮೊತ್ತವನ್ನು ಕನಿಷ್ಠಗೊಳಿಸುವ ನಿರ್ದಿಷ್ಟ ರೇಖೆಯನ್ನು ಕಂಡುಹಿಡಿಯುವುದು — ಆದ್ದರಿಂದ "ಲೀಸ್ಟ್ಸ್ಕ್ವೇರ್ಸ್" ಎಂದು ಹೆಸರು. +ನಾವು ನಂತರ ಎಲ್ಲಾ ಇವುಗಳನ್ನು ಜೋಡಿಸುತ್ತೇವೆ. ನಮ್ಮ ಗುರಿ ಈ ಕೊನೆಗೂಡು ಕನಿಷ್ಟವಾಗಿದೆ ಎಂದು ಕಂಡುಹಿಡಿಯುವುದು — ಆದ್ದರಿಂದ "ಕನಿಷ್ಠ ವರ್ಗಗಳು" ಎಂದು ಹೆಸರಾಗಿದೆ. -> **🧮 ಗಣಿತವನ್ನೂ ತೋರಿಸಿ** -> -> ಈ ರೇಖೆಯನ್ನು, _最佳合适的线_ ಎಂದು ಕರೆಯುತ್ತಾರೆ ಹಾಗೂ ಅದನ್ನು [ಸಮೀಕರಣ](https://en.wikipedia.org/wiki/Simple_linear_regression) ಮೂಲಕ ವ್ಯಕ್ತಪಡಿಸಬಹುದು: -> +> **🧮 ಗಣಿತ ತೋರಿಸಿ** +> +> ಈ ರೇಖೆಯನ್ನು _ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯ ರೇಖೆ_ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಅದನ್ನು [ಒಂದು ಸಮೀಕರಣದಿಂದ](https://en.wikipedia.org/wiki/Simple_linear_regression) ನಿರೂಪಿಸಬಹುದು: +> > ``` > Y = a + bX > ``` -> -> `X` 'ವಿವರಣೆಮಾಡುವ ಚರ' ಎಂದರೆ, `Y` 'ಆಧಾರಿತ ಚರ' ಎನ್ನುವುದು. ರೇಖೆಯ ಸ್ಲೋಪ್ ಅನ್ನು `b` ಮತ್ತು `a` ಅನ್ನು y-ಅಡ್ಡಕೋನ ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಇದಕ್ಕೆ ಅರ್ಥವು `X = 0` ಆಗಿದ್ದಾಗ `Y`ರ ಮೌಲ್ಯ. -> ->![ಸ್ಲೋಪ್ಗೆ ಲೆಕ್ಕ ಹಾಕಿ](../../../../translated_images/kn/slope.f3c9d5910ddbfcf9.webp) -> -> ಮೊದಲಾಗಿ, ಸ್ಲೋಪ್ `b`ನ ಲೆಕ್ಕ ಹಾಕಿ. ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ -> -> ಬೇರೊಂದು ಮಾತಿನಲ್ಲಿ, ಕಡಲೆಕಾಯಿ ಡೇಟಾದ ಮೂಲ ಪ್ರಶ್ನೆಯನ್ನು ಉಲ್ಲೇಖಿಸಿ: "ತಿಂಗಳ ಪ್ರತಿ ಬಷೆಲ್‌ಗೆ ಕಡಲೆಕಾಯಿ ಬೆಲೆಯನ್ನು ಊಹಿಸಿ", `X` ಬೆಲೆಗೆ ಮತ್ತು `Y` ಮಾರಾಟ ತಿಂಗಳಿಗೆ ಇದೆ. -> ->![ಸಮೀಕರಣ ಪೂರ್ಣಗೊಳಿಸಿ](../../../../translated_images/kn/calculation.a209813050a1ddb1.webp) -> -> Y ಮೌಲ್ಯ ಲೆಕ್ಕ ಹಾಕಿ. ನೀವು ಸುಮಾರು $4 ಅಂದರೆ ಅದು ಏಪ್ರಿಲ್ ಆಗಿರಬೇಕು! ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) ಅವರಿಂದ -> -> ರೇಖೆ ಲೆಕ್ಕ ಹಾಕುವ ಗಣಿತವು ರೇಖೆಯ ಸ್ಲೋಪ್ ಅನ್ನು ಮತ್ತು `X=0` ಆಗಿದ್ದಾಗ `Y` ಇಲ್ಲಿರುವ ಅಡ್ಡಕೋನವನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. -> -> ಈ ಮೌಲ್ಯಗಳ ಲೆಕ್ಕಿಸುವ ವಿಧಾನವನ್ನು [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ವೆಬ್ ತಾಣದಲ್ಲಿ ನೋಡಬಹುದು. ಸಂಖ್ಯೆ ಮೌಲ್ಯಗಳು ರೇಖೆಯ ಮೇಲೆ ಹೇಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ ಎಂಬುದನ್ನು ಹೀಗೆ [ಲೀಸ್ಟ್ಸ್ಕ್ವೇರ್ಸ್ ಕ್ಯಾಲ್ಕ್ಯುಲೆಟರ್](https://www.mathsisfun.com/data/least-squares-calculator.html) ನಲ್ಲಿ ನೋಡಬಹುದು. - -## ಸಹಸಂಬಂಧ - -ಮತ್ತೊಂದು ಪದವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಿದೆ: ಕೊಟ್ಟಿರುವ X ಮತ್ತು Y ಚರಗಳ ನಡುವೆ **ಸಹಸಂಬಂಧಗಳ ಗುಣಸ್ತರ**. ಸ್ಕೆಟರ್ಪ್ಲಾಟ್ ಬಳಸಿ, ನೀವು ಈ ಗುಣಸ್ತರವನ್ನು ತ್ವರಿತವಾಗಿ ದೃಶ್ಯೀಕರಿಸಬಹುದು. ಸ್ಕೆಟರ್ಪ್ಲಾಟ್ ನಲ್ಲಿ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳು ಸರಳ ರೇಖೆಯಲ್ಲಿ ಕುಳಿತಿದ್ದರೆ ಸಹಸಂಬಂಧವು ಹೆಚ್ಚು, ಆದರೆ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳು ಎಲ್ಲೆಡೆ ಹರಡಿದ್ದರೆ ಸಮಾಲೋಚನೆಯು ಕಡಿಮೆ. - -ಒಳ್ಳೆಯ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿ ಏನೇನಾದರೂ, ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ರೇಖೆಯ ಮೂಲಕ Least-Squares Regression ವಿಧಾನದಿಂದ ಬಲವಾದ (0ಕ್ಕಿಂತ 1 ಕ್ಕೆ ಹತ್ತಿರುವ) ಸಹಸಂಬಂಧ ಗುಣಸ್ತರ ಹೊಂದಿರುತ್ತದೆ. - -✅ ಈ ಪಾಠದ ಜೊತೆಗೆ ಕಂಪ್ಯೂಟ್ ಆಗುವ ನೋಟ್ಬುಕ್ ಅನ್ನು ಓಡಿಸಿ ಮತ್ತು ತಿಂಗಳು ಮತ್ತು ಬೆಲೆ ಸ್ಕೆಟರ್ಪ್ಲಾಟ್ ನೋಡಿರಿ. ನಿಮ್ಮ ದೃಶ್ಯಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆಯ ಪ್ರಕಾರ, ಕಡಲೆಕಾಯಿ ಮಾರಾಟದ ತಿಂಗಳಿಂದ ಬೆಲೆಗೆ ಇರುವ ಡೇಟಾ ಸಾಕಷ್ಟು ಉತ್ತಮ ಅಥವಾ ಕಡಿಮೆ ಸಹಸಂಬಂಧ ಹೊಂದಿದೆಯೆ? ಮತ್ತು `Month` ಬದಲಿಗೆ ಹೆಚ್ಚು ಸೂಕ್ಷ್ಮ ಮಾಪನ, ಉದಾ. *ವರ್ಷದ ದಿನ* (ಅಂದರೆ ವರ್ಷ ಆರಂಭದಿಂದ ದಿನಗಳ ಸಂಖ್ಯೆ) ಉಪಯೋಗಿಸಿದರೆ ಏನಾದರೂ ಬದಲಾಗುತ್ತದೆಯೆ? - -ಕೆಳಗಿನ ಕೋಡ್‌ನಲ್ಲಿ, ನಾವು ಡೇಟಾವನ್ನು ಶುದ್ಧಗೊಳಿಸಿದ್ದು ಮತ್ತು ಹೀಗೊಂದು `new_pumpkins` ಎಂಬ ಡೇಟಾಫ್ರೇಮ್ ಹೊಂದಿದ್ದೇವೆಂದು ಊಹಿಸೋಣ. - -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 - -> ಡೇಟಾ ಶುರುಮಾಡಲು ಕೆಳಗಿನ [`notebook.ipynb`](notebook.ipynb) ಲಭ್ಯವಿದೆ. ನಾವು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ಮಾಡಿದ ಹಾಗೆ ಅದೇ ಶುದ್ಧತೆಯ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿದ್ದೇವೆ ಮತ್ತು ಈ ರೀತಿಯ ಸೂಚನೆಯೊಂದಿಗೆ `DayOfYear` ಕಾಲಮ್ ಅನ್ನು ಲೆಕ್ಕಿಸಿದ್ದಾರೆ: +> +> `X` ಎಂಬುದು 'ವಿವರಣೆ ನಿರೂಪಿಸುವ ಚರ' ಮತ್ತು `Y` ಎಂಬುದು 'ಆಧಾರಿತ ಚರ'. ರೇಖೆಯ ತಿರುವು `b` ಆಗಿದ್ದು, `a` ಯ ಇತರ ಮೇಲೆ ಭೇದಾರ್ಹ. ಇದು `X = 0` ಆಗಿರುವಾಗ `Y` ಯ ಮೌಲ್ಯವನ್ನು ಸೂಚಿಸುತ್ತದೆ. +> +>![ತಿರುವಿನ ಲೆಕ್ಕಾಚಾರ](../../../../translated_images/kn/slope.f3c9d5910ddbfcf9.webp) +> +> ಮೊದಲು ತಿರುವು `b` ಲೆಕ್ಕಿಸಿ. ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) +> +> ಇನ್ನೊಂದು ಅರ್ಥದಲ್ಲಿ, ನಾವು ಪಡೆಯುತ್ತಿರುವ ಪಂಪ್‌ಕಿನ್ ಅಂಕಿ ನಿರೀಕ್ಷೆಯ ಪರಿಚಯ: "ತಿಂಗಳ ಪ್ರಕಾರ ಪ್ರಸಕ್ತ ಬೆಲೆ ಭವಿಷ್ಯ ನುಡಿಸಿ", ಇಲ್ಲಿ `X` ಬೆಲೆ ಮತ್ತು `Y` ಮಾರಾಟ ತಿಂಗಳವರಿಗೆ ಸೂಚಿಸುತ್ತದೆ. +> +>![ಸಮೀಕರಣ ಪೂರ್ಣಗೊಳಿಸಿ](../../../../translated_images/kn/calculation.a209813050a1ddb1.webp) +> +> `Y` ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಿಸಿ. ನೀವು ಸುಮಾರು $4 ಕ್ಕಿಂತ ಪಾವತಿಸುತ್ತಿದ್ದರೆ ಅದು ಎಪ್ರಿಲ್ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಿ! ಇನ್ಫೋಗ್ರಾಫಿಕ್: [ಜೆನ್ ಲೂಪರ್](https://twitter.com/jenlooper) +> +> ರೇಖೆಯ ಗಣಿತವು ರೇಖೆಯ ತಿರುವನ್ನು ತೋರಬೇಕು, ಇದು ಸಂಪರ್ಕದ ಮೇಲೆ ಅವಲಂಬಿತರಾಗಿದ್ದು, ಅಂದರೆ `X=0` ಆಗಿರುವಾಗ `Y` ಏಲ್ಲಿ ಇರುತ್ತದೆ ಎಂಬುದನ್ನು ಸೂಚಿಸುತ್ತದೆ. +> +> ಈ ಮೌಲ್ಯಗಳ ಲೆಕ್ಕಾಚಾರ ವಿಧಾನವನ್ನು [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ಗಮನಿಸಿ. ಇನ್ನೊಂದು ಲಿಂಕ್ [ಕನಿಷ್ಠ ವರ್ಗಗಳ ಕ್ಯಾಲ್ಕುಲೇಟರ್‌](https://www.mathsisfun.com/data/least-squares-calculator.html) ಮೂಲಕ ಸಂಖ್ಯೆಗಳ ಮೌಲ್ಯಗಳು ರೇಖೆಯ ಮೇಲೆ ಹೇಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ ಎಂಬುದನ್ನು ಗಮಿಸಬಹುದು. + +## ಸನ್ದರ್ಭ + +ಮತ್ತೊಂದು ಅರ್ಥೈಸಬೇಕಾದ ಪದವು ನೀಡಲಾದ X ಮತ್ತು Y ಚರಗಳ ಮಧ್ಯೆ ಇರುವ **ಸನ್ದರ್ಭ ಗುಣಾಂಕ**. ಸ್ಪಷ್ಟ ಪೋائن್ಟ್ ಮುಖಾಂತರ ಈ ಗುಣಾಂಕವನ್ನು ಸರ್‌ನಾಗಿ ದೃಶ್ಯೀಕರಿಸಬಹುದು. ಡೇಟಾ ಪಾಯಿಂಟ್‌ಗಳು ಚೆನ್ನಾಗಿ ಸರಳ ರೇಖೆಯಲ್ಲಿ ಬಂದರೆ, ಸನ್ದರ್ಭವು ಹೆಚ್ಚಾಗಿದೆ, ಆದರೆ ಪಾಯಿಂಟ್‌ಗಳು ಎಡಬಲಗೊಳ್ಳುವಾಗ ಸ್ವಲ್ಪ ಸನ್ದರ್ಭವಿರುತ್ತದೆ. + +ಉತ್ತಮ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿ ಯಾವುದು ಎಂದರೆ, ಕನಿಷ್ಠ ವರ್ಗ ರೇಖಾ ವಿಧಾನ ಬಳಸಿ ರೇಖ ನೀವಿಗ ორგანიზ್ಮುಳ್ಳ ಉತ್ತರ ಶಾಸಣೆ ಹೊಂದಿರುತ್ತದೆ. + +✅ ಈ ಪಾಠದೊಂದಿಗೆ ಲಭ್ಯವಿರುವ ನೋಟ್ಬುಕ್ ರನ್ ಮಾಡಿ ಮತ್ತು ತಿಂಗಳಿಂದ ಬೆಲೆಯ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ನೋಡಿ. ಪಂಪ್‌ಕಿನ್ ಮಾರಾಟದ ಚಟುವಟಿಕೆಯಲ್ಲಿ ಸಮಯ-ಬೆಲೆ ಸಂಬಂಧವು ವಿಭಿನ್ನ ಅಥವಾ ದೊಡ್ಡ ಸನ್ದರ್ಭವಿದೆಯೇ? ನೀವು ನಿಮ್ಮ ದೃಶ್ಯ ಇಂಟರ್ಫೆರ್ ಅನುಸರಿಸಿ ಹೇಳುವುದು? ನಿಮ್ಮ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು 'ತಿಂಗಳ' ಬದಲು *वರ್ಷದ ದಿನ* (ಅಂದರೆ ವರ್ಷದ ಆರಂಭದಿಂದ ದಿನಗಳ ಸಂಖ್ಯೆ) ಬಳಸಿದರೆ ಏನಾಗುತ್ತದೆ? + +ಕೆಳಗಿನ ಕೋಡ್‌ನಲ್ಲಿ, ನಾವು ಡೇಟಾವನ್ನು ಶುದ್ಧೀಕರಿಸಿದ್ದೇವೆ ಎಂದು ಅಂದುಕೊಂಡು, `new_pumpkins` ಎಂಬ ಡೇಟಾ ಫ್ರೇಮ್ ದೊರೆತಿದೆ, ಹೀಗಿದೆ: + +ID | ತಿಂಗಳು | ದಿನಾಂಕ | ಪ್ರಕಾರ | ನಗರ | ಪ್ಯಾಕೇಜ್ | ಕಡಿಮೆ ಬೆಲೆ | ಹೆಚ್ಚಿನ ಬೆಲೆ | ಬೆಲೆ +---|--------|-------|---------|------|---------|----------|------------|----- +70 | 9 | 267 | ಪೈ ಟೈಪ್ | ಬಾಲ್ಟಿಮೋರ್ | 1 1/9 ಬುಷೆಲ್ ಕಾರ್ಟನ್ಸ್ | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | ಪೈ ಟೈಪ್ | ಬಾಲ್ಟಿಮೋರ್ | 1 1/9 ಬುಷೆಲ್ ಕಾರ್ಟನ್ಸ್ | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | ಪೈ ಟೈಪ್ | ಬಾಲ್ಟಿಮೋರ್ | 1 1/9 ಬುಷೆಲ್ ಕಾರ್ಟನ್ಸ್ | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | ಪೈ ಟೈಪ್ | ಬಾಲ್ಟಿಮೋರ್ | 1 1/9 ಬುಷೆಲ್ ಕಾರ್ಟನ್ಸ್ | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | ಪೈ ಟೈಪ್ | ಬಾಲ್ಟಿಮೋರ್ | 1 1/9 ಬುಷೆಲ್ ಕಾರ್ಟನ್ಸ್ | 15.0 | 15.0 | 13.636364 + +> ಡೇಟಾ ಶುದ್ಧೀಕರಣದ ಕೋಡ್ ಅನ್ನು [`notebook.ipynb`](notebook.ipynb) ನಲ್ಲಿ ನೋಡಬಹುದು. ಹಿಂದಿನ ಪಾಠದಂತೆ ಸ್ಟೆಪ್ಗಳನ್ನು ಮಾಡಿದ್ದೇವೆ, ಮತ್ತು ಕೆಳಗಿನ ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ಬಳಸಿ `DayOfYear` ಕಾಲಮ್ ಲೆಕ್ಕಿಸಿದ್ದೇವೆ: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -ಈಗ ನೀವು ಲೀನಿಯರ್ ರೆಗ್ರೆಷನಿನ ಹಿಂದಿನ ಗಣಿತವನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೀರಿ, ನಾವು ಒಂದು ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ಸೃಷ್ಟಿಸೋಣ, ಯಾವುದರಿಂದ ಕಡಲೆಕಾಯಿ ಪ್ಯಾಕೇಜುಗಳಲ್ಲಿ ಯಾವದು ಉತ್ತಮ ಬೆಲೆ ಕೊಡುತ್ತದೆ ಎಂದು ಊಹಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಹಿಂದಿನ ಹಬ್ಬದ ಕಡಲೆಕಾಯಿ ಪ್ಯಾಚ್ ಖರೀದಿಸುವವರು ತಮ್ಮ ಖರೀದಿಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಈ ಮಾಹಿತಿಯನ್ನು ಬಯಸಬಹುದು. -## ಸಹಸಂಬಂಧ ಹುಡುಕುವುದು +ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಹಿಂದೆ ಗಣಿತವನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡ ನಂತರ, ನಾವು ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ರಚಿಸಿ ಯಾವ ಪಂಪ್‌ಕಿನ್ ಪ್ಯಾಕೇಜ್‌ನಲ್ಲಿ ಉತ್ತಮ ಬೆಲೆಗಳು ಇರಬಹುದೋ ಆನ್ನು ಭವಿಷ್ಯ ನುಡಿಸುವ ಪ್ರಯತ್ನ ಮಾಡೋಣ. ಹಬ್ಬದ ಪಂಪ್‌ಕಿನ್ ಪ್ಯಾಚ್‌ಗಾಗಿ ಖರೀದಿಸುವವರು ಇದನ್ನು ನೋಡಿಕೊಂಡು ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು. -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +## ಸನ್ದರ್ಭ ಹುಡುಕುವುದು -> 🎥 ಸಹಸಂಬಂಧದ ಕುರಿತ ಸಂಕ್ಷಿಪ್ತ ವಿಡಿಯೋವನ್ನೂ ಮೇಲಿನ ಚಿತ್ರ ಕ್ಲಿಕ್ಕಿಸಿ ನೋಡಿ. +[![ಬಿಗ್ನರ್ಸ್‌ಗಾಗಿ ML - ಸನ್ದರ್ಭ ಹುಡುಕುವುದು: ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್‌ಗೆ ಕೀ](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ಬಿಗ್ನರ್ಸ್‌ಗಾಗಿ ML - ಸನ್ದರ್ಭ ಹುಡುಕುವುದು: ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್‌ಗೆ ಕೀ") -ಹಿಂದಿನ ಪಾಠದಿಂದ ನೀವು ನೋಡಿರುವಿರಬಹುದು, ಬೇರೆಯಾದ ತಿಂಗಳುಗಳ ಸರಾಸರಿ ಬೆಲೆ ಹೀಗಿದೆ: +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಸನ್ದರ್ಭ ಕುರಿತು ಚಿಕ್ಕ ವಿಡಿಯೋ ನೋಡಿ. -Average price by month +ಹಿಂದಿನ ಪಾಠದಲ್ಲಿ ನೀವು ನೋಡಿರಬಹುದು, ಬೇರೊಂದು ತಿಂಗಳ ಸರಾಸರಿ ಬೆಲೆ ಹೀಗಿದೆ: -ಇದರಿಂದ ನಾವು ಕಣ್ತುಂಬಿಕೊಳ್ಳಬಹುದು ಸಹಸಂಬಂಧವಿದೆ, ನಾವು ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತುಮಾಡಿ `Month` ಮತ್ತು `Price` ಅಥವಾ `DayOfYear` ಮತ್ತು `Price` ನಡುವಣ ಸಂಬಂಧವನ್ನು ಊಹಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು. ಕೆಳಗಿನ ಸ್ಕೆಟರ್ಪ್ಲಾಟ್ ಎರಡನೇ ಸಂಬಂಧವನ್ನು ತೋರಿಸುತ್ತದೆ: +ತಿಂಗಳ ಪ್ರಕಾರ ಸರಾಸರಿ ಬೆಲೆ -Scatter plot of Price vs. Day of Year +ಇದು ಕೆಲವು ಸನ್ದರ್ಭ ಇರುವುದು ತೋರುತ್ತದೆ, ಹೀಗಾಗಿ ನಾವು ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿಮಾಡಿ `Month` ಮತ್ತು `Price`, ಅಥವಾ `DayOfYear` ಹಾಗೂ `Price` ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಭವಿಷ್ಯ ನುಡಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು. ಕೆಳಗಿನ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ ನಂತರದ ಸಂಬಂಧವನ್ನು ತೋರಿಸುತ್ತದೆ: -`corr` ಫಂಕ್ಷನ್ ಬಳಸಿ ಸಹಸಂಬಂಧವನ್ನು ನೋಡೋಣ: +ಬೆಲೆ ಮತ್ತು ವರ್ಷದ ದಿನಾಂಕದ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ + +`corr` ಫಂಕ್ಷನ್ನಿಂದ ಸನ್ದರ್ಭ ನೋಡೋಣ: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -`Month` ಅಂಕಗಳ ಸಹಸಂಬಂಧ -0.15 ಮತ್ತು `DayOfMonth` ಸಹಸಂಬಂಧ -0.17 ಇದಾಗಿದ್ದು ತಗ್ಗು ತೋರಿಸುತ್ತಿದೆ, ಆದರೆ ಇನ್ನೂ ಒಂದು ಪ್ರಮುಖ ಸಂಬಂಧ ಇರಬಹುದು. ಬೇರೆ ಬೇರೆ ಕಡಲೆಕಾಯಿ ವಿಧಗಳು ಬೆಲೆಗೆ ವಿಭಿನ್ನ ಗುಂಪು ರೂಪಿಸುತ್ತವೆ ಎಂದು ತೋರುತ್ತದೆ. ಈ ಊಹೆಯನ್ನು ದೃಢಪಡಿಸಲು, ಪ್ರತಿಯೊಂದು ಕಡಲೆಕಾಯಿ ವರ್ಗವನ್ನು ಬೇರೆ ಬಣ್ಣದಲ್ಲಿ ಹಿಡಿದು ಸ್ಕೆಟರ್ ಮಾಡೋಣ. `scatter` ಫಂಕ್ಷನ್‌ಗೆ `ax` ಪ್ಯಾರಾಮೀಟರ್ ನೀಡುವ ಮೂಲಕ ಎಲ್ಲಾ ಬಿಂದುಗಳನ್ನು ಒಂದೇ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಬಿಡಬಹುದು: + +ಸನ್ದರ್ಭವು ಅಷ್ಟೇ ಕಡಿಮೆ (-0.15 ತಿಂಗಳು ಮತ್ತು -0.17 ವರ್ಷದ ದಿನಾಂಕ) ಆಗಿದೆ, ಆದರೆ ಬೇರೆ ಮಹತ್ವದ ಸಂಬಂಧ ಇರಬಹುದು. ವೈವಿಧ್ಯಮಯ ಪಂಪ್‌ಕಿನ್ ಪ್ರಕಾರಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಬೆಲೆಗಳ ಗುಂಪುಗಳು ಇವೆ. ಈ ಊಹೆಯನ್ನು ಖಚಿತಪಡಿಸಲು, ಪ್ರತಿಯೊಂದು ವರ್ಗವನ್ನು ಬೇರೆಯ ಬಣ್ಣದಲ್ಲಿ ಚಿತ್ರೀಕರಿಸೋಣ. `scatter` ಫಂಕ್ಷನ್‌ಗೆ `ax` ಪರಾಮಿತಿ ನೀಡುವ ಮೂಲಕ ಎಲ್ಲಾ ಅಂಕೆಗಳನ್ನು ಒಂದೇ ರೇಖೆಯ ಮೇಲೆಯೇ ಬಿಡಬಹುದು: ```python ax=None @@ -140,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - -Scatter plot of Price vs. Day of Year -ನಮ್ಮ ಪರಿಶೀಲನೆಯು ಸೂಚಿಸುತ್ತದೆ, ಕಡಲೆಕಾಯಿ ವಿಧವು ಮಾರಾಟ ದಿನಾಂಕಕ್ಕಿಂತ ಹೆಚ್ಚು ಬೆಲೆಗೆ ಪ್ರಭಾವ ಬೀರುತ್ತದೆ. ಇದನ್ನು ಬಾರ್ ಗ್ರಾಫ್‌ನಲ್ಲಿ ಕಾಣಬಹುದು: +ಬೆಲೆ ಮತ್ತು ವರ್ಷದ ದಿನಾಂಕದ ಬಣ್ಣದ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ + +ನಮ್ಮ ಪರಿಶೀಲನೆ ಪ್ರಕಾರ, ವೈವಿಧ್ಯತೆ ಮಾರಾಟ ದಿನಾಂಕಕ್ಕಿಂತ ಬೆಲೆಗೆ ಹೆಚ್ಚು ಪ್ರಭಾವ ಬೀರುತ್ತದೆ. ಇದನ್ನು ಬಾರ್ ಗ್ರಾಫ್ ಮೂಲಕ ನೋಡಬಹುದು: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - -Bar graph of price vs variety -ಈಗ ನಾವು ಒಂದು ಕಡಲೆಕಾಯಿ ವಿಧವಾಗಿಯೇ ('ಪೈ ಟೈಪ್') ಗಮನಕೊಡೋಣ ಮತ್ತು ದಿನಾಂಕದ ಬೆಲೆಗೆ ಪರಿಣಾಮ ಎಷ್ಟು ನೋಡಿ: +ಬೆಲೆ ಮತ್ತು ವೈವಿಧ್ಯತೆಯ ಬಾರ್ ಗ್ರಾಫ್ + +ನಾವು ಈಗ 'ಪೈ ಟೈಪ್' ಎನ್ನುವ ಒಂದೇ ಪಂಪ್‌ಕಿನ್ ಪ್ರಕಾರದ ಮೇಲೆ ಗಮನ ಹರಿಸಿ, ದಿನಾಂಕ ಬೆಲೆಗೆ ಹೇಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ ನೋಡಿ: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +ಬೆಲೆ ಮತ್ತು ವರ್ಷದ ದಿನಾಂಕದ ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ -ಈಗ `corr` ಫಂಕ್ಷನ್ ಬಳಸಿ `Price` ಮತ್ತು `DayOfYear` ನಡುವಣ ಸಹಸಂಬಂಧ ಲೆಕ್ಕಿಸಿದರೆ, `-0.27` ಲಕ್ಷ್ಯನ್ಸ್ - ಇದು ಊಹಿಸುವ ಮಾದರಿಯನ್ನು ತರಬೇತುಮಾಡುವುದು ಅರ್ಥಪೂರ್ಣವೆಂದು ಸೂಚಿಸುತ್ತದೆ. +`Price` ಮತ್ತು `DayOfYear` ನಡುವಿನ ಸನ್ದರ್ಭವನ್ನು `corr` ಫಂಕ್ಷನ್ ಅನುಷ್ಠಾನ ಮಾಡಬಹುದು, ಇದು ಇದ್ದಕ್ಕಿದ್ದಂತೆ `-0.27` ಅನ್ನು ನೀಡುತ್ತದೆ — ಇದು ಭವಿಷ್ಯ ರೂಪರೇಷೆಯ ತರಬೇತಿ ಉಚಿತವನ್ನಾಗಿಸುತ್ತದೆ. -> ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತು ಮಾಡಿಕೊಳ್ಳೋ ಮೊದಲು, ಡೇಟಾ ಶುದ್ಧವಾಗಿರಬೇಕು. ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಖಾಲಿ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಖಾಲಿ ಸೆಲುಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಸೂಕ್ತ. +> ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ತರಬೇতি ಮುಂಚೆ, ಡೇಟಾ ಸ್ವಚ್ಛವಾಗಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಪ್ರಕೃತಿ. ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಖಾಲಿ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಚೆನ್ನಾಗಿಲ್ಲ, ಆದ್ದರಿಂದ ಖಾಲಿ ಸೆಲ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು ಸೂಕ್ತ. ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -ಮತ್ತೊಂದು ವಿಧಾನವೆಂದರೆ ಖಾಲಿ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರತಿಯೊಂದು ಕಾಲಮ್-ನ ಸರಾಸರಿ ಮೌಲ್ಯಗಳಿಂದ ತುಂಬಿಸುವುದು. + +ಇನ್ನೊಂದು ಮಾರ್ಗವು ಅವುಗಳ ಶೂನ್ಯ ಮೌಲ್ಯಗಳನ್ನು ಅವುಗಳ ಕಾಲಮ್‌ನ ಸರಾಸರಿ ಮೌಲ್ಯಗಳಿಂದ ತುಂಬುವುದಾಗಿದೆ. ## ಸರಳ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ಬಿಗ್ನರ್ಸ್‌ಗಾಗಿ ML - Scikit-learn ಬಳಸಿ ಲೀನಿಯರ್ ಮತ್ತು ಪಾಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಷನ್](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ಬಿಗ್ನರ್ಸ್‌ಗಾಗಿ ML - Scikit-learn ಬಳಸಿ ಲೀನಿಯರ್ ಮತ್ತು ಪಾಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಷನ್") -> 🎥 ಲೀನಿಯರ್ ಮತ್ತು ಪೊಲಿನೋಮಿಯಲ್ ರೆಗ್ರೆಷನ್ ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತ ವಿಡಿಯೋವನ್ನು ಮೇಲಿನ ಚಿತ್ರ ಕ್ಲಿಕ್ ಮಾಡಿ ನೋಡಿ. +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಲೀನಿಯರ್ ಮತ್ತು ಪಾಲಿನೋಮಿಯಲ್ ರೆಘ್ರೆಷನ್ ಸಂಕ್ಷಿಪ್ತ ವಿಡಿಯೋ ನೋಡಿ. -ನಮ್ಮ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತು ಮಾಡುವುದಕ್ಕೆ ನಾವು **ಸ್ಕೈಕಿಟ್-ಲರ್ನ್** ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಲಿದ್ದೇವೆ. +ನಮ್ಮ ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡಲು, ನಾವು **Scikit-learn** ಲೈಬ್ರರಿ ಬಳಸದಿದ್ದೇವೆ. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -ನಾವು ಮೊದಲಿಗೆ ಇನ್‌ಪುಟ್ ಮೌಲ್ಯಗಳನ್ನು (ವೈಶಿಷ್ಟ್ಯಗಳು) ಮತ್ತು ನಿರೀಕ್ಷಿತ ಔಟ್‌ಪುಟ್ (ಲೇಬಲ್) ಅನ್ನು ವಿಭಜಿಸಿ numpy ಅರೆಗಳಲ್ಲಿ ಇಡುತ್ತೇವೆ: + +ಇನ್ಪುಟ್ ಮೌಲ್ಯಗಳು (ಫೀಚರ್ಸ್) ಮತ್ತು ನಿರೀಕ್ಷಿತ ಔಟ್‌ಪುಟ್ (ಲೇಬಲ್) ಅನ್ನು ವಿಭಜಿಸಿ numpy ಅರೆಗಳಾಗಿಸೋಣ: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> ಗಮನಿಸಿ, ನಾವು ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಪ್ಯಾಕೇಜ್‌ ಸರಿಯಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಇನ್‌ಪುಟ್ ಡೇಟಾ `reshape` ಮಾಡಬೇಕಾಯಿತು. ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ 2D ಅರೆ ಇನ್‌ಪುಟ್ ಅನ್ನು ಎಕ್ಸ್ಪೆಕ್ಟ್ ಮಾಡುತ್ತದೆ, ಇದರಲ್ಲಿ ಪ್ರತಿಯೊಂದು ಸಾಲು ಇನ್‌ಪುಟ್ ವೈಶಿಷ್ಟ್ಯಗಳ ವೆಕ್ಟರ್ ಆಗಿದ್ದು, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ಒಂದೇ ಇನ್‌ಪುಟ್ ಇದೆ, ಆದ್ದರಿಂದ N×1 ಆಕೃತಿ ಅಗತ್ಯ ಇದೆ, ಇಲ್ಲಿ N ಡೇಟಾಸೆಟ್ ಗಾತ್ರ. -ನಂತರ, ನಾವು ಡೇಟಾವನ್ನು ತರಬೇತು ಮತ್ತು ಪರೀಕ್ಷೆ ಡೇಟಾಸೆಟ್‌ಗಳಲ್ಲಿ ವಿಭಾಗಿಸಬೇಕಾಗಿದೆ, ಇದರಿಂದ ನಾವು ತರಬೇತಿ ಬಳಿಕ ನಮೂನೆಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು: +> ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಪ್ಯಾಕೇಜ್ ಸರಿಯಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಇನ್ಪುಟ್ ಡೇಟಾಗೆ `reshape` ಮಾಡಬೇಕಾಯಿತು. ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ 2D ಅರೆ (array) ಅನ್ನು ಇನ್ಪುಟ್ ಆಗಿರಬೇಕೆಂದು ನಿರೀಕ್ಷಿಸುತ್ತದೆ, ಇಲ್ಲಿ ಪ್ರತಿ ಸಾಲು ಇನ್ಪುಟ್ ಫೀಚರ್‌ಗಳ ಒಂದು ವೆಕ್ಟರ್ ಆಗಿರುತ್ತದೆ. ನಮ್ಮ केस್ನಲ್ಲಿ, ಒಂದು ಇನ್ಪುಟ್ ಮಾತ್ರ ಇದರಿಂದ, N×1 ಗಾತ್ರದ ಅರೆ ಅಗತ್ಯವಿದೆ, ಇಲ್ಲಿ N ಡೇಟಾಸೆಟ್ ಗಾತ್ರ. + +ನಂತರ,ಡೇಟಾವನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಗುಂಪುಗಳಲ್ಲಿ ವಿಭಜಿಸಿ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಬಳಿಕ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಸಿದ್ಧರಾಗಿ: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -ಕರೈವಾಗಿ, ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯ ತರಬೇತಿ ಎರಡು ಸಾಲುಗಳಲ್ಲಿ ನಡತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಾವು `LinearRegression` ವಸ್ತುವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ, `fit` ವಿಧಾನ ಬಳಸಿ ಅದನ್ನು ಡೇಟಾಗೆ ಹೊಂದಿಸುತ್ತೇವೆ: + +ಕೊನೆಯದಾಗಿ, ಲೀನಿಯರ್ ರೆಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡುವುದು ಕೇವಲ ಎರಡು ಸಾಲು ಕೋಡ್ ಅಗತ್ಯವಿದೆ. `LinearRegression` ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು นิರ್ಭರಿಸಿ, ಮತ್ತು `fit` ವಿಧಾನದ ಮೂಲಕ ಅದನ್ನು ನಮ್ಮ ಡೇಟಾದ ಮೇಲೆ ಹೊಂದಿಸಿ: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` - -`fit` ಮಾಡಿದ ನಂತರ `LinearRegression` ವಸ್ತುವಿನಲ್ಲಿ ರಿಗ್ರೆಶನ್‌ನ ಎಲ್ಲಾ ಗುಣಾಂಕಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಅವುಗಳನ್ನು `.coef_` ಪ್ರಾಪರ್ಟಿ ಬಳಸಿ ಪ್ರವೇಶಿಸಬಹುದು. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಒಬ್ಬೊಬ್ಬ ಗುಣಾಂಕ ಮಾತ್ರ ಇದೆ, ಅದು `-0.017` ಸುತ್ತಲೂ ಇರಬೇಕು. ಅಂದರೆ, ಬೆಲೆಗಳು ಸಮಯದ ಜೊತೆಗೆ ಸ್ವಲ್ಪ ಇಳಿಯುತ್ತಿದ್ದಂತೆ ತೋರುತ್ತದೆ, ಆದರೆ ಹೇಗಾಗಲೀ ಹೆಚ್ಚು ಅಲ್ಲ, ಪ್ರತಿ ದಿನಕ್ಕೊಂದು 2 ಸೆಂಟುಗಳಷ್ಟು. ನಾವು regression ನ intersection point ಅನ್ನು Y-ಅಕ್ಷದೊಂದಿಗೆ `lin_reg.intercept_` ಬಳಸಿ ಪಡೆಯಬಹುದು - ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ಇದು ಸುತ್ತಲೂ `21` ಇರುತ್ತದೆ, ಇದು ವರ್ಷದ ಆರಂಭದಲ್ಲಿ ಬೆಲೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. -ನಮ್ಮ ಮಾದರಿಯ ಎಷ್ಟು ನಿಖರವಾಗಿದೆ ಎಂದು ನೋಡಲು, ನಾವು ಪರೀಕ್ಷಾ ಡೇಟಾ ಸೆಟ್ ಮೇಲೆ ಬೆಲೆಗಳನ್ನು ಊಹಿಸಬಹುದು, ನಂತರ ನಮ್ಮ ಊಹೆಗಳು ನಿರೀಕ್ಷಿತ ಮೌಲ್ಯಗಳಷ್ಟಿಗೆ ಎಷ್ಟು ಹತ್ತಿರವಿದ್ದಾವೆಯೋ ಅಳೆಯಬಹುದು. ಇದನ್ನು ರೂಟ್ ಮೀನ್ ಸ್ಕ್ವೇರ್ ಎರರ್ (RMSE) ಮೆಟ್ರಿಕ್ ಬಳಸಿ ಮಾಡಬಹುದು, ಅದು ನಿರೀಕ್ಷಿತ ಮತ್ತು ಊಹಿಸಲಾದ ಮೌಲ್ಯಗಳ ನಡುವಿನ ಎಲ್ಲ ಚದರ ವ್ಯತ್ಯಾಸಗಳ ಸರಾಸರಿಯ ರೂಟ್ ಆಗಿದೆ. +`LinearRegression` ಆಬ್ಜೆಕ್ಟ್ `fit` ಮಾಡಿದ ನಂತರ ರೀಗ್ರೆಷನ್‌ನ ಎಲ್ಲಾ коэффициಗಳನ್ನೂ ಹೊಂದಿರುತ್ತದೆ, ಅವುಗಳನ್ನು `.coef_` ಪ್ರಾಪರ್ಟಿ ಮೂಲಕ ಪ್ರವೇಶಿಸಬಹುದು. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಒಂದೇ коэффици ಇದೆ, ಅದು ಸುಮಾರು `-0.017` ಆಗಿರಬೇಕು. ಇದರ ಅರ್ಥ, ಬೆಲೆಗಳು ಸ್ವಲ್ಪ ಕಾಲಾನುಕ್ರಮದಲ್ಲಿ ಕಡಿಮೆಯಾಗುತ್ತಿರುವಂತೆ ಕಾಣುತ್ತದೆ, ಆದರೆ ಹೆಚ್ಚು ಅಲ್ಲ, ಪ್ರತಿದಿನಕ್ಕೆ ಸುಮಾರು 2 ಸೆಂಟ್. ನಾವು Y-ಅಕ್ಷದ ರೀಗ್ರೆಷನ್‌ನ ಇಂಟರ್ಸೆಕ್ಷನ್ ಪಾಯಿಂಟ್ ಅನ್ನು `lin_reg.intercept_` ಮೂಲಕ ಕೂಡ ಆಗಬಹುದು - ಅದು ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ಸುಮಾರು `21` ಆಗಿರುತ್ತದೆ, ವರ್ಷ ಶುರುವಾದಾಗಿನ ಬೆಲೆಯನ್ನು ಸೂಚಿಸುತ್ತಿದೆ. + +ನಮ್ಮ ಮಾದರಿ ಎಷ್ಟು ಖಚಿತವೋ ನೋಡಲು, ನಾವು ಪರೀಕ್ಷಾ ಡೇಟಾಸೆಟ್‌ನಲ್ಲಿ ಬೆಲೆಗಳನ್ನು ಭವಿಷ್ಯದಲ್ಲಿ ಊಹಿಸಿ, ನಂತರ ನಮ್ಮ ಊಹಿಸುವುದನ್ನು ನಿರೀಕ್ಷಿತ ಮೌಲ್ಯಗಳ ಜೊತೆ ಹತ್ತಿಕೊಳ್ಳುವುದನ್ನು ಅಳೆಯಬಹುದು. ಇದನ್ನು ರೂಟ್ ಮೀನ್ ಸ್ಕ್ವೇರ್ ಎರ್ರರ್ (RMSE) ಮೇಟ್ರಿಕ್ ಬಳಸಿ ಮಾಡಬಹುದು, ಇದು ನಿರೀಕ್ಷಿತ ಮತ್ತು ಊಹಿತ ಮೌಲ್ಯಗಳ ನಡುವಿನ ಎಲ್ಲಾ ಚದರ ವ್ಯತ್ಯಾಸಗಳ ಸರಾಸರಿ ರೂಟ್. ```python pred = lin_reg.predict(X_test) @@ -217,16 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -ನಮ್ಮ ದೋಷವು ಸುತ್ತಲೂ 2 ಅಂಕಗಳಷ್ಟಿದೆ, ಅದು ~17% ಆಗಿದೆ. ತುಂಬಾ ಚೆನ್ನಾಗಿಲ್ಲ. ಮಾದರಿಯ ಗುಣಮಟ್ಟದ ಇನ್ನೊಂದು ಸೂಚ್ಯಂಕವು **ನಿರ್ಧಾರ коэффициент** ಆಗಿದ್ದು, ಇದನ್ನು ಈ ರೀತಿ ಪಡೆಯಬಹುದು: +ನಮ್ಮ ಎರ್ರರ್ ಸುಮಾರು 2 ಪಾಯಿಂಟ್ ಆಗಿದೆ, ಇದು ~17%. ತುಂಬಾ ಚೆನ್ನಾಗಿಲ್ಲ. ಮಾದರಿ ಗುಣಮಟ್ಟದ ಇನ್ನೊಂದು ಸೂಚ್ಯಂಕ **ನಿರ್ಧಾರ коэффици೦ಟ್** ಆಗಿದೆ, ಇದನ್ನು ಹೀಗಾಗಿ ಪಡೆಯಬಹುದು: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` + ಮೌಲ್ಯ 0 ಅಂದರೆ, ಮಾದರಿ ಇನ್‌ಪುಟ್ ಡೇಟಾ ಅನ್ನು ಪರಿಗಣಿಸುವುದಿಲ್ಲ ಮತ್ತು *ಅತ್ಯಂತ ಕೆಟ್ಟ ರೇಖೀಯ ಭವಿಷ್ಯಕಾರ* ಆಗಿದ್ದು, ಅದು ಫಲಿತಾಂಶದ ಸರಾಸರಿಯಷ್ಟೇ ಆಗಿರುತ್ತದೆ. ಮೌಲ್ಯ 1 ಎಂದರೆ ನಾವು ಎಲ್ಲಾ ನಿರೀಕ್ಷಿತ ಔಟ್ಪುಟ್‌ಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಭವಿಷ್ಯದಲ್ಲಿ ಊಹಿಸಬಲ್ಲೆವೆವು. ನಮ್ಮಲ್ಲಿ коэффици೦ಟ್ ಸುಮಾರು 0.06 ಆಗಿದ್ದು, ಇದು ಕಡಿಮೆ ಮಟ್ಟವಾಗಿದೆ. -ಅದರ ಮೌಲ್ಯವು 0 ಆಗಿದ್ದರೆ, ಅಂದರೆ ಮಾದರಿ ಒಳಮೂಲ್ಯವನ್ನು ಗಮನಿಸದಂತೆ ನಡೆಯುತ್ತದೆ, ಮತ್ತು ಇದು *ಅತ್ಯಂತ ಕೆಟ್ಟ ರೇಖೀಯ ಊಹಿಸುವಿಕೆಯಾಗುತ್ತದೆ*, ಇದು ಫಲಿತಾಂಶಗಳ ಸರಾಸರಿ ಮೌಲ್ಯ ಮಾತ್ರ. ಮೌಲ್ಯ 1 ಅಂದರೆ ನಾವು ಎಲ್ಲಾ ನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಊಹಿಸಬಹುದು. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, коэффициент ಸುತ್ತಲೂ 0.06 ಇದೆ, ಅದು ಕಡಿಮೆ. - -ನಾವು regression ರೇಖೆ ಜೊತೆಗೆ ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಚಿತ್ರಿಸಬಹುದು, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ regression ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆಯೋ ಹೆಚ್ಚು ಚೆನ್ನಾಗಿ ನೋಡಲು: +ನಾವು ಪರೀಕ್ಷಾ ಡೇಟಾಗಳನ್ನು ರೀಗ್ರೆಷನ್ ಲೈನ್ ಜೊತೆಗೆ ಚಿತ್ರಿಸಬಹುದು, ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ ರೀಗ್ರೆಷನ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಚೆನ್ನಾಗಿ ನೋಡಲು: ```python plt.scatter(X_test,y_test) @@ -235,19 +233,19 @@ plt.plot(X_test,pred) Linear regression -## ಪೋಟಿನ್‌ಷಿಯಲ್ ರಿಗ್ರೆಶನ್ +## ಪಾಲಿನೋಮಿಯಲ್ ರೀಗ್ರೆಷನ್ -ಇನ್ನೊಂದು ರೀತಿಯ ಲಿನಿಯರ್ ರಿಗ್ರೆಶನ್ ಆಗಿದೆ ಪೋಟಿನ್‌ಷಿಯಲ್ ರಿಗ್ರೆಶನ್. ಕೆಲವು ಬಾರಿ ಚರಗಳ ನಡುವೆ ರೇಖೀಯ ಸಂಬಂಧವಿರಬಹುದು — ಭೌತಮಾಪನದಲ್ಲಿ ದೊಡ್ಡ ಕಿಂಬುಮಂದಿ ಇದ್ದರೆ ಬೆಲೆ ಹೆಚ್ಚು ಇರುತ್ತದೆ — ಆದರೆ ಕೆಲವು ವೇಳೆ ಈ ಸಂಬಂಧಗಳು ಸಮತಲವೋ ಅಥವಾ ಸರಳ ರೇಖೆಯಾಗಿ ಇರಲೇಬೇಕು ಅಂತಿಲ್ಲ. +ಮತ್ತೊಂದು ರೀಗ್ರೆಷನ್ ಪ್ರಕಾರ ಪಾಲಿನೋಮಿಯಲ್ ರೀಗ್ರೆಷನ್. ಕೆಲವೊಮ್ಮೆ, ವೈಶಿಷ್ಟ್ಯಗಳ ನಡುವೆ ರೇಖೀಯ ಸಂಬಂಧ ಇರುತ್ತದೆ - ಘನಮಾನದ ಬಗ್ಗೆ ದೊಡ್ಡ ದಾ, ದರ ಹೆಚ್ಚಾಗುತ್ತದೆ - ಆದರೆ ಕೆಲವೊಮ್ಮೆ ಈ ಸಂಬಂಧಗಳನ್ನು ರೇಖೆ ರೂಪದಲ್ಲಿ ಅಥವಾ ಪ್ಲೇನ್ ರೇಖೆಯಾಗಿ ಚಿತ್ರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. -✅ ಇಲ್ಲಿ [ಇನ್ನು ಕೆಲವು ಉದಾಹರಣೆಗಳು](https://online.stat.psu.edu/stat501/lesson/9/9.8) ಇವೆ ಪೋಟಿನ್ಶಿಯಲ್ ರಿಗ್ರೆಶನ್ ಬಳಸಬಹುದಾದ ಮಾಹಿತಿ +✅ ಇಲ್ಲಿ [ಹೆಚ್ಚಿನ ಉದಾಹರಣೆಗಳು](https://online.stat.psu.edu/stat501/lesson/9/9.8) ಇವೆ, ಅವು ಪಾಲಿನೋಮಿಯಲ್ ರೀಗ್ರೆಷನ್ ಬಳಸಬಹುದು -ಮತ್ತೆ Date ಮತ್ತು Price ನಡುವಿನ ಸಂಬಂಧವನ್ನು ನೋಡಿ. ಈ scatterplot ಅನ್ನು ಖಂಡಿತವಾಗಿ ಸರಳ ರೇಖೆಯಿಂದ ವಿಶ್ಲೇಷಿಸಬೇಕೆಂದು ಭಾವಿಸಲಿಯೇ? ಬೆಲೆಗಳು ಕನ್ನಡದಂತೆ ಬದಲಾಗುವುದಿಲ್ಲವೆ? ಇದೇ ಸಂದರ್ಭದಲ್ಲಿ, ನೀವು ಪೋಟಿನ್‌ಷಿಯಲ್ ರಿಗ್ರೆಶನ್ ಪ್ರಯತ್ನಿಸಬಹುದು. +ದಿನಾಂಕ ಮತ್ತು ಬೆಲೆಯ ಸಂಬಂಧವನ್ನು ಮತ್ತೊಮ್ಮೆ ನೋಡಿ. ಈ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ರೇಖೆಯ ಮೂಲಕ ಹೇಗಾದರೂ ವಿಶ್ಲೇಷಿಸಬೇಕೆಂದು ನೀವು ಭಾವಿಸುತ್ತೀರಾ? ಬೆಲೆಗಳು ಅಸ್ಥಿರವಾಗುವುದಿಲ್ಲವೇ? ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನೀವು ಪಾಲಿನೋಮಿಯಲ್ ರೀಗ್ರೆಷನ್ ಪ್ರಯತ್ನಿಸಬಹುದಾಗಿದೆ. -✅ ಪೋಲಿನೋಮಿಯಲ್ಸ್ ಎಂಬವು ಗಣಿತೀಯ ಸೂಚನೆಗಳು, ಅವು ಒಂದಷ್ಟು ಚರಗಳು ಮತ್ತು ಗುಣಾಂಕಗಳನ್ನು ಹೊಂದಿರಬಹುದು +✅ ಪಾಲಿನೋಮೀಯಲ್ ಗಳು ಗಣಿತೀಯ ಸೂಚನೆಗಳು, ಅವು ಒಂದೋ ಹೆಚ್ಚು variables ಮತ್ತು коэффициಗಳನ್ನೂ ಹೊಂದಿರಬಹುದು -ಪೋಟಿನ್‌ಷಿಯಲ್ ರಿಗ್ರೆಶನ್ ಅಸಮರೇಖೀಯ ಡೇಟಾವನ್ನು ಉತ್ತಮವಾಗಿ ಹೊಂದಿಸಲು ಮೃದುವಾದ ರೇಖೆಯನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು `DayOfYear` ಮುಂದಂಪು 2 ನೇ ಘಾತಾಂಶವನ್ನು ಒಳಗೊಂಡರೆ, ನಾವು ಡೇಟಾವನ್ನು ಪಾರಾಬೋಲಿಕ್ ವಕ್ರಕ್ಕೆ ಹೊಂದಿಸಬಲ್ಲವು, ಅದು ವರ್ಷದ ಕೆಲವು ಬುಗ್ಗೆಯಲ್ಲಿ ಕನಿಷ್ಠ ಅಂಶ ಹೊಂದಿರುತ್ತದೆ. +ಪಾಲಿನೋಮಿಯಲ್ ರೀಗ್ರೆಷನ್ ಕರ್ತೃವಜ್ರಾಕಾರ ಲೈನ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಇದು ರೇಖೇಯಲ್ಲದ (ನಾನ್‌-ಲೀನಿಯರ್) ಡೇಟಾ ಮೇಲೆ ಉತ್ತಮವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು `DayOfYear` ಚದರ ಅಂಶವನ್ನು ಇನ್‌ಪುಟ್ ಡೇಟಾಗೆ ಸೇರಿಸಿದ್ದರೆ, ಯಾವುದೋ ವರ್ಷದ ಒಳಗಿನ ನಿರ್ದಿಷ್ಟ ಬಿಂದುವಿನಲ್ಲಿ ಕನಿಷ್ಠ ಸ್ಥಾನವಿರುವ ಪ್ಯಾರಬೊಲಿಕ್ ವಕ್ರವನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗುವ ಸಂಭವವೆ ಇದೆ. -ಸ್ಕೈಕಿಟ್-ಲೇನೊ ಸೇರಿಸಿದ್ದಕ್ಕೆ ಉಪಯುಕ್ತವಾದ [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ಇದೆ ವಿವಿಧ ಡೇಟಾ ಪ್ರಕ್ರಿಯೆ ಹಂತಗಳನ್ನು ಸಂಯೋಜಿಸಲು. ಒಂದು **ಪೈಪ್ಲೈನ್** ಎಂದರೆ **ಎಸ್ಟಿಮೇಟರ್ಸ್** ಸರಪಳಿಯಾಗಿದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಮೊದಲಿಗೆ ಬಾಹುಘಾತ ځانګಣಗಳನ್ನು ಸೇರಿಸುವ ಪೈಪ್ಲೈನ್ ಸೃಷ್ಟಿಸಿ, ನಂತರ regression ತರಬೇತಿನ ಕೆಲಸ ಮಾಡುತ್ತೇವೆ: +ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ಒಂದು ಸಹಾಯಕ [ಪೈಪ್‌ಲೈನ್ API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ಅನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದು ಡೇಟಾ ಪ್ರಕ್ರಿಯೆಯ ವಿಭಿನ್ನ ಹಂತಗಳನ್ನು ಸಮೇತಗೊಳಿಸಲು ಉಪಯುಕ್ತ. **ಪೈಪ್‌ಲೈನ್** ಎಂದರೆ **ಎಸ್ಟಿಮೇಟರ್‌ಗಳ** ಸರಪಳಿ. ನಮ್ಮಲ್ಲಿ, ನಾವು ಮೊದಲಿಗೆ ಪಾಲಿನೋಮಿಯಲ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸುವ ಪೈಪ್‌ಲೈನ್ ರಚಿಸಿ ನಂತರ ರೀಗ್ರೆಷನ್ ತರಬೇತಿ ಮಾಡುತ್ತೇವೆ: ```python from sklearn.preprocessing import PolynomialFeatures @@ -258,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` ಬಳಸಿ ಅಂದರೆ ನಾವು ಒಳಪಡಿಸುವ ಎಲ್ಲಾ 2ನೇ ಶ್ರೇಣಿಯ ಪೋಲಿನೋಮಿಯಲ್ಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ. ನಮ್ಮಲ್ಲಿ ಅದು `DayOfYear`2 ಮಾತ್ರವಾಗಿರುತ್ತದೆ, ಆದರೆ ಎರಡು ಇನ್‌ಪುಟ್ ಚರಗಳು X ಮತ್ತು Y ಇದ್ದರೆ, ಅದು X2, XY ಮತ್ತು Y2 ಸೇರಿಸುತ್ತದೆ. ನಾವು ಇನ್ನೂ ಹೆಚ್ಚಿನ ಘಾತಾಂಶಗಳನ್ನು ಬಳಸಬಹುದು ಬೇಕಾದರೆ. +`PolynomialFeatures(2)` ಬಳಸಿ ಎಲ್ಲಾ ರೆಂಡು-ಡಿಗ್ರಿ ಪಾಲಿನೋಮಿಯಲ್‌ಗಳನ್ನು ಇನ್‌ಪುಟ್ ಡೇಟಾದಿಂದ ಒಳಗೊಂಡಿರುತ್ತೇವೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ಅದು ಕೇವಲ `DayOfYear`2 ಅಂದರೆ, ಆದರೆ ಎರಡು ಇನ್‌ಪುಟ್ ವೆರೀಯಬಲ್ಗಳಾದ X ಮತ್ತು Y ಇದ್ದರೆ, ಇದರಿಂದ X2, XY ಮತ್ತು Y2 ಸೇರುತ್ತವೆ. ಅಗತ್ಯವಿದ್ದರೆ ಉಚ್ಛ ಮಟ್ಟದ ಪಾಲಿನೋಮಿಯಲ್ ಗಳನ್ನು ಕೂಡ ಬಳಸಿ ಪ್ರಭಾವ ಬೀಳಬಹುದು. + +ಪೈಪ್‌ಲೈನ್‍ನ್ನು ಮೂಲ `LinearRegression` ಆಬ್ಜೆಕ್ಟ್‌ನಂತೆ ಸಹ ಉಪಯೋಗಿಸಬಹುದು, ಅಂದರೆ ನಾವು ಪೈಪ್‌ಲೈನ್‍ನ್ನು `fit` ಮಾಡಿ ನಂತರ `predict` ಬಳಸಿ ಊಹಿಸಬಹುದಾಗಿದೆ: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +ಸರಳ ವಕ್ರ ರೇಖೆಯನ್ನು ಚಿತ್ರಿಸಲು, ನಾವೇನು ನಿರ್ಬಂಧವಿಲ್ಲದ ಪರೀಕ್ಷಾ ಡೇಟಾ ಮೇಲೆ ಬೆಳೆವ ಬದಲು, `np.linspace` ಬಳಸಿ ಪಡೆಯುವ ಇನ್‌ಪುಟ್ ಮೌಲ್ಯಗಳ ಸಮನಿಯೋಜಿತ ಶ್ರೇಣಿಯನ್ನು ಸೃಷ್ಟಿಸುತ್ತೇವೆ ( ಅದರಿಂದ ಜಿಗ್ज़ಾಗ್ ಲೈನ್ ಬರುವುದಿಲ್ಲ): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -ಪೈಪ್ಲೈನ್‌ಗಳನ್ನು ಮೂಲ `LinearRegression` ವಸ್ತುವಿನ ಹಾಗೆ ಬಳಸಿ, ಅಂದರೆ ನಾವು ಪೈಪ್ಲೈನ್ ಅನ್ನು `fit` ಮಾಡಿ, ನಂತರ `predict` ಬಳಸಿ ಊಹಿಸಬಹುದು. ಇದು ಪರೀಕ್ಷಾ ಡೇಟಾ ಮತ್ತು ಅನುಮಾನ ತುಂಬಿದ ವಕ್ರವನ್ನ ತೋರಿಸುವ ಗ್ರಾಫ್ ಆಗಿದೆ: +ಪರೀಕ್ಷಾ ಡೇಟಾ ಮತ್ತು ಅನುಮಾನಿತ ವಕ್ರವನ್ನು ತೋರಿಸುವ ಗ್ರಾಫ್ ಇಲ್ಲಿಗೆ: Polynomial regression -ಪೋಟಿನ್‌ಷಿಯಲ್ ರಿಗ್ರೆಶನ್ ಬಳಸಿ, ನಾವು ಸ್ವಲ್ಪ ಕಡಿಮೆ MSE ಮತ್ತು ಹೆಚ್ಚು ನಿರ್ಧಾರ коэффициент ಪಡೆಯಬಹುದು, ಆದರೆ ಗಮನಾರ್ಹವಾಗಿ ಅಲ್ಲ. ನಾವು ಇತರ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಗಮನಿಸಬೇಕಾಗುತ್ತದೆ! +ಪಾಲಿನೋಮಿಯಲ್ ರೀಗ್ರೆಷನ್ ಬಳಸಿ, ನಾವು ಸ್ವಲ್ಪ ಕಡಿಮೆ RMSE ಮತ್ತು ಹೆಚ್ಚು ನಿಧಾನ коэффици೦ಟ್ ಅನ್ನು ಪಡೆಯಬಹುದು, ಆದರೆ ಬಹುಶಃ ಮಾತ್ರ. ಇನ್ನಷ್ಟು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಗಣಿಸಬೇಕು! -> ನೀವು ನೋಡಬಹುದು ಕನಿಷ್ಠ ಕಿಂಬುಮಂದಿ ಬೆಲೆಗಳು ಹ್ಯಾಲೋವೀನ್ ಸಮಯದಲ್ಲಿ ಕಂಡುಬರುತ್ತವೆ. ಇದನ್ನು ಹೇಗೆ ವಿವರಿಸಬಹುದು? +> ನೀವು ಗಮನಿಸಬಹುದು ಅತಿ ಕಡಿಮೆ ದಾ ಬೆಲೆಗಳು ಸುಮಾರು ಹ್ಯಾಲೋವೀನ್ ಸಮಯದಲ್ಲಿ." ಇದನ್ನು ಹೇಗೆ ವಿವರಣೆ ಮಾಡಬಹುದು? -🎃 ಅಭಿನಂದನೆಗಳು, ನೀವು ಪೈ ಕಿಂಬುಮಂದಿಗಳ ಬೆಲೆಯನ್ನು ಊಹಿಸಲು ಸಹಾಯ ಮಾಡುವ ಮಾದರಿಯನ್ನು ಸೃಷ್ಟಿಸಿದ್ದೀರಿ. ನೀವು ಬಹುಮಾನಿತವಾಗಿ ಎಲ್ಲ ಕಿಂಬುಮಂದಿ ಪ್ರಭೇದಗಳಿಗೆ ಇದೇ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಬಹುದು, ಆದರೆ ಅದು ತುಚ್ಛಮಾಡುತ್ತದೆ. ಈಗ ನಾವು ಹೇಗೆ ಕಿಂಬುಮಂದಿ ಪ್ರಭೇದಗಳನ್ನು ನಮೂದಿನಲ್ಲಿಯೇ ಸೇರಿಸಬೇಕೆಂದು ಕಲಿಯೋಣ! +🎃 ಅಭಿನಂದನೆಗಳು, ನೀವು ಪೈ ದಾ ಬೆಲೆಯನ್ನು ಊಹಿಸುವ ಮಾದರಿಯನ್ನು ರಚಿಸಿದ್ದೀರಿ. ಎಲ್ಲಾ ದಾ ಪ್ರಕಾರಗಳಿಗೂ ಇದೇ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮಾಡಬಹುದು, ಆದರೆ ಅದು ಕುಂಜಿ ಕೊಡುವುದು. ಈಗ ನಾವು ಮಾದರಿಯಲ್ಲಿ ದಾ ಪ್ರಭೇಧವನ್ನು ಹೇಗೆ ಪರಿಗಣಿಸುವುದು ಎಂದು ಕಲಿಯೋಣ! -## ವರ್ಗೀಕೃತ ಗುಣಲಕ್ಷಣಗಳು +## ವರ್ಗೀಕರಣ ವೈಶಿಷ್ಟ್ಯಗಳು -ಐಡಿಯಲ್ ಲೋಕದಲ್ಲಿ, ನಾವು ಬಿನ್ನಹಗಳ ಬೆಲೆಗಳನ್ನು ವಿಭಿನ್ನ ಬಗೆಯ ಕಿಂಬುಮಂದಿಗಳಿಗೆ ಒಂದೇ ಮಾದರಿಯಿಂದ ಊಹಿಸಬಯಸುತ್ತೇವೆ. ಆದಾಗ್ಯೂ, `Variety` ಕಾಲಮ್ ಯಾವುದೋ ವಿಭಿನ್ನವಾಗಿದೆ, ಅದು `Month` ಬಗೆಗಿನ ಕಾಲಂಗಳಂತೆಯೇ ಅಲ್ಲ, ಏಕೆಂದರೆ ಅದು ಸಂಖ್ಯೆ ಆಧಾರಿತ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿಲ್ಲ. ಇಂತಹ ಕಾಲಂಗಳನ್ನು **ವರ್ಗೀಕೃತ** ಎಂದು ಕರೆಯುತ್ತಾರೆ. +ಆದರ್ಶ ಲೋಕದಲ್ಲಿ, ನಾವು ಬೇರೆ ಬೇರೆ ದಾ ಪ್ರಭೇಧಗಳ ಬೆಲೆಗಳನ್ನು ಒಂದೇ ಮಾದರಿಯಲ್ಲಿ ಊಹಿಸಬಯಸುತ್ತೇವೆ. ಆದರೆ, `Variety` ಕಾಲಮ್ `Month` ಹೋಲಿಸಿಕೊಂಡರೆ ವಿಭಿನ್ನವಾಗಿದೆ ಏಕೆಂದರೆ ಅದು ಸಂಖ್ಯೆಗಳಿಗೆ ಸೇರಿದ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿಲ್ಲ. ಇಂಥ ಕಾಲಮ್ ಗಳನ್ನು **ವರ್ಗೀಕರಣ ವೈಶಿಷ್ಟ್ಯಗಳು** ಎನ್ನಲಾಗುತ್ತದೆ. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳ ಬಳಕೆ ಕುರಿತು ಸಣ್ಣ ವಿಡಿಯೋ ಪರಿಚಯವನ್ನು ವೀಕ್ಷಿಸಿ. +> 🎥 ವರ್ಗೀಕರಣ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸುವ ಬಗ್ಗೆ ಚಿಕ್ಕ ವೀಡಿಯೋವೀಕ್ಷಣೆಗೆ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. -ಇಲ್ಲಿ ನೀವು ಮುಂದೆ ನೋಡಬಹುದು ಸರಾಸರಿ ಬೆಲೆ ಪ್ರಭೇದಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ: +ಇಲ್ಲಿ ನಿಮ್ಮ ಕೈಗೆ ಸರಿ ಬರುವಂತೆ ಸರಾಸರಿ ಬೆಲೆ ಪ್ರಭೇಧದ ಮೇಲೆ ಅವಲಂಬಿಸಿದೆ: Average price by variety -ವಿಭಿನ್ನತೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮೊದಲು ನಾವಿಗೆ ಅದನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ರೂಪಕ್ಕೆ ಪರಿವರ್ತನೆ ಮಾಡಬೇಕು, ಅದನ್ನು **ಎಂಕೋಡ್** ಮಾಡಬೇಕು. ಇದಕ್ಕಾಗಿ ಕೆಲವು ವಿಧಾನಗಳಿವೆ: +ದಾ ಪ್ರಭೇಧವನ್ನು ಪರಿಗಣಿಸಲು ಮೊದಲು ಅದು ಸಂಖ್ಯೆ ರೂಪಕ್ಕೆ ಪರಿವರ್ತನೆ ಅಥವಾ **ಎൻಕೋಡಿಂಗ್** ಮಾಡಬೇಕು. ಇದಕ್ಕಾಗಿ ಅನೇಕ ವಿಧಾನಗಳಿವೆ: -* ಸರಳ **ಸಂಖ್ಯಾ ಎಂಕೋಡಿಂಗ್** ವಿಭಿನ್ನ ಪ್ರಭೇದಗಳ ಪಟ್ಟಿಯನ್ನು ನಿರ್ಮಿಸಿ, ನಂತರ ಪ್ರಭೇದದ ಹೆಸರನ್ನು ಅದರಲ್ಲಿ ಎಂಬ ಸೂಚ್ಯಂಕದಿಂದ ಬದಲಿಸುವುದು. ಇದು ಲಿನಿಯರ್ ರಿಗ್ರೆಶನಿಗಾಗಿ ಉತ್ತಮ ಕಲ್ಪನೆ ಅಲ್ಲ, ಏಕೆಂದರೆ ಲಿನಿಯರ್ ರಿಗ್ರೆಶನ್ ಸೂಚ್ಯಂಕದ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು ತೆಗೆದು, ಅದನ್ನು ಗುಣಾಂತರದೊಂದಿಗೆ ಫಲಿತಾಂಶಕ್ಕೆ ಸೇರುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಸೂಚ್ಯಂಕ ಸಂಖ್ಯೆಯು ಬೆಲೆಯೊಂದಿಗೆ ಸ್ಪಷ್ಟವಾಗಿ ಅಸಮರೇಶೀಯವಾಗಿದೆ, אף ಆಗ ನಾವು ಸೂಚ್ಯಂಕಗಳನ್ನು ವಿಶೇಷ ರೀತಿಯಲ್ಲಿ ಕ್ರಮಗೊಳಿಸಿದರೂ ಸಹ. -* **ಒನ್-ಹಾಟ್ ಎಂಕೋಡಿಂಗ್** `Variety` ಕಾಲಮ್ ಅನ್ನು 4 ಬಿನ್ನಹಗಳಿಗೆ, ಪ್ರತಿ ಒಂದು ಪ್ರಭೇದಕ್ಕೆ ಒಂದು ಕಾಲಮ್ ಅನ್ನು ಬದಲಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಕಾಲಮ್ ಅನ್ನು `1` ಇಡುತ್ತದೆ ಆ ಸಾಲು ಆ ನಿರ್ದಿಷ್ಟ ಪ್ರಭೇದಕ್ಕೆ ಸೇರಿದರೆ, ಇಲ್ಲದಿದ್ದರೆ `0`. ಅಂದರೆ ಲಿನಿಯರ್ ರಿಗ್ರೆಶನ್ ನಲ್ಲಿ ನಾಲ್ಕು ಗುಣಾಂಕಗಳಿರುತ್ತವೆ, ಪ್ರತಿ ಕಿಂಬುಮಂದಿ ಪ್ರಭೇದಕ್ಕೆ ಒಂದು, ಅದರ “ಆರಂಭ ಬೆಲೆ” (ಅಥವಾ “ಸಂಬಂಧಿತ ಹೆಚ್ಚುವರಿ ಬೆಲೆ”) ನಿಗದಿಮಾಡುತ್ತದೆ. +* ಸರಳ **ಸಂಖ್ಯೆ ಎನ್‌ಕೋಡಿಂಗ್** ಬೇರೆಯ ಬೇರೆಯ ಪ್ರಭೇಧಗಳ ಪಟ್ಟಿಯನ್ನು ಮಾಡುತ್ತದೆ ಮತ್ತು ಪ್ರಭೇಧ ಹೆಸರನ್ನು ಆ ಪಟ್ಟಿಯ ಸೂಚ್ಯಂಕದಿಂದ ಬದಲಿಸುತ್ತದೆ. ಇದು ಲೀನಿಯರ್ ರೀಗ್ರೆಷನ್‌ಗಾಗಿ ಉತ್ತಮ ಆಯ್ಕೆಯಲ್ಲ, ಏಕೆಂದರೆ ಲೀನಿಯರ್ ರೀಗ್ರೆಷನ್ ಸೂಚ್ಯಂಕದ ನೈಜ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು ಉಪಯೋಗಿಸಿ коеффициент ಜೊತೆಗೆ ಫಲಿತಾಂಶಕ್ಕೆ ಸೇರಿಸುತ್ತದೆ. ನಮ್ಮ ಪ್ರಕರಣದಲ್ಲಿ, ಸೂಚ್ಯಂಕ ಸಂಖ್ಯೆಯು ಬೆಲೆಯೊಂದಿಗೆ ಸ್ಪಷ್ಟವಾಗಿ ನಾನ್-ಲೀನಿಯರ್ ಸಂಬಂಧ ಹೊಂದಿದೆ, ಸಹ ಸೂಚ್ಯಂಕ ಅಂಶಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ಕ್ರಮದಲ್ಲಿ ಅಳವಡಿಸಿದರೂ ಕೂಡ. +* **ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್** `Variety` ಕಾಲಮ್ ಅನ್ನು 4 ವಿಭಿನ್ನ ಕಾಲಮ್ ಗಳಲ್ಲಿ ಬದಲಿಸುತ್ತದೆ, ಪ್ರತಿಯೊಂದು ಕಾಲಮ್ ಒಂದು ಪ್ರಭೇಧಕ್ಕೆ. ಪ್ರತಿಯೊಬ್ಬ ಕಾಲಮ್ ಒಳಗೆ, ಆ ಸಾಲಿನ ಪ್ರಭೇಧಕ್ಕೆ `1`, ಇಲ್ಲದಿದ್ದರೆ `0` ಇರುತ್ತದೆ. ಇದರರ್ಥ, ರೇಖೀಯ ರೀಗ್ರೆಷನ್‍ನಲ್ಲಿ ನಾಲ್ಕು коэффициಗಳು, ಪ್ರತಿ ದಾ ಪ್ರಭೇಧಕ್ಕೆ ಒಂದೊಂದು, "ಪ್ರಾರಂಭಿಕ ಬೆಲೆ" (ಅಥವಾ "ಅತಿರಿಕ್ತ ಬೆಲೆ") ಕರ್ತವ್ಯವಿದೆ. -ಕೆಳಗಿನ ಕೋಡ್ ಒನ್-ಹಾಟ್ ಎಂಕೋಡಿಂಗ್ ಹೇಗೆ ಮಾಡಬಹುದು ತೋರಿಸುತ್ತದೆ: +ಕೆಳಗಿನ ಕೋಡ್ ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್ ಹೇಗೆ ಮಾಡಿಕೊಳ್ಳತಕ್ಕುದೆಂದು ತೋರಿಸುತ್ತದೆ: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -304,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -ಒನ್-ಹಾಟ್ ಎಂಕೋಡ್ ಮಾಡಿದ variety ನೊಂದಿಗೆ ಲಿನಿಯರ್ ರಿಗ್ರೆಶನ್ ತರಬೇತಿಗೆ `X` ಮತ್ತು `y` ಡೇಟಾವನ್ನು ಸರಿಯಾಗಿ ಆರಂಭಿಸೋಣ: +ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್ ಮಾಡಿದ್ದ ಪ್ರಭೇಧವನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ಬಳಸಿಕೊಂಡು ಲೀನಿಯರ್ ರೀಗ್ರೆಷನ್ ತರಬೇತಿಗಾಗಿ `X` ಮತ್ತು `y` ಡೇಟಾ ಸರಿಯಾಗಿ ಆರಂಭಿಸಬೇಕು: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -ಕೋಡ್ ಇದನ್ನು ಮಾಡುವುದು ಲಿನಿಯರ್ ರಿಗ್ರೆಶನ್ ತರಬೇತಿಗೆಮೇಲಿನಂತೆಯೇ. ನೀವು ಪ್ರಯತ್ನಿಸಿದರೆ, ನೀವು ಸುತ್ತಲೂ ಸಮಾನ ದೋಷ (MSE) ಮತ್ತು ಹೆಚ್ಚಿನ ನಿರ್ಧಾರ коэффициcent (~77%) ನೋಡಬಹುದು. ಇನ್ನೂ ನಿಖರ ಊಹೆಗಳಿಗೆ, ನಾವು ಇನ್ನಷ್ಟು ವರ್ಗೀಕೃತ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಮತ್ತು ಸಂಖ್ಯಾತ್ಮಕ ಗುಣಲಕ್ಷಣಗಳನ್ನು (ಹಾಗು `Month`, `DayOfYear` ಮುಂತಾದ) ಸೇರಿಸಬಹುದು. ಒಂದೇ ದೊಡ್ಡ ಗುಣಲಕ್ಷಣ ಶ್ರೇಣಿಯನ್ನು ಪಡೆಯಲು, ನಾವು `join` ಬಳಸಬಹುದು: +ಬಾ್ಳಿ ಭಾಗದ ಕೋಡ್ ಮೇಲೆ ಲೀನಿಯರ್ ರೀಗ್ರೆಷನ್ ತರಬೇತಿಗೆ ಸಹ ಒಂದೇ ನಡೆ ಇದೆಯೇನು. ಪ್ರಯತ್ನಿಸಿದರೆ, ಸರಾಸರಿ ಚದರ ತಪ್ಪು ಸಣ್ಣದಾಗಿರುತ್ತದೆ, ಆದರೆ ನಾವು ಬಹುಮಟ್ಟಿನ ನಿಧಾನ коэффици೦ಟ್ (~77%) ಪಡೆಯುತ್ತೇವೆ. ಇನ್ನಷ್ಟು ಖಚಿತ ಊಹೆಗಾಗಿ, ಮತ್ತಷ್ಟು ವರ್ಗೀಕರಣ ಮತ್ತು ಸಂಖ್ಯಾತ್ಮಕ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು, ಉದಾಹರಣೆಗೆ `Month` ಅಥವಾ `DayOfYear`. ಒಂದು ದೊಡ್ಡ ವೈಶಿಷ್ಟ್ಯ ಮಂದಲಿಯನ್ನು ಪಡೆಯಲು `join` ಬಳಸಬಹುದು: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -321,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -ಇಲ್ಲಿ ನಾವು `City` ಮತ್ತು `Package` ಪ್ರಕಾರವನ್ನು ಕೂಡ ಸೇರಿಸುತ್ತೇವೆ, ಇದು MSE 2.84 (10%), ಮತ್ತು ನಿರ್ಧಾರ 0.94 ಇರಿಸುತ್ತದೆ! +ಇಲ್ಲಿ ನಾವು `City` ಮತ್ತು `Package` ಪ್ರಕಾರಗಳನ್ನೂ ಪರಿಗಣಿಸಿದ್ದೇವೆ, ಇದರ ಬಳಕೆ RMSE 2.84 (10.5%) ಮತ್ತು ನಿಧಾನ коэффици೦ಟ್ 0.94 ಪಡೆದಿದ್ದೇವೆ! -## ಎಲ್ಲವನ್ನೂ ಒಟ್ಟಿಗೆ ಸೇರಿಸುವುದು +## ಎಲ್ಲವನ್ನೂ ಒಟ್ಟುಗೂಡಿಸಿ -ಉತ್ತಮ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು, ನಾವು ಮೇಲಿನ ಉದಾಹರಣೆಯ (ಒನ್-ಹಾಟ್ ಎಂಕೋಡ್ ಮಾಡಿದ ವರ್ಗೀಕೃತ + ಸಂಖ್ಯಾತ್ಮಕ) ಡೇಟಾ ಪೋಟಿನ್‌ಷಿಯಲ್ ರಿಗ್ರೆಶನ್ ಜೊತೆಗೆ ಬಳಸಿ. ಇದು ನಿಮ್ಮ ಅನುಕೂಲಕ್ಕಾಗಿ ಸಂಪೂರ್ಣ ಕೋಡ್: +ಅತ್ಯುತ್ತಮ ಮಾದರಿಗಾಗಿ, ನಾವು [ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್ ವರ್ಗೀಕರಣ + ಸಂಖ್ಯೆ ವೈಶಿಷ್ಟ್ಯ] ಸಂಯೋಜಿತ ಡೇಟಾವನ್ನು ಪಾಲಿನೋಮಿಯಲ್ ರೀಗ್ರೆಷನ್ ಜೊತೆಗೆ ಬಳಸಬಹುದು. ನಿಮ್ಮ ಅನುಕೂಲಕ್ಕಾಗಿ ಸಂಪೂರ್ಣ ಕೋಡ್ ಇಲ್ಲಿದೆ: ```python -# ತರಬೇತಿ ಡೇಟಾ ವ್ಯವಸ್ಥೆಯೋಡಿಸಲಾಗುತ್ತದೆ +# ತರಬೇತಿ ಮಾಹಿತಿ ರಚನೆ ಮಾಡು X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# ತರಬೇತಿ-ಪರೀಕ್ಷೆ ವಿಭಾಜನೆ ಮಾಡಿ +# ತರಬೇತಿ-ಪರೀಕ್ಷೆ ಭಾಗವ ನೀಡು X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# ನಿಮಿಷಾ ಮತ್ತು ತರಬೇತಿ ಪೈಪ್ಲೈನ್ ವ್ಯವಸ್ಥೆಯೋಡಿಸಿ +# ಪೈಪ್ಲೈನ್ ಅನ್ನು ಸಜ್ಜುಗೊಳಿಸಿ ಮತ್ತು ತರಬೇತಿ ನೀಡಿ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ಪರೀಕ್ಷಾ ಡೇಟಾ ಫಲಿತಾಂಶಗಳನ್ನು ಭವಿಷ್ಯ ವಾಣಿ ಮಾಡಿ +# ಪರೀಕ್ಷಾ ಮಾಹಿತಿಗಾಗಿ ಫಲಿತಾಂಶಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಿ pred = pipeline.predict(X_test) -# MSE ಮತ್ತು ನಿರ್ಧಾರ ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE ಮತ್ತು ನಿರ್ಧಾರವನ್ನು ಲೆಕ್ಕಿಸಿ +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -ಇದು ನಮಗೆ ಅತ್ಯುತ್ತಮ ನಿರ್ಧಾರ коэффициcent ಸುತ್ತಲೂ 97%, ಮತ್ತು MSE=2.23 (~8% ಊಹೆ ದೋಷ) ಕೊಡಬೇಕು. +ಎದುರುವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಇದು ಸುಮಾರು 97% ನಿಧಾನ коэффици೦ಟ್ ಮತ್ತು RMSE=2.23 (~8% ಊಹೆ ತಪ್ಪು) ಕೊಡುವುದು. -| ಮಾದರಿ | MSE | ನಿರ್ಧಾರ | -|-------|-----|---------| -| `DayOfYear` ಲಿನಿಯರ್ | 2.77 (17.2%) | 0.07 | -| `DayOfYear` ಪೋಲಿನೋಮಿಯಲ್ | 2.73 (17.0%) | 0.08 | -| `Variety` ಲಿನಿಯರ್ | 5.24 (19.7%) | 0.77 | -| ಎಲ್ಲ ಗುಣಲಕ್ಷಣಗಳು ಲಿನಿಯರ್ | 2.84 (10.5%) | 0.94 | -| ಎಲ್ಲಾ ಗುಣಲಕ್ಷಣಗಳು ಪೋಲಿನೋಮಿಯಲ್ | 2.23 (8.25%) | 0.97 | +| ಮಾದರಿ | RMSE | ನಿಧಾನ коэффици೦ಟ್ | +|-------|-----|---------------| +| `DayOfYear` ಲೀನಿಯರ್ | 2.77 (17.2%) | 0.07 | +| `DayOfYear` ಪಾಲಿನೋಮಿಯಲ್ | 2.73 (17.0%) | 0.08 | +| `Variety` ಲೀನಿಯರ್ | 5.24 (19.7%) | 0.77 | +| ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳು ಲೀನಿಯರ್ | 2.84 (10.5%) | 0.94 | +| ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳು ಪಾಲಿನೋಮಿಯಲ್ | 2.23 (8.25%) | 0.97 | -🏆 ಚೆನ್ನಾಗಿದೆ! ನೀವು ಒಂದೇ ಪಾಠದಲ್ಲಿ ನಾಲ್ಕು regression ಮಾದರಿಗಳನ್ನು ಸೃಷ್ಟಿಸಿದಿರಿ, ಮತ್ತು ಮಾದರಿಯ ಗುಣಮಟ್ಟವನ್ನು 97% ಗೆ ಸುಧಾರಿಸಿದಿರಿ. regression ನ ಕೊನೆಯ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಪ್ರಕಾರಗಳನ್ನು ನಿರ್ಧರಿಸಲು Logistic Regression ಕುರಿತು ಕಲಿಯುತ್ತೀರಿ. +🏆 ಶುಭಾಶಯಗಳು! ನೀವು ಒಂದೇ ಪಾಠದಲ್ಲಿ ನಾಲ್ಕು ರೀಗ್ರೆಷನ್ ಮಾದರಿಗಳನ್ನು ರಚಿಸಿ ಮಾದರಿ ಗುಣಮಟ್ಟವನ್ನು 97% ಗೆ ಸುಧಾರಿಸುತ್ತೀರಿ. ಕೊನೆಯ ರೀಗ್ರೆಷನ್ ವಿಭಾಗದಲ್ಲಿ ವರ್ಗಾವಣೆಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಲಾಜಿಸ್ಟಿಕ್ ರೀಗ್ರೆಷನ್ ಕುರಿತು ಕಲಿಯುತ್ತೀರಿ. --- -## 🚀ಚಲೆಂಜ್ +## 🚀ಸವಾಲು -ಈ ನೋಟ್‌ಬುಕ್‌ನಲ್ಲಿ ವಿಭಿನ್ನ ಚರಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ ನೋಡಿರಿ, ಸಹಸಂಬಂಧ ಮಾದರಿಯ ճշտತೆಗೆ ಹೇಗಿದೆ ಎಂದು. +ಈ ನೋಟ್ಬುಕ್‌ನಲ್ಲಿ ಹಲವು ವಿಭಿನ್ನ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ, ಸಂಬಂಧವು ಮಾದರಿ ಖಚಿತತೆಗೆ ಹೇಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ನೋಡಿರಿ. -## [ಪಾಠೋತ್ತರ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) +## [ಪಠ್ಯೋತ್ತರ ಕುಶಲತಾ ಪರೀಕ್ಷೆ](https://ff-quizzes.netlify.app/en/ml/) -## ಪರಿಚಯ & ಸ್ವ-अಧ್ಯಯನ +## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಅಧ್ಯಯನ -ಈ ಪಾಠದಲ್ಲಿ ನಾವು ಲಿನಿಯರ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ಕಲಿತೇವೆ. ಇತರ ಪ್ರಮುಖ ರಿಗ್ರೆಶನ್ ಪ್ರಕಾರಗಳಿವೆ. Stepwise, Ridge, Lasso ಮತ್ತು Elasticnet ತಂತ್ರಗಳ ಕುರಿತು ಓದು. ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಉತ್ತಮ ಪಾಠವೊಂದಾಗಿದೆ [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +ಈ ಪಾಠದಲ್ಲಿ ನಾವು ಲೀನಿಯರ್ ರೀಗ್ರೆಷನ್ ಅನ್ನು ಕಲಿತೆವೆವು. ಇತರ ಪ್ರಮುಖ ರೀಗ್ರೆಷನ್ ಪ್ರಕಾರಗಳೂ ಇವೆ. ಸ್ಟೆಪ್ವೈಸ್, ರಿಡ್, ಲಾಸೋ ಮತ್ತು ಈಲಾಸ್ಟಿಕ್‌ನೆಟ್ ತಂತ್ರಗಳನ್ನು ಓದಿ ಕಲಿಯಿರಿ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ [ಸ್ಟಾನ್ಫರ್ಡ್ ಸ್ಟ್ಯಾಟಿಸ್ಟಿಕಲ್ ಲರ್ನಿಂಗ್ ಕೋರ್ಸ್](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ಓದಿ. -## ಹಂತವಾರು ಕೃತಿ +## ನೇಮಕಾತಿ -[ಮಾದರಿ ನಿರ್ಮಿಸಿ](assignment.md) +[ಮಾದರಿ ರಚಿಸಿ](assignment.md) --- -**ತಪ್ಪು ನಿವಾರಣೆ**: -ಈ ದಾಖಲೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಗಾಗಿ ಪ್ರಯತ್ನಿಸಿದರೂ ಸಹ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಸುಳ್ಳು ಮಾಹಿತಿಗಳು ಇರಬಹುದೆಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ದಸ್ತಾವೇಜು ಅದರ ಸ್ವಭಾವಿಕ ಜನರ ಭಾಷೆಯಲ್ಲಿ ಅಧಿಕಾರದ ಮೂಲವಾಗಿ ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗೆ, ನಿಪುಣ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ಗೊಂದಲಗಳಿಗೆ ಅಥವಾ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ. +**ಅಸ್ವೀಕಾರ ಪತ್ರ**: +ಈ ದಾಖಲೆ AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿಕೊಂಡು ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಗಾಗಿ ಪ್ರಯತ್ನಿಸುವಾಗ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷ ಅಥವಾ ಅನೇಕರೂಪತೆಯುಂಟಾಗಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ದಾಖಲೆ ಅದರ ಆಧಿಕೃತ ಭಾಷೆಯಲ್ಲಿ ಪ್ರಮಾಣಿಕ ಮೂಲ ಎಂದು ಪರಿಗಣಿಸಬೇಕು. ನಾಜೂಕು ಮಾಹಿತಿಗಾಗಿ ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದ ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದವನ್ನು ಬಳಸಿಕೊಂಡು ಸಂಭವಿಸುವ ಯಾವುದೇ ತಪ್ಪು ತಿಳಿವುಗಳು ಅಥವಾ ತಪ್ಪು ಅರ್ಥಗಳಿಗಾಗಿ আমরা ಹೊಣೆಗಾರರಲ್ಲ. \ No newline at end of file diff --git a/translations/kn/2-Regression/3-Linear/solution/notebook.ipynb b/translations/kn/2-Regression/3-Linear/solution/notebook.ipynb index 9f35d14792..ee79e84dac 100644 --- a/translations/kn/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/kn/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ಕಂಬಳಿಯ ಬೆಲೆಗೆ ರೇಖೀಯ ಮತ್ತು ಬಹುಪದ ರಿಗ್ರೆಷನ್ - ಪಾಠ 3\n", + "## ಕುಂಬಳಕಾಯಿ ಬೆಲೆಯ ಲಿನಿಯರ್ ಮತ್ತು ಪೊಲಿನೋಮಿಯಲ್ ರಿಗ್ರೆಷನ್ - ಪಾಠ 3\n", "\n", - "ಅಗತ್ಯ ಲೈಬ್ರರಿಗಳು ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಡೇಟಾವನ್ನು ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಪರಿವರ್ತಿಸಿ, ಡೇಟಾದ ಉಪಸಮೂಹವನ್ನು ಒಳಗೊಂಡಂತೆ:\n", + "ಅವಶ್ಯಕ ಲೈಬ್ರರಿಗಳು ಮತ್ತು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಡೇಟಾವನ್ನು ಡೇಟಾ ಫ್ರೇಮ್‌ಗೆ ಪರಿವರ್ತಿಸಿ, ಇದರಲ್ಲಿ ಆ ಭಾಗದ ಉಪಸಂಹಿತೆಯಿರುವ subset ಅನ್ನು ಒಳಗೊಂಡಿರಬೇಕು:\n", "\n", - "- ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಬೆಲೆಯಾದ ಕಂಬಳಿಗಳನ್ನು ಮಾತ್ರ ಪಡೆಯಿರಿ\n", - "- ದಿನಾಂಕವನ್ನು ತಿಂಗಳಿಗೆ ಪರಿವರ್ತಿಸಿ\n", - "- ಬೆಲೆಯನ್ನು ಉನ್ನತ ಮತ್ತು ಕಡಿಮೆ ಬೆಲೆಯ ಸರಾಸರಿ ಎಂದು ಲೆಕ್ಕಿಸಿ\n", - "- ಬೆಲೆಯನ್ನು ಬಸ್ಸೆಲ್ ಪ್ರಮಾಣದ ಪ್ರಕಾರ ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ಪರಿವರ್ತಿಸಿ\n" + "- ಬಸ್‌ಹೆಲ್ ಪ್ರಕಾರ ಬೆಲೆ ನೀಡಲಾದ ಕುಂಬಳಕಾಯಿಗಳನ್ನು ಮಾತ್ರ ಪಡೆಯಿರಿ\n", + "- ದಿನಾಂಕವನ್ನು ತಿಂಗಳುಗೆ ಪರಿವರ್ತಿಸಿ\n", + "- ಬೆಲೆಯನ್ನು ಗರಿಷ್ಠ ಮತ್ತು ಕನಿಷ್ಠ ಬೆಲೆಯ ಸರಾಸರಿ ಆಗಿ ಲೆಕ್ಕಿಸಿ\n", + "- ಬೆಲೆಯನ್ನು ಬಸ್‌ಹೆಲ್ ಪ್ರಮಾಣದ ಪ್ರಕಾರ ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ಪರಿವರ್ತಿಸಿ\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ಒಂದು ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್ ನಮಗೆ ಆಗಸ್ಟ್‌ನಿಂದ ಡಿಸೆಂಬರ್‌ವರೆಗೆ ಮಾತ್ರ ತಿಂಗಳ ಡೇಟಾ ಇದೆ ಎಂದು ನೆನಪಿಸುತ್ತದೆ. ರೇಖೀಯ ರೀತಿಯಲ್ಲಿ ನಿರ್ಣಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ನಾವು ಬಹುಶಃ ಹೆಚ್ಚು ಡೇಟಾ ಬೇಕಾಗಬಹುದು.\n" + "ಒಂದು ಸ್ಕ್ಯಾಟರ್ಪ್ಲಾಟ್ ನಮಗೆ ಆಗಸ್ಟ್ದಿಂದ ಡಿಸೆಂಬರ್ ತನಕ ಮಾತ್ರ ತಿಂಗಳ ಡೇಟಾ ಇರುವುದನ್ನು ಸಹಜವಾಗಿ ನೆನಪಿಸುತ್ತದೆ. ಲೀನಿಯರ್ ರೀತಿ ನಿರ್ಣಯಗಳನ್ನು ಬಿಡಿಸಲು ಹೆಚ್ಚು ಡೇಟಾ ಬೇಕಾಗಬಹುದು.\n" ] }, { @@ -448,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ನೋಡೋಣ ಇದರಲ್ಲಿ ಸಂಬಂಧವಿದೆಯೇ:\n" + "ನೋಡೋಣ ಇದರಲ್ಲಿ ಸಹಸಂಬಂಧವಿದೆಯೇ ಎಂದು:\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ಸಂಬಂಧವು ತುಂಬಾ ಸಣ್ಣದಾಗಿರುವಂತೆ ಕಾಣುತ್ತದೆ, ಆದರೆ ಇನ್ನೊಂದು ಹೆಚ್ಚು ಪ್ರಮುಖ ಸಂಬಂಧವಿದೆ - ಏಕೆಂದರೆ ಮೇಲಿನ ಚಿತ್ರದಲ್ಲಿ ಬೆಲೆ ಬಿಂದುಗಳು ಹಲವಾರು ವಿಭಿನ್ನ ಗುಂಪುಗಳನ್ನು ಹೊಂದಿವೆ ಎಂದು ತೋರುತ್ತದೆ. ಬೇರೆಯಾದ ಹಬ್ಬುಗಳ ವಿವಿಧ ಪ್ರಭೇದಗಳನ್ನು ತೋರಿಸುವ ಚಿತ್ರವನ್ನು ಮಾಡೋಣ:\n" + "ಸಂಬಂಧ ಕಡಿಮೆ ಇದೆ ಅನ್ನಿಸುತ್ತದೆ, ಆದರೆ ಇನ್ನೂ ಹೆಚ್ಚು ಮುಖ್ಯವಾದ ಸಂಬಂಧವೊಂದಿದೆ - ಏಕೆಂದರೆ ಮೇಲಾಗಿದ ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಬೆಲೆ ಬಿಂದುವುಗಳು ಹಲವು ವಿಭಿನ್ನ ಗುಚ್ಛಗಳನ್ನು ಹೊಂದಿವೆ ಎಂದು ಕಂಡುಬರುತ್ತದೆ. ಬೇರೆಯಾದ ಬೂದಕಾಯಿ ಪ್ರಭೇದಗಳನ್ನು ತೋರಿಸುವ ಪ್ಲಾಟ್ ಅನ್ನು ಮಾಡೋಣ:\n" ] }, { @@ -538,7 +538,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ಈ ಸಮಯದಲ್ಲಿ, ನಾವು ಕೇವಲ ಒಂದು ಪ್ರಕಾರ - **ಪೈ ಪ್ರಕಾರ** ಮೇಲೆ ಮಾತ್ರ ಗಮನಹರಿಸೋಣ.\n" + "ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಮಾತ್ರ ಒಂದು ಪ್ರಕಾರ - **ಪೈ ಟೈಪ್** ಮೇಲೆ ದೃಷ್ಠಿ ಸಾರಿ ಕೊಳ್ಳೋಣ.\n" ] }, { @@ -586,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ರೇಖೀಯ ರಿಗ್ರೆಷನ್\n", + "### ರೇಖೀಯ ರಿಗ್ರೇಶನ್\n", "\n", - "ನಾವು ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ Scikit Learn ಅನ್ನು ಬಳಸಲಿದ್ದೇವೆ:\n" + "ನಾವು ಲಿನಿಯರ್ ರಿಗ್ರೇಶನ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ Scikit Learn ಅನ್ನು ಬಳಸುತ್ತೇವೆ:\n" ] }, { @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಗುಣಾಂಕಗಳಿಂದ ರೇಖೆಯ ತಿರುವು ನಿರ್ಧರಿಸಬಹುದು:\n" + "ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಗುಣಾಂಕಗಳಿಂದ ರೇಖೆಯ ಸ್ತರವನ್ನು ನಿರ್ಧರಿಸಬಹುದು:\n" ] }, { @@ -693,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ನಾವು ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ಬೆಲೆ ಊಹಿಸಲು ಬಳಸಬಹುದು:\n" + "ನಾವು ತರಬೇತುಗೊಂಡ ಮಾದರಿಯನ್ನು ಬಲ ಪ್ರಿಡಿಕ್ಟ್ ಮಾಡಲು ಬಳಸಬಹುದು:\n" ] }, { @@ -722,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ಬಹುಪದ ರಿಗ್ರೆಷನ್\n", + "### ಬಹುಪದೀಯ ರೆಗ್ರೆಷನ್\n", "\n", - "ಕೆಲವೊಮ್ಮೆ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಫಲಿತಾಂಶಗಳ ನಡುವಿನ ಸಂಬಂಧ ಸ್ವಭಾವತಃ ರೇಖೀಯವಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಹಬ್ಬದ ಬೆಲೆಗಳು ಚಳಿಗಾಲದಲ್ಲಿ (ತಿಂಗಳು=1,2) ಹೆಚ್ಚು ಇರಬಹುದು, ನಂತರ ಬೇಸಿಗೆ (ತಿಂಗಳು=5-7) ಸಮಯದಲ್ಲಿ ಇಳಿಯಬಹುದು, ಮತ್ತು ನಂತರ ಮತ್ತೆ ಏರಬಹುದು. ರೇಖೀಯ ರಿಗ್ರೆಷನ್ ಈ ಸಂಬಂಧವನ್ನು ಸರಿಯಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಸಾಧ್ಯವಿಲ್ಲ.\n", + "ಕೆಲಸಾರಿಗೆ ಲಕ್ಷಣಗಳು ಮತ್ತು ಫಲಿತಾಂಶಗಳ ನಡುವಿನ ಸಂಬಂಧ ಸ್ವಾಭಾವಿಕವಾಗಿಯೇ ರೇಖೀಯವಲ್ಲದಿದೆ. ಉದಾಹರಣೆಗೆ, ಗಂಟುಮынҭқарದ ಬೆಲೆಗಳನ್ನು ಚಳಿಗಾಲದಲ್ಲಿ (ತಿಂಗಳು=1,2) ಹೆಚ್ಚು ಇರಬಹುದು, ನಂತರ ಬೇಸಿಗೆ (ತಿಂಗಳು=5-7) ಅವಧಿಯಲ್ಲಿ ಕಡಿಮೆಯಾಗುತ್ತದೆ, ಮತ್ತು ನಂತರ ಮತ್ತೆ ಏರುತ್ತದೆ. ರೇಖೀಯ ರೆಗ್ರೆಷನ್ ಈ ಸಂಬಂಧವನ್ನು ಸರಿಯಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಆಗುವುದಿಲ್ಲ.\n", "\n", - "ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಹೆಚ್ಚುವರಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸುವುದನ್ನು ಪರಿಗಣಿಸಬಹುದು. ಸರಳ ವಿಧಾನವೆಂದರೆ ಇನ್‌ಪುಟ್ ವೈಶಿಷ್ಟ್ಯಗಳಿಂದ ಬಹುಪದಗಳನ್ನು ಬಳಸುವುದು, ಇದರಿಂದ **ಬಹುಪದ ರಿಗ್ರೆಷನ್** ಆಗುತ್ತದೆ. ಸ್ಕಿಕಿಟ್ ಲರ್ನ್‌ನಲ್ಲಿ, ನಾವು ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬಹುಪದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪೂರ್ವಗಣನೆ ಮಾಡಬಹುದು: \n" + "ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಹೆಚ್ಚುವರಿ ಲಕ್ಷಣಗಳನ್ನು ಸೇರಿಸಲು ಪರಿಗಣಿಸಬಹುದು. ಸರಳ ಮಾರ್ಗ input ಲಕ್ಷಣಗಳಿಂದ ಬಹುಪದೀಯಗಳನ್ನು ಬಳಸಿ, ಇದರಿಂದ **ಬಹುಪದೀಯ ರೆಗ್ರೆಷನ್** ಉಂಟಾಗುತ್ತದೆ. ಸ್ಕಿಕಿಟ್ ಲರ್ನ್ ನಲ್ಲಿ, ನಾವು ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಬಳಸಿ ಬಹುಪದೀಯ ಲಕ್ಷಣಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪೂರ್ವ ಗಣನೆ ಮಾಡಬಹುದು:\n" ] }, { @@ -781,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### ಎನ್‌ಕೋಡಿಂಗ್ ವೈವಿಧ್ಯಗಳು\n", + "### ಎನ್ಕೋಡಿಂಗ್ ವಿಧಗಳು\n", "\n", - "ಆದರ್ಶ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಒಂದೇ ಮಾದರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ವಿಭಿನ್ನ ಕಂಬಳಿಯ ವೈವಿಧ್ಯಗಳ ಬೆಲೆಗಳನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡಲು ಬಯಸುತ್ತೇವೆ. ವೈವಿಧ್ಯವನ್ನು ಪರಿಗಣಿಸಲು, ಮೊದಲು ಅದನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಬೇಕಾಗುತ್ತದೆ, ಅಥವಾ **ಎನ್‌ಕೋಡ್** ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು ಹಲವಾರು ವಿಧಾನಗಳಿವೆ:\n", + "ಐಡಿಯಲ್ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ಒಂದೇ ಮಾದರಿಯನ್ನು ಉಪಯೋಗಿಸಿ ವಿಭಿನ್ನ ಕುರ್ಕುಷಿ ವಿಧಗಳ ಬೆಲೆಗಳನ್ನು ಊಹಿಸಲು ಬಯಸುತ್ತೇವೆ. ವಿಧವನ್ನು ಪರಿಗಣಿಸಲು, ಮೊದಲು ಅದನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಬೇಕಾಗುತ್ತದೆ, ಅಂದರೆ **ಎನ್ಕೋಡ್** ಮಾಡಬೇಕು. ಇದನ್ನು several ನಾನಾ ರೀತಿಯಲ್ಲಾಗಿಸಬಹುದು:\n", "\n", - "* ಸರಳ ಸಂಖ್ಯಾತ್ಮಕ ಎನ್‌ಕೋಡಿಂಗ್, ಇದು ವಿಭಿನ್ನ ವೈವಿಧ್ಯಗಳ ಟೇಬಲ್ ಅನ್ನು ನಿರ್ಮಿಸಿ, ನಂತರ ಆ ಟೇಬಲ್‌ನಲ್ಲಿ ವೈವಿಧ್ಯ ಹೆಸರನ್ನು ಸೂಚ್ಯಂಕದಿಂದ ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್‌ಗೆ ಉತ್ತಮ ಐಡಿಯಾ ಅಲ್ಲ, ಏಕೆಂದರೆ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಸೂಚ್ಯಂಕದ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು ಪರಿಗಣಿಸುತ್ತದೆ, ಮತ್ತು ಆ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವು ಬೆಲೆಯೊಂದಿಗೆ ಸಂಖ್ಯಾತ್ಮಕವಾಗಿ ಹೊಂದಾಣಿಕೆ ಹೊಂದಿರುವುದಿಲ್ಲ.\n", - "* ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡಿಂಗ್, ಇದು `Variety` ಕಾಲಮ್ ಅನ್ನು 4 ವಿಭಿನ್ನ ಕಾಲಮ್‌ಗಳ ಮೂಲಕ ಬದಲಾಯಿಸುತ್ತದೆ, ಪ್ರತಿ ವೈವಿಧ್ಯಕ್ಕೆ ಒಂದು ಕಾಲಮ್, ಅದು ನೀಡಲಾದ ಸಾಲು ಆ ವೈವಿಧ್ಯಕ್ಕೆ ಸೇರಿದರೆ 1 ಇರುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ 0 ಇರುತ್ತದೆ.\n", + "* ಸರಳ ಸಂಖ್ಯಾತ್ಮಕ ಎನ್ಕೋಡಿಂಗ್, ಇದು ವಿಭಿನ್ನ ವಿಧಗಳ ಟೇಬಲ್ ಅನ್ನು ರಚಿಸಿ, ನಂತರ ಆ ಟೇಬಲ್‌ನಲ್ಲಿನ ಸೂಚ್ಯಾಂಕದಿಂದ ವಿಧದ ಹೆಸರನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು ಲಿನಿಯರ್ ರೆಗ್ರೆಶನ್‌ಗೆ ಉತ್ತಮ ಉಪಾಯವಲ್ಲ, ಏಕೆಂದರೆ ಲಿನಿಯರ್ ರೆಗ್ರೆಶನ್ ಸೂಚ್ಯಂಕದ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವನ್ನು ಪರಿಗಣಿಸುತ್ತದೆ ಮತ್ತು ಆ ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯವು ಬೆಲೆಯೊಂದಿಗೆ ಸಂಖ್ಯಾತ್ಮಕವಾಗಿ ಸಂಬಂಧಿಸಿದೆಯೆಂದು ಸಾಧ್ಯತೆ ಕಡಿಮೆ.\n", + "* ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡಿಂಗ್, ಇದು `Variety` ಕಾಲಮ್ ಅನ್ನು 4 ವಿಭಿನ್ನ ಕಾಲಮ್‌ಗಳಾಗಿ ಬದಲಾಯಿಸುತ್ತದೆ, ಪ್ರತಿ ವಿಧಕ್ಕೆ ಒಂದು ಕಾಲಮ್, ತರವಾಗಿದ್ದ ಸಾಲಿಗೆ 1 ಮತ್ತು ಬೇರೆ ವೇಳೆ 0 ಇರುತ್ತದೆ.\n", "\n", - "ಕೆಳಗಿನ ಕೋಡ್ ಒಂದು ವೈವಿಧ್ಯವನ್ನು ಒನ್-ಹಾಟ್ ಎನ್‌ಕೋಡ್ ಮಾಡುವ ವಿಧಾನವನ್ನು ತೋರಿಸುತ್ತದೆ:\n" + "ಕೆಳಗಿನ ಕೋಡ್ ನಮಗೆ ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡ್ ಮಾಡುವ ವಿಧಾನವನ್ನು ತೋರಿಸುತ್ತದೆ:\n" ] }, { @@ -944,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ವೈವಿಧ್ಯದಲ್ಲಿ ರೇಖೀಯ ರಿಗ್ರೆಷನ್\n", + "### ವೈವಿಧ್ಯತೆಯ ಮೇಲೆ ರೇಖೀಯ ರಿಗ್ರೆಶನ್\n", "\n", - "ನಾವು ಈಗ ಮೇಲಿನ ಅದೇ ಕೋಡ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಆದರೆ `DayOfYear` ಬದಲು ನಾವು ನಮ್ಮ ಒನ್-ಹಾಟ್-ಎನ್‌ಕೋಡ್ ಮಾಡಿದ ವೈವಿಧ್ಯವನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ಬಳಸುತ್ತೇವೆ:\n" + "ನಾವು ಈಗ ಮೇಲಿನ ಅದೇ ಕೋಡ್ ಬಳಸಲಿದ್ದೇವೆ, ಆದರೆ `DayOfYear` ಬದಲು ನಾವು ನಮ್ಮ ಒನ್-ಹಾಟ್-ಎન્કೋಡಡ್ ವೈವಿಧ್ಯತೆಯನ್ನು ಇನ್‌ಪುಟ್ ಆಗಿ ಬಳಸುತ್ತೇವೆ:\n" ] }, { @@ -994,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ನಾವು ಅದೇ ರೀತಿಯಲ್ಲಿ ಇತರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಸಂಖ್ಯಾತ್ಮಕ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ `Month` ಅಥವಾ `DayOfYear`:\n" + "ನಾವು ಅದೇ ರೀತியில் ಇತರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು `ತಿಂಗಳು` ಅಥವಾ `ವರ್ಷದದಿನ` ಎಂಬ ಸಂಖ್ಯಾತ್ಮಕ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಬಹುದು:\n" ] }, { @@ -1025,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ಬಹುಪದ ರಿಗ್ರೆಷನ್\n", + "### ಪೊಳಿಮೋನಿಯಲ್ ಪ್ರತigay\n", "\n", - "ಬಹುಪದ ರಿಗ್ರೆಷನ್ ಅನ್ನು ಒನ್-ಹಾಟ್-ಎನ್‌ಕೋಡ್ ಮಾಡಲಾದ ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳೊಂದಿಗೆ ಕೂಡ ಬಳಸಬಹುದು. ಬಹುಪದ ರಿಗ್ರೆಷನ್ ತರಬೇತಿಗೆ ಬೇಕಾದ ಕೋಡ್ ಮೂಲತಃ ನಾವು ಮೇಲ್ನೋಟದಲ್ಲಿ ನೋಡಿದಂತೆಯೇ ಇರುತ್ತದೆ.\n" + "ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡ್ ಮಾಡಿದ ವರ್ಗೀಕೃತ ಲಕ್ಷಣಗಳೊಂದಿಗೆ ಕೂಡ ಪೊಳಿಮೋನಿಯಲ್ ಪ್ರತigay ಬಳಸದಬಹುದು. ಪೊಳಿಮೋನಿಯಲ್ ಪ್ರತigay ತರಬೇತುದಾನ ಮಾಡುವ ಕೋಡ್ ಸಾಮಾನ್ಯವಾಗಿ ಮೇಲ್ಕಂಡಂತೆ ಇರುತ್ತದೆ.\n" ] }, { @@ -1074,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯಿಗಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n" + "---\n\n\n**ನಿರಾಕರಣ**: \nಈ ದಾಖಲೆಯನ್ನು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಗೆ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೆಗೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ತಪ್ಪು ಅರ್ಥಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿನ ಮೂಲ ದಾಖಲೆ ಅಧಿಕೃತ ಮೂಲವಾಗಿದ್ದು ಪರಿಗಣಿಸಬೇಕಾಗಿದೆ. ಪ್ರಮುಖ ಮಾಹಿತಿ සඳහා ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ಬಳಕೆಯ ತಪ್ಪುಜ್ಞಾನ ಅಥವಾ ತಪ್ಪು ಅರ್ಥಗಳಿಗಾಗಿ ನಾವು ಜವಾಬ್ದಾರಿಯಲ್ಲ.\n\n" ] } ], @@ -1104,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-12-19T16:20:25+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "kn" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ml/.co-op-translator.json b/translations/ml/.co-op-translator.json index fc33ab8c72..5d4c4d4240 100644 --- a/translations/ml/.co-op-translator.json +++ b/translations/ml/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ml" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-12-19T13:36:10+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:33:22+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ml" }, @@ -90,8 +90,8 @@ "language_code": "ml" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:40:15+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:32:48+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ml" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ml" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:29:23+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ml" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-12-19T14:05:02+00:00", diff --git a/translations/ml/1-Introduction/4-techniques-of-ML/README.md b/translations/ml/1-Introduction/4-techniques-of-ML/README.md index 6cf7df42c6..184b125a68 100644 --- a/translations/ml/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ml/1-Introduction/4-techniques-of-ML/README.md @@ -1,125 +1,125 @@ -# മെഷീൻ ലേണിങ്ങിന്റെ സാങ്കേതിക വിദ്യകൾ +# മെഷീൻ ലേണിംഗിന്റെ സാങ്കേതികങ്ങൾ -മെഷീൻ ലേണിംഗ് മോഡലുകൾ നിർമ്മിക്കുന്നതും ഉപയോഗിക്കുന്നതും പരിപാലിക്കുന്നതും, അവ ഉപയോഗിക്കുന്ന ഡാറ്റയും, മറ്റ് പല വികസന പ്രവൃത്തികളിൽ നിന്നുള്ളവയിൽ നിന്ന് വളരെ വ്യത്യസ്തമായ പ്രക്രിയയാണ്. ഈ പാഠത്തിൽ, നാം ഈ പ്രക്രിയയെ വിശദീകരിക്കുകയും നിങ്ങൾ അറിയേണ്ട പ്രധാന സാങ്കേതിക വിദ്യകൾ രേഖപ്പെടുത്തുകയും ചെയ്യും. നിങ്ങൾക്ക്: +മെഷീൻ ലേണിംഗ് മാതൃകകൾ നിർമ്മിക്കുകയും ഉപയോഗിക്കുകയും പരിപാലിക്കുകയും ചെയ്യുന്നതിനുള്ള പ്രക്രിയ മറ്റ് പല വികസന പ്രവാഹങ്ങളേക്കാൾ വളരെ വ്യത്യസ്തമാണ്. ഈ പാഠത്തിൽ, നാം പ്രക്രിയയെ നിഗൂഢമയമാക്കാതെ തുറന്നുകാട്ടുകയും നിങ്ങൾ അറിയേണ്ട പ്രധാന സാങ്കേതികങ്ങൾ വിശദീകരിക്കുകയും ചെയ്യും. നിങ്ങൾ ചെയ്യും: -- മെഷീൻ ലേണിംഗിന്റെ അടിസ്ഥാന പ്രക്രിയകൾ ഉയർന്ന തലത്തിൽ മനസ്സിലാക്കാം. -- 'മോഡലുകൾ', 'ഭാവനകൾ', 'പരിശീലന ഡാറ്റ' പോലുള്ള അടിസ്ഥാന ആശയങ്ങൾ അന്വേഷിക്കാം. +- മെഷീൻ ലേണിംഗിന്റെ അടിസ്ഥാനം 이해ിക്കുക. +- ‘മോഡലുകൾ’, ‘പ്രസിദ്ധീകരണങ്ങൾ’, ‘പരിശീലന ഡാറ്റ’ പോലുള്ള അടിസ്ഥാന ആശയങ്ങൾ പഠിക്കുക. ## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 ഈ പാഠം വിശദീകരിക്കുന്ന ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്കുചെയ്ത് ഈ പാഠം സംബന്ധിച്ച ഒരു ലഘു വീഡിയോ കാണുക. ## പരിചയം -ഉയർന്ന തലത്തിൽ, മെഷീൻ ലേണിംഗ് (ML) പ്രക്രിയകൾ സൃഷ്ടിക്കുന്ന കലയിൽ പല ഘട്ടങ്ങൾ ഉൾപ്പെടുന്നു: +ഉയർന്ന തലത്തിൽ, മെഷീൻ ലേണിംഗ് (ML) പ്രക്രിയ സൃഷ്ടിക്കുന്ന കരുകൈയെ നിരവധി പടികളിൽ സങ്കരിച്ചിരിക്കുന്നു: -1. **ചോദ്യമൊരുക്കുക**. മിക്ക ML പ്രക്രിയകളും ഒരു ലളിതമായ നിബന്ധനാപരമായ പ്രോഗ്രാമോ നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയ എഞ്ചിനോ മറുപടി നൽകാൻ കഴിയാത്ത ഒരു ചോദ്യമൊരുക്കുന്നതിൽ ആരംഭിക്കുന്നു. ഈ ചോദ്യങ്ങൾ സാധാരണയായി ഡാറ്റാ ശേഖരണത്തെ അടിസ്ഥാനമാക്കിയുള്ള പ്രവചനങ്ങളുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. -2. **ഡാറ്റ ശേഖരിക്കുകയും തയ്യാറാക്കുകയും ചെയ്യുക**. നിങ്ങളുടെ ചോദ്യത്തിന് മറുപടി നൽകാൻ, നിങ്ങൾക്ക് ഡാറ്റ ആവശ്യമുണ്ട്. നിങ്ങളുടെ ഡാറ്റയുടെ ഗുണമേന്മയും, ചിലപ്പോൾ, അളവും, നിങ്ങളുടെ പ്രാഥമിക ചോദ്യത്തിന് എത്രത്തോളം നല്ല മറുപടി നൽകാമെന്ന് നിർണ്ണയിക്കും. ഡാറ്റ ദൃശ്യവൽക്കരണം ഈ ഘട്ടത്തിന്റെ ഒരു പ്രധാന ഭാഗമാണ്. ഈ ഘട്ടത്തിൽ ഡാറ്റയെ പരിശീലനവും പരിശോധനയും എന്നിങ്ങനെ വിഭജിച്ച് മോഡൽ നിർമ്മിക്കാനും ഉൾപ്പെടുന്നു. -3. **പരിശീലന രീതി തിരഞ്ഞെടുക്കുക**. നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, ഡാറ്റയെ മികച്ച രീതിയിൽ പ്രതിഫലിപ്പിക്കുകയും അതിനെതിരെ കൃത്യമായ പ്രവചനങ്ങൾ നടത്തുകയും ചെയ്യാൻ മോഡൽ പരിശീലിപ്പിക്കാൻ നിങ്ങൾ എങ്ങനെ പരിശീലനം നൽകണമെന്ന് തിരഞ്ഞെടുക്കണം. ഇത് നിങ്ങളുടെ ML പ്രക്രിയയിലെ പ്രത്യേക വിദഗ്ധത ആവശ്യമായ ഭാഗമാണ്, കൂടാതെ പലപ്പോഴും വലിയ പരീക്ഷണങ്ങൾ നടത്തേണ്ടതും. -4. **മോഡൽ പരിശീലിപ്പിക്കുക**. നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, ഡാറ്റയിലെ മാതൃകകൾ തിരിച്ചറിയാൻ വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് മോഡൽ പരിശീലിപ്പിക്കും. മോഡൽ ചില ഭാഗങ്ങളിൽ കൂടുതൽ പ്രാധാന്യം നൽകാൻ ക്രമീകരിക്കാവുന്ന ആന്തരിക ഭാരങ്ങൾ ഉപയോഗിക്കാം. -5. **മോഡൽ വിലയിരുത്തുക**. നിങ്ങൾ ശേഖരിച്ച ഡാറ്റയിൽ നിന്ന് മുമ്പ് കാണാത്ത ഡാറ്റ (പരിശോധന ഡാറ്റ) ഉപയോഗിച്ച് മോഡൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് പരിശോധിക്കും. -6. **പരാമീറ്റർ ട്യൂണിംഗ്**. മോഡലിന്റെ പ്രകടനത്തെ അടിസ്ഥാനമാക്കി, മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ആൽഗോരിതങ്ങളുടെ പെരുമാറ്റം നിയന്ത്രിക്കുന്ന വ്യത്യസ്ത പരാമീറ്ററുകൾ ഉപയോഗിച്ച് പ്രക്രിയ വീണ്ടും നടത്താം. -7. **പ്രവചനം നടത്തുക**. പുതിയ ഇൻപുട്ടുകൾ ഉപയോഗിച്ച് മോഡലിന്റെ കൃത്യത പരിശോധിക്കുക. +1. **ചോദ്യത്തെ തീരുമാനിക്കുക**. അധികം ML പ്രക്രിയകൾ ലളിതമായ ശേഖരണപരമായ പ്രോഗ്രാം അല്ലെങ്കിൽ നിയമം അടിസ്ഥാനമാക്കിയുള്ള എന്‍ജിന് ഉപയോഗിച്ച് മറുപടി നൽകാൻ കഴിയാത്ത ഒരു ചോദ്യം ചോദിച്ച് തുടങ്ങുന്നു. ഈ ചോദ്യങ്ങൾ പലപ്പോഴും ഒരു ഡാറ്റാ സമുച്ചയത്തിന്റെ അടിസ്ഥാനത്തിലാണ് പ്രതീക്ഷകൾ സംബന്ധിച്ചുള്ളത്. +2. **ഡാറ്റ ശേഖരിക്കുകയും തയ്യാറാക്കുകയും ചെയ്യുക**. നിങ്ങളുടെ ചോദ്യത്തിന് മറുപടി നൽകാൻ, നിങ്ങൾക്ക് ഡാറ്റ വേണ്ടിവരും. ഡാറ്റയുടെ ഗുണനിലവാരവും ചിലപ്പോൾ അളവും, തുടക്ക ചോദ്യത്തിന് എത്ര നന്നായി മറുപടി നൽകാമെന്നും നിർണ്ണയിക്കും. ഡാറ്റ വിന്യാസം ഈ ഘട്ടത്തിൽ പ്രധാനമാണ്. ഈ ഘട്ടത്തിൽ മോഡൽ നിർമ്മിക്കാൻ ഡാറ്റ പരിശീലനവും പരിശോധനയുമായി വിഭജിക്കുന്നതും ഉൾപ്പെടുന്നു. +3. **പരിശീലന രീതി തിരഞ്ഞെടുക്കുക**. നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, നിങ്ങൾക്ക് മോഡൽ പരിശീലിപ്പിക്കാൻ ഏറ്റവും തക്ക രീതിയെടുത്തു തിരഞ്ഞെടുക്കണം, അതിലൂടെ ഡാറ്റയെ മികച്ചതായ രൂപത്തിൽ പ്രതിഫലിപ്പിച്ച് ശരിയായ പ്രവചനങ്ങൾ നടത്താൻ കഴിയും. ഈ ഭാഗം മിഷീൻ ലേണിംഗ് പ്രക്രിയയിൽ പ്രത്യേക അനുഭവശേഷി ആവശ്യപ്പെടുന്നു, കൂടാതെ പലപ്പോഴും നിരവധി പരീക്ഷണങ്ങൾ ആവശ്യമാണ്. +4. **മോഡൽ പരിശീലിപ്പിക്കുക**. നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, വ്യത്യസ്ത ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് ഡാറ്റയിലെ മാതൃകകൾ തിരിച്ചറിഞ്ഞ് മോഡൽ പരിശീലിപ്പിക്കും. മോഡൽ കൂടുതൽ മെച്ചപ്പെട്ട മോഡൽ സൃഷ്ടിക്കാൻ ചില ഡാറ്റ ഭാഗങ്ങൾക്കു പ്രാധാന്യം നൽകാൻ അകത്തെ ഭാരം ക്രമീകരിക്കാം. +5. **മോഡൽ വിലയിരുത്തുക**. നമുക്ക് മുമ്പ് കാണാത്ത ഡാറ്റകള്‍ (പരിശോധന ഡാറ്റ) ഉപയോഗിച്ച് മോഡൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് പരിശോധിക്കും. +6. **പാരാമീറ്റർ ട്യൂണിംഗ്**. നിങ്ങളുടെ മോഡലിന്റെ പ്രകടനത്തെ ആശ്രയിച്ച്, മോഡൽ പരിശീലിപ്പിക്കാനായി ഉപയോഗിക്കുന്ന ആൽഗോരിതങ്ങളുടെ പെരുമാറ്റം നിയന്ത്രിക്കുന്ന വ്യത്യസ്ത പാരാമീറ്ററുകൾ ഉപയോഗിച്ച് പ്രക്രിയ വീണ്ടും നടത്താം. +7. **പ്രവചനം നടത്തുക**. പുതിയ ഇൻപുട്ടുകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ മോഡലിന്റെ കൃത്യത പരിശോധിക്കുക. -## ഏത് ചോദ്യമാണ് ചോദിക്കേണ്ടത് +## ചോദ്യം എങ്ങനെ ചോദിക്കണം -കമ്പ്യൂട്ടറുകൾ ഡാറ്റയിൽ മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തുന്നതിൽ പ്രത്യേകമായി നൈപുണ്യമുള്ളവയാണ്. നിബന്ധനാപരമായ നിയമങ്ങൾ അടിസ്ഥാനമാക്കിയ എഞ്ചിൻ സൃഷ്ടിച്ച് എളുപ്പത്തിൽ മറുപടി നൽകാൻ കഴിയാത്ത ഒരു ഡൊമെയ്ൻ സംബന്ധിച്ച ചോദ്യങ്ങൾ ഗവേഷകർക്ക് ഇത് വളരെ സഹായകരമാണ്. ഉദാഹരണത്തിന്, ഒരു ആക്ച്വറിയൽ ജോലി നൽകിയാൽ, ഒരു ഡാറ്റാ സയന്റിസ്റ്റ് പുകവലി ചെയ്യുന്നവരും പുകവലി ചെയ്യാത്തവരും മരണനിരക്കുകൾക്കായി കൈകൊണ്ട നിയമങ്ങൾ നിർമ്മിക്കാൻ കഴിയും. +കമ്പ്യൂട്ടറുകൾ ഡാറ്റയിൽ മറഞ്ഞിരിക്കുന്ന മാതൃകകൾ കണ്ടെത്തുന്നതിൽ വളരെ കഴിവുള്ളവയാണ്. ഇത് ഒരു നിബന്ധന അടിസ്ഥാനമാക്കിയുള്ള നിയമങ്ങൾ നിർമ്മിച്ച് എളുപ്പത്തിൽ മറുപടി നൽകാനാവാത്ത വിഷയങ്ങളിലുള്ള ഗവേഷകരെ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ഡാറ്റാ ശാസ്ത്രജ്ഞൻ പുകയുന്നവരും പുകവലി ചെയ്യാത്തവരും തമ്മിലുള്ള മരണാനുപാതത്തെക്കുറിച്ച് കയ്യാൽ നിർമ്മിച്ചതായ നിയമങ്ങൾ രൂപപ്പെടുത്താൻ കഴിയും. -എന്നാൽ, പല മറ്റ് വ്യത്യസ്ത ഘടകങ്ങൾ പരിഗണിക്കുമ്പോൾ, ഒരു ML മോഡൽ മുൻകാല ആരോഗ്യ ചരിത്രത്തെ അടിസ്ഥാനമാക്കി ഭാവിയിലെ മരണനിരക്കുകൾ പ്രവചിക്കാൻ കൂടുതൽ കാര്യക്ഷമമാകാം. ഒരു സന്തോഷകരമായ ഉദാഹരണം, ഒരു നിശ്ചിത സ്ഥലത്ത് ഏപ്രിൽ മാസത്തെ കാലാവസ്ഥ പ്രവചനങ്ങൾ latitude, longitude, കാലാവസ്ഥ മാറ്റം, സമുദ്രത്തിന് സമീപം, ജെറ്റ് സ്ട്രീം മാതൃകകൾ എന്നിവ ഉൾപ്പെടുന്ന ഡാറ്റയുടെ അടിസ്ഥാനത്തിൽ നിർമിക്കുന്നത് ആകാം. +പല വ്യത്യസ്ത വേരിയബ്രുകൾ ചോദ്യം കൂട്ടുമ്പോൾ, പഴയ ആരോഗ്യചരിത്രത്തെ അടിസ്ഥാനമാക്കി ഭാവി മരണാനുപാതങ്ങൾ പ്രവചിക്കാൻ മെഷീൻ ലേണിംഗ് മോഡൽ കൂടുതൽ കാര്യക്ഷമമാകാം. ഒരു കൂടുതൽ സന്തോഷജനകമായ ഉദാഹരണം എത്രത്തോളം, ഏപ്രിൽ മാസം ഒരു നിശ്ചിത സ്ഥലത്ത് കാലാവസ്ഥാ പ്രവചനങ്ങൾ latitude, longitude, കാലാവസ്ഥ മാറ്റം, സമുദ്രത്തിൻറെ അടുത്തുള്ള സ്ഥലം, ജെറ്റ് സ്റ്റ്രീം മാതൃകകൾ തുടങ്ങിയവ ഉപയോഗിച്ച് നടത്തുക. -✅ കാലാവസ്ഥ മോഡലുകളെക്കുറിച്ചുള്ള ഈ [സ്ലൈഡ് ഡെക്ക്](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) കാലാവസ്ഥ വിശകലനത്തിൽ ML ഉപയോഗിക്കുന്നതിനുള്ള ചരിത്രപരമായ കാഴ്ചപ്പാട് നൽകുന്നു. +✅ കാലാവസ്ഥ മോഡലുകൾ സംബന്ധിച്ച ഈ [സ്ലൈഡ് ഡെക്ക്](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ML ഉപയോഗത്തിന്റെ ഈതിഹാസപരമായ കാഴ്‌ചപ്പാട് നൽകുന്നു. -## നിർമ്മാണത്തിന് മുമ്പുള്ള പ്രവർത്തനങ്ങൾ +## മുൻകൂട്ടി ചെയേണ്ട പ്രവർത്തനങ്ങൾ -നിങ്ങളുടെ മോഡൽ നിർമ്മിക്കാൻ തുടങ്ങുന്നതിന് മുമ്പ്, നിങ്ങൾ പൂർത്തിയാക്കേണ്ട നിരവധി പ്രവർത്തനങ്ങൾ ഉണ്ട്. നിങ്ങളുടെ ചോദ്യത്തെ പരീക്ഷിക്കുകയും മോഡലിന്റെ പ്രവചനങ്ങളെ അടിസ്ഥാനമാക്കി ഒരു ഹിപോത്തസിസ് രൂപപ്പെടുത്തുകയും ചെയ്യാൻ, നിങ്ങൾക്ക് പല ഘടകങ്ങളും തിരിച്ചറിയുകയും ക്രമീകരിക്കുകയും വേണം. +മോഡൽ നിർമ്മിക്കാൻ തുടങ്ങുന്നതിനുമുമ്പ്, നിങ്ങൾ പൂർത്തീകരിക്കേണ്ട പല പ്രവർത്തനങ്ങളുണ്ട്. നിങ്ങളുടെ ചോദ്യത്തെ പരിശോധിച്ചും മോഡലിന്റെ പ്രവചനങ്ങൾ അടിസ്ഥാനമാക്കി ഒരു ഹ്രസ്വ സ്വപ്നം രൂപീകരിച്ചും, ചില ഘടകങ്ങൾ തിരിച്ചറിയാനും ക്രമീകരിക്കാനും നിങ്ങൾ ഇതിനകം തയ്യാറാവണം. ### ഡാറ്റ -നിങ്ങളുടെ ചോദ്യത്തിന് ഏതെങ്കിലും ഉറപ്പോടെ മറുപടി നൽകാൻ, ശരിയായ തരം ഡാറ്റയുടെ നല്ല അളവ് ആവശ്യമാണ്. ഈ ഘട്ടത്തിൽ നിങ്ങൾ ചെയ്യേണ്ട രണ്ട് കാര്യങ്ങളുണ്ട്: +ചോദ്യത്തിന് ഒരുപഴും ഉറപ്പോടെ മറുപടി നൽകാൻ, ശരിയായ തരത്തിലുള്ള മെച്ചപ്പെട്ട രീതിയിൽ പലമാത്രയിലുള്ള ഡാറ്റ ഉണ്ടായിരിക്കണം. നിങ്ങൾ ചെയ്യേണ്ട രണ്ടു കാര്യങ്ങൾ: -- **ഡാറ്റ ശേഖരിക്കുക**. മുമ്പത്തെ പാഠത്തിൽ ഡാറ്റ വിശകലനത്തിൽ നീതിയുള്ളതിനെക്കുറിച്ച് പഠിച്ചതു ഓർക്കുക, ശ്രദ്ധയോടെ ഡാറ്റ ശേഖരിക്കുക. ഈ ഡാറ്റയുടെ ഉറവിടങ്ങളെക്കുറിച്ച്, അതിൽ ഉള്ള സ്വാഭാവിക പാകങ്ങൾക്കുറിച്ച് ജാഗ്രത പുലർത്തുക, അതിന്റെ ഉറവിടം രേഖപ്പെടുത്തുക. -- **ഡാറ്റ തയ്യാറാക്കുക**. ഡാറ്റ തയ്യാറാക്കൽ പ്രക്രിയയിൽ പല ഘട്ടങ്ങളുണ്ട്. വ്യത്യസ്ത ഉറവിടങ്ങളിൽ നിന്നുള്ള ഡാറ്റ സംയോജിപ്പിക്കുകയും സാധാരണവത്കരിക്കുകയും ചെയ്യേണ്ടതുണ്ടാകാം. ഡാറ്റയുടെ ഗുണമേന്മയും അളവും മെച്ചപ്പെടുത്താൻ സ്ട്രിംഗുകൾ നമ്പറുകളായി മാറ്റൽ പോലുള്ള വിവിധ രീതികൾ ഉപയോഗിക്കാം ([Clustering](../../5-Clustering/1-Visualize/README.md) പാഠത്തിൽ ചെയ്തതുപോലെ). നിങ്ങൾക്ക് പുതിയ ഡാറ്റ സൃഷ്ടിക്കേണ്ടതും ഉണ്ടാകാം, മൗലിക ഡാറ്റയെ അടിസ്ഥാനമാക്കി ([Classification](../../4-Classification/1-Introduction/README.md) പാഠത്തിൽ ചെയ്തതുപോലെ). ഡാറ്റ ശുദ്ധീകരിക്കുകയും തിരുത്തുകയും ചെയ്യാം ([Web App](../../3-Web-App/README.md) പാഠത്തിന് മുമ്പ് ചെയ്യുന്നതുപോലെ). അവസാനം, നിങ്ങളുടെ പരിശീലന സാങ്കേതിക വിദ്യകൾ അനുസരിച്ച് ഡാറ്റയെ യാദൃച്ഛികമാക്കുകയും ഷഫിൾ ചെയ്യുകയും ചെയ്യേണ്ടതുണ്ടാകാം. +- **ഡാറ്റ ശേഖരിക്കുക**. മുമ്പത്തെ പാഠത്തിലുള്ള ഫയർനെസ്സ് (നീതിസമ്പന്നത) ശ്രദ്ധയിൽ വെച്ച്, ശ്രദ്ധാപൂർവ്വം ഡാറ്റ ശേഖരിക്കുക. ഈ ഡാറ്റയുടെ ഉറവിടങ്ങൾ, അവയിൽ ഉണ്ടായേക്കാവുന്ന സ്വാഭാവിക പരിഷ്ക്കാരങ്ങൾ എന്നിവ ബോധ്യപ്പെടുത്തുകയും അതിന്റെ ഉത്ഭവം രേഖപ്പെടുത്തുകയും ചെയ്യുക. +- **ഡാറ്റ തയ്യാറാക്കുക**. ഡാറ്റ തയ്യാറാക്കൽ പ്രക്രിയയിൽ പല ഘട്ടങ്ങൾ ഉണ്ട്. ഡാറ്റ വ്യത്യസ്ത ഉറവിടങ്ങളിൽ നിന്നാണെങ്കിൽ അത് ഒത്തുചേർത്ത് സാധാരണ രൂപത്തിലാക്കേണ്ടതുണ്ടാകാം. ഡാറ്റയുടെ ഗുണനിലവാരവും അളവും മെച്ചപ്പെടുത്താൻ സ്ട്രിംഗ്-നമ്പർ പരിവർത്തനം പോലുള്ള വിവിധ രീതികൾ ഉപയോഗിയ്ക്കാം ([ക്ലസ്റ്ററിംഗിൽ](../../5-Clustering/1-Visualize/README.md) ചെയ്തതു പോലെ). മൂല ഡാറ്റയെ അടിസ്ഥാനമാക്കി പുതിയത് സൃഷ്ടിക്കാം ([ക്ലാസിഫിക്കേഷനിൽ](../../4-Classification/1-Introduction/README.md) തുടങ്ങിയതു പോലെ). ഡാറ്റ വൃത്തികെട്ടതും തിരുത്തലുകൾ ചെയ്യേണ്ടതുമായി, പ്രത്യേകിച്ച് [വെബ് ആപ്പ്](../../3-Web-App/README.md) പാഠത്തിനു മുമ്പ് ചെയ്യുന്നു. അവസാനം, നിങ്ങൾക്ക് ഡാറ്റയെ അണിയിച്ച മൂലം റാന്റമൈസ് ചെയ്ത് ഷഫിൾ ചെയ്‌തേക്കാം, നിങ്ങളുടെ പരിശീലന സാങ്കേതികതയെ ആശ്രയിച്ച്. -✅ ഡാറ്റ ശേഖരിക്കുകയും പ്രോസസ്സ് ചെയ്യുകയും ചെയ്ത ശേഷം, അതിന്റെ രൂപം നിങ്ങളുടെ ഉദ്ദേശിച്ച ചോദ്യത്തിന് മറുപടി നൽകാൻ അനുയോജ്യമാണോ എന്ന് പരിശോധിക്കാൻ ഒരു നിമിഷം എടുത്തു നോക്കുക. നിങ്ങളുടെ നൽകിയ ജോലിയിൽ ഡാറ്റ നല്ല പ്രകടനം കാണിക്കില്ലായിരുന്നോ എന്ന് ഞങ്ങൾ [Clustering](../../5-Clustering/1-Visualize/README.md) പാഠങ്ങളിൽ കണ്ടെത്തുന്നു! +✅ ഡാറ്റ ശേഖരിക്കുകയും പ്രോസസ്സ് ചെയ്തതിനു ശേഷം, അത് നിങ്ങളുടെ പ്രതീക്ഷിച്ച ചോദ്യത്തെ സവാളിക്കാന്‍ അനുയോജ്യമാണ് എന്നോ ദൃശ്യമാക്കാൻ ഒരു നിമിഷം എടുക്കുക. ഡാറ്റ നിങ്ങൾക്കുള്ള പ്രയോഗത്തിന് ശരിയായ പ്രകടനകൃത്യത സംഭാവന ചെയ്യാതിരിക്കാം, [ക്ലസ്റ്ററിംഗിൽ](../../5-Clustering/1-Visualize/README.md) നാം കണ്ടെത്തിയതു പോലെ! -### ഫീച്ചറുകളും ലക്ഷ്യവും +### സവിശേഷതകളും ലക്ഷ്യവും -ഒരു [ഫീച്ചർ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) നിങ്ങളുടെ ഡാറ്റയുടെ അളക്കാവുന്ന സ്വഭാവമാണ്. പല ഡാറ്റാസെറ്റുകളിലും ഇത് 'തീയതി', 'വലിപ്പം', 'നിറം' പോലുള്ള കോളം തലക്കെട്ടായി പ്രകടിപ്പിക്കപ്പെടുന്നു. നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ, സാധാരണയായി കോഡിൽ `X` ആയി പ്രതിനിധീകരിക്കപ്പെടുന്നു, മോഡൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഇൻപുട്ട് വേരിയബിൾ ആണ്. +[സവിശേഷത](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) എന്നാണ് ഡാറ്റയുടെ അളവുകളായ ഗുണം. പല ഡാറ്റാസെറ്റുകളിൽ ഇത് 'തീയതി', 'വലുപ്പം' അല്ലെങ്കിൽ 'നിറം' പോലുള്ള കോളം ഹെഡിങ്ങുകളായി പ്രത്യക്ഷപ്പെടും. നിങ്ങളുടെ സവിശേഷത വേരിയബിൾ, സാധാരണയായി കോഡിൽ `X` ആയി പ്രതിനിധാനം ചെയ്‌തിട്ടുണ്ട്, മോഡൽ തയ്യാറാക്കാൻ ഉപയോഗിക്കുന്ന ഇൻപുട്ട് വേരിയബിൾ ആണ്. -ലക്ഷ്യം നിങ്ങൾ പ്രവചിക്കാൻ ശ്രമിക്കുന്ന വസ്തുവാണ്. ലക്ഷ്യം സാധാരണയായി കോഡിൽ `y` ആയി പ്രതിനിധീകരിക്കപ്പെടുന്നു, ഇത് നിങ്ങളുടെ ഡാറ്റയിൽ നിന്നുള്ള ചോദ്യത്തിന് നിങ്ങൾ ചോദിക്കുന്ന മറുപടിയാണ്: ഡിസംബർ മാസത്തിൽ, ഏത് **നിറത്തിലുള്ള** പംപ്കിനുകൾ ഏറ്റവും വിലകുറഞ്ഞവ ആയിരിക്കും? സാൻ ഫ്രാൻസിസ്കോയിൽ, ഏത് പ്രദേശങ്ങളിൽ മികച്ച റിയൽ എസ്റ്റേറ്റ് **വില** ഉണ്ടാകും? ചിലപ്പോൾ ലക്ഷ്യം ലേബൽ ആട്രിബ്യൂട്ട് എന്നും വിളിക്കുന്നു. +ലക്ഷ്യം (ടാർഗറ്റ്) നിങ്ങൾ പ്രവചിക്കാനാഗ്രഹിക്കുന്ന ഒന്നാണ്. സാധാരണ കോഡിൽ `y` ആയി പ്രതിനിധാനം ചെയ്‌തിരിക്കുന്ന ടാർഗറ്റ്, നിങ്ങളുടെ ഡാറ്റയിൽ നിന്ന് ചോദിക്കാനിരിക്കുന്ന ചോദ്യത്തിന് ഉത്തരം ആണ്: ഡിസംബറിൽ, ഏതു **നിറത്തിലുള്ള** കുംബളി ഏറ്റവും വിലക്കുറവായിരിക്കും? സാൻ ഫ്രാൻസിസ്കോയിൽ ഏതു പ്രദേശങ്ങൾ മികച്ച reaൽ എസ്റ്റേറ്റ് **വില** ഉണ്ടാകും? ടാർഗറ്റിനെ ലേബൽ ആട്രിബ്യൂട്ട് എന്നും വിളിക്കുന്നത് കാണാം. -### നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ തിരഞ്ഞെടുക്കൽ +### നിങ്ങളുടെ സവിശേഷത വേരിയബിൾ തിരഞ്ഞെടുക്കുക -🎓 **ഫീച്ചർ സെലക്ഷനും ഫീച്ചർ എക്സ്ട്രാക്ഷനും** മോഡൽ നിർമ്മിക്കുമ്പോൾ ഏത് വേരിയബിൾ തിരഞ്ഞെടുക്കണമെന്ന് നിങ്ങൾ എങ്ങനെ അറിയും? ഏറ്റവും മികച്ച പ്രകടനം നൽകുന്ന മോഡലിനായി ശരിയായ വേരിയബിളുകൾ തിരഞ്ഞെടുക്കാൻ നിങ്ങൾ ഫീച്ചർ സെലക്ഷൻ അല്ലെങ്കിൽ ഫീച്ചർ എക്സ്ട്രാക്ഷൻ പ്രക്രിയയിലൂടെ പോകും. ഇവ ഒരേ കാര്യമല്ല: "ഫീച്ചർ എക്സ്ട്രാക്ഷൻ മൗലിക ഫീച്ചറുകളുടെ ഫംഗ്ഷനുകളിൽ നിന്നുള്ള പുതിയ ഫീച്ചറുകൾ സൃഷ്ടിക്കുന്നു, എന്നാൽ ഫീച്ചർ സെലക്ഷൻ ഫീച്ചറുകളുടെ ഒരു ഉപസമൂഹം തിരികെ നൽകുന്നു." ([സ്രോതസ്സ്](https://wikipedia.org/wiki/Feature_selection)) +🎓 **ഫീച്ചർ സെലക്ഷനും ഫീച്ചർ എക്സ്ട്രക്ഷനും** ഒരു മോഡൽ നിർമ്മിക്കുമ്പോൾ ഏത് വേരിയബിൾ തിരഞ്ഞെടുക്കണമെന്ന് അറിയാൻ നിങ്ങൾ സാധ്യതയുള്ള പരമ്പരാഗത പ്രക്രിയകൾ ഫീച്ചർ സെലക്ഷൻ അല്ലെങ്കിൽ ഫീച്ചർ എക്സ്ട്രക്ഷൻ ആണ്. ഇവ ഒന്നല്ല: "ഫീച്ചർ എക്സ്ട്രക്ഷൻ മൂല സവിശേഷതകളിൽ നിന്നുള്ള ഫംഗ്ഷനുകളിൽ നിന്നു പുതിയ സവിശേഷതകൾ സൃഷ്ടിക്കുകയും, ഫീച്ചർ സെലക്ഷൻ സവിശേഷതകളുടെ ചെറിയ ഒരു ഉപസമുച്ചയം തിരികെ നൽകുകയും ചെയ്യുന്നു." ([ഉറവിടം](https://wikipedia.org/wiki/Feature_selection)) ### നിങ്ങളുടെ ഡാറ്റ ദൃശ്യവൽക്കരിക്കുക -ഡാറ്റാ സയന്റിസ്റ്റിന്റെ ഉപകരണസഞ്ചിയിൽ ഒരു പ്രധാന ഘടകം സീബോൺ അല്ലെങ്കിൽ മാട്പ്ലോട്ട്‌ലിബ് പോലുള്ള മികച്ച ലൈബ്രറികൾ ഉപയോഗിച്ച് ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്ന ശേഷിയാണ്. നിങ്ങളുടെ ഡാറ്റ ദൃശ്യമായി പ്രതിനിധീകരിക്കുന്നത് മറഞ്ഞിരിക്കുന്ന ബന്ധങ്ങൾ കണ്ടെത്താൻ സഹായിക്കാം. നിങ്ങളുടെ ദൃശ്യവൽക്കരണങ്ങൾ പാകം അല്ലാത്തതോ അസമതുലിതമായ ഡാറ്റയോ കണ്ടെത്താൻ സഹായിക്കാം ([Classification](../../4-Classification/2-Classifiers-1/README.md) പാഠത്തിൽ കണ്ടെത്തുന്നതുപോലെ). +ഡാറ്റ ശാസ്ത്രജ്ഞന്റെ ഉപകരണപട്ടികയിൽ ഡാറ്റ ദൃശ്യമായി പ്രതിപാദിക്കാൻ ഉള്ള ശേഷി ഒരു പ്രധാന ഭാഗമാണ്, ഉദാഹരണത്തിന് Seaborn അല്ലെങ്കിൽ MatPlotLib പോലുള്ള മികച്ച ലൈബ്രറികളും അതിന് ഉപയോഗിക്കുന്നു. ഡാറ്റ ദൃശ്യീകരണം മറഞ്ഞുള്ള ബന്ധങ്ങൾ കണ്ടെത്താനും സഹായിക്കാം. ഇത് സ്വാഭാവികമായ വായ്പകൾ അല്ലെങ്കിൽ അസന്തുലിത ഡാറ്റ കണ്ടെത്തുന്നതിലും സഹായകരമാണ് ([ക്ലാസിഫിക്കേഷനിൽ](../../4-Classification/2-Classifiers-1/README.md) കണ്ടെത്തുന്നതുപോലെ). -### നിങ്ങളുടെ ഡാറ്റാസെറ്റ് വിഭജിക്കുക +### ഡാറ്റാ സെറ്റ് വിഭജിക്കുക -പരിശീലനത്തിന് മുമ്പ്, നിങ്ങളുടെ ഡാറ്റാസെറ്റ് രണ്ട് അല്ലെങ്കിൽ അതിലധികം അസമാനമായ വലുപ്പമുള്ള ഭാഗങ്ങളായി വിഭജിക്കണം, എന്നാൽ ഡാറ്റയെ നന്നായി പ്രതിനിധീകരിക്കണം. +പരിശീലനം ആരംഭിക്കുന്നതിന് മുമ്പ്, നിങ്ങൾ ഡാറ്റാ സെറ്റ് രണ്ടോ അതിലധികമോ ഭാഗങ്ങളായി ഭിന്നമായ വലുപ്പങ്ങളിൽ വിഭജിക്കണം, എന്നാൽ അത് ഡാറ്റയെ ശരിയായി പ്രതിനിധാനം ചെയ്യുന്നുണ്ടാകണം. -- **പരിശീലനം**. ഡാറ്റാസെറ്റിന്റെ ഈ ഭാഗം മോഡലിന് അനുയോജ്യമായ രീതിയിൽ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. ഇത് മൗലിക ഡാറ്റാസെറ്റിന്റെ ഭൂരിഭാഗമാണ്. -- **പരിശോധന**. ഒരു ടെസ്റ്റ് ഡാറ്റാസെറ്റ് സ്വതന്ത്രമായ ഡാറ്റാ ഗ്രൂപ്പാണ്, സാധാരണയായി മൗലിക ഡാറ്റയിൽ നിന്നാണ് ശേഖരിക്കുന്നത്, ഇത് നിർമ്മിച്ച മോഡലിന്റെ പ്രകടനം സ്ഥിരീകരിക്കാൻ ഉപയോഗിക്കുന്നു. -- **സാധൂകരിക്കൽ**. സാധൂകരിക്കൽ സെറ്റ് ഒരു ചെറിയ സ്വതന്ത്ര ഉദാഹരണ ഗ്രൂപ്പാണ്, ഇത് മോഡലിന്റെ ഹൈപ്പർപാരാമീറ്ററുകൾ അല്ലെങ്കിൽ ഘടന മെച്ചപ്പെടുത്താൻ ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ഡാറ്റയുടെ വലുപ്പത്തിനും ചോദിക്കുന്ന ചോദ്യത്തിനും അനുസരിച്ച്, ഈ മൂന്നാം സെറ്റ് നിർമ്മിക്കേണ്ടതില്ലായിരിക്കാം ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) പാഠത്തിൽ ഞങ്ങൾ കാണിക്കുന്നു). +- **പരിശീലനം**. ഈ ഡാറ്റാ സെറ്റ് നിങ്ങളുടെ മോഡലിന് പരിശീലനം നൽകാനുപയോഗിക്കുന്നു. ഇത് യഥാർത്ഥ ഡാറ്റാസറ്റിന്റെ വലിയൊരു വിഭാഗമാണ്. +- **പരിശോധന**. ഒരു പരിശോധനാ ഡാറ്റാ സെറ്റ് സ്വതന്ത്രമായ ഡാറ്റാ ഗ്രൂപ്പ് ആണ്, സാധാരണയായി യഥാർത്ഥ ഡാറ്റയിൽ നിന്നും എടുത്തതായിരിക്കും, നിർമ്മിച്ച മോഡലിന്റെ പ്രകടനം ഉറപ്പുവരുത്താൻ ഉപയോഗിക്കുന്നത്. +- **വ്യവസ്ഥാപിക്കൽ**. ഒരു വ്യവസ്ഥാപന സെറ്റ് ചെറിയ സ്വതന്ത്ര ഡാറ്റാ ഉദാഹരണങ്ങളുടെ ഗ്രൂപ്പാണ്, ഇത് മോഡലിന്റെ ഹൈപ്പർപാരാമീറ്ററുകൾ, അല്ലെങ്കിൽ ശില്പരചന, മെച്ചപ്പെടുത്താൻ ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ഡാറ്റയുടെ വലിപ്പത്തിനും ചോദ്യം അനുസരിച്ചും ഈ മൂന്നാം സെറ്റ് തീർക്കേണ്ടതായിരിക്കില്ല ([ടൈം സീരീസ് ഫോറ്കാസ്റ്റിംഗ്](../../7-TimeSeries/1-Introduction/README.md) കുറിക്കുന്നത് പോലെ). -## മോഡൽ നിർമ്മിക്കൽ +## മോഡൽ നിർമ്മാണം -നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, നിങ്ങളുടെ ലക്ഷ്യം മോഡൽ നിർമ്മിക്കുകയോ, അല്ലെങ്കിൽ നിങ്ങളുടെ ഡാറ്റയുടെ സാംഖ്യിക പ്രതിനിധാനം സൃഷ്ടിക്കുകയോ ചെയ്യുകയാണ്, വിവിധ ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് അതിനെ **പരിശീലിപ്പിക്കുക**. മോഡൽ പരിശീലിപ്പിക്കുന്നത് ഡാറ്റയ്ക്ക് പരിചയപ്പെടാൻ അനുവദിക്കുകയും കണ്ടെത്തിയ മാതൃകകളെക്കുറിച്ച് അനുമാനങ്ങൾ നടത്തുകയും, അവ സ്ഥിരീകരിക്കുകയും, അംഗീകരിക്കുകയും അല്ലെങ്കിൽ നിരസിക്കുകയും ചെയ്യാൻ സഹായിക്കുന്നു. +നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, കണക്കിലെടുത്താൽ ഡാറ്റയുടെ സാംഖ്യിക പ്രതിനിധി ആയി ഒരു മോഡൽ നിർമ്മിക്കാൻ നിങ്ങളുടെ ലക്ഷ്യമാണ്. പരിശീലനം മോഡലിനെ ഡാറ്റയുമായി പരിചയപ്പെടുത്തുകയും കാണുന്ന മാതൃകകൾ വിശകലനം ചെയ്ത് അവ അംഗീകരിക്കുകയോ നിരസിക്കുകയോ ചെയ്യാൻ അനുവദിക്കുകയും ചെയ്യുന്നു. ### പരിശീലന രീതി തീരുമാനിക്കുക -നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, നിങ്ങൾ അത് പരിശീലിപ്പിക്കാൻ ഒരു രീതി തിരഞ്ഞെടുക്കും. ഈ കോഴ്സിൽ ഉപയോഗിക്കുന്ന [Scikit-learn ന്റെ ഡോക്യുമെന്റേഷൻ](https://scikit-learn.org/stable/user_guide.html) വഴി നിങ്ങൾ മോഡൽ പരിശീലിപ്പിക്കാൻ നിരവധി മാർഗങ്ങൾ അന്വേഷിക്കാം. നിങ്ങളുടെ അനുഭവം അനുസരിച്ച്, മികച്ച മോഡൽ നിർമ്മിക്കാൻ നിങ്ങൾക്ക് പല വ്യത്യസ്ത രീതി പരീക്ഷിക്കേണ്ടിവരും. ഡാറ്റാ സയന്റിസ്റ്റുകൾ ഒരു മോഡലിന്റെ പ്രകടനം വിലയിരുത്താൻ മുമ്പ് കാണാത്ത ഡാറ്റ നൽകുകയും കൃത്യത, പാകം, മറ്റ് ഗുണനിലവാര കുറയ്ക്കുന്ന പ്രശ്നങ്ങൾ പരിശോധിക്കുകയും, ജോലിക്ക് ഏറ്റവും അനുയോജ്യമായ പരിശീലന രീതി തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്ന പ്രക്രിയയിലൂടെ നിങ്ങൾ കടന്നുപോകും. +നിങ്ങളുടെ ചോദ്യത്തിനും ഡാറ്റയുടെ സ്വഭാവത്തിനും അനുസരിച്ച്, നിങ്ങൾക്ക് അനുയോജ്യമായ ഒരു രീതി തിരഞ്ഞെടുക്കണം. [Scikit-learn ഡോക്യുമെന്റേഷൻ](https://scikit-learn.org/stable/user_guide.html) വഴി നിങ്ങൾ പല മോഡൽ പരിശീലന മാർഗ്ഗങ്ങൾ പരിശോധിക്കാം - ഈ കോഴ്സിൽ ഞങ്ങൾ ഇത് ഉപയോഗിക്കുന്നു. പരിചയത്തെ ആശ്രയിച്ച്, ഏറ്റവും നല്ല മോഡൽ നിർമ്മിക്കാൻ പലവിധ രീതി പരീക്ഷിക്കേണ്ടതായിരിക്കും. ഡാറ്റ ശാസ്ത്രജ്ഞർ മോഡൽ നൂതന ഡാറ്റയുമായി പരീക്ഷിച്ച്, കൃത്യത, വായ്പകൾ, മറ്റ് ഗുണനിലവാരം കുറയുന്ന പ്രശ്നങ്ങൾ പരിശോധിച്ച് ഏറ്റവും അനുയോജ്യമായ പരിശീലന മാർഗ്ഗം തിരഞ്ഞെടുക്കുന്നതാണ് സാധാരണ പ്രക്രിയ. ### മോഡൽ പരിശീലിപ്പിക്കുക -നിങ്ങളുടെ പരിശീലന ഡാറ്റ ഉപയോഗിച്ച്, മോഡൽ സൃഷ്ടിക്കാൻ 'ഫിറ്റ്' ചെയ്യാൻ തയ്യാറാകുക. പല ML ലൈബ്രറികളിലും 'model.fit' എന്ന കോഡ് കാണും - ഈ സമയത്ത് നിങ്ങൾ നിങ്ങളുടെ ഫീച്ചർ വേരിയബിൾ മൂല്യങ്ങളുടെ ഒരു അറേ (സാധാരണയായി 'X')യും ലക്ഷ്യ വേരിയബിൾ (സാധാരണയായി 'y')യും അയയ്ക്കും. +പരിശീലന ഡാറ്റ ലഭിച്ചതിനുശേഷം, അതിന് 'fit' ചെയ്ത് മോഡൽ സൃഷ്ടിക്കാൻ നിങ്ങൾ തയ്യാറാകും. പല ML ലൈബ്രറികളിൽ 'model.fit' എന്ന കോഡ് കാണും - ഈ സമയത്ത് നിങ്ങളുടെ സവിശേഷത വേരിയബിൾ പദാർത്ഥങ്ങളുടെ അറേ ആയി (പൊതി പറയുംപോലെ 'X')യും ടാർഗറ്റും (പൊതി പറയുംപോലെ ‘y’) അയച്ചുകൊടുക്കുന്നു. ### മോഡൽ വിലയിരുത്തുക -പരിശീലന പ്രക്രിയ പൂർത്തിയായ ശേഷം (വലിയ മോഡൽ പരിശീലിപ്പിക്കാൻ പല ആവർത്തനങ്ങൾ അല്ലെങ്കിൽ 'എപ്പോക്കുകൾ' ആവാം), ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിച്ച് മോഡലിന്റെ ഗുണമേന്മ വിലയിരുത്താൻ കഴിയും. ഈ ഡാറ്റ മോഡൽ മുമ്പ് വിശകലനം ചെയ്തിട്ടില്ലാത്ത മൗലിക ഡാറ്റയുടെ ഒരു ഉപസമൂഹമാണ്. മോഡലിന്റെ ഗുണമേന്മയെക്കുറിച്ചുള്ള മെട്രിക്‌സ് പട്ടിക പ്രിന്റ് ചെയ്യാം. +പരിശീലന പ്രക്രിയ പൂർത്തിയാകുമ്പോൾ (വലിയ മോഡലുകൾക്ക് പല തവണ ആവർത്തനങ്ങൾ/epochs ആവാം), പരീക്ഷണ ഡാറ്റ ഉപയോഗിച്ച് മോഡലിന്റെ പ്രകടനം അളക്കാൻ കഴിയും. ഈ ഡാറ്റ യാഥാർത്ഥ്യത്തിൽ മോഡൽ മുൻപ് വിശകലനമില്ലാത്ത ഡാറ്റയുടെ ഉപസമുച്ചയമാണ്. മോഡലിന്റെ ഗുണനിലവാരത്തെക്കുറിച്ചുള്ള മീറ്റ്രിക്‌സ് ടേബിൾ പ്രിന്‍റുചെയ്യാം. -🎓 **മോഡൽ ഫിറ്റിംഗ്** +🎓 **മോഡൽ ഫിറ്റിങ്** -മെഷീൻ ലേണിംഗിന്റെ സാന്ദർഭ്യത്തിൽ, മോഡൽ ഫിറ്റിംഗ് എന്നത് മോഡലിന്റെ അടിസ്ഥാന ഫംഗ്ഷന്റെ കൃത്യതയെ സൂചിപ്പിക്കുന്നു, അത് പരിചയമില്ലാത്ത ഡാറ്റ വിശകലനം ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ. +മെഷീൻ ലേണിംഗിൽ, മോഡൽ ഫിറ്റിങ് എന്നത് മോഡൽ വ്യവഹാര ഘടകങ്ങളുടെ കൃത്യതയെ സൂചിപ്പിക്കുന്നു, അത് പരിചയമില്ലാത്ത ഡാറ്റ വിശകലനം ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ. -🎓 **അണ്ടർഫിറ്റിംഗ്** (കുറഞ്ഞ ഫിറ്റ്)യും **ഓവർഫിറ്റിംഗ്** (അധിക ഫിറ്റ്)യും മോഡലിന്റെ ഗുണമേന്മ കുറയ്ക്കുന്ന സാധാരണ പ്രശ്നങ്ങളാണ്, മോഡൽ ശരിയായി ഫിറ്റ് ചെയ്യാത്തതോ വളരെ അധികം ഫിറ്റ് ചെയ്തതോ ആയിരിക്കുമ്പോൾ. ഇത് മോഡൽ പരിശീലന ഡാറ്റയുമായി വളരെ അടുത്തോ വളരെ ദൂരമായോ പ്രവചനങ്ങൾ നടത്താൻ കാരണമാകും. ഒരു ഓവർഫിറ്റ് മോഡൽ പരിശീലന ഡാറ്റ വളരെ നന്നായി പ്രവചിക്കുന്നു, കാരണം അത് ഡാറ്റയുടെ വിശദാംശങ്ങളും ശബ്ദവും വളരെ നന്നായി പഠിച്ചിട്ടുണ്ട്. ഒരു അണ്ടർഫിറ്റ് മോഡൽ കൃത്യമായില്ല, കാരണം അത് പരിശീലന ഡാറ്റയും മുമ്പ് 'കണ്ടിട്ടില്ലാത്ത' ഡാറ്റയും കൃത്യമായി വിശകലനം ചെയ്യാൻ കഴിയുന്നില്ല. +🎓 **അണ്ടർഫിറ്റിംഗും** **ഓവർഫിറ്റിംഗും** മോഡലിന്റെ ഗുണനിലവാരം താഴ്ത്തുന്ന പൊതുവായ പ്രശ്നങ്ങളാണ്. മോഡൽ അല്ലത്രമേൽ അനുയോജ്യമായില്ലെങ്കിൽ, പരിശീലന ഡാറ്റയുമായി അത്ര സരളമായി അല്ലെങ്കിൽ വളരെ അടുത്തതായി അനുസൃതമാകുന്നത് കാരണമാണ്. ഓവർ ഫിറ്റ് മോഡൽ പരിശീലം ഡാറ്റ വിശദാംശങ്ങളും ശബ്ദവും പിഴച്ചുപിടിച്ചതുകൊണ്ട് വലിയ കൃത്യതയോടെ പ്രവചനം നടത്തുന്നു. അണ്ടർഫിറ്റ് മോഡൽ ആസൂത്രണിച്ച പരിശീലന ഡാറ്റയും മുമ്പ് കാണാത്ത ഡാറ്റയും ശരിയായി വിശകലനം ചെയ്യാനാകില്ല. ![overfitting model](../../../../translated_images/ml/overfitting.1c132d92bfd93cb6.webp) -> ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) tarafından +> ഇൻഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) -## പരാമീറ്റർ ട്യൂണിംഗ് +## പാരാമീറ്റർ ട്യൂണിംഗ് -നിങ്ങളുടെ പ്രാഥമിക പരിശീലനം പൂർത്തിയായ ശേഷം, മോഡലിന്റെ ഗുണമേന്മ നിരീക്ഷിച്ച് അതിന്റെ 'ഹൈപ്പർപാരാമീറ്ററുകൾ' ക്രമീകരിച്ച് മെച്ചപ്പെടുത്താൻ പരിഗണിക്കുക. പ്രക്രിയയെക്കുറിച്ച് കൂടുതൽ വായിക്കുക [ഡോക്യുമെന്റേഷനിൽ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +ആദ്യപരിശീലനം പൂർത്തിയായ ശേഷം, മോഡലിന്റെ ഗുണനിലവാരം ശ്രദ്ധിക്കുക, അതിന്റെ ‘ഹൈപ്പർപാരാമീറ്ററുകൾ’ മാറ്റി മെച്ചപ്പെടുത്താൻ സ്വല്പം പരിശ്രമിക്കുക. പ്രക്രിയയെക്കുറിച്ച് കൂടുതൽ [ഡോക്യുമെന്റേഷനിൽ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) വായിക്കാം. -## പ്രവചനം +## പ്രവചന -ഇത് നിങ്ങൾക്ക് പൂർണ്ണമായും പുതിയ ഡാറ്റ ഉപയോഗിച്ച് മോഡലിന്റെ കൃത്യത പരിശോധിക്കാനുള്ള നിമിഷമാണ്. 'പ്രയോഗത്തിൽ' ഉള്ള ML സജ്ജീകരണത്തിൽ, നിങ്ങൾ മോഡൽ പ്രൊഡക്ഷനിൽ ഉപയോഗിക്കാൻ വെബ് ആസറ്റുകൾ നിർമ്മിക്കുമ്പോൾ, ഈ പ്രക്രിയയിൽ ഉപയോക്തൃ ഇൻപുട്ട് (ഉദാഹരണത്തിന് ബട്ടൺ അമർത്തൽ) ശേഖരിച്ച് ഒരു വേരിയബിൾ സജ്ജമാക്കി മോഡലിലേക്ക് ഇൻഫറൻസ് അല്ലെങ്കിൽ വിലയിരുത്തലിനായി അയയ്ക്കുന്നതും ഉൾപ്പെടാം. +പുതിയ ഡാറ്റ ഉപയോഗിച്ച് നിങ്ങളുടെ മോഡലിന്റെ കൃത്യത പരീക്ഷിക്കാൻ ഇതാണ് ഘട്ടം. പ്രയോഗയിൽ, വെബ് ആസ്തികൾ നിർമ്മിച്ച് മോഡൽ പ്രൊഡക്ഷനിൽ ഉപയോഗിക്കുന്നപ്പോൾ, ഈ പ്രക്രിയയിൽ ഉപയോക്താവിന്റെ ഇൻപുട്ട് (ഉദാഹരണത്തിന് ഒരു ബട്ടൺ അമർത്തൽ) ശേഖരിച്ച് മോഡലിലേയ്ക്ക് വ്യത്യാസ വേരിയബിൾ ആയി അയച്ച് മൂല്യനിർണയം നടത്തുന്നത് ഉള്‍പ്പെടാം. -ഈ പാഠങ്ങളിൽ, നിങ്ങൾ ഈ ഘട്ടങ്ങൾ ഉപയോഗിച്ച് ഡാറ്റാ സയന്റിസ്റ്റിന്റെ എല്ലാ പ്രവർത്തനങ്ങളും, കൂടാതെ കൂടുതൽ, തയ്യാറാക്കാനും, നിർമ്മിക്കാനും, പരീക്ഷിക്കാനും, വിലയിരുത്താനും, പ്രവചിക്കാനും പഠിക്കും, 'ഫുൾ സ്റ്റാക്ക്' ML എഞ്ചിനീയറായി നിങ്ങളുടെ യാത്രയിൽ മുന്നേറുമ്പോൾ. +ഈ പാഠങ്ങളിലൂടെ, നിങ്ങൾ ഈ ഘട്ടങ്ങൾ ഉപയോഗിച്ച് തയ്യാറാക്കുകയും, നിർമ്മിക്കുകയും, പരീക്ഷിക്കുകയും, വിലയിരുത്തുകയും പ്രവചനങ്ങളും ചെയ്യുകയും ചെയ്യുന്ന ഡാറ്റ ശാസ്ത്രജ്ഞന്റെ എല്ലാ പ്രവർത്തനങ്ങളും പഠിക്കാനാകും. ഈ യാത്രയിൽ 'ഫുൾ സ്റ്റാക്ക്' ML എൻജിനിയറായി മാറുന്നതിന് ഒരുങ്ങുക. --- -## 🚀ചലഞ്ച് +## 🚀ചിൽവിക്കൽ -ഒരു ML പ്രാക്ടീഷണറുടെ ഘട്ടങ്ങൾ പ്രതിഫലിപ്പിക്കുന്ന ഒരു ഫ്ലോ ചാർട്ട് വരയ്ക്കുക. നിങ്ങൾ ഇപ്പോൾ പ്രക്രിയയിൽ എവിടെയാണ്? നിങ്ങൾക്ക് എവിടെ ബുദ്ധിമുട്ട് ഉണ്ടാകുമെന്ന് പ്രവചിക്കുന്നു? നിങ്ങൾക്ക് എവിടെ എളുപ്പമാണ്? +മഷീൻ ലേണിംഗ് പ്രായോഗികൻ സ്വീകരിക്കുന്ന ഘട്ടങ്ങളുടെ ഫ്ലോ ചാർട്ട് വരച്ചു കാണിക്കുക. ഇപ്പോൾ പ്രക്രിയയിൽ നിങ്ങൾ എവിടെയാണ് നിങ്ങളുടെ സ്ഥാനം? ഏത് ഘട്ടത്തിൽ നിങ്ങൾക്ക് ബുദ്ധിമുട്ടുണ്ടാകും എന്നു നിങ്ങൾ കരുതുന്നു? എന്ത് നിങ്ങൾക്ക് എളുപ്പമാണ്? ## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) ## അവലോകനം & സ്വയം പഠനം -ഡാറ്റാ സയന്റിസ്റ്റുകൾ അവരുടെ ദൈനംദിന ജോലി ചർച്ച ചെയ്യുന്ന അഭിമുഖങ്ങൾ ഓൺലൈനിൽ തിരയുക. ഇതാ [ഒരു ഉദാഹരണം](https://www.youtube.com/watch?v=Z3IjgbbCEfs). + അവിടെ ഡാറ്റ ശാസ്ത്രജ്ഞർ അവരുടെയ ജോലി കുറിച്ച് സംസാരിക്കുന്ന അഭിമുഖങ്ങൾ ഓൺലൈനിൽ അന്വേഷിക്കുക. ഇതാ [ഒരു ഉദാഹരണം](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## അസൈൻമെന്റ് -[ഒരു ഡാറ്റാ സയന്റിസ്റ്റിനെ അഭിമുഖം ചെയ്യുക](assignment.md) +[ഒരു ഡാറ്റ ശാസ്ത്രജ്ഞനെ അഭിമുഖം ചെയ്യുക](assignment.md) --- -**അസൂയാ**: -ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല. +**ഡിസ്ക്ലെയിമർ**: +ഈ ഡോക്യുമെന്റ് AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നിശ്ചിതത്വത്തിനായി ഞങ്ങൾ ശ്രമിക്കുന്നുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റായ വിവരങ്ങൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. യഥാർത്ഥ ഭാഷയിലെ പ്രമാണം മാത്രമെ പ്രാമാണിക സ്രೋതസായി പരിഗണിക്കാവൂ. അത്യന്താപേക്ഷിത വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദിത്വം താമസിയരുത്. \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/README.md b/translations/ml/2-Regression/3-Linear/README.md index 6338bd13d3..214b27de16 100644 --- a/translations/ml/2-Regression/3-Linear/README.md +++ b/translations/ml/2-Regression/3-Linear/README.md @@ -1,98 +1,98 @@ -# Scikit-learn ഉപയോഗിച്ച് ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: റെഗ്രഷൻ നാല് മാർഗ്ഗങ്ങൾ +# Scikit-learn ഉപയോഗിച്ച് റഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: റഗ്രഷൻ നാല് വഴികൾ -## തുടക്കക്കാരുടെ കുറിപ്പ് +## ആരംഭകർക്കുള്ള കുറിപ്പ് -ലീനിയർ റെഗ്രഷൻ **സൊന്മുഖ്യമായ മൂല്യം** പ്രവചിക്കാനുപയോഗിക്കുന്നു (ഉദാഹരണത്തിന്, വീട് വില, താപനില, അല്ലെങ്കിൽ വിൽപ്പന). -ഇത് ഇൻപുട്ട് ഫീച്ചറുകളുടെയും ഔട്ട്പുട്ടിന്റെയും ബന്ധം മികച്ച രീതിയായി കാണിക്കുന്ന ഒരു സുമുഖ രേഖ കണ്ടെത്തിയാണ് പ്രവർത്തിക്കുന്നത്. +ലീനിയർ റഗ്രഷൻ ആണ് നമ്മൾ ഒരു **സംഖ്യാമൂല്യത്തെ** (ഉദാഹരണത്തിന്, വീടിന്റെ വില, താപനില, അല്ലെങ്കിൽ വിൽപ്പന) പ്രവചിക്കുമ്പോൾ ഉപയോഗിക്കുന്നത്. +ഇത് ഇൻപുട്ട് ഫീച്ചറുകളും ഔട്ട്‌പുട്ടിനിടയിലുള്ള ബന്ധം മികച്ച രീതിയിൽ പ്രതിനിധാനം ചെയ്യുന്ന ഒരു നേര直ലേഖം കണ്ടെത്തി പ്രവർത്തിക്കുന്നു. -ഈ പാഠത്തിൽ, കൂടുതൽ ആധുനിക റെഗ്രഷൻ സാങ്കേതികവിദ്യകൾ തേടുന്നതിന് മുമ്പായി ആശയം മനസിലാക്കുന്നതിനാണ് ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്. +ഈ പാഠത്തിൽ, കൂടുതൽ ആഡ്‌വാൻസ്ഡ് റഗ്രഷൻ സാങ്കേതികവിദ്യകൾ പരീക്ഷിക്കാൻ മുൻപ് ആശയം മനസിലാക്കുന്നതിലേക്ക് ശ്രദ്ധ ചെലുത്തുന്നു. ![Linear vs polynomial regression infographic](../../../../translated_images/ml/linear-polynomial.5523c7cb6576ccab.webp) -> ഇന്ഫോഗ്രാഫിക് [ഡസാനി മഡിപള്ളി](https://twitter.com/dasani_decoded)ൽ നിന്നാണ് -## [പ്രീ-ലക്‌ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) +> ഇൻഫോഗ്രാഫിക് - [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [പ്രീ-ലെക്‌ച്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) -> ### [ഈ പാഠം R ൽ ലഭ്യമാണ്!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [ഈ പാഠം R-യിൽ ലഭ്യമാണ്!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### പരിചയം -ഇതുവരെ നിങ്ങൾ റെഗ്രഷൻ എന്താണെന്ന് കാണുകയും, പമ്പ്കിൻ വിലപ്പിടിക്കുന്ന ഡാറ്റാസെറ്റിൽ നിന്നെടുത്ത സാമ്പിൾ ഡാറ്റ ഉപയോഗിച്ച് പരീക്ഷിക്കുകയും ചെയ്തിട്ടുണ്ട്. Matplotlib ഉപയോഗിച്ച് അത് ദൃശ്യീകരിക്കുകയും ചെയ്തിട്ടുണ്ട്. +ഇതുവരെ നിങ്ങളിവിടെ റഗ്രഷൻ എന്താണെന്ന് പംകിൻ വിലനിർണക്ക ഡാറ്റായിൽ നിന്നുള്ള ഉദാഹരണ ഡാറ്റ ഉപയോഗിച്ച് പരിശോധിച്ചിരുന്നു. Matplotlib ഉപയോഗിച്ച് ഇത് ദൃശ്യീകരിച്ചു. -ഇപ്പോൾ നിങ്ങൾ ML ൽ റെഗ്രഷനിൽ കൂടുതൽ ആഴമേറ്റാൻ തയ്യാറാണ്. ദൃശ്യീകരണം ഡാറ്റ പരിഗണിക്കാൻ സഹായിക്കുന്നുവെങ്കിലും, യാഥാർത്ഥ്യത്തിൽ യന്ത്രം പഠനത്തിന്റെ ശക്തി _മോഡലുകൾ പരിശീലിപ്പിക്കുന്നതിൽ_ നിന്നാണ്. മോഡലുകൾ ചരിത്ര ഡാറ്റയിൽ പരിശീലിപ്പിക്കപ്പെടുന്നു, ഡാറ്റാ ആശ്രിതത്വങ്ങൾ സ്വയം പടിയെടുക്കാൻ സഹായിക്കുന്നു, പുതിയ ഡാറ്റയ്ക്ക് ഫലങ്ങൾ മുൻകൂട്ടി പ്രവചിക്കാൻ കഴിയും, മോഡൽ മുമ്പ് കണ്ടിട്ടില്ലാത്തത് ആയിരിക്കാം. +ഇപ്പോൾ ML-വിനായി റഗ്രഷനിൽ കൂടുതൽ ആഴത്തിൽ പ്രവേശിക്കാൻ തയാറാണ്. ദൃശ്യീകരണം ഡാറ്റ മനസ്സിലാക്കാൻ സഹായിക്കുന്നതിനാൽ, യഥാർത്ഥ ശക്തി _മോഡലുകൾ പരിശീലിപ്പിക്കുന്നതിൽ_ നിന്നും വരുന്നു. +മോഡലുകൾ ചരിത്ര ഡാറ്റയിൽ പരിശീലനം നൽകപ്പെടുന്നു, ഡാറ്റ ആശ്രിതത്വങ്ങൾ സ്വയം പിടിച്ചെടുത്തു, മോഡൽ മുമ്പ് കണ്ടിട്ടില്ലാത്ത പുതിയ ഡാറ്റയ്ക്ക് ഫലം പ്രവചിക്കാൻ കഴിയും. -ഈ പാഠത്തിൽ, നിങ്ങൾക്ക് രണ്ട് തരത്തിലുള്ള റെഗ്രഷനുകൾ കൂടുതൽ അറിയാം: _അടിസ്ഥാന ലീനിയർ റെഗ്രഷൻ_ এবং _Polynomial റെഗ്രഷൻ_, കൂടാതെ ഈ സാങ്കേതികവിദ്യകൾക്ക് അടിസ്ഥാനമായ ചില ഗണിതത്തെയും. ഈ മോഡലുകൾ നമ്മെ പമ്പ്കിൻ വിലകൾ വ്യത്യസ്ത ഇൻപുട്ട് ഡാറ്റ അനുസരിച്ച് പ്രവചിക്കാൻ അനുവദിക്കും. +ഈ പാഠത്തിൽ, നിങ്ങൾക്ക് രണ്ട് തരം റഗ്രഷനുകൾ — _മൂലഭൂത ലീനിയർ റഗ്രഷൻ_യും _പൊളിനോമിയൽ റഗ്രഷൻ_യും — അവരുടെ തളിർവുസഭൂത ഗണിതശാസ്ത്രത്തോടൊപ്പം പഠിപ്പിക്കും. ഈ മോഡലുകൾ വിവിധ ഇൻപുട്ട് ഡാറ്റയുടെ അടിസ്ഥാനത്തിൽ പംകിൻ വിലകൾ പ്രവചിക്കാൻ സഹായിക്കും. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 ലീനിയർ റെഗ്രഷന്റെ സംക്ഷിപ്ത വീഡിയോവിവരത്തിന് മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. +> 🎥 ലീനിയർ റഗ്രഷന്റെ ചെറു വീഡിയോ അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. -> ഈ കോഴ്സിൽ, ഗണിത ശാസ്ത്രം കുറഞ്ഞ പരിജ്ഞാനത്തോടെ വിദ്യാർത്ഥികൾക്ക് ലഭ്യമാക്കാനാണ് ശ്രമം, അതിനാൽ കുറിപ്പുകൾ, 🧮 കാൾഔട്ടുകൾ, ചിത്രരേഖകൾ, മറ്റും മനസ്സിലാക്കാൻ സഹായിക്കുന്ന ഉപകരണങ്ങൾ ശ്രദ്ധിക്കുക. +> ഈ പാഠ്യപദ്ധതിയിൽ, ഗണിതം കുറവായ അറിവിൽ നിന്ന് ആരംഭിക്കുന്നവർക്കായി നിർദ്ദേശിക്കുന്നു, അതുകൊണ്ട് കുറിപ്പുകൾ, 🧮 ഗണിത്യോജിപ്പുകൾ, ചിത്രങ്ങൾ എന്നിവ ഉപയോഗിച്ച് മനസ്സിലാക്കൽ സഹായിക്കുന്നു. -### മുൻഅടിസ്ഥാനങ്ങൾ +### മുൻകൂർ അറിവ് -ഇപ്പോൾ വരെ നമുക്ക് പരിശോദിക്കുന്ന പമ്പ്കിൻ ഡാറ്റയുടെ ഘടനയെക്കുറിച്ച് പരിചിതരായിരിക്കണം. ഈ പാഠത്തിലെ _notebook.ipynb_ ഫയലിൽ ഇത് മുൻകൂട്ടി ലോഡ് ചെയ്ത് മുൻകൂട്ടി ശുദ്ധീകരിച്ചിട്ടുണ്ടു്. ഫയലിൽ, പമ്പ്കിൻ വില പുതിയ ഡാറ്റാ ഫ്രെയിമിൽ കേസ് വിലയായി കാണിക്കുന്നു. Visual Studio Code ൽ കണൽ ഉപയോഗിച്ച് ഈ നോട്ട് ബുക് ഓടിക്കാൻ കഴിവുണ്ടെന്ന് ഉറപ്പാക്കുക. +നിങ്ങൾ പരിശോധിക്കുന്ന പംകിൻ ഡാറ്റയുടെ ഘടന ഇതുവരെ പരിചയപ്പെട്ടിരിക്കണം. ഈ പാഠത്തിലെ _notebook.ipynb_ ഫയലിൽ ഇത് പ്രീ ലോഡ് ചെയ്തും പ്രീ ക്ലീൻ ചെയ്തും കാണാം. ഈ ഫയലിൽ പംകിൻ വില ബശ്യേൽപ്രതി പുതിയ ഡാറ്റാഫ്രെയിമിൽ പ്രദർശിപ്പിച്ചിരിക്കുന്നു. Visual Studio Code-ൽ ഈ നോട്ട് ബുക്കുകൾ നടത്താൻ ആസൂത്രണം ചെയ്യുക. -### ഒരുക്കം +### തയ്യാറെടുപ്പ് -ഓർമ്മപ്പെടുത്തലായി, ഈ ഡാറ്റ നിങ്ങളുടെ ചോദ്യങ്ങൾക്കായി ലോഡ് ചെയ്യുകയാണ്. +ഒരു ഓർമ്മപ്പെടുത്തൽ: ഈ ഡാറ്റ നിങ്ങൾക്കു ചോദ്യങ്ങൾ ചോദിക്കുന്നതിനായി ലോഡ് ചെയ്യുകയാണ്. -- പമ്പ്കിനുകൾ വാങ്ങാൻ ഏറ്റവും നല്ല സമയംഎന്താണ്? -- ഒരു ചെറിയ പമ്പ്കിൻ കേസിന് എത്ര വില പ്രതീക്ഷിക്കാം? -- പമ്പ്കിനുകൾ അർദ്ധ-ബഷൽ വാലറ്റിലോ അല്ലെങ്കിൽ 1 1/9 ബഷൽ ബോക്സിലോ വാങ്ങണോ? +- പംകിനുകൾ വാങ്ങാനുള്ള ഏറ്റവും നല്ല സമയം ಯಾವതാണ്? +- മിനിയേച്ചർ പംകിനുകളുടെ ഒരു കേസ് വില എത്ര പ്രതീക്ഷിക്കാം? +- അവയെ പകുതി-ബശ്യേൽ ബാസ്കറ്റുകളിൽ വാങ്ങണോ അല്ലെങ്കിൽ 1 1/9 ബശ്യേൽ ബോക്സിൽ? +ഈ ഡാറ്റയിൽ കൂടുതൽ അവലോകനം ചെയ്യാമെങ്കില്‍. -ഈ ഡാറ്റയിൽ കൂടുതൽ ആഴത്തിൽ നോക്കാം. +മുന്നത്തെ പാഠത്തിൽ, നിങ്ങൾ Pandas ഡാറ്റാഫ്രെയിം സൃഷ്ടിച്ച്, ഒറിജിനൽ ഡാറ്റാസെറ്റിന്റെ ഭാഗം ഉപയോഗിച്ച് വിലയെ ബശ്യേൽപ്ര്ക്ക് സ്റ്റാൻഡേർഡൈസ് ചെയ്തു. പക്ഷേ അപ്പോൾ വെറും ഏകദേശം 400 ഡാറ്റാപോയിന്റുകളും അതും മഴകാല മാസങ്ങളിലേക്കും പരിമിതമായി మాత్రమే ലഭിച്ചു. -മുമ്പത്തെ പാഠത്തിൽ നിങ്ങൾ പാണ്ടാസ് ഡാറ്റാ ഫ്രെയിം സൃഷ്ടിച്ച് അതിൽ മുഖ്യ ഡാറ്റാസെറ്റിന്റെ ഒരു ഭാഗം നൽകിയിരുന്നു, ബഷൽ അടിസ്ഥാനത്തിൽ വിലകൾ സാധാരണവത്കരിച്ചിരുന്നതായിരിന്നു്. എന്നാൽ അങ്ങനെ ചേർത്താൽ, ഏകദേശം 400 ഡാറ്റാപോയിന്റുകൾ മാത്രവും വീതം വീതമോഴി മാസങ്ങളോടെ മാത്രമായതായി കിട്ടി. +ഈ പാഠത്തിലെ അനുബന്ധ നോട്ട് ബുക്കിൽ ഇതിനകം ലോഡ് ചെയ്ത ഡാറ്റ കാണുക. പ്രാരംഭ സ്‌കാറ്റർപ്ലോട്ട് മാസ ഡാറ്റയെ ചിത്രീകരിക്കുന്നു. കൂടുതൽ ശുചിത്വണമെന്നും വിശദാംശങ്ങൾ അന്വേഷിക്കാം. -ഈ പാഠത്തിലെ സഹായി നോട്ട് ബുക്കിൽ മുൻകൂട്ടി ലോഡ് ചെയ്ത ഡാറ്റ നോക്കുക. ഡാറ്റ മുൻകൂട്ടി ലോഡ് ചെയ്‌തിട്ടുണ്ട്, തുടക്കം മാസത്തിലെ ഡാറ്റ കാണിക്കാൻ പ്രാഥമിക സ്‌കാറ്റർപ്ലോട്ട് വരച്ചിട്ടുണ്ട്. ഡാറ്റ കൂടുതൽ നന്നായി വ്യക്തമാക്കാൻ കൂടുതൽ ശുചീകരണം ചെയ്യാമോ എന്ന് നോക്കാം. +## ഒരു ലീനിയർ റഗ്രഷൻ ലൈൻ -## ലീനിയർ റെഗ്രഷൻ രേഖ +പാഠം 1-ൽ പഠിച്ചതുപോലെ, ലീനിയർ റഗ്രഷൻ അഭ്യാസത്തിന് വേണ്ടത് ഒരു രേഖ വയ്ക്കുക എന്നതാണ്, ഇത്: -പാഠം 1-ൽ നിങ്ങൾ പഠിച്ചതുപോലെ, ലീനിയർ റെഗ്രഷൻ അഭ്യാസത്തിന്റെ ലക്ഷ്യം ഒരു രേഖ വരയ്ക്കുകയാണ്: +- **ഭദ്രമായ വാഹ്യതകൾ കാണിക്കുക**: വ്യത്യസ്ത വെരിയബിളുകളിലുണ്ടായ ബന്ധം കാണിക്കുക +- **പ്രവചനങ്ങൾ നടത്തുക**: ഒരു പുതിയ ഡാറ്റാപോയന്റ് ആ രേഖയുടെ സാന്നിധ്യത്തിലുണ്ടാകാനിടയായ സ്ഥലം കൃത്യമായി പ്രവചിക്കുക -- **മാറ്റികളുടെയും ബന്ധം കാണിക്കുക**. മാറ്റികളുടെ ബന്ധം കാണിക്കുക -- **പ്രവചനങ്ങൾ നടത്തുക**. ഒരു പുതിയ ഡാറ്റാപോയിന്റ് ആ രേഖയോട് എവിടെയായിരിക്കും എന്ന് കൃത്യമായി പ്രവചിക്കുക. +**ലിസ്റ്റ്-സ്‌ക്വയർസ് റഗ്രഷൻ** ഈ തരം രേഖ വരയ്ക്കുന്നതിന് സാധാരണമാണ്. "ലിസ്റ്റ്-സ്‌ക്വയറ്സ്" എന്നത് മോഡലിലെ മൊത്തം പിഴവ് കുറഞ്ഞതാക്കാനുള്ള പ്രക്രിയയെയാണ് സൂചിപ്പിക്കുന്നത്. ഓരോ ഡാറ്റാപോയിന്റിനും, യഥാർത്ഥ പോയിന്റും ഞങ്ങളുടെ റഗ്രഷൻ രേഖയും ഇടയിൽ ഉള്ള വെർട്ടിക്കൽ ദൂരം (റെസിഡുവൽ) അളക്കുന്നു. -**ലീസ്‌റ്റ്-സ്ക്വയർസ് റെഗ്രഷൻ** ഉപയോഗിച്ച് ഇത്തരം രേഖ വരയ്ക്കുന്നത് സാധാരണമാണ്. "ലീസ്‌റ്റ്-സ്ക്വയർസ്" എന്നത് മോഡലിന്റെ മൊത്തം പിശകുകൾ കുറഞ്ഞുവരുത്താനുള്ള പ്രക്രിയ അർത്ഥമാക്കുന്നു. ഓരോ ഡാറ്റാപോയിന്റിന്റെയും യഥാർത്ഥ പോയിന്റും ഞങ്ങളുടെ റെഗ്രഷൻ രേഖയും തമ്മിലുള്ള ലംബനില വ്യത്യാസം (റസിഡ്വൽ എന്നറിയപ്പെടുന്നത്) നമുക്ക് അളക്കണം. +ഈ ദൂരം സ്ക്വയർ ചെയ്യുന്നതിന് രണ്ട് പ്രധാന കാരണങ്ങൾ ഉണ്ട്: -ഈ വ്യത്യാസങ്ങൾ സ്‌ക്വയർ ചെയ്യുന്നതിന് രണ്ട് പ്രധാന കാരണങ്ങളുണ്ട്: +1. **മാനദണ്ഡം ദിശയെച്ചേർക്കാതെ**: -5 എന്ന പിഴവിനെ +5 എന്ന പിഴവുപോലെ പരിഗണിക്കാൻ ആവശ്യമുണ്ട്. സ്‌ക്വയർ ചെയ്യുന്നതോടെ എല്ലാ മൂല്യങ്ങളും പോസിറ്റിവായി മാറുന്നു. -1. **ദിശയിലേക്കു പോലും പ്രാധാന്യമില്ലാതെ വിസ്തൃതി**: -5 എന്ന പിശകും +5 എന്ന പിശകും ഒരുപോലെ കൈകാര്യം ചെയ്യാൻ. സ്‌ക്വയറിങ്ങ് എല്ലാ മൂല്യങ്ങളും പോസിറ്റീവായി മാറ്റുന്നു. +2. **ഔട്ട്‌ലൈയർമാരെ ശിക്ഷിക്കുക**: വലിയ പിഴവുകൾക്ക് കൂടുതൽ ഭാരം നൽകാൻ സ്‌ക്വയർ ചെയ്യുന്നത് സഹായിക്കുന്നു, ഇതുവഴി രേഖ ഉൾക്കൂട്ടലുകൾക്കു അടുക്കുന്നത് ഉറപ്പാക്കുന്നു. -2. **ഓട്ട്‌ലയറുകളെ ശിക്ഷിക്കുക**: സ്‌ക്വയറിങ്ങ് വലിയ പിശകുകൾക്ക് കൂടുതലായ ഭാരമുള്ളതാക്കും, ഇത് രേഖയെ തോറും അകലെ ഉള്ള പോയിന്റുകളിലേക്കു നിന്നു് അടുത്ത് ഇരുപ്പാക്കും. +ഈ സ്ക്വെയ്‌ർ ചെയ്തത് ചേർത്ത് മൊത്തം നഷ്ടം മിനിമം ആകുന്ന രേഖ കണ്ടെത്തുകയാണ് ലക്ഷ്യം — അതിനാല്‍ പേര് "ലിസ്റ്റ്-സ്‌ക്വയർസ്". -അങ്ങനെ, ഈ സ്‌ക്വയർ ചെയ്ത മൂല്യങ്ങൾ എല്ലാം കൂട്ടിച്ചേർക്കുന്നു. ഈ സംഖ്യ കുറഞ്ഞതായ രേഖ കണ്ടെത്തുക നമ്മുടെ ലക്ഷ്യം ആണ് (പരമാവധി കുറഞ്ഞ മൂല്യം) — അതുകൊണ്ട് പേര് "ലീസ്‌റ്റ്-സ്ക്വയർസ്" ആണ്. - -> **🧮 കണക്കു കാണിക്കൂ** +> **🧮 ഗണിതം കാണിക്കൂ** > -> ഈ രേഖ, _സൗഹൃദ രേഖ_ എന്ന് വിളിയ്ക്കുന്ന രേഖ, [ഒരു സമവാക്യത്തിലൂടെ](https://en.wikipedia.org/wiki/Simple_linear_regression) അവതരിപ്പിക്കാം: +> ഈ രേഖ, _ബെസ്റ്റ്-ഫിറ്റ് ലൈൻ_ എന്നറിയപ്പെടുന്നു, [ഒരു സമവാക്യത്തോടെ](https://en.wikipedia.org/wiki/Simple_linear_regression) പ്രകടിപ്പിക്കാം: > > ``` > Y = a + bX > ``` -> -> `X` 'വിവരണ മാറ്റി' ആണ്. `Y` 'പരിണാമ മാറ്റി' ആണ്. രേഖയുടെ സ്ലോപ്പ് `b` ആണ്, `a` യോ Y-അന്ത്യയിടപ്പ് ആണ്, അത് `X = 0` ആയപ്പോൾ Y യുടെ മൂല്യം സൂചിപ്പിക്കുന്നു. -> ->![സ്ലോപ്പ് കണക്കാക്കുക](../../../../translated_images/ml/slope.f3c9d5910ddbfcf9.webp) -> -> ആദ്യം, സ്ലോപ്പ് `b` കണക്കാക്കുക. ഇന്ഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) -> -> മറ്റൊരു രീതിയിൽ പറഞ്ഞാൽ, നമ്മുടെ പമ്പ്കിനുകൾ ഡാറ്റയേക്കുറിച്ചുള്ള പ്രാഥമിക ചോദ്യത്തോട് ചേർത്ത്: "മാസം അനുസരിച്ച് ബഷൽ വില പ്രവചിക്കുക," `X` വില (Price) യെ സൂചിപ്പിക്കുന്നതായിരിക്കും, `Y`则销售月份(Month)。 -> ->![സംവാക്യം പൂരിപ്പിക്കുക](../../../../translated_images/ml/calculation.a209813050a1ddb1.webp) -> -> Y യുടെ മൂല്യം കണക്കാക്കുക. നിങ്ങൾ ഏകദേശം $4 ചെലവഴിക്കുന്നുവെങ്കിൽ, അത് ഏപ്രിൽ എന്നിരിക്കണം! ഇന്ഫോഗ്രാഫിക് [ജെൻ ലൂപ്പർ](https://twitter.com/jenlooper) -> -> രേഖയുടെ സ്ലോപ്പ്, അത് വരച്ചിരുന്നത് ഇന്നത്തെ ഒരു അന്ത്യയിൽ (intercept) ആശ്രയിച്ചിട്ടുള്ളതെന്നു് ഗണിതം കാണിക്കണം, അതായത് `X = 0` ആകുമ്പോൾ Y എവിടെ ബസിച്ചിരിക്കുന്നു. -> -> ഈ മൂല്യങ്ങൾ കണക്കു കാണുന്നത് [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) വെബ്സൈറ്റിൽ കാണാം. [ഈ Least-squares കാൽക്കുലേറ്റർ](https://www.mathsisfun.com/data/least-squares-calculator.html) സന്ദർശിച്ച് സംഖ്യകളുടെ മൂല്യങ്ങൾ രേഖയെ എങ്ങനെ ബാധിക്കുന്നു എന്ന് യഥാർത്ഥത്തിൽ കാണാം. +> +> `X` ആണ് ‘വ്യാഖ്യാനപരമായ വ്യത്യാസം’. `Y` ആണ് ‘നിലവാര വ്യത്യാസം’. രേഖയുടെ നിഷ്പാതം `b` ആണ്, `a` ആണ് y-ഇന്റർസെප්്റ്റ്; അതായത് `X=0` ആയപ്പോൾ `Y` ന്റെ മൂല്യം. +> +>![calculate the slope](../../../../translated_images/ml/slope.f3c9d5910ddbfcf9.webp) +> +> ആദ്യം, നിഷ്പാതം `b` ഗണിക്കുക. ഇൻഫോഗ്രാഫിക് - [Jen Looper](https://twitter.com/jenlooper) +> +> മറ്റൊരു രീതിയിൽ പറയുമ്പോൾ, പംകിൻ ഡാറ്റയുടെ യഥാർത്ഥ ചോദ്യം “മാസംപ്രതി ബശ്യേലിന് പംകിന്റെ വില പ്രവചിക്കുക” എന്ന് ആയാൽ, `X` വിലക്കു സൂചകം, `Y` വിൽപ്പന മാസത്തെ സൂചകം ആകും. +> +>![complete the equation](../../../../translated_images/ml/calculation.a209813050a1ddb1.webp) +> +> Y ന്റെ മൂല്യം കണക്കുക. കരുതുക നിങ്ങൾ $4 ചുറ്റുപടുത്ത് തുകയോ, ആപ്രിൽ ആയിരിക്കണം! ഇൻഫോഗ്രാഫിക് - [Jen Looper](https://twitter.com/jenlooper) +> +> രേഖയുടെ നിഷ്പാതവും ഇന്റർസെപ്റ്റും ഉപയോഗിച്ച് ഇന്ത്യൻറെഗ്ശൻ രേഖയുടെ ഗണിതം ഫലപ്രദമായി കാണിക്കണം. +> +> ഈ മൂല്യങ്ങൾ കണക്കാക്കുന്ന രീതി [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) വെബ്സൈറ്റിൽ കാണാം. കൂടാതെ [ഈ ലിസ്റ്റ്-സ്‌ക്വയർസ് കാൽക്കുലേറ്റർ](https://www.mathsisfun.com/data/least-squares-calculator.html) സന്ദർശിച്ച് എങ്ങനെ സംഖ്യകൾ രേഖയെ ബാധിക്കുന്നുവെന്ന് കാണാം. -## സഹസംബന്ധം +## സഹസംവാദം (Correlation) -അറിവ് ആവശ്യമുള്ള മറ്റൊരു പദം **Correlation Coefficient** ആണ്, നൽകപ്പെട്ട `X` ഉം `Y` ഉം തമ്മിലുള്ള സഹസംബന്ധം സൂചിപ്പിക്കുന്നത്. സ്‌കാറ്റർപ്ലോട്ടിൽ ഇത് എളുപ്പത്തിൽ കാഴ്ചവെക്കാം. എത്രയും സമാന രേഖയിൽ മിക്ക ഡാറ്റാപോയിന്റുകളും പകലായി കാണിക്കുന്ന പ്ലോട്ട് സഹസംബന്ധം ഉയർന്നതാണെന്ന് സൂചിപ്പിക്കുന്നു. എന്നാൽ ഡാറ്റാപോയിന്റുകൾ പലയിടങ്ങളിലും പടർന്നുനിൽക്കുന്ന പ്ലോട്ട് താഴ്ന്ന സഹസംബന്ധം കാട്ടും. +മറ്റൊരു പരിചയപ്പെടുത്തേണ്ട പദം **സഹസംവാദ ഘടകം** ആണ്, നൽകിയ `X` ഉം `Y` ഉം തമ്മിലുള്ള. സ്‌കാറ്റർപ്ലോട്ടിൽ ഈ ഘടകം എളുപ്പത്തിൽ മനസ്സിലാക്കാം. ഒരു നല്ല താളത്തിൽ പുള്ളികളോടുകൂടിയ പ്ലോട്ട് ഉയർന്ന സഹസംവാദം കാണിക്കും, പുള്ളികൾ വ്യാപകമായി പടർന്നാൽ കുറവ് സഹസംവാദം കാണും. -നന്നായ ഒരു ലീനിയർ റെഗ്രഷൻ മോഡൽ `Least-Squares Regression` ഉപയോഗിക്കുന്നത് കൊണ്ട് രേഖയുടെ സഹായത്തോടെ ഉയർന്ന (നിങ്ങളുടെ 1-നടുത്ത് 0-നും ഇടയിൽ) Correlation Coefficient ഉള്ളത് ആകും. +നല്ല ലീനിയർ റഗ്രഷൻ മോഡൽ ഏറ്റവും ഉയർന്ന (0-ൽ നിന്നും അടുത്ത് 1) സഹസംവാദ ഘടകമുള്ള ലിസ്റ്റ്-സ്‌ക്വയർസ് റഗ്രഷൻ രേഖയോട് അനുയോജ്യമായതാണ്. -✅ ഈ പാഠത്തോടൊപ്പം നൽകുന്ന നോട്ട് ബുക്ക് ഓടിച്ച് മാസവും വിലയും തമ്മിൽ ഉണ്ടാകുന്ന സ്‌കാറർപ്ലോട്ടുകൾ നോക്കുക. പമ്പ്കിൻ വിൽപ്പനയ്ക്ക് മാസവും വിലയുടെ ദൃശ്യമേഖലയിൽ высокого или низкого корреляции? അത് മാറ്റപ്പെടുമോ, നിങ്ങൾ കൂടുതൽ സൂക്ഷ്മമായ നിർവചനമായ *ആ വർഷത്തിലെ ദിവസം* (ആ വർഷം ആരംഭിച്ചിട്ട് എത്ര ദിവസം കഴിഞ്ഞുവോ) ഉപയോഗിച്ചാൽ? +✅ ഈ പാഠവുമായി അനുബന്ധമുള്ള നോട്ട് ബുക്ക് ഓടിച്ച് Month to Price സ്‌കാറ്റർപ്ലോട്ട് നോക്കുക. പംകിൻ വിൽപ്പനയ്ക്ക് മാസം-വില ബന്ധം നിങ്ങളുടെ സമീപന പ്രകാരം ഉയർന്നതോ കുറവോ സഹസംവാദം കാണിക്കുന്നുണ്ടോ? `Month`-നുവേണ്ടി finer granularity ഉപയോഗിച്ചാൽ (ഉദാ., *വത്സരത്തിലെ ദിവസം*, ജനുവരി 1 മുതൽ നാളുകൾ എണ്ണം) മാറുമോയെന്ന് പരിശോധിക്കുക. -ഇതോ, നിലവാരം ശുദ്ധീകരിച്ചും, `new_pumpkins` എന്ന ഡാറ്റാഫ്രെയിം വാങ്ങിയിട്ടുണ്ടെന്നു കരുതിയാൽ, ഇത് താഴെപറയുന്ന പോലെ കാണാം: +താഴെയുള്ള കോഡിൽ, ഡാറ്റ ശുദ്ധീകരിച്ച് ഞങ്ങൾക്ക് `new_pumpkins` എന്ന ഡാറ്റാഫ്രെയിം ലഭിച്ചിരിക്കുന്നു എന്ന فرضദ്ധയത്തിൽ പോകുന്നു, ഇത് തികഞ്ഞിരിക്കുന്നു: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -102,36 +102,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> ക്‌ളീനിംഗ് കോഡ് [`notebook.ipynb`](notebook.ipynb) ൽ ലഭ്യമാണ്. മുൻപത്തെ പാഠത്തിലും ചെയ്തതുപോലെ തന്നെ ക്ലീനിംഗ് ചെയ്തിട്ടുണ്ട്, കൂടാതെ `DayOfYear` കൾക്കൂലേഷനായി താഴെ കൊടുത്തു ഉപയോഗിച്ചിരിക്കുന്നു: +> ഡാറ്റ ശുദ്ധീകരിക്കുന്ന കോഡ് [`notebook.ipynb`](notebook.ipynb) ൽ ലഭ്യമാണ്. മുൻപത്തെ പാഠത്തിലുള്ളതുപോലെ ശുദ്ധീകരണം നടത്തി, `DayOfYear` തലവരി താഴെ കാണുന്ന പ്രകാരം കണക്കാക്കി: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +ലീനിയർ റഗ്രഷന്റെ ഗണിതം മനസ്സിലാക്കിയതിനുശേഷം, പംകിൻ പാക്കേജുകളുടെ വിലക്ക് ഏറ്റവും അനുയോജ്യമായ പാക്കേജ് ഏതെന്ന് പ്രവചിക്കാൻ റഗ്രഷൻ മോഡൽ സൃഷ്‌ടിക്കാം. ഒരു ഹോളിഡേ പംകിൻ പാച്ചിന് വേണ്ടി പംകിനുകൾ വാങ്ങുന്നവർക്കിന്ന് പാക്കേജുകളുടെ വിലയെ അടിസ്ഥാനമാക്കി ഏറ്റവും മികച്ച ഒപ്ഷൻ എത് എന്നറിയാൻ ഇത് സഹായിക്കും. -ലീനിയർ റെഗ്രഷന്റെ ഗണിത അർത്ഥം അറിഞ്ഞതിന് ശേഷം, പമ്പ്കിൻ വിലകൾക്ക് ഏറ്റവും നല്ല പമ്പ്കിൻ പാക്കേജ് കണക്കാക്കാൻ റെഗ്രഷൻ മോഡൽ സൃഷ്ടിയ്ക്കാം. അവധി കാലം പമ്പ്കിൻ പാച്ചിൻ വേണ്ടി വാങ്ങുന്നവർക്ക് ഈ വിവരങ്ങൾ വാങ്ങൽ മെച്ചപ്പെടുത്താൻ സഹായിക്കും. - -## സഹസംബന്ധം അന്വേഷിക്കൽ +## സഹസംവാദം അന്വേഷിക്കൽ [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 കൂടുതൽ വിവരങ്ങൾക്ക് മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. +> 🎥 സഹസംവാദത്തെ കുറിച്ചുള്ള ചെറിയ വീഡിയോ അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക്ചെയ്യുക. -മുമ്പത്തെ പാഠത്തിൽ നിങ്ങൾക്ക് കണ്ടിരുന്നതിനനുസരിച്ച്, വ്യത്യസ്ത മാസങ്ങളുടെ ശരാശരി വില ഇങ്ങനെ കാണാനാകാം: +മുൻപത്തെ പാഠത്തിൽ നിങ്ങൾ കണ്ടതുപോലെ, വ്യത്യസ്ത മാസങ്ങളിൽ ശരാശരി വില ഇങ്ങനെ കാണപ്പെടും: Average price by month -ഇതുവഴി ഒരു ചെറിയ സഹസംബന്ധം ഉണ്ടാകണമെന്നും, നാം ലീനിയർ റെഗ്രഷൻ മോഡൽ ട്രെയിന്‍ ചെയ്ത് `Month`-ഉം `Price`-ഉം തമ്മിലുള്ള ബന്ധം പ്രവചിക്കാമെന്നും, അല്ലെങ്കിൽ `DayOfYear`-ഉം `Price`-ഉം തമ്മിലുള്ള ബന്ധം പ്രവചിക്കാമെന്നും തോന്നുന്നു. ഇത് കാണിക്കുന്ന സ്‌കാറ്റർപ്ലോട്ട് ഇവിടെ: +ഇത് ഏതാനും സഹസംവാദം ഉണ്ട് എന്നു സൂചിപ്പിക്കുന്നു, ഒപ്പം `Month`-ഉം `Price`-ഉം അല്ലെങ്കിൽ `DayOfYear`-ഉം `Price`-ഉം തമ്മിലുള്ള ബന്ധം കാണാൻ ലീനിയർ റഗ്രഷൻ പരിശീലിപ്പിക്കാൻ ശ്രമിക്കാം. താഴെ കാണുന്ന സ്‌കാറ്റർ പ്ലോട്ട് രണ്ടാമത്തെ ബന്ധം കാണിക്കുന്നു: Scatter plot of Price vs. Day of Year -`corr` ഫംഗ്ഷൻ ഉപയോഗിച്ച് സഹസംബന്ധം പരിശോധിക്കാം: +`corr` ഫംഗ്ഷൻ ഉപയോഗിച്ച് സഹസംവാദം പരിശോധിക്കാം: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -സഹസംബന്ധം കുറവായി തോന്നുന്നു, മാസമോട് -0.15, ‘DayOfMonth’ വരെയും -0.17, എന്നാൽ പമ്പ്കിൻ വിതിന അനുസരിച്ച് വ്യത്യസ്ത ക്ലസ്റ്ററുകളായി ഉണ്ട്. ഈ സിദ്ധാന്തം സ്ഥിരീകരിക്കാൻ ഓരോ പമ്പ്കിൻ വർഗ്ഗവും വ്യത്യസ്ത നിറത്തിൽ പ്ലോട്ട് ചെയ്തു നോക്കാം. `scatter` ഫംഗ്ഷനിൽ `ax` പാരാമീറ്റർ നൽകി എല്ലാ പോയിന്റുകളും ഒരേ ഗ്രാഫിൽ കാണിക്കും: + +സഹസംവാദം വളരെ ചെറിയതാണ്, `Month`-നുവേണ്ടി -0.15, `DayOfYear`-നുവേണ്ടി -0.17; പക്ഷേ മറ്റൊരു പ്രധാനപ്പെട്ട ബന്ധം ഉണ്ടാകാം. വില വ്യത്യാസങ്ങൾ പംകിൻ വെരൈറ്റിക്കുകൾക്കിടയിൽ വ്യത്യാസപ്പെടുന്നു. ഈ സിദ്ധാന്തം സ്ഥിരീകരിക്കാൻ, ഓരോ പംകിൻ വർഗ്ഗവും വ്യത്യസ്ത നിറത്തിൽ പ്ലോട്ടുചെയ്യാം. `scatter` ഫംഗ്ഷനിൽ `ax` പാരാമീറ്റർ നൽകി എല്ലാം ഒരേ ഗ്രാഫിൽ ചിത്രീകരിക്കാൻ കഴിയും: ```python ax=None @@ -140,75 +140,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - + Scatter plot of Price vs. Day of Year -പമ്പ്കിൻ വർഗ്ഗം മുഴുവൻ വിലയിൽ കൂടിയ സ്വാധീനം കാണിക്കുന്നു, വിൽപ്പന തീയതിയേക്കാൾ. ബാർ ഗ്രാഫിൽ ഇത് കാണാം: +പാങ്ങൽ സൂചന പ്രകാരം വിലക്ക് വിൽപ്പന തീയതിക്കാൾ പംകിൻ വർഗ്ഗം കൂടുതൽ സ്വാധീനം ചെലുത്തുന്നു. ഇത് ഒരു ബാർ ഗ്രാഫിലും കാണാം: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - + Bar graph of price vs variety -ഇപ്പോൾ “പൈ ടൈപ്പ്” പമ്പ്കിൻ വർഗ്ഗത്തിലേക്ക് മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിച്ച് തീയതി വിലയിൽ എത്ര സ്വാധീനം ചെലുത്തുന്നു എന്ന് നോക്കാം: +ഇപ്പോൾ 'പൈ ടൈപ്പ്' എന്ന ഒറ്റ പംകിൻ വർഗ്ഗത്തിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിച്ച് തീയതി വിലയ്ക്ക് എങ്ങനെയാണ് സ്വാധീനം കാണിക്കുന്നത് എന്ന് പരിശോധിക്കാം: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -`Price` യും `DayOfYear` യും തമ്മിലുള്ള `corr` ഉപയോഗിച്ച് സംഘം കണക്കാക്കിയാൽ, -0.27 വരും, അതായത് പ്രവചനാടിസ്ഥാനത്തിലുള്ള മോഡൽ പരിശീലിപ്പിക്കുന്നതു് യുക്തിയുള്ളതായി തോന്നുന്നു. +ഇപ്പോൾ `Price`-നും `DayOfYear`-നും തമ്മിലുള്ള സഹസംവാദം `corr` ഉപയോഗിച്ച് കണക്കാക്കിയാൽ `-0.27` കിട്ടും — അഥവാ പ്രവചന മാതൃക പരിശീലിപ്പിക്കുന്നത് ബുദ്ധിമുട്ടില്ല. -> ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കുന്നതിന് മുമ്പ്, ഡാറ്റ ശുദ്ധിയാക്കേണ്ടത് നിശ്ചിതമാണ്. നഷ്ടപ്പെട്ട മൂല്യങ്ങൾ ഉള്ള ഡാറ്റയുമായി ലീനിയർ റെഗ്രഷൻ നല്ല പ്രകടനം നൽകാനാകില്ല, അതിനാൽ ശൂന്യമായ എല്ലാ സെല്ലുകളും ഒഴിവാക്കുക ഇടക്കാലം നല്ലതാകും: +> ലീനിയർ റഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കുന്നതിന് മുൻപ്, ഡാറ്റ ശുദ്ധമായിരിക്കണം. ലീനിയർ റഗ്രഷൻ നഷ്ടപ്പെട്ട മൂല്യങ്ങളോടു പൊരുത്തപ്പെടാനായില്ല. ഡാറ്റയിൽ ശൂന്യമായ സെലുകൾ നീക്കം ചെയ്യുന്നത് ഉചിതം: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` + +ഒരു ബദൽ വഴിയാണ് ശൂന്യമായ മൂല്യങ്ങൾ അനുയോജ്യമായ കോളത്തിന്റ മീനിലുള്ള മൂല്യങ്ങൾ ഉപയോഗിച്ച് പൂരിപ്പിക്കൽ. -അടുത്തൊരു മാർഗ്ഗം ശൂന്യമായ മൂല്യങ്ങൾ പ്രസക്തമായ കോളത്തിന്റെ ശരാശരി മൂല്യത്തിൽ പൂരിപ്പിക്കുന്നതാണ്. - -## ലളിതമായ ലീനിയർ റെഗ്രഷൻ +## ലളിതമായ ലീനിയർ റഗ്രഷൻ [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 ലീനിയർ, പൊളിനോമിയൽ റെഗ്രഷൻ സംബന്ധിച്ച ചുരുക്ക വീഡിയോക്‌ളിക്ക് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. +> 🎥 ലീനിയർ, പൊളിനോമിയൽ റഗ്രഷൻ ലഘുചിത്ര അവലോകനത്തിന് മുകളിൽ ചിത്രത്തിൽ ക്ലിക്കുക. -നാം **Scikit-learn** ലൈബ്രറി ഉപയോഗിച്ച് ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കും. +ലീനിയർ റഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കാൻ **Scikit-learn** ലൈബ്രറി ഉപയോഗിക്കും. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -ആദ്യമേ, ഇൻപുട്ട് മൂല്യങ്ങളായ ഫീച്ചറുകളും പ്രതീക്ഷിത ഔട്ട്പുട്ടായ ലേബലും വേർതിരിക്കാം numpy array ആയി: + +ആദ്യമായി ഇൻപുട്ട് മൂല്യങ്ങൾ (ഫീച്ചറുകൾ) ഔട്ട്‌പുട്ട് (ലെബിൾ) അവിടെ വിഭജിച്ച് numpy ആരേസായി വേർതിരിക്കും: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> ലീനിയർ റഗ്രഷൻ പാക്കേജ് ശരിയായി മനസ്സിലാക്കാൻ ഇൻപുട്ട് ഡാറ്റ reshaping നടത്തേണ്ടി വന്നു. ലീനിയർ റഗ്രഷൻ 2D-ആണെന്നും ചിലവിൽ ആയുള്ള വീതി N×1 ആയി വേണം. (N dataset വലിപ്പം) -> ലീനിയർ റെഗ്രഷനിൽ പാക്കേജ് ശരിയായി പ്രവർത്തിക്കാൻ ഇൻപുട്ട് ഡാറ്റ reshaping ചെയ്തതായാണ് ശ്രദ്ധിക്കുക. ലീനിയർ റെഗ്രഷൻ ഒരു 2D-അറേ മുഖ്യം കാണുന്നു, ഓരോ വരിയും ഫീച്ചറുകളുടെ വെക്ടർ ആണ്. ഇവിടെ മാത്രം ഒരു ഫീച്ചറുണ്ട്, അതിനാൽ N×1 ആകൃതിയിലുള്ള അറേ വേണം, ഇവിടെ N dataset വലിപ്പം. - -ശേഷം, പരിശീലനത്തിനും പരിശോധനയ്ക്കുമായ ഡാറ്റ വേർതിരിക്കേണ്ടതാണ്, മോഡൽ പരിശീലിക്കുന്നതിന് ശേഷം മെച്ചം വിലയിരുത്താൻ. +അടുത്തത്, മോഡലിനെ‌ പരിശീലിപ്പിക്കുന്നതിന് മുമ്പ്, ഡാറ്റ ട്രെയിൻ, ടെസ്റ്റ് സെറ്റായി വിഭജിക്കണം: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -അവസാനമായി, ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കുന്നത് രണ്ട് കോഡ് വരികൾകൊണ്ട് നടന്ന് തീരും. `LinearRegression` ഒബ്‌ജെക്ട് നിർദ്ദിഷ്ടമാക്കി, `fit` മെതഡിലൂടെ ഡാറ്റയിൽ മോഡൽ ഫിറ്റ് ചെയ്ത്: + +അവസാനമായി, ലീനിയർ റഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കാൻ രണ്ട് കോഡ് ലൈനുകൾ മാത്രം വേണ്ടിവരും. `LinearRegression` объек്റ്റ് നിർവചിച്ച്, `fit` മെത്തഡ് ഉപയോഗിച്ച് ഡാറ്റയ്ക്ക് ഫിറ്റ് ചെയ്യുക: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit` ചെയ്‌തശേഷം `LinearRegression` αντικείμεന്റ് റഗ്രഷന്റെ എല്ലാ കോഫിഷ്യന്റുകളും ഉൾക്കൊള്ളുന്നു, അവ `.coef_`പ്രോപ്പർട്ടി വഴി ആക്‌സസ് ചെയ്യാം. ഞങ്ങളുടെ കേസിൽ, ഒരു കോഫിഷ്യന്റ് മാത്രമാണ് ഉള്ളത്, അത് ഏകദേശം `-0.017`ഓളം ആകാം. ഇതിന്റെ അർത്ഥം വിലകൾ നേരത്തെ കുറുകെ കുറെ കുറയുന്നു എന്ന് കാണിക്കുന്നു, എന്നാൽ അത്ര അധികമല്ല, പ്രതി ദിവസം ഏകദേശം 2 സെന്റുകൾ കുറയുന്നു. റഗ്രഷന്റെ Y-അക്ഷം മുറിച്ചിടുന്ന പോയിന്റ് `lin_reg.intercept_` ഉപയോഗിച്ച് ആക്‌സസ് ചെയ്യാം - ഇത് നമ്മുടെ കേസിൽ ഏകദേശം `21` ആയിരിക്കും, വർഷത്തിന്റെ ആരംഭത്തിലെ വില സൂചിപ്പിക്കുന്നു. +`fit`-ചെയ്ത ശേഷമുള്ള `LinearRegression` വസ്തുവിൽ എല്ലാ റെഗ്രഷൻ കോഫീഷൻറുകളും അടങ്ങിയിരിക്കുന്നു, ഇവക്ക് `.coef_` പ്രോപ്പർട്ടി ഉപയോഗിച്ച് പ്രവേശിക്കാം. നമ്മുടെ കേസിൽ, ഒരു കോഫീഷൻറുമാത്രം ഉണ്ട്, അത് ഏകദേശം `-0.017` ആയിരിക്കണം. ഇത് വർഷകാലക്രമേണ വിലകൾ കുറയുന്നുണ്ടെന്ന് സൂചിപ്പിക്കുന്നു, പക്ഷേ ഏറെ കൂടെ അല്ല, ദിവസానికి ഏകദേശം 2 സെന്റ്. റെഗ്രഷൻ Y-അക്ഷം കൂടിയിടുന്ന ബിന്ദു `lin_reg.intercept_` ഉപയോഗിച്ച് ലഭിക്കാം - ഇത് നമ്മുടെ പ്രശ്നത്തിൽ ഏകദേശം `21` ആയിരിക്കും, വർഷത്തിന്റെ തുടക്കത്തിലെ വില സൂചിപ്പിക്കുന്നു. -ഞങ്ങളുടെ മോഡൽ എത്രത്തോളം കൃത്യമാണെന്ന് കാണാൻ, ടെസ്റ്റ് ഡേറ്റാസെറ്റിൽ വിലകൾ പ്രവചിച്ച്, പിന്നെ പ്രവചനങ്ങൾ പ്രതീക്ഷിച്ച മൂല്യങ്ങളോട് എത്ര അടുത്താണ് എന്ന് അളക്കാം. ഇത് തീരുവായും അനുകൂലമായ മൂല്യങ്ങളുടെയും പ്രവചന മൂല്യങ്ങളുടെയും ചതുരസമമായ വ്യത്യാസങ്ങളുടെ ശരാശരി മൂല്യത്തിന്റെ വേരായിരിക്കും (RMSE) ഉപയോഗിച്ചാണ് ചെയ്യുന്നത്. +നമ്മുടെ മോഡൽ എത്രത്തോളം കൃത്യമാണ് എന്ന് കാണാൻ, ടെസ്റ്റ് ഡാറ്റാസെറ്റിൽ വിലകൾ പ്രവചിച്ച്, പ്രവചനങ്ങളും പ്രതീക്ഷിച്ച മൂല്യങ്ങളും തമ്മിലുള്ള ഏകീകൃതത കാണാം. ഇത് ചെയ്യാൻ മോഡൽ പ്രവചനവും യഥാർത്ഥ മൂല്യങ്ങളും തമ്മിലുള്ള സമസ്ത ചതുരം വ്യത്യാസങ്ങളുടെ ശരാശരി മൂല്യത്തിന്റെ മൂലകത്തിൽ നിന്നുള്ള യഥാർത്ഥ മൂല്യം, അതായത് root mean square error (RMSE) ഉപയോഗിക്കാം. ```python pred = lin_reg.predict(X_test) @@ -216,38 +216,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -ഞങ്ങളുടെ പിശക് ഏകദേശം 2 പോയിന്റ് നീണ്ടതാണ്, എത്രത്തോളം ~17%. വളരെച്ചങ്കമായില്ല. മോഡൽ ഗുണമേന്മയുടെ മറ്റൊരു സൂചനയാണ് **നിർണ്ണയ സഹഗം**, ഇത് ഇങ്ങനെ ലഭിക്കും: + +നമ്മുടെ പിശക് ഏകദേശം 2 പോയിന്റുകൾ ആണ്, ഇത് ഏകദേശം 17% ആണ്. അത്ര മികച്ചത് അല്ല. മോഡൽ ഗുണനിലവാരം അറിയാൻ മറ്റൊരു സൂചിക **coefficient of determination** ആണ്, ഇത് ഇങ്ങനെ ലഭിക്കും: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` + +മൂല്യം 0 ആണെങ്കിൽ, മോഡൽ ഇന്‍പുട്ട് ഡാറ്റ ശ്രദ്ധിക്കാതെ, എല്ലാ ഫലത്തിലും ശരാശരിയായ മൂല്യം പ്രവചിക്കുന്ന *കഴിവില്ലാത്ത ലിനിയർ പ്രവചകമായ* പ്രവർത്തിക്കുന്നു. മൂല്യം 1 ആണെങ്കിൽ, എല്ലാ പ്രതീക്ഷിച്ച ഫലങ്ങളും പൂർണ്ണമായി പ്രവചിക്കാനാകും. നമ്മുടെ കേസിൽ, കോഫീഷൻറിന്റെ മൂല്യം ഏകദേശം 0.06 ആണ്, ഇത് വളരെ കുറവാണ്. -മൂല്യം 0 ആണെങ്കിൽ മോഡൽ ഇൻപുട്ട് ഡാറ്റ പരിഗണിക്കാറില്ല എന്നർത്ഥം, അത് *മുന്നോൽപ്പത്തി മോശമായ ലീനിയർ പ്രവചനകർ* ആയി പ്രവർത്തിക്കുന്നു, അത് ഫലത്തിന്റെ ശരാശരി മൂല്യമാണ്. മൂല്യം 1 ആണെങ്കിൽ, നാം പ്രതീക്ഷിച്ച എല്ലാ ഔട്ട്പട്ടുകളും പൂർണ്ണമായി പ്രവചിക്കാം. ഞങ്ങളുടെ കേസിൽ, നിർണ്ണയ സഹഗം ഏകദേശം 0.06 ആണുള്ളത്, ഇത് വളരെ കുറവാണ്. - -നാം റഗ്രഷൻ വരിയോടൊപ്പം ടെസ്റ്റ് ഡാറ്റ ചേർത്ത്, ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മികച്ചറിയാനായി പ്ലോട്ട് ചെയ്യാം: +റെഗ്രഷൻ ലൈൻ ടെസ്റ്റ് ഡാറ്റയുമായി ചേർന്ന് പ്ലോട്ട് ചെയ്താൽ, നമ്മുടെ കേസിൽ റെഗ്രഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് നന്നായി കാണാം: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - + Linear regression -## പോളിനോമിയൽ റഗ്രഷൻ +## പോളിനോമിയൽ റെഗ്രഷൻ -മറ്റൊരു തരം ലീനിയർ റഗ്രഷൻ പോളിനോമിയൽ റഗ്രഷനാണ്. ചിലപ്പോൾ വേരിയബിൾസ് തമ്മിൽ ലീനിയർ ബന്ധം ഉണ്ടായിരിക്കും - വോളിയം കൂടുതലുള്ള പംകിൻ വില ഉയർന്നിരിക്കും - എന്നാൽ ചിലപ്പോൾ ഈ ബന്ധം ഒരു സമതലോ നേരെയുള്ള വരിയോ ആയി പ്രദർശിപ്പിക്കാനാകില്ല. +മറ്റൊരു തരം ലിനിയർ റെഗ്രഷൻ ആണ് പോളിനോമിയൽ റെഗ്രഷൻ. ചിലപ്പോൾ വേരിയബിളുകൾക്ക് ലിനിയർ ബന്ധമുണ്ടാകാം - അളവിൽ വലിയ പംപ്കിൻ വില ഉയർന്നതായിരുന്നു - എന്നാൽ ചിലപ്പോൾ ഈ ബന്ധങ്ങൾ ഒരു തിട്ടത്തെയോ നേരിയ രേഖയെയോ പോലെ പ്രത്യക്ഷപ്പെടുന്നില്ല. -✅ പോളിനോമിയൽ റഗ്രഷൻ ഉപയോഗിക്കാവുന്ന [കൂടുതൽ ഉദാഹരണങ്ങൾ](https://online.stat.psu.edu/stat501/lesson/9/9.8) ഇവയാണ് +✅ ഇവിടെ ചില അധിക ഉദാഹരണങ്ങൾ ഉണ്ട് [Polynomial Regression](https://online.stat.psu.edu/stat501/lesson/9/9.8) ഉപയോഗിക്കാനുള്ള ഡാറ്റ. -Date ഒപ്പം Price നുള്ള ബന്ധം വീണ്ടും നോക്കാം. ഈ സ്കാറ്റർപ്ലോട്ട് ഒരിടത്തേക്ക് മാത്രം ഒതുക്കേണ്ടതുണ്ടോ? വിലകൾ മാറിയില്ലേ? ഈ സാഹചര്യത്തിൽ, നിങ്ങൾ പോളിനോമിയൽ റഗ്രഷൻ ശ്രമിക്കാം. +തീയതി, വില എന്നിവയുടെ ബന്ധം വീണ്ടും നോക്കൂ. ഈ സ്കാറ്റർ പ്ലോട്ട് അവശ്യം നേരിയ രേഖ ഉപയോഗിച്ച് വിശകലനം ചെയ്യേണ്ടതുണ്ടോ? വിലകൾ മാറിവരുമോ? ഈ രൂപത്തിൽ, പോളിനോമിയൽ റെഗ്രഷൻ പരീക്ഷിക്കാം. -✅ പോളിനോമിയലുകൾ ഒരോവയോ കൂടുതൽ വേരിയബിൾസും കോഫിഷ്യന്റ്സും അടങ്ങിയ ഗണിതീയ പ്രകടപഥങ്ങളാണ് +✅ പോളിനോമിയലുകൾ ഒരു അല്ലെങ്കിൽ കൂടുതൽ വേരിയബിളുകളും കോഫീഷൻറുകളും ഉള്ള ഗണിത വർഷണങ്ങൾ ആണ്. -പോളിനോമിയൽ റഗ്രഷൻ nonlinear ഡാറ്റയ്ക്ക് മെച്ചമായ ഫിറ്റ് നൽകാൻ ഒരു വളഞ്ഞ വരി സൃഷ്ടിക്കുന്നു. നമ്മുടെ കേസിൽ, squared `DayOfYear` വേരിയബിൾ ഡാറ്റയിൽ ഉൾപ്പെടുത്തിയാൽ, വർഷത്തിനുള്ളിൽ ഏതെങ്കിലും പോയിന്റിൽ കുറഞ്ഞ മൂല്യമുള്ള പരബോളിക് വളവ് ഫിറ്റ് ചെയ്യാം. +പോൾവളിയേർ റെഗ്രഷൻ nonlinear ഡാറ്റയ്ക്കായി അഭ്രാന്ത രേഖകൾ ഉപയോഗിച്ച് കൂടുതൽ മികച്ച फिटിംഗ് നൽകുന്നു. നമ്മുടെ വിഷയം പരിശോധിച്ചാൽ, input ഡാറ്റയിൽ `DayOfYear`-ന്റെ വർഗ്ഗം ഉൾപ്പെടുത്തുന്നത്, ഒരു പരബോളിക് കർവ് പോലുള്ള ഘടനയിൽ ഡാറ്റ ഫിറ്റ് ചെയ്യാൻ സഹായിക്കും, വർഷത്തിന്റെ ഏതെങ്കിലും ഭാഗത്ത് കുറഞ്ഞ മൂല്യം ഉണ്ടാകുന്നു. -Scikit-learn ല് ഉള്ള സഹായകരമായ [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) പലദശങ്ങളും ഡാറ്റ പ്രോസസ്സിംഗ് ഘട്ടങ്ങൾ കൂട്ടിച്ചേർക്കാൻ ഉണ്ട്. **pipeline** എന്നത് **estimators**യുടെ ശൃംഖല ആണ്. നമ്മുടെ കേസിൽ, ആദ്യം പോളിനോമിയൽ ഫീച്ചറുകൾ മodel ൽ ചേർക്കുകയും സായിപ്പും റഗ്രഷൻ പരിശീലിപ്പിക്കുകയും ചെയ്യുന്ന ഒരു പൈപ്പ്‌ലൈനുണ്ടാക്കും: +Scikit-learn ല് ഒരു സഹായകമായ [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ഉണ്ട് ഡാറ്റ പ്രോസസിങ് ഘടകങ്ങൾ കൂട്ടി കൈകാര്യം ചെയ്യാൻ. **pipeline** ധാരാളം **estimators**-ന്റെ ഒരുശൃംഖലയാണ്. നാം ആദ്യം പോളിനോമിയൽ ഫീച്ചറുകൾ ചേർക്കുകയും തുടർന്ന് റെഗ്രഷൻ പരിശീലിപ്പിക്കുകയും ചെയ്യുന്ന pipeline സൃഷ്ടിക്കുന്നു: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,61 +257,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` + +`PolynomialFeatures(2)` ഉപയോഗിക്കുന്നത് ഇൻപുട്ട് ഡാറ്റയിലെ എല്ലാ രണ്ടാം-ഡിഗ്രി പോളിനോമിയലുകളും ഉൾപ്പെടുത്തും. നമ്മുടെ കേസിൽ ഇത് `DayOfYear`2 എന്നത് മാത്രം ആയിരിക്കും, പക്ഷേ രണ്ട് ഇൻപുട്ട് വേരിയബിളുകൾ X, Y ഉണ്ട് എങ്കിൽ, ഇത് X2, XY, Y2 ഉൾപ്പെടും. കൂടുതൽ ഡിഗ്രി പോളിനോമിയലുകൾ കൂടി ഉപയോഗിക്കാം. -`PolynomialFeatures(2)` ഉപയോഗിക്കുന്നത് ഇൻപുട്ട് ഡാറ്റയിലെ എല്ലാ രണ്ടാം-ഡിഗ്രി പോളിനോമിയലുകളും ഉൾക്കൊള്ളിക്കാർയാൻ ആണ്. നമ്മുടെ കെടയിൽ അത് DayOfYear2 മാത്രമേ ആകൂ, പക്ഷേ രണ്ട് ഇൻപുട്ടുകൾ X, Y ഉണ്ടെങ്കിൽ ഇത് X2, XY, Y2 ചേർക്കും. കൂടിയ ഡിഗ്രി പോളിനോമിയലും ഉപയോഗിക്കാം. +pipeline-കൾ പൊതുവും `LinearRegression` വസ്തുവുപോലെ `fit` ചെയ്ത്, `predict` ഉപയോഗിച്ച് പ്രവചന ഫലങ്ങൾ കിട്ടും: -പൈപ്പ്‌ലൈനുകൾ ഇപ്പോഴത്തെ `LinearRegression` αντικείμεന്റേതുപോലെ ഉപയോഗിക്കാം, അഥവാ പൈപ്പ്‌ലൈൻ `fit` ചെയ്യാം പിന്നെ `predict` ഉപയോഗിച്ച് പ്രവചന ഫലം കാണാം. ടെസ്റ്റ് ഡാറ്റയും അനുയോജ്യ വളവും കാണിച്ചിരിക്കുന്ന ഗ്രാഫ് ഇതാ: +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +മമനിണ്ണിതമായ സംവരണമായ കർവ് പ്ലോട്ട് ചെയ്യാൻ, `np.linspace` ഉപയോഗിച്ച് ഒരു ഏകരം മാറ്റങ്ങളുള്ള ഇൻപുട്ട് റേഞ്ച് സൃഷ്ടിക്കുന്നു, unordered ടെസ്റ്റ് ഡാറ്റയിൽ നേരിട്ട് പ്ലോട്ട് ചെയ്യുന്നത് ഒഴിവാക്കുന്നു (zigzag ലൈൻ ഉണ്ടാകാനുള്ള സാധ്യത): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +ടെസ്റ്റ് ഡാറ്റയും അനുയോജ്യമായ കർവും ചേർന്ന് ഒരു ഗ്രാഫ് ഇതാണ്: Polynomial regression -പോളിനോമിയൽ റഗ്രഷൻ ഉപയോഗിച്ച് നാം കുറച്ചു കുറഞ്ഞ MSE ഉം ഉയർന്ന നിർണ്ണയവും നേടാം, പക്ഷേ വളരെ വ്യത്യാസമില്ല. മറ്റു ഫീച്ചറുകളും പരിഗണിക്കണം! +Polynomial Regression ഉപയോഗിച്ച് RMSE കുറവും നിർണ്ണായകത കൂടുതലുമായിരിക്കും, പക്ഷേ ഗണ്യമായ മികവുണ്ടാകില്ല. മറ്റു ഫീച്ചറുകളും പരിഗണിക്കണം! -> നിങ്ങൾക്ക് കാണാം, പംകിൻ വിലകളുടെ ഏറ്റവും കുറഞ്ഞ സ്ഥിതിവിശേഷങ്ങൾ ഹാലോവีนിനടുത്താണ്. ഇതെങ്ങനെ വ്യാഖ്യാനിക്കാം? +> പംപ്കിൻ വിലകളുടെ ഏറ്റവും കുറഞ്ഞ വില ഹാലോവീൻ സമയത്ത് ഉണ്ടാകുന്നുണ്ടെന്ന് നിങ്ങൾ കാണാമോ? എങ്ങനെ ഇതിനെ വിശദീകരിക്കാം? -🎃 അഭിനന്ദനങ്ങൾ, നിങ്ങൾ പൈ പംകിനുകളുടെ വില പ്രവചിക്കാൻ സഹായിക്കുന്ന ഒരു മോഡൽ സൃഷ്ടിച്ചു. നിക്ഷേപിച്ചുമാത്രം ബാക്കി പംകിൻ തരങ്ങൾക്കും ഇതുപോലെ ചെയ്യാവുന്നതാണ്, പക്ഷേ അത് ഉപയോഗിക്കാനുള്ള പ്രക്രിയ സമ്മർദ്ദകരമാണ്. ഇപ്പോൾ പഠിക്കാം പംകിൻ വകഭേദം ഞങ്ങളുടെ മോഡലിൽ എങ്ങനെ പരിഗണിക്കാം! +🎃 അഭിനന്ദനങ്ങൾ, പൈ പംപ്കിൻ വില പ്രവചിക്കാൻ സഹായിക്കുന്ന ഒരു മോഡൽ നിങ്ങൾ സൃഷ്ടിച്ചു. സർവ്വവിധ പംപ്കിൻ തരങ്ങൾക്കും നിങ്ങളത് ആവർത്തിക്കാം, പക്ഷേ അത് ബുദ്ധിമുട്ടുണ്ട്. ഇപ്പോൾ മോഡലിൽ പംപ്കിൻ വിഭാഗം പരിഗണിക്കുന്നത് പഠിക്കാം! -## വർഗ്ഗീകരണ ഫീച്ചറുകൾ +## വർഗ്ഗീയ പീച്ചറുകൾ -ആദർശ ലോകത്തിൽ, നാം ഒരേ മോഡൽ ഉപയോഗിച്ച് വ്യത്യസ്ത പംകിൻ വകഭേദങ്ങളുടെ വില പ്രവചിക്കാൻ ആഗ്രഹിക്കുന്നു. എന്നാൽ `Variety` കോളം `Month` പോലുള്ള കോളങ്ങളേക്കാൾ വ്യത്യസ്തമാണ്, കാരണം അതിൽ അക്കാത്മകമല്ലാത്ത മൂല്യങ്ങൾ ഉണ്ട്. ഇത്തരം കോളങ്ങൾ **categorical** എന്നു പറയുന്നു. +ആദർശലോകത്ത്, വ്യത്യസ്ത പംപ്കിൻ തരങ്ങളുടെ വില നിശ്ചയിക്കാൻ ഒരേ മോഡലിനെ ഉപയോഗിക്കാനാകണം. പക്ഷേ `Variety` കോളം `Month` പോലുള്ള കോളങ്ങളിൽ നിന്ന് വ്യത്യസ്തമാണ്, കാരണം അതിൽ അക്കമില്ലാത്ത മൂല്യങ്ങൾ ഉണ്ടാകാം. ഇത്തരമുള്ള കോളങ്ങൾ **വർഗ്ഗീയമായ** (categorical) എന്ന് വിളിക്കുന്നു. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 കോറ്ററായി വർഗ്ഗീകരണ ഫീച്ചറുകൾ ഉപയോഗിക്കുന്നതിന്റെ ചുരുക്ക വീഡിയോക്കായി ചിത്രത്തെ ക്ലിക്കുചെയ്യുക. +> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തില്‍ ക്ലിക്ക് ചെയ്ത് വർഗ്ഗീയ പീച്ചറുകൾ ഉപയോഗിക്കുന്നതിൻറെ ലഘു വീഡിയൊ കാണാം. -ഇവിടെ നിങ്ങൾക്ക് കാണാം പംകിൻ വകഭേദം അനുസരിച്ച് ശരാശരി വില: +ഇവിടെ വർഗ്ഗത്തിൽ ആശ്രയിച്ചുള്ള ശരാശരി വില കാണാം: Average price by variety -വകഭേദം പരിഗണിക്കാൻ ആദ്യം അതിനെ അക്കാത്മക രൂപത്തിലാക്കണം, അതായത് **encode** ചെയ്യണം. ഇതിന് പല മാർഗ്ഗങ്ങളുണ്ട്: +വ്യത്യസ്തത പരിഗണിക്കാൻ, ആദ്യം അക്കമില്ലാത്ത മൂല്യങ്ങളെ അക്കങ്ങളാക്കി മാറ്റണം, അതായത് **എൻകോഡ്** ചെയ്യണം. ഇതിന് വിവിധ രീതികളുണ്ട്: -* ലളിതമായ **നമ്പറികൽ എന്‍കോഡിംഗ്** വ്യത്യസ്ത വകഭേദങ്ങളുടെ പട്ടിക ഉണ്ടാക്കുകയും, ശേഷം അഡ്രസ്സിംഗ് പട്ടികയിൽ അവയുടെ നാമം സൂചിക കൊണ്ട് മാറ്റുകയും ചെയ്യുന്നു. ഇത് ലീനിയർ റഗ്രഷനിലേക്ക് മികച്ച ആശയമല്ല, കാരണം ലീനിയർ റഗ്രഷൻ സൂചികയുടെ അക്കാത്മക മൂല്യം എടുത്ത് കോഫിഷ്യന്റുമായി ഗുണിച്ച് ഫലത്തിൽ ചേർക്കുന്നു. ഞങ്ങളുടെ കേസിൽ, സൂചിക സംഖ്യയും വിലയും തമ്മിലുള്ള ബന്ധം സുതാര്യമായി nonlinear ആണ്, ഇന്ത്യൻ സൂചികകളെ ക്രമീകരിച്ചാലും. -* **വൺ-ഹോട്ട് എൻകോഡിംഗ്** `Variety` കോളം 4 വേറെ കോളങ്ങളാക്കി മാറ്റും, ഓരോ വകഭേദത്തിനും ഒരുകോളം. ഒരു വരി ആ വകഭേദത്തോട് പറ്റിയുള്ളത് ആണെങ്കിൽ ആ കോളത്തിൽ `1` ഉണ്ടാകും, അല്ലെങ്കിൽ `0`. ഇതിന്റെ ഫലമായി, പംകിൻ വകഭേദങ്ങൾക്ക് ഓരോൊരു കോഫിഷ്യന്റുമുള്ള നാലു കോഫിഷ്യന്റുകൾ ഉണ്ടാകും, അവ "ആരംഭ വില" (കൂടാതെ "കൂടുതൽ വില") പ്രതിനിധീകരിക്കുന്നു. +* ലളിതമായ **ന്യുമറിക് എൻകോഡിംഗ്** വ്യത്യസ്ത തരങ്ങളുടെ പട്ടിക നിർമ്മിച്ച്, ഓരോ തരം പേരിനും പട്ടികയിലെ സൂചിക നൽകിയ ശേഷം അതേ സൂചികയുടെ സംഖ്യത്തോടെ (ഇൻഡക്സ് ത്തിൽ ഉള്ള സംഖ്യയായി) മാറ്റുന്നു. ഇത് ലിനിയർ റെഗ്രഷനിൽ നല്ലത് അല്ല, കാരണം ലിനിയർ റെഗ്രഷൻ ആ സൂചികയുടെ മൂല്യത്തെ എടുത്ത് ചില കൂട്ടിച്ചേർക്കലുകൾ നടത്തുമ്പോൾ ഈ എൻഡക്സ്-വിലകളും വിലയും നേരിയ ബന്ധത്തിലല്ല. +* **വൺ-ഹോട്ട് എൻകോഡിംഗ്** `Variety` കോളം നാലു വ്യത്യസ്ത കോളം ആയി മാറ്റുന്നു, ഓരോ തരത്തിനും ഒരു കോളം. ഓരോ കോളത്തിനും ഒരു വരി ആ ടൈപ്പിന്റെ വരി ആണെങ്കിൽ `1` , അല്ലെങ്കിൽ `0` ന് നൽകിയിരിക്കും. ഇതിലൂടെ നാലു കോഫീഷൻറുകൾ ഉണ്ടാകും, ഓരോ പംപ്കിൻ തരത്തിനും ചേർന്ന "ആരംഭ വില" (അഥവാ "അധിക വില") കാണിക്കുന്നതിനു. -വൺ-ഹോട്ട് എൻകോഡിംഗ് എങ്ങനെ നടക്കും എന്ന് താഴെയുള്ള കോഡ് കാണിക്കുന്നു: +നമ്മൾ ഒന്ന്-ഹോട്ട് എൻകോഡ് ഒരു variety ഇങ്ങനെ ചെയ്യാം: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 - -വൺ-ഹോട്ട് എൻകോഡുചെയ്ത വകഭേദം ഇൻപുട്ടായി ഉപയോഗിച്ച് ലീനിയർ റഗ്രഷൻ പരിശീലിപ്പിക്കാൻ, `X` , `y` ഡാറ്റ ശരിയായി ഇൻഷിയലൈസ് ചെയ്യണം: + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +ഒന്ന്-ഹോട്ട് എൻകോഡ് ചെയ്ത variety ഉപയോഗിച്ച് ലിനിയർ റെഗ്രഷൻ പരിശീലിപ്പിക്കാൻ, `X` , `y` ഡാറ്റ ശരിയായി നിർവഹിക്കണം: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -മറ്റുള്ള കോഡ് മുകളിൽ ലീനിയർ റഗ്രഷൻ ട്രെയിനിംഗിൽ ഉപയോഗിച്ചതുപോലെ തന്നെയാണ്. നിങ്ങൾ ശ്രമിക്കുകയാണെങ്കിൽ, ശരാശരി ചതുരം പിശക് ഏകദേശം മുൻപുപോലെ തന്നെയാണെന്ന് ശ്രദ്ധിക്കും, പക്ഷേ നിർണ്ണയ സഹഗം വളരെ ഉയരുന്നു (~77%). മികച്ച പ്രവചനങ്ങൾക്ക്, കൂടുതൽ വർഗ്ഗീകരണ ഫീച്ചറുകളും അക്കാത്മക ഫീച്ചറുകളും ഉൾപ്പെടുത്താം, ഉദാഹരണത്തിന് `Month`യും `DayOfYear`ഉം. വലിയ ഫീച്ചർ അണിയറയ്ക്ക് `join` ഉപയോഗിക്കാം: + +ഇനി ലിനിയർ റെഗ്രഷൻ പരിശീലിപ്പിക്കാൻ മുമ്പത്തെ പോലെയ്‌ക്കോഡ് ഉപയോഗിക്കാം. നിങ്ങൾ പരീക്ഷിച്ചാൽ ശരാശരി ചതുരഘടിത പിശക് ഒരുപോലെയായിരിക്കും, പക്ഷേ coefficient of determination (~77%) കൂടുതലായി കാണും. കൃത്യത കൂടുതൽ വർദ്ധിപ്പിക്കാൻ, മറ്റ് വർഗ്ഗീയ പീച്ചറുകളും അക്കമാറ്റം ചെയ്ത പീച്ചറും (ഉദാഹരണത്തിന് `Month` അല്ലെങ്കിൽ `DayOfYear`) കൂടി ഉപയോഗിക്കാം. അക്കമാറ്റം ചെയ്ത പീച്ചറുകളെ ഒന്നിച്ച് ചേർക്കാൻ `join` ഉപയോഗിക്കുന്നു: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,12 +342,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` + +ഇവിടെയാണ് `City` , `Package` തരം പരിഗണിക്കുന്നു, ഇത് RMSE 2.84 (10.5%) , determination 0.94 ലേക്ക് വർദ്ധിക്കുന്നു! -ഇവിടെ നാം `City`യും `Package` തരം കൂടി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്, ഇത് MSE 2.84 (10%), നിർണ്ണയം 0.94 ഉം നൽകുന്നു! - -## എല്ലാം ചേർന്ന് +## ഒടുക്കം എല്ലാം ചേർക്കൽ -മികച്ച മോഡൽ ഉണ്ടാക്കാൻ, മുകളില് നൽകിയ ഒന്നുഹോട്ട് എൻകോഡിംഗ് ചെയ്ത വർഗ്ഗികവും അക്കാത്മകവും ഉള്ള ഡാറ്റയും പോളിനോമിയൽ റഗ്രഷനുമായും സംയോജിപ്പിച്ച് ഉപയോഗിക്കാം. നിങ്ങളുടെ സൗകര്യത്തിനു പൂർണ്ണ കോഡ് ഇവിടെ: +ഉത്തരവാദിത്തമുള്ള ഏറ്റവും നല്ല മോഡൽ പുൾവളിയേർ റെഗ്രഷനുമായി ഒന്നിച്ച് ( ഒന്ന്-ഹോട്ട് എൻകോഡ് വർഗ്ഗീയ + അക്കമാറ്റ പീച്ചറുകൾ ) ഡാറ്റ ഉപയോഗിക്കാം. സൗകര്യത്തിനായി പൂർണ്ണ കോഡ് ഇതാണ്: ```python # പരിശീലന ഡാറ്റ സജ്ജമാക്കുക @@ -335,54 +357,54 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# ട്രെയിന്-ടെസ്റ്റ് വിഭജനമുണ്ടാക്കുക +# ട്രെയിൻ-ടെസ്റ്റ് വിഭജനം നടത്തുക X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # പൈപ്പ്‌ലൈൻ സജ്ജമാക്കി പരിശീലിപ്പിക്കുക pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ടെസ്റ്റ് ഡാറ്റയ്ക്കുള്ള ഫലം പ്രവചിക്കുക +# ടെസ്റ്റ് ഡാറ്റയ്ക്ക് ഫലം പ്രവചിക്കുക pred = pipeline.predict(X_test) -# MSEയും നിർണയ കുറവും حسابിക്കുക -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSEയും നിശ്ചയകാംശവും കണക്കാക്കുക +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` + +ഇതിലൂടെ ഏകദേശം 97% ഡിറ്റർമിനേഷൻ കോഫീഷൻറ്, RMSE=2.23 (~8% പ്രവചന പിശക്) ലഭിക്കും. -ഏകദേശം 97% ശരിയായ നിർണ്ണയം സഹിതം, MSE=2.23 (~8% പ്രവചന പിശക്) നൽകുമെന്ന് ഇത് പ്രതീക്ഷിക്കാം. +| മോഡൽ | RMSE | ഡിറ്റർമിനേഷൻ | +|-------|-----|---------------| +| `DayOfYear` ലിനിയർ | 2.77 (17.2%) | 0.07 | +| `DayOfYear` പോളിനോമിയൽ | 2.73 (17.0%) | 0.08 | +| `Variety` ലിനിയർ | 5.24 (19.7%) | 0.77 | +| എല്ലാ പീച്ചറുകളും ലിനിയർ | 2.84 (10.5%) | 0.94 | +| എല്ലാ പീച്ചറുകളും പോളിനോമിയൽ | 2.23 (8.25%) | 0.97 | -| മോഡൽ | MSE | നിർണ്ണയം | -|-------|-----|---------| -| `DayOfYear` ലീനിയർ | 2.77 (17.2%) | 0.07 | -| `DayOfYear` പോളിനോമിയൽ | 2.73 (17.0%) | 0.08 | -| `Variety` ലീനിയർ | 5.24 (19.7%) | 0.77 | -| എല്ലാ ഫീച്ചറുകളും ലീനിയർ | 2.84 (10.5%) | 0.94 | -| എല്ലാ ഫീച്ചറുകളും പോളിനോമിയൽ | 2.23 (8.25%) | 0.97 | +🏆 നല്ലതാണ്! നിങ്ങൾ ഒരു പാഠത്തിൽ നാല് റെഗ്രഷൻ മോഡലുകളും സൃഷ്ടിച്ചു, മോഡൽ ഗുണനിലവാരം 97% വരെ മെച്ചപ്പെടുത്തി. റെഗ്രഷൻയുടെ അവസാന വിഭാഗത്തിൽ, വർഗ്ഗീയീകരണ നിശ്ചയിക്കാൻ ലോജിസ്റ്റിക് റെഗ്രഷൻ പഠിക്കും. -🏆 പ്രശംസകൾ! ഒരു പാഠത്തിൽ നാലു Regression മോഡലുകളും സൃഷ്ടിച്ചു, മോഡൽ ഗുണമേന്മ 97% വരെ മെച്ചപ്പെടുത്തിയിരിക്കുന്നു. അവസാന Regression ഭാഗത്ത് നിങ്ങൾക്ക് Logistic Regression ഉപയോഗിച്ച് വർഗ്ഗങ്ങൾ നിർണയിക്കുന്നതിനെ കുറിച്ച് പഠിക്കാം. - ---- -## 🚀ചിലവരികൾ +--- +## 🚀പതിൻകല -ഈ നോട്ട് ബുക്ക്-ൽ വ്യത്യസ്ത വേരിയബിൾസും പരീക്ഷിച്ച്, ടീമിനും മോഡൽ കൃത്യതയുമായി എങ്ങനെ ബന്ധമുണ്ടെന്ന് കണ്ടെത്തൂ. +ഈ നോട്ട്‌ബുക്കിൽ വിവിധ വേരിയബിളുകൾ പരീക്ഷിച്ച് അവയുടെ മോഡൽ കൃത്യതയോടുള്ള ബന്ധം പരിശോധിക്കുക. -## [പാ‌ഠാനന്തര പരീക്ഷ](https://ff-quizzes.netlify.app/en/ml/) +## [പാഠാനന്തര ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/) -## അവലോകനം & സ്വയം പഠനം +## പുനപരിശോധന & സ്വയം പഠനം -ഈ പാഠത്തിൽ നാം ലീനിയർ റഗ്രഷൻ പഠിച്ചു. മറ്റു പ്രധാനമായ Regression തരംകൾ ഉണ്ട്. Stepwise, Ridge, Lasso, Elasticnet സാങ്കേതിക വിദ്യകൾ പഠിക്കുക. മികച്ച കോഴ്‌സ് ഒരുപാട് പഠിക്കാൻ [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ആണ്. +ഈ പാഠത്തിൽ ലിനിയർ റെഗ്രഷൻ പഠിച്ചു. മറ്റ് പ്രധാന റെഗ്രഷൻ തരംകൾ ഉണ്ട്. Stepwise, Ridge, Lasso, Elasticnet സാങ്കേതികതകൾ പഠിക്കുക. കൂടുതൽ പഠനത്തിനായി മികച്ച കോഴ്സ് [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ആണ്. -## അസൈൻമെന്റ് +## അസൈന്മെന്റ് -[മോഡൽ നിർമ്മിക്കുക](assignment.md) +[ഒരു മോഡൽ നിർമ്മിക്കുക](assignment.md) --- -**ഡിസ്ക്ലെയിമർ**: -ഈ ഡോക്യുമെന്റ് എ.ഐ. ഭാഷാന്തര സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നമുക്ക് വ്യക്തതയുടെ വേണ്ടി ശ്രമിക്കുന്നുണ്ടെങ്കിലും, സ്വയമേറ്റു ചെയ്‌ത വിവർത്തനങ്ങളിൽ പിശകുകൾ ഉണ്ടാകാനുള്ള സാധ്യതയുണ്ടെന്ന് ദയവായി ശ്രദ്ധിക്കുക. യഥാർത്ഥ ഭാഷയിലെ മൂല ഡോക്യുമെന്റാണ് അതിന്റെ അവകാശപ്രദമായ ഉറവിടമെന്ന് കരുതേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനത്തിന്റെ ശിപാർശ ചെയ്യുന്നു. ഈ വിവർത്തനത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന ഏതൊരു തെറ്റായ ധാരണകൾക്കും അഭ്യൂഹങ്ങൾക്കും ഞങ്ങൾ ഉത്തരവാദികളല്ല. +**അക്കറപ്പ്**: +ഈ രേഖ [Co-op Translator](https://github.com/Azure/co-op-translator) എന്ന AI തർജ്ജമ സർവീസ് ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്കായി ശ്രമിച്ചാലും, ഓട്ടോമേറ്റഡ് തർജ്ജമകളിൽ പിശകുകൾ അല്ലെങ്കിൽ അസംബന്ധതകൾ ഉണ്ടാകാവുന്നതാണ് എന്നതു ദയവായി അറിയുക. ഉറപ്പായ ഉറവിടമായി ആ ഇന്ത്യി ഭാഷയിലെ പ്രമാണം പരിഗണിക്കേണ്ടതാണ്. നിർണായക വിവരങ്ങൾക്കായി പ്രൊഫഷണൽ മാന്‍വീയം തർജ്ജമ ശുപാർശ ചെയ്യുന്നു. ഈ തർജ്ജമ ഉപയോഗിച്ചതിനാൽ ഉണ്ടാകാവുന്ന തെറ്റിദ്ധാരണകൾക്കും തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കും ഞങ്ങൾ ഉത്തരവാദിത്വം ഏറ്റെടുക്കുന്നില്ല. \ No newline at end of file diff --git a/translations/ml/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ml/2-Regression/3-Linear/solution/notebook.ipynb index 7937aba695..8b9d312009 100644 --- a/translations/ml/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ml/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## പമ്പ്‌കിൻ വിലനിർണ്ണയത്തിനുള്ള ലീനിയർ ആൻഡ് പോളിനോമിയൽ റെഗ്രഷൻ - പാഠം 3\n", + "## കമ്ബളിക്കായ് വിലക്കണക്കുകൂട്ടലിനായുള്ള രേഖീയവും പോളിനോമിയൽ റെഗ്രഷനും - പാഠം 3\n", "\n", - "ആവശ്യമായ ലൈബ്രറികളും ഡാറ്റാസെറ്റും ലോഡ് ചെയ്യുക. ഡാറ്റയുടെ ഒരു ഉപസമൂഹം അടങ്ങിയ ഡാറ്റാഫ്രെയിമിലേക്ക് ഡാറ്റ മാറ്റുക:\n", + "ആവശ്യമായ ലൈബ്രറികളും ഡാറ്റാസെറ്റുകളും ലോഡ് ചെയ്യുക. ഡാറ്റയുടെ ഒരു ഉപസമൂഹം അടങ്ങിയ ഡാറ്റാഫ്രെയിമിലേക്ക് ഡാറ്റയെ പരിവർത്തനം ചെയ്യുക: \n", "\n", - "- ബഷെൽ പ്രകാരം വില നിശ്ചയിച്ച പമ്പ്‌കിനുകൾ മാത്രം എടുക്കുക\n", - "- തീയതി ഒരു മാസമായി മാറ്റുക\n", - "- വില ഉയർന്നതും താഴ്ന്നതും ശരാശരി ആയി കണക്കാക്കുക\n", - "- വില ബഷെൽ അളവിൽ വിലനിർണ്ണയം പ്രതിഫലിപ്പിക്കുന്ന വിധം മാറ്റുക\n" + "- ബഷെൽ അടിസ്ഥാനത്തിൽ വില നിശ്ചയിച്ച കമ്ബളികൾ മാത്രമേ ഉൾപ്പെടുത്തൂ\n", + "- തിയതി ഒരു മാസമായി മാറ്റുക\n", + "- വിലയെ ഉയർന്നതും താഴ്ന്നതുമായ വിലകളുടെ ശരാശരിയായി കണക്കാക്കുക\n", + "- വില ബഷെൽ അളവിന്റെ അടിസ്ഥാനത്തിൽ പ്രകടിപ്പിക്കാൻ മാറ്റുക\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ഒരു സ്‌കാറ്റർപ്ലോട്ട് നമ്മെ ഓർമ്മിപ്പിക്കുന്നു, ഞങ്ങൾക്ക് ആഗസ്റ്റ് മുതൽ ഡിസംബർ വരെ മാത്രമേ മാസ ഡാറ്റ ഉണ്ടായുള്ളൂ. ലീനിയർ രീതിയിൽ നിഗമനങ്ങൾ വരുത്താൻ കൂടുതൽ ഡാറ്റ ആവശ്യമുണ്ടാകാം.\n" + "ഒരു സ്‌കാറ്റർപ്ലോട്ട് നമ്മെ ഓർമ്മപ്പെടുത്തുന്നു, ആഗസ്റ്റ് മുതൽ ഡിസംബർ വരെ മാത്രമേ മാസം വിവരങ്ങൾ ഉണ്ടായിരിക്കുകയുള്ളൂ. രേഖാചിത്രരീതിയിൽ നിഗമനങ്ങൾ വരുത്താൻ കൂടുതൽ വിവരങ്ങൾ ആവശ്യമുണ്ടാകും.\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "സംബന്ധം വളരെ ചെറുതാണ് പോലെ തോന്നുന്നു, പക്ഷേ മറ്റൊരു കൂടുതൽ പ്രധാനപ്പെട്ട ബന്ധം ഉണ്ടെന്ന് തോന്നുന്നു - മുകളിൽ കാണിച്ച പ്ലോട്ടിലെ വില പോയിന്റുകൾ പല വ്യത്യസ്ത ക്ലസ്റ്ററുകളായി കാണപ്പെടുന്നു. വ്യത്യസ്ത പംപ്കിൻ വർഗ്ഗങ്ങൾ കാണിക്കുന്ന ഒരു പ്ലോട്ട് ഉണ്ടാക്കാം:\n" + "സംബന്ധം വളരെ ചെറിയതായിരുന്നാലും മറ്റൊരു പ്രധാനപ്പെട്ട ബന്ധമാണ് ഉള്ളത് - മുകളിൽ കൊടുത്തിരിക്കുന്ന പ്ലോട്ടിലുള്ള വിലയിരുത്തലുകളിൽ പല വിചിത്രങ്ങളായ ക്ലസ്റ്ററുകൾ വന്നിരിക്കുന്നത് കാണാം. വ്യത്യസ്തമായ പംപ്കിൻ ജാതികൾ കാണിക്കുന്ന ഒരു പ്ലോട്ട് ഉണ്ടാക്കിയാലോ:\n" ] }, { @@ -538,7 +538,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ഇപ്പോൾ, നാം ഒരു തരത്തിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കാം - **പൈ തരം**.\n" + "ഇപ്പോൾ, ഒരു തരത്തിൽ മാത്രമേ ശ്രദ്ധ കേന്ദ്രീകരിക്കൂ - **പൈ ടൈപ്പ്**.\n" ] }, { @@ -586,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ലീനിയർ റെഗ്രഷൻ\n", + "### ലൈനിയർ റെഗ്രഷൻ\n", "\n", - "നാം ലീനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കാൻ Scikit Learn ഉപയോഗിക്കും:\n" + "നാം ലൈനിയർ റെഗ്രഷൻ മോഡൽ പരിശീലിപ്പിക്കാൻ Scikit Learn ഉപയോഗിക്കും:\n" ] }, { @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "രേഖാഖണ്ഡത്തിന്റെ സ്ലോപ്പ് ലീനിയർ റെഗ്രഷൻ കോഫിഷ്യന്റുകളിൽ നിന്ന് നിർണയിക്കാം:\n" + "രേഖയുടെ സൈന്യവുംIntercept=\\\"0\\\" (linear regression coefficients) നിന്ന് രേഖയുടെ ഈര്ച്ചകവുമായെത്താം:\n" ] }, { @@ -693,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "നാം പരിശീലിപ്പിച്ച മോഡൽ ഉപയോഗിച്ച് വില പ്രവചിക്കാം:\n" + "നാം പരിശീലിപ്പിച്ച മോഡൽ ഉപയോഗിച്ച് വില മുൻകൂട്ടി പ്രവചിക്കാം:\n" ] }, { @@ -722,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### പോളിനോമിയൽ റെഗ്രഷൻ\n", + "### പൊളിനോമിയൽ റെഗ്രഷൻ\n", "\n", - "സവിശേഷതകളും ഫലങ്ങളും തമ്മിലുള്ള ബന്ധം സ്വാഭാവികമായി നോൺ-ലീനിയർ ആയിരിക്കാം. ഉദാഹരണത്തിന്, മത്തങ്ങയുടെ വില ശീതകാലത്ത് (മാസങ്ങൾ=1,2) ഉയർന്നിരിക്കാം, പിന്നീട് വേനലിൽ (മാസങ്ങൾ=5-7) താഴ്ന്ന്, പിന്നെ വീണ്ടും ഉയരാം. ലീനിയർ റെഗ്രഷൻ ഈ ബന്ധം കൃത്യമായി കണ്ടെത്താൻ കഴിയില്ല.\n", + "ഫീച്ചറുകൾക്കും ഫലങ്ങൾക്കും ഇടയിലുള്ള ബന്ധം സ്വാഭാവികമായി нелിനിയർ ആകുന്നപ്പോൾ ചിലപ്പോൾ സംഭവിക്കുന്നു. ഉദാഹരണത്തിന്, പംപ്കിൻ വിലകൾ ശീതകാലത്ത് (മാസങ്ങൾ=1,2) ഉയർന്നിരിക്കും, തുടർന്ന് വേനലിൽ (മാസങ്ങൾ=5-7) കുറയുകയും പിന്നീട് വീണ്ടും ഉയരുകയും ചെയ്യാം. ലിനിയർ റെഗ്രഷൻ ഈ ബന്ധം കൃത്യമായി കണ്ടെത്താനാവില്ല.\n", "\n", - "ഈ സാഹചര്യത്തിൽ, അധിക സവിശേഷതകൾ ചേർക്കുന്നത് പരിഗണിക്കാം. ലളിതമായ മാർഗം ഇൻപുട്ട് സവിശേഷതകളിൽ നിന്നുള്ള പോളിനോമിയലുകൾ ഉപയോഗിക്കുക എന്നതാണ്, ഇത് **പോളിനോമിയൽ റെഗ്രഷൻ** എന്ന ഫലത്തിലേക്ക് നയിക്കും. Scikit Learn-ൽ, പൈപ്പ്ലൈനുകൾ ഉപയോഗിച്ച് പോളിനോമിയൽ സവിശേഷതകൾ സ്വയം മുൻകൂട്ടി കണക്കാക്കാം: \n" + "ഇത്തരത്തിൽ, അധിക ഫീച്ചറുകൾ ചേർക്കുക പരിഗണിക്കാം. എളുപ്പം ചെയ്തത് ഇൻപുട്ട് ഫീച്ചറുകളിൽ നിന്ന് പൊളിനോമിയലുകൾ ഉപയോഗിക്കുക എന്നാണ്, ഇത് **പൊളിനോമിയൽ റെഗ്രഷൻ** ആകും. Scikit Learn-ഉം പൈപ്പ്ലൈനുകൾ ഉപയോഗിച്ച് പൊളിനോമിയൽ ഫീച്ചറുകൾ സ്വയം മുൻകൂട്ടി കണക്കാക്കാൻ കഴിയും:\n" ] }, { @@ -781,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### എൻകോഡിംഗ് വൈവിധ്യങ്ങൾ\n", + "### കോഡിംഗ് വകഭേദങ്ങൾ\n", "\n", - "ആദർശ ലോകത്ത്, നാം ഒരേ മോഡൽ ഉപയോഗിച്ച് വ്യത്യസ്ത പംപ്കിൻ വൈവിധ്യങ്ങളുടെ വിലകൾ പ്രവചിക്കാൻ ആഗ്രഹിക്കുന്നു. വൈവിധ്യം പരിഗണിക്കാൻ, ആദ്യം അത് സംഖ്യാത്മക രൂപത്തിലേക്ക് മാറ്റേണ്ടതുണ്ട്, അല്ലെങ്കിൽ **എൻകോഡ്** ചെയ്യേണ്ടതുണ്ട്. നാം ഇത് ചെയ്യാൻ പല മാർഗ്ഗങ്ങളുണ്ട്:\n", + "ആദർശ ലോകത്തിൽ, ഒരേ മോഡൽ ഉപയോഗിച്ച് വ്യത്യസ്ത മത്തങ്ങ വകഭേദങ്ങൾക്കായുള്ള വിലകളെ പ്രവചിക്കാൻ കഴിയും ആകണം. വകഭേദത്തെ ആശ്രയത്തിൽക്കൾക്കായി, ആദ്യം അതിനെ സംഖ്യാത്മക രൂപത്തിലേക്ക്, അല്ലെങ്കിൽ **എൻകോഡ്** ചെയ്യണം. ഇത് ചെയ്യാനുള്ള പല മാർഗങ്ങൾ ഉണ്ട്:\n", "\n", - "* ലളിതമായ സംഖ്യാത്മക എൻകോഡിംഗ്, ഇത് വ്യത്യസ്ത വൈവിധ്യങ്ങളുടെ ഒരു പട്ടിക നിർമ്മിച്ച്, പിന്നീട് ആ പട്ടികയിലെ സൂചിക ഉപയോഗിച്ച് വൈവിധ്യത്തിന്റെ പേര് മാറ്റും. ഇത് ലീനിയർ റെഗ്രഷനിൽ മികച്ച ആശയമല്ല, കാരണം ലീനിയർ റെഗ്രഷൻ സൂചികയുടെ സംഖ്യാത്മക മൂല്യം പരിഗണിക്കും, ആ സംഖ്യാത്മക മൂല്യം വിലയുമായി സംഖ്യാത്മകമായി ബന്ധപ്പെടാൻ സാധ്യതയില്ല.\n", - "* വൺ-ഹോട്ട് എൻകോഡിംഗ്, ഇത് `Variety` കോളം 4 വ്യത്യസ്ത കോളങ്ങളായി മാറ്റും, ഓരോ വൈവിധ്യത്തിനും ഒന്ന്, അതായത് നൽകിയ വരി ആ വൈവിധ്യത്തിനുള്ളതാണെങ്കിൽ 1, അല്ലെങ്കിൽ 0 അടങ്ങിയിരിക്കും.\n", + "* വ്യത്യസ്ത വകഭേദങ്ങളുടെ പട്ടിക ഒരുങ്ങിച്ചു, തുടർന്ന് പട്ടികയിലെ ഒരു സൂചിക ഉപയോഗിച്ച് വകഭേദത്തിന്റെ പേര് മാറ്റുന്ന ലളിത സംഖ്യാത്മക കോഡിംഗ്. ഇത് രേഖീയ റഗ്രഷൻയ്ക്ക് ഏറ്റവും നല്ല ആശയം അല്ല, കാരണം രേഖീയ റഗ്രഷൻ ആ സൂചികയുടെ സംഖ്യാത്മക മൂല്യത്തെ പരിഗണിക്കുന്നത്, ആ സംഖ്യാത്മക മൂല്യം വിലയുമായി സംഖ്യാത്മകമായി സാമ്യം കാണിക്കാതെ പോകാൻ സാധ്യതയുള്ളതാണ്.\n", + "* വൺ-ഹോട്ട് കോഡിംഗ്, ഇത് `Variety` കോളം നാലു വ്യത്യസ്ത കോളങ്ങളാൽ മാറ്റുകയും ഓരോ വകഭേദത്തിനും ഒരു കോളം നൽകുകയും ചെയ്യും, അതിൽ ബന്ധപ്പെട്ട വരി ആ വകഭേദത്തോട് അനുബന്ധമുള്ളതെങ്കിൽ 1 ഉണ്ടാകുകയും അല്ലെങ്കിൽ 0 ആയിരിക്കുകയും ചെയ്യും.\n", "\n", - "താഴെയുള്ള കോഡ് ഒരു വൈവിധ്യം വൺ-ഹോട്ട് എൻകോഡ് ചെയ്യുന്നത് എങ്ങനെ ചെയ്യാമെന്ന് കാണിക്കുന്നു:\n" + "തുടർന്ന് കൊടുക്കുന്ന കോഡ് ഏതെങ്ങനെ ഒരു വകഭേദം വൺ-ഹോട്ട് എൻകോഡ് ചെയ്യാമെന്ന് കാണിക്കുന്നു:\n" ] }, { @@ -944,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### വൈവിധ്യത്തിൽ ലീനിയർ റെഗ്രഷൻ\n", + "### വൈവിധ്യത്തില്‍ ലിനിയര്‍ റെഗ്രഷന്‍ \n", "\n", - "മുകളിൽ നൽകിയ കോഡ് തന്നെ ഇനി ഉപയോഗിക്കും, പക്ഷേ `DayOfYear` എന്നതിന് പകരം ഞങ്ങൾ നമ്മുടെ വൺ-ഹോട്ട്-എൻകോഡഡ് വൈവിധ്യത്തെ ഇൻപുട്ടായി ഉപയോഗിക്കും:\n" + "മുകളിലുള്ളത് പോലെ തന്നെ കോഡ് നമ്മള്‍ ഇനി ഉപയോഗിക്കും, പക്ഷേ `DayOfYear` ന്റെ പകരമായി ഞങ്ങളുടെ വണ്‍-ഹോട്ട്-എൻകോഡഡ് വൈവിധ്യം ഇന്‍പുട്ടായി ഉപയോഗിക്കും:\n" ] }, { @@ -994,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "നാം മറ്റുള്ള ഫീച്ചറുകളും അതേ രീതിയിൽ ഉപയോഗിച്ച്, അവയെ സംഖ്യാത്മക ഫീച്ചറുകളുമായി, ഉദാഹരണത്തിന് `Month` അല്ലെങ്കിൽ `DayOfYear` എന്നിവയുമായി സംയോജിപ്പിച്ച് പരീക്ഷിക്കാം:\n" + "നാം മറ്റേതെങ്കിലും ഫീച്ചറുകളും അതേ രീതിയിൽ പരീക്ഷിച്ചു കാണാം, കൂടാതെ അവയെ സംഖ്യാത്മക ഫീച്ചറുകളുമായും, ഉദാഹരണത്തിന് `Month` അല്ലെങ്കിൽ `DayOfYear` ഫീച്ചറുകളുമായും സംയോജിപ്പിക്കാം:\n" ] }, { @@ -1025,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### പോളിനോമിയൽ റെഗ്രഷൻ\n", + "### പൊളിനോമിയൽ റിപ്പ്രെഷൻ\n", "\n", - "ഒന്ന്-ഹോട്ട് എൻകോഡുചെയ്ത വർഗ്ഗീയ ഫീച്ചറുകളോടും പോളിനോമിയൽ റെഗ്രഷൻ ഉപയോഗിക്കാം. പോളിനോമിയൽ റെഗ്രഷൻ പരിശീലിപ്പിക്കുന്ന കോഡ് മുകളിൽ കാണിച്ചതുപോലെ തന്നെ ആയിരിക്കും.\n" + "ഒന്ന്-ഹോട്ട് എങ്കോഡുചെയ്‌ത വർഗ്ഗീകരണ ഫീച്ചറുകളോടും പൊളിനോമിയൽ റിപ്പ്രെഷൻ ഉപയോഗിക്കാം. പൊളിനോമിയൽ റിപ്പ്രെഷൻ ട്രെയിൻ ചെയ്യാനുള്ള കോഡ് മുകളിൽ നോക്കിയതുപോലെ തന്നെ ആയിരിക്കും.\n" ] }, { @@ -1074,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n" + "---\n\n\n**സ്പെഷൽ നോട്ടീസ്**: \nഈ പ്രമാണം AI പരിഭാഷ സേവനമായ [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് പരിഭാഷപ്പെടുത്തി. നിഷ്‌ക്കളങ്കതയ്ക്ക് ഞങ്ങൾ ശ്രമിച്ചുവെങ്കിലും, യന്ത്രം നിർവഹിക്കുന്ന പരിഭാഷയിൽ പിഴവുകൾ അല്ലെങ്കിൽ അശുദ്ധികൾ ഉണ്ടാകാൻ സാദ്ധ്യമാണ്. പ്രമാണം ആർക്കും അന്യഭാഷയിൽ ഏറ്റവും ഔദ്യോഗികമായ ഉറവിടമായി പരിഗണിക്കപ്പെടേണ്ടത് ആണ്. നിർണ്ണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മാനവ പരിഭാഷ ശുപാര്‍ശ ചെയ്യുന്നു. ഈ പരിഭാഷയുടെ ഉപയോഗത്തിൽ നിന്നുള്ള തെറ്റുപറിച്ചോ തെറ്റായി വ്യാഖ്യാനിച്ചതിലോ ഞങ്ങൾ ഉത്തരവാദിത്വം വഹിക്കുന്നില്ല.\n\n" ] } ], @@ -1104,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-12-19T16:19:46+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ml" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/te/.co-op-translator.json b/translations/te/.co-op-translator.json index 5206c1ffbd..f9acb57832 100644 --- a/translations/te/.co-op-translator.json +++ b/translations/te/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "te" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-12-19T13:34:27+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:31:56+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "te" }, @@ -90,8 +90,8 @@ "language_code": "te" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:32:43+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:31:18+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "te" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "te" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:28:52+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "te" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-12-19T14:03:43+00:00", diff --git a/translations/te/1-Introduction/4-techniques-of-ML/README.md b/translations/te/1-Introduction/4-techniques-of-ML/README.md index 6e9e6297ad..90fde02740 100644 --- a/translations/te/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/te/1-Introduction/4-techniques-of-ML/README.md @@ -1,125 +1,125 @@ # మెషీన్ లెర్నింగ్ సాంకేతికతలు -మెషీన్ లెర్నింగ్ మోడల్స్ మరియు అవి ఉపయోగించే డేటాను నిర్మించడం, ఉపయోగించడం మరియు నిర్వహించడం అనేది అనేక ఇతర అభివృద్ధి వర్క్‌ఫ్లోల నుండి చాలా భిన్నమైన ప్రక్రియ. ఈ పాఠంలో, మేము ఈ ప్రక్రియను సులభతరం చేస్తాము, మరియు మీరు తెలుసుకోవలసిన ప్రధాన సాంకేతికతలను వివరించబోతున్నాము. మీరు: +మెషీన్ లెర్నింగ్ మోడల్స్ మరియు అవి ఉపయోగించే డేటాను నిర్మించడం, ఉపయోగించడం మరియు నిర్వహించడం అనేది అనేక ఇతర అభివృద్ధి పనితీరుల నుండి పూర్తిగా భిన్నమైన ప్రక్రియ. ఈ పాఠంలో, మేము ఈ ప్రక్రియను సులభతరం చేస్తాము మరియు మీరు తెలుసుకోవలసిన ప్రధాన సాంకేతికతలను వివరించబోతున్నాము. మీరు: -- మెషీన్ లెర్నింగ్ ఆధారిత ప్రక్రియలను ఉన్నత స్థాయిలో అర్థం చేసుకుంటారు. -- 'మోడల్స్', 'పూర్వానుమానాలు', మరియు 'శిక్షణ డేటా' వంటి ప్రాథమిక భావనలను అన్వేషిస్తారు. +- మెషీన్ లెర్నింగ్ ఆధారమైన ప్రక్రియలను ఉన్నతస్థాయిలో అర్థం చేసుకుంటారు. +- 'మోడల్స్', 'ప్రిడిక్షన్స్', మరియు 'ట్రైనింగ్ డేటా' వంటి ప్రాథమిక భావనలు తోచుకుంటారు. -## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) +## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 ఈ పాఠం ద్వారా పనిచేసే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. +> 🎥 ఈ పాఠాన్ని వివరించే చిన్న వీడియో కోసం పై చిత్రం క్లిక్ చేయండి. ## పరిచయం -ఉన్నత స్థాయిలో, మెషీన్ లెర్నింగ్ (ML) ప్రక్రియలను సృష్టించే కళ అనేక దశలతో కూడి ఉంటుంది: +మెషీన్ లెర్నింగ్ (ML) ప్రక్రియలను సృష్టించడం అంటే అనేక దశల కలయికగా ఉంటుంది: -1. **ప్రశ్నను నిర్ణయించండి**. చాలా ML ప్రక్రియలు సాధారణ కండిషనల్ ప్రోగ్రామ్ లేదా నియమాల ఆధారిత ఇంజిన్ ద్వారా సమాధానం ఇవ్వలేని ప్రశ్న అడగడం ద్వారా ప్రారంభమవుతాయి. ఈ ప్రశ్నలు తరచుగా డేటా సేకరణ ఆధారంగా పూర్వానుమానాల చుట్టూ ఉంటాయి. -2. **డేటాను సేకరించి సిద్ధం చేయండి**. మీ ప్రశ్నకు సమాధానం ఇవ్వడానికి, మీరు డేటా అవసరం. మీ డేటా నాణ్యత మరియు కొన్నిసార్లు పరిమాణం మీ ప్రారంభ ప్రశ్నకు మీరు ఎంత బాగా సమాధానం ఇవ్వగలరో నిర్ణయిస్తుంది. డేటాను దృశ్యీకరించడం ఈ దశలో ముఖ్యమైన అంశం. ఈ దశలో డేటాను శిక్షణ మరియు పరీక్షా సమూహాలుగా విభజించడం కూడా ఉంటుంది. -3. **శిక్షణ పద్ధతిని ఎంచుకోండి**. మీ ప్రశ్న మరియు డేటా స్వభావం ఆధారంగా, మీరు మీ డేటాను ప్రతిబింబించే మరియు దాని పై ఖచ్చితమైన పూర్వానుమానాలు చేయగలిగే మోడల్‌ను శిక్షణ ఇవ్వడానికి ఎలా శిక్షణ ఇవ్వాలనే నిర్ణయించుకోవాలి. ఇది మీ ML ప్రక్రియలో ప్రత్యేక నైపుణ్యం మరియు తరచుగా అనేక ప్రయోగాలు అవసరమయ్యే భాగం. -4. **మోడల్‌ను శిక్షణ ఇవ్వండి**. మీ శిక్షణ డేటాను ఉపయోగించి, మీరు వివిధ అల్గోరిథమ్స్ ఉపయోగించి డేటాలో నమూనాలను గుర్తించే మోడల్‌ను శిక్షణ ఇస్తారు. మోడల్ అంతర్గత బరువులను ఉపయోగించి, డేటా యొక్క కొన్ని భాగాలను ప్రాధాన్యం ఇవ్వడానికి సర్దుబాటు చేయవచ్చు. -5. **మోడల్‌ను మూల్యాంకనం చేయండి**. మీరు సేకరించిన డేటా నుండి ఇప్పటివరకు చూడని డేటా (మీ పరీక్షా డేటా) ఉపయోగించి మోడల్ ఎలా పనిచేస్తుందో చూడండి. -6. **పారామీటర్ ట్యూనింగ్**. మీ మోడల్ పనితీరు ఆధారంగా, మీరు మోడల్ శిక్షణకు ఉపయోగించే అల్గోరిథమ్స్ ప్రవర్తనను నియంత్రించే వివిధ పారామీటర్లను మార్చి ప్రక్రియను మళ్లీ చేయవచ్చు. -7. **పూర్వానుమానం చేయండి**. మీ మోడల్ ఖచ్చితత్వాన్ని పరీక్షించడానికి కొత్త ఇన్‌పుట్‌లను ఉపయోగించండి. +1. **ప్రశ్నను నిర్ణయించండి**. ఎక్కువ ML ప్రక్రియలు సరళ కండిషనల్ ప్రోగ్రామ్ లేదా నియమాల ఆధారిత ఇంజిన్ ద్వారా సమాధానం చెప్పలేని ప్రశ్నతో ప్రారంభమవుతాయి. ఈ ప్రశ్నలు సాధారణంగా డేటా సేకరణ ఆధారంగా భవిష్యత్ అంచనాల చుట్టూ ఉంటాయి. +2. **డేటా సేకరించి సిద్ధం చేసుకోండి**. మీ ప్రశ్నకు సమాధానం చెప్పడానికి మీరు డేటా అవసరం. డేటా గുണాత్మకత మరియు కొన్నిసార్లు పరిమాణం మీ ఆరంభ ప్రశ్నకు మీరు ఎంత బాగా సమాధానం చెప్పగలరో నిర్ణయిస్తుంది. ఈ దశలో డేటా విజువలైజేషన్ చాలా ముఖ్యం. ఈ దశలో డేటాను ట్రెయినింగ్ మరియు టెస్టింగ్ గ్రూపులుగా విభజించడం కూడా ఉంటుంది. +3. **ట్రైనింగ్ పద్ధతి ఎంచుకోండి**. మీ ప్రశ్న మరియు డేటా స్వభావాన్ని బట్టి, మోడల్ ను ఉత్తమంగా ప్రతిబింబించడానికి మరియు ఖచ్చితంగా అంచనా వేయడానికి మీరు ఎలా ట్రెయిన్ చేయాలనుకుంటున్నారో ఎంచుకోవాలి. ఇది మీ ML ప్రక్రియలో ప్రత్యేక నైపుణ్యం మరియు చాలాసార్లు చాలా ప్రయోగాలు అవసరమయ్యే భాగం. +4. **మోడల్ ట్రెయిన్ చేయండి**. మీరు ట్రెయినింగ్ డేటా ఉపయోగించి వివిధ అల్గోరిథమ్ల ద్వారా ప్యాటర్న్లను గుర్తించేందుకు మోడల్ ను ట్రెయిన్ చేస్తారు. మోడల్ అనేకమైన అంతర్గత బరువులను ఉపయోగించి డేటాలో కొన్ని భాగాలపై ఎక్కువ ప్రాధాన్యత ఇవ్వడానికి సర్దుబాటు చేయవచ్చు. +5. **మోడల్ ను అంచనా వేయండి**. మీ సేకరించిన డేటా నుండి ఇప్పటివరకూ చూసిన విషయం కాని డేటా (టెస్టింగ్ డేటా) ఉపయోగించి మోడల్ ప్రదర్శనను పరిశీలిస్తారు. +6. **పారామీటర్ సర్దుబాటు**. మోడల్ ప్రదర్శన ఆధారంగా, మీరు ట్రెయినింగ్ అల్గోరిథమ్ నడిపే వివిధ పారామీటర్లను మారుస్తూ ప్రక్రియను పునరావృతం చేయవచ్చు. +7. **అంచనా వేయండి**. కొత్త ఇన్‌పుట్లను ఉపయోగించి మోడల్ ఖచ్చితత్వాన్ని పరీక్షించండి. -## ఏ ప్రశ్న అడగాలి +## ఎలాంటి ప్రశ్న అడగాలి -కంప్యూటర్లు డేటాలో దాగి ఉన్న నమూనాలను కనుగొనడంలో ప్రత్యేక నైపుణ్యం కలిగి ఉంటాయి. ఈ ఉపయోగం, ఒక నిర్దిష్ట డొమైన్ గురించి ప్రశ్నలు ఉన్న పరిశోధకులకు చాలా సహాయకరం, వీటిని సులభంగా కండిషనల్ నియమాల ఇంజిన్ సృష్టించడం ద్వారా సమాధానం ఇవ్వలేము. ఉదాహరణకు, ఒక ఆక్చ్యూరియల్ పని కోసం, డేటా సైంటిస్ట్ పొగతాగేవారు మరియు పొగతాగని వారి మరణాలపై చేతితో తయారు చేసిన నియమాలను నిర్మించవచ్చు. +కంప్యూటర్లు డేటాలో దాగిన నమూనాలు కనుగొనడంలో ప్రత్యేక నైపుణ్యం కలిగి ఉంటాయి. ఈ ఉపయోగకరత అనేక రంగాలలో సులభంగా పరిష్కరించలేని ప్రశ్నలను ఎవరిదైనా అడగడానికి సహాయం చేస్తుంది. ఉదాహరణకు, ఒక్క వ్యక్తి ఆరోగ్య చరిత్ర ఆధారంగా భవిష్యత్ మరణాల రేట్లను అంచనా వేసేందుకు ML మోడల్ ఉపయోగపడవచ్చు. -అయితే, మరిన్ని వేరియబుల్స్ ఈ సమీకరణలో చేర్చినప్పుడు, గత ఆరోగ్య చరిత్ర ఆధారంగా భవిష్యత్ మరణాల రేట్లను పూర్వానుమానించడానికి ML మోడల్ మరింత సమర్థవంతంగా ఉండవచ్చు. మరింత సంతోషకరమైన ఉదాహరణగా, ఒక నిర్దిష్ట ప్రదేశంలో ఏప్రిల్ నెలకు వాతావరణ పూర్వానుమానాలు చేయడం, ఇందులో అక్షాంశం, రేఖాంశం, వాతావరణ మార్పు, సముద్రానికి సమీపత, జెట్ స్ట్రీమ్ నమూనాలు మరియు మరిన్ని డేటా ఉంటాయి. +రెండవ ఉదాహరణకి, ఎпрిల్ నెలలో ఇచ్చిన ప్రాంతంలో వాతావరణ అంచనాలు latitude, longitude, వాతావరణ మార్పులు, సముద్రం సమీపత, జెట్ స్ట్రీమ్ నమూనాలు వంటి డేటాను ఉపయోగించి చేయవచ్చు. -✅ ఈ [స్లైడ్ డెక్](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) వాతావరణ మోడల్స్ పై ML వాడకం కోసం చారిత్రక దృష్టికోణాన్ని అందిస్తుంది. +✅ ఈ [స్లైడ్ డెక్](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) వాతావరణ నమూనాలపై ইতিহাসాత్మక దృష్టికోణాన్ని ML ఉపయోగంతో అందిస్తుంది. -## నిర్మాణానికి ముందు పనులు +## నిర్మాణానికి ముందున్న పనులు -మీ మోడల్‌ను నిర్మించడం ప్రారంభించే ముందు, మీరు పూర్తి చేయవలసిన కొన్ని పనులు ఉన్నాయి. మీ ప్రశ్నను పరీక్షించడానికి మరియు మోడల్ పూర్వానుమానాల ఆధారంగా ఒక హైపోథసిస్ రూపొందించడానికి, మీరు కొన్ని అంశాలను గుర్తించి కాన్ఫిగర్ చేయాలి. +మీ మోడల్ నిర్మాణం మొదలుపెట్టేముందు కొన్ని పనులు పూర్తి చేయాలి. ఒక మోడల్ భవిష్యత్ అంచనాలపై మీరు మీ ప్రశ్నను పరీక్షించడానికి మరియు హైపోతసిస్ చేయడానికి, మీరు కొన్ని అంశాలను గుర్తించి సెట్ చేసుకోవాలి. ### డేటా -మీ ప్రశ్నకు ఏదైనా స్థాయిలో సమాధానం ఇవ్వడానికి, మీరు సరైన రకమైన మంచి పరిమాణంలో డేటా అవసరం. ఈ సమయంలో మీరు చేయవలసిన రెండు విషయాలు: +మీ ప్రశ్నకు నిశ్చయంగా సమాధానం చెప్పడానికి సరైన రకమైన పెద్ద డేటా అవసరం. ఈ సమయంలో మీరు చేయవలసింది: -- **డేటాను సేకరించండి**. డేటా విశ్లేషణలో న్యాయసమ్మతతపై గత పాఠాన్ని గుర్తుంచుకుని, జాగ్రత్తగా డేటాను సేకరించండి. ఈ డేటా మూలాలను, దాని లోపభూయిష్టతలను తెలుసుకోండి మరియు మూలాన్ని డాక్యుమెంట్ చేయండి. -- **డేటాను సిద్ధం చేయండి**. డేటా సిద్ధం ప్రక్రియలో అనేక దశలు ఉంటాయి. మీరు డేటాను సేకరించి, వేర్వేరు మూలాల నుండి వచ్చినట్లయితే సాధారణీకరించవలసి ఉంటుంది. మీరు డేటా నాణ్యత మరియు పరిమాణాన్ని మెరుగుపరచడానికి వివిధ పద్ధతులు ఉపయోగించవచ్చు, ఉదాహరణకు స్ట్రింగ్స్‌ను సంఖ్యలుగా మార్చడం ([క్లస్టరింగ్](../../5-Clustering/1-Visualize/README.md) లో చేయడం లాంటిది). మీరు కొత్త డేటాను కూడా సృష్టించవచ్చు, అసలు డేటా ఆధారంగా ([వర్గీకరణ](../../4-Classification/1-Introduction/README.md) లో చేయడం లాంటిది). మీరు డేటాను శుభ్రపరచి సవరించవచ్చు ([వెబ్ యాప్](../../3-Web-App/README.md) పాఠం ముందు). చివరగా, మీరు శిక్షణ సాంకేతికతలపై ఆధారపడి డేటాను యాదృచ్ఛికంగా మార్చి కలపవలసి ఉండవచ్చు. +- **డేటా సేకరించండి**. గత పాఠంలో డేటా న్యాయవంతత్వంపై నేర్చుకున్నట్లు, జాగ్రత్తగా డేటాను సేకరించండి. డేటా మూలాలపై జాగ్రత్త వహించండి, దానికి సంబంధించిన అహంకారాలు (biases) తెలుసుకోండి మరియు మూలాన్ని డాక్యుమెంట్ చేయండి. +- **డేటా సిద్ధం చేయండి**. డేటా సిద్ధం చేసే ప్రక్రియలో అనేక దశలు ఉంటాయి. మీ డేటా వేర్వేరు మూలాల నుండి వస్తే, ఒకే రూపంలో మార్చడం అవసరం. మీ డేటా నాణ్యత మరియు పరిమాణాన్ని మెరుగుపరచడానికి స్ట్రింగ్స్‌ని నంబర్లుగా మార్చడం వంటి మార్గాలు స్వీకరించవచ్చు (మనము [క్లస్టరింగ్](../../5-Clustering/1-Visualize/README.md) లో చేయడం). మీరు కొత్త డేటా కూడా సృష్టించవచ్చు (మనము [వర్గీకరణ](../../4-Classification/1-Introduction/README.md) లో చేయడం). మీరు డేటాను శుభ్రపరచడం మరియు సవరించవచ్చు ([వెబ్ యాప్](../../3-Web-App/README.md) పాఠం ముందు). చివరిగా, ట్రెయినింగ్ సాంకేతికతల ఆధారంగా డేటాను రాండమ్ చేసుకోవచ్చు మరియు షఫుల్ చేయవచ్చు. -✅ డేటాను సేకరించి ప్రాసెస్ చేసిన తర్వాత, దాని ఆకారం మీ ఉద్దేశించిన ప్రశ్నను పరిష్కరించగలదా అని ఒక క్షణం పరిశీలించండి. మీ డేటా మీ పని లో బాగా పనిచేయకపోవచ్చు, ఇది మేము మా [క్లస్టరింగ్](../../5-Clustering/1-Visualize/README.md) పాఠాలలో కనుగొంటాము! +✅ డేటాను సేకరించి ప్రాసెస్ చేసిన తర్వాత, దాని ఆకారం మీ ప్రశ్నను సమర్థవంతంగా పరిష్కరించగలదా అని చూడండి. మనం [క్లస్టరింగ్](../../5-Clustering/1-Visualize/README.md) పాఠాలలో చూచినట్లు, కొన్నిసార్లు డేటా పనితీరు తక్కువగా ఉండవచ్చు! -### లక్షణాలు మరియు లక్ష్యం +### ఫీచర్స్ మరియు లక్ష్యం -[లక్షణం](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) అనేది మీ డేటా యొక్క కొలవదగిన లక్షణం. అనేక డేటాసెట్‌లలో ఇది 'తేదీ', 'పరిమాణం' లేదా 'రంగు' వంటి కాలమ్ శీర్షికగా వ్యక్తమవుతుంది. మీ లక్షణ వేరియబుల్, సాధారణంగా కోడ్‌లో `X` గా సూచించబడుతుంది, మోడల్ శిక్షణకు ఉపయోగించే ఇన్‌పుట్ వేరియబుల్‌ను సూచిస్తుంది. +[ఫీచర్](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) అనేది మీ డేటా యొక్క కొలవగల గుణం. చాలా డేటాసెట్లలో ఇది కాలమ్ పేర్లుగా ఉంటుంది, ఉదా: 'తేదీ', 'పరిమాణం', లేదా 'రంగు'. మీ ఫీచర్ వేరియబుల్ సాధారణంగా కోడ్ లో `X` ద్వారా సూచించబడుతుంది, ఇది మోడల్ ట్రెయిన్ చేయడానికి ఉపయోగించే ఇన్‌పుట్ వేరియబుల్. -లక్ష్యం మీరు పూర్వానుమానం చేయదలచిన విషయం. లక్ష్యం సాధారణంగా కోడ్‌లో `y` గా సూచించబడుతుంది, ఇది మీరు మీ డేటాకు అడగదలచిన ప్రశ్నకు సమాధానం సూచిస్తుంది: డిసెంబర్‌లో, ఏ **రంగు** గుమ్మడికాయలు చౌకగా ఉంటాయి? సాన్ ఫ్రాన్సిస్కోలో, ఏ ప్రాంతాల్లో ఉత్తమ రియల్ ఎస్టేట్ **ధర** ఉంటుంది? కొన్నిసార్లు లక్ష్యాన్ని లేబుల్ అట్రిబ్యూట్ అని కూడా పిలుస్తారు. +లక్ష్యం అంటే మీరు అంచనా వేయాలనుకుంటున్న విషయం. లక్ష్యం సాధారణంగా కోడ్ లో `y` ద్వారా సూచించబడుతుంది, ఇది మీరు అడగాలనుకుంటున్న ప్రశ్నకు సమాధానం: డిసెంబర్ నెలలో, ఏ **రంగు** తో కాకులు చౌకగా ఉంటాయి? శాన్ ఫ్రాన్సిస్కో లో ఏ ప్రాంతాల్లో ఉత్తమ ఆస్తి **ధర** ఉంటుంది? లక్ష్యాన్ని లేబుల్ అట్రిబ్యూట్ అని కూడా పిలుస్తారు. -### మీ లక్షణ వేరియబుల్‌ను ఎంచుకోవడం +### ఫీచర్ వేరియబుల్ ఎంచుకోవడం -🎓 **లక్షణ ఎంపిక మరియు లక్షణ ఉత్పత్తి** మోడల్ నిర్మిస్తున్నప్పుడు మీరు ఏ వేరియబుల్ ఎంచుకోవాలో ఎలా తెలుసుకుంటారు? మీరు ఎక్కువగా పనితీరు ఉన్న మోడల్ కోసం సరైన వేరియబుల్స్ ఎంచుకోవడానికి లక్షణ ఎంపిక లేదా లక్షణ ఉత్పత్తి ప్రక్రియలోకి వెళ్తారు. అవి ఒకే విషయం కాదు: "లక్షణ ఉత్పత్తి అసలు లక్షణాల ఫంక్షన్ల నుండి కొత్త లక్షణాలను సృష్టిస్తుంది, అయితే లక్షణ ఎంపిక లక్షణాల ఉపసమితిని తిరిగి ఇస్తుంది." ([మూలం](https://wikipedia.org/wiki/Feature_selection)) +🎓 **ఫీచర్ ఎంపిక మరియు ఫీచర్ ఎక్స్‌ట్రాక్షన్** మోడల్ క్రియేటింగ్ సమయంలో ఎటువంటి వేరియబుల్ ఎంచుకోవాలో ఎలా తెలుసుకోవాలి? మీరు పనితీరు మెరుగైన ఫీచర్‌లను ఎంచుకునేందుకు ఫీచర్ ఎంపిక లేదా ఫీచర్ ఎక్స్‌ట్రాక్షన్ ప్రక్రియలను అనుసరిస్తారు. అవి ఒకే విషయం కావు: "ఫీచర్ ఎక్స్‌ట్రాక్షన్ అనేది అసలు ఫీచర్‌ల నుండి కొత్త ఫీచర్‌లను సృష్టించడం, ఫీచర్ ఎంపిక అనేది ఫీచర్‌లలో ఒక ఉపసమితి ఎంపిక చేయడం." ([మూలం](https://wikipedia.org/wiki/Feature_selection)) -### మీ డేటాను దృశ్యీకరించండి +### డేటాను విజువలైజ్ చేయండి -డేటా సైంటిస్ట్ టూల్‌కిట్‌లో ఒక ముఖ్యమైన అంశం అనేక అద్భుతమైన లైబ్రరీలు వంటి Seaborn లేదా MatPlotLib ఉపయోగించి డేటాను దృశ్యీకరించడం. మీ డేటాను దృశ్య రూపంలో ప్రదర్శించడం దాగి ఉన్న సంబంధాలను కనుగొనడానికి సహాయపడవచ్చు. మీ దృశ్యీకరణలు పక్షపాతం లేదా అసమతులిత డేటాను కూడా కనుగొనడంలో సహాయపడవచ్చు ([వర్గీకరణ](../../4-Classification/2-Classifiers-1/README.md) లో మేము కనుగొంటాము). +డేటా సెయింటిస్ట్ సాధనాలలో మేజరు పార్ట్ డేటాను వ్యూయలైజ్ చేయగల సామర్థ్యం. సీబోర్న్ లేదా మ్యాట్ప్లాట్‌లిబ్ వంటి గొప్ప లైబ్రరీలను ఉపయోగించి మీరు డేటాను విజువలైజ్ చేయవచ్చు. ఇలా చేస్తే దాగున్న సంబంధాలను కనుగొనడం సులభం అవుతుంది. మీ విజువలైజేషన్స్ బయస్ లేదా అసమతులిత డేటాను కూడా బయట పారవేయడానికి సహాయపడతాయి ([వర్గీకరణ](../../4-Classification/2-Classifiers-1/README.md) లో చూశాం). -### మీ డేటాసెట్‌ను విభజించండి +### డేటాసెట్ విభజించండి -శిక్షణకు ముందు, మీరు మీ డేటాసెట్‌ను రెండు లేదా అంతకంటే ఎక్కువ భాగాలుగా విభజించాలి, ఇవి అసమాన పరిమాణాలైనప్పటికీ డేటాను బాగా ప్రతిబింబించాలి. +ట్రెయినింగ్‌కు ముందు, మీరు డేటాను రెండు లేదా దానికంటే ఎక్కువ భాగాలుగా విభజించాలి, వాటి పరిమాణాలు సమానంగా లేకపోయినా, డేటాను బాగానే ప్రాతినిధ్యం వహించాలి. -- **శిక్షణ**. డేటాసెట్ ఈ భాగం మీ మోడల్‌కు సరిపోతుంది, దీని ద్వారా మోడల్ శిక్షణ పొందుతుంది. ఇది అసలు డేటాసెట్‌లో ఎక్కువ భాగాన్ని కలిగి ఉంటుంది. -- **పరీక్ష**. పరీక్షా డేటాసెట్ స్వతంత్ర డేటా సమూహం, తరచుగా అసలు డేటా నుండి సేకరించబడినది, దీన్ని మీరు నిర్మించిన మోడల్ పనితీరును నిర్ధారించడానికి ఉపయోగిస్తారు. -- **ధృవీకరణ**. ధృవీకరణ సెట్ అనేది చిన్న స్వతంత్ర ఉదాహరణల సమూహం, దీన్ని మీరు మోడల్ యొక్క హైపర్‌పారామీటర్లను లేదా నిర్మాణాన్ని మెరుగుపరచడానికి ఉపయోగిస్తారు. మీ డేటా పరిమాణం మరియు మీరు అడుగుతున్న ప్రశ్న ఆధారంగా, మీరు ఈ మూడవ సెట్‌ను నిర్మించాల్సిన అవసరం ఉండకపోవచ్చు ([టైమ్ సిరీస్ ఫోర్కాస్టింగ్](../../7-TimeSeries/1-Introduction/README.md) లో మేము గమనిస్తాము). +- **ట్రెయినింగ్**. ఈ డేటా మోడల్ ట్రెయినింగ్ కోసం ఉపయోగిస్తారు. ఇది అసలు డేటాసెట్ యొక్క ముఖ్య భాగం. +- **టెస్టింగ్**. టెస్టింగ్ డేటా ఒక స్వతంత్ర గ్రూప్ డేటా, సాధారణంగా అసలు డేటా నుంచి తీసుకున్నది, దీన్ని మోడల్ పనితీరు నిర్ధారించడానికి ఉపయోగిస్తారు. +- **వెలిడేషన్**. వెలిడేషన్ సెట్ చిన్న స్వతంత్ర ఉదాహరణల సమూహం, దీన్ని మోడల్ హైపరparameters లేదా నిర్మాణం సవరించడానికి ఉపయోగిస్తారు. మీ డేటా పరిమాణం మరియు ప్రశ్న ఆధారంగా, మీరు ఈ మూడవ సెట్ అవసరం లేకపోవచ్చు ([టైమ్ సిరీస్ ఫోర్కాస్టింగ్](../../7-TimeSeries/1-Introduction/README.md) లో). -## మోడల్ నిర్మాణం +## మోడల్ నిర్మించడం -మీ శిక్షణ డేటాను ఉపయోగించి, మీరు వివిధ అల్గోరిథమ్స్ ఉపయోగించి మీ డేటా యొక్క గణాంకాత్మక ప్రాతినిధ్యంగా ఒక మోడల్‌ను **శిక్షణ** ఇవ్వడం లక్ష్యం. మోడల్ శిక్షణ డేటాను చూసి, దాని లోపల ఉన్న నమూనాలను గుర్తించి, అంచనాలు వేస్తుంది, వాటిని ధృవీకరిస్తుంది మరియు అంగీకరిస్తుంది లేదా తిరస్కరిస్తుంది. +ట్రెయినింగ్ డేటా ఉపయోగించి, మీరు వివిధ అల్గోరిథమ్‌లను ఉపయోగించి మోడల్ లేదా మీ డేటా యొక్క గణాంకాత్మక ప్రాతినిధ్యం నిర్మించడానికి ట్రెయిన్ చేస్తారు. మోడల్‌ను ట్రెయిన్ చేస్తే, అది డేటాలో తీసుకువచ్చిన నమూనాలను గుర్తించి అంచనా వేయగలుగుతుంది, తన అనుమానాలను కూడా ధృవీకరించడంతో పాటు అంగీకరించవచ్చు లేదా తిరస్కరించవచ్చు. -### శిక్షణ పద్ధతిని నిర్ణయించండి +### ట్రెయినింగ్ పద్ధతిని నిర్ణయించండి -మీ ప్రశ్న మరియు డేటా స్వభావం ఆధారంగా, మీరు శిక్షణ ఇవ్వడానికి ఒక పద్ధతిని ఎంచుకుంటారు. ఈ కోర్సులో మేము ఉపయోగించే [Scikit-learn డాక్యుమెంటేషన్](https://scikit-learn.org/stable/user_guide.html) ద్వారా మీరు మోడల్ శిక్షణకు అనేక మార్గాలను అన్వేషించవచ్చు. మీ అనుభవం ఆధారంగా, మీరు ఉత్తమ మోడల్ నిర్మించడానికి అనేక పద్ధతులను ప్రయత్నించవలసి ఉండవచ్చు. డేటా సైంటిస్ట్‌లు మోడల్ పనితీరును అంచనా వేయడానికి, దాన్ని చూడని డేటాతో పరీక్షించి, ఖచ్చితత్వం, పక్షపాతం మరియు ఇతర నాణ్యతను తగ్గించే సమస్యలను పరిశీలించి, ఆ పని కోసం సరైన శిక్షణ పద్ధతిని ఎంచుకుంటారు. +మీ ప్రశ్న మరియు డేటా స్వభావం బట్టి, మీరు ఒక పద్ధతిని ఎంచుకుంటారు. ఈ కోర్సులో ఉపయోగించే [Scikit-learn డాక్యుమెంటేషన్](https://scikit-learn.org/stable/user_guide.html)లో మీరు వివిధ మోడల్ ట్రెయినింగ్ పద్ధతులు తెలుసుకోవచ్చు. మీ అనుభవం ప్రకారం, అద్భుతమైన మోడల్ సంపాదించడానికి మీరు అనేక పద్ధతులను ప్రయత్నించాల్సి ఉండవచ్చు. డేటా శాస్త్రవేత్తలు ఒకసారి కోల్పోయిన డేటా ఫీడ్ చేసి లోపాలు, పక్షపాతం మరియు ఇతర నాణ్యత సమస్యలను పరిశీలించి, ఆ పని కోసం సరైన ట్రెయినింగ్ పద్ధతిని ఎంచుకుంటారు. -### మోడల్‌ను శిక్షణ ఇవ్వండి +### మోడల్ ట్రెయిన్ చేయండి -మీ శిక్షణ డేటాతో, మీరు దాన్ని 'ఫిట్' చేయడానికి సిద్ధంగా ఉంటారు. మీరు అనేక ML లైబ్రరీలలో 'model.fit' కోడ్‌ను కనుగొంటారు - ఈ సమయంలో మీరు మీ లక్షణ వేరియబుల్‌ను విలువల శ్రేణిగా (సాధారణంగా 'X') మరియు లక్ష్య వేరియబుల్‌ను (సాధారణంగా 'y') పంపిస్తారు. +మీ ట్రెయినింగ్ డేటాతో, మీరు 'model.fit' అనే కోడ్‌లో ఇన్‌పుట్ ఫీచర్ వేరియబుల్ (సాధారణంగా 'X') మరియు లక్ష్య వేరియబుల్ ('y') పంపించి మోడల్ ట్రెయిన్ చేస్తారు. -### మోడల్‌ను మూల్యాంకనం చేయండి +### మోడల్‌ను అంచనా వేయండి -శిక్షణ ప్రక్రియ పూర్తయిన తర్వాత (పెద్ద మోడల్ శిక్షణకు అనేక పునరావృతాలు లేదా 'ఎపోక్స్' అవసరం కావచ్చు), మీరు పరీక్షా డేటాను ఉపయోగించి మోడల్ నాణ్యతను అంచనా వేయగలుగుతారు. ఈ డేటా మోడల్ ముందుగా విశ్లేషించని అసలు డేటా ఉపసమితి. మీరు మీ మోడల్ నాణ్యత గురించి మెట్రిక్స్ పట్టికను ప్రింట్ చేయవచ్చు. +ట్రెయినింగ్ ప్రక్రియ పూర్తయ్యాక (బహుశా ఎన్నో iterations లేదా 'epochs' పట్టవచ్చు), మీరు టెస్ట్ డేటా ఉపయోగించి మోడల్ నాణ్యతను అంచనా వేయవచ్చు. ఈ డేటా మొదటి డేటా సెట్ నుండి తీసుకున్నది కాని, మోడల్ ముందుగానే ఉపయోగించలేదు. మీరు మీ మోడల్ నాణ్యతపై గణాంక పట్టికను ప్రింట్ చేయవచ్చు. 🎓 **మోడల్ ఫిట్టింగ్** -మెషీన్ లెర్నింగ్ సందర్భంలో, మోడల్ ఫిట్టింగ్ అనేది మోడల్ యొక్క అంతర్గత ఫంక్షన్ ఖచ్చితత్వాన్ని సూచిస్తుంది, ఇది పరిచయమయ్యే డేటాను విశ్లేషించడానికి ప్రయత్నిస్తుంది. +మెషీన్ లెర్నింగ్ సందర్భంలో, మోడల్ ఫిట్టింగ్ అంటే మోడల్ యొక్క ఆధారభూత ఫంక్షన్ కొత్త డేటాను విశ్లేషించేటప్పుడు ఖచ్చితత్వం. -🎓 **అండర్‌ఫిట్టింగ్** మరియు **ఓవర్‌ఫిట్టింగ్** సాధారణ సమస్యలు, ఇవి మోడల్ నాణ్యతను తగ్గిస్తాయి, ఎందుకంటే మోడల్ సరైన రీతిలో సరిపోలడం లేదా ఎక్కువగా సరిపోలడం లేదు. ఓవర్‌ఫిట్ మోడల్ శిక్షణ డేటాను చాలా బాగా పూర్వానుమానిస్తుంది, ఎందుకంటే అది డేటా వివరాలు మరియు శబ్దాన్ని బాగా నేర్చుకుంది. అండర్‌ఫిట్ మోడల్ ఖచ్చితంగా లేదు, ఎందుకంటే అది తన శిక్షణ డేటాను లేదా ఇప్పటి వరకు 'చూసిన' డేటాను సరిగ్గా విశ్లేషించలేకపోతుంది. +🎓 **అండర్‌ఫిట్టింగ్** మరియు **ఓవర్‌ఫిట్టింగ్** అనేవి సాధారణ సమస్యలు, ఇవి మోడల్ నాణ్యతను తగ్గిస్తాయి. మోడల్ బాగా సరిపోకపోవడం లేదా ఎక్కువ సరిపోయి ట్రెయినింగ్ డేటాతో కూడిన శబ్దం కూడా నేర్చుకోవడం వల్ల పరిస్థితి కలుగుతుంది. ఓవర్‌ఫిట్ మోడల్ ట్రెయినింగ్ డేటాను చాలా బాగా అంచనా వేస్తుంది కానీ అదే విధంగా సాధారణీకరించలేకపోవచ్చు. అండర్‌ఫిట్ మోడల్ ట్రెయినింగ్ డేటాను కూడా ఖచ్చితంగా విశ్లేషించలేకపోతుంది. ![overfitting model](../../../../translated_images/te/overfitting.1c132d92bfd93cb6.webp) -> ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) ద్వారా +> ఇన్ఫోగ్రాఫిక్: [జెన్ లూపర్](https://twitter.com/jenlooper) -## పారామీటర్ ట్యూనింగ్ +## పారామీటర్ సర్దుబాటు -మీ ప్రారంభ శిక్షణ పూర్తయిన తర్వాత, మోడల్ నాణ్యతను గమనించి, దాని 'హైపర్‌పారామీటర్లను' సర్దుబాటు చేయడం ద్వారా మెరుగుపరచాలని పరిగణించండి. ఈ ప్రక్రియ గురించి మరింత చదవండి [డాక్యుమెంటేషన్‌లో](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +మీ ప్రారంభ ట్రెయినింగ్ పూర్తయ్యాక మోడల్ నాణ్యతను పరిశీలించి, 'హైపర్‌పారామీటర్'లను సర్దుబాటు చేసి మెరుగుపరచుకోండి. ఈ ప్రక్రియ గురించి మరింత [డాక్యుమెంటేషన్‌లో చదవండి](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## పూర్వానుమానం +## అంచనా -ఇది మీరు పూర్తిగా కొత్త డేటాను ఉపయోగించి మీ మోడల్ ఖచ్చితత్వాన్ని పరీక్షించే క్షణం. 'అప్లైడ్' ML సెట్టింగ్‌లో, మీరు ప్రొడక్షన్‌లో మోడల్ ఉపయోగించడానికి వెబ్ ఆస్తులను నిర్మిస్తున్నప్పుడు, ఈ ప్రక్రియలో యూజర్ ఇన్‌పుట్ (ఉదాహరణకు బటన్ నొక్కడం) సేకరించి, వేరియబుల్ సెట్ చేసి, మోడల్‌కు ఇన్ఫరెన్స్ లేదా మూల్యాంకన కోసం పంపడం ఉండవచ్చు. +ఇది మీరు పూర్తిగా కొత్త డేటాను మీ మోడల్ ఖచ్చితత్వం పరీక్షించడానికి ఉపయోగించే దశ. 'అప్లైడ్' ML సెట్టింగ్‌లో, మీరు ప్రొడక్షన్‌లో మోడల్ ఉపయోగించడానికి వెబ్ ఆస్తులను తయారుచేస్తున్నప్పుడు, యూజర్ ఇన్‌పుట్ (ఉదా: బటన్ నొక్కడం) సేకరించి, దాన్ని మోడల్‌కు పంపించి అంచనా చేయించవచ్చు. -ఈ పాఠాలలో, మీరు ఈ దశలను ఉపయోగించి ఎలా సిద్ధం చేయాలో, నిర్మించాలో, పరీక్షించాలో, మూల్యాంకనం చేయాలో, మరియు పూర్వానుమానం చేయాలో తెలుసుకుంటారు - డేటా సైంటిస్ట్ యొక్క అన్ని చర్యలు మరియు మరిన్ని, మీరు 'ఫుల్ స్టాక్' ML ఇంజనీర్‌గా మారే ప్రయాణంలో. +ఈ పాఠాల్లో, మీరు ఈ దశల ద్వారా డేటాను సిద్ధం చేయడం, నిర్మించడం, పరీక్షించడం, అంచనా వేయడం, మరియు అంచనా వేయడం నేర్చుకుంటారు — డేటా శాస్త్రవేత్తల అలవాట్లు మరియు మరింత, ఒక 'ఫుల్ స్టాక్' ML ఇంజనీర్ అవడంలో మీ ప్రయాణంలో. --- ## 🚀సవాలు -ML ప్రాక్టిషనర్ దశలను ప్రతిబింబించే ఒక ఫ్లో చార్ట్ డ్రా చేయండి. మీరు ప్రస్తుతంలో ఈ ప్రక్రియలో ఎక్కడ ఉన్నారు? మీరు ఎక్కడ కష్టాన్ని ఎదుర్కొంటారని భావిస్తున్నారు? మీకు ఏది సులభంగా అనిపిస్తుంది? +ML ప్రాక్టీషనర్ దశలను ప్రతిబింబించే ఫ్లో చార్ట్ రూపొందించండి. మీరు ప్రస్తుతం ఏ దశలో ఉన్నారు? మీరు ఎక్కడ కష్టాన్ని ఎదుర్కొంటారని భావిస్తున్నారు? మీకు ఏది సులభంగా అనిపిస్తుంది? ## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) -## సమీక్ష & స్వీయ అధ్యయనం +## సమీక్ష & స్వయంఅధ్యయనం -డేటా సైంటిస్ట్‌లు వారి రోజువారీ పనిని చర్చించే ఇంటర్వ్యూలను ఆన్‌లైన్‌లో వెతకండి. ఇక్కడ [ఒకటి](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ఉంది. +డేటా శాస్త్రవేత్తల ఇంటర్వ్యూలను ఆన్‌లైన్‌లో వెతకండి, వారు వారి రోజువారీ పని గురించి మాట్లాడతారు. ఇక్కడ [ఒకటి](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ఉంది. ## అసైన్‌మెంట్ -[డేటా సైంటిస్ట్‌ను ఇంటర్వ్యూ చేయండి](assignment.md) +[డేటా శాస్త్రవేత్త ఇంటర్వ్యూ](assignment.md) --- -**అస్పష్టత**: -ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము. +**డిస్క్లెయిమర్**: +ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి శ్రమిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పులు లేదా అసత్యతలు ఉండే అవకాశముంది. అసలు డాక్యుమెంట్ native భాషలో ఉన్నదే అధికారపూర్వక మూలం అని పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని సూచించబడుతుంది. ఈ అనువాదం వలన కలిగే ఏదైనా అపవాదాలు లేదా తప్పుదారులు విషయానికి మేము బాధ్యులు కాదు. \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/README.md b/translations/te/2-Regression/3-Linear/README.md index 6f7d941124..683224a8e2 100644 --- a/translations/te/2-Regression/3-Linear/README.md +++ b/translations/te/2-Regression/3-Linear/README.md @@ -1,136 +1,135 @@ -# స్కికిట్-లెర్న్ ఉపయోగించి రిగ్రెషన్ మోడల్ అన్వయించండి: రిగ్రెషన్ నాలుగు మార్గాలు +# Scikit-learn ఉపయోగించి రిగ్రెషన్ మోడల్ నిర్మించండి: రిగ్రెషన్ నలుగురు మార్గాలు -## ప్రారంభిక గమనిక +## ప్రారంభకులు కోసం గమనిక -లీనియర్ రిగ్రెషన్ ను మనం **సంఖ్యాత్మక విలువ** (ఉదాహరణకి, ఇల్లు ధర, ఉష్ణోగ్రత, లేదా అమ్మకాలు) అంచనా వేయాలనుకునేటప్పుడు ఉపయోగిస్తాము. ఇది ఇన్‌పుట్ లక్షణాలు మరియు ఔట్‌పుట్ మధ్య సంబంధాన్ని ఉత్తమంగా వివరించే ఒక సరళ రేఖను కనుగొనేంది. +లీనియర్ రిగ్రెషన్ మనము ఒక **సంఖ్యాత్మక విలువ** ను (ఉదాహరణకి, ఇంటి ధర, ఉష్ణోగ్రత, లేదా అమ్మకాలు) అంచనా వేయాలనుకునే సమయంలో ఉపయోగిస్తారు. ఇది ఇన్పుట్ లక్షణాలు మరియు ఔట్పుట్ మధ్య ఉన్న సంబంధాన్ని ఉత్తమంగా ప్రతిబింబించే ఒక సమరు రేఖను కనుగొనడం ద్వారా పనిచేస్తుంది. -ఈ పాఠంలో, మరింత ముందడుగు రిగ్రెషన్ సాంకేతికతలను అన్వేషించే ముందు కాన్సెప్టును అర్థం చేసుకోవడంపై మనం దృష్టి ఇస్తాము. +ఈ పాఠంలో, మేము మరిన్ని అభివృద్ధి చెందిన రిగ్రెషన్ సాంకేతికతలను అధ్యయనం చేయక ముందుగా ఈ సిద్ధాంతాన్ని అర్థం చేసుకోవటానికి దృష్టి పెడతాము. ![Linear vs polynomial regression infographic](../../../../translated_images/te/linear-polynomial.5523c7cb6576ccab.webp) -> ఇన్ఫోగ్రాఫిక్ అందించిన [దసాని మడిపల్లి](https://twitter.com/dasani_decoded) ద్వారా -## [పూర్వ-పాఠ్య క్విజ్](https://ff-quizzes.netlify.app/en/ml/) +> ఇన్ఫోగ్రాఫిక్ రచయిత [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [పాఠం ముందస్తు క్విజ్](https://ff-quizzes.netlify.app/en/ml/) -> ### [ఈ పాఠం R లో అందుబాటులో ఉంది!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [ఈ పాఠం R లో కూడా అందుబాటులో ఉంది!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### పరిచయం -ఇప్పటి వరకు మీరు రిగ్రెషన్ అంటే ఏమిటో, మరియు మనం ఈ పాఠంలో మొత్తం ఉపయోగించే పంక్‌పిన్ ధరల డేటా సెట్ నుండి సేకరించిన నమూనా డేటాతో ఎలా పరిశీలించారో తెలుసుకున్నారు. మీరు Matplotlib ఉపయోగించి దాన్ని విజువలైజ్ కూడా చేశారు. +ఇప్పటి వరకు మీరు pumpkin ధరల డాటాసెట్ నుండి సేకరించిన నమూనా డేటాతో రిగ్రెషన్ అంటే ఏమిటి అనేదాన్ని అన్వేషించారు. అలాగే మీరు దాన్ని Matplotlib ఉపయోగించి విజువలైజ్ చేశారు. -ఇప్పుడు మీరు ML కోసం రిగ్రెషన్ లో మరింత లోతుగా దిగి చూడడానికి సిద్ధంగా ఉన్నారు. విజువలైజేషన్ డేటాను అర్థం చేసుకోవడానికి ఉపయోగపడినప్పటికీ, మెషిన్ లెర్నింగ్ యొక్క వాస్తవ శక్తి _మోడల్స్ శిక్షణ_ లోనిది. మోడల్స్ పాత డేటా పై శిక్షణ పొందుతాయి, డేటా సంబంధాలను ఆటోమేటిక్‌గా క్యాప్చర్ చేయడానికి, మరియు కొత్త డేటా కోసం ఫలితాలను అంచనా వేయడానికి వీలు కల్పిస్తాయి, మోడల్ ముందు చూడని డేటా కావు. +ఇప్పుడు మీరు ML కోసం రిగ్రెషన్ లో మరింత లోతుగా కావాలనుకుంటున్నారు. విజువలైజేషన్ డేటాను అర్థం చేసుకోవటానికి ఉపయోగపడుతుండగా, యధార్థ శక్తి మిషన్ లెర్నింగ్ లో _మోడల్స్ శిక్షణ_ లో ఉంటుంది. మోడల్స్ చరిత్రాత్మక డేటా పై శిక్షణ పొందుతాయి, ఆటోమేటిగ్గా డేటా ఆధారిత సంబంధాలను గమనిస్తాయి, మరియు కొత్త డేటా కోసం ఫలితాలను అంచనా వేయగలవు, ఆ మోడల్ ముందుగా చూడని డేటా. -ఈ పాఠంలో, మీరు రెండు రకాల రిగ్రెషన్ల గురించి మెరుపు అవుతారు: _మూల లీనియర్ రిగ్రెషన్_ మరియు _పోలినోమియల్ రిగ్రెషన్_, వీటి పక్కన ఈ సాంకేతికతలకు మత్తమెరుగైన గణితంను తెలుసుకుంటారు. ఆ మోడల్స్ మనకు వేర్వేరు ఇన్‌పుట్ డేటాపై ఆధారపడి పంక్‌పిన్ ధరలను అంచనా వేయడానికి అనుమతిస్తాయి. +ఈ పాఠంలో, మీరు రెండు రకాల రిగ్రెషన్ గురించి తెలుసుకుంటారు: _బేసిక్ లీనియర్ రిగ్రెషన్_ మరియు _పాలినోమియల్ రిగ్రెషన్_, మరియు ఈ సాంకేతికతల క్రింద ఉన్న కొంత గణితాన్ని కూడా తెలుసుకుంటారు. ఆ మోడల్స్ మనం pumpkin ధరలను వేర్వేరు ఇన్పుట్ డేటాకు అనుగుణంగా అంచనా వేయగలుగుతాయి. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 లీనియర్ రిగ్రెషన్ యొక్క చిన్న వీడియో ఓవర్వ్యూ కోసం పై చిత్రాన్నిపై క్లిక్ చేయండి. +> 🎥 లీనియర్ రిగ్రెషన్ యొక్క సంక్షిప్త వీడియో అవలోకనానికి పై చిత్రంపై క్లిక్ చేయండి. -> ఈ సిలబస్ అంతటా, మనం గణితంలో కనీస పరిమిత జ్ఞానం కలిగి ఉన్నవారిగా భావించి, ఇతర రంగాల నుండే వచ్చే విద్యార్థులకు సులభంగా అర్థం అవ్వాలనే ఉద్దేశంతో, గమనికలు, 🧮 సూచనలు, చిత్రలేఖనాలు మరియు ఇతర శిక్షణా పరికరాలతో సహాయపడుతాము. +> ఈ పాఠ్యాంశంలో, గణితంపై తక్కువ పరిజ్ఞానం ఉన్న వారికి కూడా అర్థమయ్యేలా చేసేందుకు ప్రత్యేక శ్రద్ధ వహించి, గమనికలు, 🧮 కాలౌట్లు, చిత్రాలు మరియు ఇతర విద్యా సాధనాలను ఉపయోగిస్తున్నాం. -### ముందస్తు అవగాహన +### ముందు తెలుసుకోవలసినవి -మీరు ఇప్పటివరకు పరిశీలిస్తున్న పంక్‌పిన్ డేటా నిర్మాణాన్ని బాగా తెలుసుకుని ఉండాలి. ఈ పాఠంలోని _notebook.ipynb_ ఫైల్‌లో అది ముందే లోడ్ చేసి శుభ్రపరిచిన రూపంలో ఉంటుంది. ఆ ఫైలులో, పంక్‌పిన్ ధర కొత్త డేటా ఫ్రేమ్‌లో బయటపడ్డాయి, బషెల్‌కు సంబంధించి. మీరు Visual Studio Code లో కర్నల్స్ లో ఈ నోట్బుక్స్ ను అమలు చేయగలదని నిర్ధారించుకోండి. +మీరెప్పటికైనా pumpkin డేటా నిర్మాణం గురించి అవగాహన కలిగి ఉండాలి. ఈ పాఠంలోని _notebook.ipynb_ ఫైల్ లో అది ముందుగా లోడ్ చేయబడింది మరియు శుభ్రపరిచింది. ఆ ఫైలులో, pumpkin ధర బుషెల్ కింద ప్రదర్శించబడింది. మీరు Visual Studio Code లో కర్నల్స్ లో ఈ నోట్‌బుక్స్ నడిపేందుకు సిద్దంగా ఉండాలి. -### సిద్ధంగా ఉండటం +### సిద్ధం కావటం -గమనికగా, మీరు ఈ డేటాను లోడ్ చేయడం ఆ డేటాపై ప్రశ్నలు అడగడానికి సిధ్ధమవుతున్నారు. +మరలా గుర్తు పెట్టుకోండి, మీరు ఈ డేటాను లోడ్ చేస్తున్నప్పుడు దానిపై ప్రశ్నలు అడగటానికి. -- పంక్‌పిన్‌లు కొనడానికి ఉత్తమ సమయం ఎప్పుడు? -- మినియేచర్ పంక్‌పిన్‌ల కేసు ధర ఎంత ఆశించవచ్చు? -- వాటిని అర్థ బషెల్ కార్టన్లలో కొనాలా లేదా 1 1/9 బషెల్ బాక్స్ ద్వారా కొనాలా? +- pumpkin లను కొనుగోలు చేయడానికి ఉత్తమ సమయం ఎప్పుడు? +- మినీచర్ pumpkin ల విలువ ఎంత ఉంటుందనే అంచనా? +- వాటిని హాఫ్-బుషెల్ బాస్కెట్లలో కొనాలి లేదా 1 1/9 బుషెల్ బాక్స్ ద్వారా కొనవలసినదా? +మరింత సమాచారం కోసం ఈ డేటాను వడపోయింది. -ఈ డేటాను మరింత అన్వేషించుకుందాం. +మునుపటి పాఠంలో, మీరు ఒక Pandas డేటాఫ్రేమ్ సృష్టించి, మూల dataset నుండి కొంత భాగాన్ని, ధరను బుషెల్ ద్వారా సాంద్రీకృతం చేసిన డేటాతో నింపారు. అయినప్పటికీ, మీరు సుమారు 400 డేటా పాయింట్లు మాత్రమే సేకరించగలిగారు, అవి కేవలం వేసవి నెలలకు సంబంధించినవి. -గత పాఠంలో, మీరు పాండాస్ డేటా ఫ్రేమ్ సృష్టించి, ఆదిలో భాగాన్నిఉండే డేటాసెట్ నుండి కొంత భాగాన్ని అద్దకెక్కించారు, ధరలను బషెల్ కు ప్రమాణీకరించారు. అయితే అది కేవలం సుమారు 400 డేటాపాయింట్ల వరకు మరియు కేవలం శరదృతువు నెలల వరకు మాత్రమే పరిమితం అయ్యింది. +ఈ పాఠంకు సంబంధించిన నోట్‌బుక్ లో ముందుగా లోడ్ చేసిన డేటాను చూడండి. డేటా ముందుగా లోడ్ చేయబడింది మరియు మొదటి స్కాటర్ప్లాట్ నెలల డేటాను చూపిస్తుంది. మరింత శుభ్రపరచడం ద్వారా డేటా స్వభావం గురించి మరింత వివరాలు తెలుసుకోవచ్చు. -ఈ పాఠంలో ప్రీ-లోడ్ చేసిన డేటాతో కూడిన నోట్బుక్ లో డేటాను చూడండి. డేటా ముందేనే లోడ్ చేసి, నెల డేటాను చూపించే ప్రారంభ స్కాటర్ప్లాట్ రూపొందించారు. మనం దాన్ని మరింత శుభ్రపరిచి డేటా స్వభావం గురించి మరింత వివరాలు దొరకొచ్చు. +## లీనియర్ రిగ్రెషన్ రేఖ -## లీనియర్ రిగ్రెషన్ లైన్ +మీరు పాఠం 1 లో నేర్చుకున్నట్లుగా, లీనియర్ రిగ్రెషన్ వ్యాయామంలో ఉద్దేశ్యం: -పాఠం 1లో నేర్చుకున్నట్లుగా, లీనియర్ రిగ్రెషన్ వ్యాయామం యొక్క లక్ష్యం ఒక లైన్ ని ప్లోట్ చేయడమే: +- **వేరియబుల్ సంబంధాలను చూపడం**. వేరియబుల్స్ మధ్య సంబంధాన్ని చూపించడం +- **అంచనాలు చేయడం**. కొత్త డేటా పాయింట్ ఆ రేఖకు సంబంధించిన ఎక్కడ పడుతుందో ఖచ్చితంగా అంచనా వేయడం -- **లక్షణాల మధ్య సంబంధాలను చూపించాలి**. వేరియబుల్స్ మధ్య సంబంధాన్ని చూపించాలి -- **అంచనాలు చేయాలి**. కొత్త డేటాపాయింట్ ఆ లైన్ కింద ఎక్కడ పడుతుందో ఖచ్చితంగా అంచనా వేయాలి +**లీస్ట్-స్క్వేర్ రిగ్రెషన్** ఈ రకం రేఖను గీసే విషయంలో సాంప్రదాయకం. "లీస్ట్-స్క్వేర్" అనగా మన మోడల్ లో మొత్తం లోపం పరిమాణాన్ని తగ్గించడం. ప్రతి డేటా పాయింట్ కు నిజమైన పాయింట్ మరియు మన రిగ్రెషన్ రేఖ మధ్య లంబ దూరం (రెసిడ్యువల్ అని పిలవబడేది) కొలుస్తాం. -**లీస్ట్-స్క్వాయర్స్ రిగ్రెషన్** సాధారణంగా ఇలాంటి రేఖను గీస్తుంది. "లీస్ట్-స్క్వాయర్స్" పదం మన మోడల్ లో సంపూర్ణ లోపాన్ని తగ్గించే ప్రక్రియకు సూచిస్తుంది. ప్రతి డాటాపాయింట్ కి, మనము ఉన్న లైన్ నుండి అసలు డాటాపాయింట్ మధ్య నిలువు దూరం (రెస్టిడ్యూల్) ను కొలుస్తాము. +మా ఉద్దేశ్యం ఆ దూరాలను చతురస్రం చెయ్యడం రెండు కారణాల వల్ల: -మనం ఆ దూరాలను రెండు ముఖ్య కారణాల కోసం స్క్వేర్ (వరుస కీ పెడతాము): +1. **గదిలో కాకుండా పరిమాణం:** -5 లోపం ను +5 లోపంతో సమానంగా చూడాలనుకుంటాం. చతురస్రం ఈ విలువలను సానుకూలంగా మార్చుతుంది. -1. **దిశ కన్నా పరిమాణం ముఖ్యం**: -5 లోపం, +5 లోపం సమానంగా చూడాలి. స్క్వేర్ చేయడం వల్ల అన్ని విలువలు పాజిటివ్ అవుతాయి. +2. **అగ్రస్థితి విలువలకు కఠినతరం:** చతురస్రం పెద్ద లోపాలకు ఎక్కువ బరువు ఇస్తుంది, కనుక రేఖ దూరం ఉన్న పాయింట్లకి దగ్గరగా ఉండటం అవసరం. -2. **బాహ్య విలక్షణాలను శిక్షించడం**: పెద్ద లోపాలకు మరింత భారం ఇస్తుంది, తద్వారా లైన్ చాలా దూరంలో ఉన్న పాయింట్లకు దగ్గరగా ఉంటుంది. +ఇక మొత్తం చతురస్రాలను జోడిస్తాం. ఈ మొత్తాన్ని గరిష్టంగా తగ్గించే ప్రత్యేక రేఖ కనుగొనాల్సి ఉంటుంది — అందుకే దీన్ని "లీస్ట్-స్క్వేర్" అంటారు. -తరువాత, అన్ని స్క్వేర్ విలువలను తిసికోవచ్చు. మన లక్ష్యం ఈ మొత్తాన్ని కనీసం చేసే నిర్దిష్ట రేఖను కనుగొనడం. - -> **🧮 నాకు గణితం చూపించు** -> -> ఈ లైన్, _ఉత్తమ అనుపాత రేఖ_ అనే పేరు తో, [సమీయం ద్వారా వ్రాయబడుతుంది](https://en.wikipedia.org/wiki/Simple_linear_regression): +> **🧮 గణితం చూపించండి** +> +> ఈ రేఖను, _సర్వోత్తమ సరిపోలిక రేఖ_ అనే పిలుస్తారు, దీన్ని [సమీకరణ](https://en.wikipedia.org/wiki/Simple_linear_regression) రూపంలో ఇలా తెలిపవచ్చు: > > ``` > Y = a + bX > ``` > -> `X` అనేది 'వివరణాత్మక వేరియబుల్'. `Y` అనేది 'ఆధారిత వేరియబుల్'. లైన్ యొక్క వంపు `b` మరియు `a` అనేది y-ఇంటెర్ప్సెప్టు, అంటే `X = 0` ఉన్నప్పుడు `Y` విలువ. +> `X` అనగా ‘వివరణాత్మక వేరియబుల్’. `Y` అనగా 'ఆధారపడిన వేరియబుల్'. రేఖ యొక్క దిక్కు `b` కాగా, `a` అనగా వై-ఇంటర్‌సెప్టు, అంటే `X = 0` ఉన్నప్పుడు `Y` విలువ. > ->![దూరం ఊహించు](../../../../translated_images/te/slope.f3c9d5910ddbfcf9.webp) +>![calculate the slope](../../../../translated_images/te/slope.f3c9d5910ddbfcf9.webp) > -> ముందుగా వంపు `b` ను గణించండి. ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) చేత +> ముందుగా, దిక్కు `b` ను లెక్కించండి. ఇన్ఫోగ్రాఫిక్ రచయిత [Jen Looper](https://twitter.com/jenlooper) > -> మరి, మన పంక్‌పిన్ డేటా యొక్క ప్రాథమిక ప్రశ్నను ఉద్దేశించి: "నెల వారీగా ఒక బషెల్ పంక్‌పిన్ ధరను అంచనా వేయండి", ఇక్కడ `X` ధరకి మరియు `Y` అమ్మకపు నెలకి సూచిస్తుందని అనుకోండి. +> మరో మాటలో చెప్పాలంటే, మన pumpkin డేటా యొక్క అసలు ప్రశ్న: "నెలల వారీగా బుషెల్ కొరకు pumpkin ధర అంచనా వేయండి", ఇక్కడ `X` ధరకు మరియు `Y` అమ్మకపు నెలకు సూచిస్తుంది. > ->![సమీకరణ పూర్తి చేయండి](../../../../translated_images/te/calculation.a209813050a1ddb1.webp) +>![complete the equation](../../../../translated_images/te/calculation.a209813050a1ddb1.webp) > -> Y విలువను గణించండి. మీరు సుమారు $4 చెల్లిస్తున్నారు అంటే, అది ఏప్రిల్ కావచ్చు! ఇన్ఫోగ్రాఫిక్ [జెన్ లూపర్](https://twitter.com/jenlooper) చేత +> `Y` విలువను లెక్కించండి. మీరు సుమారు $4 చుట్టూ చెల్లిస్తుంటే, అది తప్పకుండా ఏప్రిల్! ఇన్ఫోగ్రాఫిక్ రచయిత [Jen Looper](https://twitter.com/jenlooper) > -> లైన్ గణించే గణితం వంపును చూపించాలి, ఇది ఇంటెర్ప్సెప్టును ఆధారపడి ఉంటుంది, లేదా `X=0` ఉన్నప్పుడు `Y` స్థానం. +> ఈ రేఖ గణితంలో దిక్కు తెలిసినప్పుడు, ఇది ఇంటర్‌సెప్టు పరంగా కూడా ఆధారపడుతుంటుంది, అప్పుడు `X = 0` వద్ద `Y` విలువ ఎక్కడ ఉంటుంది. > -> ఈ విలువల గణనా పద్ధతి మీరు [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) వెబ్ సైట్ లో చూడవచ్చు. అంకెలు లైను పై ప్రభావం ఎలా ఉందో చూసేందుకు [ఈ లీస్ట్-స్క్వాయర్స్ కాలిక్యులేటర్](https://www.mathsisfun.com/data/least-squares-calculator.html) ను కూడా సందర్శించండి. +> గణిత లెక్కింపు విధానాన్ని [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) వెబ్‌సైట్ లో చూడవచ్చు. అలాగే ఈ గణకాన్ని [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) లో ప్రయత్నించి అర్థం చేసుకోవచ్చు. -## సంబంధం (కොරిలేషన్) +## సహసంబంధం -ఇంకో టెర్మ్ అర్థం చేసుకోవాలి అంటే **సంబంధ గుణకం** (Correlation Coefficient) ఒక X మరియు Y వేరియబుల్స్ కొరకు. స్కాటర్ప్లాట్ ఉపయోగించి మీరు దీన్ని తక్షణం చూడవచ్చు. ఒక ఆకర్షణీయమైన సరళమైన రేఖలో వివరించిన డేటాపాయింట్లు ఉన్న ప్లాట్ అధిక సంబంధాన్ని సూచిస్తుంది, కానీ X మరియు Y మధ్య అన్ని దిశలలో వ్యాపించిన పాయింట్లు ఉన్న ప్లాట్ తక్కువ సంబంధం ఉన్నదని సూచిస్తుంది. +మరొక అర్థం చేసుకోవలసిన పదం **కోరలేషన్ కోఎఫిషియెంట్**. ఇచ్చిన X మరియు Y వేరియబుల్స్ మధ్య ఉన్న సంబంధాన్ని సూచిస్తుంది. స్కాటర్ప్లాట్ ద్వారా మీరు ఈ కోఎఫిషియెంట్ ను వేగంగా చూడవచ్చు. ఒక రేఖల్లో సమతుల్యంగా పాయింట్లు ఉన్న స్కాటర్ప్లాట్ కు అధిక సహసంబంధం ఉంటుంది, కానీ ఎక్కడేమాలో బల్కంగా పాయింట్లు ఉంటే తక్కువ సహసంబంధం ఉంటుంది. -చెత్తతక్కువ లోపాల లీస్ట్-స్క్వాయర్స్ రిగ్రెషన్ పద్ధతితో అధిక (0 కాకుండా 1కి సమీపంలో ఉన్న) సంబంధ గుణకం ఉన్న మోడల్ మంచి లీనియర్ రిగ్రెషన్ మోడల్ అవుతుంది. +మంచి లీనియర్ రిగ్రెషన్ మోడల్ అంటే ఇది ఉంటుంది: లీస్ట్-స్క్వేర్ రిగ్రెషన్ పద్ధతి ఉపయోగించి అధిక (0 కంటే 1 కు దగ్గరగా) సహసంబంధ కోఎఫిషియెంట్ తో కూడిన రేఖ. -✅ ఈ పాఠానికి తోడు ఉన్న నోట్బుక్ నడపండి మరియు నెల నుండి ధర వరకూ స్కాటర్ప్లాట్ పరిశీలించండి. మీరు చూసిన స్కాటర్ప్లాట్ ప్రకారం, పంక్‌పిన్ అమ్మకాల నెల మరియు ధర సంబంధం అధిక కొరకు లేదా తక్కువ కొరకు అనిపిస్తుందా? మీరు `నెల` కన్నా మరింత సున్నితమైన కొలత ఉపయోగిస్తే (ఉదా: *సంవత్సరపు రోజు* (అంటే సంవత్సర ప్రారంభం నుండి రోజుల సంఖ్య)), అది మారుతుందా? +✅ ఈ పాఠానికి సంభందించిన నోట్‌బుక్ నడపండి మరియు నెల నుండి ధర వైపు స్కాటర్ప్లాట్ చూడండి. pumpkin అమ్మకాల కోసం నెల మరియు ధర మధ్య సంబంధం మీరు చూసిన స్కాటర్ప్లాట్ ద్వారా అధికం లేదా తక్కువం అనిపిస్తుందా? మీరు `నెల` బదులు *సంవత్సరంలో రోజు* (అంటే సంవత్సర ప్రారంభం నుండి వివిధ రోజుల సంఖ్య) ఉపయోగిస్తే ఇది మారుతుందా? -క్రింది కోడ్ లో, మనం డేటాను శుభ్రం చేసామని, మరియు `new_pumpkins` అనే డేటా ఫ్రేమ్ తీసుకున్నామని అంగీకరిద్దాం, ఇది క్రింది విధంగా ఉంటుంది: +కోడ్ లో, మేము డేటాను శుభ్రం చేశామని మరియు `new_pumpkins` అనే డేటాఫ్రేమ్ ను పొందాము అని అనుకుంటున్నాము, ఈ క్రింద ఇవ్వబడింది: -ID | నెల | సంవత్సరపు రోజు | జాతి | నగరం | ప్యాకేజీ | తక్కువ ధర | ఎక్కువ ధర | ధర +ID | నెల | సంవత్సరం రోజు | వేరియటీ | నగరం | ప్యాకేజీ | తక్కువ ధర | ఎక్కువ ధర | ధర ---|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 బషెల్ కార్టన్లు | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 బషెల్ కార్టన్లు | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 బషెల్ కార్టన్లు | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 బషెల్ కార్టన్లు | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 బషెల్ కార్టన్లు | 15.0 | 15.0 | 13.636364 +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 బుషెల్ కార్టన్లు | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 బుషెల్ కార్టన్లు | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 బుషెల్ కార్టన్లు | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 బుషెల్ కార్టన్లు | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 బుషెల్ కార్టన్లు | 15.0 | 15.0 | 13.636364 -> డేటాను శుభ్రం చేసే కోడ్ [`notebook.ipynb`](notebook.ipynb) లో అందుబాటులో ఉంది. గత పాఠంలో చేసినట్లే శుభ్రత చర్యలు మనం చేశాము, అలాగే క్రింది వ్యక్తీకరణతో `DayOfYear` కాలమ్ లెక్కించాము: +> డేటాను శుభ్రం చేయడానికి కోడ్ [`notebook.ipynb`](notebook.ipynb) లో ఉన్నాయి. మేము గత పాఠంలో చేయబడిన శుభ్రపరిచే దశలను పాటించి, క్రింది సూత్రం ఉపయోగించి `DayOfYear` కాలమ్ లెక్కించాం: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -ఇప్పుడు మీరు లీనియర్ రిగ్రెషన్ వెనుక గణితాన్ని అర్థం చేసుకున్న తర్వాత, రిగ్రెషన్ మోడల్ సృష్టిద్దాం, పంక్‌పిన్ ప్యాకేజీలలో ఏది ఉత్తమ ధర కలిగిందో అంచనా వేయడానికి ప్రయత్నిద్దాం. పంక్‌పిన్ ప్యాచ్ కు కొనుగోలు చేసే వారు తమ కొనుగోళ్లను సరిగ్గా సమన్వయించడానికి ఈ సమాచారము కావచ్చు. +లీనియర్ రిగ్రెషన్ వెనకని గణితాన్ని అర్థం చేసుకున్న తర్వాత, ఏ pumpkin ప్యాకేజీ ఉత్తమ ధర తీసుకొస్తుందో అంచనా వేయడానికి రిగ్రెషన్ మోడల్ సృష్టిద్దాం. ఎవరైనా అనుకొనేవారు తమ హాలిడే pumpkin ప్యాచ్ కోసం ఈ సమాచారం ఉపయోగించి కొనుగోలు ఆప్టిమైజ్ చేసుకోవచ్చు. -## సంబంధం కోసం వెతుకుతాము +## సహసంబంధం కోసం శోధన [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 సంబంధం గురించి చిన్న వీడియో సమీక్ష కోసం పై చిత్రంపై క్లిక్ చేయండి. +> 🎥 సహసంబంధం యొక్క సంక్షిప్త వీడియో అవలోకనానికి పై చిత్రంపై క్లిక్ చేయండి. -గత పాఠం నుండి మీరు కనిపెట్టిన విధంగా, వేర్వేరు నెలల సగటు ధర ఇలా ఉంటుంది: +మునుపటి పాఠం నుండి మీరు అతివేగంగా చూసినట్లయితే, వేర్వేరు నెలల సగటు ధర ఇలానే ఉంది: Average price by month -ఇది కొంత సంబంధం ఉండాలని సూచిస్తుంది, మరియు మనం లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణ ఇస్తూ, `నెల` మరియు `ధర` లేదా `సంవత్సరపు రోజు` మరియు `ధర` మధ్య సంబంధాన్ని అంచనా వేయవచ్చు. క్రింది స్కాటర్ప్లాట్ ఆ చివరివిషయాన్ని చూపుతుంది: +దీనివలన కొంత సహసంబంధం ఉందనే భావన వస్తుంది, మరియు మనం `నెల` మరియు `ధర` మధ్య, లేదా `DayOfYear` మరియు `ధర` మధ్య సంబంధాన్ని అంచనా వేసేందుకు లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణ ఇస్తే మంచిది. క్రింద ఉన్న స్కాటర్ ప్లాట్ చివరిదాన్ని చూపిస్తుంది: Scatter plot of Price vs. Day of Year -`corr` ఫంక్షన్ ఉపయోగించి సంబంధం చూసేద్దాం: +`corr` ఫంక్షన్ ఉపయోగించి సహసంబంధం ఉందో లేదో చూద్దాం: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -సంబంధం తక్కువగా -0.15 `నెల` పరిధిలో, మరియు -0.17 `DayOfMonth` లో ఉంది, కానీ మరొక ముఖ్యమైన సంబంధం ఉండొచ్చు. వివిధ పంక్‌పిన్ వేరియటీలకు వేర్వేరు ధర క్లస్టర్లు కనిపిస్తున్నాయి. ఈ ఊహను నిర్ధారించడానికి, ప్రతి వర్గానికి వేరే రంగు ఉపయోగించి స్కాటర్ప్లాట్ ప్లోట్ చేద్దాం. `scatter` ఫంక్షన్ కి `ax` ప్యారామీటర్ ఇవ్వడంతో మనం అన్ని పాయింట్లను ఒకే గ్రాఫ్ పై చూపించవచ్చు: +సహసంబంధం కొంచెం తక్కువగా కనిపిస్తోంది, `నెల` పరంగా -0.15 మరియు `DayOfYear` పరంగా -0.17. కాని మరో ముఖ్యమైన సంబంధం ఉండొచ్చు. వేర్వేరు pumpkin వేరియెటీలు ధరకు ప్రభావం చూపిస్తాయి. ఈ ఊహను ధృవీకరించడానికి, ప్రతి pumpkin వర్గాన్ని వేరే రంగులో చిత్రిద్దాం. `ax` పేరామితి ద్వారా `scatter` ఫంక్షన్ లో ఇచ్చి అన్ని పాయింట్లను ఒకే గ్రాఫ్ లో చూపవచ్చు: ```python ax=None @@ -142,7 +141,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): Scatter plot of Price vs. Day of Year -మన పరిశోధన సూచిస్తుంది వేరియిటీ మొత్త ధరపై ఎక్కువ ప్రభావం చూపుతుంది, అమ్మకపు తేదీ కంటే. మనం దీన్ని బార్ గ్రాఫ్ తో కూడా చూడవచ్చు: +మా పరిశీలన ప్రకారం, pumpkin వేరియెటీ ధరపై యధార్థ విక్రయ తేదీ కంటే ఎక్కువ ప్రభావం చూపుతుంది. దీనిని బార్ గ్రాఫ్ తో చూడొచ్చు: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') @@ -150,7 +149,7 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') Bar graph of price vs variety -ఇప్పుడే ఒక పంక్‌పిన్ వేరియటీ 'పై టైపు' మీద మాత్రమే దృష్టి సారిద్దాం, తేదీ ధరపై ఏమి ప్రభావం చూపుతుందో చూద్దాం: +ఇప్పుడు, ‘pie type’ అనే ఒకే pumpkin వేరియెటీపైన దృష్టి పెట్టి, అమ్మకాల తేదీ ధరపై ఏ ప్రభావం ఉందో చూద్దాం: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,24 +157,24 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -`corr` ఫంక్షన్ ఉపయోగించి `ధర` మరియు `సంవత్సరపు రోజు` మధ్య సంబంధాన్ని లెక్కిస్తే, సుమారు `-0.27` వస్తుంది - అంటే శిక్షణ మోడల్ అంచనాకు అనుకూలం. +ఇప్పుడు `corr` ఫంక్షన్ ఉపయోగించి `Price` మరియు `DayOfYear` మధ్య సహసంబంధం లెక్కించగా, అది సుమారు `-0.27` ఉంటుంది. అంటే శిక్షణకు అనువైన మోడల్ తయారు చేయవచ్చు. -> లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణకు ముందే, డేటా శుభ్రంగా ఉందని నిర్ధారించుకోవాలి. లీనియర్ రిగ్రెషన్ లో మిస్సింగ్ విలువలతో సమస్య ఉంటుంది, కాబట్టి ఖాళీ సెల్స్ తొలగించడం మంచిది: +> లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణకు ముందు డేటా పద్ధతి అమర్చడమూ చాలా ముఖ్యం. లీనియర్ రిగ్రెషన్ లోపభూయిస్థితులు ఉన్న వాల్యూస్ తో బాగా పనిచేయదు, కాబట్టి ఖాళీ శ్రేణులన్నిటినీ తొలగించడం మంచిది: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -మరో మార్గం ఖాళీ విలువలను ఆ కాలమ్ యొక్క సగటు విలువతో భర్తీ చేయడమవుతుంది. +మరొక మార్గం ఖాళీ విలువలను ఆ కాలమ్ యొక్క సగటు విలువలతో భర్తీ చేయడం. -## సాదా లీనియర్ రిగ్రెషన్ +## సింపుల్ లీనియర్ రిగ్రెషన్ [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 లీనియర్ మరియు పోలినోమియల్ రిగ్రెషన్ పై చిన్న వీడియో సమీక్ష కోసం పై చిత్రాన్నిపై క్లిక్ చేయండి. +> 🎥 లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ పై సంక్షిప్త వీడియో అవలోకనానికి పై చిత్రంపై క్లిక్ చేయండి. -మన లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణ కోసం **స్కికిట్-లెర్న్** లైబ్రరీ ఉపయోగిస్తాము. +మన లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణకు, మనం **Scikit-learn** లైబ్రరీని ఉపయోగిస్తాము. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +182,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -ముందుగా ఇన్‌పుట్ విలువలు (లక్షణాలు) మరియు అంచనా వేయవలసిన అవుట్‌పుట్ (లేబుల్) అన్నింటిని విడగొట్టి numpy అర్రేలుగా విడగొడతాము: +ముందుగా ఇన్పుట్ విలువలు (లక్షణాలు) మరియు అభ్యర్థిత ఔట్పుట్ (లేబుల్) ను వేరే numpy అర్రేలుగా విడగొడతాము: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> గమనిక: లీనియర్ రిగ్రెషన్ ప్యాకేజీ సరిగా అర్థం చేసుకునేందుకు ఇన్‌పుట్ డేటాకు `reshape` నిర్వహించాల్సి వచ్చింది. లీనియర్ రిగ్రెషన్ 2D అర్రే అందుకోవాలని కోరుతుంది, ప్రతి వరుస ఒక లక్షణాల వెక్టార్‌కు సరిపోయింది. మన కేసులో, ఒకే ఒక ఇన్‌పుట్ ఉన్నందున N×1 శేప్ ఉన్న అర్రే కావాలి, ఇక్కడ N డేటాసెట్ పరిమాణం. +> ఇక్కడ గమనించండి, లీనియర్ రిగ్రెషన్ ప్యాకేజీకు సరైన ఫార్మాట్ లో డేటా ఇచ్చేందుకు `reshape` అవసరం. లీనియర్ రిగ్రెషన్ 2D అర్రే (పంక్తులలో ఇన్పుట్ లక్షణాల వెక్టర్) కోరుతుంది. మన వద్ద ఒక్కొ ఇన్పుట్ మాత్రమే ఉన్నందున, N×1 ఆకృతి ఉన్న అర్రే అవసరం, ఇక్కడ N అనగా డేటా పరిమాణం. -త్వరలో, శిక్షణ మరియు పరీక్ష డేటాసెట్స్ గా భేధించి, శిక్షణ తర్వాత మోడల్ ని ధృవీకరించవలసి ఉంటుంది: +తర్వాత, శిక్షణ మరియు పరీక్ష డేటాసెట్ లుగా డేటా పంచాలి, అంతేకాదు శిక్షణ తరువాత మనం మోడల్ ను పరీక్షించగలుగుతాము: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -చివరకు, లీనియర్ రిగ్రెషన్ మోడల్ శిక్షణ కేవలం రెండు కోడ్ లైన్లలో జరుగుతుంది. `LinearRegression` ఆబ్జెక్ట్ నిర్వచించి, దాన్ని `fit` పద్ధతితో మన డేటాకు అన్వయిస్తాము: +చివరకు, లీనియర్ రిగ్రెషన్ మోడల్ ను శిక్షణ చేయడం కేవలం రెండు కోడ్ లైన్లలో చేస్తారు. ముందుగా `LinearRegression` ఆబ్జెక్ట్ ను నిర్వచించి, `fit` మేతడ్ తో డేటాకు సరిపొడచేస్తారు: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit` చేసిన తర్వాత `LinearRegression` ఆబ్జెక్ట్ లో రిగ్రెషన్ యొక్క అన్నీ కోఎఫిషియెంట్లు ఉంటాయి, అవి `.coef_` ప్రాపర్టీ ద్వారా అక్సెస్ చేయవచ్చు. మన సందర్భంలో, ఒకే ఒక కోఎఫిషియెంట్ ఉంది, అది సుమారు `-0.017` ఉండాలి. అంటే ధరలు సమయానికి కొద్దిగా తగ్గుతున్నట్టు చూపిస్తుంది, కానీ చాలా కాదు, రోజుకు సుమారు 2 సెంట్లు వరకు. రిగ్రెషన్ యొక్క Y-అక్షాన్ని ఇంతర్‌సెక్షన్ పాయింట్ కూడా `lin_reg.intercept_` ద్వారా క్రిందిచూడవచ్చు - ఇది మన కేసులో సుమారు `21` ఉంటుంది, సంవత్సరం ఆరంభంలో ధరను సూచిస్తుంది. +`fit` చేసిన తర్వాత `LinearRegression` ఆబ్జెక్ట్ అన్ని రిగ్రెషన్ యొక్క గుణకాలాన్ని కలిగి ఉంటుంది, దాన్ని `.coef_` ప్రోపర్టీ ద్వారా యాక్సెస్ చేయవచ్చు. మన సందర్భంలో, ఒక్క గుణకం ఉంటుంది, ఇది సుమారు `-0.017` ఉండాలి. దీని అర్థం, ధరలు సమయం గడచిన కొద్దిగా తగ్గుతున్నట్లు కనిపిస్తుంది, కానీ ఎక్కువగా కాదు, రోజుకు సుమారు 2 సెంట్లు. రిగ్రెషన్ రేఖ Y-అక్షంతో కలిసే బిందువు `lin_reg.intercept_` ద్వారా కూడా యాక్సెస్ చేయవచ్చు - ఇది మన సందర్భంలో సుమారు `21` ఉంటుంది, సంవత్సర ప్రారంభంలో ధరను సూచిస్తుంది. -మన మోడల్ ఎంత ఖచ్చితమో చూసేందుకు, మనం టెస్ట్ డేటాసెట్ పై ధరలను అంచనా వేయవచ్చు, ఆ తరువాత మన అంచనాలు అనుకూల విలువలకు ఎంత దగ్గరలో ఉందో కొలవచ్చు. దీన్ని రూట్ మీన్ స్క్వేర్ ఎర్రర్ (RMSE) metrics ఉపయోగించి చేయవచ్చు, ఇది అనుకున్న మరియు అంచనా విలువల మధ్య అన్ని స్క్వేర్ చేసిన తేడాల మీన్ యొక్క రూట్. +మన మోడల్ ఎన్ని ఖచ్చితంగా ఉందో చూడటానికి, టెస్ట్ డేటాసెట్‌లో ధరలను అంచనా వేయవచ్చు, ఆ తర్వాత మన అంచనాలు ఆశించిన విలువలకు ఎంత దగ్గరగా ఉన్నాయో కొలవచ్చు. ఇది రూట్ మీన్ స్క్వేర్ ఎర్రర్ (RMSE) మెట్రిక్స్ ఉపయోగించి చేయవచ్చు, ఇది సంగీత విలువల మధ్యలో ఉన్న స్క్వేర్ తేడాల యొక్క సగటు వేరియంతరాల వేరియంట్ మూలం. ```python pred = lin_reg.predict(X_test) @@ -216,16 +215,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -మన పొరపాటు సుమారు 2 పాయింట్లుగా ఉంది, అంటే సుమారు ~17%. చాలా బాగోలేదు. మోడల్ నాణ్యతకు మ دیگری సూచిక **నిర్ణయ కోఎఫిషియెంట్ (coefficient of determination)**, దీన్ని ఇలా పొందవచ్చు: +మన పొరపాటు సుమారు 2 పాయింట్లు ఉంది, ఇది ~17%. చాలా బాగూ లేదు. మోడల్ నాణ్యతకు మరొక సూచిక **నిర్ణాయక గుణకం** (coefficient of determination), దీన్ని ఇలా పొందవచ్చు: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -విలువ 0 అయితే, అర్థం మోడల్ ఇన్‌పుట్ డేటాను పరిగణలోకి తీసుకోదు మరియు *చాలామొత్తం లీనియర్ პროგ్నోస్టికేటర్* గా పనిచేస్తుంది, దీని ఫలితం సాదారణ విలువనే ఉంటుంది. విలువ 1 అంటే మనం అన్ని అంచనా సూచనలను సరిగ్గా అంచనా వేయగలిగినట్టుగా ఉంటుంది. మన కేసులో, కోఎఫిషియెంట్ సుమారు 0.06, ఇది చాల తక్కువ. +విలువ 0 ఉంటే, అర్థం మోడల్ ఇన్‌పుట్ డేటాను పరిగణించట్లేదు, మరియు అదొక *ఎక్కువ చెడ్డ రేఖీయ అంచనా*గా పనిచేస్తోంది, ఇది ఫలితాల సాధారణ సగటు విలువ మాత్రమే. విలువ 1 ఉంటే, మనం అన్ని ఆశించిన అవుట్‌పుట్లను పూర్తిగా అంచనా వేయగలమని అర్ధం. మన సందర్భంలో గుణకం సుమారు 0.06 ఉంటుంది, ఇది చాలా తక్కువది. -మనం రిగ్రెషన్ లైన్ తో కూడిన టెస్ట్ డేటా కూడా గ్రాఫ్ లో చూపించి మన కేసులో రిగ్రెషన్ ఎలా పనిచేస్తుందో మెరుగ్గా చూడవచ్చు: +రిగ్రెషన్ లైన్ తో టెస్ట్ డేటాను కలిసి ప్లాట్ చేయడం ద్వారా మన కేసులో రిగ్రెషన్ ఎలా పనిచేస్తుందో మెరుగుగా చూడవచ్చు: ```python plt.scatter(X_test,y_test) @@ -236,17 +235,17 @@ plt.plot(X_test,pred) ## పాలినోమియల్ రిగ్రెషన్ -మరొకరకంగా లీనియర్ రిగ్రెషన్ అంటే పాలినోమియల్ రిగ్రెషన్. మారకాల మధ్య కొన్నిసార్లు లీనియర్ సంబంధం ఉంటే—పంప్కిన్ వాల్యూమ్ ఎక్కువగా ఉంటే ధర ఎక్కువగా ఉండడం వంటివి—కొన్నిసార్లు ఈ సంబంధాలని సూటిగా లేదా విమానంగా చూపించడం కష్టం. +లీనియర్ రిగ్రెషన్ ఇంకొక రకం పాలినోమియల్ రిగ్రెషన్. కొన్ని సార్లు వేరియబుల్స్ మధ్య లీనియర్ సంబంధం ఉంటుంది - వాల్యూమ్ లో భారీ పంప్కిన్, ధర ఎక్కువగా ఉంటుంది - కొన్ని సార్లు ఈ సంబంధాలను స్థలంగా లేదా సరళరేఖగా ప్రదర్శించలేము. -✅ ఇక్కడ కొన్ని మరిన్ని ఉదాహరణలు ఉన్నాయి [https://online.stat.psu.edu/stat501/lesson/9/9.8](https://online.stat.psu.edu/stat501/lesson/9/9.8) పాలినోమియల్ రిగ్రెషన్ ఉపయోగించవచ్చిన డేటా గురించి +✅ ఇక్కడ [ఇంకా కొన్ని ఉదాహరణలు](https://online.stat.psu.edu/stat501/lesson/9/9.8) ఉన్నాయి, పాలినోమియల్ రిగ్రెషన్‌కు ఉపయోగపడే డేటాకు -తేదీ మరియు ధర మధ్య సంబంధాన్ని మరోసారి పరిశీలించండి. ఈ స్కాటర్ప్లాట్ తప్పకుండా సూటిగా విశ్లేషించాలి అనిపిస్తుందా? ధరలు అతిశయంగా మారవచ్చా? ఈ సందర్భంలో, పాలినోమియల్ రిగ్రెషన్ ప్రయత్నించవచ్చు. +తేదీ మరియు ధర మధ్య సంబంధాన్ని మరలా చూద్దాం. ఈ స్కాటర్‌ప్లాట్ తప్పకుండా సరళరేఖ ద్వారా విశ్లేషించాల్సి ఉందా? ధరలు మార్పు చెందలేవా? ఈ సందర్భంలో, మీరు పాలినోమియల్ రిగ్రెషన్ ప్రయత్నించవచ్చు. -✅ పాలినోమియల్స్ అనేవి గణిత సంబంధాలు, ఇవి ఒకటి కంటే ఎక్కువ వేరియబుల్స్ మరియు కోఎఫిషియెంట్లతో ఉండవచ్చు +✅ పాలినోమియల్స్ గణితీయ సంకేతాలు, ఇవి ఒకటి లేదా ఎక్కువ వేరియబుల్స్ మరియు గుణకాలాలతో కూడి ఉండవచ్చు -పాలినోమియల్ రిగ్రెషన్ అప్రత్యక్ష డేటాతో మంచి సరిపోయే వంకర గraphను సృష్టిస్తుంది. మన కేసులో, `DayOfYear` వేరియబుల్ యొక్క వర్గమూలాన్ని ఇన్‌పుట్ లో చేర్చితే, మన డేటాను ఒక పారబాలిక్ వంకరతో సరిపెట్టవచ్చు, ఇది సంవత్సరంలో ఒక నిర్దిష్ట స్థలంలో కనిష్టం కలిగివుంటుంది. +పాలినోమియల్ రిగ్రెషన్ వంకర వక్రరేఖను సృష్టిస్తుంది, లీనియర్ కాకపోయే డేటాను మెరుగైన ఫిట్ కోసం. మన సందర్భంలో, ఇన్‌పుట్ డేటాలో స్క్వేర్ చేయబడిన `DayOfYear` వేరియబుల్ చేర్చితే, మన డేటాను పారాబాలిక్ వక్రంతో సరిపోతుందనుకుంటాం, ఇది సంవత్సరంలో ఒక నిర్దిష్ట బిందువులో కనిష్టం కలిగి ఉంటుంది. -Scikit-learn సహాయకమైన [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ను కలిపి వేరే డేటా ప్రాసెసింగ్ స్టెప్పులను కలపడానికి వాడుతుంది. ఒక **pipeline** అనేది **estimators** చైన్. మనం మొదట పాలినోమియల్ ఫీచర్స్ మన మోడల్ లో చేర్చి, తరువాత రిగ్రెషన్ శిక్షణ ఇస్తాం: +Scikit-learn దశలను కలిపే ఉపయోగకరమైన [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)‌ను కలిగి ఉంది. ఒక **pipeline** అనేది **estimators** సంక్రమం. మన సందర్భంలో, మొదట పాలినోమియల్ ఫీచర్లను జోడించి, ఆపై రిగ్రెషన్ శిక్షణ ఇస్తున్న pipeline సృష్టించతాము: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` ఉపయోగించడం అంటే మనం ఇన్‌పుట్ డేటాలో రెండవ గుణకాన్ని కలిగి ఉంటాం. మన సందర్భంలో అది కేవలం `DayOfYear`2, అయితే రెండు ఇన్‌పుట్ X మరియు Y ఉంటే, ఇది X2, XY మరియు Y2 ను కూడా చేర్చుతుంది. మనం కావాలంటే ఎక్కువ అర్ధం గల పాలినోమియల్స్ కూడా ఉపయోగించవచ్చు. +`PolynomialFeatures(2)` ఉపయోగించడం అంటే మనం ఇన్‌పుట్ డేటా నుండి అన్ని రెండవ డిగ్రీ పాలినోమియల్స్‌ని చేర్చుతాము. మన సందర్భంలో ఇది కేవలం `DayOfYear`2, కానీ రెండు ఇన్‌పుట్ వేరియబుల్స్ X మరియు Y ఉంటే, ఇది X2, XY మరియు Y2ని చేర్చుతుంది. మనకు కావాలంటే మరింత గుణకాలు కూడా ఉపయోగించవచ్చు. + +పipelinesను అసలు `LinearRegression` ఆబ్జెక్ట్‌లాగా ఉపయోగించవచ్చు, అంటే pipeline ని `fit` చేసి, ఆపై `predict` ఉపయోగించి అంచనాలు పొందవచ్చు: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +స్మూత్ అప్రాక్సిమేషన్ వక్రరేఖను చిత్రించడానికి, `np.linspace` ఉపయోగించి సమాన శ్రేణి ఇన్‌పుట్ విలువలను సృష్టిస్తాము, అలాగే టెస్ట్ డేటా మీద నేరుగా చిత్రించకపోవడం (దీనివల్ల జిగ్-జాగ్ లైన్లు వస్తాయి): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline లను మొదటి `LinearRegression` ఆబ్జెక్ట్ లాగా ఉపయోగించవచ్చు, అంటే pipeline పై `fit` చేసి, తరువాత `predict` తో అంచనా ఫలితాలు పొందవచ్చు. ఇక్కడ టెస్ట్ డేటా మరియు సమీపీకరణ వంకర చూపబడింది: +ఇది టెస్ట్ డేటా మరియు అప్రాక్సిమేషన్ వక్రరేఖను చూపిస్తున్న గ్రాఫ్: Polynomial regression -పాలినోమియల్ రిగ్రెషన్ ఉపయోగించి, కొంత తక్కువ MSE మరియు ఎక్కువ నిర్ణయ కోఎఫిషియెంట్ పొందవచ్చు, కానీ పెద్దభాగంగా కాదు. ఇంకొన్ని లక్షణాలు పరిగణించాలి! +పాలినోమియల్ రిగ్రెషన్ ఉపయోగించడం వలన కొంచెం తక్కువ RMSE మరియు ఎక్కువ నిర్ధారణను పొందవచ్చు, కానీ గణనీయంగా కాదు. మనం మరింత ఫీచర్లను పరిగణలోనికి తీసుకోవాలి! -> నూతనంగా, కంటిపప్పు ధరలు సాధారణంగా హాలోవీన్ సమీపంలో తక్కువగా ఉంటాయి. దీని కారణం ఏమిటి? +> పంప్కిన్ ధరలు కనీసం హాలోవీన్ దగ్గరగా ఉంటున్నాయని చూడవచ్చు. దీన్ని ఎలా వివరిస్తారు? -🎃 అభినందనలు, మీరు పాయ్ పంప్కిన్ ధర అంచనా వేయడానికి ఒక మోడల్ సృష్టించారు. మీరు వేరే అన్ని పంప్కిన్ రకాలకు కూడా ఇదే విధానం అనుసరించవచ్చు, కానీ అది బరువు పని అవుతుంది. ఇప్పుడు మనం పంప్కిన్ రకాన్ని మన మోడల్ లో ఎలా పరిగణించాలో నేర్చుకుందాం! +🎃 అభినందనలు, మీకు పంప్కిన్ ధర అంచనా వేయగలిగే మోడల్ తయారైంది. మీరు ఇతర అన్ని పంప్కిన్ రకాలకూ ఇదే విధంగా చేయవచ్చు, కానీ అది చాలా కష్టంగా ఉంటుంది. ఇప్పుడు మనం పంప్కిన్ జాతి కూడా మోడల్ లో ఎలా పరిగణించాలో నేర్చుకుందాం! -## వర్గీకృత లక్షణాలు +## వర్గీకరణ ఫీచర్లు -సంపూర్ణ ప్రపంచంలో, వేరే పంప్కిన్ రకాల ధరలను ఒకే మోడల్ ద్వారా అంచనా వేయగలగాలి. కానీ, `Variety` కాలమ్ కొన్ని రకాల విలువలను కలిగి ఉంటుంది, ఉదాహరణకి సంఖ్యలేం కాదు. అటువంటి కాలమ్స్ ని **categorical** అంటారు. +ఆదర్శ ప్రపంచంలో, వేర్వేరు పంప్కిన్ జాతుల ధరలను ఒకే మోడల్ ఉపయోగించి అంచనా వేయగలగాలి. అయితే, `Variety` కాలమ్ `Month` లాంటి కాలమ్స్ నుండి కొంత భిన్నంగా ఉంటుంది, ఎందుకంటే ఇది సంఖ్యలు కాకుండా విలువలను కలిగి ఉంటుంది. ఇలాంటి కాలమ్స్ ను **వర్గీకరణ** (categorical) కాలమ్స్ అంటారు. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 పై చిత్రంపై క్లిక్ చేసి వర్గీకృత లక్షణాలు ఉపయోగించడం గురించికొత్త వీడియో చూపించండి. +> 🎥 పై చిత్రాన్ని క్లిక్ చేస్తే వర్గీకరణ ఫీచర్‌లు ఉపయోగించి మోడల్ తయారీపై సంక్షిప్త వీడియో చూస్తారు. -ఇక్కడ మీరు చూస్తారు, సగటు ధర రకం పై ఆధారపడి ఉంటుంది: +ఇక్కడ మీరు చూడవచ్చు, సమాన ధర వేరియిటీలపై ఆధారపడి ఎలా మారుతుంది: Average price by variety -రకాన్ని పరిగణించేందుకు, మునుపటి సంఖ్య రూపంలో మార్చాలి, దీన్ని **encode** అంటారు. దీని కొరకు ఎన్నో మార్గాలు ఉన్నాయి: +జాతిని పరిగణించడానికి, మొదట దాన్ని సంఖ్య రూపంలోకి మార్చాలి లేదా **ఎంకోడ్** చేయాలి. దీనికి కొన్ని విధానాలు ఉన్నాయి: -* సింపుల్ **న్యూమరిక్ ఎన్‌కోడింగ్** వేర్వేరు రకాల పట్టికని తయారు చేసి, ఆ రకం పేరును సూచికతో భర్తీ చేస్తుంది. లీనియర్ రిగ్రెషన్ కోసం ఇది మంచి ఆలోచన కాదు, ఎందుకంటే రిగ్రెషన్ సూచిక సంఖ్య యొక్క అసలు సంఖ్యను తీసుకుంటుంది మరియు ఫలితానికి ఒక కొఫిషియెంట్ తో గుణిస్తుంది. మన కేసులో, సూచిక సంఖ్య మరియు ధర మధ్య సంబంధం స్పష్టంగా లీనియర్ కాదు, సూచికలు ఏ విధంగా వరుసబద్దం చేసినా సరే. -* **వన్-హాట్ ఎన్‌కోడింగ్** `Variety` కాలమ్ ని 4 విడి కాలమ్స్ గా భర్తీ చేస్తుంది, ఒక్కో రకానికి ఒకటి. ప్రతి కాలమ్ లో, సంబంధిత వరుస ఆ రకానికి చెందినదైతే `1`, లేకపోతే `0` ఉంటుంది. దీని అర్థం, లీనియర్ రిగ్రెషన్ లో నాలుగు కొఫిషియెంట్లు ఉంటాయి, ఒక్కో పంప్కిన్ రకానికి ఒకటి, ఆ రకానికి చెందిన "ప్రారంభ ధర" లేదా "అదనపు ధర" కొరకు. +* సాదాసీదా **న్యూమరిక్ ఎంకోడింగ్** వేర్వేరు జాతుల పట్టికను తయారుచేసి, ఆ పట్టికలో జాతి పేరును ఇండెక్స్ తో బదిలీ చేయడం. ఇది లీనియర్ రిగ్రెషన్ కు సరైన ఆలోచన కాదు, ఎందుకంటే లీనియర్ రిగ్రెషన్ ఇండెక్స్ యొక్క నిజమైన సంఖ్య విలువను తీసుకొని ఫలితం లో కొంత గుణకం తో కలిపేస్తుంది. మనం చూసినా, ఇండెక్స్ సంఖ్య మరియు ధర మధ్య సంబంధం స్పష్టంగా లీనియర్ కాదు, అది సరిగ్గా క్రమంలో వుండకపోయినా. +* **వన్-హాట్ ఎంకోడింగ్** `Variety` కాలమ్ నాలుగు వేరే కాలమ్స్ తో బదిలీ చేస్తుంది, ఒక్క ఒక్క జాతికి ఒక కాలమ్ ఉంటుంది. సంబంధిత రో కృషి జాతి ఉంటే 1 ఉండి, లేనట్లయితే 0 ఉంటుంది. దీని అర్థం లీనియర్ రిగ్రెషన్‌లో నాలుగు గుణకాలు ఉంటాయి, ఒక్కొ జాతికి ఒకటి, అది ఆ జాతికి ప్రత్యేక "ప్రారంభ ధర" (లేదా "అదనపు ధర") ప్రతినిధిగా ఉంటుంది. -కోడ్ క్రింద చూపుతోంది ఒకరకాన్ని వన్-హాట్ ఎన్‌కోడ్ ఎలా చేయాలో: +కింది కోడ్ వన్-హాట్ ఎంకోడింగ్ ఎలా చేస్తుందో చూపిస్తుంది: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -వన్-హాట్ ఎన్‌కోడ్ రకాన్ని ఇన్‌పుట్‌గా ఉపయోగించి లీనియర్ రిగ్రెషన్ ట్రెయిన్ చేయడానికి, మనం `X` మరియు `y` డేటాను సరైన విధంగా ఇనిషియలైజ్ చేయాలి: +వన్-హాట్ ఎంకోడింగ్ చేసిన జాతి ఇన్‌పుట్ గా ఉపయోగించి లీనియర్ రిగ్రెషన్ శిక్షణకి `X` మరియు `y` డేటాలు సరైన విధంగా ప్రారంభించాలి: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -ఇంకా మిగతా కోడ్ పైన లీనియర్ రిగ్రెషన్ ట్రెయిన్ చేసిన విధంగా ఏమాత్రం తేడా లేదు. మీరు ప్రయత్నిస్తే, ఒకటే సగటు స్క్వేర్ ఎర్రర్ సుమారు అదే ఉంటుంది, కానీ నిర్ణయ కోఎఫిషియెంట్ (~77%) చాలా ఎక్కువ ఉంది. మరింత ఖచ్చితమైన అంచనాలకి, మరిన్ని వర్గీకృత లక్షణాలు మరియు సంఖ్యలు, ఉదా: `Month` లేదా `DayOfYear`, పరిగణించవచ్చు. అన్ని లక్షణాలను ఒక పెద్ద అర్రేలాగా మార్పిడి చేయడానికి `join` ఉపయోగిస్తారు: +మిగతా కోడ్ పైగా ఉపయోగించిన లీనియర్ రిగ్రెషన్ శిక్షణ కోడుతో సమానం. మీరు ప్రయత్నిస్తే, మీయిన్ స్క్వేర్ ఎర్రర్ సుమారు ఒకటే ఉంటుంది, కానీ నిర్ధారణ గుణకం చాలా ఎక్కువ (సుమారు 77%). మరింత ఖచ్చితమైన అంచనాల కోసం, మరిన్ని వర్గీకరణ ఫీచర్లను కూడా, అలాగే సంఖ్యాత్మక ఫీచర్లు (ఉదా: `Month`, `DayOfYear`) కూడా పరిగణించవచ్చు. పెద్ద ఫీచర్ అర్రే కోసం, `join` ఉపయోగించవచ్చు: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -ఇక్కడ మనం కూడా `City` మరియు `Package` రకాలను పరిగణలోకి తీసుకుంటాం, ఇది మనకు MSE 2.84 (10%), మరియు నిర్ణయ కోఎఫిషియెంట్ 0.94 అందిస్తుంది! +ఇక్కడ `City` మరియు `Package` రకాలను కూడా పరిగణించి, మనకు RMSE 2.84 (10.5%), నిర్ధారణ 0.94 వస్తుంది! -## అంతటిని కలిపి చూడటం +## మొత్తం కలిపి -మంచి మోడల్ చేసేందుకు, పైన ఉదాహరణలోని కలిపిన (వన్-హాట్ వర్గీకరణ + న్యూమరిక్) డేటాని పాలినోమియల్ రిగ్రెషన్ తో చేర్చవచ్చు. మీ సౌకర్యార్థం పూర్తిగా కింది కోడ్ ఉంది: +మెరుగైన మోడల్ కోసం, పై ఉదాహరణలో ఉన్న కలుపుతో (వన్-హాట్ ఎంకోడెడ్ వర్గీకరణ + సంఖ్యాత్మక డేటా) పాలినోమియల్ రిగ్రెషన్ ఉపయోగించవచ్చు. ఇక్కడ మీ సౌలభ్యం కొరకు పూర్తి కోడ్: ```python -# శిక్షణ డేటాను సెట్ చేయండి +# శిక్షణ డేటాను సెటప్ చేయండి X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# శిక్షణ-పరీక్ష విభజన చేయండి +# ట్రైన్-టెస్ట్ విభజన చేయండి X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# పైప్లైన్‌ని సెట్ చేసి శిక్షణ ఇచ్చుకోండి +# పైప్ లైన్‌ను సెటప్ చేసి శిక్షణ ఇవ్వండి pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# పరీక్షా డేటా కోసం ఫలితాలు అనుమానించండి +# ట్రస్ట్ డేటా కోసం ఫలితాలను అంచనా వేయండి pred = pipeline.predict(X_test) -# MSE మరియు నిర్ధారణను లెక్కించండి -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE మరియు నిర్ధారణ లెక్కించండి +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -అది మాకు సుమారు 97% నిర్ణయ కోఎఫిషియెంట్ మరియు MSE=2.23 (~8% అంచనా పొరపాటు) ఇస్తుంది. +దీంతో సుమారు 97% నిర్ధారణ గుణకం మరియు RMSE=2.23 (~8% అంచనా పొరపాటు) పొందగలుగుతాము. -| Model | MSE | Determination | -|-------|-----|--------------| -| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | -| `Variety` Linear | 5.24 (19.7%) | 0.77 | -| All features Linear | 2.84 (10.5%) | 0.94 | -| All features Polynomial | 2.23 (8.25%) | 0.97 | +| మోడల్ | RMSE | నిర్ధారణ | +|-------|-----|---------------| +| `DayOfYear` లీనియర్ | 2.77 (17.2%) | 0.07 | +| `DayOfYear` పాలినోమియల్ | 2.73 (17.0%) | 0.08 | +| `Variety` లీనియర్ | 5.24 (19.7%) | 0.77 | +| అన్ని ఫీచర్లు లీనియర్ | 2.84 (10.5%) | 0.94 | +| అన్ని ఫీచర్లు పాలినోమియల్ | 2.23 (8.25%) | 0.97 | -🏆 బాగుంది! మీరు ఒక పాఠంలో నాలుగు రిగ్రెషన్ మోడల్స్ తయారుచేసి, నాణ్యతను 97% కి పెంచేశారు. రిగ్రెషన్ చివరి భాగంలో, మీరు వర్గాలను నిర్ణయించే లాజిస్టిక్ రిగ్రెషన్ గురించినది నేర్పుకోనున్నారు. +🏆 చాలా బాగుంది! మీరు ఒక్క పాఠంలోనే నాలుగు రిగ్రెషన్ మోడల్స్ సృష్టించి, మోడల్ నాణ్యతను 97% వరకు మెరుగుపరిచారు. రిగ్రెషన్ పై చివరి విభాగంలో, మీరు వర్గాల కోసం లాజిస్టిక్ రిగ్రెషన్ గురించి నేర్చుకోగలుగుతారు. --- ## 🚀సవాల్ -ఈ నోట్బుక్ లో వివిధ వేరియబుల్స్ ని పరీక్షించి, అవి మోడల్ ఖచ్చితత్వం కి సంబంధించి ఎలా ఉంటాయో చూడండి. +ఈ నోట్‌బుక్‌లో కొన్ని వేరియబుల్స్‌తో పరీక్షించి, సహసంబంధం మోడల్ ఖచ్చితత్వంతో ఎలా అనుసంధానం అవుతుందో చూడండి. -## [పోస్టు-లెక్షర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) +## [ఉపన్యాసం తరువాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/) -## సమీక్ష & స్వీయ అధ్యయనం +## సమీక్ష & స్వయంపఠనం -ఈ పాఠంలో మనం లీనియర్ రిగ్రెషన్ గురించి నేర్చుకున్నాం. ఇతర ముఖ్య రిగ్రెషన్ రకాలూ ఉన్నాయి. స్టెప్‌వైజ్, రిడేజ్, లాస్సో మరియు ఎలాస్టిక్‌నెట్ టెక్నిక్స్ గురించి చదవండి. మరింత నేర్చుకోవడానికి మంచి కోర్సు [స్టాన్ఫోర్డ్ స్టాటిస్టికల్ లెర్నింగ్ కోర్సు](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)గా ఉంది. +ఈ పాఠంలో మేము లీనియర్ రిగ్రెషన్ గురించి నేర్చుకున్నాము. ఇతర ముఖ్యమైన రిగ్రెషన్ రకాలు కూడా ఉన్నాయి. Stepwise, Ridge, Lasso మరియు Elasticnet సాంకేతికతల గురించి చదవండి. మరింత నేర్చుకోవడానికి మంచి కోర్సు [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ఆసక్తికరంగా ఉంటుంది. ## అసైన్‌మెంట్ -[మోడల్ నిర్మించండి](assignment.md) +[మోడల్ ను నిర్మించండి](assignment.md) --- -**గమనిక**: -ఈ డాక్యూమెంట్ [Co-op Translator](https://github.com/Azure/co-op-translator) AI అనువాద సేవను ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వం కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా అసత్యతలు ఉండవచ్చు. మౌలిక భాషలో ఉన్న అసలు డాక్యూమెంట్ ను అధికారిక స్రోతస్ఫూర్తిగా పరిగణించాలి. కీలక సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదాన్ని సూచించబడుతుంది. ఈ అనువాదం ఉపయోగం నుండి వచ్చేప్రమాదాలు లేదా తప్పుదొర్లికలకు మేము బాధ్యత వహించడానికి లేదు. +**అస్పష్టత**: +ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ అయిన [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరైనత కోసం ప్రయత్నిస్తూన్నా, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పులు ఉండవచ్చని దయచేసి గమనించండి. మూల భాషలోని డాక్యుమెంట్‌ని అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదాన్ని సిఫార్సు చేయబడింది. ఈ అనువాదాన్ని ఉపయోగించడంలో జరిగిన ఏమైనా అవగాహన లోపాలు లేదా తప్పుగా అర్థం చేసుకోవడమ్కు మేము బాధ్యులం కం కుండా ఉంటాము. \ No newline at end of file diff --git a/translations/te/2-Regression/3-Linear/solution/notebook.ipynb b/translations/te/2-Regression/3-Linear/solution/notebook.ipynb index 8825e36af0..5f23f85ddc 100644 --- a/translations/te/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/te/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ పంప్కిన్ ధరల కోసం - పాఠం 3\n", + "## పంప్కిన్ ధరల కోసం లీనియర్ మరియు పాలినోమియల్ రిగ్రెషన్ - పాఠం 3\n", "\n", - "అవసరమైన లైబ్రరీలు మరియు డేటాసెట్‌ను లోడ్ చేయండి. డేటాను ఒక డేటాఫ్రేమ్‌గా మార్చండి, ఇందులో డేటా యొక్క ఉపసమితి ఉంటుంది:\n", + "అవసరమైన లైబ్రరీలు మరియు డేటాసెట్‌ను లోడ్ చేయండి. డేటాను ఒక డేటాఫ్రేమ్‌గా మార్చండి, ఇందులో డేటా యొక్క ఉపసెట్ ఉంటుంది:\n", "\n", - "- బషెల్ ద్వారా ధర పెట్టబడిన పంప్కిన్లను మాత్రమే పొందండి\n", + "- బస్సెల్ ద్వారా ధర పెడతున్న పంప్కిన్లనే పొందండి\n", "- తేదీని నెలగా మార్చండి\n", - "- ధరను గరిష్ట మరియు కనిష్ట ధరల సగటుగా లెక్కించండి\n", - "- ధరను బషెల్ పరిమాణం ప్రకారం ప్రతిబింబించేలా మార్చండి\n" + "- ధరను హై మరియు లో ధరల సగటుగా లెక్కించండి\n", + "- ధరను బస్సెల్ పరిమాణం ప్రకారం మార్చండి\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ఒక స్కాటర్ప్లాట్ మనకు ఆగస్టు నుండి డిసెంబర్ వరకు మాత్రమే నెలల డేటా ఉందని గుర్తుచేస్తుంది. రేఖీయంగా నిర్ణయాలు తీసుకోవడానికి మనకు ఎక్కువ డేటా అవసరం కావచ్చు.\n" + "ఒక స్క్యాటర్ప్లాట్ మనకు ఆగస్టు నుండి డిసెంబరు వరకు నెలల డేటా మాత్రమే ఉందని గుర్తు చేస్తుంది. సరళ రీతిలో నిర్ణయాలు తీసుకోవడానికి మనకు మరింత డేటా అవసరం కావచ్చు.\n" ] }, { @@ -448,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "మనం చూడాలి సంబంధం ఉందా:\n" + "రెండింటి మధ్య సంబంధం ఉందో చూద్దాం:\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "కోరిలేషన్ చాలా తక్కువగా కనిపిస్తోంది, కానీ మరొక ముఖ్యమైన సంబంధం ఉంది - ఎందుకంటే పై ప్లాట్‌లో ధర పాయింట్లు కొన్ని ప్రత్యేక క్లస్టర్లను కలిగి ఉన్నట్లు కనిపిస్తున్నాయి. వేర్వేరు పంప్కిన్ రకాలను చూపించే ఒక ప్లాట్ తయారు చేద్దాం:\n" + "కోర్‌లేషన్ చాలా తక్కువగా కనిపిస్తోంది, కానీ మరికొన్ని ముఖ్యమైన సంబంధాలు ఉన్నట్లుగా ఉంది - ఎందుకంటే పై ప్లాట్‌లో ధర పాయింట్లు స్పష్టమైన అనేక క్లస్టర్లను చూపిస్తున్నాయి. వివిధ గుమ్మడికాయ జాతులను చూపించే ఒక ప్లాట్ సృష్టించిద్దాం:\n" ] }, { @@ -538,7 +538,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ప్రస్తుతం, మనం ఒక రకమైనదానిపై మాత్రమే దృష్టి పెట్టుదాం - **పై టైప్**.\n" + "తాత్కాలికంగా, మనం ఒకే రకాన్ని మాత్రమే దృష్టి సారిద్దాం - **పై రకం**.\n" ] }, { @@ -586,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### లీనియర్ రిగ్రెషన్\n", + "### లినియర్ రిగ్రెషన్\n", "\n", - "మేము లీనియర్ రిగ్రెషన్ మోడల్‌ను శిక్షణ ఇవ్వడానికి Scikit Learn ఉపయోగిస్తాము:\n" + "లినియర్ రిగ్రెషన్ మోడల్‌ని ట్రెయిన్ చేయడానికి మేము Scikit Learn ఉపయోగిస్తాము:\n" ] }, { @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "రేఖీయ రిగ్రెషన్ గుణకాలు నుండి రేఖ యొక్క వక్రీకరణాన్ని నిర్ణయించవచ్చు:\n" + "రేఖీయ రిగ్రెషన్ కోయిఫిషియెంట్ల నుండి రేఖ యొక్క ఎడమను నిర్ణయించవచ్చు:\n" ] }, { @@ -693,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "మేము శిక్షణ పొందిన మోడల్‌ను ధరను అంచనా వేయడానికి ఉపయోగించవచ్చు:\n" + "మేము తారగత మోడల్‌ను ధర అంచనా కోసం ఉపయోగించవచ్చు:\n" ] }, { @@ -724,9 +724,9 @@ "source": [ "### పాలినోమియల్ రిగ్రెషన్\n", "\n", - "కొన్నిసార్లు ఫీచర్లు మరియు ఫలితాల మధ్య సంబంధం స్వభావతః నాన్-లీనియర్ ఉంటుంది. ఉదాహరణకు, పంప్కిన్ ధరలు శీతాకాలంలో (నెలలు=1,2) ఎక్కువగా ఉండవచ్చు, ఆపై వేసవిలో (నెలలు=5-7) తగ్గి, మళ్లీ పెరుగుతాయి. లీనియర్ రిగ్రెషన్ ఈ సంబంధాన్ని సరిగ్గా కనుగొనలేకపోతుంది.\n", + "కొన్నిసార్లు లక్షణాలు మరియు ఫలితాల మధ్య సంబంధం స్వభావतः నాన్-లీనియర్ ఉంటుంది. ఉదాహరణకు, పుంకిన్ల ధరలు శీతాకాలంలో (నెలలు=1,2) ఎక్కువగ ఉండవచ్చు, త్రాటు కాలంలో (నెలలు=5-7) తగ్గి మళ్ళీ పెరుగుతాయి. లీనియర్ రిగ్రెషన్ ఈ సంబంధాన్ని సరిగా కనుగొనలేను.\n", "\n", - "ఈ సందర్భంలో, అదనపు ఫీచర్లను జోడించడం గురించి ఆలోచించవచ్చు. సులభమైన మార్గం ఇన్‌పుట్ ఫీచర్ల నుండి పాలినోమియల్స్ ఉపయోగించడం, ఇది **పాలినోమియల్ రిగ్రెషన్** కు దారితీస్తుంది. Scikit Learn లో, మేము పైప్లైన్లను ఉపయోగించి ఆటోమేటిక్‌గా పాలినోమియల్ ఫీచర్లను ముందుగా లెక్కించవచ్చు: \n" + "ఈ సందర్భంలో, అదనపు లక్షణాలను చేర్చడం పరిగణించవచ్చు. ఒక సులభ మార్గం ఇన్పుట్ లక్షణాల నుండి పాలినోమియల్స్ ఉపయోగించడం, దీనివల్ల **పాలినోమియల్ రిగ్రెషన్** ఏర్పడుతుంది. Scikit Learn లో, మేము ఆటోమేటిగ్గా పాలినోమియల్ లక్షణాలను పైప్‌లైన్ల ద్వారా ప్రీ-కంప్యూట్ చేయవచ్చు: \n" ] }, { @@ -781,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### ఎన్‌కోడింగ్ రకాలు\n", + "### ఎన్‌కోడింగ్ రకాల\n", "\n", - "ఆదర్శ ప్రపంచంలో, మేము ఒకే మోడల్ ఉపయోగించి వివిధ పంప్కిన్ రకాలకు ధరలను అంచనా వేయగలగాలి. రకాన్ని పరిగణనలోకి తీసుకోవడానికి, ముందుగా దాన్ని సంఖ్యాత్మక రూపంలోకి మార్చాలి, లేదా **ఎన్‌కోడ్** చేయాలి. దీని కోసం మనకు కొన్ని మార్గాలు ఉన్నాయి:\n", + "ఇడియల్ ప్రపంచంలో, మనం ఒకే మోడల్ ఉపయోగించి భిన్నమైన పమ్మకిన్ రకాల ధరలను అంచనా వేయగలగాలి. రకాన్ని పరిగణలోకి తీసుకోవాలంటే, ముందు దాన్ని సంఖ్యాత్మక రూపంలోకి మార్చాలి, అంటే **ఎన్‌కోడింగ్** చేయాలి. దీనికి కొన్ని మార్గాలు ఉన్నాయి:\n", "\n", - "* సాదా సంఖ్యాత్మక ఎన్‌కోడింగ్, ఇది వివిధ రకాల పట్టికను నిర్మించి, ఆ పట్టికలోని సూచికతో రకం పేరును మార్చుతుంది. ఇది లీనియర్ రిగ్రెషన్ కోసం ఉత్తమ ఆలోచన కాదు, ఎందుకంటే లీనియర్ రిగ్రెషన్ సూచిక యొక్క సంఖ్యాత్మక విలువను పరిగణలోకి తీసుకుంటుంది, మరియు ఆ సంఖ్యాత్మక విలువ ధరతో సంఖ్యాత్మకంగా సంబంధం ఉండకపోవచ్చు.\n", - "* వన్-హాట్ ఎన్‌కోడింగ్, ఇది `Variety` కాలమ్‌ను 4 వేర్వేరు కాలమ్స్‌తో మార్చుతుంది, ప్రతి రకానికి ఒకటి, ఆ కాలమ్‌లో సంబంధిత వరుస ఆ రకానికి చెందినదైతే 1 ఉంటుంది, లేకపోతే 0 ఉంటుంది.\n", + "* సింపుల్ సంఖ్యాత్మక ఎన్‌కోడింగ్, ఇది వివిధ రకాల పట్టికను తయారు చేసి, ఆ పట్టికలోని సూచిక ద్వారా రకపు పేరును మార్చుతుంది. ఇది లీనియర్ రిగ్రెషన్ కోసం ఉత్తమ ఆలోచన కాదు, ఎందుకంటే లీనియర్ రిగ్రెషన్ సూచిక యొక్క సంఖ్యాత్మక విలువను పరిగణలోకి తీసుకుంటుంది, ఆ సంఖ్యాత్మక విలువ ధరతో గణితపరమైన సంబంధం లేదనేది తేలకపోవచ్చు.\n", + "* వన్-హాట్ ఎన్‌కోడింగ్, దీనిలో `Variety` కాలమ్‌ను 4 వేర్వేరు కాలమ్‌లుగా మార్చి, ప్రతి రకానికి ఒక కాలమ్ ఉంటుంది, ఆ కాలమ్‌లో సంబంధిత వరుస ఆ రకానికి సంబంధించకుండా ఉంటే 0, ఉంటే 1 ఉంటుంది.\n", "\n", - "క్రింది కోడ్ ఒక రకాన్ని వన్-హాట్ ఎన్‌కోడ్ చేయడం ఎలా చేయాలో చూపిస్తుంది:\n" + "కింది కోడ్ రకాన్ని వన్-హాట్ ఎన్‌కోడింగ్ ఎలా చేయాలో చూపిస్తుంది:\n" ] }, { @@ -944,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### రేఖీయ రిగ్రెషన్ వేరియటీపై\n", + "### వేరియేటిపై లీనియర్ రిగ్రెషన్\n", "\n", - "మేము ఇప్పుడు పై కోడ్‌ను అదే విధంగా ఉపయోగించబోతున్నాము, కానీ `DayOfYear` బదులు మా వన్-హాట్-ఎంకోడ్ చేసిన వేరియటీని ఇన్‌పుట్‌గా ఉపయోగిస్తాము:\n" + "ముందు భాగంలో ఇచ్చిన కోడ్‌ని ఇదే విధంగా ఉపయోగిస్తాము, కానీ `DayOfYear` స్థానంలో మా వన్-హాట్-ఎంకోడెడ్ వేరియేటిని ఇన్‌పుట్‌గా ఉపయోగిస్తాము:\n" ] }, { @@ -994,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "మేము అదే విధంగా ఇతర లక్షణాలను కూడా ప్రయత్నించవచ్చు, మరియు వాటిని సంఖ్యాత్మక లక్షణాలతో కలపవచ్చు, ఉదాహరణకు `Month` లేదా `DayOfYear`:\n" + "మేము అదే విధంగా ఇతర లక్షణాలను కూడా ప్రయత్నించవచ్చు, మరియు వాటిని సంఖ్యా లక్షణాలతో కలిపి ఉపయోగించవచ్చు, ఉదాహరణకు `Month` లేదా `DayOfYear`:\n" ] }, { @@ -1027,7 +1030,7 @@ "source": [ "### పాలినోమియల్ రిగ్రెషన్\n", "\n", - "పాలినోమియల్ రిగ్రెషన్‌ను ఒక-హాట్-ఎన్‌కోడ్ చేసిన వర్గీకరణ లక్షణాలతో కూడా ఉపయోగించవచ్చు. పాలినోమియల్ రిగ్రెషన్‌ను శిక్షణ ఇవ్వడానికి కోడ్ మునుపటి విధంగా ఉంటుంది.\n" + "పాలినోమియల్ రిగ్రెషన్‌ను ఒక-హాట్-ఎంకోడ్ చేసిన వర్గీకరణ లక్షణాలతో కూడా ఉపయోగించవచ్చు. పాలినోమియల్ రిగ్రెషన్‌ను శిక్షణ ఇవ్వడానికి కోడ్ మునుపటి పద్దతితో సాదారణంగా అదే ఉంటుంది.\n" ] }, { @@ -1074,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**అస్పష్టత**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల బాధ్యత మేము తీసుకోము.\n\n" + "---\n\n\n**వేలంట్**: \nఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించారు. మేము సరైనదిగా ఉండేందుకు ప్రయత్నిస్తున్నప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా తప్పులుండే అవకాశం ఉంది. దయచేసి, మౌళిక భాషలో ఉన్న మూల పత్రాన్ని అధికారిక ఆధారంగా పరిగణించాలి. కీలక సమాచారం కోసం నిపుణుల انسانی అనువాదం చేయించడం మంచిది. ఈ అనువాదం వాడకం నుండి కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారులు గురించి మేము బాధ్యత వహించము.\n\n" ] } ], @@ -1104,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-12-19T16:19:13+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "te" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 35dbfd7b5e9190776097c981e63e9edfe96ec1e7 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:39:08 +0000 Subject: [PATCH 10/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 4 changes) --- translations/km/.co-op-translator.json | 12 +- .../4-techniques-of-ML/README.md | 122 +++---- .../km/2-Regression/3-Linear/README.md | 297 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 63 ++-- 4 files changed, 261 insertions(+), 233 deletions(-) diff --git a/translations/km/.co-op-translator.json b/translations/km/.co-op-translator.json index 019a22962c..ae2dc36ff6 100644 --- a/translations/km/.co-op-translator.json +++ b/translations/km/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "km" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2026-04-06T18:16:52+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:38:59+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "km" }, @@ -120,8 +120,8 @@ "language_code": "km" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:00:58+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:38:14+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "km" }, @@ -150,8 +150,8 @@ "language_code": "km" }, "2-Regression/3-Linear/solution/notebook.ipynb": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2026-04-06T19:06:48+00:00", + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:37:05+00:00", "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", "language_code": "km" }, diff --git a/translations/km/1-Introduction/4-techniques-of-ML/README.md b/translations/km/1-Introduction/4-techniques-of-ML/README.md index e324bf4c07..02fc98b98a 100644 --- a/translations/km/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/km/1-Introduction/4-techniques-of-ML/README.md @@ -1,125 +1,127 @@ # បច្ចេកទេសនៃការរៀនម៉ាស៊ីន -ដំណើរការនៃការបង្កើត ប្រើប្រាស់ និងថែទាំម៉ូដែលការរៀនម៉ាស៊ីន និងទិន្នន័យដែលពួកវា ប្រើប្រាស់ គឺជាប្រភេទដំណើរការផ្សេងពីច្រើនដំណើរការអភិវឌ្ឍន៍ផ្សេងទៀត។ ក្នុងមេរៀននេះ យើងនឹងបំបែកអាថ៍កំបាំងនៃដំណើរការនេះ ហើយលើកសញ្ញាផ្នែកបច្ចេកទេសសំខាន់ៗដែលអ្នកត្រូវដឹង។ អ្នកនឹង៖ +ដំណើរការនៃការសាងសង់ ការប្រើប្រាស់ និងការថែរក្សាគំរូរៀនម៉ាស៊ីន និងទិន្នន័យដែលពួកវាប្រើ គឺជាដំណើរការផ្សេងលើសពីវឌ្ឍនកម្មផ្សេងទៀតជាច្រើន។ នៅក្នុងមេរៀននេះ យើង​អាចអះអាងពីដំណើរការនេះ និងរៀបរាប់បច្ចេកទេសសំខាន់ៗដែលអ្នកត្រូវយល់ដឹង។ អ្នកនឹង៖ -- យល់ដឹងអំពីដំណើរការដែលគាំទ្រ ក្រោមកម្រិតខ្ពស់នៃការរៀនម៉ាស៊ីន។ -- សិក្សាពីគំនិតមូលដ្ឋានដូចជា 'ម៉ូដែល' 'ការព្យាករណ៍' និង 'ទិន្នន័យបណ្តុះបណ្តាល'។ +- យល់ដឹងពីដំណើរការដែលគាំទ្រដល់ការរៀនម៉ាស៊ីននៅកម្រិតខ្ពស់។ +- ស្វែងយល់អំពីគំនិតមូលដ្ឋានដូចជា 'គំរូ', 'ការព្យាករណ៍' និង 'ទិន្នន័យបណ្តុះបណ្តាល'។ -## [សំនួរត្រួតពិនិត្យមុនមេរៀន](https://ff-quizzes.netlify.app/en/ml/) +## [ប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីមួយនៃការប្រតិបត្តិមេរៀននេះ។ +> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីមួយអំពីការងារក្នុងមេរៀននេះ។ -## ការណែនាំ +## បទដំបូន្មាន -នៅកម្រិតខ្ពស់ សិប្បកម្មនៃការបង្កើតដំណើរការរៀនម៉ាស៊ីន (ML) ត្រូវបានបង្កប់ដោយជំហានច្រើន៖ +នៅកម្រិតខ្ពស់ សិល្បៈនៃការបង្កើតដំណើរការ​រៀនម៉ាស៊ីន (ML) មានជំហានជាច្រើន៖ -1. **សម្រេចចិត្តលើសំណួរ**។ ដំណើរការរៀនម៉ាស៊ីនភាគច្រើនចាប់ផ្តើមដើមដោយការសួរសំណួរដែលមិនអាចឆ្លើយតបដោយកម្មវិធីមានលក្ខខណ្ឌឬប្រព័ន្ធច្បាប់មួយ។ សំណួរទាំងនេះភាគច្រើនមានទំនាក់ទំនងនឹងការព្យាករណ៍ដែលផ្អែកលើយោគន័យទិន្នន័យមួយ។ -2. **រក្សាទិន្នន័យ និងរៀបចំទិន្នន័យ**។ ដើម្បីឆ្លើយសំណួររបស់អ្នក អ្នកត្រូវការទិន្នន័យ។ គុណភាព និងពេលខ្លះ បរិមាណទិន្នន័យរបស់អ្នកនឹងកំណត់ថាតើអ្នកអាចឆ្លើយសំណួរដើមបានល្អប៉ុណ្ណា។ ការមើលឃើញទិន្នន័យជារូបភាពគឺជាផ្នែកសំខាន់នៃជំហាននេះ។ ជំហាននេះរួមមានការបែងចែកទិន្នន័យទៅក្រុមបណ្តុះបណ្តាល និងតេស្ត ដើម្បីបង្កើតម៉ូដែល។ -3. **ជ្រើសរើសវិធីសាស្ត្របណ្តុះបណ្តាល**។ អាស្រ័យលើសំណួររបស់អ្នក និងធម្មជាតិទិន្នន័យ អ្នកត្រូវជ្រើសរើសរបៀបដែលអ្នកចង់បណ្តុះបណ្តាលម៉ូដែល ដើម្បីប្រតិបត្តិរូបភាពទិន្នន័យរបស់អ្នកឱ្យបានល្អបំផុត និងធ្វើការព្យាករណ៍បានត្រឹមត្រូវ។ នេះជាផ្នែកនៃដំណើរការរៀនម៉ាស៊ីនដែលទាមទារជំនាញជាក់លាក់ និងជាផ្នែកច្រើននៃការសាកល្បងយ៉ាងច្រើន។ -4. **បណ្តុះបណ្តាលម៉ូដែល**។ ប្រើប្រាស់ទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក អ្នកនឹងប្រើលេខាធិការកម្មវិធីនានាដើម្បីបណ្តុះបណ្តាលម៉ូដែល ដើម្បីស្គាល់លំនាំក្នុងទិន្នន័យ។ ម៉ូដែលអាចប្រើប្រាស់ទំងន់ផ្ទៃក្នុងដែលអាចប្តូរបាន ដើម្បីផ្តល់តម្លៃល្អជាងសម្រាប់ផ្នែកជាក់លាក់នៃទិន្នន័យ ដោយមានគោលបំណងបង្កើតម៉ូដែលល្អប្រសើរជាងមុន។ -5. **វាយតម្លៃម៉ូដែល**។ អ្នកប្រើទិន្នន័យដែលមិនដែលបានមើលមុន (ទិន្នន័យតេស្ត) ពីប្រភពទិន្នន័យដែលបានប្រមូល ដើម្បីមើលម៉ូដែលបញ្ចេញសមិទ្ធផលយ៉ាងដូចម្តេច។ -6. **កែតម្រូវប៉ារ៉ាម៉ែត្រ**។ យោងទៅលើសមត្ថភាពរបស់ម៉ូដែល អ្នកអាចធ្វើពន្លឿនដំណើរការឡើងវិញដោយប្រើប៉ារ៉ាម៉ែត្រ ឬអថេរដែលគ្រប់គ្រងអវកាសនៃលេខាធិការ ដែលបានប្រើបណ្តុះបណ្តាលម៉ូដែល។ -7. **ព្យាករណ៍**។ ប្រើបញ្ចូលថ្មីដើម្បីសាកល្បងភាពត្រឹមត្រូវរបស់ម៉ូដែលអ្នក។ +1. **សម្រេចចិត្តលើសំណួរ**។ ដំណើរការរៀនម៉ាស៊ីនភាគច្រើនចាប់ផ្តើមដោយសំណួរដែលមិនអាចឆ្លើយបានដោយកម្មវិធីលក្ខខណ្ឌឬវិស្វកម្មបែបច្បាប់។ សំណួរទាំងនេះវិលជុំជារឿងការព្យាករណ៍បន្ទាប់ពីមានការប្រមូលទិន្នន័យមួយ។ +2. **ប្រមូល និងរៀបចំទិន្នន័យ**។ ដើម្បីឆ្លើយសំណួររបស់អ្នក អ្នកត្រូវការ​ទិន្នន័យ។ គុណភាព និងមុខងាររបស់ទិន្នន័យ រឺបរិមាណវា នឹងកំណត់ថាអ្នកអាចឆ្លើយសំណួរដំបូងបានល្អប៉ុណ្ណា។ ការបង្ហាញទិន្នន័យជារូបភាពគឺជាជំហានសំខាន់មួយនៅដំណាក់កាលនេះ។ ជំហាននេះរួមមានការបំបែកទិន្នន័យជាក្រុមបណ្តុះបណ្តាល និងសាកល្បងសម្រាប់បង្កើតគំរូ។ +3. **ជ្រើសរើសវិធីសាស្រ្តបណ្តុះបណ្តាល**។ អាស្រ័យលើសំណួររបស់អ្នក និងធម្មជាតិនៃទិន្នន័យ អ្នកត្រូវជ្រើសរើសរបៀបបណ្តុះបណ្តាលគំរូឲ្យសម្រួល និងបង្ហាញការព្យាករណ៍បានត្រឹមត្រូវ។ នេះជាផ្នែកដែលត្រូវការជំនាញពិសេស និងភាគច្រើនតម្រូវឲ្យមានការប្រកាសតេស្តជាច្រើន។ +4. **បណ្តុះបណ្តាលគំរូ**។ ប្រើទិន្នន័យបណ្តុះបណ្តាល អ្នកនឹងប្រើអាល់ហ្គូនិចផ្សេងៗដើម្បីបណ្តុះបណ្តាលគំរូឲ្យស្គាល់លំនាំនៅក្នុងទិន្នន័យ។ គំរូអាចប្រើទំងន់ផ្ទៃក្នុងដែលអាចកែប្រែដើម្បីផ្តល់អាទិភាពចំពោះផ្នែកជាក់លាក់នៃទិន្នន័យសម្រាប់បង្កើតគំរូល្អជាងមុន។ +5. **វាយតម្លៃគំរូ**។ អ្នកប្រើទិន្នន័យមិនដែលឃើញមុន (ទិន្នន័យសាកល្បង) ពីក្រុមទិន្នន័យដែលបានប្រមូលដើម្បីពិនិត្យមើលថាគំរូបង្ហាញការប្រតិបត្តិការយ៉ាងដូចម្តេច។ +6. **កំណត់ប៉ារ៉ាម៉ែត្រ**។ អាស្រ័យលើការប្រតិបត្តិរបស់គំរូ អ្នកអាចធ្វើវិធីវិញដោយប្រើប៉ារ៉ាម៉ែត្រ ឬអថេរ ផ្លាស់ប្តូរយ៉ាងមួយដែលគ្រប់គ្រងការប្រតិបត្តិនៃអាល់ហ្គូរីធម៍សម្រាប់បណ្តុះបណ្តាលគំរូ។ +7. **ការព្យាករណ៍**។ ប្រើinputថ្មីៗសម្រាប់សាកល្បងភាពត្រឹមត្រូវនៃគំរូរបស់អ្នក។ -## តើត្រូវសួរសំណួរអ្វី +## ត្រូវសួរសំណួរអ្វី -កុំព្យូទ័រមានជំនាញពិសេសក្នុងការរកឃើញលំនាំលាក់ក្នុងទិន្នន័យ។ អត្ថប្រយោជន៍នេះមានប្រយោជន៍សម្រាប់អ្នកស្រាវជ្រាវដែលមានសំណួរអំពីដែនដីមួយដែលមិនអាចឆ្លើយបានងាយដោយបង្កើតប្រព័ន្ធកំណត់លក្ខខ័ណ្ឌបែបច្បាប់។ ឧទាហរណ៍ ក្នុងភារកិច្ចអាគុយស្ត្រី ព័ត៌មានវិទ្យាទិន្នន័យថែមតម្រូវអាចបង្កើតច្បាប់ដូចគេច្នៃប្រឌិតអំពីភាពស្លាប់របស់អ្នកបារីប្រៀបធៀបនឹងអ្នកមិនបារី។ +កុំព្យូទ័រមានជំនាញពិសេសក្នុងការរកឃើញលំនាំលាក់នៅក្នុងទិន្នន័យ។ ប្រយោជន៍នេះមានសារៈសំខាន់សម្រាប់អ្នកស្រាវជ្រាវដែលមានសំណួរអំពីដែនកំណត់មួយដែលមិនអាចឆ្លើយបានដោយបង្កើតវិស្វកម្មច្បាប់លក្ខខណ្ឌឧបត្ថម្ភ។ -យ៉ាងไรก็ตามពេលបញ្ចូលអថេរច្រើនផ្សេងទៀតចូលក្នុងសមីការ ម៉ូដែល ML អាចមានប្រសិទ្ធភាពជាងក្នុងការព្យាករណ៍អត្រាស្លាប់អនាគតដោយផ្អែកលើប្រវត្តិសុខភាពចាស់ៗ។ ឧទាហរណ៍មួយដែលរីករាយជាងគេអាចជាការធ្វើការព្យាករណ៍អាកាសធាតុសម្រាប់ខែមេសា ក្នុងទីតាំងណាមួយដោយផ្អែកលើទិន្នន័យដែលរួមមានទិសដៅអាកាសធាតុ អំពីជាន់ទីតាំង, ផ្លាស់ប្តូរអាកាសធាតុ, ភាពជិតសមុទ្រ, លំនាំឯកសារចរណ៍ខ្យល់ និងច្រើនទៀត។ +ឧទាហរណ៍ក្នុងដំណោះស្រាយអចលនវាយនភណ្ឌ អ្នកវិទ្យាសាស្ត្រទិន្នន័យអាចបង្កើតច្បាប់ដេរដោយដៃអំពីអត្រាស្លាប់របស់អ្នកជក់បារីដោយប្រៀបធៀបនឹងអ្នកមិនជក់បារី។ -✅ ស្លាយឯកសារនេះ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ពីម៉ូដែលអាកាសធាតុផ្ដល់ចំណុចមើលប្រវត្តិវិទ្យាសម្រាប់ការប្រើ ML ក្នុងការវិភាគអាកាសធាតុ។ +ពេលដែលអថេរច្រើនផ្សេងទៀតត្រូវបានដាក់ចូលក្នុងសមីការនោះ គំរូ ML អាចបង្ហាញបានប្រសើរជាងក្នុងការព្យាករណ៍អត្រាស្លាប់អនាគតដោយផ្អែកលើប្រវត្តិរឿងសុខភាពកន្លងមក។ ឧទាហរណ៍សប្បាយរីករាយជាងគឺការព្យាករណ៍អាកាសធាតុនៃខែមេសានៅទីតាំងណាមួយ ដោយផ្អែកលើទិន្នន័យរួមបញ្ចូលខ្សែរយៈទទឹង, បណ្តោយ, ប្រែប្រួលអាកាសធាតុ, ការរីកជិតសមុទ្រ, រលកភ្លៀងធំ, និងផ្សេងៗទៀត។ -## ភារកិច្ចមុនការបង្កើត +✅ ស្លាយនេះ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) អំពីគំរូអាកាសធាតុផ្តល់ទស្សនៈប្រវត្តិសាស្ត្រ​ក្នុងការប្រើប្រាស់ ML ក្នុងវិភាគអាកាសធាតុ។ -មុននឹងចាប់ផ្តើមបង្កើតម៉ូដែលរបស់អ្នក មានភារកិច្ចជាច្រើនដែលអ្នកត្រូវបញ្ចប់។ ដើម្បីសាកល្បងសំណួររបស់អ្នក និងបង្កើតសំនឹមយោងតាមការព្យាករណ៍របស់ម៉ូដែល អ្នកត្រូវកំណត់ និងកំណត់រចនាសម្ព័ន្ធធាតុជាច្រើន។ +## ការងារមុនសង់គំរូ + +មុនចាប់ផ្តើមសាងសង់គំរូរបស់អ្នក មានបំណងការងារច្រើនដែលអ្នកត្រូវបញ្ចប់។ ដើម្បីសាកល្បងសំណួររបស់អ្នក និងបង្កើតទ្រឹស្តីលើការព្យាករណ៍នៃគំរូ អ្នកត្រូវកំណត់ និងកំណត់រចនាសម្ព័ន្ធធាតុខ្លះៗ។ ### ទិន្នន័យ -ដើម្បីឆ្លើយសំណួររបស់អ្នកដោយប្រាកដ អ្នកត្រូវការទិន្នន័យច្រើនមានប្រភេទត្រឹមត្រូវ។ មានពីររឿងដែលអ្នកត្រូវធ្វើនៅឆ្នាំនេះ៖ +ដើម្បីឆ្លើយសំណួររបស់អ្នកដោយមានភាពច្បាស់លាស់ អ្នកត្រូវមានទិន្នន័យចំនួនមួយដែលមានប្រភេទត្រឹមត្រូវ។ មានរឿងពីរអ្វីដែល អ្នកត្រូវធ្វើនៅពេលនេះ៖ -- **ប្រមូលទិន្នន័យ**។ ការចងចាំមេរៀនមុនអំពីកិច្ចភាពយុត្តិធម៌ក្នុងការវិភាគទិន្នន័យ ចូរប្រមូលទិន្នន័យដោយប្រុងប្រយត្ន៍។ ត្រូវយល់ដឹងពីប្រភពទិន្នន័យនេះ ការបង្វិលបម្រែបម្រួលរបស់វា និងចុះបញ្ជីប្រភពដើម។ -- **រៀបចំទិន្នន័យ**។ មានជំហានជាច្រើនក្នុងដំណើរការរៀបចំទិន្នន័យ។ អ្នកអាចត្រូវដាក់ទិន្នន័យជាបន្ទាត់ និង normalize វាបើវាមកពីប្រភពផ្សេងៗ។ អ្នកអាចបង្កើនគុណភាព និងបរិមាណទិន្នន័យតាមវិធីផ្សេងៗ ដូចជាការបម្លែងខ្សែអក្សរទៅជាចំនួន (ដូចដែលយើងធ្វើក្នុង [Clustering](../../5-Clustering/1-Visualize/README.md))។ អ្នកអាចបង្កើតទិន្នន័យថ្មីពីមួលដើមបាន (ដូចដែលយើងធ្វើក្នុង [Classification](../../4-Classification/1-Introduction/README.md))។ អ្នកអាចសំអាតនិងកែប្រែទិន្នន័យ (ដូចដែលយើងនឹងធ្វើមុនមេរៀន [Web App](../../3-Web-App/README.md))។ បន្ថែមពីនេះ អ្នកអាចត្រូវ randomized និង shuffle វា តាមវិធីសាស្រ្តបណ្តុះបណ្តាលរបស់អ្នក។ +- **ប្រមូលទិន្នន័យ**។ ពោលពាក្យបន្ទាប់ពីមេរៀនមុនអំពីក្របខ័ណ្ឌនៃភាពមិនមានភាពធានាគូប្រជែង ក្នុងការវិភាគទិន្នន័យ ចូរប្រមូលទិន្នន័យរបស់អ្នកយ៉ាងប្រុងប្រយ័ត្ន។ ចាំបាច់ត្រូវយល់ពីប្រភពទិន្នន័យ នឹងអំពើលើកលែងពាក់ព័ន្ធលើវា និងសរសេរមកដើមវា។ +- **រៀបចំទិន្នន័យ**។ មានបញ្ហាច្រើនក្នុងដំណើរការរៀបចំទិន្នន័យ។ អ្នកអាចត្រូវប្រមូលផ្តុំទិន្នន័យ និងធ្វើការធម្មតាប្រសិនបើវាដាច់គ្នាពីប្រភពផ្សេងៗគ្នា។ អ្នកអាចបង្កើនគុណភាព និងបរិមាណទិន្នន័យដោយវិធីជាច្រើនដូចជាការបម្លែងអក្សរទៅជាលេខ (ដូចនៅក្នុង [Clustering](../../5-Clustering/1-Visualize/README.md))។ អ្នកអាចបង្កើតទិន្នន័យថ្មីពីទិន្នន័យដើម (ដូចនៅក្នុង [Classification](../../4-Classification/1-Introduction/README.md))។ អ្នកអាចសម្អាត និងកែសម្រួលទិន្នន័យ (ដូចដែលយើងនឹងធ្វើមុនមេរៀន [Web App](../../3-Web-App/README.md))។ យ៉ាងបញ្ចប់ អ្នកអាចត្រូវការតម្រៀបចៃដន្យ និងបម្លែងវា ដោយអាស្រ័យលើបច្ចេកទេសបណ្តុះបណ្តាលរបស់អ្នក។ -✅ បន្ទាប់ពីប្រមូល និងដំណើរការទិន្នន័យរបស់អ្នក សូមចំណាយពេលមើលថាទម្រង់របស់វា អាចឱ្យអ្នកដោះស្រាយសំណួរត្រូវបានមែនទេ។ អាចជាករណីដែលទិន្នន័យមិនអាចធ្វើបានល្អក្នុងភារកិច្ចរបស់អ្នក ដូចដែលយើងបានរកឃើញក្នុងមេរៀន [Clustering](../../5-Clustering/1-Visualize/README.md)។ +✅ បន្ទាប់ពីប្រមូល និងដំណើរការទិន្នន័យរួច សូមចំណាយពេលមួយសម្រាប់ពិនិត្យមើលថារូបរាងទិន្នន័យនឹងអាចបញ្ចេញចម្លើយសំណួររបស់អ្នកបានរឺទេ។ ប្រហែលជាទិន្នន័យមិនអាចដំណើរការបានល្អសម្រាប់កិច្ចការដែលអ្នកដាក់ជាក់លាក់ ដូចដែលយើងបានរកឃើញនៅក្នុងមេរៀន [Clustering](../../5-Clustering/1-Visualize/README.md)។ -### លក្ខណៈពិសេស និងគោលដៅ +### លក្ខណៈ និងគោលដៅ -[លក្ខណៈពិសេស](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) គឺជាសម្បត្តិនៃទិន្នន័យដែលអាចវាស់បាន។ នៅក្នុងតារាងទិន្នន័យជាច្រើនវាត្រូវបានបង្ហាញជាថ្មើរឈ្មោះជួរដេកដូចជា 'កាលបរិច្ឆេទ' 'ទំហំ' ឬ 'ពណ៌'។ អថេរលក្ខណៈពិសេសរបស់អ្នក ដែលភាគច្រើនតំណាងដោយ `X` នៅក្នុងកូដ តំណាងឱ្យអថេរបញ្ចូលដែលនឹងត្រូវប្រើសម្រាប់បណ្តុះបណ្តាលម៉ូដែល។ +[លក្ខណៈ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) គឺជាគុណលក្ខណៈដែលអាចវាស់បាននៃទិន្នន័យរបស់អ្នក។ ក្នុងមុខងារទិន្នន័យជាច្រើន វាត្រូវបានបង្ហាញនៅជា​ភាសាស៊ុម​ថា 'ថ្ងៃ' 'ទំហំ' ឬ 'ពណ៌'។ អថេរលក្ខណៈរបស់អ្នក ធ្វើតំណាងជាទូទៅជា `X` ក្នុងកូដ ដែលជាការបញ្ចូលដែលនៅក្នុងការបណ្តុះបណ្តាលគំរូ។ -គោលដៅគឺជារឿងដែលអ្នកកំពុងព្យាករណ៍។ គោលដៅត្រូវបានតំណាងជាធម្មតា `y` នៅក្នុងកូដ ដើម្បីបង្ហាញចំលើយចំពោះសំណួរដែលអ្នកកំពុងសួរអំពីទិន្នន័យ៖ នៅខែធ្នូ ការពណ៌អំពៅណាដែលមានតម្លៃទាបបំផុត? នៅទីក្រុង San Francisco តំបន់ណាដែលមានតម្លៃអចលនទ្រព្យល្អបំផុត? ពេលខ្លះគោលដៅត្រូវបានហៅថា 'label attribute' ផងដែរ។ +គោលដៅគឺជារឿងដែលអ្នកកំពុងព្យាករ។ គោលដៅ ធ្វើតំណាងជា `y` នៅក្នុងកូដ ដែលជាចម្លើយសម្រាប់សំណួរដែលអ្នកកំពុងសួរពីទិន្នន័យ៖ ក្នុងខែធ្នូ តើ​ **ពណ៌** ទំពាំងបាយជ្រលក់ណាដែលថោកជាងគេ? នៅសានហ្វ្រង់ស៊ីស្កូ តើតំបន់ណាដែលមាន **តម្លៃ**អចលនទ្រព្យល្អបំផុត? ម្តងម្កាល គោលដៅក៏ត្រូវបានហៅថាជាលេខ​សម្គាល់។ -### ជ្រើសរើសអថេរលក្ខណៈពិសេសរបស់អ្នក +### ជ្រើសរើសអថេរលក្ខណៈរបស់អ្នក -🎓 **ការជ្រើសរើសលក្ខណៈពិសេស និងការបញ្ចេញលក្ខណៈពិសេស** តើធ្លាប់ដឹងរបៀបជ្រើសអថេរណាមួយក្នុងការបង្កើតម៉ូដែលរបស់អ្នក? ប្រហែលជាអ្នកនឹងត្រូវប្រើវិធីសាស្ត្រជ្រើសរើសលក្ខណៈពិសេស ឬបញ្ចេញលក្ខណៈពិសេស ដើម្បីជ្រើសអថេរដែលត្រឹមត្រូវសម្រាប់ម៉ូដែលមានសមត្ថភាពខ្ពស់បំផុត។ ទាំងពីរបានខុសគ្នា៖ "ការបញ្ចេញលក្ខណៈពិសេសបង្កើតលក្ខណៈថ្មីពីមុខងារ​របស់លក្ខណៈដើម ខណៈពេលការជ្រើសរើសលក្ខណៈពិសេសបង្វិលបញ្ចេញជាសំណុំពីលក្ខណៈសញ្ញា" ([ប្រភព](https://wikipedia.org/wiki/Feature_selection)) +🎓 **ការជ្រើសរើសលក្ខណៈ និងការដកស្រង់លក្ខណៈ** តើយើងដឹងយ៉ាងដូចម្តេចថាអថេរណាមួយដែលគួរជ្រើសចាប់ផ្តើមនៅពេលសាងសង់គំរូ? អ្នកប្រហែលជាត្រូវធ្វើដំណើរការជ្រើសរើសលក្ខណៈឬដកស្រង់លក្ខណៈដើម្បីជ្រើសយកអថេរដែលត្រឹមត្រូវសម្រាប់គំរូមានប្រសិទ្ធភាពបំផុត។ ទាំងពីរមានភាពខុសគ្នា៖ "ការដកស្រង់លក្ខណៈបង្កើតលក្ខណៈថ្មីពីមុខងារនៃលក្ខណៈដើម ខណៈដែលការជ្រើសរើសលក្ខណៈសង្ស័យតែផ្នែកមួយនៃលក្ខណៈទាំងមូល។" ([ប្រភព](https://wikipedia.org/wiki/Feature_selection)) -### មើលឃើញទិន្នន័យរបស់អ្នក +### សម្រង់ទិន្នន័យរបស់អ្នកជារូបភាព -ផ្នែកសំខាន់មួយនៃឧបករណ៍អ្នកវិទ្យាសាស្ត្រទិន្នន័យគឺមានសមត្ថភាពក្នុងការមើលឃើញទិន្នន័យ ដោយប្រើបណ្ណាល័យល្អៗជាច្រើនដូចជា Seaborn ឬ MatPlotLib។ ការតំណាងទិន្នន័យជារូបភាព អាចអនុញ្ញាតឱ្យអ្នករកឃើញទំនាក់ទំនងលាក់ៗដែលអាចប្រើប្រាស់បាន។ ការមើលឃើញរបស់អ្នកអាចជួយរកឃើញការបង្វិលបម្រែបម្រួល ឬទិន្នន័យមិនត្រូវតម្រូវ (ដូចដែលយើងរកឃើញក្នុង [Classification](../../4-Classification/2-Classifiers-1/README.md))។ +មុខងារសំខាន់មួយ​របស់ឧបករណ៍អ្នកវិទ្យាសាស្ត្រទិន្នន័យគឺថាមពលក្នុងការបង្ហាញទិន្នន័យជារូបភាពដោយប្រើបណ្ណាល័យល្អៗមួយចំនួនដូចជា Seaborn ឬ MatPlotLib។ ការផ្តល់តំណាងទិន្នន័យជារូបភាព នឹងអាចឲ្យអ្នកបង្កើតរួមគ្នាបានលំណាំដែលលាក់មិនឲ្យឃើញដែលអ្នកអាចយកប្រយោជន៍បាន។ ការបង្ហាញនេះក៏អាចជួយអ្នករកឃើញការមានទោស ឬទិន្នន័យមិនសមស្មើនឹង (ដូចដែលយើងបានរកឃើញនៅក្នុង [Classification](../../4-Classification/2-Classifiers-1/README.md))។ -### បែងចែកឈុតទិន្នន័យរបស់អ្នក +### បំបែកឧទ្ឋរណ៍ទិន្នន័យរបស់អ្នក -មុនបណ្តុះបណ្តាល អ្នកត្រូវបែងចែកឈុតទិន្នន័យទៅជាផ្នែកពីរឬច្រើនដែលមានទំហំមិនស្មើគ្នា តែក៏តំណាងឱ្យទិន្នន័យបានល្អ។ +មុនចាប់ផ្តើមបណ្តុះបណ្តាល អ្នកត្រូវបំបែកឧទ្ឋរណ៍ទិន្នន័យរបស់អ្នកជាពីរឬច្រើនផ្នែកដែលមានទំហំមិនស្មើគ្នានោះទេ ប៉ុន្តែត្រូវតំណាងឲ្យទិន្នន័យបានល្អ។ -- **បណ្តុះបណ្តាល**។ ផ្នែកនេះនៃឈុតទិន្នន័យត្រូវបានប្រើសម្រាប់បណ្តុះបណ្តាលម៉ូដែល។ ជាឈុតធំជាងគេនៃឈុតទិន្នន័យដើម។ -- **តេស្ត**។ ឈុតទិន្នន័យតេស្តគឺជាក្រុមទិន្នន័យឯករាជ្យ ដែលភាគច្រើនបានប្រមូលពីទិន្នន័យដើម ត្រូវបានប្រើប្រាស់សម្រាប់ផ្ទៀងផ្ទាត់សមត្ថភាពម៉ូដែលដែលបានបង្កើត។ -- **ផ្ទៀងផ្ទាត់**។ ឈុតផ្ទៀងផ្ទាត់គឺជាក្រុមតូចជាង នៃគំរូឯករាជ្យ ដែលអ្នកប្រើដើម្បីកែតម្រូវអាជ្ញាប័ណ្ណ hyperparameters ឬរចនាសម្ព័ន្ធម៉ូដែល ដើម្បីធ្វើឱ្យម៉ូដែលកាន់តែប្រសើរ។ អាស្រ័យទៅលើទំហំទិន្នន័យ និងសំណួររបស់អ្នក អ្នកអាចមិនត្រូវការបង្កើតឈុតទីបីនេះទេ (ដូចដែលយើងកត់សម្គាល់ក្នុង [ការព្យាករណ៍លំដាប់ពេលវេលា](../../7-TimeSeries/1-Introduction/README.md))។ +- **បណ្តុះបណ្តាល**។ ផ្នែកនេះនៃឧទ្ឋរណ៍ទិន្នន័យត្រូវបានឆមាសទៅគំរូរបស់អ្នកសម្រាប់បណ្តុះបណ្តាល។ សំណុំទិន្នន័យនេះមានភាគច្រើននៃទិន្នន័យដើម។ +- **សាកល្បង**។ សំណុំទិន្នន័យសាកល្បងគឺជាក្រុមដាច់ដោយឡែកនៃទិន្នន័យ ដែលភាគច្រើនត្រូវបានប្រមូលពីទិន្នន័យដើម ដែលអ្នកប្រើសម្រាប់បញ្ជាក់ពីភាពប្រតិបត្តិការនៃគំរូដែលបានបង្កើត។ +- **ផ្ទៀងផ្ទាត់**។ សំណុំផ្ទៀងផ្ទាត់គឺជាក្រុមតូចមួយនៃឧទ្ឋរណ៍ដោយឯករាជ្យ ដែលអ្នកប្រើសម្រាប់កែតម្រូវប៉ារ៉ាម៉ែត្រវិសាលភាព, ឬរចនាសម្ព័ន្ធ, ដើម្បីធ្វើឲ្យគំរូប្រសើរឡើង។ អាស្រ័យលើទំហំទិន្នន័យនិងសំណួររបស់អ្នក អ្នកអាចមិនចាំបាច់បង្កើតសំណុំទីបីនេះទេ (ដូចដែលយើងបានកំណត់នៅក្នុង [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md))។ -## ការបង្កើតម៉ូដែល +## សាងសង់គំរូ -ប្រើអថេរគំរប់បណ្តុះបណ្តាលរបស់អ្នក គោលបំណងរបស់អ្នកគឺបង្កើតម៉ូដែល ឬតំណាងស្ថិតិរបស់ទិន្នន័យ ដោយប្រើលេខាធិការកម្មវិធីនានាដើម្បី **បណ្តុះបណ្តាល** វា។ ការបណ្តុះបណ្តាលម៉ូដែលអនុញ្ញាតឱ្យវាត្រូវបានបង្ហាញទៅកាន់ទិន្នន័យ និងធ្វើការទាយពីលំនាំដែលវារកឃើញ បញ្ជាក់ និងទទួលយកឬបដិសេធ។ +ប្រើទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក គោលបំណងរបស់អ្នកគឺសាងសង់គំរូ ឬតំណាងស្ថិតិមួយនៃទិន្នន័យដោយប្រើអាល់ហ្គូរីធម៍ផ្សេងៗដើម្បី **បណ្តុះបណ្តាល** វា។ ការបណ្តុះបណ្តាលគំរូធ្វើឲ្យវាបានស្គាល់ទិន្នន័យ ហើយអនុញ្ញាតឲ្យវាធ្វើការសន្មតពីលំនាំដែលវាពិចារណា បានផ្ទៀងផ្ទាត់ និងទទួលយក ឬបដិសេធ។ -### សម្រេចចិត្តលើវិធីសាស្ត្របណ្តុះបណ្តាល +### សម្រេចលើវិធីបណ្តុះបណ្តាល -អាស្រ័យលើសំណួរ និងធម្មជាតិនៃទិន្នន័យ អ្នកនឹងជ្រើសរើសវិធីសាស្ត្រមួយសម្រាប់បណ្តុះបណ្តាលវា។ ដំណើរឆ្លងកាត់ [ឯកសាររបស់ Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - ដែលយើងប្រើនៅក្នុងវគ្គសិក្សានេះ - អ្នកអាចស្វែងយល់ពីវិធីជាច្រើនក្នុងការបណ្តុះបណ្តាលម៉ូដែល។ អាស្រ័យលើបទពិសោធន៍របស់អ្នក អ្នកអាចត្រូវមានការសាកល្បងវិធីផ្សេងៗជាច្រើន ដោយករណីជាក់លាក់ក្រុមអ្នកវិទ្យាសាស្ត្រទិន្នន័យវាយតម្លៃសមត្ថភាពម៉ូដែល ដោយផ្តល់ទិន្នន័យមិនដែលបានមើល មើលភាពត្រឹមត្រូវ ការបង្វិលបម្រែបម្រួល និងបញ្ហាគុណភាពផ្សេងទៀត ហើយជ្រើសរើសវិធីសាស្ត្របណ្តុះបណ្តាលសមរម្យបំផុតសម្រាប់ភារកិច្ច។ +អាស្រ័យលើសំណួររបស់អ្នក និងធម្មជាតិនៃទិន្នន័យ អ្នកនឹងជ្រើសរើសវិធីសាស្ត្រមួយសម្រាប់បណ្តុះបណ្តាលវា។ ការដើរតាមឯកសាររបស់ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ដែលយើងប្រើនៅវគ្គនេះ អ្នកអាចស្វែងរកវិធីជាច្រើនសម្រាប់បណ្តុះបណ្តាលគំរូ។ អាស្រ័យលើបទពិសោធន៍របស់អ្នក អ្នកអាចត្រូវសាកល្បងវិធីផ្សេងៗគ្នាច្រើនដើម្បីសាងសង់គំរូល្អបំផុត។ អ្នកភាគច្រើននឹងត្រូវទៅតាមដំណើរការដែលអ្នកវិទ្យាសាស្ត្រទិន្នន័យវាយតម្លៃពីការប្រតិបត្តិរបស់គំរូ ដោយផ្តល់ទិន្ននយវអោយវាមើល ទិន្នន័យមិនដែលឃើញ មើលភាពត្រឹមត្រូវ ទំនោរបាន និងបញ្ហាផ្សេងៗដែលធ្វើឲ្យគុណភាពចុះខ្សោយ ហើយជ្រើសរើសវិធីបណ្តុះបណ្តាលសមរម្យបំផុតសម្រាប់កិច្ចការនេះ។ -### បណ្តុះបណ្តាលម៉ូដែល +### បណ្តុះបណ្តាលគំរូ -ជាប់ជាមួយទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក អ្នកបានរួចរាល់សម្រាប់ 'fit' វា ដើម្បីបង្កើតម៉ូដែល។ អ្នកនឹងសង្កេតឃើញថាក្នុងបណ្ណាល័យ ML ជាច្រើន អ្នកនឹងឃើញកូដ 'model.fit' - នៅពេលនេះ អ្នកផ្ញើរអថេរលក្ខណៈពិសេសជាអារេនៃតម្លៃ (ភាគច្រើនគឺ 'X') និងអថេរគោលដៅ (ភាគច្រើន 'y')។ +មានទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក អ្នករួចរាល់សម្រាប់ 'ផ្គាប់' វាដើម្បីបង្កើតគំរូ។ អ្នកនឹងសង្កេតឃើញថា នៅក្នុងបណ្ណាល័យ ML ច្រើន អ្នកនឹងឃើញកូដ 'model.fit' - នៅពេលនេះអ្នកបញ្ជូនអថេរលក្ខណៈរបស់អ្នកជាជួរប្រភេទតម្លៃ (ទូទៅជាទំព័រ 'X') និងអថេរកោលដៅ (ទូទៅជាទំព័រ 'y')។ -### វាយតម្លៃម៉ូដែល +### វាយតម្លៃគំរូ -ពេលដំណើរការបណ្តុះបណ្តាលបានបញ្ចប់ (វាអាចយកពេលជាច្រើន iteration ឬ 'epoch' ដើម្បីបណ្តុះម៉ូដែលធំមួយ) អ្នកអាចវាយតម្លៃគុណភាពម៉ូដែលដោយប្រើទិន្នន័យតេស្ត ដើម្បីវាស់សមត្ថភាពវា។ ទិន្នន័យនេះគឺជាផ្នែកតូចមួយនៃទិន្នន័យដើម ដែលម៉ូដែលមិនដែលវិភាគមុន។ អ្នកអាចបោះពុម្ពតារាងស្ថិតិអំពីគុណភាពម៉ូដែលរបស់អ្នក។ +បន្ទាប់ពីដំណើរការបណ្តុះបណ្តាលបានបញ្ចប់ (វាអាចប្រើពេលជាច្រើនជំហាន ឬ 'epochs' សម្រាប់បណ្តុះបណ្តាលគំរូធំ) អ្នកអាចវាយតម្លៃគុណភាពគំរូដោយប្រើទិន្នន័យសាកល្បងសម្រាប់វាស់ប្រតិបត្តិការ។ ទិន្នន័យនេះគឺជាផ្នែករងចំណែកមួយនៃទិន្នន័យដើមដែលគំរូមិនធ្លាប់វិភាគជាមុន។ អ្នកអាចបោះពុម្ពតារាងវាស់វឌ្ឍនភាពអំពីគុណភាពគំរូរបស់អ្នក។ -🎓 **ការផ្គុំម៉ូដែល** +🎓 **ការផ្គាប់គំរូ** -នៅបរិបទនៃការរៀនម៉ាស៊ីន ការផ្គុំម៉ូដែលមានន័យថា ភាពត្រឹមត្រូវនៃមុខងាររបស់ម៉ូដែល ពេលវា​ព្យាយាមវិភាជន៍ទិន្នន័យដែលវាមិនស្គាល់។ +នៅក្នុងបរិបទនៃការរៀនម៉ាស៊ីន ការផ្គាប់គំរូ មានន័យថាការត្រឹមត្រូវនៃមុខងារដែកខាងក្រោមរបស់គំរូ ខណៈវាកំពុងព្យាយាមវិភាគទិន្នន័យដែលវាមិនស្គាល់។ -🎓 **Underfitting** និង **overfitting** ជាបញ្ហាទូទៅដែលធ្វើឲ្យគុណភាពម៉ូដែលធ្លាក់ចុះ នោះហើយម៉ូដែលត្រូវបានផ្គុំបានមិនល្អគ្រប់គ្រាន់ ឬល្អពេក។ វានាំឲ្យម៉ូដែលប៉ាន់ប្រមាណពីទិន្នន័យបណ្តុះបណ្តាលបានយ៉ាងតិតទៅ ឬលំបាកពេកក្នុងការភ្ជាប់ជាមួយទិន្នន័យ។ ម៉ូដែល overfit នឹងព្យាករណ៍ទិន្នន័យបណ្តុះបណ្តាលបានល្អពេក ពីព្រោះវាបានរៀនលម្អិតនិងសំឡេងរំខានក្នុងទិន្នន័យយ៉ាងល្អ។ ម៉ូដែល underfit គឺមិនត្រឹមត្រូវ ពីព្រោះវាមិនអាចវិភាគទិន្នន័យបណ្តុះបណ្តាលឬទិន្នន័យមិនដែលបានមើលបានយ៉ាងត្រឹមត្រូវទេ។ +🎓 **Underfitting** និង **overfitting** ជាបញ្ហាទូទៅដែលធ្វើឲ្យគុណភាពគំរូធ្លាក់ចុះ ចប់សំរាប់ផ្នែកមួយដែលគំរូមិនបានផ្គាប់ល្អគ្រប់គ្រាន់ ឬផ្គាប់ល្អពេក។ វាបង្កើតឲ្យគំរូធ្វើការព្យាករណ៍ឲ្យណាស់ពេក ឬងាយលើពេកជាមួយទិន្នន័យបណ្តុះបណ្តាល។ គំរូ overfit ព្យាករណ៍ទិន្នន័យបណ្តុះបណ្តាលមានភាពត្រឹមត្រូវខ្ពស់ព្រោះវា​បានរៀនលំដាប់លំដោយនិងសំឡេងរំខាននៃទិន្នន័យយ៉ាងល្អ ឯគំរូ underfit មិនត្រឹមត្រូវ ព្រោះវាមិនអាចវិភាគទិន្នន័យបណ្តុះបណ្តាលឬទិន្នន័យដែលមិនបានឃើញបានត្រឹមត្រូវទេ។ ![overfitting model](../../../../translated_images/km/overfitting.1c132d92bfd93cb6.webp) -> រូបតំណាងដោយ [Jen Looper](https://twitter.com/jenlooper) +> រូបភាពដោយ [Jen Looper](https://twitter.com/jenlooper) -## ការកែសម្រួលប៉ារ៉ាម៉ែត្រ +## កំណត់ប៉ារ៉ាម៉ែត្រ -នៅពេលដែលការបណ្តុះបណ្តាលដំបូងបានបញ្ចប់ ការសង្កេតគុណភាពម៉ូដែល និងពិចារណាកែលម្អវា ដោយកែសម្រួល 'hyperparameters' របស់វា។ អានបន្ថែមអំពីដំណើរការនេះ [ក្នុងឯកសារ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)។ +បន្ទាប់ពីបណ្តុះបណ្តាលដំបូងបានបញ្ចប់ សូមពិនិត្យគុណភាពគំរូ ហើយពិចារណាធ្វើឲ្យប្រសើរឡើងដោយកែប៉ារ៉ាម៉ែត្រ 'hyperparameters' របស់វា។ អានបន្ថែមអំពីដំណើរការនេះ [នៅក្នុងឯកសារ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)។ ## ការព្យាករណ៍ -នេះគឺជាពេលវេលាដែលអ្នកអាចប្រើទិន្នន័យថ្មីទាំងស្រុង ដើម្បីសាកល្បងភាពត្រឹមត្រូវនៃម៉ូដែល។ ក្នុងបរិបទ ML 'បច្ចេកប្រតិបត្តិន៍' ដែលអ្នកកំពុងបង្កើតទ្រព្យសម្បត្តិនៅលើបណ្ដាញ ដើម្បីប្រើម៉ូដែលក្នុងផលិតកម្ម វាអាចមានលទ្ធភាពបង្រួមទិន្នន័យអ្នកប្រើ (ការចុចប៊ូតុង ឧទាហរណ៍) ដើម្បីកំណត់អថេរមួយ ហើយផ្ញើវាទៅម៉ូដែលសម្រាប់ការបកស្រាយ ឬវាយតម្លៃ។ +នេះជាពេលវេលាដែលអ្នកអាចប្រើទិន្នន័យថ្មីមួយទាំងស្រុងសម្រាប់សាកល្បងភាពត្រឹមត្រូវនៃគំរូ។ នៅក្នុងបរិបទ ML 'បច្ចេកទេស' ដែលអ្នកកំពុងសង់អចលនវត្ថុបណ្ដាញដើម្បីប្រើគំរូក្នុងការផលិត វិធីនេះអាចមានការប្រមូលទិន្នន័យអ្នកប្រើ (ដូចជាចុចប៊ូតុង) ដើម្បីកំណត់អថេរមួយ និងផ្ញើវាទៅគំរូសម្រាប់ការព្យាយាម ឬវាយតម្លៃ។ -នៅក្នុងមេរៀនទាំងនេះ អ្នកនឹងស្វែងយល់ពីរបៀបប្រើជំហានទាំងនេះ ដើម្បីរៀបចំ បង្កើត សាកល្បង វាយតម្លៃ និងព្យាករណ៍ — ជាការប្រតិបត្តិរបស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ និងពាណិជ្ជកម្មបន្ថែម ជាពេលដែលអ្នកបន្តផ្លូវទៅរកជំនាញ ML ‘full stack’។ +ក្នុងមេរៀនទាំងនេះ អ្នកនឹងរៀនពីវិធីប្រើជំហានទាំងនេះសម្រាប់រៀបចំ សង់ តេស្ត វាយតម្លៃ និងព្យាករ — រួមជាមួយកម្មវិធីទាំងអស់របស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ និងមិនត្រឹមតែប៉ុណ្ណោះ ខណៈដែលអ្នកបន្តផ្លូវដំណើររបស់អ្នកដើម្បីក្លាយជាវិស្វកររៀនម៉ាស៊ីន 'full stack'។ --- -## 🚀ការប្រកួតប្រជែង +## 🚀បញ្ហា -គូរជាតារាងបង្ហាញនៃជំហានរបស់អ្នកអនុវត្ត ML។ តើអ្នកឃើញខ្លួននៅកន្លែងណាក្នុងដំណើរការ? តើអ្នកគិតថាអ្នកនឹងមានការលំបាកនៅពេលណា? តើអ្វីដែលមើលទៅងាយស្រួលសម្រាប់អ្នក? +គូរអត្រាដំណើរការលម្អិតបង្ហាញជំហានរបស់អ្នកអនុវត្ត ML។ តើអ្នកឃើញខ្លួននៅឯណាឥឡូវនេះក្នុងដំណើរការ? តើអ្នកព្យាករថានឹងមានកម្រិតលំបាកនៅឯណា? តើអ្វីដែលហាក់មើលទៅសាមញ្ញសម្រាប់អ្នក? -## [សំនួរត្រួតពិនិត្យបន្ទាប់មេរៀន](https://ff-quizzes.netlify.app/en/ml/) +## [ប្រលងបន្ទាប់ពីមេរៀន](https://ff-quizzes.netlify.app/en/ml/) -## ទិដ្ឋភាពវិលត្រឡប់ & ការសិក្សាឯករាជ្យ +## អនុវត្តន៍ & សិក្សាផ្ទាល់ខ្លួន -ស្វែងរកនៅលើអ៊ីនធឺណិតសម្រាប់សម្ភាសន៍ជាមួយអ្នកវិទ្យាសាស្ត្រទិន្នន័យដែលពិភាក្សាអំពីការងារប្រចាំថ្ងៃរបស់ពួកគេ។ នេះគឺជា [មួយឯកសារ](https://www.youtube.com/watch?v=Z3IjgbbCEfs)។ +ស្វែងរកអនឡាញសម្រាប់សត្ថបទសំខាន់ៗពីអ្នកវិទ្យាសាស្ត្រទិន្នន័យដែលពិភាក្សាជាមួយការងារប្រចាំថ្ងៃរបស់ពួកគេ។ នេះគឺជា [មួយ](https://www.youtube.com/watch?v=Z3IjgbbCEfs)។ -## កិច្ចការផ្ទះ +## ភារកិច្ច [សម្ភាសអ្នកវិទ្យាសាស្ត្រទិន្នន័យ](assignment.md) --- -**ការព្រមាន**៖ -ឯកសារនេះត្រូវបានបំលែងភាសា ដោយប្រើសេវាកម្មបំលែងភាសា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ព្រមថាការបំលែងភាសាទ្វេដងដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការមិនត្រឹមត្រូវ។ ឯកសារដើម៖ ជាភាសារបស់ខ្លួន គួរត្រូវបានចាត់ទុកជាធនធានដើមដែលមានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបំលែងភាសាដោយមនុស្សជំនាញត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗ ដែលកើតឡើងពីការប្រើប្រាស់បំលែងភាសានេះឡើយ។ +**ការបដិសេធ**៖ +ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំក្នុងការធ្វើឱ្យមានភាពត្រឹមត្រូវក៏ដោយ សូមយល់ឱ្យបានថា ការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមជាភាសាមូលដ្ឋានគួរត្រូវបានគិតថាជា ប្រភពដែលមានសក្ដានុពល។ សម្រាប់ព័ត៌មានដែលមានសារៈសំខាន់ ការបកប្រែដោយមនុស្សជំនាញត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសប្លែកណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។ \ No newline at end of file diff --git a/translations/km/2-Regression/3-Linear/README.md b/translations/km/2-Regression/3-Linear/README.md index 8f0f4a2dce..e955b08b47 100644 --- a/translations/km/2-Regression/3-Linear/README.md +++ b/translations/km/2-Regression/3-Linear/README.md @@ -1,96 +1,96 @@ -# សាងសង់ម៉ូដែលរេសគ្រីស្យុងដោយប្រើ Scikit-learn: រេសគ្រីស្យុង ជា​ចំនួនបួន​វិធី +# បង្កើតម៉ូដែលកំណត់ត្រា regression ប្រើប្រាស់ Scikit-learn: regression ៤ របៀប -## អសាមញ្ញករ Note +## សម្គាល់សម្រាប់អ្នកចាប់ផ្ដើម -រេសគ្រីស្យុងបន្ទាត់ត្រូវបានប្រើនៅពេលដែលយើងចង់ទាយទិន្នន័យ **តម្លៃលេខ** (ឧទាហរណ៍ តម្លៃផ្ទះ សីតុណ្ហភាព ឬការលក់)។ វាដំណើរការដោយស្វែងរកបន្ទាត់ស្របមួយ ដែលតំណាងល្អបំផុតសម្រាប់ទំនាក់ទំនងរវាងមុខងារបញ្ចូល និងចេញ។ +ការកំណត់ត្រា Linear regression ត្រូវបានប្រើពេលយើងចង់ទាយទោល **តម្លៃជាលេខ** (ឧទាហរណ៍, តម្លៃផ្ទះ, សីតុណ្ហភាព, ឬការលក់)។ វាធ្វើការដោយស្វែងរកខ្សែស្របមួយដែលតំណាងឱ្យទំនាក់ទំនងរវាងលក្ខណៈបញ្ចូល និងលទ្ធផលបានល្អបំផុត។ -ក្នុងមេរៀននេះ យើងផ្តោតសំខាន់លើការយល់ដឹងពីគំនិតមុនពេលស្វែងយល់បន្ថែមពីបច្ចេកទេសរេសគ្រីស្យុងខ្ពស់ជាងនេះ។ +នៅក្នុងមេរៀននេះ យើងផ្តោតលើការយល់ដឹងពីគំនិតមុនពេលស្វែងយល់បច្ចេកទេស regression ដែលមានភាពស្មុគស្មាញជាងនេះ។ ![Linear vs polynomial regression infographic](../../../../translated_images/km/linear-polynomial.5523c7cb6576ccab.webp) -> គំនូរទាក់ទងដោយ [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [គន្លងប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ml/) +> រូបតំណាងដោយ [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [តេស្តមុខមាត់មេរៀន](https://ff-quizzes.netlify.app/en/ml/) -> ### [មេរៀននេះមាននៅក្នុងភាសា R ផង!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### ការណែនាំ +> ### [មេរៀននេះមានជាភាសា R ផងដែរ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### ការណែនាំ -រហូតមកដល់បច្ចុប្បន្ន អ្នកបានស្វែងយល់ពីអ្វីដែលរេសគ្រីស្យុងជាមួយទិន្នន័យគំរូដែលបានប្រមូលពីឃ្លាំងតម្លៃគ្រប់របស់ផ្កាយប័ន្តដែលយើងនឹងប្រើពេញមួយមេរៀននេះ។ អ្នកក៏បានបង្ហាញវាជាមួយ Matplotlib។ +រហូតដល់ពេលនេះ អ្នកបានស្វែងយល់អំពីអ្វីទៅជាកំណត់ត្រា regression ជាមួយទិន្នន័យគំរូពី dataset តម្លៃផ្លែគុជ ដែលយើងនឹងប្រើកន្លងមកក្នុងមេរៀននេះ។ អ្នកក៏បានបង្ហាញវាដោយប្រើ Matplotlib ផងដែរ។ -ឥឡូវនេះ អ្នកបានត្រៀមខ្លួនដើម្បីរំដោះចូលលើរេសគ្រីស្យុងសម្រាប់ ML។ ដំណើរការបង្ហាញភាពនេះអនុញ្ញាតឱ្យអ្នកចេះយល់ពីទិន្នន័យ ប៉ុន្តែអំណាចពិតនៃប្រព័ន្ធរៀនម៉ាស៊ីនមកពី _ការបណ្តុះម៉ូដែល_។ ម៉ូដែលត្រូវបានបណ្តុះលើទិន្នន័យប្រវត្តិសាស្ត្រដើម្បីទទួលយកទំនាក់ទំនងទិន្នន័យដោយស្វ័យប្រវត្តិ ហើយវាអនុញ្ញាតឱ្យអ្នកទាយបានលទ្ធផលសម្រាប់ទិន្នន័យថ្មីដែលម៉ូដែលមិនបានឃើញពីមុន។ +ឥឡូវនេះ អ្នករួចរាល់ក្នុងការចូលដល់ regression ជ្រាលជ្រៅសម្រាប់ ML។ ខណៈពេលការបង្ហាញអនុញ្ញាតឲ្យអ្នកយល់ដឹងទិន្នន័យ កម្លាំងពិតរបស់ Machine Learning មកពី _ការ​បណ្តុះបណ្តាលម៉ូដែល_។ ម៉ូដែលទាំងនេះត្រូវបានបណ្តុះបណ្តាលលើទិន្នន័យប្រវត្តិ ដើម្បីចាប់យកក្បួនពាក់ព័ន្ធរវាងទិន្នន័យបានដោយស្វ័យប្រវត្តិ ហើយវាអនុញ្ញាតឲ្យអ្នកទាយទ្ឋានលទ្ធផលសម្រាប់ទិន្នន័យថ្មី ដែលម៉ូដែលមិនទាន់ឃើញពីមុន។ -នៅក្នុងមេរៀននេះ អ្នកនឹងរៀនបន្ថែមអំពីប្រភេទរេសគ្រីស្យុងពីរប្រភេទ: _រេសគ្រីស្យុងបន្ទាត់មូលដ្ឋាន_ និង _រេសគ្រីស្យុងព៉ូលីណូមៀល_ ជាមួយនឹងគណិតវិទ្យាខ្លះៗដែលនៅក្រោមបច្ចេកទេសទាំងនេះ។ ម៉ូដែលទាំងនោះនឹងអនុញ្ញាតឲ្យយើងទាយតម្លៃផ្កាយប័ន្តអាស្រ័យលើទិន្នន័យបញ្ចូលខុសៗគ្នា។ +នៅក្នុងមេរៀននេះ អ្នកនឹងស្វែងយល់បន្ថែមពីប្រភេទនៃ regression ២ ប្រភេទ ៖ _linear regression ជាមូលដ្ឋាន_ និង _polynomial regression_, រួមជាមួយគណិតវិទ្យាមួយចំនួននៅពីក្រោយបច្ចេកទេសទាំងនេះ។ ម៉ូដែលទាំងនេះនឹងអនុញ្ញាតឲ្យយើងទាយតម្លៃផ្លែគុជដោយផ្អែកលើទិន្នន័យបញ្ចូលដ៏ខុសគ្នា។ [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីរេសគ្រីស្យុងបន្ទាត់។ +> 🎥 ចុចរូបភាពខាងលើសម្រាប់មើលវីដេអូសង្ខេបពី linear regression។ -> ក្នុងអំឡុងពេលសិក្សាជំនាញនេះ យើងគិតថា ពុំទាមទារជំនាញគណិតវិទ្យាច្រើននោះទេ ហើយផ្តោតធ្វើឲ្យវាអាចចូលដល់បានសម្រាប់និស្សិតដែលមកពីដែនផ្សេងៗ ដូច្នេះសូមកត់សម្គាល់កំណត់ចំណាំ 🧮 ការហៅចេញ សៀវភៅរៀន និងឧបករណ៍សិក្សាផ្សេងៗ ដើម្បីជួយបង្រៀនយល់បានល្អ។ +> ក្នុងកម្រិតសិក្សាទាំងនេះ យើងសន្មតថាជំនាញគណិតវិទ្យាមិនខ្ពស់ ព្រមទាំងព្យាយាមធ្វើឲ្យវាអាចចូលដល់បានសម្រាប់សិស្សពីវិស័យផ្សេងៗ ដូច្នេះសូមមើលកំណត់សម្គាល់, 🧮 ការហៅ, រូបតំណាង និងឧបករណ៍រៀនផ្សេងទៀតសម្រាប់ជំនួយក្នុងការយល់ដឹង។ -### គួរដឹងជាមុន +### តម្រូវការមុន -អ្នកគួរតែស្គាល់រចនាសម្ព័ន្ធទិន្នន័យផ្កាយដែលយើងកំពុងពិនិត្យឥឡូវនេះ។ អ្នកអាចស្រាវជ្រាវវា ដែលបានរៀបចំរួចទៅហើយក្នុងឯកសារ _notebook.ipynb_ នៃមេរៀននេះ។ នៅក្នុងឯកសារ តម្លៃផ្កាយបង្ហាញចេញជាតម្លៃមួយទៅក្នុងឈុតទិន្នន័យថ្មី។ សូមប្រាកដថាអ្នកអាចរត់ឯកសារនេះនៅក្នុងកណ្តុរប្រតិបត្តិការ Visual Studio Code។ +អ្នកគួរតែលេខពេញចិត្តទៅនឹងរចនាសម្ព័ន្ធទិន្នន័យផ្លែគុជដែលយើងកំពុងពិនិត្យ។ អ្នកអាចរកឃើញវាត្រូវបានបញ្ចូលរួច និងបានបើកស្អាតក្នុងឯកសារ _notebook.ipynb_ របស់មេរៀននេះ។ ក្នុងឯកសារ តម្លៃផ្លែគុជត្រូវបានបង្ហាញជាតម្លៃភាគតំណាងមួយក្នុង DataFrame ថ្មី។ សូមប្រាកដថាអ្នកអាចរត់ notebooks ទាំងនេះនៅក្នុង kernel នៃ Visual Studio Code។ -### ការប្រៀបប្រដៅ +### ការរៀបចំ -ជាថ្មីវិញ អ្នកកំពុងផ្ទុកទិន្នន័យនេះដើម្បីសួរចម្ងល់ពីវា។ +ដើម្បីរំលឹក អ្នកកំពុងផ្ទុកទិន្នន័យនេះដើម្បីសួរចំលើយពីវា។ -- ពេលណាជាពេលល្អបំផុតក្នុងការជាវផ្កាយ? -- តម្លៃដែលខ្ញុំអាចរំពឹងទុកសម្រាប់ប្រអប់ផ្កាយតូចតាចនេះ? -- តើខ្ញុំគួរជាវវាទុកក្នុងធុងបាក់សែលកន្លះឬក្នុងប្រអប់ 1 1/9 បាសែលទេ? -តោះបន្តស្គាល់ទិន្នន័យនេះ។ +- ពេលណាជាពេលល្អបំផុតក្នុងការទិញផ្លែគុជ? +- តម្លៃដែលខ្ញុំអាចរំពឹងទុក្ខប្រអប់ផ្លែគុជតូចមួយជាអ្វី? +- តើខ្ញុំគួរទិញវានៅក្នុងធុងកន្លែងកន្លះបាសែល ឬប្រអប់ ១ ១/៩ បាសែល? +យើងសូមបន្តស្រាវជ្រាវក្នុងទិន្នន័យនេះ។ -ក្នុងមេរៀនមុន អ្នកបានបង្កើត DataFrame Pandas ហើយបំពេញវា ជាមួយផ្នែកមួយនៃទិន្នន័យដើម ដោយស្ដង់ដារតម្លៃតាមបាសែល។ ប៉ុន្តែតែតិច អ្នកបានប្រមូលបានប្រហែល ៤០០ចំនួនទិន្នន័យ ហើយសម្រាប់ខែរដូវស្លឹកឈើជ្រុះតែប៉ុណ្ណោះ។ +ក្នុងមេរៀនមុន អ្នកបានបង្កើត DataFrame របស់ Pandas ហើយបញ្ចូលវាជាមួយផ្នែកមួយនៃ dataset ដើម បម្រែបម្រួលតម្លៃដោយបាសែល។ ប៉ុន្តែដោយធ្វើការនេះ អ្នកអាចទទួលបានតែប្រហែល៤០០ចំណុចទិន្នន័យ និងសម្រាប់ខែរដូវស្លឹកឈើជ្រុះតែប៉ុណ្ណោះ។ -សូមមើលទិន្នន័យដែលបានបញ្ចូលរួចនៅក្នុងទំព័រនេះក្នុងឯកសារ notebook នៃមេរៀន។ ទិន្នន័យបានបញ្ចូលរួច និងបង្ហាញរាងចំណុចព្រាត់ដើម្បីបង្ហាញខែ ទំនងជាយើងអាចរកបានព័ត៌មានលម្អិតបន្ថែមអំពីធម្មជាតិទិន្នន័យ ដោយសម្រួលវាបន្ថែមទៀត។ +សូមមើលទៅទិន្នន័យដែលយើងបានបញ្ចូលរួចក្នុង notebook រួមជាមួយមេរៀននេះ។ ទិន្នន័យបានបញ្ចូលរួចហើយ និងមានការ scatterplot ដំបូងបង្ហាញតាមខែ។ ប្រហែលជាយើងអាចទទួលបានព័ត៌មានលម្អិតមួយចំនួនពីធម្មជាតិនៃទិន្នន័យដោយការសម្អាតវាបន្ថែមទៀត។ -## បន្ទាត់រេសគ្រីស្យុងបន្ទាត់មួយ +## ខ្សែ regression ស្រប -ដូចដែលអ្នកបានរៀនក្នុងមេរៀន ១ គោលគំនិតនៃលំហាត់រេសគ្រីស្យុងបន្ទាត់គឺដើម្បីអាចគូរបន្ទាត់មួយសម្រាប់៖ +ដូចដែលអ្នកបានរៀនក្នុងមេរៀនទី ១ គោលដៅនៃលំហាត់ linear regression គឺដើម្បីអាចគូសខ្សែដូចខាងក្រោម៖ - **បង្ហាញទំនាក់ទំនងអថេរ**។ បង្ហាញទំនាក់ទំនងរវាងអថេរ -- **ធ្វើការទាយតម្លៃ**។ ទាយតម្លៃបានត្រឹមត្រូវថាចំណុចថ្មីនឹងស្ថិតនៅឯសន្លឹកណា។ +- **ធ្វើការទាយទោល**។ ធ្វើការទាយទោលបានត្រឹមត្រូវលើទីតាំងនៃចំណុចទិន្នន័យថ្មីមួយ ទាក់ទងទៅខ្សែស្របនោះ។ -វាជារឿងទូទៅនៃ **Least-Squares Regression** ដើម្បីគូរបែបនេះ។ ពាក្យ "Least-Squares" មានន័យថាផលបិទកំហុសរួមមិនធំ។ សម្រាប់ចំណុចទិន្នន័យមួយៗ យើងវាស់រយៈកន្លះកោងចុះ (ហៅថា residual) រវាងចំណុចពិត និងបន្ទាត់រេសគ្រីស្យុង។ +វាមានទំាងជាគន្លងនៃ **Least-Squares Regression** ដើម្បីគូសខ្សែបែបនេះ។ ពាក្យ "Least-Squares" មានន័យថា ជំហាននៃការកាត់បន្ថយកំហុសសរុបនៅក្នុងម៉ូដែល។ សម្រាប់ចំណុចទិន្នន័យរាល់ចំណុច យើងវាស់ចម្ងាយបញ្ឈរ (ហៅថា residual) រវាងចំណុចពិត និងខ្សែ regression។ -យើងធ្វើការការ៉េរយៈចន្លោះទាំងនេះដោយមានមូលហេតុសំខាន់ពីរគឺ: +យើងធ្វើការ​លោតបន្ធោងចម្ងាយនេះសម្រាប់មូលហេតុសំខាន់ ២៖ -1. **ទំហំលើទិសដៅ:** យើងចង់ពិនិត្យកំហុស -5 ដូចគ្នានឹងកំហុស +5។ ការ� square បំរេ所有តម្លៃជាផ្កាយវិជ្ជមានទាំងអស់។ +1. **ទំហំជាងទិសដៅ៖** យើងចង់ចាត់ទុកកំហុស -៥ ដូចគ្នានឹងកំហុស +៥។ ការ​លោតបន្ធោងធ្វើឲ្យតម្លៃទាំងអស់ទៅជាអវិជ្ជមាន។ -2. **ពិនិត្យចំពោះចំណុចក្រៅ:** ការ square ផ្តល់តុល្យភាពលើកំហុសធំៗ បង្ខំឲ្យបន្ទាត់នៅជិតចំណុចដែលឆ្ងាយ។ +2. **ដាក់ពិន័យចំពោះចំណុចខុសប្លែក៖** ការលោតបន្ធោងធ្វើឲ្យកំហុសធំហើយមានទំងន់បន្ថែម ហើយជំរុញឲ្យខ្សែស្របនៅជិតចំណុចដែលឆ្ងាយ។ -យើងបន្ថែមតម្លៃការ square ទាំងនេះគ្នាទៅវិញ។ គោលបំណងគឺរកបន្ទាត់ដែលសរុបនេះតិចបំផុត (តម្លៃតិចបំផុត) ហេតុនេះហៅពីរការនេះថា "Least-Squares"។ +ក្រោយមក យើងនឹងបូករួមតម្លៃលោតបន្ធោងទាំងអស់ទាំងនេះ។គោលដៅរបស់យើងគឺរកឃើញខ្សែនូវកន្លែងដែលសរុបចុងក្រោយកើតមានតិចបំផុត (តម្លៃតិចបំផុតដែលអាចមាន)—អាស្រ័យពីឈ្មោះ "Least-Squares"។ -> **🧮 បង្ហាញគណិតវិទ្យា** +> **🧮 បង្ហាញគណិតវិទ្យា** > -> បន្ទាត់នេះ ដែលហៅថា _បន្ទាត់សម្រង់ល្អបំផុត_ អាចបង្ហាញដោយ [សមីការ](https://en.wikipedia.org/wiki/Simple_linear_regression): +> ខ្សែនេះហៅថា _line of best fit_ អាចបង្ហាញដោយ [សមីការ](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` គឺជា 'អថេរពន្យល់'។ `Y` គឺជា 'អថេរនិយម'។ ជំហាននៃបន្ទាត់គឺ `b` ហើយ `a` គឺជាចំណុចកាត់បន្ទាត់ y ដែលធ្វើអោយ `Y` រក្សាតម្លៃនៅពេល `X = 0`។ +> `X` គឺជា "អថេរពន្យល់"។ `Y` គឺជា "អថេរអាស្រ័យ"។ ចំហាយខ្សែគឺ `b` ហើយ `a` គឺជា y-intercept ដែលមានន័យថាតម្លៃ `Y` នៅពេល `X = 0`។ > >![calculate the slope](../../../../translated_images/km/slope.f3c9d5910ddbfcf9.webp) > -> ជំហាន `b` គណនា ជាមួយគំនូរ [Jen Looper](https://twitter.com/jenlooper) +> ជំហានដំបូង គណនាចំហាយ `b`។ រូបតំណាងដោយ [Jen Looper](https://twitter.com/jenlooper) +> +> ក្នុងពាក្យផ្សេងៗ ហើយយោងទៅលើសំណួរដើមរបស់ទិន្នន័យផ្លែគុជ៖ "ទាយតម្លៃផ្លែគុជតាមបាសែលក្នុងមួយខែ", `X` នឹងបញ្ចេញតម្លៃតម្លៃ និង `Y` នឹងបញ្ចេញខែការលក់។ > -> នៅក្នុងពាក្យផ្សេង ហើយយោងទៅតាមសំណួរដើមរបស់ទិន្នន័យផ្កាយ "ទាយតម្លៃផ្កាយតាមបាសែលដោយខែ" ការបញ្ចូល `X` នឹងយោងទៅតម្លៃ និង `Y` នឹងយោងទៅខែ។ - >![complete the equation](../../../../translated_images/km/calculation.a209813050a1ddb1.webp) > -> គណនាតម្លៃ Y។ ប្រសិនបើអ្នកបង់ប្រហែល $៤ វាចាំបាច់ត្រូវ April! គំនូរដោយ [Jen Looper](https://twitter.com/jenlooper) +> គណនាតម្លៃ Y។ បើអ្នកកំពុងបង់ប្រាក់ប្រហែល $4 វា​គួរតែជាខែមេសា! រូបតំណាងដោយ [Jen Looper](https://twitter.com/jenlooper) > -> គណិតវិទ្យាដែលគណនាបន្ទាត់គួរតែបង្ហាញពីជំហាន `b` មានផ្ទៃមួយនៃការចាប់ផ្តើមតែម្តង នៅពេល `X = 0`។ +> គណិតវិទ្យាដែលគណនាចំពោះខ្សែនេះត្រូវបង្ហាញចំហាយខ្សែ ហើយវាក៏អាស្រ័យលើ intercept ឬទីតាំង `Y` នៅពេលដែល `X = 0`។ > -> អ្នកអាចមើលវិធីសាស្រ្តគណនាបញ្ជាក់លម្អិតបាននៅលើវេបសាយ [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)។ សូមចូលទៅកាន់ [កាលគណនា Least-squares នេះ](https://www.mathsisfun.com/data/least-squares-calculator.html) ដើម្បីមើលពីរបៀបលេខប៉ះពាល់បន្ទាត់។ +> អ្នកអាចមើលវិធីសាស្ត្រគណនាតម្លៃទាំងនេះក្រៅពី [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)។ សូមទៅសំណេះសំណាល [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) ដើម្បីមើលការប៉ះពាល់នៃតម្លៃចំនួនទៅលើខ្សែ។ -## សមាភាព/Correlation +## ការចងក្រង -ពាក្យមួយទៀតដែលត្រូវយល់គឺ **អាំងឃូផេរ៉េលេសិនកូអ៊ីហ្វ៊ីស្យង** រវាងអថេរ X និង Y ។ ប្រើ scatterplot អ្នកអាចមើលឃើញកូអ៊ីហ្វីស្យងនេះបានយ៉ាងរហ័ស។ ប្លង់ជាមួយចំណុចចំរៀងក្នុងបន្ទាត់ស្អាតនោះមានសមាភាពខ្ពស់ ប៉ុន្តែប្លង់ជាមួយចំណុចចំរាយនៅគ្រប់ទីកន្លែងរវាង X និង Y មានសមាភាពទាប។ +ពាក្យមួយទៀតដែលត្រូវយល់គឺ **អនុផលចងក្រង (Correlation Coefficient)** រវាងអថេរ X និង Y ប្រាប់។ ដោយប្រើ scatterplot អ្នកអាចឃើញអនុផលចងក្រងនេះបានរហ័ស។ ពេល scatterplot មានចំណុចកន្លងទៅតាមខ្សែស្រប មានអនុផលចងក្រងខ្ពស់ ប៉ុន្តែពេល scatterplot មានចំណុចចែកចាយជុំវិញលើទីលានសរុប មានអនុផលចងក្រងទាប។ -ម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ល្អនឹងជាៈ ម៉ូដែលដែលមានកូអ៊ីហ្វីស្យង់សមាភាពខ្ពស់ (ជិត ១ ជាង ០) ប្រើវិធី Least-Squares Regression ជាមួយបន្ទាត់រេសគ្រីស្យុង។ +ម៉ូដែល linear regression ដែលល្អ គឺម៉ូដែលមានអនុផលចងក្រងខ្ពស់ (ជិត 1 មិនមែន 0) ដោយប្រើវិធី Least-Squares Regression ជាមួយខ្សែ regression ។ -✅ រត់ notebook ដែលផ្ដល់ជាមួយមេរៀននេះ និងមើល scatterplot រវាង Month និង Price ។ តើទិន្នន័យដែលភ្ជាប់រវាង Month និង Price សម្រាប់ការលក់ផ្កាយមានសមាភាពខ្ពស់ ឬទាប ដោយយោងទៅតាមការបកស្រាយរបស់អ្នកពី scatterplot? តើវាប្រែប្រួលដែរឬទេ ប្រសិនបើអ្នកប្រើមាត្រដ្ឋានលម្អិតជាងនេះជំនួស `Month` ឧ. *day of the year* (ចំនួនថ្ងៃចាប់ពីដើមឆ្នាំ)? +✅ រាជធានី notebook ដែលបញ្ជាក់មេរៀននេះ និងមើល scatterplot រវាង ខែក្រោមតម្លៃ។ តើទិន្នន័យដែលភ្ជាប់ខែក្រោមតម្លៃសម្រាប់ការលក់ផ្លែគុជមានអនុផលចងក្រងខ្ពស់ ឬទាប តាមការបកស្រាយរូបភាពរបស់អ្នក? តើវាប្រែប្រួលបើប្រើវាស់វែងលម្អិតជាងខែដូចជា *ថ្ងៃឆ្នាំ* (ជាចំនួនថ្ងៃចាប់ពីដើមឆ្នាំ)? -នៅលើកូដខាងក្រោម យើងនឹងកត់សម្គាល់ថា យើងបានសម្អាតទិន្នន័យរួចហើយ ហើយទទួលបាន DataFrame ដែលហៅថា `new_pumpkins` ដូចក្នុងតារាងដូចខាងក្រោម៖ +ក្នុងកូដខាងក្រោមវាយើងនឹងសន្មតថាយើងបានបន្ថែមសម្អាតទិន្នន័យ ហើយទទួលបាន DataFrame ឈ្មោះ `new_pumpkins` ដូចខាងក្រោម៖ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -100,36 +100,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> កូដសម្រាប់សម្អាតទិន្នន័យមាននៅក្នុង [`notebook.ipynb`](notebook.ipynb)។ យើងបានអនុវត្តជំហានសម្អាតដូចក្នុងមេរៀនមុន ហើយបានគណនាថ្នេរជួរឈរ `DayOfYear` ដោយប្រើបន្ទាត់នេះ៖ +> កូដសម្រាប់សម្អាតទិន្នន័យអាចរកបានក្នុង [`notebook.ipynb`](notebook.ipynb)។ យើងបានអនុវត្តជំហានសម្អាតដដែលដូចមេរៀនមុន ហើយបានគណនាគូបន្ទាត់ `DayOfYear` ដោយប្រើនិយមន័យ​ខាងក្រោម៖ ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -ឥឡូវនេះដែលអ្នកមានយល់ដឹងពីគណិតវិទ្យារបស់រេសគ្រីស្យុងបន្ទាត់ អ្នកមកបង្កើតម៉ូដែល Regression ដើម្បីមើលថាតើយើងអាចទាយបានថាតើប្រអប់ផ្កាយណាដែលមានតម្លៃផ្កាយល្អបំផុត។ អ្នកដែលដែលជាវផ្កាយសម្រាប់តំបន់លំហែកាយថ្ងៃបុណ្យអាចចង់បានព័ត៌មាននេះ ដើម្បីអាចបឹតបញ្ចូលការជាវផ្កាយសម្រាប់តំបន់នោះ។ +ឥឡូវនេះដែលអ្នកមានការយល់ដឹងក្នងគណិតវិទ្យាក្រោយ linear regression យើងសាកល្បងបង្កើតម៉ូដែល Regression ដើម្បីមើលថាតើយើងអាចទាយថាតើកញ្ចប់ផ្លែគុជណាអាចមានតម្លៃល្អបំផុត។ មនុស្សដែលទិញផ្លែគុជសម្រាប់បរិវេទបុណ្យអាចចង់បានព័ត៌មាននេះដើម្បីអាចធ្វើអោយការទិញកញ្ចប់ផ្លែគុជមានប្រសិទ្ធភាពល្អបំផុតសម្រាប់បរិវេទ។ -## ស្វែងរកសមាភាព +## ការស្វែងរកការចងក្រង [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីសមាភាព។ +> 🎥 ចុចរូបភាពខាងលើសម្រាប់មើលវីដេអូសង្ខេបពីការស្វែងរកការចងក្រង។ -ពីមេរៀនមុនអ្នកប្រហែលជាបានឃើញថាតម្លៃមធ្យមនៃខែផ្សេងៗមានរូបរាងដូចជា: +ពីមេរៀនមុន អ្នកប្រហែលជាបានឃើញថាតម្លៃមធ្យមរបស់ខែផ្សេងៗមើលទៅដូចខាងក្រោម៖ Average price by month -នេះបង្ហាញថាមានសមាភាពមួយ ហើយយើងអាចព្យាយាមបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ដើម្បីទាយទំនាក់ទំនងរវាង `Month` និង `Price` ឬរវាង `DayOfYear` និង `Price`។ នេះគឺជា scatter plot បង្ហាញទំនាក់ទំនងបន្ថែម: +វាសម្លឹងបង្ហាញថា គួរតែមានការចងក្រងខ្លះ ហើយយើងអាចព្យាយាមបណ្តុះម៉ូដែល linear regression ដើម្បីទាយទំនាក់ទំនងរវាង `Month` និង `Price` ឬ `DayOfYear` និង `Price`។ នេះគឺជា scatter plot បង្ហាញទំនាក់ទំនងចុងក្រោយ៖ Scatter plot of Price vs. Day of Year -មកមើលពី `corr` មុខងារថា មានសមាភាពម្តេច៖ +មកមើលថាតើមានការចងក្រងជាមួយ `corr` function មែនទេ៖ ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -វាបង្ហាញថាសមាភាពតូចណាស់ - ប្រាំពីរយភាគរយដោយ `Month` និង -០.១៧ ដោយ `DayOfMonth` ប៉ុន្តែអាចមានទំនាក់ទំនងសំខាន់ផ្សេងទៀត។ វាហាក់ដូចជាមានក្រុមតម្លៃផ្សេងគ្នាដែលអាចទាក់ទងនឹងប្រភេទផ្កាយផ្សេងគ្នា។ ដើម្បីបញ្ជាក់ គោលដៅនេះ យើងចុះជ្រាប និងគូរផ្សេងគ្នាសម្រាប់ផ្កាយក្នុងប្រភេទតូចៗដោយបន្ទាត់ពណ៌ផ្សេងទៀត។ ដោយផ្តល់ប៉ារ៉ាម៉ែត្រ `ax` ទៅមុខងារ scatter ការគូរអាចបង្ហាញចំណុចទាំងអស់នៅលើក្រាបនេះបាន៖ +វាបង្ហាញថាការចងក្រងមានតិច (-0.15 សម្រាប់ `Month` និង -0.17 សម្រាប់ `DayOfYear`) ប៉ុន្តែអាចមានទំនាក់ទំនងសំខាន់ផ្សេងទៀត។ វា​បង្ហាញថាមានក្រុមតម្លៃផ្សេងៗដែលទាក់ទងទៅនឹងប្រភេទផ្លែគុជផ្សេងគ្នា។ ដើម្បីបញ្ជាក់សំណងនេះ សូមគូសផ្ទាំងផ្តោតលើប្រភេទផ្លែគុជដោយពណ៌ផ្សេងៗ។ ដោយផ្តល់ផារាម៉ែត្រ `ax` ទៅ `scatter` អ្នកអាចគូសចំណុចទាំងអស់នៅលើក្រាហ្វមួយដូចគ្នា៖ ```python ax=None @@ -141,7 +141,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): Scatter plot of Price vs. Day of Year -ការស៊ើបអង្កេតបង្ហាញថាប្រភេទផ្កាយមានឥទ្ធិពលលើតម្លៃនៃការលក់ច្រើនជាងកាលបរិច្ឆេទលក់។ យើងអាចមើលឃើញនេះជាមួយក្រាបបារ: +ការស៊ើបអង្កេតរបស់យើងបង្ហាញថាប្រភេទផ្លែគុជមានឥទ្ធិពលច្រើនជាងលើតម្លៃសរុបជាងថ្ងៃដែលលក់។ យើងអាចឃើញវាជាមួយក្រាហ្វបារ៖ ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') @@ -149,7 +149,7 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') Bar graph of price vs variety -ចូរយើងផ្ដោតលើប្រភេទផ្កាយតែមួយបច្ចុប្បន្ននេះ 'pie type' ហើយមើលឥទ្ធិពលនៃកាលបរិច្ឆេទលើតម្លៃ៖ +សូមផ្តោតសំខាន់បច្ចុប្បន្នលើប្រភេទផ្លែគុជតែមួយគត់ 'pie type' ហើយមើលថាតើថ្ងៃមានឥទ្ធិពលដូចម្ដេចចំពោះតម្លៃ៖ ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -157,24 +157,24 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -បើយើងគណនាសមាភាពរវាង `Price` និង `DayOfYear` ដោយប្រើ `corr` អ្នកនឹងបានប្រហែល `-0.27` - មានន័យថាការបណ្តុះម៉ូដែលទាយត្រូវមានអត្ថន័យ។ +បើយើងគណនាការចងក្រងរវាង `Price` និង `DayOfYear` ដោយប្រើ `corr` function ឥឡូវនេះ អ្នកនឹងបានតម្លៃប្រហែល `-0.27` - មានន័យថាការបណ្តុះម៉ូដែលទាយទោលរួចហើយមានហត្ថពលន៍។ -> មុនពេលបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ វាជារឿងសំខាន់ក្នុងការធ្វើអោយទិន្នន័យរបស់យើងបានស្អាត។ រេសគ្រីស្យុងបន្ទាត់មិនល្អសម្រាប់តម្លៃដែលខ្វះទេ ដូច្នេះវាមានអត្ថន័យក្នុងការដកចេញចំណុចទិន្នន័យខ្វះទាំងអស់៖ +> មុនពេលបណ្តុះម៉ូដែល linear regression វាម៉ត់ចត់ឲ្យប្រាកដថាទិន្នន័យស្អាត។ Linear regression មិនប្រសើរនៅពេលមានតម្លៃទំនេរ ដូច្នេះវាអាចមានអត្ថប្រយោជន៍ក្នុងការបោះបង់ជាសំណុំចំលងទាំងអស់៖ ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -វិធីសាស្រ្តមួយផ្សេងទៀតគឺបំពេញតម្លៃទទេនោះជាមួយតម្លៃមធ្យមពីជួរឈរចំរៀង។ +វិធីមួយផ្សេងទៀតគឺបំពេញតម្លៃទំនេរទាំងនោះជាមួយតម្លៃមធ្យមពីជួរឈរដែលទាក់ទង។ -## រេសគ្រីស្យុងបន្ទាត់សាមញ្ញ +## Regression ស្រួលៗ linear [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីរេសគ្រីស្យុងបន្ទាត់ និងព៉ូលីណូមៀល។ +> 🎥 ចុចរូបភាពខាងលើសម្រាប់មើលវីដេអូសង្ខេបពី linear និង polynomial regression។ -ដើម្បីបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់របស់យើង យើងនឹងប្រើបណ្ណាល័យ **Scikit-learn**។ +ដើម្បីបណ្តុះម៉ូដែល Linear Regression របស់យើង យើងនឹងប្រើបណ្ណាល័យ **Scikit-learn** ។ ```python from sklearn.linear_model import LinearRegression @@ -182,31 +182,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -យើងចាប់ផ្តើមដោយបំបែកតម្លៃបញ្ចូល (Features) និងលទ្ធផលដែលរំពឹងទុក (Label) ទៅជា array numpy បំបែក: +យើងចាប់ផ្ដើមដោយបំបែកកម្រិតបញ្ចូល (features) និងលទ្ធផលដែលរំពឹងទុក (label) ទៅក្នុង array numpy ផ្សេងៗ៖ ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> សូមចំណាំថា យើងបានធ្វើ `reshape` លើទិន្នន័យបញ្ចូល ដើម្បីឲ្យកញ្ចប់ Linear Regression យល់បានត្រឹមត្រូវ។ Linear Regression រំពឹងថានឹងទទួល array ទំហំ 2D ដែលជួរដេកនីមួយៗជាគេហ្មត់មុខងារបញ្ចូលមួយ។ ក្នុងករណីយើងមានតែមុខងារតែមួយ ដូច្នេះត្រូវការតម្រូវ array ទៅជា N×1 ដែល N គឺជាចំនួនទិន្នន័យ។ +> សូមចំណាំថាយើងត្រូវបានធ្វើ `reshape` លើទិន្នន័យបញ្ចូល ដើម្បីឲ្យ package Linear Regression យល់បានត្រឹមត្រូវ។ Linear Regression រងចាំ array 2D ជាកម្រិតបញ្ចូល ដែលជារៀងរាល់ជួរឈរនៃ array តំណាងថាលក្ខណៈបញ្ចូលមួយ vector។ សម្រាប់ករណីយើង មានតែបញ្ចូលមួយ ចាំបាច់ត្រូវមាន array ទំហំ N×1 ដែល N ជា​ចំនួនទិន្នន័យ។ -បន្ទាប់មកយើងត្រូវបំបែកទិន្នន័យជាកញ្ចប់ហ្វឹកហាត់ និងតេស្ត ដើម្បីអាចត្រួតពិនិត្យម៉ូដែលបន្ទាប់ពីបណ្តុះ: +បន្ទាប់មក យើងត្រូវបំបែកទិន្នន័យជាក្រុមបណ្តុះបណ្តាលនិងសាកល្បង ដើម្បីពិនិត្យម៉ូដែលបន្ទាប់ពីបណ្តុះបណ្តាល៖ ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -ចុងក្រោយ ការបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ពិតត្រឹមពីរជួរដេកកូដប៉ុណ្ណោះ។ យើងកំណត់វត្ថុ `LinearRegression` ហើយបង្វួលវាទៅលើទិន្នន័យដោយប្រើ `fit` វិធីសាស្រ្ត៖ +ចុងក្រោយ ការបណ្តុះណែនាំម៉ូដែល Linear Regression ពិតប្រាកដត្រូវការចំនួនកូដប៉ុន្មានជួរប៉ុណ្ណោះ។ យើងកំណត់អំពើ `LinearRegression` ហើយតភ្ជាប់វាជាមួយទិន្នន័យដោយវិធីសាស្ត្រ `fit`៖ ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -វត្ថុ `LinearRegression` បន្ទាប់ពីធ្វើការ `fit` មានគ្រប់គ្រាន់នៃអនុគមន៍រាងក្រាបដែលអាចចូលដំណើរការបានដោយប្រើគុណលក្ខណៈ `.coef_`។ ក្នុងករណីរបស់យើង មានគ្រាន់តែអនុគមន៍រាងតែមួយ ដែលគួរតែនឹងទៅជាទីប្រហែល `-0.017`។ វាជាអត្ថន័យថា តម្លៃមានទំនងធ្លាក់ខ្សែពេលវេលាបន្តិចបន្តួច ប៉ុន្តែមិនច្រើនទេ ប្រមាណពីរចិនសសម្រាប់មួយថ្ងៃ។ យើងអាចចូលដំណើរការចំណុចកាត់នៃក្រាបជាមួយអ័ក្ស Y ដោយប្រើ `lin_reg.intercept_` - វានឹងនៅជិត `21` ក្នុងករណីរបស់យើង បង្ហាញពីតម្លៃនៅដើមឆ្នាំ។ +វត្ថុ `LinearRegression` បន្ទាប់ពី​បានធ្វើការបណ្តុះ​បណ្តាល (`fit`-ting)​ មានគោលបំណងសមាមាត្រទាំងអស់នៃសមីការបញ្ចេញលទ្ធផល ដែល​អាច​ចូលដំណើរការបាន​ដោយ​ប្រើ​អចលនវត្ថុ `.coef_`។ នៅក្នុងករណីរបស់​យើង មានគោលបំណងតែមួយ ប៉ុន្តែគួរតែប្រហែលជា `-0.017`។ នេះមានន័យថាកម្លៃ​តម្លៃ​ព្រៃដូចជានឹងធ្លាក់បន្តិចបន្តួចជាមួយ​ពេលវេលា ប៉ុន្តែមិនច្រើនពេក យ៉ាងតិចប្រហែល 2 សេន្ទក្នុងមួយថ្ងៃ។ យើងក៏អាចចូលដំណើរការចំណុច​ឆ្លុះកាត់​នៃសមីការបញ្ចេញលទ្ធផលជាមួយអ័ក្ស Y បានដោយ​ប្រើ `lin_reg.intercept_` - វានឹងប្រហែលជា `21` ក្នុងករណីយើង បង្ហាញពី​តម្លៃ​នៅដើម​ឆ្នាំ។ -ដើម្បីមើលថា ម៉ូឌែលរបស់យើងមានត្រឹមត្រូវប៉ុណ្ណា យើងអាចប៉ាន់ស្មានតម្លៃនៅលើទិន្នន័យសាកល្បង ហើយបន្ទាប់មកវាស់ថាតើការព្យាករណ៍របស់យើងនៅជិតតម្លៃដែលរំពឹងទុកយ៉ាងដូចម្តេច។ វាអាចធ្វើបានដោយប្រើសន្ទស្សន៍ root mean square error (RMSE) ដែលជាគម្លាតព្រំជាមួយមធ្យមនៃចំនួនឯកតាជាដើមរវាងតម្លៃរំពឹងទុក និងតម្លៃដែលបានព្យាករណ៍។ +ក្នុងការមើលថាតើ​ម៉ូឌែលរបស់យើងមានភាពត្រឹមត្រូវប៉ុណ្ណា យើងអាចទាយតម្លៃលើទិន្នន័យសាកល្បង ហើយបន្ទាប់មកវាស់ឈរភាពជិតស្និទ្ធរបស់ការទាយរបស់យើងនឹងតម្លៃដែលរំពឹងទុក។ នេះអាចធ្វើបានដោយប្រើមាត្រដ្ឋាន root mean square error (RMSE) ដែលជាចម្ងាយរបស់មធ្យមនៃភាពខុសគ្នាប្រក់គ្នាជារូបបូកមួយរវាងតម្លៃរំពឹងនិងតម្លៃទាយ។ ```python pred = lin_reg.predict(X_test) @@ -214,37 +214,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -កំហុសរបស់យើងមានទំនងជាច្រើនជាង២ ពិន្ទុ ដែលប្រមាណជា ~17%។ មិនល្អពេកទេ។ ទាំងនេះគឺជាសន្ទស្សន៍ដាក់ទំនាក់ទំនងគុណភាពម៉ូឌែល អាចទទួលបានជា **coefficient of determination** ដូចខាងក្រោម៖ + +កំហុសរបស់យើងហាក់ដូចជាប្រហែល 2 ពិន្ទុ ដែលប្រហែលជាគឺ ~17%។ មិនល្អធ្វើទេ។ មាត្រដ្ឋានជួនកាលទៀតនៃគុណភាពម៉ូឌែលគឺ **coefficient of determination** ដែលអាចទទួលបានដូចខាងក្រោម៖ ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - ប្រសិនបើតម្លៃគឺ 0 វាមានន័យថា ម៉ូឌែលមិនយកទិន្នន័យអោយបានជាការបញ្ចូល និងដំណើរការជា *predictor linear អាក្រក់បំផុត* ដែលជាមធ្យមតម្លៃលទ្ធផលប៉ុណ្ណោះ។ តម្លៃ 1 មានន័យថាយើងអាចព្យាករណ៍លទ្ធផលទាំងអស់បានយ៉ាងពេញលេញ។ ក្នុងករណីរបស់យើង អនុគមន៍សង្ខេបគឺជាទីប្រហែល 0.06 ដែលគឺទាបណាស់។ + +បើតម្លៃគឺ 0 មានន័យថា ម៉ូឌែលមិនយកទិន្នន័យបញ្ចូលចូលក្នុងការគិតឡើយ ហើយដំណើរការជា *អ្នកទាយបន្ទាត់អាក្រក់បំផុត* ដែលគ្រាន់តែជាមធ្យមនៃលទ្ធផល។ តម្លៃ 1 មានន័យថាយើងអាចទាយបានអ្វីគ្រប់យ៉ាងយ៉ាងត្រឹមត្រូវ។ ក្នុងករណីយើង គុណហានិភ័យគឺប្រហែល 0.06 ដែលច្រើនទាប។ -យើងអាចគូសបង្ហាញទិន្នន័យសាកល្បងជាមួយខ្សែ regression ដើម្បីមើលឃើញថា regression ធ្វើការយ៉ាងដូចម្តេចក្នុងករណីរបស់យើងបានកាន់តែច្បាស់៖ +យើងក៏អាចគូរបង្ហាញទិន្នន័យសាកល្បងរួមជាមួយបន្ទាត់សមីការបញ្ចេញលទ្ធផល ដើម្បីមើលថាតើសមីការបញ្ចេញលទ្ធផលដំណើរការយ៉ាងដូចម្តេច៖ ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - + Linear regression -## Regression ប៉ូលីណូមី +## សមីការបញ្ចេញលទ្ធផល Polynomial Regression -ប្រភេទមួយផ្សេងទៀតនៃ Linear Regression គឺ Polynomial Regression។ ខណៈពេលពេលដែលពេលខ្លះ មានទំនាក់ទំនងបន្ទាត់រវាងអថេរណ៍ - ការរំលាយបំពងត្រូវបានវាស់ចំណុះកាន់តែធំ ទីផ្សារក៏កាន់តែល្អ - ពេលខ្លះទំនាក់ទំនងទាំងនេះមិនអាចត្រូវបានគូសបង្ហាញជាល្វែងឬបន្ទាត់តែមួយបានទេ។ +ប្រភេទមួយទៀតនៃសមីការបញ្ចេញលទ្ធផលបន្ទាត់គឺ សមីការ Polynomial Regression។ ខណៈពេលដែលខ្លះមានទំនាក់ទំនងបន្ទាត់រវាងអថេរផ្សេងៗ - ទំហំប៉ូមពេញមួយធំពីលទ្ធផលកាន់តែលើកម្លៃ យ៉ាងណាក៏ដោយ ទំនាក់ទំនងទាំងនេះមិនអាចគូរជាបន្ទាត់ផ្លាត់ ឬបន្ទាត់ត្រង់បានទេ។ -✅ សូមមើល [ឧទាហរណ៍បន្ថែម](https://online.stat.psu.edu/stat501/lesson/9/9.8) ទិន្នន័យដែលអាចប្រើបាន Polynomial Regression +✅ នៅទីនេះមាន [ឧទាហរណ៍បន្ថែម](https://online.stat.psu.edu/stat501/lesson/9/9.8) នៃទិន្នន័យដែលអាចប្រើ Polynomial Regression -មើលម្ដងទៀតលើទំនាក់ទំនងរវាង Date និង Price។ តើ scatterplot នេះមើលទៅដូចជាគួរត្រូវបានវិភាគតាមបន្ទាត់តែមួយទេ? តើតម្លៃនៃតម្លៃតម្លើងនឹងមានការធ្លាក់ឡើង? ក្នុងករណីនេះ អ្នកអាចសាកល្បង polynomial regression។ +សូមមើលទំនាក់ទំនងរវាង Date និង Price ជាទៀត។ តើ scatterplot នេះមើលទៅគួរត្រូវបានវិភាគដោយបន្ទាត់ត្រង់តែមួយ? តើតម្លៃអាចប្រែប្រួលបានទេ? ក្នុងករណីនេះ អ្នកអាចសាកល្បងសមីការ polynomial regression។ -✅ ប៉ូលីណូមីគឺជាការបង្ហាញគណិតវិទ្យាដែលអាចមានអថេរណ៍មួយឬច្រើន និងគុណលក្ខណៈ +✅ Polynomials គឺជាអប្បបរមាណ គណិតវិទ្យា ដែលប្រហែលជាមានអថេរមួយ ឬច្រើន និងគោលបំណងជាសំណុំ -Polynomial regression បង្កើតខ្សែជារបារោងក្រោងសម្រាប់ផ្គូរផ្គងទិន្នន័យប្លែកៗសម្រាប់ការព្យាករណ៍។ ក្នុងករណីរបស់យើង ប្រសិនបើយើងបញ្ចូលអថេរ `DayOfYear` កាយក្រិតទីពីរចូល ទិន្នន័យបញ្ចូល យើងអាចជួយឱ្យត្រូវបានផ្គូរផ្គងជាមួយខ្សែប្រមាណប៉ារ៉ាបល (parabolic curve) ដែលមានតម្លៃអប្បបរមានៅចំណុចមួយក្នុងឆ្នាំ។ +Polynomial regression បង្កើតបន្ទាត់ពោងដើម្បីផ្គួតផ្គងទិន្នន័យមិនបន្ទាត់បានល្អជាងមុន។ ក្នុងករណីរបស់យើង ប្រសិនបើបញ្ចូលអថេរ `DayOfYear` ការប្រកួតកំណត់ក្នុងទិន្នន័យចូលទាំងមូល យើងគួរតែអាចធ្វើការបណ្តុះក្នុងទិន្នន័យជាមួយព្រីលារតិសន្ទិលក្រោមរូបមន្ត Parabolic ដែលមានអប្បបរមា​នៅចំណុចមួយក្នុងឆ្នាំ។ -Scikit-learn មាន [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ជំនួយសម្រាប់បង្រួមជំហាន ផលិតផលនៃដំណើរការទិន្នន័យជាមួយគ្នា។ **pipeline** ជាចំនងចងគ្នានៃ **estimators**។ ក្នុងករណីរបស់យើង យើងនឹងបង្កើត pipeline ដែលបន្ថែមលក្ខណៈ polynomial មុនបណ្តុះ regression: +Scikit-learn មាន API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ប្រយោជន៍ក្នុងការបញ្ចូលជំហ៊ានផ្សេងៗនៃការបញ្ចូលទិន្នន័យជាមួយគ្នា។ ​**pipeline** គឺជាច្រវាក់នៃ **estimators**។ ក្នុងករណីយើង យើងនឹងបង្កើត pipeline ដែលដំបូងបន្ថែមលក្ខណៈ polynomial ទៅម៉ូឌែល ហើយបន្ទាប់បណ្តុះ regression៖ ```python from sklearn.preprocessing import PolynomialFeatures @@ -254,61 +255,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` + +ការប្រើ `PolynomialFeatures(2)` មានន័យថាយើងនឹងបញ្ចូល polynomials កំរិតទី ២ ទាំងអស់ពីទិន្នន័យបញ្ចូល។ ក្នុងករណីយើង នឹងមានតែមួយគឺគឺ `DayOfYear`2 ប៉ុន្តែជិតជាមួយអថេរចំនួនពីរ X និង Y វានឹងបន្ថែម X2, XY និង Y2។ យើងអាចប្រើ polynomials កំរិតខ្ពស់ជាងនេះបានផងដែរ ប្រសិនបើយើងចង់។ + +Pipeline អាចប្រើបានយ៉ាងដូចគ្នាទៅនឹងវត្ថុ `LinearRegression` ដើម, គឺ៖ យើងអាច `fit` pipeline ហើយបន្ទាប់មកប្រើ `predict` ដើម្បីទទួលលទ្ធផលទាយ៖ + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +ដើម្បីគូរបន្ទាត់ពោងស្រទាប់ម៉ាត់ អ្នកប្រើ `np.linspace` ដើម្បីបង្កើតជួរចាប់ផ្តើមតម្លៃបញ្ចូលស្មើគ្នា ជាងការគូរតាមទិន្នន័យសាកល្បងដែលមិនមានលំដាប់ (ដែលនឹងបង្កើតបន្ទាត់ zigzag): -ការ​ប្រើប្រាស់ `PolynomialFeatures(2)` មានន័យថាយើងនឹងបញ្ចូលក polynomial ពីដំណើរការថ្នាក់ទីពីរទាំងអស់ ពីទិន្នន័យបញ្ចូល។ ក្នុងករណីរបស់យើង វានឹងមានតែ `DayOfYear`2 ប៉ុណ្ណោះ ប៉ុន្តែសម្រាប់អថេរឈ្មោះ X និង Y ខុសគ្នា វានឹងបន្ថែម X2 XY និង Y2។ យើងអាចប្រើ polynomial ថ្នាក់ខ្ពស់ជាងនេះប្រសិនបើចង់បាន។ +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) -Pipeline អាចប្រើដូចជាវត្ថុ `LinearRegression` ដើម គឺយើងអាច `fit` pipeline ហើយបន្ទាប់មកប្រើ `predict` ដើម្បីទទួលបានលទ្ធផល។ នេះជាក្រាផាងបង្ហាញទិន្នន័យសាកល្បង និងខ្សែប្រមាណ៖ +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +នេះគឺជាបន្ទាត់បង្ហាញទិន្នន័យសាកល្បង និងបន្ទាត់សន្និដ្ឋាន៖ Polynomial regression -ដោយប្រើ Polynomial Regression យើងអាចទទួលបាន MSE ទាបបន្តិច និង coefficient determination ខ្ពស់ជាង ប៉ុន្តែមិនច្រើនខ្លាំងទេ។ យើងត្រូវយកចិត្តទុកដាក់ទៅលើលក្ខណៈផ្សេងទៀតផង! +ប្រើ Polynomial Regression អាចទទួលបានកម្លាំង RMSE ទាបជាង និងឈរភាពកំណត់ខ្ពស់ជាង ប៉ុន្តែមិនច្រើនពេកទេ។ យើងត្រូវយកចិត្តទុកដាក់លើលក្ខណៈផ្សេងទៀត! -> អ្នកអាចសង្កេតឃើញថា តម្លៃបណ្ដូលរបស់ កំបោរភាគច្រើនបង្ហាញនៅក្បែរបុណ្យ Halloween។ តើធ្វើដូចម្តេចដើម្បីពន្យល់ពីនេះ? +> អ្នកអាចមើលឃើញថាតម្លៃបន្ទះប៉ូមគឺអប្បបរមា ខណៈពេលដែលនៅជិតបុណ្យ Halloween។ តើអ្នកអាចពន្យល់បែបណា? -🎃 អបអរសាទរ អ្នកទើបបង្កើតម៉ូឌែលអាចជួយព្យាករណ៍តម្លៃកំបោរភាគបាយបាន។ អ្នកប្រហែលជាអាចធ្វើបែបនេះសម្រាប់ប្រភេទកំបោរទាំងអស់ ប៉ុន្តែវាអាចធ្វើឱ្យធុញនឿយ។ យើងនឹងរៀនពីរបៀបយកប្រភេទកំបោរចូលទៅក្នុងម៉ូឌែល! +🎃 អបអរសាទរ! អ្នកបានបង្កើតម៉ូឌែលដែលអាចជួយទាយតម្លៃបន្ទះប៉ូមសម្រាប់នំបុ័ង។ អ្នកប្រហែលជាអាចធ្វើឡើងវិញសម្រាប់ប្រភេទប៉ូមទាំងអស់ ប៉ុន្តែវាជារឿងធុញនឿយ។ យើងត្រូវស្យៀនការយល់ពីរបៀបយកភាពខុសគ្នាប្រភេទប៉ូមចូលក្នុងម៉ូឌែលរបស់យើង! -## លក្ខណៈប្រភេទ (Categorical Features) +## លក្ខណៈកាតេហ្គរី -នៅពិភពល្អ គួរតែមានសមត្ថភាពក្នុងការព្យាករណ៍តម្លៃសម្រាប់ប្រភេទកំបោរផ្សេងៗដោយប្រើម៉ូឌែលដូចគ្នា។ ក៏ប៉ុន្តែ បន្ទាត់ `Variety` ខុសគ្នាពីបន្ទាត់ដូចជា `Month` ពីព្រោះវាមានតម្លៃមិនមែនជាចំនួន។ បន្ទាត់ដូចនេះហៅថា **categorical**។ +នៅក្នុងពិភពដ៏ល្អបំផុត យើងចង់អាចទាយតម្លៃរបស់ប៉ូមប្រភេទផ្សេងៗ ដោយប្រើម៉ូឌែលដដែល។ ទោះយ៉ាងណា ជួរឈរដែលមានឈ្មោះ `Variety` មានភាពខុសពីជួរឈរ‌ដូចជា `Month` ពីព្រោះវាមានតម្លៃមិនមែនជាលេខ។ ជួរឈរដូចនេះហៅថា **categorical**។ [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 ចុចរូបភាពខាងលើដើម្បីមើលវីដេអូចង្អុលបង្ហាញខ្លីអំពីការប្រើលក្ខណៈ categorical។ +> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីការប្រើលក្ខណៈកាតេហ្គរី។ -នៅទីនេះ អ្នកអាចមើលឃើញថាតម្លៃមធ្យមនៃតម្លៃអាស្រ័យលើប្រភេទ៖ +នេះអ្នកអាចមើលឃើញថាតម្លៃមធ្យមពឹងផ្អែកលើប្រភេទ៖ Average price by variety -ដើម្បីយកប្រភេទគិតចូល ជាអង្គភាពចំនួន យើងត្រូវកំណត់វាទៅជាទ្រង់ទ្រាយចំនួនឬ **encode** វា។ មានវិធីខ្លះៗដូចនេះ៖ +ដើម្បីយកប្រភេទចូលក្នុងការគិតយើងត្រូវបំលែងវាទៅជាទម្រង់លេខ ឬ **encode** វា។ មានវិធីជាច្រើនដែលអាចធ្វើបាន៖ -* **numeric encoding** ងាយស្រួលបង្កើតតារាងប្រភេទផ្សេងៗ ហើយប្តូរឈ្មោះប្រភេទជាទីតាំងក្នុងតារាង។ នេះមិនល្អសម្រាប់ linear regression ព្រោះ linear regression ប្រើតម្លៃចំនួនជាក់លាក់របស់ index ហើយបូកលទ្ធផលដោយគុណនឹង coefficient មួយ។ នៅក្នុងករណីរបស់យើង ទំនាក់ទំនងរវាងលេខរៀងនិងតម្លៃមិនមែនជាបន្ទាត់ទេ ទោះបីយើងតម្រៀបតាមលំដាប់ជាការពិត។ -* **One-hot encoding** ជំនួបបន្ទាត់ `Variety` ជាមួយបន្ទាត់ ៤ ប្រភេទផ្សេងៗ បន្ទាត់មួយសម្រាប់ប្រភេទនីមួយៗ។ រាល់បន្ទាត់ នឹងមាន `1` ប្រសិនបើជាបន្ទាត់នៃប្រភេទនោះ និង `0` ប្រសិនបើមិនមែន។ នោះមានន័យថា មានគុណលក្ខណៈបួននៅក្នុង linear regression សម្រាប់ប្រភេទកំបោរផ្សេងៗ ដែលរួមបញ្ចូលតម្លៃចាប់ផ្តើម (ឬតម្លៃបន្ថែម) សម្រាប់ប្រភេទនោះ។ +* ការបំលែងលេខសាមញ្ញ (**numeric encoding**) នឹងបង្កើតតារាងនៃប្រភេទផ្សេងៗ ហើយបន្ទាប់មកប្តូរឈ្មោះប្រភេទជាកន្លែងក្នុងតារាង។ វាមិនមែនជាគំនិតល្អសម្រាប់សមីការបញ្ចេញលទ្ធផលបន្ទាត់ ទេ ព្រោះសមីការបញ្ចេញលទ្ធផលបន្ទាត់យកតម្លៃលេខនៃសន្ទស្សន៍ចូលរួមក្នុងការគណនា ហើយបូកបន្ថែមចូល ធ្វើការបូកគុណជាមួយគោលបំណងខ្លះ។ ក្នុងករណីយើង ទំនាក់ទំនងរវាងលេខសន្ទស្សន៍ និងតម្លៃពិតមិនបន្ទាត់ទេ ទោះបីយើងធ្វើអោយតំណាងលេខត្រូវត្រួតត្រាក្នុងលំដាប់ច្បាស់ក៏ដោយ។ +* ការបំលែងប្រភេទជា **one-hot encoding** នឹងប្តូរជួរឈរ `Variety` ទៅជាជួរឈរបួនផ្សេងៗ មួយសម្រាប់ប្រភេទនីមួយៗ។ ត្រង់ជួរឈរនីមួយនឹងមានតម្លៃ `1` ប្រសិនបើជួរដេកពាក់ព័ន្ធជាប្រភេទនោះ ហើយ `0` ផ្សេងៗគ្នា។ នេះមានន័យថានឹងមានគោលបំណងបួនក្នុងសមីការបញ្ចេញលទ្ធផលឲ្យតម្រូវតម្លៃចាប់ផ្តើម (ឬ “តម្លៃបន្ថែម”) សម្រាប់ប្រភេទប៉ូមនីមួយៗ។ -កូដខាងក្រោមបង្ហាញពីរបៀបបម្លែងប្រភេទទៅ one-hot encoding៖ +កូដខាងក្រោមបង្ហាញពីរបៀបដែលយើងអាចបំលែងប្រភេទជាទម្រង់ one-hot encoded៖ ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 - -ដើម្បីបណ្តុះ linear regression ជាមួយ one-hot encoded variety ជាដំណើរការបញ្ចូល បូកផ្សំពីការចាប់ផ្តើម `X` និង `y` ត្រូវបានកំណត់ត្រឹមត្រូវ៖ + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +ដើម្បីបណ្តុះសមីការបញ្ចេញលទ្ធផលបន្ទាត់ប្រើបណ្តុះប្រភេទ one-hot encoded ជា input យើងគ្រាន់តែត្រូវផ្តល់ `X` និង `y` ដោយត្រឹមត្រូវ៖ ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -កូដដែលនៅសល់ដូចគ្នានឹងវាដែលបានប្រើខាងលើសម្រាប់បណ្តុះ Linear Regression។ ប្រសិនបើអ្នកសាកល្បង វានឹងបង្ហាញថា mean squared error ប្រហែលដូចគ្នា ប៉ុន្តែ coefficient determination ទទួលបានខ្ពស់ជាង (~77%)។ ដើម្បីទទួលបានការព្យាករណ៍ត្រឹមត្រូវច្រើនទៀត អ្នកអាចយកលក្ខណៈ categorical ផ្សេងៗ និងលក្ខណៈចំនួនដូចជា `Month` ឬ `DayOfYear` មកគិតរួម។ ដើម្បីទទួលបាន array លក្ខណៈធំមួយ អ្នកអាចប្រើ `join`៖ + +Remaining កូដដូចគ្នានឹងអ្វីដែលយើងប្រើខាងលើសម្រាប់បណ្តុះ Linear Regression។ ប្រសិនបើអ្នកសាកល្បង អ្នកនឹងឃើញថាកំហុសគន្លងគំនូសមធ្យមនៃ squared error ជិតតំលៃដដែល ប៉ុន្តាយើងទទួលបាន coefficient of determination ខ្ពស់ជាង (~77%)។ ដើម្បីទទួលបានការទាយខ្ពស់ជាងនេះទៀត យើងអាចយកលក្ខណៈ categorical ជាច្រើនជាមួយ លក្ខណៈលេខ ដូចជា `Month` ឬ `DayOfYear`។ ដើម្បីធ្វើអោយជាសំណុំលក្ខណៈធំមួយ យើងអាចប្រើ `join`៖ ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -317,69 +340,69 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` + +នៅទីនេះយើងក៏យកចិត្តទុកដាក់លើ `City` និងប្រភេទ `Package` ផងដែរ ដែលផ្តល់ RMSE 2.84 (១០.៥%) និង coefficient determination 0.94! -នៅទីនេះ យើងក៏នឹងយក `City` និងប្រភេទ `Package` ទៅគិតផង ដែលផ្តល់ឱ្យយើង MSE 2.84 (10%) និង coefficient determination 0.94! - -## បង្ហាប់គ្រប់យ៉ាងរួមគ្នា +## សម្រង់ទាំងអស់ជាមួយគ្នា -ដើម្បីបង្កើតម៉ូឌែលល្អបំផុត យើងអាចប្រើទិន្នន័យបញ្ចូលរួមគ្នា (categorical one-hot encoded + numeric) ពីឧទាហរណ៍ខាងលើជាមួយ Polynomial Regression។ រួចកូដពេញលេញសម្រាប់ការងាររបស់អ្នក៖ +ដើម្បីបង្កើតម៉ូឌែលល្អបំផុត យើងអាចប្រើទិន្នន័យរួម (categorical one-hot encoded + numeric) ពីឧទាហរណ៍ខាងលើ រួមជាមួយ Polynomial Regression។ នេះជាកូដពេញលេញសម្រាប់សម្រួលអ្នក៖ ```python -# ប្រើប្រាស់ទិន្នន័យសម្រាប់ហាត់ប្រាណ +# បង្កើតទិន្នន័យសម្រាប់បណ្ដុះបណ្ដាល X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# បំបែកទិន្នន័យចេញជាបំណែកហាត់ប្រាណ និងសាកល្បង +# បំបែកទិន្នន័យចេញជាក្រុមបណ្ដុះបណ្ដាល និងសំណួរប្រលង X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# រៀបចំ និងហាត់ប្រាណផ្លូវប្រតិបត្តិការ +# កំណត់ និងបណ្ដុះបណ្ដាលបាយឡុង pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ព្យាករណ៍លទ្ធផលសម្រាប់ទិន្នន័យសាកល្បង +# ប្រោសចេញលទ្ធផលសម្រាប់ទិន្នន័យសាកល្បង pred = pipeline.predict(X_test) -# គណនារាង MSE និងកំណត់ការសម្រេច -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# គណនាតម្លៃ RMSE និងកំណត់ការសំរេច +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` - -នេះគួរតែផ្តល់ឱ្យយើងនូវ coefficient determination ខ្ពស់ជាងគេប្រមាណ 97% និង MSE=2.23 (~8% កំហុសព្យាករណ៍) ។ - -| ម៉ូឌែល | MSE | Coefficient determination | -|-------|-----|---------------------------| -| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | -| `Variety` Linear | 5.24 (19.7%) | 0.77 | -| លក្ខណៈទាំងអស់ Linear | 2.84 (10.5%) | 0.94 | + +នេះគួរតែផ្តល់ឲ្យយើងបាន coefficient determination ល្អបំផុតប្រហែល ៩៧% និង RMSE=2.23 (~៨% កំហុស). + +| ម៉ូឌែល | RMSE | coefficient determination | +|-------|-----|-------------------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| លក្ខណៈទាំងអស់ Linear | 2.84 (10.5%) | 0.94 | | លក្ខណៈទាំងអស់ Polynomial | 2.23 (8.25%) | 0.97 | -🏆 តើអ្នកបានធ្វើបានល្អ! អ្នកបង្កើតម៉ូឌែល Regression បួនក្នុងមួយមេរៀន ហើយបង្កើតគុណភាពម៉ូឌែលបានទៅដល់97%។ នៅក្នុងផ្នែកចុងក្រោយ នៃមេរៀន Regression អ្នកនឹងរៀនអំពី Logistic Regression ដើម្បីកំណត់ប្រភេទ។ +🏆 សូមអបអរសាទរ! អ្នកបានបង្កើតម៉ូឌែល Regression បួនប្រភេទក្នុងមេរៀនមួយ ហើយកែលម្អគុណភាពម៉ូឌែលដល់ ៩៧%។ នៅផ្នែកចុងក្រោយនៃមេរៀន Regression អ្នកនឹងរៀនអំពី Logistic Regression ដើម្បីកំណត់ប្រភេទ។ ---- -## 🚀 បញ្ញើ +--- +## 🚀ការប្រកួតប្រជែង -សាកល្បងអថេរផ្សេងៗគ្នាក្នុងកំណត់ត្រានេះ ដើម្បីមើលថាតើការតភ្ជាប់ទំនាក់ទំនងសមរម្យទៅប៉ុណ្ណា ជាមួយគុណភាពម៉ូឌែល។ +សាកល្បងអថេរផ្សេងៗក្នុង notebook នេះ ដើម្បីមើលថាតើ​ធរណីមាត្រភ្ជាប់​សម្រាប់ការទាយម៉ូឌែលមានភាពទាក់ទងយ៉ាងដូចម្តេច។ -## [ការប្រលងក្រោយមេរៀន](https://ff-quizzes.netlify.app/en/ml/) +## [សំណួរប្រឡងបន្ទាប់មេរៀន](https://ff-quizzes.netlify.app/en/ml/) -## សិក្សាផ្ទាល់ខ្លួន +## ការពិនិត្យឡើងវិញ និងរៀនដោយខ្លួនឯង -នៅក្នុងមេរៀននេះ យើងបានរៀនអំពី Linear Regression។ មានប្រភេទ Regression ផ្សេងទៀតដែលសំខាន់។ សូមអានអំពី Stepwise, Ridge, Lasso និង Elasticnet។ វគ្គសិក្សាល្អសម្រាប់រៀនបន្ថែមគឺ [វគ្គសិក្សារបស់ Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +នៅក្នុងមេរៀននេះ យើងបានរៀនអំពី Linear Regression។ មានប្រភេទសមីការបញ្ចេញលទ្ធផលសំខាន់ផ្សេងទៀត។ សូមអានអំពី Stepwise, Ridge, Lasso និង Elasticnet techniques។ មេរៀនល្អសម្រាប់អនុវត្តន៍បន្ថែមគឺ [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## ការបង្រៀន +## បេសកកម្ម [បង្កើតម៉ូឌែល](assignment.md) --- -**ការព្រមាន**៖ -ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាប្រែសម្រួល AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងចំពោះភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថាការប្រែសម្រួលដោយស្វ័យប្រវត្តិនោះអាចមានកំហុសឬការខ្វះខាតបាន។ ឯកសារដើមក្នុងភាសាមាតុភូមិគួរត្រូវបានយកទៅពិចារណាជាតម្រូវការសំខាន់។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការប្រែសម្រួលដោយអ្នកជំនាញមនុស្សគឺត្រូវបានផ្ដល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសចាប់ពីការប្រើប្រាស់ការប្រែសម្រួលនេះឡើយ។ +**ការបដិសេធ**: +ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ឲ្យបានថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាមាតុភូមិគួរត្រូវបានគេយកជាជាតំណរ ម៉ោងសម្រាប់ព័ត៌មានសំខាន់ៗ គេណែនាំឲ្យប្រើការបកប្រែដោយអ្នកជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។ \ No newline at end of file diff --git a/translations/km/2-Regression/3-Linear/solution/notebook.ipynb b/translations/km/2-Regression/3-Linear/solution/notebook.ipynb index a81a7252ee..e21ef9a3a7 100644 --- a/translations/km/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/km/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ការធ្វើប្រតិកម្មរស្មី និងប៉ូលីណូម្យែលសម្រាប់ការកំណត់តម្លៃស្ពឺគ្រប់លក្ខណៈ - មេរៀនទី 3\n", + "## ការតម្រឹមបន្ទាត់ និងផលវិភាគពហុវិថីសម្រាប់តម្លៃទឹកដោះគោ - មេរៀនទី 3\n", "\n", - "ផ្ទុកបណ្ណាល័យនិងទិន្នន័យដែលត្រូវការ។ បម្លែងទិន្នន័យទៅជាតារាងដែលមានផ្នែកមួយនៃទិន្នន័យ៖\n", + "រុញបណ្ណាល័យដែលត្រូវការ និងកំពុងប្រើនូវឯកសារទិន្នន័យ។ បម្លែងទិន្នន័យទៅជា dataframe ដែលមានកំណត់ខ្លះនៃទិន្នន័យ៖\n", "\n", - "- តែចាប់យកស្ពឺដែលមានតម្លៃតាមប៊ែស៊ែលតែប៉ុណ្ណោះ \n", - "- បម្លែងកាលបរិច្ឆេទទៅជាខែ \n", - "- គណនាតម្លៃជាមធ្យមនៃតម្លៃខ្ពស់ និងទាប \n", - "- បម្លែងតម្លៃឲ្យបង្ហាញតម្លៃតាមបរិមាណប៊ែស៊ែល\n" + "- យកតែទឹកដោះគោដែលមានតម្លៃលក់តាមប៊ូស៊ែលតែប៉ុណ្ណោះ\n", + "- បម្លែងកាលបរិច្ឆេទទៅជាខែ\n", + "- គណនា​តម្លៃ​ឲ្យ​ជាជាក់ស្តែង​មធ្យម​នៃ​តម្លៃ​ខ្ពស់ និង​ទាប\n", + "- បម្លែងតម្លៃដើម្បីបញ្ចូលតម្លៃតាមបរិមាណប៊ូស៊ែល\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ប្លង់ចែកចាយរំឮកឲ្យយើងចាំថាយើងមានទិន្នន័យតែពីខែសីហារទៅដល់ខែធ្នូតែប៉ុណ្ណោះ។ យើងប្រហែលជាចាំបាច់ត្រូវការទិន្នន័យបន្ថែមដើម្បីអាចរើសសេចក្តីសន្និដ្ឋានក្នុងរបៀបបន្ទាត់បាន។\n" + "ផ្លុតចោលបង្ហាញយើងថាយើងមានទិន្នន័យខែត្រឹមតែពីខែសីហាររហូតដល់ខែធ្នូប៉ុណ្ណោះ។ យើងប្រហែលជាត្រូវការទិន្នន័យបន្ថែមទៀតដើម្បីអាចស្រាវជ្រាវផលិតផលបានយ៉ាងត្រួតត្រា។\n" ] }, { @@ -448,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "មកមើលថាតើមានការតភ្ជាប់គ្នាឬអត់:\n" + "មកពិនិត្យមើលថាតើមានទំនាក់ទំនងឬអត់៖\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ហាក់ដូចជាការតភ្ជាប់គ្នាមានតិចតួច ប៉ុន្តែមានសម្រង់ផ្សេងទៀតសំខាន់ជាងនេះ - ព្រោះចំណុចតម្លៃនៅក្នុងរូបភាពខាងលើមានក្រុមច្រើនផ្សេងគ្នា។ យើងចាំបាច់ត្រូវបង្កើតរូបភាពមួយដែលបង្ហាញពីប្រភេទផ្លែផលឪឡឹកផ្សេងៗ៖\n" + "ដូចជាការតភ្ជាប់គ្នាពិតប្រាកដមានតិចណាស់ ប៉ុន្តែក៏មានទំនាក់ទំនងសំខាន់បន្ថែមទៀតផង ព្រោះតម្លៃនៅក្នុងសម្រាំងខាងលើដូចជាមានក្រុមច្រើនចំនួនផ្សេងគ្នា។ យើងចង់បង្កើតសម្រាំងមួយដែលនឹងបង្ហាញប្រភេទផ្លែខ្ចប់ផ្សេងៗ:\n" ] }, { @@ -538,7 +538,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "សម្រាប់ពេលវេលានេះ មកផ្តោតលើកំណត់តែប្រភេទតែមួយគត់ - **ប្រភេទប៉ាយ**។\n" + "សម្រាប់ពេលនេះ យើងមកផ្តោតលើប្រភេទមួយតែប៉ុណ្ណោះ - **ប្រភេទប៉ាយ**។\n" ] }, { @@ -586,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ព្រីរេស៊ីយ៉ុងវែគ្គ\n", + "### អនុគមន៍រៀងរាល់បន្ទាត់\n", "\n", - "យើងនឹងប្រើ Scikit Learn ដើម្បីបណ្តុះម៉ូឌែលព្រីរេស៊ីយ៉ុងវែគ្គ៖\n" + "យើងនឹងប្រើ Scikit Learn ដើម្បីហ្វឹកហាត់ម៉ូដែលអនុគមន៍រៀងរាល់បន្ទាត់៖\n" ] }, { @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ចំនង់ជន្លង់នៃរបារ​អាចកំណត់បានពីមេគុណសមីការស្រប៖\n" + "ចំណេញប៉ារ៉ាលែលនៃខ្សែអាចកំណត់បានពីអនុបាគនៃការវិញ្ញាសាទ្រង់បូកដូចតទៅ៖\n" ] }, { @@ -693,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "យើងអាចប្រើម៉ូដែលដែលបានបណ្តុះបណ្តាលដើម្បីព្យាករណ៍តម្លៃបាន៖\n" + "យើងអាចប្រើម៉ូដែលដែលបានបណ្តុះបណ្តាលក្នុងការព្យាករណ៍តម្លៃៈ\n" ] }, { @@ -722,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### ប្រតិកម្មPolynomial\n", + "### ព្រីហ្សេស្យុងប៉ូលីណូមី얼\n", "\n", - "ម្តងម្កាលទំនាក់ទំនងរវាងលក្ខណៈពិសេស និងលទ្ធផលគឺមិនមែនជាកំណត់រចនាសម្ព័ន្ធបន្ទាត់ទេ។ ឧទាហរណ៍ តម្លៃដូងអាចខ្ពស់នៅរដូវរងារ (ខែ=1,2) បន្ទាប់មកធ្លាក់ចុះនៅរដូវក្តៅ (ខែ=5-7) ហើយបន្ទាប់មកឡើងវិញ។ ការប្រែប្រួលបន្ទាត់មិនអាចរកបានទំនាក់ទំនងនេះយ៉ាងត្រឺតព្រាន់។\n", + "មួយចំនួន ពីព្រោះទំនាក់ទំនងរវាងលក្ខណៈពិសេស និងលទ្ធផល គឺជាបែបអត់បូណ៌។ ឧទាហរណ៍ តម្លៃកំពុងមានការឡើងខ្ពស់ក្នុងរដូវរងារប្រោះខែ(1,2) បន្ទាប់មកធ្លាក់ចុះក្នុងរដូវក្ដៅ(ខែ5-7) ហើយបន្ទាប់មកឡើងវិញ។ ព្រីហ្សេស្យុងបន្ទាត់មិនអាចរកបានទំនាក់ទំនងនេះយ៉ាងត្រឹមត្រូវទេ។\n", "\n", - "នៅក្នុងករណីនេះ យើងអាចពិចារណាបន្ថែមលក្ខណៈពិសេសបន្ថែម។ វិធីសាមញ្ញគឺប្រើរូបមន្តប៉ូលីណូមីពីលក្ខណៈបញ្ចូល ដែលនឹងនាំឱ្យមាន **ប្រតិកម្មPolynomial**។ នៅក្នុង Scikit Learn យើងអាចគណនា​លក្ខណៈប៉ូលីណូមីជាមុនដោយស្វ័យប្រវត្តិនៅតាម pipeline: \n" + "នៅក្នុងករណីនេះ យើងអាចពិចារណាបន្ថែមលក្ខណៈពិសេសបន្ថែម។ វិធីសាមញ្ញគឺប្រើពូលីណូមីលពីលក្ខណៈបញ្ចូល ដែលនឹងនាំឱ្យមាន **ព្រីហ្សេស្យុងប៉ូលីណូមី얼**។ ក្នុង Scikit Learn យើងអាចគណនាពូលីណូមីលស្វ័យប្រវត្តិដោយប្រើបាព្លាយន៍: \n" ] }, { @@ -781,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### ប្រភេទការអ៊ិនគូដ\n", + "### ចំលើយកូដផ្សេងៗ\n", "\n", - "នៅក្នុងពិភពលោកដ៏ល្អឥតខ្ចោះ យើងចង់អាចរំពឹងទុកតម្លៃសម្រាប់ប្រភេទផ្លែទំពាំងបាយជូផ្សេងៗដោយប្រើម៉ូដែលដដែល។ ដើម្បីគិតគូរប្រភេទ យើងត្រូវការបម្លែងវាទៅជាទម្រង់ខ្នាតលេខ ឬ **អ៊ិនគូដ**។ មានវិធីជាច្រើនដែលយើងអាចធ្វើបាន៖\n", + "នៅក្នុងពិភពដែលល្អបំផុត យើងចង់អាចទាយថ្លៃសម្រាប់ចំលើយកូដត pumpkin ផ្សេងៗដោយប្រើម៉ូដែលដដែល។ ដើម្បីយកចំលើយកូដទៅគិត គឺយើងត្រូវបម្លែងវាទៅជាទម្រង់គណ Orchardic ឬ **encode**។ មានវិធីជាច្រើនដែលយើងអាចធ្វើបាន៖\n", "\n", - "* ការអ៊ិនគូដខ្នាតលេខសាមញ្ញ ដែលនឹងបង្កើតតារាងនៃប្រភេទផ្សេងៗ ហើយបន្ទាប់មកជំនួសឈ្មោះប្រភេទដោយដាក់លេខលំដាប់ក្នុងតារាងនោះ។ នេះមិនមែនជាគំនិតល្អសម្រាប់ការត្រួតពិនិត្យបែបរូបមន្តស្រឡាញ់ សម្រាប់ linear regression ទេ ព្រោះ linear regression ស្រមៃថា តម្លៃខ្នាតលេខនៃលេខលំដាប់នោះមានទំនាក់ទំនងជាមួយតម្លៃតាមលេខ ហើយតម្លៃខ្នាតលេខនោះនឹងមិនបានសម្របសម្រួលជាលេខជាមួយតម្លៃតម្លៃទេ។\n", - "* ការអ៊ិនគូដOne-hot ដែលនឹងជំនួសជួរឈរប្រភេទ `Variety` ជាជួរឈរពីរពណ៌ 4 មក 4 ជួរឈរ ភាគតែមួយសម្រាប់ប្រភេទនីមួយៗ ដែលនឹងមានលេខ 1 ប្រសិនបើជួរដេកនោះជាប្រភេទដែលបានកំណត់ ហើយ 0 ករណីផ្សេងទៀត។\n", + "* ការចំលើយកូដគណ Orchardic ដ៏សាមញ្ញ ដែលនឹងបង្កើតតារាងនៃចំលើយកូដផ្សេងៗ ហើយបន្ទាប់មកជំនួសឈ្មោះចំលើយកូដនោះដោយកន្លែងបន្ទាត់នៅក្នុងតារាងនោះ។ នេះមិនមែនជាគំនិតល្អបំផុតសម្រាប់វិធីសាស្រ្តរេហ្គ្រីស្យុងបន្ទាត់ទេ ពីព្រោះវិធីសាស្រ្តនោះគិតតម្លៃគណ Orchardic នៃកន្លែងបន្ទាត់ ដោយតម្លៃគណ Orchardic នោះមិនជាទំនាក់ទំនងគ្នាទៅនឹងតម្លៃតម្លៃនេះនោះទេ។\n", + "* ការចំលើយកូដមួយ-កំពូល (one-hot encoding) ដែលនឹងជំនួសជួរឈរឈ្មោះ `Variety` ដោយជួរឈរ ៤ ទៀត ផ្សេងៗគ្នា ដែលមួយសម្រាប់ចំលើយកូដនីមួយៗ ហើយនឹងផ្ទុកលេខ ១ ប្រសិនបើជួរបង្ហាញពីចំលើយនោះ និង ០ ផ្សេងទៀត។\n", "\n", - "កូដខាងក្រោមបង្ហាញពីរបៀបដែលយើងអាចអ៊ិនគូដដែលមានទម្រង់ one-hot សម្រាប់ប្រភេទ៖\n" + "កូដខាងក្រោមបង្ហាញពីរបៀបដែលយើងអាចធ្វើការចំលើយកូដមួយ-កំពូលសម្រាប់ចំលើយកូដមួយបាន៖\n" ] }, { @@ -944,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### រេស៊ែរ​ស្យុង​រېខប្រេស​ស្យុង​លើ​ប្រភេទ\n", + "### ការវិភាគបន្ទាត់លើចំរើន\n", "\n", - "ឥឡូវនេះ​យើង​នឹង​ប្រើ​កូដ​ដូច​ខាង​លើ ប៉ុន្តែ​មិន​ប្រើ `DayOfYear` ទេ ប៉ុន្តែ​យើង​នឹង​ប្រើ​ប្រភេទ​ដែល​បាន​កូដ​ជា​មួយ​ភាគទាន​មួយ:\n" + "ឥឡូវនេះយើង​នឹង​ប្រើ​កូដ​ដដែល​ដូច​ខាង​លើ ប៉ុន្តែ​ប្ដូរ​ពី `DayOfYear` ទៅ​ប្រើ​ចំរើន​ដែល​បាន encode មួយ-កម្រិត​ជា​អាំង​ទឺរ‌បែបមួយ:\n" ] }, { @@ -994,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "យើងអាចសាកល្បងប្រើលក្ខណៈពិសេសផ្សេងទៀតដោយវិធីដូចគ្នានេះ ហើយបញ្ចូលវាជាមួយលក្ខណៈសារពើភ័ណ្ឌជាឈ្មេាះ គឺដូចជា `Month` ឬ `DayOfYear`:\n" + "យើងក៏អាចព្យាយាមប្រើលក្ខណៈផ្សេងទៀតក្នុងវិធីដូចគ្នាបែបនេះ រួមបញ្ចូលជាមួយលក្ខណៈគណនាតូចៗដូចជា `Month` ឬ `DayOfYear`:\n" ] }, { @@ -1025,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### បន្ទាត់ពហុប៉ូលីណូមីយ៉ាល់\n", + "### ការប្រូកទំហំប៉ូលីណូមីយ៉ាល\n", "\n", - "បន្ទាត់ពហុប៉ូលីណូមីយ៉ាល់អាចត្រូវបានប្រើជាមួយលក្ខណៈប្រភេទដែលបានបម្លែងជារូបមន្តមួយ-កម្រិត។ កូដសម្រាប់បណ្តុះបណ្តាលបន្ទាត់ពហុប៉ូលីណូមីយ៉ាល់គឺស្អិតដូចជាដែលយើងបានឃើញខាងលើ។\n" + "ការប្រូកទំហំប៉ូលីណូមីយ៉ាលអាចត្រូវបានប្រើជាមួយលក្ខណៈប្រភេទដែលត្រូវបានកូដកម្មអ៊ុតទៅតែមួយក៏បាន។ កូដសម្រាប់បណ្តុះបណ្តាលការប្រូកទំហំប៉ូលីណូមីយ៉ាលវានឹងស្រដៀងគ្នានឹងអ្វីដែលយើងបានឃើញខាងលើ។\n" ] }, { @@ -1074,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n\n\n**ការបដិសេធ**៖\nឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលពួកយើងខិតខំព្យាយាមឱ្យបានត្រឹមត្រូវ សូមជ្រាបថា ការបកប្រែដោយម៉ាស៊ីនអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាបុរាណគួរត្រូវបានចាត់ទុកជាទិន្នន័យឯកសារដែលមានសុពលភាពខ្ពស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សដែលជា​អ្នកជំនាញ។ ពួកយើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសប្លែកណាមួយដែលមានចេញពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n\n" + "---\n\n\n**ការបដិសេធ**៖ \nឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះបីយើងខិតខំស្វែងរកភាពត្រឹមត្រូវ ក៏សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងខ្លួនវាអាចមានកំហុស ឬការមិនត្រឹមត្រូវខ្លះៗបាន។ ឯកសារដើមនៅក្នុងភាសារបស់វាគួរត្រូវបានគេយកទៅជាភាពត្រឹមត្រូវនាពេលបុរាណ។ សម្រាប់ព័ត៌មានសំខាន់ៗ ស លោកអ្នកគួរប្រើការបកប្រែដោយមនុស្សជំនាញផ្ទាល់។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការប្រាស្រ័យមិនត្រឹមត្រូវណាមួយ ដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះទេ។\n\n" ] } ], From 397f5bf31c2a9cdfbc84d616b1369d4a44e4371b Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:45:57 +0000 Subject: [PATCH 11/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/id/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 88 +++--- .../id/2-Regression/3-Linear/README.md | 268 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 65 ++--- translations/ms/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 100 +++---- .../ms/2-Regression/3-Linear/README.md | 256 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 61 ++-- translations/tl/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 106 +++---- .../tl/2-Regression/3-Linear/README.md | 254 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 67 ++--- 12 files changed, 701 insertions(+), 606 deletions(-) diff --git a/translations/id/.co-op-translator.json b/translations/id/.co-op-translator.json index d71c7d3e5e..fe9b24bd00 100644 --- a/translations/id/.co-op-translator.json +++ b/translations/id/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "id" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T19:36:18+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:43:02+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "id" }, @@ -90,8 +90,8 @@ "language_code": "id" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:39:48+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:42:37+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "id" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "id" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:40:57+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "id" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T18:47:51+00:00", diff --git a/translations/id/1-Introduction/4-techniques-of-ML/README.md b/translations/id/1-Introduction/4-techniques-of-ML/README.md index 3501c8705d..a527dc2f13 100644 --- a/translations/id/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/id/1-Introduction/4-techniques-of-ML/README.md @@ -1,11 +1,11 @@ # Teknik Pembelajaran Mesin -Proses membangun, menggunakan, dan memelihara model pembelajaran mesin serta data yang digunakan sangat berbeda dari banyak alur kerja pengembangan lainnya. Dalam pelajaran ini, kita akan mengungkap proses tersebut dan merangkum teknik utama yang perlu Anda ketahui. Anda akan: +Proses membangun, menggunakan, dan memelihara model pembelajaran mesin serta data yang mereka gunakan adalah proses yang sangat berbeda dari banyak alur kerja pengembangan lainnya. Dalam pelajaran ini, kita akan mengungkap prosesnya, dan menguraikan teknik utama yang perlu Anda ketahui. Anda akan: - Memahami proses yang mendasari pembelajaran mesin pada tingkat tinggi. -- Mengeksplorasi konsep dasar seperti 'model', 'prediksi', dan 'data pelatihan'. +- Menjelajahi konsep dasar seperti 'model', 'prediksi', dan 'data pelatihan'. -## [Kuis sebelum pelajaran](https://ff-quizzes.netlify.app/en/ml/) +## [Kuis pra-ceramah](https://ff-quizzes.netlify.app/en/ml/) [![ML untuk pemula - Teknik Pembelajaran Mesin](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML untuk pemula - Teknik Pembelajaran Mesin") @@ -13,105 +13,105 @@ Proses membangun, menggunakan, dan memelihara model pembelajaran mesin serta dat ## Pendahuluan -Secara umum, seni menciptakan proses pembelajaran mesin (ML) terdiri dari beberapa langkah: +Pada tingkat tinggi, keterampilan membuat proses pembelajaran mesin (ML) terdiri dari beberapa langkah: -1. **Tentukan pertanyaan**. Sebagian besar proses ML dimulai dengan mengajukan pertanyaan yang tidak dapat dijawab oleh program bersyarat sederhana atau mesin berbasis aturan. Pertanyaan ini sering kali berkisar pada prediksi berdasarkan kumpulan data. -2. **Kumpulkan dan siapkan data**. Untuk dapat menjawab pertanyaan Anda, Anda memerlukan data. Kualitas dan, terkadang, kuantitas data Anda akan menentukan seberapa baik Anda dapat menjawab pertanyaan awal. Memvisualisasikan data adalah aspek penting dari fase ini. Fase ini juga mencakup pembagian data menjadi kelompok pelatihan dan pengujian untuk membangun model. -3. **Pilih metode pelatihan**. Bergantung pada pertanyaan Anda dan sifat data Anda, Anda perlu memilih cara melatih model agar dapat mencerminkan data Anda dengan baik dan membuat prediksi yang akurat. Bagian dari proses ML ini membutuhkan keahlian khusus dan, sering kali, sejumlah besar eksperimen. -4. **Latih model**. Dengan menggunakan data pelatihan Anda, Anda akan menggunakan berbagai algoritma untuk melatih model agar mengenali pola dalam data. Model mungkin memanfaatkan bobot internal yang dapat disesuaikan untuk memprioritaskan bagian tertentu dari data dibandingkan yang lain guna membangun model yang lebih baik. -5. **Evaluasi model**. Anda menggunakan data yang belum pernah dilihat sebelumnya (data pengujian Anda) dari kumpulan yang dikumpulkan untuk melihat bagaimana kinerja model. -6. **Penyetelan parameter**. Berdasarkan kinerja model Anda, Anda dapat mengulangi proses menggunakan parameter atau variabel yang berbeda yang mengontrol perilaku algoritma yang digunakan untuk melatih model. +1. **Tentukan pertanyaannya**. Sebagian besar proses ML dimulai dengan mengajukan pertanyaan yang tidak dapat dijawab oleh program kondisional sederhana atau mesin berbasis aturan. Pertanyaan-pertanyaan ini sering kali berkisar pada prediksi berdasarkan kumpulan data. +2. **Kumpulkan dan persiapkan data**. Untuk dapat menjawab pertanyaan Anda, Anda membutuhkan data. Kualitas dan, terkadang, kuantitas data Anda akan menentukan seberapa baik Anda dapat menjawab pertanyaan awal Anda. Visualisasi data adalah aspek penting dalam fase ini. Fase ini juga mencakup pembagian data menjadi kelompok pelatihan dan pengujian untuk membangun model. +3. **Pilih metode pelatihan**. Tergantung pada pertanyaan Anda dan sifat data Anda, Anda perlu memilih bagaimana Anda ingin melatih model agar paling merefleksikan data Anda dan membuat prediksi yang akurat terhadapnya. Ini adalah bagian dari proses ML Anda yang membutuhkan keahlian khusus dan, sering kali, sejumlah besar eksperimen. +4. **Latih model**. Dengan menggunakan data pelatihan Anda, Anda akan menggunakan berbagai algoritma untuk melatih model agar mengenali pola dalam data. Model mungkin memanfaatkan bobot internal yang dapat disesuaikan untuk memprioritaskan bagian tertentu dari data dibandingkan bagian lainnya guna membangun model yang lebih baik. +5. **Evaluasi model**. Anda menggunakan data yang belum pernah dilihat sebelumnya (data pengujian Anda) dari kumpulan data yang dikumpulkan untuk melihat bagaimana kinerja model. +6. **Penyetelan parameter**. Berdasarkan kinerja model Anda, Anda dapat mengulangi proses dengan menggunakan parameter berbeda, atau variabel, yang mengontrol perilaku algoritma yang digunakan untuk melatih model. 7. **Prediksi**. Gunakan input baru untuk menguji akurasi model Anda. -## Pertanyaan yang harus diajukan +## Pertanyaan apa yang harus diajukan -Komputer sangat mahir dalam menemukan pola tersembunyi dalam data. Kemampuan ini sangat membantu bagi peneliti yang memiliki pertanyaan tentang suatu domain tertentu yang tidak dapat dengan mudah dijawab dengan membuat mesin berbasis aturan bersyarat. Dalam tugas aktuaria, misalnya, seorang ilmuwan data mungkin dapat membangun aturan buatan seputar tingkat kematian perokok vs non-perokok. +Komputer sangat terampil dalam menemukan pola tersembunyi dalam data. Manfaat ini sangat membantu para peneliti yang memiliki pertanyaan tentang domain tertentu yang tidak dapat dengan mudah dijawab dengan membuat mesin aturan berbasis kondisi. Misalnya, dalam tugas aktuaria, seorang ilmuwan data mungkin dapat membuat aturan buatan tangan terkait kematian perokok vs bukan perokok. -Namun, ketika banyak variabel lain dimasukkan ke dalam persamaan, model ML mungkin lebih efisien untuk memprediksi tingkat kematian di masa depan berdasarkan riwayat kesehatan sebelumnya. Contoh yang lebih ceria mungkin adalah membuat prediksi cuaca untuk bulan April di lokasi tertentu berdasarkan data yang mencakup garis lintang, garis bujur, perubahan iklim, kedekatan dengan laut, pola aliran jet, dan lainnya. +Namun, saat banyak variabel lain dimasukkan ke dalam persamaan, model ML mungkin terbukti lebih efisien untuk memprediksi tingkat kematian di masa depan berdasarkan riwayat kesehatan masa lalu. Contoh yang lebih menyenangkan bisa berupa membuat prediksi cuaca untuk bulan April di suatu lokasi berdasarkan data yang mencakup lintang, bujur, perubahan iklim, kedekatan dengan laut, pola aliran jet, dan lainnya. -✅ [Slide presentasi ini](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tentang model cuaca menawarkan perspektif historis tentang penggunaan ML dalam analisis cuaca. +✅ [Slide deck ini](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tentang model cuaca menawarkan perspektif historis penggunaan ML dalam analisis cuaca. ## Tugas sebelum membangun -Sebelum mulai membangun model Anda, ada beberapa tugas yang perlu Anda selesaikan. Untuk menguji pertanyaan Anda dan membentuk hipotesis berdasarkan prediksi model, Anda perlu mengidentifikasi dan mengonfigurasi beberapa elemen. +Sebelum mulai membangun model Anda, ada beberapa tugas yang harus diselesaikan. Untuk menguji pertanyaan Anda dan membentuk hipotesis berdasarkan prediksi model, Anda perlu mengidentifikasi dan mengonfigurasi beberapa elemen. ### Data -Untuk dapat menjawab pertanyaan Anda dengan tingkat kepastian apa pun, Anda memerlukan sejumlah data yang cukup dan jenis data yang tepat. Ada dua hal yang perlu Anda lakukan pada tahap ini: +Untuk dapat menjawab pertanyaan Anda dengan kepastian tertentu, Anda perlu sejumlah data yang cukup dan tipe yang tepat. Ada dua hal yang perlu Anda lakukan pada tahap ini: -- **Kumpulkan data**. Dengan mengingat pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data Anda dengan hati-hati. Perhatikan sumber data ini, bias bawaan yang mungkin dimilikinya, dan dokumentasikan asalnya. -- **Siapkan data**. Ada beberapa langkah dalam proses persiapan data. Anda mungkin perlu menggabungkan data dan menormalkannya jika berasal dari berbagai sumber. Anda dapat meningkatkan kualitas dan kuantitas data melalui berbagai metode seperti mengonversi string menjadi angka (seperti yang kita lakukan dalam [Clustering](../../5-Clustering/1-Visualize/README.md)). Anda juga dapat menghasilkan data baru berdasarkan data asli (seperti yang kita lakukan dalam [Classification](../../4-Classification/1-Introduction/README.md)). Anda dapat membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Web App](../../3-Web-App/README.md)). Akhirnya, Anda mungkin juga perlu mengacak dan mengacaknya, tergantung pada teknik pelatihan Anda. +- **Kumpulkan data**. Dengan memperhatikan pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data Anda dengan hati-hati. Sadari sumber data ini, bias bawaan yang mungkin ada, dan dokumentasikan asal-usulnya. +- **Persiapkan data**. Ada beberapa langkah dalam proses persiapan data. Anda mungkin perlu menggabungkan data dan menormalkannya jika berasal dari sumber yang beragam. Anda dapat meningkatkan kualitas dan kuantitas data melalui berbagai metode seperti mengonversi string menjadi angka (seperti yang kita lakukan di [Clustering](../../5-Clustering/1-Visualize/README.md)). Anda juga dapat menghasilkan data baru berdasarkan data asli (seperti yang kita lakukan di [Classification](../../4-Classification/1-Introduction/README.md)). Anda dapat membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Web App](../../3-Web-App/README.md)). Akhirnya, Anda mungkin juga perlu mengacak dan mengocoknya, tergantung pada teknik pelatihan Anda. -✅ Setelah mengumpulkan dan memproses data Anda, luangkan waktu untuk melihat apakah bentuknya memungkinkan Anda menjawab pertanyaan yang dimaksud. Mungkin saja data tidak akan bekerja dengan baik dalam tugas yang diberikan, seperti yang kita temukan dalam pelajaran [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ Setelah mengumpulkan dan memproses data, luangkan waktu untuk melihat apakah bentuk data tersebut memungkinkan Anda menjawab pertanyaan yang dimaksud. Bisa jadi data tersebut tidak berkinerja baik dalam tugas yang diberikan, seperti yang kita temui dalam pelajaran [Clustering](../../5-Clustering/1-Visualize/README.md)! ### Fitur dan Target -[Fitur](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah properti yang dapat diukur dari data Anda. Dalam banyak kumpulan data, fitur diekspresikan sebagai judul kolom seperti 'tanggal', 'ukuran', atau 'warna'. Variabel fitur Anda, biasanya direpresentasikan sebagai `X` dalam kode, mewakili variabel input yang akan digunakan untuk melatih model. +[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah properti yang dapat diukur dari data Anda. Dalam banyak dataset, ini diekspresikan sebagai judul kolom seperti 'tanggal', 'ukuran', atau 'warna'. Variabel fitur Anda, biasanya direpresentasikan sebagai `X` dalam kode, mewakili variabel input yang akan digunakan untuk melatih model. -Target adalah hal yang Anda coba prediksi. Target, biasanya direpresentasikan sebagai `y` dalam kode, mewakili jawaban atas pertanyaan yang Anda coba ajukan dari data Anda: pada bulan Desember, **warna** labu mana yang akan paling murah? Di San Francisco, lingkungan mana yang akan memiliki **harga** real estat terbaik? Kadang-kadang target juga disebut sebagai atribut label. +Target adalah hal yang Anda coba prediksi. Target, biasanya direpresentasikan sebagai `y` dalam kode, mewakili jawaban atas pertanyaan yang Anda ajukan terhadap data Anda: di bulan Desember, labu dengan **warna** apa yang akan termurah? di San Francisco, lingkungan mana yang memiliki **harga** real estate terbaik? Kadang-kadang target juga disebut atribut label. ### Memilih variabel fitur Anda -🎓 **Pemilihan Fitur dan Ekstraksi Fitur** Bagaimana Anda tahu variabel mana yang harus dipilih saat membangun model? Anda mungkin akan melalui proses pemilihan fitur atau ekstraksi fitur untuk memilih variabel yang tepat untuk model yang paling berkinerja. Namun, keduanya tidak sama: "Ekstraksi fitur menciptakan fitur baru dari fungsi fitur asli, sedangkan pemilihan fitur mengembalikan subset dari fitur tersebut." ([sumber](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Seleksi Fitur dan Ekstraksi Fitur** Bagaimana Anda tahu variabel mana yang dipilih saat membangun model? Anda mungkin akan melalui proses seleksi fitur atau ekstraksi fitur untuk memilih variabel yang tepat agar model paling optimal. Namun, keduanya tidak sama: "Ekstraksi fitur membuat fitur baru dari fungsi fitur asli, sedangkan seleksi fitur mengembalikan subset dari fitur tersebut." ([sumber](https://wikipedia.org/wiki/Feature_selection)) ### Visualisasikan data Anda -Aspek penting dari alat ilmuwan data adalah kemampuan untuk memvisualisasikan data menggunakan beberapa pustaka yang sangat baik seperti Seaborn atau MatPlotLib. Mewakili data Anda secara visual mungkin memungkinkan Anda menemukan korelasi tersembunyi yang dapat Anda manfaatkan. Visualisasi Anda juga dapat membantu Anda menemukan bias atau data yang tidak seimbang (seperti yang kita temukan dalam [Classification](../../4-Classification/2-Classifiers-1/README.md)). +Aspek penting dari toolkit ilmuwan data adalah kemampuan untuk memvisualisasikan data menggunakan beberapa perpustakaan hebat seperti Seaborn atau MatPlotLib. Mewakili data Anda secara visual dapat memungkinkan Anda menemukan korelasi tersembunyi yang dapat Anda manfaatkan. Visualisasi Anda juga bisa membantu mengungkap bias atau data yang tidak seimbang (seperti yang kita temukan dalam [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Pisahkan dataset Anda +### Pecah dataset Anda -Sebelum pelatihan, Anda perlu membagi dataset Anda menjadi dua atau lebih bagian dengan ukuran yang tidak sama yang tetap mewakili data dengan baik. +Sebelum pelatihan, Anda perlu membagi dataset menjadi dua bagian atau lebih yang ukurannya tidak sama namun tetap mewakili data dengan baik. - **Pelatihan**. Bagian dataset ini digunakan untuk melatih model Anda. Set ini merupakan mayoritas dari dataset asli. -- **Pengujian**. Dataset pengujian adalah kelompok data independen, sering kali dikumpulkan dari data asli, yang Anda gunakan untuk mengonfirmasi kinerja model yang dibangun. -- **Validasi**. Set validasi adalah kelompok contoh independen yang lebih kecil yang Anda gunakan untuk menyetel hiperparameter atau arsitektur model untuk meningkatkan model. Bergantung pada ukuran data Anda dan pertanyaan yang Anda ajukan, Anda mungkin tidak perlu membangun set ketiga ini (seperti yang kita catat dalam [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Pengujian**. Dataset pengujian adalah kelompok data independen, sering diambil dari data asli, yang Anda gunakan untuk mengonfirmasi kinerja model yang dibangun. +- **Validasi**. Set validasi adalah kelompok contoh independen yang lebih kecil yang Anda gunakan untuk menyetel hiperparameter model, atau arsitektur, guna meningkatkan model. Tergantung ukuran data dan pertanyaan Anda, Anda mungkin tidak perlu membuat set ketiga ini (seperti yang kami catat di [Peramalan Deret Waktu](../../7-TimeSeries/1-Introduction/README.md)). ## Membangun model -Dengan menggunakan data pelatihan Anda, tujuan Anda adalah membangun model, atau representasi statistik dari data Anda, menggunakan berbagai algoritma untuk **melatih** model tersebut. Melatih model memaparkannya pada data dan memungkinkan model membuat asumsi tentang pola yang ditemukan, memvalidasi, dan menerima atau menolak. +Menggunakan data pelatihan Anda, tujuan Anda adalah membangun model, atau representasi statistik dari data Anda, menggunakan berbagai algoritma untuk **melatih**nya. Melatih model mengeksposnya pada data dan memungkinkan model membuat asumsi tentang pola yang disadari, divalidasi, kemudian diterima atau ditolak. ### Tentukan metode pelatihan -Bergantung pada pertanyaan Anda dan sifat data Anda, Anda akan memilih metode untuk melatihnya. Dengan menjelajahi [dokumentasi Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kita gunakan dalam kursus ini - Anda dapat mengeksplorasi banyak cara untuk melatih model. Bergantung pada pengalaman Anda, Anda mungkin harus mencoba beberapa metode berbeda untuk membangun model terbaik. Anda kemungkinan akan melalui proses di mana ilmuwan data mengevaluasi kinerja model dengan memberinya data yang belum pernah dilihat sebelumnya, memeriksa akurasi, bias, dan masalah kualitas lainnya, serta memilih metode pelatihan yang paling sesuai untuk tugas yang diberikan. +Tergantung pada pertanyaan dan sifat data Anda, Anda akan memilih metode untuk melatihnya. Dengan mempelajari dokumentasi [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kita gunakan dalam kursus ini - Anda dapat menjelajahi banyak cara melatih model. Tergantung pengalaman Anda, Anda mungkin harus mencoba beberapa metode berbeda untuk membangun model terbaik. Anda kemungkinan akan melewati proses di mana ilmuwan data mengevaluasi kinerja model dengan memberinya data yang belum pernah dilihat, memeriksa akurasi, bias, dan masalah penurunan kualitas lainnya, serta memilih metode pelatihan yang paling tepat untuk tugas tersebut. ### Latih model -Dengan data pelatihan Anda, Anda siap untuk 'memasangkannya' untuk membuat model. Anda akan melihat bahwa dalam banyak pustaka ML, Anda akan menemukan kode 'model.fit' - pada saat inilah Anda mengirimkan variabel fitur Anda sebagai array nilai (biasanya 'X') dan variabel target (biasanya 'y'). +Dengan data pelatihan Anda, Anda siap untuk 'fit' guna membuat model. Anda akan melihat bahwa dalam banyak perpustakaan ML terdapat kode 'model.fit' - saat itulah Anda mengirimkan variabel fitur sebagai array nilai (biasanya 'X') dan variabel target (biasanya 'y'). ### Evaluasi model -Setelah proses pelatihan selesai (dapat memakan waktu banyak iterasi, atau 'epoch', untuk melatih model besar), Anda akan dapat mengevaluasi kualitas model dengan menggunakan data pengujian untuk mengukur kinerjanya. Data ini adalah subset dari data asli yang belum pernah dianalisis oleh model sebelumnya. Anda dapat mencetak tabel metrik tentang kualitas model Anda. +Setelah proses pelatihan selesai (bisa memakan banyak iterasi, atau 'epoch', untuk melatih model besar), Anda bisa mengevaluasi kualitas model dengan menggunakan data pengujian untuk mengukur kinerjanya. Data ini adalah subset dari data asli yang belum pernah dianalisis sebelumnya oleh model. Anda dapat mencetak tabel metrik tentang kualitas model Anda. -🎓 **Pemasangan model** +🎓 **Pemodelan fitting** -Dalam konteks pembelajaran mesin, pemasangan model mengacu pada akurasi fungsi dasar model saat mencoba menganalisis data yang tidak dikenalnya. +Dalam konteks pembelajaran mesin, pemodelan fitting mengacu pada akurasi fungsi dasar model saat mencoba menganalisis data yang belum dikenalinya. -🎓 **Underfitting** dan **overfitting** adalah masalah umum yang menurunkan kualitas model, karena model tidak cocok dengan baik atau terlalu cocok. Hal ini menyebabkan model membuat prediksi yang terlalu selaras atau terlalu longgar dengan data pelatihannya. Model yang terlalu cocok memprediksi data pelatihan terlalu baik karena telah mempelajari detail dan kebisingan data terlalu baik. Model yang kurang cocok tidak akurat karena tidak dapat menganalisis data pelatihannya maupun data yang belum pernah 'dilihat' dengan akurat. +🎓 **Underfitting** dan **overfitting** adalah masalah umum yang menurunkan kualitas model, karena model fittingnya terlalu buruk atau terlalu baik. Ini menyebabkan model membuat prediksi yang terlalu dekat atau terlalu longgar dengan data pelatihannya. Model overfit memprediksi data pelatihan terlalu baik karena sudah mempelajari detail dan noise data dengan sangat baik. Model underfit tidak akurat karena tidak dapat menganalisis data pelatihan maupun data yang belum pernah 'dilihat' dengan tepat. -![model overfitting](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![model overfitting](../../../../translated_images/id/overfitting.1c132d92bfd93cb6.webp) > Infografis oleh [Jen Looper](https://twitter.com/jenlooper) ## Penyetelan parameter -Setelah pelatihan awal Anda selesai, amati kualitas model dan pertimbangkan untuk meningkatkannya dengan menyetel 'hiperparameter'-nya. Baca lebih lanjut tentang proses ini [dalam dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Setelah pelatihan awal selesai, amati kualitas model dan pertimbangkan meningkatkan dengan mengubah 'hiperparameter'. Baca lebih lanjut tentang proses ini [di dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Prediksi -Ini adalah momen di mana Anda dapat menggunakan data yang benar-benar baru untuk menguji akurasi model Anda. Dalam pengaturan ML 'terapan', di mana Anda membangun aset web untuk menggunakan model dalam produksi, proses ini mungkin melibatkan pengumpulan input pengguna (misalnya, menekan tombol) untuk menetapkan variabel dan mengirimkannya ke model untuk inferensi atau evaluasi. +Ini adalah momen ketika Anda dapat menggunakan data baru sepenuhnya untuk menguji akurasi model Anda. Dalam pengaturan ML 'terapan', di mana Anda membangun aset web untuk menggunakan model dalam produksi, proses ini mungkin melibatkan pengambilan input pengguna (misalnya menekan tombol) untuk mengatur variabel dan mengirimkannya ke model untuk inferensi, atau evaluasi. -Dalam pelajaran ini, Anda akan menemukan cara menggunakan langkah-langkah ini untuk mempersiapkan, membangun, menguji, mengevaluasi, dan memprediksi - semua gerakan seorang ilmuwan data dan lebih banyak lagi, saat Anda maju dalam perjalanan Anda untuk menjadi seorang insinyur ML 'full stack'. +Dalam pelajaran-pelajaran ini, Anda akan menemukan cara menggunakan langkah-langkah ini untuk menyiapkan, membangun, menguji, mengevaluasi, dan memprediksi — semua gerakan seorang ilmuwan data dan lebih banyak lagi, seiring kemajuan Anda menjadi insinyur ML 'full stack'. --- ## 🚀Tantangan -Buat diagram alur yang mencerminkan langkah-langkah seorang praktisi ML. Di mana Anda melihat diri Anda saat ini dalam proses tersebut? Di mana Anda memprediksi akan menemukan kesulitan? Apa yang tampaknya mudah bagi Anda? +Gambarlah diagram alir yang mencerminkan langkah-langkah seorang praktisi ML. Di mana Anda melihat diri Anda sekarang dalam proses ini? Di mana Anda memprediksi akan menghadapi kesulitan? Apa yang terasa mudah bagi Anda? -## [Kuis setelah pelajaran](https://ff-quizzes.netlify.app/en/ml/) +## [Kuis pasca-ceramah](https://ff-quizzes.netlify.app/en/ml/) -## Tinjauan & Studi Mandiri +## Ulasan & Studi Mandiri -Cari wawancara online dengan ilmuwan data yang membahas pekerjaan harian mereka. Berikut adalah [salah satunya](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Cari wawancara online dengan ilmuwan data yang membahas pekerjaan sehari-hari mereka. Berikut [salah satunya](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Tugas @@ -119,5 +119,7 @@ Cari wawancara online dengan ilmuwan data yang membahas pekerjaan harian mereka. --- + **Penafian**: -Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau kesalahan tafsir yang timbul dari penggunaan terjemahan ini. + \ No newline at end of file diff --git a/translations/id/2-Regression/3-Linear/README.md b/translations/id/2-Regression/3-Linear/README.md index 4c6559fd84..82aff0b67e 100644 --- a/translations/id/2-Regression/3-Linear/README.md +++ b/translations/id/2-Regression/3-Linear/README.md @@ -1,138 +1,137 @@ -# Bangun model regresi menggunakan Scikit-learn: regresi dengan empat cara +# Membangun model regresi menggunakan Scikit-learn: regresi empat cara ## Catatan Pemula -Regresi linier digunakan ketika kita ingin memprediksi **nilai numerik** (misalnya, harga rumah, suhu, atau penjualan). +Regresi linier digunakan ketika kita ingin memprediksi **nilai numerik** (misalnya, harga rumah, suhu, atau penjualan). Ini bekerja dengan menemukan garis lurus yang paling mewakili hubungan antara fitur input dan output. -Dalam pelajaran ini, kita fokus pada pemahaman konsep sebelum mengeksplorasi teknik regresi yang lebih maju. -![Linear vs polynomial regression infographic](../../../../translated_images/id/linear-polynomial.5523c7cb6576ccab.webp) +Dalam pelajaran ini, kita fokus pada memahami konsep sebelum menjelajahi teknik regresi yang lebih lanjut. +![Linear vs polynomial regression infographic](../../../../translated_images/id/linear-polynomial.5523c7cb6576ccab.webp) > Infografis oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Kuis Pra-lecture](https://ff-quizzes.netlify.app/en/ml/) +## [Kuis pra-ceramah](https://ff-quizzes.netlify.app/en/ml/) > ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) - ### Pendahuluan -Sejauh ini Anda telah mengeksplorasi apa itu regresi dengan data contoh yang dikumpulkan dari dataset harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib. +Sejauh ini Anda telah mengeksplorasi apa itu regresi dengan data contoh yang diambil dari dataset harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib. -Sekarang Anda siap untuk menggali lebih dalam regresi untuk ML. Sementara visualisasi memungkinkan Anda memahami data, kekuatan sesungguhnya dari Pembelajaran Mesin datang dari _melatih model_. Model dilatih dengan data historis untuk secara otomatis menangkap ketergantungan data, dan memungkinkan Anda memprediksi hasil untuk data baru, yang belum pernah dilihat model sebelumnya. +Sekarang Anda siap untuk menyelami lebih dalam regresi untuk ML. Sementara visualisasi memungkinkan Anda memahami data, kekuatan nyata dari Pembelajaran Mesin berasal dari _pelatihan model_. Model dilatih pada data historis untuk secara otomatis menangkap ketergantungan data, dan memungkinkan Anda memprediksi hasil untuk data baru yang belum pernah dilihat model sebelumnya. -Dalam pelajaran ini, Anda akan belajar lebih banyak tentang dua jenis regresi: _regresi linier dasar_ dan _regresi polinomial_, bersama dengan beberapa matematika dasar di balik teknik ini. Model-model itu akan memungkinkan kita memprediksi harga labu tergantung pada data input yang berbeda. +Dalam pelajaran ini, Anda akan belajar lebih banyak tentang dua jenis regresi: _regresi linier dasar_ dan _regresi polinomial_, bersama dengan beberapa matematika yang mendasari teknik-teknik ini. Model-model tersebut akan memungkinkan kita memprediksi harga labu tergantung pada data input yang berbeda. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Klik gambar di atas untuk video singkat tentang regresi linier. +> 🎥 Klik gambar di atas untuk video ringkas tentang regresi linier. -> Sepanjang kurikulum ini, kami mengasumsikan pengetahuan matematika yang minimal, dan berusaha agar dapat diakses oleh siswa dari bidang lain, jadi perhatikan catatan, panggilan 🧮, diagram, dan alat pembelajaran lainnya untuk membantu pemahaman. +> Sepanjang kurikulum ini, kami mengasumsikan pengetahuan matematika minimal, dan berupaya membuatnya dapat diakses bagi siswa yang berasal dari bidang lain, jadi perhatikan catatan, 🧮 penjelasan, diagram, dan alat pembelajaran lain untuk membantu pemahaman. ### Prasyarat -Anda seharusnya sudah familiar dengan struktur data labu yang sedang kita periksa. Anda dapat menemukannya sudah dimuat dan dibersihkan dalam berkas _notebook.ipynb_ pelajaran ini. Dalam berkas tersebut, harga labu ditampilkan per bushel dalam frame data baru. Pastikan Anda dapat menjalankan notebook ini di kernel Visual Studio Code. +Anda seharusnya sudah familiar dengan struktur data labu yang sedang kita periksa. Anda dapat menemukannya telah dimuat sebelumnya dan sudah dibersihkan dalam file _notebook.ipynb_ pelajaran ini. Dalam file tersebut, harga labu ditampilkan per bushel dalam sebuah data frame baru. Pastikan Anda dapat menjalankan notebook ini di kernel Visual Studio Code. ### Persiapan -Sebagai pengingat, Anda memuat data ini agar dapat mengajukan pertanyaan tentangnya. +Sebagai pengingat, Anda sedang memuat data ini untuk mengajukan pertanyaan terhadapnya. + +- Kapan waktu terbaik membeli labu? +- Berapa harga yang bisa saya harapkan untuk satu kotak labu mini? +- Haruskah saya membelinya dalam keranjang setengah bushel atau per kotak 1 1/9 bushel? -- Kapan waktu terbaik membeli labu? -- Harga berapa yang bisa saya harapkan untuk satu kotak labu mini? -- Haruskah saya membelinya dalam keranjang setengah bushel atau dalam kotak 1 1/9 bushel? -Mari terus gali data ini. +Mari kita terus menggali data ini. -Dalam pelajaran sebelumnya, Anda membuat data frame Pandas dan mengisinya dengan sebagian data asli, menstandarkan harga berdasarkan bushel. Namun dengan cara itu, Anda hanya mengumpulkan sekitar 400 datapoint dan hanya untuk bulan-bulan musim gugur. +Dalam pelajaran sebelumnya, Anda membuat sebuah Pandas data frame dan mengisinya dengan sebagian dataset asli, menstandardisasi harga berdasarkan bushel. Namun dengan melakukan itu, Anda hanya bisa mengumpulkan sekitar 400 titik data dan hanya untuk bulan-bulan musim gugur. -Lihatlah data yang sudah kami muat dalam notebook pendamping pelajaran ini. Data dimuat dan scatterplot awal dibuat untuk menunjukkan data bulan. Mungkin kita bisa mendapatkan detail lebih tentang sifat data ini dengan membersihkannya lebih lanjut. +Lihat data yang telah kami muat sebelumnya dalam notebook pelajaran ini. Data tersebut telah dimuat dan sebuah scatterplot awal dibuat untuk menunjukkan data bulan. Mungkin kita bisa mendapatkan sedikit lebih banyak detail tentang karakter data dengan membersihkannya lebih lanjut. ## Garis regresi linier -Seperti yang Anda pelajari di Pelajaran 1, tujuan latihan regresi linier adalah untuk dapat membuat garis yang: +Seperti yang Anda pelajari di Pelajaran 1, tujuan latihan regresi linier adalah untuk dapat memplot sebuah garis untuk: -- **Menunjukkan hubungan variabel**. Menunjukkan hubungan antar variabel -- **Membuat prediksi**. Membuat prediksi yang akurat tentang di mana titik data baru akan jatuh terkait garis tersebut. +- **Menunjukkan hubungan variabel**. Menunjukkan hubungan antar variabel +- **Membuat prediksi**. Membuat prediksi akurat di mana titik data baru akan jatuh terkait garis tersebut. -Biasanya, **Least-Squares Regression** digunakan untuk menggambar garis jenis ini. Istilah "Least-Squares" mengacu pada proses meminimalkan total kesalahan dalam model kita. Untuk setiap titik data, kita mengukur jarak vertikal (disebut residual) antara titik aktual dan garis regresi kita. +Biasanya **Regresi Kuadrat Terkecil** menggambar garis seperti ini. Istilah "Kuadrat Terkecil" merujuk pada proses meminimalkan total error pada model kita. Untuk setiap titik data, kita mengukur jarak vertikal (disebut residual) antara titik sesungguhnya dan garis regresi kita. -Jarak-jarak ini kita kuadratkan karena dua alasan utama: +Jarak ini kita kuadratkan karena dua alasan utama: -1. **Magnitudo lebih penting dari Arah:** Kita ingin menganggap kesalahan -5 sama dengan kesalahan +5. Mengkuadratkan membuat semua nilai menjadi positif. +1. **Magnitudo bukan Arah:** Kita ingin memperlakukan error -5 sama dengan error +5. Dengan mengkuadratkan, semua nilai menjadi positif. -2. **Memberi Bobot pada Outlier:** Kuadrat memberi bobot lebih besar pada kesalahan yang lebih besar, memaksa garis untuk tetap dekat dengan titik yang jauh. +2. **Menghukum Outlier:** Mengkuadratkan memberi bobot lebih pada error yang lebih besar, memaksa garis lebih dekat ke titik yang jauh. -Kemudian kita jumlahkan semua nilai kuadrat ini. Tujuan kita adalah menemukan garis spesifik di mana jumlah akhir ini paling kecil (nilai terkecil mungkin)—maka namanya "Least-Squares". +Kita kemudian menjumlahkan semua nilai kuadrat ini. Tujuan kita adalah menemukan garis spesifik di mana jumlah akhir ini paling kecil (nilai terkecil mungkin)—oleh karena itu nama "Kuadrat Terkecil". > **🧮 Tunjukkan matematikanya** > -> Garis ini, disebut _line of best fit_ dapat dinyatakan dengan [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> Garis ini, yang disebut _garis terbaik_ dapat dinyatakan oleh [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` adalah 'variabel penjelas'. `Y` adalah 'variabel dependen'. Kemiringan garis adalah `b` dan `a` adalah intercept-y, yang merujuk pada nilai `Y` ketika `X = 0`. -> ->![hitung kemiringan](../../../../translated_images/id/slope.f3c9d5910ddbfcf9.webp) -> -> Pertama, hitung kemiringan `b`. Infografis oleh [Jen Looper](https://twitter.com/jenlooper) -> -> Dengan kata lain, dan mengacu pada pertanyaan asli data labu kita: "memprediksi harga labu per bushel berdasarkan bulan", `X` akan merujuk pada harga dan `Y` merujuk pada bulan penjualan. -> ->![lengkapi persamaan](../../../../translated_images/id/calculation.a209813050a1ddb1.webp) -> -> Hitung nilai Y. Jika Anda membayar sekitar $4, pasti bulan April! Infografis oleh [Jen Looper](https://twitter.com/jenlooper) -> -> Matematika yang menghitung garis harus menunjukkan kemiringan garis, yang juga bergantung pada intercept, atau di mana `Y` berada ketika `X = 0`. -> -> Anda dapat mengamati metode perhitungan nilai-nilai ini di situs [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Juga kunjungi [Kalkulator Least-squares ini](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk melihat bagaimana nilai angka memengaruhi garis. +> +> `X` adalah 'variabel penjelas'. `Y` adalah 'variabel terikat'. Kemiringan garis adalah `b` dan `a` adalah titik potong y, yang menunjukkan nilai `Y` saat `X = 0`. +> +>![hitung kemiringan](../../../../translated_images/id/slope.f3c9d5910ddbfcf9.webp) +> +> Pertama, hitung kemiringan `b`. Infografis oleh [Jen Looper](https://twitter.com/jenlooper) +> +> Dengan kata lain, dan merujuk pada pertanyaan asli data labu kita: "prediksi harga labu per bushel berdasarkan bulan", `X` akan merujuk pada harga dan `Y` akan merujuk pada bulan penjualan. +> +>![selesaikan persamaan](../../../../translated_images/id/calculation.a209813050a1ddb1.webp) +> +> Hitung nilai Y. Jika Anda membayar sekitar $4, pasti April! Infografis oleh [Jen Looper](https://twitter.com/jenlooper) +> +> Matematika yang menghitung garis harus menunjukkan kemiringan garis, yang juga bergantung pada intercept, atau di mana `Y` berada saat `X = 0`. +> +> Anda dapat melihat metode penghitungan nilai ini di situs [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Juga kunjungi [Kalkulator Kuadrat Terkecil ini](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk melihat bagaimana nilai angka mempengaruhi garis. ## Korelasi -Satu istilah lagi yang perlu dipahami adalah **Koefisien Korelasi** antara variabel X dan Y tertentu. Dengan scatterplot, Anda dapat dengan cepat memvisualisasikan koefisien ini. Plot dengan titik data tersebar rapi pada satu garis memiliki korelasi tinggi, tapi plot dengan titik-titik acak di mana-mana antara X dan Y memiliki korelasi rendah. +Satu istilah lagi yang perlu dipahami adalah **Koefisien Korelasi** antara variabel X dan Y tertentu. Dengan menggunakan scatterplot, Anda dapat dengan cepat memvisualisasikan koefisien ini. Plot dengan titik data tersebar dalam garis rapi memiliki korelasi tinggi, tetapi plot dengan titik data tersebar di mana-mana antara X dan Y memiliki korelasi rendah. -Model regresi linier yang baik adalah yang memiliki Koefisien Korelasi tinggi (mendekati 1 daripada 0) menggunakan metode Least-Squares Regression dengan garis regresi. +Model regresi linier yang baik adalah yang memiliki Koefisien Korelasi tinggi (lebih dekat ke 1 daripada 0) menggunakan metode Regresi Kuadrat Terkecil dengan garis regresi. -✅ Jalankan notebook pendamping pelajaran ini dan lihat scatterplot Bulan terhadap Harga. Apakah data yang mengasosiasikan Bulan ke Harga penjualan labu tampak memiliki korelasi tinggi atau rendah menurut interpretasi visual Anda terhadap scatterplot? Apakah berubah jika Anda menggunakan ukuran lebih rinci daripada `Month`, misalnya *hari dalam tahun* (jumlah hari sejak awal tahun)? +✅ Jalankan notebook yang menyertai pelajaran ini dan lihat scatterplot Bulan ke Harga. Apakah data yang menghubungkan Bulan dengan Harga penjualan labu tampak memiliki korelasi tinggi atau rendah, berdasarkan interpretasi visual scatterplot Anda? Apakah berubah jika Anda menggunakan ukuran yang lebih rinci selain `Month`, misalnya *hari dalam tahun* (yakni jumlah hari sejak awal tahun)? -Dalam kode berikut, kita asumsikan data sudah dibersihkan, dan diperoleh data frame bernama `new_pumpkins`, mirip dengan berikut: +Dalam kode berikut, kita akan berasumsi bahwa kita telah membersihkan data dan memperoleh sebuah data frame bernama `new_pumpkins`, mirip dengan yang berikut: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Kode pembersihan data tersedia di [`notebook.ipynb`](notebook.ipynb). Kami sudah melakukan langkah pembersihan yang sama seperti pelajaran sebelumnya, dan menghitung kolom `DayOfYear` menggunakan ekspresi berikut: +> Kode untuk membersihkan data tersedia di [`notebook.ipynb`](notebook.ipynb). Kami telah melakukan langkah pembersihan yang sama seperti di pelajaran sebelumnya, dan telah menghitung kolom `DayOfYear` menggunakan ekspresi berikut: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Sekarang setelah Anda memahami matematika di balik regresi linier, mari buat model Regresi untuk melihat apakah kita bisa memprediksi paket labu mana yang memiliki harga labu terbaik. Seseorang yang membeli labu untuk patch labu liburan mungkin ingin informasi ini agar dapat mengoptimalkan pembelian paket labu untuk patch tersebut. + +Sekarang setelah Anda memahami matematika di balik regresi linier, mari kita buat model Regresi untuk melihat apakah kita dapat memprediksi paket labu mana yang akan memiliki harga labu terbaik. Seseorang yang membeli labu untuk patch labu liburan mungkin ingin informasi ini untuk dapat mengoptimalkan pembelian paket labu untuk patch tersebut. ## Mencari Korelasi [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Klik gambar di atas untuk video singkat tentang korelasi. +> 🎥 Klik gambar di atas untuk video ringkas tentang korelasi. -Dari pelajaran sebelumnya Anda mungkin sudah melihat bahwa rata-rata harga untuk bulan yang berbeda tampak seperti ini: +Dari pelajaran sebelumnya Anda mungkin telah melihat bahwa harga rata-rata untuk bulan-bulan berbeda tampak seperti ini: Average price by month -Ini menunjukkan bahwa seharusnya ada korelasi, dan kita dapat mencoba melatih model regresi linier untuk memprediksi hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut adalah scatter plot yang menunjukkan hubungan yang terakhir: +Ini menunjukkan bahwa seharusnya ada beberapa korelasi, dan kita dapat mencoba melatih model regresi linier untuk memprediksi hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut adalah scatter plot yang menunjukkan hubungan yang terakhir: Scatter plot of Price vs. Day of Year -Mari kita lihat apakah ada korelasi menggunakan fungsi `corr`: +Mari lihat apakah ada korelasi menggunakan fungsi `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Tampaknya korelasinya cukup kecil, -0.15 berdasarkan `Month` dan -0.17 berdasarkan `DayOfMonth`, tetapi mungkin ada hubungan penting lain. Tampak ada beberapa kluster harga berbeda yang sesuai dengan varietas labu berbeda. Untuk mengonfirmasi hipotesis ini, mari plot setiap kategori labu menggunakan warna berbeda. Dengan melewatkan parameter `ax` pada fungsi plot `scatter` kita bisa membuat semua titik berada di grafik yang sama: + +Tampaknya korelasinya cukup kecil, -0.15 berdasarkan `Month` dan -0.17 berdasarkan `DayOfYear`, tapi mungkin ada hubungan penting lain. Tampak ada kelompok harga berbeda yang sesuai dengan varietas labu yang berbeda. Untuk mengonfirmasi hipotesis ini, mari plot setiap kategori labu menggunakan warna berbeda. Dengan melewatkan parameter `ax` ke fungsi plot `scatter` kita dapat plot semua titik di grafik yang sama: ```python ax=None @@ -141,18 +140,18 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - + Scatter plot of Price vs. Day of Year -Penyelidikan kita menunjukkan bahwa varietas memiliki pengaruh lebih besar pada harga keseluruhan daripada tanggal penjualan sebenarnya. Kita bisa melihat ini dengan grafik batang: +Penyelidikan kita menunjukkan bahwa varietas lebih berpengaruh terhadap harga keseluruhan daripada tanggal penjualan sebenarnya. Kita dapat melihat ini dengan grafik batang: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - + Bar graph of price vs variety -Mari kita fokus untuk saat ini hanya pada satu varietas labu, 'pie type', dan lihat pengaruh tanggal pada harga: +Mari kita fokus sejenak hanya pada satu varietas labu, yaitu 'pie type', dan lihat pengaruh tanggal terhadap harga: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -160,22 +159,22 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -Jika sekarang kita hitung korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan mendapat sekitar `-0.27` - yang berarti melatih model prediktif masuk akal. +Jika sekarang kita hitung korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan mendapatkan sesuatu seperti `-0.27` - yang berarti melatih model prediktif masuk akal. -> Sebelum melatih model regresi linier, penting memastikan data kita bersih. Regresi linier tidak bekerja baik dengan nilai hilang, jadi masuk akal untuk menghapus semua sel kosong: +> Sebelum melatih model regresi linier, penting untuk memastikan data kita bersih. Regresi linier tidak bekerja dengan baik dengan nilai yang hilang, jadi masuk akal untuk menghapus semua sel kosong: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Pendekatan lain adalah mengisi nilai kosong dengan nilai rata-rata dari kolom terkait. + +Pendekatan lain adalah mengisi nilai kosong tersebut dengan nilai rata-rata dari kolom yang bersangkutan. ## Regresi Linier Sederhana [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Klik gambar di atas untuk video singkat tentang regresi linier dan polinomial. +> 🎥 Klik gambar di atas untuk video ringkas tentang regresi linier dan polinomial. Untuk melatih model Regresi Linier kita, kita akan menggunakan perpustakaan **Scikit-learn**. @@ -184,32 +183,32 @@ from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - + Kita mulai dengan memisahkan nilai input (fitur) dan output yang diharapkan (label) ke dalam array numpy terpisah: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> Catatan bahwa kita harus melakukan `reshape` pada data input agar paket Linear Regression memahaminya dengan benar. Regresi Linier mengharapkan array 2D sebagai input, di mana setiap baris array sesuai dengan vektor fitur input. Dalam kasus kita, karena kita hanya punya satu input - kita butuh array dengan bentuk N×1, di mana N adalah ukuran dataset. -Kemudian, kita perlu membagi data menjadi dataset latih dan uji, agar kita dapat memvalidasi model setelah pelatihan: +> Perlu dicatat bahwa kita harus melakukan `reshape` pada data input agar paket Regresi Linier dapat memahaminya dengan benar. Regresi Linier mengharapkan array 2D sebagai input, di mana setiap baris array merupakan vektor fitur input. Dalam kasus kita, karena hanya ada satu input - kita memerlukan array dengan bentuk N×1, di mana N adalah ukuran dataset. + +Kemudian, kita perlu membagi data menjadi dataset train dan test, agar kita dapat memvalidasi model setelah pelatihan: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Akhirnya, melatih model Regresi Linier sebenarnya hanya memerlukan dua baris kode. Kita definisikan objek `LinearRegression`, dan melatihnya dengan data kita menggunakan metode `fit`: + +Terakhir, training model Regresi Linier sebenarnya hanya butuh dua baris kode. Kita definisikan objek `LinearRegression`, dan fit ke data kita menggunakan method `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objek `LinearRegression` setelah di-`fit` berisi semua koefisien regresi, yang dapat diakses menggunakan properti `.coef_`. Dalam kasus kita, hanya ada satu koefisien, yang seharusnya sekitar `-0.017`. Ini berarti harga tampaknya sedikit turun seiring waktu, tapi tidak terlalu banyak, sekitar 2 sen per hari. Kita juga dapat mengakses titik potong regresi dengan sumbu Y menggunakan `lin_reg.intercept_` - yang akan sekitar `21` dalam kasus kita, menunjukkan harga pada awal tahun. +Objek `LinearRegression` setelah melakukan `fit` mengandung semua koefisien regresi, yang dapat diakses menggunakan properti `.coef_`. Dalam kasus kita, hanya ada satu koefisien, yang seharusnya sekitar `-0.017`. Ini berarti harga tampaknya turun sedikit seiring waktu, tetapi tidak terlalu banyak, sekitar 2 sen per hari. Kita juga dapat mengakses titik potong regresi dengan sumbu Y menggunakan `lin_reg.intercept_` - dalam kasus kita akan sekitar `21`, menunjukkan harga pada awal tahun. -Untuk melihat seberapa akurat model kita, kita dapat memprediksi harga pada dataset uji, kemudian mengukur seberapa dekat prediksi kita dengan nilai yang diharapkan. Ini dapat dilakukan menggunakan metrik root mean square error (RMSE), yaitu akar dari rata-rata semua selisih kuadrat antara nilai yang diharapkan dan nilai yang diprediksi. +Untuk melihat seberapa akurat model kita, kita dapat memprediksi harga pada dataset uji, dan kemudian mengukur seberapa dekat prediksi kita dengan nilai yang diharapkan. Ini dapat dilakukan menggunakan metrik root mean square error (RMSE), yaitu akar dari rata-rata semua selisih kuadrat antara nilai yang diharapkan dan yang diprediksi. ```python pred = lin_reg.predict(X_test) @@ -218,15 +217,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Kesalahan kita tampaknya sekitar 2 poin, yaitu sekitar 17%. Tidak terlalu bagus. Indikator lain dari kualitas model adalah **koefisien determinasi**, yang dapat diperoleh seperti ini: +Kesalahan kita tampaknya sekitar 2 poin, yaitu ~17%. Tidak terlalu baik. Indikator lain dari kualitas model adalah **koefisien determinasi**, yang dapat diperoleh seperti ini: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Jika nilainya 0, itu berarti model tidak mempertimbangkan data input, dan bertindak sebagai *prediktor linier terburuk*, yaitu nilai rata-rata dari hasilnya. Nilai 1 berarti kita dapat memprediksi semua output yang diharapkan dengan sempurna. Dalam kasus kita, koefisiennya sekitar 0.06, yang cukup rendah. -Kita juga dapat menggambar data uji bersama dengan garis regresi untuk melihat lebih jelas bagaimana regresi bekerja dalam kasus kita: +Jika nilainya 0, berarti model tidak mempertimbangkan data input, dan berperilaku sebagai *prediktor linear terburuk*, yang hanya nilai rata-rata hasil. Nilai 1 berarti kita dapat memprediksi semua keluaran yang diharapkan dengan sempurna. Dalam kasus kita, koefisiennya sekitar 0.06, yang cukup rendah. + +Kita juga dapat memplot data uji bersama dengan garis regresi untuk melihat lebih baik bagaimana regresi bekerja dalam kasus kita: ```python plt.scatter(X_test,y_test) @@ -237,17 +237,17 @@ plt.plot(X_test,pred) ## Regresi Polinomial -Jenis lain dari Regresi Linear adalah Regresi Polinomial. Kadang-kadang ada hubungan linier antara variabel - semakin besar volume labu, semakin tinggi harganya - tetapi terkadang hubungan ini tidak bisa dipetakan sebagai bidang atau garis lurus. +Jenis lain dari Regresi Linear adalah Regresi Polinomial. Kadang-kadang ada hubungan linear antar variabel - semakin besar volume labu, semakin tinggi harganya - namun terkadang hubungan ini tidak bisa diplot sebagai bidang atau garis lurus. -✅ Berikut [beberapa contoh lagi](https://online.stat.psu.edu/stat501/lesson/9/9.8) dari data yang dapat menggunakan Regresi Polinomial +✅ Berikut adalah [beberapa contoh lagi](https://online.stat.psu.edu/stat501/lesson/9/9.8) data yang dapat menggunakan Regresi Polinomial -Perhatikan lagi hubungan antara Date dan Price. Apakah scatterplot ini harus dianalisis dengan garis lurus? Apakah harga tidak bisa berfluktuasi? Dalam kasus ini, Anda dapat mencoba regresi polinomial. +Perhatikan kembali hubungan antara Tanggal dan Harga. Apakah scatterplot ini harus dianalisis dengan garis lurus? Apakah harga tidak bisa berfluktuasi? Dalam kasus ini, Anda bisa mencoba regresi polinomial. -✅ Polinomial adalah ekspresi matematis yang mungkin terdiri dari satu atau lebih variabel dan koefisien +✅ Polinomial adalah ekspresi matematika yang mungkin terdiri dari satu atau lebih variabel dan koefisien -Regresi polinomial membuat garis melengkung untuk lebih cocok dengan data yang tidak linier. Dalam kasus kita, jika kita memasukkan variabel `DayOfYear` kuadrat ke dalam data input, kita harus dapat memfit data kita dengan kurva parabola, yang akan memiliki titik minimum pada suatu titik dalam tahun. +Regresi polinomial membuat garis melengkung untuk lebih baik memodelkan data non-linear. Dalam kasus kita, jika kita memasukkan variabel `DayOfYear`^2 ke data input, kita seharusnya bisa memodelkan data dengan kurva parabola, yang akan memiliki titik minimum pada titik tertentu dalam setahun. -Scikit-learn menyertakan API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan berbagai langkah pemrosesan data secara bersama-sama. **Pipeline** adalah rantai dari **estimators**. Dalam kasus kita, kita akan membuat pipeline yang pertama menambahkan fitur polinomial ke model, kemudian melatih regresi: +Scikit-learn menyertakan API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan beberapa langkah pemrosesan data. Sebuah **pipeline** adalah rantai **estimator**. Dalam kasus kita, kita akan membuat pipeline yang pertama-tama menambahkan fitur polinomial ke model kita, kemudian melatih regresi: ```python from sklearn.preprocessing import PolynomialFeatures @@ -258,21 +258,43 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Menggunakan `PolynomialFeatures(2)` berarti kita akan memasukkan semua polinomial derajat dua dari data input. Dalam kasus kita ini hanya berarti `DayOfYear`2, tapi jika ada dua variabel input X dan Y, ini akan menambahkan X2, XY, dan Y2. Kita juga dapat menggunakan polinomial tingkat lebih tinggi jika diinginkan. +Menggunakan `PolynomialFeatures(2)` berarti kita akan memasukkan semua polinomial derajat dua dari data input. Dalam kasus kita ini hanya berarti `DayOfYear`2, tapi jika ada dua variabel input X dan Y, ini akan menambahkan X2, XY, dan Y2. Kita juga bisa menggunakan polinomial derajat lebih tinggi jika ingin. + +Pipeline dapat digunakan dengan cara yang sama seperti objek `LinearRegression` asli, yaitu kita bisa `fit` pipeline, lalu menggunakan `predict` untuk mendapatkan hasil prediksi: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Untuk memplot kurva aproksimasi yang halus, kita menggunakan `np.linspace` untuk membuat rentang nilai input yang seragam, daripada memplot langsung pada data uji yang tidak terurut (yang akan menghasilkan garis zigzag): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline dapat digunakan dengan cara yang sama seperti objek `LinearRegression` asli, yaitu kita dapat melakukan `fit` pada pipeline, lalu menggunakan `predict` untuk mendapatkan hasil prediksi. Berikut adalah grafik yang menunjukkan data uji dan kurva pendekatan: +Berikut grafik yang menunjukkan data uji dan kurva aproksimasi: Polynomial regression -Dengan Regresi Polinomial, kita bisa mendapatkan MSE yang sedikit lebih rendah dan koefisien determinasi yang lebih tinggi, tapi tidak signifikan. Kita perlu mempertimbangkan fitur lain! +Dengan Regresi Polinomial, kita bisa mendapatkan RMSE sedikit lebih rendah dan koefisien determinasi lebih tinggi, tapi tidak signifikan. Kita perlu mempertimbangkan fitur lain! -> Anda dapat melihat bahwa harga labu minimum diamati sekitar Halloween. Bagaimana Anda menjelaskan ini? +> Anda bisa melihat harga labu terendah diamati di sekitar Halloween. Bagaimana Anda menjelaskannya? -🎃 Selamat, Anda baru saja membuat model yang dapat membantu memprediksi harga labu pie. Anda mungkin bisa mengulangi prosedur yang sama untuk semua jenis labu, tapi itu akan merepotkan. Mari kita pelajari sekarang bagaimana mempertimbangkan varietas labu dalam model kita! +🎃 Selamat, Anda baru saja membuat model yang bisa membantu memprediksi harga labu pie. Anda mungkin bisa mengulangi prosedur yang sama untuk semua jenis labu, tapi itu akan melelahkan. Mari kita pelajari sekarang bagaimana mempertimbangkan varietas labu dalam model kita! ## Fitur Kategorikal -Dalam dunia ideal, kita ingin bisa memprediksi harga untuk berbagai varietas labu menggunakan model yang sama. Namun, kolom `Variety` agak berbeda dari kolom seperti `Month`, karena berisi nilai non-numerik. Kolom seperti ini disebut **kategorikal**. +Dalam dunia ideal, kita ingin bisa memprediksi harga untuk berbagai varietas labu menggunakan model yang sama. Namun, kolom `Variety` agak berbeda dari kolom seperti `Month`, karena mengandung nilai non-numerik. Kolom seperti ini disebut **kategorikal**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") @@ -282,12 +304,12 @@ Di sini Anda dapat melihat bagaimana harga rata-rata bergantung pada varietas: Average price by variety -Untuk mempertimbangkan varietas, pertama kita perlu mengubahnya ke bentuk numerik, atau **mengkodekannya**. Ada beberapa cara kita dapat melakukannya: +Untuk memasukkan varietas ke dalam pertimbangan, kita harus mengonversi dulu ke bentuk numerik, atau **mengkodekan**. Ada beberapa cara kita bisa melakukannya: -* **Encoding numerik sederhana** akan membuat tabel berbagai varietas, lalu mengganti nama varietas dengan indeks di tabel tersebut. Ini bukan ide terbaik untuk regresi linear, karena regresi linear akan mengambil nilai numerik indeks itu dan menambahkannya ke hasil, yang dikalikan dengan suatu koefisien. Dalam kasus kita, hubungan antara nomor indeks dan harga jelas non-linier, walaupun kita memastikan indeks diurutkan dengan cara tertentu. -* **One-hot encoding** akan menggantikan kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap varietas. Masing-masing kolom berisi `1` jika baris terkait adalah varietas tersebut, dan `0` jika tidak. Ini berarti ada empat koefisien pada regresi linear, satu untuk tiap varietas labu, yang bertanggung jawab atas "harga dasar" (atau lebih tepatnya "harga tambahan") untuk varietas tersebut. +* **Encoding numerik** sederhana akan membuat tabel berbagai varietas, kemudian mengganti nama varietas dengan indeks di tabel tersebut. Ini bukan ide terbaik untuk regresi linear, karena regresi linear menggunakan nilai numerik indeks tersebut dan menambahkannya ke hasil, dikalikan dengan koefisien tertentu. Dalam kasus kita, hubungan antara indeks dan harga jelas tidak linear, sekalipun kita mengurutkan indeks dengan suatu cara khusus. +* **One-hot encoding** akan mengganti kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap varietas. Setiap kolom berisi `1` jika baris terkait adalah varietas tersebut, dan `0` jika tidak. Ini berarti akan ada empat koefisien dalam regresi linear, masing-masing untuk varietas labu tertentu, yang bertanggung jawab untuk "harga awal" (atau tepatnya "harga tambahan") untuk varietas tersebut. -Kode di bawah menunjukkan bagaimana kita bisa melakukan one-hot encoding pada varietas: +Kode di bawah menunjukkan cara melakukan one-hot encoding pada varietas: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -311,7 +333,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Sisa kode sama seperti yang kita gunakan sebelumnya untuk melatih Regresi Linear. Jika Anda mencobanya, Anda akan melihat bahwa mean squared error hampir sama, tapi kita mendapatkan koefisien determinasi yang jauh lebih tinggi (~77%). Untuk mendapatkan prediksi yang lebih akurat lagi, kita dapat mempertimbangkan fitur kategorikal lainnya, serta fitur numerik, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu array fitur gabungan, kita dapat menggunakan `join`: +Sisa kode sama seperti yang kita gunakan sebelumnya untuk melatih Regresi Linear. Jika Anda mencoba, Anda akan melihat bahwa mean squared error kira-kira sama, tapi kita mendapatkan nilai koefisien determinasi jauh lebih tinggi (~77%). Untuk mendapatkan prediksi yang lebih akurat, kita dapat mempertimbangkan lebih banyak fitur kategorikal, serta fitur numerik, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu array fitur besar, kita bisa menggunakan `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -321,11 +343,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Di sini kita juga mempertimbangkan `City` dan tipe `Package`, yang memberikan MSE 2.84 (10%), dan determinasi 0.94! +Di sini kita juga mempertimbangkan `City` dan tipe `Package`, yang memberikan RMSE 2.84 (10.5%), dan determinasi 0.94! -## Menggabungkan Semua +## Menggabungkan semuanya -Untuk membuat model terbaik, kita dapat menggunakan data gabungan (kategorikal yang telah di-one-hot encode + numerik) dari contoh di atas bersama dengan Regresi Polinomial. Berikut kode lengkap untuk kemudahan Anda: +Untuk membuat model terbaik, kita dapat menggunakan data gabungan (kategorikal one-hot encoded + numerik) dari contoh di atas bersama Regresi Polinomial. Berikut kode lengkapnya untuk kemudahan Anda: ```python # siapkan data pelatihan @@ -335,7 +357,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# buat pembagian train-test +# buat pemisahan train-test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # siapkan dan latih pipeline @@ -345,38 +367,38 @@ pipeline.fit(X_train,y_train) # prediksi hasil untuk data uji pred = pipeline.predict(X_test) -# hitung MSE dan determinasi -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# hitung RMSE dan determinasi +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Ini seharusnya memberi kita koefisien determinasi terbaik hampir 97%, dan MSE=2.23 (~8% kesalahan prediksi). +Ini seharusnya memberi kita nilai koefisien determinasi terbaik hampir 97%, dan RMSE=2.23 (~8% error prediksi). -| Model | MSE | Determination | +| Model | RMSE | Determination | |-------|-----|---------------| -| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | -| `Variety` Linear | 5.24 (19.7%) | 0.77 | -| Semua fitur Linear | 2.84 (10.5%) | 0.94 | -| Semua fitur Polynomial | 2.23 (8.25%) | 0.97 | +| Linear `DayOfYear` | 2.77 (17.2%) | 0.07 | +| Polinomial `DayOfYear` | 2.73 (17.0%) | 0.08 | +| Linear `Variety` | 5.24 (19.7%) | 0.77 | +| Linear Semua fitur | 2.84 (10.5%) | 0.94 | +| Polinomial Semua fitur | 2.23 (8.25%) | 0.97 | -🏆 Bagus sekali! Anda telah membuat empat model Regresi dalam satu pelajaran, dan meningkatkan kualitas model menjadi 97%. Pada bagian terakhir tentang Regresi, Anda akan belajar tentang Regresi Logistik untuk menentukan kategori. +🏆 Bagus! Anda membuat empat model Regresi dalam satu pelajaran, dan meningkatkan kualitas model hingga 97%. Di bagian akhir tentang Regresi, Anda akan belajar tentang Regresi Logistik untuk menentukan kategori. --- ## 🚀Tantangan -Uji beberapa variabel berbeda dalam notebook ini untuk melihat bagaimana korelasi berhubungan dengan akurasi model. +Uji beberapa variabel berbeda dalam notebook ini untuk melihat bagaimana korelasi terkait dengan akurasi model. ## [Kuis pasca kuliah](https://ff-quizzes.netlify.app/en/ml/) -## Tinjauan & Belajar Mandiri +## Ulasan & Belajar Mandiri -Dalam pelajaran ini kita belajar tentang Regresi Linear. Ada jenis Regresi lain yang penting. Bacalah tentang teknik Stepwise, Ridge, Lasso dan Elasticnet. Kursus yang bagus untuk belajar lebih lanjut adalah [kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Dalam pelajaran ini kita belajar tentang Regresi Linear. Ada tipe Regresi penting lain. Bacalah tentang teknik Stepwise, Ridge, Lasso, dan Elasticnet. Kursus yang bagus untuk belajar lebih lanjut adalah [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Tugas +## Tugas [Bangun Model](assignment.md) @@ -384,5 +406,5 @@ Dalam pelajaran ini kita belajar tentang Regresi Linear. Ada jenis Regresi lain **Penafian**: -Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber otoritatif. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau salah interpretasi yang timbul dari penggunaan terjemahan ini. +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidaktepatan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau salah tafsir yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Regression/3-Linear/solution/notebook.ipynb b/translations/id/2-Regression/3-Linear/solution/notebook.ipynb index ad8aae532d..6906b2803c 100644 --- a/translations/id/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/id/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Regresi Linear dan Polinomial untuk Penentuan Harga Labu - Pelajaran 3\n", + "## Regresi Linear dan Polinomial untuk Penetapan Harga Labu - Pelajaran 3\n", "\n", - "Muat pustaka dan dataset yang diperlukan. Ubah data menjadi dataframe yang hanya berisi subset data berikut:\n", + "Muat perpustakaan dan dataset yang diperlukan. Ubah data menjadi dataframe yang berisi subset data:\n", "\n", - "- Hanya ambil labu yang dihargai per keranjang\n", + "- Hanya ambil labu yang dihargai per bushel\n", "- Ubah tanggal menjadi bulan\n", "- Hitung harga sebagai rata-rata dari harga tertinggi dan terendah\n", - "- Ubah harga agar mencerminkan penetapan harga berdasarkan jumlah per keranjang\n" + "- Ubah harga untuk mencerminkan penetapan harga berdasarkan kuantitas bushel\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sebuah diagram pencar mengingatkan kita bahwa kita hanya memiliki data bulan dari Agustus hingga Desember. Kita mungkin memerlukan lebih banyak data untuk dapat menarik kesimpulan secara linear.\n" + "Diagram sebar mengingatkan kita bahwa kita hanya memiliki data bulan dari Agustus hingga Desember. Kita mungkin perlu lebih banyak data untuk dapat menarik kesimpulan secara linier.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Mari kita lihat apakah ada korelasi:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sepertinya korelasi cukup kecil, tetapi ada hubungan lain yang lebih penting - karena titik harga dalam plot di atas tampaknya memiliki beberapa kluster yang berbeda. Mari kita buat plot yang akan menunjukkan berbagai jenis labu:\n" + "Sepertinya korelasinya cukup kecil, tetapi ada hubungan lain yang lebih penting - karena titik harga dalam plot di atas tampak memiliki beberapa kelompok yang berbeda. Mari kita buat plot yang akan menunjukkan berbagai varietas labu:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Untuk saat ini, mari kita fokus hanya pada satu jenis - **jenis pai**.\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresi Linear\n", + "### Regresi Linier\n", "\n", - "Kita akan menggunakan Scikit Learn untuk melatih model regresi linear:\n" + "Kita akan menggunakan Scikit Learn untuk melatih model regresi linier:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kemiringan garis dapat ditentukan dari koefisien regresi linier:\n" + "Kemiringan garis dapat ditentukan dari koefisien regresi linear:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Regresi Polinomial\n", "\n", - "Kadang-kadang hubungan antara fitur dan hasil secara alami tidak linear. Sebagai contoh, harga labu mungkin tinggi di musim dingin (bulan=1,2), kemudian turun selama musim panas (bulan=5-7), dan kemudian naik lagi. Regresi linear tidak mampu menemukan hubungan ini dengan akurat.\n", + "Terkadang hubungan antara fitur dan hasil secara inheren non-linear. Misalnya, harga labu mungkin tinggi di musim dingin (bulan=1,2), kemudian turun selama musim panas (bulan=5-7), dan kemudian naik kembali. Regresi linier tidak dapat menemukan hubungan ini dengan akurat.\n", "\n", - "Dalam kasus ini, kita dapat mempertimbangkan untuk menambahkan fitur tambahan. Cara sederhana adalah menggunakan polinomial dari fitur input, yang akan menghasilkan **regresi polinomial**. Dalam Scikit Learn, kita dapat secara otomatis menghitung fitur polinomial menggunakan pipelines:\n" + "Dalam kasus ini, kita dapat mempertimbangkan menambahkan fitur tambahan. Cara sederhana adalah menggunakan polinomial dari fitur input, yang akan menghasilkan **regresi polinomial**. Di Scikit Learn, kita dapat secara otomatis menghitung fitur polinomial menggunakan pipeline:\n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Jenis Encoding\n", + "### Varietas pengkodean\n", "\n", - "Dalam dunia ideal, kita ingin dapat memprediksi harga untuk berbagai jenis labu menggunakan model yang sama. Untuk mempertimbangkan jenis labu, pertama-tama kita perlu mengubahnya ke bentuk numerik, atau **encode**. Ada beberapa cara untuk melakukannya:\n", + "Dalam dunia ideal, kita ingin dapat memprediksi harga untuk berbagai varietas labu menggunakan model yang sama. Untuk mempertimbangkan varietas, kita pertama-tama perlu mengonversinya ke bentuk numerik, atau **mengkodekan**. Ada beberapa cara yang bisa kita lakukan:\n", "\n", - "* Encoding numerik sederhana yang akan membuat tabel dari berbagai jenis labu, lalu mengganti nama jenis dengan indeks dalam tabel tersebut. Ini bukan ide terbaik untuk regresi linier, karena regresi linier mempertimbangkan nilai numerik dari indeks, dan nilai numerik tersebut kemungkinan besar tidak berkorelasi secara numerik dengan harga.\n", - "* One-hot encoding, yang akan mengganti kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap jenis labu, yang akan berisi 1 jika baris yang bersangkutan adalah jenis tertentu, dan 0 jika tidak.\n", + "* Pengkodean numerik sederhana yang akan membuat tabel berbagai varietas, dan kemudian menggantikan nama varietas dengan indeks dalam tabel tersebut. Ini bukan ide yang terbaik untuk regresi linear, karena regresi linear memperhitungkan nilai numerik dari indeks tersebut, dan nilai numerik tersebut kemungkinan tidak berkorelasi secara numerik dengan harga.\n", + "* One-hot encoding, yang akan menggantikan kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap varietas, yang akan berisi 1 jika baris yang sesuai adalah dari varietas tertentu, dan 0 jika tidak.\n", "\n", - "Kode di bawah ini menunjukkan bagaimana kita dapat melakukan one-hot encoding untuk jenis labu:\n" + "Kode di bawah ini menunjukkan bagaimana kita dapat melakukan one-hot encoding pada varietas:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresi Linear pada Variasi\n", + "### Regresi Linear pada Varietas\n", "\n", - "Sekarang kita akan menggunakan kode yang sama seperti di atas, tetapi alih-alih `DayOfYear`, kita akan menggunakan variasi yang telah diubah menjadi one-hot-encoded sebagai input:\n" + "Kita sekarang akan menggunakan kode yang sama seperti di atas, tetapi alih-alih `DayOfYear` kita akan menggunakan varietas one-hot-encoded kita sebagai input:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kita juga dapat mencoba menggunakan fitur lain dengan cara yang sama, dan menggabungkannya dengan fitur numerik, seperti `Month` atau `DayOfYear`:\n" + "Kita juga dapat mencoba menggunakan fitur lain dengan cara yang sama, dan mengombinasikannya dengan fitur numerik, seperti `Month` atau `DayOfYear`:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Regresi Polinomial\n", "\n", - "Regresi polinomial juga dapat digunakan dengan fitur kategorikal yang telah diubah menjadi one-hot-encoded. Kode untuk melatih regresi polinomial pada dasarnya akan sama seperti yang telah kita lihat sebelumnya.\n" + "Regresi polinomial juga dapat digunakan dengan fitur kategorikal yang di-one-hot-encode. Kode untuk melatih regresi polinomial pada dasarnya akan sama seperti yang telah kita lihat di atas.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.\n" + "---\n\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sahih. Untuk informasi kritis, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang salah yang timbul dari penggunaan terjemahan ini.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:22:04+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "id" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ms/.co-op-translator.json b/translations/ms/.co-op-translator.json index 5774bb232e..5b09e2bc71 100644 --- a/translations/ms/.co-op-translator.json +++ b/translations/ms/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ms" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T19:36:47+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:44:26+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ms" }, @@ -90,8 +90,8 @@ "language_code": "ms" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:45:05+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:43:58+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ms" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ms" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:41:25+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ms" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T18:48:36+00:00", diff --git a/translations/ms/1-Introduction/4-techniques-of-ML/README.md b/translations/ms/1-Introduction/4-techniques-of-ML/README.md index 3f39f7c84f..1e65bc3169 100644 --- a/translations/ms/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ms/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Teknik Pembelajaran Mesin -Proses membina, menggunakan, dan mengekalkan model pembelajaran mesin serta data yang digunakan adalah sangat berbeza daripada banyak aliran kerja pembangunan lain. Dalam pelajaran ini, kita akan menjelaskan proses tersebut dan menggariskan teknik utama yang perlu anda ketahui. Anda akan: +Proses membina, menggunakan, dan menyelenggara model pembelajaran mesin dan data yang mereka gunakan adalah proses yang sangat berbeza daripada banyak aliran kerja pembangunan lain. Dalam pelajaran ini, kita akan menjelaskan proses ini, dan menggariskan teknik utama yang perlu anda ketahui. Anda akan: -- Memahami proses yang mendasari pembelajaran mesin pada tahap tinggi. -- Meneroka konsep asas seperti 'model', 'ramalan', dan 'data latihan'. +- Memahami proses yang menjadi asas pembelajaran mesin pada tahap tinggi. +- Menerokai konsep asas seperti 'model', 'ramalan', dan 'data latihan'. -## [Kuiz pra-pelajaran](https://ff-quizzes.netlify.app/en/ml/) +## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/) [![ML untuk pemula - Teknik Pembelajaran Mesin](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML untuk pemula - Teknik Pembelajaran Mesin") -> 🎥 Klik imej di atas untuk video pendek yang menerangkan pelajaran ini. +> 🎥 Klik imej di atas untuk video ringkas yang menerangkan pelajaran ini. ## Pengenalan -Secara umum, seni mencipta proses pembelajaran mesin (ML) terdiri daripada beberapa langkah: +Pada tahap tinggi, kemahiran mencipta proses pembelajaran mesin (ML) terdiri daripada beberapa langkah: -1. **Tentukan soalan**. Kebanyakan proses ML bermula dengan menanyakan soalan yang tidak dapat dijawab oleh program bersyarat atau enjin berasaskan peraturan yang mudah. Soalan-soalan ini sering berkisar pada ramalan berdasarkan koleksi data. -2. **Kumpul dan sediakan data**. Untuk menjawab soalan anda, anda memerlukan data. Kualiti dan, kadangkala, kuantiti data anda akan menentukan sejauh mana anda dapat menjawab soalan awal anda. Memvisualkan data adalah aspek penting dalam fasa ini. Fasa ini juga termasuk membahagikan data kepada kumpulan latihan dan ujian untuk membina model. -3. **Pilih kaedah latihan**. Bergantung pada soalan anda dan sifat data anda, anda perlu memilih cara untuk melatih model agar mencerminkan data anda dengan baik dan membuat ramalan yang tepat. Bahagian proses ML ini memerlukan kepakaran khusus dan, sering kali, sejumlah besar eksperimen. -4. **Latih model**. Menggunakan data latihan anda, anda akan menggunakan pelbagai algoritma untuk melatih model agar mengenali pola dalam data. Model mungkin menggunakan berat dalaman yang boleh disesuaikan untuk memberi keutamaan kepada bahagian tertentu data berbanding yang lain untuk membina model yang lebih baik. -5. **Nilai model**. Anda menggunakan data yang belum pernah dilihat sebelumnya (data ujian anda) daripada set yang dikumpulkan untuk melihat bagaimana prestasi model. -6. **Penalaan parameter**. Berdasarkan prestasi model anda, anda boleh mengulangi proses menggunakan parameter atau pembolehubah yang berbeza yang mengawal tingkah laku algoritma yang digunakan untuk melatih model. -7. **Ramalkan**. Gunakan input baru untuk menguji ketepatan model anda. +1. **Tentukan soalan**. Kebanyakan proses ML bermula dengan mengajukan soalan yang tidak dapat dijawab oleh program kondisional mudah atau enjin berdasarkan peraturan. Soalan-soalan ini sering berkisar pada ramalan berdasarkan koleksi data. +2. **Kumpul dan sediakan data**. Untuk dapat menjawab soalan anda, anda memerlukan data. Kualiti dan, kadang-kala, kuantiti data anda akan menentukan sejauh mana anda dapat menjawab soalan awal anda. Memvisualisasikan data adalah aspek penting dalam fasa ini. Fasa ini juga termasuk membahagikan data kepada kumpulan latihan dan ujian untuk membina model. +3. **Pilih kaedah latihan**. Bergantung pada soalan anda dan sifat data anda, anda perlu memilih cara anda ingin melatih model agar dapat mencerminkan data anda dengan baik dan membuat ramalan yang tepat terhadapnya. Bahagian proses ML anda ini memerlukan kepakaran khusus dan, sering kali, sejumlah besar percubaan. +4. **Latih model**. Menggunakan data latihan anda, anda akan menggunakan pelbagai algoritma untuk melatih model mengenal pasti corak dalam data tersebut. Model mungkin menggunakan berat dalaman yang boleh diselaraskan untuk mengutamakan bahagian data tertentu bagi membina model yang lebih baik. +5. **Nilai model**. Anda menggunakan data yang belum pernah dilihat sebelum ini (data ujian anda) dari set data yang dikumpulkan untuk melihat bagaimana prestasi model. +6. **Penghalusan parameter**. Berdasarkan prestasi model anda, anda boleh mengulangi proses menggunakan parameter yang berbeza, atau pembolehubah, yang mengawal tingkah laku algoritma yang digunakan untuk melatih model. +7. **Buat Ramalan**. Gunakan input baru untuk menguji ketepatan model anda. -## Soalan yang perlu ditanya +## Soalan yang Perlu Ditanya -Komputer sangat mahir dalam menemui pola tersembunyi dalam data. Kegunaan ini sangat membantu penyelidik yang mempunyai soalan tentang domain tertentu yang tidak dapat dijawab dengan mudah dengan mencipta enjin peraturan bersyarat. Sebagai contoh, dalam tugas aktuari, seorang saintis data mungkin dapat membina peraturan buatan tangan tentang kadar kematian perokok berbanding bukan perokok. +Komputer sangat mahir dalam menemui corak tersembunyi dalam data. Kebolehan ini sangat membantu penyelidik yang mempunyai soalan tentang domain tertentu yang tidak dapat dijawab dengan mudah dengan membina enjin peraturan berasaskan kondisi. Sebagai contoh tugasan aktuari, seorang saintis data mungkin dapat membina peraturan buatan tangan mengenai kematian perokok vs bukan perokok. -Namun, apabila banyak pembolehubah lain dimasukkan ke dalam persamaan, model ML mungkin lebih efisien untuk meramalkan kadar kematian masa depan berdasarkan sejarah kesihatan masa lalu. Contoh yang lebih ceria mungkin membuat ramalan cuaca untuk bulan April di lokasi tertentu berdasarkan data yang merangkumi latitud, longitud, perubahan iklim, jarak ke laut, pola aliran jet, dan banyak lagi. +Namun, apabila banyak pembolehubah lain dimasukkan ke dalam persamaan, model ML mungkin lebih cekap untuk meramalkan kadar kematian masa depan berdasarkan sejarah kesihatan lalu. Contoh yang lebih ceria mungkin membuat ramalan cuaca untuk bulan April di lokasi tertentu berdasarkan data yang termasuk latitud, longitud, perubahan iklim, kedekatan dengan lautan, corak aliran jet, dan banyak lagi. -✅ [Slide ini](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tentang model cuaca menawarkan perspektif sejarah untuk menggunakan ML dalam analisis cuaca. +✅ Dek slaid ini tentang model cuaca menawarkan perspektif sejarah untuk menggunakan ML dalam analisis cuaca. -## Tugas sebelum membina +## Tugasan Pra-pembinaan -Sebelum memulakan pembinaan model anda, terdapat beberapa tugas yang perlu anda selesaikan. Untuk menguji soalan anda dan membentuk hipotesis berdasarkan ramalan model, anda perlu mengenal pasti dan mengkonfigurasi beberapa elemen. +Sebelum mula membina model anda, terdapat beberapa tugasan yang perlu anda lengkapkan. Untuk menguji soalan anda dan membentuk hipotesis berdasarkan ramalan model, anda perlu mengenal pasti dan mengkonfigurasi beberapa elemen. ### Data -Untuk menjawab soalan anda dengan sebarang kepastian, anda memerlukan sejumlah data yang mencukupi dan jenis yang betul. Terdapat dua perkara yang perlu dilakukan pada tahap ini: +Untuk dapat menjawab soalan anda dengan sedikit kepastian, anda memerlukan jumlah data yang banyak dan jenis yang betul. Ada dua perkara yang perlu anda lakukan pada tahap ini: -- **Kumpul data**. Mengambil kira pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data anda dengan berhati-hati. Sedar akan sumber data ini, sebarang bias yang mungkin ada, dan dokumentasikan asal usulnya. -- **Sediakan data**. Terdapat beberapa langkah dalam proses penyediaan data. Anda mungkin perlu menggabungkan data dan menormalkannya jika ia berasal dari sumber yang pelbagai. Anda boleh meningkatkan kualiti dan kuantiti data melalui pelbagai kaedah seperti menukar string kepada nombor (seperti yang kita lakukan dalam [Pengelompokan](../../5-Clustering/1-Visualize/README.md)). Anda juga boleh menghasilkan data baru berdasarkan data asal (seperti yang kita lakukan dalam [Klasifikasi](../../4-Classification/1-Introduction/README.md)). Anda boleh membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Aplikasi Web](../../3-Web-App/README.md)). Akhirnya, anda mungkin juga perlu mengacak dan mencampurkannya, bergantung pada teknik latihan anda. +- **Kumpul data**. Dengan mengambil kira pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data anda dengan berhati-hati. Sadarilah sumber data ini, sebarang bias yang wujud, dan dokumentasikan asal-usulnya. +- **Sediakan data**. Terdapat beberapa langkah dalam proses penyediaan data. Anda mungkin perlu mengumpul data dan menormalkannya jika ia berasal dari sumber yang berbeza. Anda boleh meningkatkan kualiti dan kuantiti data melalui pelbagai kaedah seperti menukar rentetan kepada nombor (seperti dalam [Pengelompokan](../../5-Clustering/1-Visualize/README.md)). Anda mungkin juga menjana data baru berdasarkan data asal (seperti dalam [Klasifikasi](../../4-Classification/1-Introduction/README.md)). Anda boleh membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Aplikasi Web](../../3-Web-App/README.md)). Akhir sekali, anda mungkin juga perlu mengacak dan mengaduk data bergantung pada teknik latihan anda. -✅ Selepas mengumpul dan memproses data anda, luangkan masa untuk melihat sama ada bentuknya akan membolehkan anda menangani soalan yang dimaksudkan. Mungkin data tersebut tidak akan berfungsi dengan baik dalam tugas yang diberikan, seperti yang kita temui dalam pelajaran [Pengelompokan](../../5-Clustering/1-Visualize/README.md)! +✅ Setelah mengumpul dan memproses data anda, luangkan masa untuk melihat jika bentuknya membolehkan anda menangani soalan yang dimaksudkan. Mungkin data tersebut tidak akan berfungsi dengan baik dalam tugasan anda, seperti yang kita temui dalam pelajaran [Pengelompokan](../../5-Clustering/1-Visualize/README.md)! ### Ciri dan Sasaran -[Ciri](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah sifat yang boleh diukur daripada data anda. Dalam banyak set data, ia dinyatakan sebagai tajuk lajur seperti 'tarikh', 'saiz', atau 'warna'. Pembolehubah ciri anda, biasanya diwakili sebagai `X` dalam kod, mewakili pembolehubah input yang akan digunakan untuk melatih model. +[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah ciri yang boleh diukur dalam data anda. Dalam banyak set data, ia dinyatakan sebagai tajuk lajur seperti 'tarikh', 'saiz' atau 'warna'. Pembolehubah ciri anda, biasanya diwakili sebagai `X` dalam kod, mewakili pembolehubah input yang akan digunakan untuk melatih model. -Sasaran adalah perkara yang anda cuba ramalkan. Sasaran, biasanya diwakili sebagai `y` dalam kod, mewakili jawapan kepada soalan yang anda cuba tanyakan kepada data anda: pada bulan Disember, **warna** labu mana yang akan paling murah? Di San Francisco, kawasan kejiranan mana yang akan mempunyai **harga** hartanah terbaik? Kadangkala sasaran juga dirujuk sebagai atribut label. +Sasaran ialah perkara yang anda cuba ramalkan. Sasaran, biasanya diwakili sebagai `y` dalam kod, adalah jawapan kepada soalan yang anda cuba tanyakan pada data anda: pada bulan Disember, labu warna apa yang akan paling murah? di San Francisco, kejiranan mana yang akan mempunyai harga hartanah terbaik? Kadang-kadang sasaran juga dirujuk sebagai atribut label. ### Memilih pembolehubah ciri anda -🎓 **Pemilihan Ciri dan Ekstraksi Ciri** Bagaimana anda tahu pembolehubah mana yang perlu dipilih semasa membina model? Anda mungkin akan melalui proses pemilihan ciri atau ekstraksi ciri untuk memilih pembolehubah yang betul untuk model yang paling berprestasi. Walau bagaimanapun, mereka tidak sama: "Ekstraksi ciri mencipta ciri baru daripada fungsi ciri asal, manakala pemilihan ciri mengembalikan subset ciri." ([sumber](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Pemilihan Ciri dan Pengekstrakan Ciri** Bagaimana anda tahu pembolehubah mana untuk dipilih semasa membina model? Anda mungkin akan melalui proses pemilihan ciri atau pengekstrakan ciri untuk memilih pembolehubah yang sesuai bagi model yang paling berprestasi. Namun, kedua-duanya tidak sama: "Pengekstrakan ciri mencipta ciri baru dari fungsi ciri asal, manakala pemilihan ciri mengembalikan subset ciri." ([sumber](https://wikipedia.org/wiki/Feature_selection)) -### Visualkan data anda +### Visualisasikan data anda -Aspek penting dalam alat saintis data adalah kuasa untuk memvisualkan data menggunakan beberapa pustaka yang sangat baik seperti Seaborn atau MatPlotLib. Mewakili data anda secara visual mungkin membolehkan anda menemui korelasi tersembunyi yang boleh anda manfaatkan. Visualisasi anda juga mungkin membantu anda menemui bias atau data yang tidak seimbang (seperti yang kita temui dalam [Klasifikasi](../../4-Classification/2-Classifiers-1/README.md)). +Aspek penting dalam set peralatan saintis data adalah keupayaan untuk memvisualisasikan data menggunakan beberapa perpustakaan cemerlang seperti Seaborn atau MatPlotLib. Mewakili data secara visual mungkin membolehkan anda menemui korelasi tersembunyi yang boleh anda manfaatkan. Visualisasi anda juga mungkin membantu mendedahkan bias atau data yang tidak seimbang (seperti yang kita temui dalam [Klasifikasi](../../4-Classification/2-Classifiers-1/README.md)). ### Bahagikan set data anda -Sebelum latihan, anda perlu membahagikan set data anda kepada dua atau lebih bahagian yang tidak sama saiz tetapi masih mewakili data dengan baik. +Sebelum latihan, anda perlu membahagikan set data anda kepada dua atau lebih bahagian saiz tidak sama yang masih mewakili data dengan baik. -- **Latihan**. Bahagian set data ini digunakan untuk melatih model anda. Set ini membentuk sebahagian besar daripada set data asal. -- **Ujian**. Set ujian adalah kumpulan data bebas, sering kali diambil daripada data asal, yang anda gunakan untuk mengesahkan prestasi model yang dibina. -- **Pengesahan**. Set pengesahan adalah kumpulan contoh bebas yang lebih kecil yang anda gunakan untuk menala parameter hiper model, atau seni bina, untuk meningkatkan model. Bergantung pada saiz data anda dan soalan yang anda tanyakan, anda mungkin tidak perlu membina set ketiga ini (seperti yang kita perhatikan dalam [Ramalan Siri Masa](../../7-TimeSeries/1-Introduction/README.md)). +- **Latihan**. Bahagian dataset ini digunakan untuk melatih model anda. Set ini mewakili sebahagian besar dataset asal. +- **Ujian**. Set data ujian adalah kumpulan data bebas, yang sering dikumpulkan dari data asal, yang anda gunakan untuk mengesahkan prestasi model yang dibina. +- **Pengesahan**. Set pengesahan adalah kumpulan kecil contoh bebas yang anda gunakan untuk melaras hiperaparameter model, atau seni bina, untuk memperbaiki model. Bergantung pada saiz data anda dan soalan yang anda ajukan, anda mungkin tidak perlu membina set ketiga ini (seperti yang kita catat dalam [Peramalan Siri Masa](../../7-TimeSeries/1-Introduction/README.md)). ## Membina model -Menggunakan data latihan anda, matlamat anda adalah untuk membina model, atau representasi statistik data anda, menggunakan pelbagai algoritma untuk **melatih**nya. Melatih model mendedahkannya kepada data dan membolehkan ia membuat andaian tentang pola yang ditemui, disahkan, dan diterima atau ditolak. +Menggunakan data latihan anda, matlamat anda adalah membina model, atau representasi statistik data anda, menggunakan pelbagai algoritma untuk **melatih**nya. Melatih model mendedahkannya kepada data dan membolehkannya membuat andaian tentang corak yang dikesan, disahkan, dan diterima atau ditolak. ### Tentukan kaedah latihan -Bergantung pada soalan anda dan sifat data anda, anda akan memilih kaedah untuk melatihnya. Melalui [dokumentasi Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kita gunakan dalam kursus ini - anda boleh meneroka banyak cara untuk melatih model. Bergantung pada pengalaman anda, anda mungkin perlu mencuba beberapa kaedah yang berbeza untuk membina model terbaik. Anda mungkin akan melalui proses di mana saintis data menilai prestasi model dengan memberinya data yang belum dilihat, memeriksa ketepatan, bias, dan isu lain yang merosakkan kualiti, serta memilih kaedah latihan yang paling sesuai untuk tugas yang diberikan. +Bergantung pada soalan anda dan sifat data anda, anda akan memilih kaedah untuk melatihnya. Dengan melayari dokumentasi [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kami gunakan dalam kursus ini - anda boleh menerokai banyak cara untuk melatih model. Bergantung pada pengalaman anda, anda mungkin perlu mencuba beberapa kaedah berbeza untuk membina model terbaik. Anda mungkin akan melalui proses di mana saintis data menilai prestasi model dengan memberikannya data yang belum dilihat, memeriksa ketepatan, bias, dan isu kualiti lain, serta memilih kaedah latihan yang paling sesuai untuk tugasan tersebut. ### Latih model -Dengan data latihan anda, anda bersedia untuk 'memasangkannya' untuk mencipta model. Anda akan perasan bahawa dalam banyak pustaka ML, anda akan menemui kod 'model.fit' - pada masa ini anda menghantar pembolehubah ciri anda sebagai array nilai (biasanya 'X') dan pembolehubah sasaran (biasanya 'y'). +Dilengkapi dengan data latihan, anda bersedia 'menyesuaikan' untuk mencipta model. Anda akan perasan bahawa dalam banyak perpustakaan ML anda akan menemui kod 'model.fit' - pada masa ini anda menghantar pembolehubah ciri anda sebagai satu tatasusunan nilai (biasanya 'X') dan pembolehubah sasaran (biasanya 'y'). ### Nilai model -Setelah proses latihan selesai (ia boleh mengambil banyak iterasi, atau 'epoch', untuk melatih model besar), anda akan dapat menilai kualiti model dengan menggunakan data ujian untuk mengukur prestasinya. Data ini adalah subset daripada data asal yang belum dianalisis oleh model. Anda boleh mencetak jadual metrik tentang kualiti model anda. +Setelah proses latihan selesai (ia boleh mengambil banyak iterasi, atau 'epoch', untuk melatih model besar), anda akan dapat menilai kualiti model dengan menggunakan data ujian untuk mengukur prestasinya. Data ini adalah subset daripada data asal yang model tidak pernah analisis sebelum ini. Anda boleh mencetak jadual metrik mengenai kualiti model anda. 🎓 **Pemasangan model** -Dalam konteks pembelajaran mesin, pemasangan model merujuk kepada ketepatan fungsi asas model semasa ia cuba menganalisis data yang tidak dikenali. +Dalam konteks pembelajaran mesin, pemasangan model merujuk kepada ketepatan fungsi asas model ketika berusaha menganalisis data yang tidak dikenali olehnya. -🎓 **Underfitting** dan **overfitting** adalah masalah biasa yang merosakkan kualiti model, kerana model sama ada tidak cukup baik atau terlalu baik. Ini menyebabkan model membuat ramalan yang terlalu selaras atau terlalu longgar dengan data latihannya. Model yang terlalu sesuai meramalkan data latihan terlalu baik kerana ia telah mempelajari butiran dan bunyi data terlalu baik. Model yang kurang sesuai tidak tepat kerana ia tidak dapat menganalisis data latihannya atau data yang belum 'dilihat' dengan tepat. +🎓 **Underfitting** dan **overfitting** adalah masalah biasa yang menurunkan kualiti model, kerana model tidak cukup sesuai atau terlalu sesuai. Ini menyebabkan model membuat ramalan yang sama ada terlalu rapat atau terlalu longgar dengan data latihannya. Model overfit meramalkan data latihan dengan baik kerana ia telah mempelajari butiran dan bunyi data terlalu baik. Model underfit tidak tepat kerana ia tidak dapat menganalisis dengan betul data latihannya maupun data yang belum pernah 'dilihat'. -![model overfitting](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![model overfitting](../../../../translated_images/ms/overfitting.1c132d92bfd93cb6.webp) > Infografik oleh [Jen Looper](https://twitter.com/jenlooper) -## Penalaan parameter +## Penghalusan Parameter -Setelah latihan awal anda selesai, perhatikan kualiti model dan pertimbangkan untuk meningkatkannya dengan menyesuaikan 'parameter hiper'nya. Baca lebih lanjut tentang proses ini [dalam dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Setelah latihan awal selesai, perhatikan kualiti model dan pertimbangkan untuk memperbaikinya dengan mengubah 'hiperparameter'. Baca lebih lanjut mengenai proses ini [dalam dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Ramalan -Ini adalah saat di mana anda boleh menggunakan data yang benar-benar baru untuk menguji ketepatan model anda. Dalam tetapan ML 'terapan', di mana anda membina aset web untuk menggunakan model dalam pengeluaran, proses ini mungkin melibatkan pengumpulan input pengguna (tekanan butang, sebagai contoh) untuk menetapkan pembolehubah dan menghantarnya kepada model untuk inferens, atau penilaian. +Ini adalah saat di mana anda boleh menggunakan data baru sepenuhnya untuk menguji ketepatan model anda. Dalam tetapan ML 'terap', di mana anda membina aset web untuk menggunakan model dalam pengeluaran, proses ini mungkin melibatkan pengumpulan input pengguna (contohnya, tekan butang) untuk menetapkan pembolehubah dan menghantarnya ke model bagi inferens atau penilaian. -Dalam pelajaran ini, anda akan menemui cara menggunakan langkah-langkah ini untuk menyediakan, membina, menguji, menilai, dan meramalkan - semua gerakan seorang saintis data dan banyak lagi, semasa anda maju dalam perjalanan anda untuk menjadi jurutera ML 'full stack'. +Dalam pelajaran-pelajaran ini, anda akan mengetahui bagaimana menggunakan langkah-langkah ini untuk menyediakan, membina, menguji, menilai, dan meramalkan - semua gerak kerja seorang saintis data dan lebih lagi, semasa anda melangkah dalam perjalanan anda untuk menjadi jurutera ML 'full stack'. --- ## 🚀Cabaran -Lukiskan carta alir yang mencerminkan langkah-langkah seorang pengamal ML. Di mana anda melihat diri anda sekarang dalam proses ini? Di mana anda meramalkan anda akan menghadapi kesukaran? Apa yang kelihatan mudah bagi anda? +Lukis carta aliran yang mencerminkan langkah-langkah seorang pengamal ML. Di manakah anda melihat diri anda sekarang dalam proses ini? Di mana anda meramalkan anda akan menghadapi kesukaran? Apa yang kelihatan mudah bagi anda? -## [Kuiz selepas pelajaran](https://ff-quizzes.netlify.app/en/ml/) +## [Kuiz pasca-ceramah](https://ff-quizzes.netlify.app/en/ml/) -## Ulasan & Kajian Kendiri +## Ulasan & Pembelajaran Kendiri -Cari dalam talian untuk temu bual dengan saintis data yang membincangkan kerja harian mereka. Berikut adalah [satu](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Cari secara dalam talian temubual dengan saintis data yang membincangkan kerja harian mereka. Ini adalah [satu](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Tugasan -[Temu bual seorang saintis data](assignment.md) +[Temubual seorang saintis data](assignment.md) --- + **Penafian**: -Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab bagi sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. + \ No newline at end of file diff --git a/translations/ms/2-Regression/3-Linear/README.md b/translations/ms/2-Regression/3-Linear/README.md index 80c9d9d213..14c5fbd21f 100644 --- a/translations/ms/2-Regression/3-Linear/README.md +++ b/translations/ms/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Membina model regresi menggunakan Scikit-learn: regresi empat cara +# Membangun model regresi menggunakan Scikit-learn: regresi dengan empat cara ## Nota Pemula -Regresi linear digunakan apabila kita ingin meramalkan **nilai berangka** (contohnya, harga rumah, suhu, atau jualan). -Ia berfungsi dengan mencari satu garis lurus yang paling mewakili hubungan antara ciri input dan output. +Regresi linear digunakan apabila kita ingin meramalkan **nilai berangka** (contohnya, harga rumah, suhu, atau jualan). +Ia berfungsi dengan mencari garis lurus yang paling mewakili hubungan antara ciri input dan output. -Dalam pelajaran ini, kita memberi tumpuan kepada memahami konsep terlebih dahulu sebelum meneroka teknik regresi yang lebih maju. -![Linear vs polynomial regression infographic](../../../../translated_images/ms/linear-polynomial.5523c7cb6576ccab.webp) -> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/) +Dalam pelajaran ini, kita memberi tumpuan kepada memahami konsep sebelum meneroka teknik regresi yang lebih maju. +![Linear vs polynomial regression infographic](../../../../translated_images/ms/linear-polynomial.5523c7cb6576ccab.webp) +> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Kuiz Pra-ceramah](https://ff-quizzes.netlify.app/en/ml/) -> ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Pelajaran ini juga tersedia dalam R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Pengenalan -Sejauh ini anda telah meneroka apa itu regresi dengan data contoh yang dikumpulkan daripada set data harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib. +Setakat ini anda telah meneroka apa itu regresi dengan data contoh yang diambil dari set data harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib. -Kini anda bersedia untuk menyelami lebih lanjut tentang regresi untuk ML. Walaupun visualisasi membolehkan anda memahami data, kuasa sebenar Pembelajaran Mesin datang daripada _melatih model_. Model dilatih menggunakan data sejarah untuk secara automatik menangkap kebergantungan data, dan membolehkan anda meramalkan keputusan untuk data baru, yang belum pernah dilihat oleh model. +Kini anda bersedia untuk menyelami lebih dalam regresi untuk ML. Walaupun visualisasi membolehkan anda memahami data, kuasa sebenar Pembelajaran Mesin datang dari _melatih model_. Model dilatih menggunakan data sejarah untuk secara automatik menangkap pergantungan data, dan membolehkan anda meramalkan hasil bagi data baru yang belum pernah dilihat model sebelum ini. -Dalam pelajaran ini, anda akan mempelajari lebih lanjut tentang dua jenis regresi: _regresi linear asas_ dan _regresi polinomial_, bersama dengan beberapa matematik asas yang mendasari teknik-teknik ini. Model-model tersebut akan membolehkan kita meramalkan harga labu bergantung pada data input yang berbeza. +Dalam pelajaran ini, anda akan belajar lebih lanjut tentang dua jenis regresi: _regresi linear asas_ dan _regresi polinomial_, bersama beberapa matematik yang mendasari teknik-teknik ini. Model-model ini akan membolehkan kita meramalkan harga labu bergantung kepada data input yang berbeza. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Klik imej di atas untuk video ringkas gambaran keseluruhan regresi linear. +> 🎥 Klik imej di atas untuk tontonan video ringkas mengenai regresi linear. -> Sepanjang kurikulum ini, kami menganggap pengetahuan matematik adalah minimum, dan berusaha menjadikannya mudah diakses bagi pelajar yang datang dari bidang lain, jadi perhatikan nota, 🧮 panggilan keluar, rajah, dan alat pembelajaran lain untuk membantu pemahaman. +> Sepanjang kurikulum ini, kami menganggap pengetahuan matematik yang minima, dan berusaha menjadikannya mudah difahami oleh pelajar yang datang dari bidang lain, jadi perhatikan nota, 🧮 panggilan, rajah, dan alat pembelajaran lain untuk membantu pemahaman. ### Prasyarat -Anda kini sepatutnya sudah biasa dengan struktur data labu yang kita periksa. Anda boleh menjumpainya sudah dimuatkan dan dibersihkan dalam fail _notebook.ipynb_ pelajaran ini. Dalam fail tersebut, harga labu dipaparkan setiap bushel dalam bingkai data baru. Pastikan anda boleh menjalankan notebook ini dalam kernel di Visual Studio Code. +Anda sepatutnya kini sudah biasa dengan struktur data labu yang kita periksa. Anda boleh menemuinya telah dimuat dan dibersihkan dalam fail _notebook.ipynb_ pelajaran ini. Dalam fail tersebut, harga labu dipaparkan per bushel dalam bingkai data baru. Pastikan anda boleh menjalankan nota ini dalam kernel di Visual Studio Code. ### Persediaan -Sebagai peringatan, anda memuatkan data ini supaya boleh bertanya soalan mengenainya. +Sebagai peringatan, anda memuatkan data ini untuk menyoal soalan mengenainya. -- Bila masa terbaik untuk membeli labu? -- Berapakah harga yang boleh saya jangkakan untuk satu kotak labu mini? -- Perlukah saya membelinya dalam bakul separuh bushel atau dalam kotak 1 1/9 bushel? -Mari terus gali data ini. +- Bila masa terbaik untuk membeli labu? +- Berapakah harga yang boleh saya jangka bagi satu kotak labu mini? +- Patutkah saya membelinya dalam bakul setengah bushel atau kotak 1 1/9 bushel? +Mari terus menggali data ini. -Dalam pelajaran sebelum ini, anda telah mencipta bingkai data Pandas dan mengisinya dengan sebahagian daripada set data asal, menstandardkan harga mengikut bushel. Dengan melakukan itu, walau bagaimanapun, anda hanya dapat mengumpul kira-kira 400 titik data dan hanya untuk bulan musim luruh. +Dalam pelajaran sebelum ini, anda telah mencipta bingkai data Pandas dan mengisinya dengan sebahagian daripada set data asal, menstandardkan harga mengikut bushel. Dengan melakukan itu, bagaimanapun, anda hanya dapat mengumpul kira-kira 400 titik data dan hanya bagi bulan musim luruh. -Lihat data yang telah kami pra-muatkan di notebook yang disertakan dalam pelajaran ini. Data dipra-muat dan plot taburan awal telah dilakar untuk menunjukkan data bulan. Mungkin kita boleh dapatkan lebih banyak maklumat tentang sifat data dengan membersihkannya dengan lebih lanjut. +Lihat data yang telah kita muatkan dalam notebook yang disertakan pelajaran ini. Data telah dimuat dan scatterplot awal dipetakan untuk menunjukkan data bulan. Mungkin kita boleh mendapatkan sedikit lebih banyak butiran tentang sifat data dengan membersihkannya lebih lanjut. ## Garis regresi linear -Seperti yang anda pelajari dalam Pelajaran 1, tujuan latihan regresi linear adalah untuk dapat melakar garis yang: +Seperti yang anda pelajari dalam Pelajaran 1, tujuan latihan regresi linear adalah untuk dapat melakar garis untuk: -- **Menunjukkan hubungan pemboleh ubah**. Menunjukkan hubungan antara pemboleh ubah -- **Membuat ramalan**. Membuat ramalan tepat mengenai di mana titik data baru akan jatuh berbanding garis tersebut. +- **Menunjukkan hubungan pemboleh ubah**. Menunjukkan hubungan antara pemboleh ubah +- **Membuat ramalan**. Membuat ramalan tepat tentang di mana titik data baru akan jatuh berbanding garis tersebut. -Biasanya, **Regresi Kuasa Dua Terkecil (Least-Squares Regression)** digunakan untuk melukis jenis garis ini. Istilah "Kuasa Dua Terkecil" merujuk kepada proses meminimumkan jumlah ralat dalam model kita. Untuk setiap titik data, kita mengukur jarak menegak (dipanggil residual) antara titik sebenar dan garis regresi kita. +Biasanya, **Regresi Kuasa Dua Terkecil** digunakan untuk melakar jenis garis ini. Istilah "Least-Squares" merujuk kepada proses meminimumkan jumlah ralat dalam model kita. Untuk setiap titik data, kita mengukur jarak menegak (dipanggil residual) antara titik sebenar dan garis regresi kita. -Kita kuasakan kuadrat jarak ini atas dua sebab utama: +Kita kuasakan jarak ini untuk dua sebab utama: -1. **Magnitud melebihi Arah:** Kita mahu memperlakukan ralat -5 sama seperti ralat +5. Menguaskan kuadrat menjadikan semua nilai positif. +1. **Magnitud mengatasi Arah:** Kita ingin menganggap ralat -5 sama seperti ralat +5. Pengkuasaan menjadikan semua nilai positif. -2. **Menghukum Titik Luar Normal (Outliers):** Menguasakan kuadrat memberi lebih berat kepada ralat yang lebih besar, memaksa garis kekal lebih dekat dengan titik yang jauh. +2. **Menghukum Nilai Luar:** Pengkuasaan memberikan berat lebih pada ralat yang besar, memaksa garis kekal lebih dekat kepada titik yang jauh. -Kemudian kita menjumlahkan semua nilai kuasa dua ini. Matlamat kita adalah untuk mencari garis tertentu di mana jumlah akhir ini adalah paling kecil (nilai terkecil yang mungkin)—justeru nama "Kuasa Dua Terkecil". +Kita kemudian menambah semua nilai kuasa dua ini bersama. Matlamat kita adalah untuk mencari garis spesifik di mana jumlah akhir ini adalah paling kecil (nilai terkecil yang boleh)—oleh itu namanya "Least-Squares". > **🧮 Tunjukkan saya matematiknya** > -> Garis ini, dipanggil _garis kesesuaian terbaik_ boleh dinyatakan melalui [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Garis ini, dipanggil _garis kesesuaian terbaik_ boleh dinyatakan oleh [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` adalah 'pemboleh ubah penerang'. `Y` adalah 'pemboleh ubah bergantung'. Kecerunan garis ialah `b` dan `a` adalah pintasan-y, yang merujuk kepada nilai `Y` apabila `X = 0`. +> `X` adalah 'pemboleh ubah penjelas'. `Y` adalah 'pemboleh ubah bersandar'. Kecerunan garis ialah `b` dan `a` ialah pintasan-y, iaitu nilai `Y` apabila `X = 0`. > ->![kira kecerunan](../../../../translated_images/ms/slope.f3c9d5910ddbfcf9.webp) +>![calculate the slope](../../../../translated_images/ms/slope.f3c9d5910ddbfcf9.webp) > > Pertama, kira kecerunan `b`. Infografik oleh [Jen Looper](https://twitter.com/jenlooper) > -> Dengan kata lain, dan merujuk kepada soalan asal data labu kita: "meramalkan harga labu setiap bushel mengikut bulan", `X` merujuk kepada harga dan `Y` merujuk kepada bulan jualan. +> Dalam kata lain, dan merujuk kepada soalan asal data labu kita: "membuat ramalan harga labu per bushel mengikut bulan", `X` merujuk kepada harga dan `Y` merujuk kepada bulan jualan. > ->![lengkapkan persamaan](../../../../translated_images/ms/calculation.a209813050a1ddb1.webp) +>![complete the equation](../../../../translated_images/ms/calculation.a209813050a1ddb1.webp) > -> Kira nilai Y. Jika anda membayar sekitar $4, sudah pasti April! Infografik oleh [Jen Looper](https://twitter.com/jenlooper) +> Kira nilai Y. Jika anda membayar sekitar $4, mestilah April! Infografik oleh [Jen Looper](https://twitter.com/jenlooper) > -> Matematik yang mengira garis itu mesti menunjukkan kecerunan garis, yang juga bergantung pada pintasan, atau di mana `Y` berada apabila `X = 0`. +> Matematik yang mengira garis ini mesti menunjukkan kecerunan garis, yang juga bergantung kepada pintasan, iaitu tempat `Y` terletak apabila `X = 0`. > -> Anda boleh melihat kaedah pengiraan untuk nilai-nilai ini di laman web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Lawati juga [kalkulator Least-squares](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk lihat bagaimana nilai nombor mempengaruhi garis. +> Anda boleh melihat kaedah pengiraan nilai-nilai ini di laman web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Juga lawati [kalkulator Least-squares ini](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk melihat bagaimana nilai nombor mempengaruhi garis. ## Korelasi -Satu lagi istilah untuk difahami ialah **Pekali Korelasi** antara pemboleh ubah X dan Y yang diberi. Dengan menggunakan scatterplot, anda boleh dengan cepat memvisualisasikan pekali ini. Plot dengan titik data bertaburan dalam garis yang kemas mempunyai korelasi tinggi, tetapi plot dengan titik data bertaburan di mana-mana antara X dan Y mempunyai korelasi rendah. +Satu lagi istilah yang perlu difahami ialah **Pekali Korelasi** antara pemboleh ubah X dan Y yang diberikan. Dengan menggunakan scatterplot, anda boleh segera memvisualisasikan pekali ini. Plot dengan titik data yang bersepah membentuk garis kemas mempunyai korelasi tinggi, manakala plot dengan titik data yang bersepah di mana-mana sahaja antara X dan Y mempunyai korelasi rendah. -Model regresi linear yang baik adalah yang mempunyai Pekali Korelasi tinggi (lebih hampir kepada 1 berbanding 0) menggunakan kaedah Regresi Kuasa Dua Terkecil dengan garis regresi. +Model regresi linear yang baik adalah yang mempunyai Pekali Korelasi yang tinggi (lebih hampir kepada 1 daripada 0) menggunakan kaedah Regresi Least-Squares dengan garis regresi. -✅ Jalankan notebook yang disertakan dalam pelajaran ini dan lihat scatterplot Bulan ke Harga. Adakah data yang mengaitkan Bulan dengan Harga untuk jualan labu nampaknya mempunyai korelasi tinggi atau rendah, menurut tafsiran visual anda terhadap scatterplot? Adakah ia berubah jika anda menggunakan ukuran yang lebih terperinci sebagai ganti `Month`, contohnya *hari dalam setahun* (iaitu bilangan hari sejak awal tahun)? +✅ Jalankan notebook yang disertakan pelajaran ini dan lihat scatterplot Bulan ke Harga. Adakah data yang mengaitkan Bulan ke Harga bagi jualan labu kelihatan mempunyai korelasi tinggi atau rendah, mengikut tafsiran visual anda terhadap scatterplot tersebut? Adakah ia berubah jika anda menggunakan ukuran yang lebih terperinci daripada `Month`, contohnya *hari dalam tahun* (iaitu bilangan hari sejak awal tahun)? -Dalam kod di bawah, kita akan menganggap bahawa kita telah membersihkan data, dan memperoleh bingkai data bernama `new_pumpkins`, serupa dengan yang berikut: +Dalam kod di bawah, kita akan mengandaikan bahawa kita telah membersihkan data, dan memperoleh bingkai data yang dinamakan `new_pumpkins`, yang serupa dengan berikut: -ID | Bulan | DayOfYear | Jenis | Bandar | Pembungkusan | Harga Rendah | Harga Tinggi | Harga ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 15.0 | 15.0 | 13.636364 +ID | Bulan | DayOfYear | Jenis | Bandar | Pakej | Harga Rendah | Harga Tinggi | Harga +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 15.0 | 15.0 | 13.636364 -> Kod untuk membersihkan data tersedia dalam [`notebook.ipynb`](notebook.ipynb). Kami telah melaksanakan langkah pembersihan yang sama seperti dalam pelajaran sebelumnya, dan telah mengira lajur `DayOfYear` menggunakan ungkapan berikut: +> Kod untuk membersihkan data boleh didapati dalam [`notebook.ipynb`](notebook.ipynb). Kita telah melakukan langkah pembersihan yang sama seperti dalam pelajaran sebelumnya, dan telah mengira lajur `DayOfYear` menggunakan ungkapan berikut: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Sekarang anda sudah faham matematik di belakang regresi linear, mari bina model Regresi untuk melihat sama ada kita boleh meramalkan pakej labu mana yang akan mempunyai harga labu terbaik. Seseorang yang membeli labu untuk tapak labu perayaan mungkin mahukan maklumat ini untuk mengoptimumkan pembelian pakej labu mereka untuk tapak tersebut. + +Sekarang bahawa anda memahami matematik di sebalik regresi linear, mari cipta model Regresi untuk melihat jika kita boleh meramalkan pakej mana labu yang akan mempunyai harga labu terbaik. Seseorang yang membeli labu untuk kawasan labu perayaan mungkin mahukan maklumat ini untuk mengoptimumkan pembelian pakej labu mereka. ## Mencari Korelasi [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Klik imej di atas untuk video ringkas gambaran keseluruhan korelasi. +> 🎥 Klik imej di atas untuk tontonan video ringkas mengenai korelasi. -Daripada pelajaran sebelumnya anda mungkin telah melihat bahawa harga purata untuk bulan yang berbeza kelihatan seperti ini: +Daripada pelajaran sebelum ini anda mungkin telah melihat bahawa harga purata bagi bulan-bulan berbeza kelihatan seperti ini: Average price by month -Ini mencadangkan bahawa wujud beberapa korelasi, dan kita boleh cuba melatih model regresi linear untuk meramalkan hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut ialah plot taburan yang menunjukkan hubungan kedua: +Ini mencadangkan bahawa harus ada korelasi tertentu, dan kita boleh cuba melatih model regresi linear untuk meramalkan hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut adalah scatter plot yang menunjukkan hubungan yang kedua: -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -Mari lihat sama ada terdapat korelasi menggunakan fungsi `corr`: +Mari kita lihat jika terdapat korelasi menggunakan fungsi `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Nampaknya korelasinya agak kecil, -0.15 mengikut `Month` dan -0.17 mengikut `DayOfMonth`, tetapi mungkin ada hubungan penting lain. Nampaknya terdapat kluster harga yang berbeza berhubung dengan varieti labu yang berbeza. Untuk mengesahkan hipotesis ini, mari plot setiap kategori labu menggunakan warna yang berbeza. Dengan memberikan parameter `ax` kepada fungsi plot `scatter` kita boleh plot semua titik pada graf yang sama: + +Nampaknya korelasi agak kecil, -0.15 mengikut `Month` dan -0.17 mengikut `DayOfYear`, tetapi mungkin ada hubungan penting lain. Nampaknya terdapat kelompok harga yang berbeza berkaitan dengan pelbagai jenis labu. Untuk mengesahkan hipotesis ini, mari plotkan setiap kategori labu menggunakan warna yang berbeza. Dengan memberikan parameter `ax` kepada fungsi `scatter` kita boleh plot semua titik pada graf yang sama: ```python ax=None @@ -139,41 +139,41 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Scatter plot of Price vs. Day of Year -Scatter plot of Price vs. Day of Year - -Siasatan kami mencadangkan bahawa varieti mempunyai kesan lebih ke atas harga keseluruhan berbanding tarikh jualan sebenar. Kita boleh lihat ini dengan graf bar: +Penyiasatan kita mencadangkan bahawa jenis labu mempunyai lebih kesan ke atas harga keseluruhan daripada tarikh jualan sebenar. Kita dapat lihat ini dengan graf bar: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Bar graph of price vs variety -Bar graph of price vs variety - -Marilah kita fokus buat masa ini hanya pada satu varieti labu, iaitu 'jenis pai', dan lihat kesan tarikh ke atas harga: +Mari kita fokus buat masa ini pada satu jenis labu, iaitu 'jenis pai', dan lihat kesan tarikh ke atas harga: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -Jika kita kira korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan mendapat nilai sekitar `-0.27` - yang bermakna melatih model ramalan adalah wajar. +Jika kita sekarang mengira korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan dapat nilai lebih kurang `-0.27` - yang bermakna melatih model ramalan adalah munasabah. -> Sebelum melatih model regresi linear, adalah penting untuk memastikan data kita bersih. Regresi linear tidak berfungsi dengan baik dengan nilai kosong, maka adalah wajar untuk membuang semua sel kosong: +> Sebelum melatih model regresi linear, adalah penting untuk memastikan data kita bersih. Regresi linear tidak berfungsi dengan baik dengan nilai hilang, maka adalah wajar untuk membuang semua sel kosong: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Pendekatan lain ialah mengisi nilai kosong tersebut dengan nilai purata daripada lajur berkenaan. + +Pendekatan lain adalah mengisi nilai kosong tersebut dengan nilai purata dari lajur yang sepadan. ## Regresi Linear Mudah [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Klik imej di atas untuk video ringkas gambaran keseluruhan regresi linear dan polinomial. +> 🎥 Klik imej di atas untuk tontonan video ringkas mengenai regresi linear dan polinomial. Untuk melatih model Regresi Linear kita, kita akan menggunakan perpustakaan **Scikit-learn**. @@ -182,32 +182,32 @@ from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Kita mulakan dengan memisahkan nilai input (ciri) dan output yang dijangka (label) ke dalam array numpy yang berasingan: + +Kita mulakan dengan memisahkan nilai input (ciri) dan output yang dijangkakan (label) ke dalam array numpy yang berasingan: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Perhatikan bahawa kita terpaksa melakukan `reshape` ke atas data input supaya pakej Regresi Linear memahami dengan betul. Regresi Linear mengharapkan array 2D sebagai input, di mana setiap baris array sepadan dengan satu vektor ciri input. Dalam kes kita, kerana kita hanya ada satu input - kita perlukan array dengan bentuk N×1, di mana N ialah saiz dataset. -> Perhatikan bahawa kita perlu melakukan `reshape` ke atas data input supaya pakej Regresi Linear memahaminya dengan betul. Regresi Linear menjangka input dalam bentuk array 2D, di mana setiap baris array mewakili vektor ciri input. Dalam kes kita, kerana kita hanya ada satu input - kita perlukan array berbentuk N×1, di mana N adalah saiz dataset. - -Kemudian, kita perlu membahagikan data kepada dataset latihan dan ujian, supaya kita boleh mengesahkan model kita selepas latihan: +Kemudian, kita perlu membahagikan data ke dalam dataset latihan dan ujian, supaya kita boleh mengesahkan model selepas latihan: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Akhir sekali, melatih model Regresi Linear sebenar hanya mengambil dua baris kod. Kita mentakrif objek `LinearRegression`, dan melatihnya pada data kita menggunakan kaedah `fit`: + +Akhir sekali, melatih model Regresi Linear yang sebenar hanya mengambil dua baris kod. Kita mentakrifkan objek `LinearRegression`, dan memasukannya dengan data kita menggunakan kaedah `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objek `LinearRegression` selepas `fit`-ting mengandungi semua koefisien regresi, yang boleh diakses menggunakan sifat `.coef_`. Dalam kes kami, terdapat hanya satu koefisien, yang sepatutnya sekitar `-0.017`. Ini bermakna harga kelihatan turun sedikit dengan masa, tetapi tidak terlalu banyak, sekitar 2 sen sehari. Kita juga boleh mengakses titik persilangan regresi dengan paksi Y menggunakan `lin_reg.intercept_` - ia akan sekitar `21` dalam kes kami, menunjukkan harga pada permulaan tahun. +Objek `LinearRegression` selepas `fit` mengandungi semua pekali regresi, yang boleh diakses menggunakan sifat `.coef_`. Dalam kes kami, hanya ada satu pekali, yang sepatutnya sekitar `-0.017`. Ini bermakna harga nampaknya menurun sedikit dengan masa, tetapi tidak terlalu banyak, sekitar 2 sen sehari. Kami juga boleh mengakses titik pertemuan regresi dengan paksi Y menggunakan `lin_reg.intercept_` - ia akan sekitar `21` dalam kes kami, menunjukkan harga pada awal tahun. -Untuk melihat sejauh mana ketepatan model kami, kita boleh meramalkan harga pada set data ujian, dan kemudian mengukur sejauh mana ramalan kami dekat dengan nilai yang dijangkakan. Ini boleh dilakukan menggunakan metrik galat kuasa dua purata punca (RMSE), iaitu punca bagi purata semua perbezaan kuasa dua antara nilai yang dijangkakan dan diramalkan. +Untuk melihat sejauh mana tepatnya model kami, kami boleh meramalkan harga pada dataset ujian, dan kemudian mengukur sejauh mana ramalan kami hampir dengan nilai yang dijangka. Ini boleh dilakukan menggunakan metrik ralat kuasa dua purata (RMSE), yang merupakan punca kuasa dua purata semua perbezaan kuasa dua antara nilai dijangka dan diramal. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Galat kami kelihatan sekitar 2 mata, iaitu ~17%. Tidak terlalu baik. Penunjuk lain bagi kualiti model ialah **koefisien penentuan**, yang boleh diperoleh seperti berikut: +Ralat kami nampaknya sekitar 2 mata, iaitu ~17%. Tidak begitu baik. Penunjuk lain tentang kualiti model adalah **koefisien penentuan**, yang boleh diperoleh seperti berikut: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Jika nilai adalah 0, ini bermakna model tidak mengambil kira data input, dan berfungsi sebagai *peramal linear yang paling teruk*, iaitu nilai purata hasil sahaja. Nilai 1 bermakna kita boleh meramalkan semua output yang dijangkakan dengan sempurna. Dalam kes kami, koefisien adalah sekitar 0.06, yang agak rendah. +Jika nilai adalah 0, ia bermakna model tidak mengambil kira data input, dan bertindak sebagai *peramal linear terburuk*, yang hanya nilai purata hasil. Nilai 1 bermaksud kita boleh meramalkan semua output yang dijangka dengan sempurna. Dalam kes kami, koefisien sekitar 0.06, yang agak rendah. -Kita juga boleh plot data ujian bersama dengan garis regresi untuk melihat dengan lebih baik bagaimana regresi berfungsi dalam kes kami: +Kami juga boleh memplot data ujian bersama dengan garis regresi untuk lebih jelas melihat bagaimana regresi berfungsi dalam kes kami: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Regresi Polinomial -Satu lagi jenis Regresi Linear ialah Regresi Polinomial. Walaupun kadang-kadang terdapat hubungan linear antara pembolehubah - semakin besar labu dari segi isi padu, semakin tinggi harga - kadang-kadang hubungan ini tidak boleh digambarkan sebagai satah atau garis lurus. +Satu lagi jenis Regresi Linear ialah Regresi Polinomial. Walaupun kadangkala terdapat hubungan linear antara pembolehubah - semakin besar labu dari segi isi padu, semakin tinggi harga - kadangkala hubungan ini tidak dapat diplot sebagai satah atau garis lurus. ✅ Berikut adalah [beberapa contoh lagi](https://online.stat.psu.edu/stat501/lesson/9/9.8) data yang boleh menggunakan Regresi Polinomial -Lihat sekali lagi hubungan antara Tarikh dan Harga. Adakah plot taburan ini semestinya perlu dianalisis menggunakan garis lurus? Bukankah harga boleh berubah-ubah? Dalam kes ini, anda boleh cuba regresi polinomial. +Lihat sekali lagi hubungan antara Tarikh dan Harga. Adakah scatterplot ini nampak seperti perlu dianalisis dengan garis lurus? Tidakkah harga boleh berubah-ubah? Dalam kes ini, anda boleh cuba regresi polinomial. -✅ Polinomial adalah ekspresi matematik yang mungkin terdiri daripada satu atau lebih pembolehubah dan koefisien +✅ Polinomial ialah ungkapan matematik yang mungkin mengandungi satu atau lebih pembolehubah dan pekali -Regresi polinomial menghasilkan garis melengkung untuk menyesuaikan data bukan linear dengan lebih baik. Dalam kes kami, jika kami memasukkan pembolehubah kuasa dua `DayOfYear` ke dalam data input, kami sepatutnya dapat menyesuaikan data kami dengan lengkung parabola, yang akan mempunyai nilai minimum pada suatu titik dalam tahun. +Regresi polinomial menghasilkan garis melengkung untuk menyesuaikan data taklinear dengan lebih baik. Dalam kes kami, jika kami termasuk pembolehubah `DayOfYear` dikuasakan dua dalam data input, kami sepatutnya dapat menyesuaikan data kami dengan lengkung parabola, yang akan mempunyai minimum pada suatu titik dalam tahun tersebut. -Scikit-learn termasuk API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan langkah-langkah pemprosesan data yang berbeza bersama-sama. Sebuah **pipeline** adalah rantai **penganggar**. Dalam kes kami, kami akan membuat pipeline yang pertama menambah ciri polinomial ke model kami, kemudian melatih regresi: +Scikit-learn menyediakan API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan beberapa langkah pemprosesan data bersama-sama. **Pipeline** ialah rantai **penganggar**. Dalam kes kami, kami akan membuat pipeline yang pertama-tama menambah ciri polinomial kepada model kami, dan kemudian melatih regresi: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,23 +256,45 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Menggunakan `PolynomialFeatures(2)` bermakna kami akan memasukkan semua polinomial darjah kedua dari data input. Dalam kes kami ia hanya bermaksud `DayOfYear`2, tetapi jika diberikan dua pembolehubah input X dan Y, ini akan menambah X2, XY dan Y2. Kami juga boleh menggunakan polinomial darjah lebih tinggi jika mahu. +Menggunakan `PolynomialFeatures(2)` bermakna kami akan memasukkan semua polinomial darjah dua dari data input. Dalam kes kami ia hanya bermakna `DayOfYear`2, tetapi diberikan dua pembolehubah input X dan Y, ini akan menambah X2, XY dan Y2. Kami juga boleh menggunakan polinomial darjah lebih tinggi jika mahu. + +Pipeline boleh digunakan sama seperti objek `LinearRegression` asal, iaitu kami boleh `fit` pipeline, dan kemudian menggunakan `predict` untuk mendapatkan hasil ramalan: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Untuk melukis lengkung anggaran yang licin, kami menggunakan `np.linspace` untuk membuat julat nilai input yang seragam, bukannya melukis terus pada data ujian yang tidak tersusun (yang akan menghasilkan garis bergelombang): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline boleh digunakan dengan cara yang sama seperti objek `LinearRegression` asal, iaitu kami boleh `fit` pipeline, dan kemudian menggunakan `predict` untuk mendapatkan hasil ramalan. Berikut adalah graf yang menunjukkan data ujian dan lengkung anggaran: +Ini ialah graf yang menunjukkan data ujian, dan lengkung anggaran: Polynomial regression -Dengan menggunakan Regresi Polinomial, kami boleh mendapatkan MSE yang sedikit lebih rendah dan koefisien penentuan yang lebih tinggi, tetapi tidak secara signifikan. Kami perlu mengambil kira ciri-ciri lain! +Menggunakan Regresi Polinomial, kami boleh mendapat RMSE yang sedikit lebih rendah dan koefisien penentuan yang lebih tinggi, tetapi tidak signifikan. Kami perlu mengambil kira ciri-ciri lain! -> Anda boleh melihat bahawa harga labu minima diperhatikan sekitar Halloween. Bagaimana anda boleh menerangkannya? +> Anda boleh lihat bahawa harga labu terendah diperhatikan sekitar Halloween. Bagaimana anda boleh menjelaskan ini? -🎃 Tahniah, anda baru sahaja mencipta model yang boleh membantu meramalkan harga labu pai. Anda mungkin boleh mengulangi prosedur yang sama untuk semua jenis labu, tetapi itu akan memenatkan. Mari kita pelajari sekarang cara mengambil kira varieti labu dalam model kita! +🎃 Tahniah, anda baru sahaja mencipta model yang boleh membantu meramalkan harga labu pai. Anda mungkin boleh mengulangi prosedur yang sama untuk semua jenis labu, tetapi itu akan melecehkan. Mari kita pelajari sekarang bagaimana untuk mengambil kira varieti labu dalam model kami! ## Ciri Kategori -Dalam dunia ideal, kami mahu dapat meramalkan harga untuk varieti labu yang berbeza menggunakan model yang sama. Namun, lajur `Variety` agak berbeza daripada lajur seperti `Month`, kerana ia mengandungi nilai bukan angka. Lajur sebegini dipanggil **kategori**. +Dalam dunia ideal, kami ingin dapat meramalkan harga untuk pelbagai varieti labu menggunakan model yang sama. Walau bagaimanapun, lajur `Variety` agak berbeza daripada lajur seperti `Month`, kerana ia mengandungi nilai bukan berangka. Lajur seperti ini dipanggil **kategori**. -[![ML untuk pemula - Ramalan Ciri Kategori dengan Regresi Linear](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML untuk pemula - Ramalan Ciri Kategori dengan Regresi Linear") +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") > 🎥 Klik imej di atas untuk video ringkas mengenai penggunaan ciri kategori. @@ -280,12 +302,12 @@ Di sini anda boleh lihat bagaimana harga purata bergantung pada varieti: Average price by variety -Untuk mengambil kira varieti, pertama kita perlu menukarnya ke bentuk nombor, atau **mengekod**nya. Terdapat beberapa cara kita boleh lakukannya: +Untuk mengambil kira varieti, kita terlebih dahulu perlu menukarnya kepada bentuk berangka, atau **m encode** ia. Terdapat beberapa cara kita boleh lakukan: -* Pengekodan **nombor mudah** akan membina jadual varieti yang berbeza, kemudian menggantikan nama varieti dengan indeks dalam jadual tersebut. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai nombor sebenar indeks, dan menambahkannya ke hasil, dengan darab koefisien tertentu. Dalam kes kami, hubungan antara nombor indeks dan harga jelas bukan linear, walaupun jika kami memastikan indeks disusun dalam cara tertentu. -* **Pengekodan one-hot** akan menggantikan lajur `Variety` dengan 4 lajur berbeza, satu untuk setiap varieti. Setiap lajur akan mengandungi `1` jika baris berkenaan adalah varieti tertentu, dan `0` jika tidak. Ini bermakna ada empat koefisien dalam regresi linear, satu untuk setiap varieti labu, yang bertanggungjawab untuk "harga permulaan" (atau lebih tepat "harga tambahan") bagi varieti berkenaan. +* **Pengekodan berangka** mudah akan membina jadual varieti yang berbeza, dan kemudian menggantikan nama varieti dengan indeks dalam jadual itu. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai berangka sebenar indeks, dan menambahkannya ke hasil, didarab dengan pekali tertentu. Dalam kes kami, hubungan antara nombor indeks dan harga jelas tidak linear, walaupun kami pastikan indeks diatur dalam sesuatu susunan tertentu. +* **One-hot encoding** akan menggantikan lajur `Variety` dengan 4 lajur berlainan, satu untuk setiap varieti. Setiap lajur akan mengandungi `1` jika baris sepadan adalah varieti tertentu, dan `0` jika tidak. Ini bermakna akan ada empat pekali dalam regresi linear, satu untuk setiap varieti labu, bertanggungjawab untuk "harga permulaan" (atau lebih tepat "harga tambahan") untuk varieti tersebut. -Kod di bawah menunjukkan bagaimana kita boleh mengekod varieti secara one-hot: +Kod di bawah menunjukkan bagaimana kita boleh one-hot encode varieti: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Untuk melatih regresi linear menggunakan varieti yang telah dienkod one-hot sebagai input, kita hanya perlu inisialisasi data `X` dan `y` dengan betul: +Untuk melatih regresi linear menggunakan varieti yang telah di-one-hot encode sebagai input, kita hanya perlu inisialisasi data `X` dan `y` dengan betul: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Selepas itu, kod adalah sama seperti yang kami gunakan sebelum ini untuk melatih Regresi Linear. Jika anda mencubanya, anda akan lihat galat kuasa dua purata hampir sama, tetapi koefisien penentuan jauh lebih tinggi (~77%). Untuk mendapatkan ramalan yang lebih tepat, kita boleh mengambil lebih banyak ciri kategori serta ciri numerik, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu tatasusunan besar ciri, kita boleh menggunakan `join`: +Baki kod adalah sama seperti yang kami gunakan sebelum ini untuk melatih Regresi Linear. Jika anda mencubanya, anda akan lihat bahawa ralat kuasa dua purata adalah lebih kurang sama, tetapi kami mendapat koefisien penentuan yang jauh lebih tinggi (~77%). Untuk mendapatkan ramalan yang lebih tepat, kita boleh mengambil kira lebih banyak ciri kategori, serta ciri berangka, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu tatasusunan ciri yang besar, kita boleh gunakan `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Di sini kami juga mengambil kira `City` dan jenis `Package`, yang menghasilkan MSE 2.84 (10%), dan penentuan 0.94! +Di sini kami juga mengambil kira `City` dan jenis `Package`, yang memberikan kami RMSE 2.84 (10.5%), dan koefisien penentuan 0.94! -## Menggabungkan semuanya +## Menggabungkan Kesemuanya -Untuk membuat model terbaik, kita boleh menggunakan data gabungan (kategori yang dienkod one-hot + numerik) dari contoh di atas bersama Regresi Polinomial. Berikut adalah kod lengkap untuk kemudahan anda: +Untuk membuat model terbaik, kami boleh gunakan data gabungan (categorical yang di-one-hot encode + data berangka) dari contoh di atas bersama Regresi Polinomial. Berikut adalah kod lengkap untuk kemudahan anda: ```python # sediakan data latihan @@ -333,27 +355,27 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# buat pembahagian latih-uji +# buat pecahan latih-uji X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# sediakan dan latih saluran paip +# sediakan dan latih laluan paip pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ramalan keputusan untuk data ujian +# ramal keputusan untuk data ujian pred = pipeline.predict(X_test) -# kira MSE dan penentuan -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# kira RMSE dan penentuan +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Ini sepatutnya memberikan koefisien penentuan terbaik hampir 97%, dan MSE=2.23 (~8% galat ramalan). +Ini sepatutnya memberikan koefisien penentuan terbaik hampir 97%, dan RMSE=2.23 (~8% ralat ramalan). -| Model | MSE | Penentuan | +| Model | RMSE | Penentuan | |-------|-----|-----------| | Linear `DayOfYear` | 2.77 (17.2%) | 0.07 | | Polinomial `DayOfYear` | 2.73 (17.0%) | 0.08 | @@ -361,26 +383,26 @@ Ini sepatutnya memberikan koefisien penentuan terbaik hampir 97%, dan MSE=2.23 ( | Linear Semua ciri | 2.84 (10.5%) | 0.94 | | Polinomial Semua ciri | 2.23 (8.25%) | 0.97 | -🏆 Tahniah! Anda telah mencipta empat model Regresi dalam satu pelajaran, dan meningkatkan kualiti model kepada 97%. Dalam bahagian akhir mengenai Regresi, anda akan belajar mengenai Regresi Logistik untuk menentukan kategori. +🏆 Tahniah! Anda telah mencipta empat model Regresi dalam satu pelajaran, dan meningkatkan kualiti model ke 97%. Dalam bahagian akhir mengenai Regresi, anda akan belajar tentang Regresi Logistik untuk menentukan kategori. --- ## 🚀Cabaran -Uji beberapa pembolehubah berbeza dalam buku nota ini untuk melihat bagaimana korelasi berkaitan dengan ketepatan model. +Uji beberapa pembolehubah berbeza dalam buku nota ini untuk melihat bagaimana korelasi berkait dengan ketepatan model. ## [Kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ml/) ## Ulasan & Belajar Sendiri -Dalam pelajaran ini kita belajar tentang Regresi Linear. Terdapat jenis Regresi penting lain. Baca tentang teknik Stepwise, Ridge, Lasso dan Elasticnet. Kursus yang baik untuk dipelajari ialah [Kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Dalam pelajaran ini kami belajar mengenai Regresi Linear. Terdapat jenis Regresi penting lain. Baca mengenai teknik Stepwise, Ridge, Lasso dan Elasticnet. Kursus yang baik untuk dipelajari bagi mendalami adalah [kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Tugasan +## Tugasan -[Membina Model](assignment.md) +[Bangunkan Model](assignment.md) --- **Penafian**: -Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila maklum bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya hendaklah dianggap sebagai sumber yang rasmi. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ms/2-Regression/3-Linear/solution/notebook.ipynb index 5ce055bfdf..77f21a5cdb 100644 --- a/translations/ms/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ms/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Regresi Linear dan Polinomial untuk Penetapan Harga Labu - Pelajaran 3\n", + "## Regresi Linear dan Polinomial untuk Penentuan Harga Labu - Pelajaran 3\n", "\n", - "Muatkan perpustakaan dan dataset yang diperlukan. Tukarkan data kepada dataframe yang mengandungi subset data:\n", + "Muatkan perpustakaan dan dataset yang diperlukan. Tukar data kepada dataframe yang mengandungi subset data:\n", "\n", - "- Hanya ambil labu yang dihargai mengikut unit bushel\n", - "- Tukarkan tarikh kepada bulan\n", - "- Kira harga sebagai purata daripada harga tinggi dan rendah\n", - "- Tukarkan harga untuk mencerminkan penetapan harga mengikut kuantiti bushel\n" + "- Hanya dapatkan labu yang dihargai berdasarkan ukur bushel\n", + "- Tukar tarikh kepada bulan\n", + "- Kira harga sebagai purata harga tertinggi dan terendah\n", + "- Tukar harga untuk mencerminkan harga berdasarkan kuantiti bushel\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Plot taburan mengingatkan kita bahawa kita hanya mempunyai data bulan dari Ogos hingga Disember. Kita mungkin memerlukan lebih banyak data untuk dapat membuat kesimpulan secara linear.\n" + "Carta sebar mengingatkan kita bahawa kita hanya mempunyai data bulan dari Ogos hingga Disember. Kita mungkin memerlukan lebih banyak data untuk dapat membuat kesimpulan secara linear.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Mari kita lihat jika terdapat korelasi:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nampaknya korelasi agak kecil, tetapi terdapat hubungan lain yang lebih penting - kerana titik harga dalam plot di atas kelihatan mempunyai beberapa kelompok yang berbeza. Mari kita buat plot yang akan menunjukkan pelbagai jenis labu:\n" + "Nampaknya korelasi agak kecil, tetapi terdapat hubungan lain yang lebih penting - kerana titik harga dalam plot di atas nampaknya mempunyai beberapa kelompok yang berbeza. Mari buat satu plot yang akan menunjukkan pelbagai jenis labu:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Untuk sementara, mari tumpukan perhatian hanya pada satu jenis sahaja - **jenis pai**.\n" + ] }, { "cell_type": "code", @@ -720,9 +724,9 @@ "source": [ "### Regresi Polinomial\n", "\n", - "Kadangkala hubungan antara ciri-ciri dan hasil adalah secara semula jadi tidak linear. Sebagai contoh, harga labu mungkin tinggi pada musim sejuk (bulan=1,2), kemudian menurun pada musim panas (bulan=5-7), dan kemudian meningkat semula. Regresi linear tidak dapat mencari hubungan ini dengan tepat.\n", + "Kadang-kadang hubungan antara ciri dan keputusan adalah secara semulajadi tidak linear. Sebagai contoh, harga labu mungkin tinggi pada musim sejuk (bulan=1,2), kemudian menurun pada musim panas (bulan=5-7), dan kemudian naik semula. Regresi linear tidak dapat menemui hubungan ini dengan tepat.\n", "\n", - "Dalam kes ini, kita boleh mempertimbangkan untuk menambah ciri-ciri tambahan. Cara mudah adalah dengan menggunakan polinomial daripada ciri input, yang akan menghasilkan **regresi polinomial**. Dalam Scikit Learn, kita boleh secara automatik mengira ciri-ciri polinomial menggunakan pipelines:\n" + "Dalam kes ini, kita boleh mempertimbangkan untuk menambah ciri tambahan. Cara mudah adalah menggunakan polinomial dari ciri input, yang akan menghasilkan **regresi polinomial**. Dalam Scikit Learn, kita boleh mengira ciri polinomial secara automatik menggunakan pipeline: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Pengekodan jenis\n", + "### Variasi pengekodan\n", "\n", - "Dalam dunia ideal, kita ingin dapat meramalkan harga untuk pelbagai jenis labu menggunakan model yang sama. Untuk mengambil kira jenis, kita perlu menukarkannya kepada bentuk angka terlebih dahulu, atau **mengekod**. Terdapat beberapa cara untuk melakukannya:\n", + "Dalam dunia yang ideal, kita ingin dapat meramalkan harga untuk pelbagai jenis labu menggunakan model yang sama. Untuk mengambil kira jenis, kita terlebih dahulu perlu menukarnya ke dalam bentuk numerik, atau **pengekodan**. Terdapat beberapa cara yang kita boleh lakukan:\n", "\n", - "* Pengekodan angka mudah yang akan membina jadual jenis yang berbeza, dan kemudian menggantikan nama jenis dengan indeks dalam jadual tersebut. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai angka indeks sebagai faktor, dan nilai angka tersebut mungkin tidak berkorelasi secara numerik dengan harga.\n", - "* Pengekodan satu-haba (one-hot encoding), yang akan menggantikan lajur `Variety` dengan 4 lajur berbeza, satu untuk setiap jenis, yang akan mengandungi 1 jika baris yang sepadan adalah jenis tertentu, dan 0 jika tidak.\n", + "* Pengekodan numerik mudah yang akan membina jadual pelbagai jenis, dan kemudian menggantikan nama jenis dengan indeks dalam jadual itu. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai numerik indeks itu kira, dan nilai numerik itu mungkin tidak berkorelasi secara numerik dengan harga.\n", + "* Pengekodan satu panas (one-hot encoding), yang akan menggantikan lajur `Variety` dengan 4 lajur berbeza, satu untuk setiap jenis, yang akan mengandungi 1 jika baris yang bersesuaian adalah dari jenis yang diberikan, dan 0 jika tidak.\n", "\n", - "Kod di bawah menunjukkan bagaimana kita boleh mengekod satu-haba untuk jenis:\n" + "Kod di bawah menunjukkan bagaimana kita boleh melakukan one-hot encode untuk jenis:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Regresi Linear pada Variasi\n", + "### Regresi Linear pada Varieti\n", "\n", - "Kita akan menggunakan kod yang sama seperti di atas, tetapi kali ini, bukannya `DayOfYear`, kita akan menggunakan variasi yang telah diubah kepada satu-hot-encoded sebagai input:\n" + "Kita akan menggunakan kod yang sama seperti di atas, tetapi bukannya `DayOfYear` kita akan menggunakan varieti yang telah dikodkan satu-panas sebagai input:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Regresi Polinomial\n", "\n", - "Regresi polinomial juga boleh digunakan dengan ciri kategori yang telah dikodkan satu-panas. Kod untuk melatih regresi polinomial pada dasarnya akan sama seperti yang telah kita lihat di atas.\n" + "Regresi polinomial juga boleh digunakan dengan ciri kategori yang telah di-one-hot-encode. Kod untuk melatih regresi polinomial secara asasnya adalah sama seperti yang telah kita lihat di atas.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.\n" + "---\n\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya hendaklah dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau tafsiran yang timbul daripada penggunaan terjemahan ini.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T11:30:12+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ms" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/tl/.co-op-translator.json b/translations/tl/.co-op-translator.json index 8489f407d5..1c03232473 100644 --- a/translations/tl/.co-op-translator.json +++ b/translations/tl/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "tl" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T18:18:13+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:45:46+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "tl" }, @@ -90,8 +90,8 @@ "language_code": "tl" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:49:29+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:45:17+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "tl" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "tl" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:41:55+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "tl" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T18:10:22+00:00", diff --git a/translations/tl/1-Introduction/4-techniques-of-ML/README.md b/translations/tl/1-Introduction/4-techniques-of-ML/README.md index d7f5833e40..0dfaf6fb30 100644 --- a/translations/tl/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/tl/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Mga Teknik ng Machine Learning -Ang proseso ng pagbuo, paggamit, at pagpapanatili ng mga modelo ng machine learning at ang datos na ginagamit nito ay ibang-iba kumpara sa maraming iba pang mga workflow ng pag-develop. Sa araling ito, lilinawin natin ang proseso at ilalahad ang mga pangunahing teknik na kailangan mong malaman. Ikaw ay: +Ang proseso ng paggawa, paggamit, at pagpapanatili ng mga modelo ng machine learning at ng data na ginagamit nila ay isang napakaibang proseso kumpara sa maraming iba pang mga daloy ng pag-unlad. Sa leksyong ito, bibigyang-katuwiran natin ang proseso, at ilalahad ang mga pangunahing teknik na kailangan mong malaman. Iyong gagawin: -- Mauunawaan ang mga proseso sa likod ng machine learning sa mataas na antas. -- Susuriin ang mga pangunahing konsepto tulad ng 'mga modelo', 'mga prediksyon', at 'training data'. +- Maunawaan ang mga prosesong nagpapailalim sa machine learning sa mataas na antas. +- Tuklasin ang mga pangunahing konsepto tulad ng 'mga modelo', 'mga hula', at 'pagsasanay ng data'. ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -[![ML para sa mga baguhan - Mga Teknik ng Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML para sa mga baguhan - Mga Teknik ng Machine Learning") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 I-click ang imahe sa itaas para sa isang maikling video na tumatalakay sa araling ito. +> 🎥 I-click ang larawan sa itaas para sa isang maikling video na ginagabayan ang lektyong ito. ## Panimula Sa mataas na antas, ang sining ng paglikha ng mga proseso ng machine learning (ML) ay binubuo ng ilang mga hakbang: -1. **Magpasya sa tanong**. Karamihan sa mga proseso ng ML ay nagsisimula sa pagtatanong ng tanong na hindi masagot ng simpleng conditional program o rules-based engine. Ang mga tanong na ito ay madalas na umiikot sa mga prediksyon batay sa koleksyon ng datos. -2. **Kolektahin at ihanda ang datos**. Upang masagot ang iyong tanong, kailangan mo ng datos. Ang kalidad at, minsan, dami ng iyong datos ang magtatakda kung gaano kahusay mong masasagot ang iyong tanong. Ang pag-visualize ng datos ay mahalagang aspeto ng yugtong ito. Kasama rin dito ang paghahati ng datos sa training at testing group upang makabuo ng modelo. -3. **Pumili ng paraan ng training**. Depende sa iyong tanong at sa likas na katangian ng iyong datos, kailangan mong pumili kung paano mo gustong i-train ang modelo upang pinakamahusay na maipakita ang datos at makagawa ng tumpak na prediksyon. Ang bahaging ito ng proseso ng ML ay nangangailangan ng tiyak na kadalubhasaan at, madalas, maraming eksperimento. -4. **I-train ang modelo**. Gamit ang iyong training data, gagamit ka ng iba't ibang algorithm upang i-train ang modelo na makilala ang mga pattern sa datos. Ang modelo ay maaaring gumamit ng internal weights na maaaring i-adjust upang bigyang-priyoridad ang ilang bahagi ng datos kaysa sa iba upang makabuo ng mas mahusay na modelo. -5. **Suriin ang modelo**. Gagamit ka ng datos na hindi pa nakikita (ang iyong testing data) mula sa nakolektang set upang makita kung paano gumagana ang modelo. -6. **Parameter tuning**. Batay sa performance ng iyong modelo, maaari mong ulitin ang proseso gamit ang iba't ibang parameter o variable na kumokontrol sa pag-uugali ng mga algorithm na ginamit upang i-train ang modelo. -7. **Mag-predict**. Gumamit ng bagong inputs upang subukan ang katumpakan ng iyong modelo. +1. **Magpasya sa tanong**. Karamihan sa mga proseso ng ML ay nagsisimula sa pagtatanong ng isang tanong na hindi masasagot ng simpleng programang de-kondisyunal o ng mga patakarang batay-sa-patakarang makina. Madalas na ang mga tanong na ito ay nakatuon sa mga hula batay sa isang koleksyon ng data. +2. **Kolektahin at ihanda ang data**. Para masagot mo ang iyong tanong, kailangan mo ng data. Ang kalidad at, minsan, dami ng iyong data ang magtatakda kung gaano kaayos mong masasagot ang iyong paunang tanong. Ang pag-visualize ng data ay isang mahalagang bahagi ng yugtong ito. Kabilang din sa yugtong ito ang paghati ng data sa isang pangkat ng pagsasanay at pagsusulit upang makabuo ng modelo. +3. **Pumili ng paraan ng pagsasanay**. Depende sa iyong tanong at sa katangian ng iyong data, kailangan mong piliin kung paano mo nais sanayin ang modelo upang pinakamahusay na maipakita ang iyong data at makagawa ng tumpak na mga hula laban dito. Ito ang bahagi ng iyong proseso ng ML na nangangailangan ng espesipikong kadalubhasaan at, madalas, ng maraming eksperimento. +4. **Sanayin ang modelo**. Gamit ang iyong data sa pagsasanay, gagamitin mo ang iba't ibang mga algorithm upang sanayin ang modelo na kilalanin ang mga pattern sa data. Maaaring gamitin ng modelo ang mga panloob na bigat na maaaring ayusin upang bigyang-pansin ang ilang bahagi ng data kaysa sa iba para makabuo ng mas mahusay na modelo. +5. **Suriin ang modelo**. Gagamitin mo ang data na hindi pa nasilipan dati (ang iyong testing data) mula sa iyong koleksyon upang makita kung paano gumagana ang modelo. +6. **Parameter tuning**. Batay sa pagganap ng modelo mo, maaari mong ulitin ang proseso gamit ang ibang mga parameter, o mga baryabol, na kumokontrol sa kilos ng mga algorithm na ginamit sa pagsasanay ng modelo. +7. **Mangguhula**. Gamitin ang mga bagong input para subukan ang katumpakan ng iyong modelo. ## Anong tanong ang dapat itanong -Ang mga computer ay partikular na mahusay sa pagtuklas ng mga nakatagong pattern sa datos. Ang kakayahang ito ay napakahalaga para sa mga mananaliksik na may mga tanong tungkol sa isang partikular na larangan na hindi madaling masagot sa pamamagitan ng paggawa ng conditionally-based rules engine. Halimbawa, sa isang actuarial na gawain, maaaring makagawa ang isang data scientist ng mga handcrafted rules tungkol sa mortality ng mga naninigarilyo kumpara sa mga hindi naninigarilyo. +Sanay ang mga computer sa pagtuklas ng mga nakatagong pattern sa data. Ang kapaki-pakinabang na ito ay napaka-kapaki-pakinabang para sa mga mananaliksik na may mga tanong tungkol sa isang tiyak na larangan na hindi madaling masagot sa pamamagitan ng paggawa ng kondisyonal na rules engine. Halimbawa, sa isang actuarial na gawain, maaaring makagawa ang isang data scientist ng mga gawang-kamay na mga patakaran tungkol sa mortalidad ng mga naninigarilyo kumpara sa hindi naninigarilyo. -Kapag maraming iba pang variable ang isinama sa equation, gayunpaman, maaaring mas epektibo ang isang ML model sa pag-predict ng mga future mortality rates batay sa nakaraang health history. Isang mas masayang halimbawa ay ang paggawa ng mga prediksyon sa panahon para sa buwan ng Abril sa isang partikular na lokasyon batay sa datos na kinabibilangan ng latitude, longitude, climate change, proximity sa dagat, mga pattern ng jet stream, at iba pa. +Gayunpaman, kapag maraming iba pang mga baryabol ang isinama sa ekwasyon, maaaring mas maging epektibo ang isang ML model upang mahulaan ang mga hinaharap na rate ng mortalidad batay sa nakaraang kasaysayan ng kalusugan. Isang mas masiglang halimbawa ay ang paggawa ng mga prediksyon sa panahon para sa buwan ng Abril sa isang tiyak na lokasyon, batay sa data na kinabibilangan ng latitude, longitude, pagbabago ng klima, kalapitan sa dagat, mga pattern ng jet stream, at iba pa. -✅ Ang [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) na ito tungkol sa mga weather models ay nagbibigay ng historical na perspektibo sa paggamit ng ML sa pagsusuri ng panahon. +✅ Ang [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tungkol sa mga modelo ng panahon ay nag-aalok ng pangkasaysayang pananaw para sa paggamit ng ML sa pagsusuri ng panahon. -## Mga Gawain Bago Magbuo +## Mga gawain bago magtayo -Bago simulan ang pagbuo ng iyong modelo, may ilang mga gawain na kailangan mong tapusin. Upang masubukan ang iyong tanong at bumuo ng hypothesis batay sa mga prediksyon ng modelo, kailangan mong tukuyin at i-configure ang ilang elemento. +Bago magsimula na bumuo ng iyong modelo, may ilang mga gawain na kailangan mong tapusin. Para subukan ang iyong tanong at bumuo ng hipotesis batay sa mga hulang ginawa ng modelo, kailangan mong tukuyin at i-configure ang ilang mga elemento. -### Datos +### Data -Upang masagot ang iyong tanong nang may katiyakan, kailangan mo ng sapat na dami ng datos na may tamang uri. May dalawang bagay na kailangan mong gawin sa puntong ito: +Para masagot ang iyong tanong nang may katiyakan, kailangan mo ng sapat na dami ng tamang uri ng data. May dalawang bagay na kailangan mong gawin sa puntong ito: -- **Kolektahin ang datos**. Tandaan ang nakaraang aralin tungkol sa fairness sa data analysis, kolektahin ang iyong datos nang maingat. Maging aware sa mga pinagmulan ng datos na ito, anumang inherent biases na maaaring mayroon ito, at i-dokumento ang pinagmulan nito. -- **Ihanda ang datos**. May ilang hakbang sa proseso ng paghahanda ng datos. Maaaring kailanganin mong pagsamahin ang datos at i-normalize ito kung ito ay galing sa iba't ibang pinagmulan. Maaari mong pagandahin ang kalidad at dami ng datos sa pamamagitan ng iba't ibang paraan tulad ng pag-convert ng strings sa numbers (tulad ng ginagawa natin sa [Clustering](../../5-Clustering/1-Visualize/README.md)). Maaari ka ring bumuo ng bagong datos batay sa orihinal (tulad ng ginagawa natin sa [Classification](../../4-Classification/1-Introduction/README.md)). Maaari mong linisin at i-edit ang datos (tulad ng gagawin natin bago ang [Web App](../../3-Web-App/README.md) na aralin). Sa huli, maaaring kailanganin mo ring i-randomize at i-shuffle ito, depende sa iyong training techniques. +- **Kolektahin ang data**. Isinasaalang-alang ang nakaraang leksyon tungkol sa pagiging patas sa pagsusuri ng data, kolektahin ang iyong data nang maingat. Maging maingat sa mga pinagkuhanan ng data, anumang likas na pagkiling na maaaring mayroon ito, at idokumento ang pinagmulan nito. +- **Ihanda ang data**. Mayroong ilang mga hakbang sa proseso ng paghahanda ng data. Maaaring kailanganin mong pag-isa-isaing muli ang data at i-normalize ito kung galing ito sa iba't ibang pinagmulan. Maaari mong pagandahin ang kalidad at dami ng data sa pamamagitan ng iba't ibang paraan tulad ng pag-convert ng mga string sa numero (tulad ng ginagawa natin sa [Clustering](../../5-Clustering/1-Visualize/README.md)). Maaari ka ring lumikha ng bagong data, batay sa orihinal (tulad ng ginagawa natin sa [Classification](../../4-Classification/1-Introduction/README.md)). Maaari mo ring linisin at i-edit ang data (tulad ng gagawin natin bago ang leksyon sa [Web App](../../3-Web-App/README.md)). Panghuli, maaaring kailanganin mo ring i-randomize at i-shuffle ito, depende sa iyong mga teknik sa pagsasanay. -✅ Pagkatapos kolektahin at iproseso ang iyong datos, maglaan ng sandali upang tingnan kung ang hugis nito ay magpapahintulot sa iyo na tugunan ang iyong nilalayong tanong. Maaaring ang datos ay hindi mag-perform nang maayos sa iyong ibinigay na gawain, tulad ng natuklasan natin sa aming [Clustering](../../5-Clustering/1-Visualize/README.md) na mga aralin! +✅ Matapos kolektahin at iproseso ang iyong data, maglaan ng sandali upang tingnan kung ang hugis nito ay magbibigay-daan upang masagot ang iyong nais na tanong. Maaaring mangyari na hindi gagana nang maayos ang data sa iyong ibinigay na gawain, tulad ng nadiskubre natin sa mga aralin sa [Clustering](../../5-Clustering/1-Visualize/README.md)! -### Mga Feature at Target +### Mga Katangian at Target -Ang [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ay isang masusukat na katangian ng iyong datos. Sa maraming datasets, ito ay ipinapahayag bilang isang column heading tulad ng 'date', 'size', o 'color'. Ang iyong feature variable, karaniwang kinakatawan bilang `X` sa code, ay kumakatawan sa input variable na gagamitin upang i-train ang modelo. +Ang isang [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ay isang nasusukat na katangian ng iyong data. Sa maraming dataset, ito ay ipinapahayag bilang isang ulo ng kolum tulad ng 'date', 'size', o 'color'. Ang iyong feature variable, karaniwang kinakatawan bilang `X` sa code, ay kumakatawan sa input variable na gagamitin upang sanayin ang modelo. -Ang target ay ang bagay na sinusubukan mong i-predict. Ang target, karaniwang kinakatawan bilang `y` sa code, ay kumakatawan sa sagot sa tanong na sinusubukan mong itanong sa iyong datos: sa Disyembre, anong **kulay** ng mga kalabasa ang magiging pinakamura? Sa San Francisco, anong mga kapitbahayan ang magkakaroon ng pinakamagandang presyo ng **real estate**? Minsan ang target ay tinutukoy din bilang label attribute. +Ang target ay isang bagay na sinusubukan mong hulaan. Ang target, karaniwang kinakatawan bilang `y` sa code, ay kumakatawan sa sagot sa tanong na sinusubukan mong itanong sa iyong data: sa Disyembre, anong **kulay** ng mga kalabasa ang magiging pinakamura? Sa San Francisco, anong mga kapitbahayan ang magkakaroon ng pinakamahusay na presyo sa real estate? Minsan tinutukoy din ang target bilang isang label attribute. ### Pagpili ng iyong feature variable -🎓 **Feature Selection at Feature Extraction** Paano mo malalaman kung aling variable ang pipiliin kapag bumubuo ng modelo? Malamang na dadaan ka sa proseso ng feature selection o feature extraction upang piliin ang tamang mga variable para sa pinaka-performant na modelo. Hindi sila pareho: "Ang feature extraction ay lumilikha ng mga bagong feature mula sa mga function ng orihinal na mga feature, samantalang ang feature selection ay nagbabalik ng subset ng mga feature." ([source](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Feature Selection and Feature Extraction** Paano mo malalaman kung aling variable ang pipiliin kapag bumubuo ng modelo? Marahil ay daraan ka sa proseso ng feature selection o feature extraction upang piliin ang tamang mga variable para sa pinakaepektibong modelo. Hindi sila pareho: "Ang Feature extraction ay lumilikha ng mga bagong feature mula sa mga function ng orihinal na feature, samantalang ang feature selection ay nagbabalik ng isang subset ng mga feature." ([pinagmulan](https://wikipedia.org/wiki/Feature_selection)) -### I-visualize ang iyong datos +### I-visualize ang iyong data -Isang mahalagang aspeto ng toolkit ng data scientist ay ang kakayahang i-visualize ang datos gamit ang ilang magagaling na libraries tulad ng Seaborn o MatPlotLib. Ang pag-representa ng iyong datos nang biswal ay maaaring magbigay-daan sa iyo upang matuklasan ang mga nakatagong correlation na maaari mong magamit. Ang iyong mga visualization ay maaari ring makatulong sa iyo na matuklasan ang bias o hindi balanseng datos (tulad ng natuklasan natin sa [Classification](../../4-Classification/2-Classifiers-1/README.md)). +Isang mahalagang aspeto ng toolkit ng data scientist ay ang kapangyarihan na i-visualize ang data gamit ang ilang mga mahusay na library tulad ng Seaborn o MatPlotLib. Ang paglalarawan ng iyong data sa pamamagitan ng visual ay maaaring magbigay-daan sa iyong matuklasan ang mga nakatagong kaugnayan na maaari mong gamitin. Maaaring makatulong din ang iyong mga visualization upang matuklasan ang pagkiling o hindi balanseng data (tulad ng nadiskubre natin sa [Classification](../../4-Classification/2-Classifiers-1/README.md)). ### Hatiin ang iyong dataset -Bago mag-training, kailangan mong hatiin ang iyong dataset sa dalawa o higit pang bahagi na may hindi pantay na laki ngunit mahusay na kumakatawan sa datos. +Bago ang pagsasanay, kailangan mong hatiin ang iyong dataset sa dalawa o higit pang mga bahagi na hindi pantay ang laki ngunit mahusay na kumakatawan sa data. -- **Training**. Ang bahaging ito ng dataset ay ginagamit upang i-fit ang iyong modelo para i-train ito. Ang set na ito ay bumubuo ng karamihan ng orihinal na dataset. -- **Testing**. Ang test dataset ay isang independiyenteng grupo ng datos, madalas na kinukuha mula sa orihinal na datos, na ginagamit mo upang kumpirmahin ang performance ng nabuo na modelo. -- **Validating**. Ang validation set ay isang mas maliit na independiyenteng grupo ng mga halimbawa na ginagamit mo upang i-tune ang hyperparameters o architecture ng modelo upang mapabuti ito. Depende sa laki ng iyong datos at sa tanong na iyong tinatanong, maaaring hindi mo kailangan bumuo ng pangatlong set (tulad ng nabanggit natin sa [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). +- **Training**. Ang bahaging ito ng dataset ang itinutugma sa iyong modelo upang sanayin ito. Ang set na ito ang bumubuo ng karamihan ng orihinal na dataset. +- **Testing**. Ang test dataset ay isang independiyenteng pangkat ng data, madalas na kinuha mula sa orihinal na data, na ginagamit mo upang kumpirmahin ang pagganap ng nabuo na modelo. +- **Validating**. Ang validation set ay isang mas maliit na independiyenteng pangkat ng mga halimbawa na ginagamit mo upang i-tune ang mga hyperparameter o arkitektura ng modelo upang mapabuti ito. Depende sa laki ng iyong data at ang tanong na iyong tinatanong, maaaring hindi mo kailangang bumuo ng ikatlong set na ito (tulad ng napansin natin sa [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). -## Pagbuo ng Modelo +## Pagtatayo ng modelo -Gamit ang iyong training data, ang layunin mo ay bumuo ng modelo, o isang statistical na representasyon ng iyong datos, gamit ang iba't ibang algorithm upang **i-train** ito. Ang pag-train ng modelo ay inilalantad ito sa datos at nagbibigay-daan dito upang gumawa ng mga assumption tungkol sa mga pattern na natuklasan, na-validate, at tinanggap o tinanggihan. +Gamit ang iyong training data, ang layunin mo ay bumuo ng modelo, o estadistikang representasyon ng iyong data, gamit ang iba't ibang mga algorithm upang **sanayin** ito. Ang pagsasanay ng isang modelo ay nagpapakita nito sa data at pinapayagan itong gumawa ng mga palagay tungkol sa mga natukoy nitong pattern, sinusuri, at tinatanggap o tinatanggihan. -### Magpasya sa paraan ng training +### Magpasya sa paraan ng pagsasanay -Depende sa iyong tanong at sa likas na katangian ng iyong datos, pipili ka ng paraan upang i-train ito. Sa pamamagitan ng pagdaan sa [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html) - na ginagamit natin sa kursong ito - maaari mong tuklasin ang maraming paraan upang i-train ang modelo. Depende sa iyong karanasan, maaaring kailanganin mong subukan ang ilang iba't ibang paraan upang makabuo ng pinakamahusay na modelo. Malamang na dadaan ka sa proseso kung saan ang mga data scientist ay sinusuri ang performance ng modelo sa pamamagitan ng pagpapakain dito ng unseen data, pag-check ng accuracy, bias, at iba pang mga isyung nakakasira ng kalidad, at pagpili ng pinaka-angkop na paraan ng training para sa gawain. +Depende sa iyong tanong at sa katangian ng iyong data, pipili ka ng paraan upang sanayin ito. Sa pagsunod sa [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html) - na ginagamit natin sa kursong ito - maaari mong tuklasin ang maraming paraan sa pagsasanay ng modelo. Depende sa iyong karanasan, maaaring kailanganin mong subukan ang iba't ibang mga paraan upang mabuo ang pinakamahusay na modelo. Malamang na dadaan ka sa isang proseso kung saan sinusuri ng mga data scientist ang pagganap ng modelo sa pamamagitan ng pagsuplay dito ng mga hindi pa nakikitang data, sinusuri ang katumpakan, pagkiling, at iba pang mga isyu na nagpapababa ng kalidad, at pinipili ang pinakaangkop na paraan ng pagsasanay para sa gawain. -### I-train ang modelo +### Sanayin ang modelo -Gamit ang iyong training data, handa ka nang 'i-fit' ito upang lumikha ng modelo. Mapapansin mo na sa maraming ML libraries, makikita mo ang code na 'model.fit' - sa oras na ito mo ipapadala ang iyong feature variable bilang isang array ng mga halaga (karaniwang 'X') at isang target variable (karaniwang 'y'). +Hawakan ang iyong training data, handa ka nang 'i-fit' ito upang lumikha ng modelo. Mapapansin mo na sa maraming ML libraries ay makikita mo ang code na 'model.fit' - dito mo ipapasa ang iyong feature variable bilang array ng mga halaga (karaniwang 'X') at ang target variable (karaniwang 'y'). ### Suriin ang modelo -Kapag natapos na ang proseso ng training (maaari itong tumagal ng maraming iterations, o 'epochs', upang i-train ang malaking modelo), magagawa mong suriin ang kalidad ng modelo sa pamamagitan ng paggamit ng test data upang sukatin ang performance nito. Ang datos na ito ay isang subset ng orihinal na datos na hindi pa nasuri ng modelo. Maaari kang mag-print ng isang table ng metrics tungkol sa kalidad ng iyong modelo. +Kapag natapos na ang proseso ng pagsasanay (maaaring tumagal ito ng maraming pag-ulit, o 'epochs', upang masanay ang isang malaking modelo), magagawa mong suriin ang kalidad ng modelo gamit ang test data upang sukatin ang pagganap nito. Ang data na ito ay isang bahagi ng orihinal na data na hindi pa nasuri ng modelo. Maaari kang mag-print ng talaan ng mga sukatan tungkol sa kalidad ng iyong modelo. 🎓 **Model fitting** -Sa konteksto ng machine learning, ang model fitting ay tumutukoy sa katumpakan ng underlying function ng modelo habang sinusubukan nitong suriin ang datos na hindi nito pamilyar. +Sa konteksto ng machine learning, ang model fitting ay tumutukoy sa katumpakan ng pundasyong function ng modelo habang sinusubukan nitong suriin ang data na hindi nito alam. -🎓 Ang **Underfitting** at **Overfitting** ay mga karaniwang problema na nakakasira sa kalidad ng modelo, kung saan ang modelo ay hindi sapat na mahusay o masyadong mahusay. Nagdudulot ito ng modelo na gumawa ng mga prediksyon na masyadong malapit o masyadong maluwag na nakahanay sa training data nito. Ang overfit na modelo ay masyadong mahusay sa pag-predict ng training data dahil natutunan nito ang mga detalye at ingay ng datos nang sobra. Ang underfit na modelo ay hindi tumpak dahil hindi nito maayos na masuri ang training data nito o ang datos na hindi pa nito 'nakikita'. +🎓 Karaniwan ang mga problemang **underfitting** at **overfitting** na nagpapababa sa kalidad ng modelo, sapagkat ang modelo ay hindi sapat ang fit o sobra-sobra ang fit. Nagiging sanhi ito upang gumawa ang modelo ng mga hula nang masyadong malapit o masyadong malaya sa data ng pagsasanay. Ang overfit na modelo ay naghuhula nang napakahusay sa data ng pagsasanay dahil natutunan nito nang mabuti ang mga detalye at ingay ng data. Ang underfit na modelo ay hindi tumpak dahil hindi nito kayang suriin nang tumpak ang data ng pagsasanay o ang data na hindi pa nito 'nakikita'. -![overfitting model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/tl/overfitting.1c132d92bfd93cb6.webp) > Infographic ni [Jen Looper](https://twitter.com/jenlooper) ## Parameter tuning -Kapag natapos na ang iyong initial training, obserbahan ang kalidad ng modelo at isaalang-alang ang pagpapabuti nito sa pamamagitan ng pag-tweak ng 'hyperparameters' nito. Magbasa pa tungkol sa proseso [sa dokumentasyon](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Kapag natapos na ang iyong paunang pagsasanay, obserbahan ang kalidad ng modelo at isaalang-alang na pagandahin ito sa pamamagitan ng pag-aayos ng mga 'hyperparameter'. Basahin pa tungkol sa proseso [sa dokumentasyon](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Prediksyon +## Prediction -Ito ang sandali kung saan maaari mong gamitin ang ganap na bagong datos upang subukan ang katumpakan ng iyong modelo. Sa isang 'applied' ML setting, kung saan bumubuo ka ng mga web asset upang gamitin ang modelo sa production, maaaring kasangkot sa prosesong ito ang pagkolekta ng user input (halimbawa, isang pindot ng button) upang magtakda ng variable at ipadala ito sa modelo para sa inference o pagsusuri. +Ito na ang sandali kung saan maaari mong gamitin ang ganap na bagong data upang subukan ang katumpakan ng iyong modelo. Sa isang 'applied' na setting ng ML, kung saan bumubuo ka ng mga web asset upang gamitin ang modelo sa produksyon, maaaring kasama sa prosesong ito ang pangangalap ng input mula sa user (isang pagpindot ng button, halimbawa) upang itakda ang variable at ipadala ito sa modelo para sa inference o pagsusuri. -Sa mga araling ito, matutuklasan mo kung paano gamitin ang mga hakbang na ito upang maghanda, bumuo, mag-test, mag-evaluate, at mag-predict - lahat ng mga galaw ng isang data scientist at higit pa, habang ikaw ay umuusad sa iyong paglalakbay upang maging isang 'full stack' ML engineer. +Sa mga araling ito, matutuklasan mo kung paano gamitin ang mga hakbang na ito upang ihanda, bumuo, subukan, suriin, at manghula — lahat ng mga galaw ng isang data scientist at higit pa, habang nagpapatuloy ka sa iyong paglalakbay upang maging isang 'full stack' ML engineer. --- ## 🚀Hamunin -Gumuhit ng flow chart na nagpapakita ng mga hakbang ng isang ML practitioner. Nasaan ka ngayon sa proseso? Saan mo inaasahan na mahihirapan ka? Ano ang tila madali para sa iyo? +Gumuhit ng flow chart na nagpapakita ng mga hakbang ng isang ML practitioner. Saan mo nakikita ang iyong sarili ngayon sa proseso? Saan mo inaasahan na mahihirapan? Ano ang tila madali para sa iyo? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Review at Pag-aaral sa Sarili +## Repaso at Sariling Pag-aaral -Maghanap online ng mga panayam sa mga data scientist na nag-uusap tungkol sa kanilang pang-araw-araw na trabaho. Narito ang [isa](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Maghanap online ng mga panayam sa mga data scientist na nagsasalaysay ng kanilang araw-araw na gawain. Narito ang [isa](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Takdang Aralin -[Magpanayam ng isang data scientist](assignment.md) +[Interview a data scientist](assignment.md) --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na pinagmulan. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o di-katumpakan. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na nagmumula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/2-Regression/3-Linear/README.md b/translations/tl/2-Regression/3-Linear/README.md index f39b75203b..43b8e9ce41 100644 --- a/translations/tl/2-Regression/3-Linear/README.md +++ b/translations/tl/2-Regression/3-Linear/README.md @@ -1,97 +1,97 @@ -# Gumawa ng regression model gamit ang Scikit-learn: apat na paraan ng regression +# Bumuo ng regression model gamit ang Scikit-learn: apat na paraan ng regression ## Tala para sa Baguhan -Ginagamit ang linear regression kapag nais nating mahulaan ang isang **numerikal na halaga** (halimbawa, presyo ng bahay, temperatura, o benta). -Ito ay gumagana sa pamamagitan ng paghahanap ng tuwid na linya na pinakamainam na kumakatawan sa relasyon sa pagitan ng mga input na katangian at ng output. +Ginagamit ang linear regression kapag nais nating hulaan ang isang **numerikal na halaga** (halimbawa, presyo ng bahay, temperatura, o benta). +Ito ay gumagana sa pamamagitan ng paghahanap ng tuwid na linya na pinakamahusay na kumakatawan sa ugnayan ng mga input na tampok at ang output. -Sa araling ito, tututok tayo sa pag-unawa sa konsepto bago tuklasin ang mas advanced na mga teknik sa regression. +Sa araling ito, nakatuon tayo sa pag-unawa sa konsepto bago mag-explore ng mas advanced na mga teknik sa regression. ![Linear vs polynomial regression infographic](../../../../translated_images/tl/linear-polynomial.5523c7cb6576ccab.webp) -> Infographic mula kay [Dasani Madipalli](https://twitter.com/dasani_decoded) +> Infographic ni [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Available din ang araling ito sa R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Available ang araling ito sa R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Panimula -Sa ngayon ay na-explore mo na kung ano ang regression gamit ang sample data mula sa pumpkin pricing dataset na gagamitin natin sa buong araling ito. Na-visualize mo rin ito gamit ang Matplotlib. +Sa ngayon ay na-explore mo na kung ano ang regression gamit ang sample na datos mula sa pumpkin pricing dataset na gagamitin natin sa buong araling ito. Naka-visualize mo rin ito gamit ang Matplotlib. -Ngayon, handa ka nang sumisid ng mas malalim sa regression para sa ML. Habang ang visualization ay nagpapahintulot sa iyo na maunawaan ang data, ang totoong kapangyarihan ng Machine Learning ay nagmumula sa _pagsasanay ng mga modelo_. Ang mga modelo ay sinasanay gamit ang makasaysayang data upang awtomatikong makuha ang mga dependency ng data, at pinapayagan kang mahulaan ang mga resulta para sa bagong data na hindi pa nakita ng modelo. +Ngayon ay handa ka nang mas malalim na sumisid sa regression para sa ML. Habang ang visualization ay nagpapahintulot sa iyo na maintindihan ang datos, ang tunay na lakas ng Machine Learning ay nagmumula sa _pagsasanay ng mga modelo_. Ang mga modelo ay sinasanay sa makasaysayang datos upang awtomatikong mahuli ang mga depedensya ng datos, at nagpapahintulot sa iyo na hulaan ang mga resulta para sa bagong datos na hindi pa nakita ng modelo. -Sa araling ito, matututuhan mo pa ang tungkol sa dalawang uri ng regression: _basic linear regression_ at _polynomial regression_, kasama ang ilan sa matematika sa likod ng mga teknik na ito. Papayagan tayo ng mga modelong ito na mahulaan ang presyo ng kalabasa depende sa iba't ibang input na datos. +Sa araling ito, matututunan mo ang tungkol sa dalawang uri ng regression: _basic linear regression_ at _polynomial regression_, kasama ang ilan sa matematika sa likod ng mga teknik na ito. Ang mga modelong ito ang magpapahintulot sa atin na hulaan ang presyo ng kalabasa depende sa iba't ibang input na datos. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 I-click ang larawan sa itaas para sa maikling video overview ng linear regression. +> 🎥 I-click ang larawang nasa itaas para sa maikling video overview ng linear regression. -> Sa buong kurikulum na ito, ipinapalagay namin ang minimal na kaalaman sa matematika, at layuning gawing accessible ito para sa mga estudyanteng galing sa ibang larangan, kaya panoorin ang mga tala, 🧮 callouts, diagram, at iba pang mga kagamitan sa pagkatuto upang makatulong sa pag-unawa. +> Sa buong kurikulum na ito, inaasahan namin ang minimal na kaalaman sa matematika, at layuning gawing accessible para sa mga estudyanteng nagmula sa ibang larangan, kaya panoorin ang mga tala, 🧮 callouts, mga diagram, at iba pang mga learning tools para makatulong sa pag-unawa. -### Paunang Kaalaman +### Mga Kinakailangang Kaalaman -Dapat pamilyar ka na ngayon sa estruktura ng pumpkin data na sinusuri natin. Maaari mo itong makita na naka-preload at malinis na sa _notebook.ipynb_ file ng araling ito. Sa file, ipinapakita ang presyo ng kalabasa kada bushel sa isang bagong data frame. Siguraduhing kaya mong patakbuhin ang mga notebook na ito sa kernels ng Visual Studio Code. +Dapat pamilyar ka na sa istruktura ng pumpkin data na sinusuri natin. Mahahanap mo ito nang naka-preload at na-preclean sa _notebook.ipynb_ file ng araling ito. Sa file, ang presyo ng kalabasa ay ipinapakita kada bushel sa isang bagong data frame. Siguraduhing kaya mong patakbuhin ang mga notebook na ito sa kernels sa Visual Studio Code. ### Paghahanda -Paalala, ini-load mo ang datos na ito upang makapagtanong tungkol dito. +Bilang paalala, niloload mo ang datos na ito upang makapagtanong tungkol dito. -- Kailan ang pinakamainam na oras para bumili ng kalabasa? -- Anong presyo ang aasahan ko para sa isang kahon ng miniature pumpkins? -- Dapat ba akong bumili sa mga half-bushel baskets o sa 1 1/9 bushel na kahon? -Patuloy nating tuklasin ang datos na ito. +- Kailan ang pinakamagandang oras para bumili ng mga kalabasa? +- Anong presyo ang maaasahan ko para sa isang kahon ng miniature pumpkins? +- Dapat ko ba silang bilhin sa half-bushel baskets o sa 1 1/9 bushel na kahon? +Patuloy tayong magsiyasat sa datos na ito. -Sa nakaraang aralin, gumawa ka ng Pandas data frame at pinunan ito gamit ang bahagi ng orihinal na dataset, na na-standardize ang pagpepresyo base sa bushel. Sa paggawa noon, nakalikom ka lang ng humigit-kumulang 400 datapoints at para lamang sa mga buwan ng taglagas. +Sa nakaraang aralin, gumawa ka ng Pandas data frame at pinuno ito gamit ang bahagi ng orihinal na dataset, na standardized ang presyo sa bushel. Sa paggawa niyan, nakalap mo lamang ang humigit-kumulang 400 datapoints at para lang sa mga buwan ng tag-lagas. -Tingnan ang data na preloaded sa kasamang notebook ng araling ito. Ang data ay naka-preload at unang scatterplot ang ginawa upang ipakita ang data ng buwan. Marahil, makakakuha tayo ng mas detalyadong impormasyon tungkol sa kalikasan ng data sa pamamagitan ng masusing paglilinis nito. +Tingnan ang datos na naka-preload sa notebook na kasama ng araling ito. Ang datos ay naka-preload at may inisyal na scatterplot na nagpapakita ng data ng buwan. Marahil maaari tayong makakuha ng kaunting detalye tungkol sa kalikasan ng datos sa pamamagitan ng paglilinis nito nang mas maigi. ## Isang linya ng linear regression -Gaya ng iyong natutunan sa Lesson 1, ang layunin ng linear regression exercise ay maging kaya mong iguhit ang isang linya upang: +Gaya ng natutunan mo sa Aralin 1, ang layunin ng linear regression exercise ay maging kaya mong i-plot ang isang linya upang: -- **Ipakita ang relasyon ng mga variable**. Ipakita ang relasyon sa pagitan ng mga variable -- **Gumawa ng prediksyon**. Gumawa ng tumpak na prediksyon kung saan mahuhulog ang isang bagong datapoint kaugnay ng linyang iyon. +- **Ipakita ang relasyon ng mga variable**. Ipakita ang ugnayan sa pagitan ng mga variable +- **Gumawa ng mga hula**. Gumawa ng tumpak na mga hula kung saan babagsak ang bagong datapoint kaugnay ng linyang iyon. -Karaniwan sa **Least-Squares Regression** na gumuhit ng ganitong uri ng linya. Ang terminong "Least-Squares" ay tumutukoy sa proseso ng pagbabawas ng kabuuang error sa ating modelo. Para sa bawat data point, sinusukat natin ang patayong distansya (tinatawag na residual) sa pagitan ng aktwal na punto at ng ating regression line. +Karaniwan sa **Least-Squares Regression** ang gumuhit ng ganitong uri ng linya. Ang terminong "Least-Squares" ay tumutukoy sa proseso ng pagbawas ng kabuuang error sa ating modelo. Para sa bawat data point, sinusukat natin ang patayong distansya (tinatawag na residual) sa pagitan ng aktwal na punto at ng ating regression line. -Pinapangkat natin ang mga distansyang ito sa pamamagitan ng pag-square ng mga ito para sa dalawang pangunahing dahilan: +Pinapa-square natin ang mga distansyang ito para sa dalawang pangunahing dahilan: -1. **Magnitude higit sa Direksyon:** Gusto nating tratuhin ang error na -5 nang pareho sa error na +5. Ang pag-square ay nagpapabago ng lahat ng halaga upang maging positibo. +1. **Laki higit sa Direksyon:** Gusto nating pantayin ang error ng -5 at +5. Ang pag-square ay ginagawa lahat ng halaga na positibo. -2. **Pagpaparusa sa Outliers:** Ang pag-square ay nagbibigay ng mas malaking timbang sa malalaking errors, na pinipilit ang linya na manatili na mas malapit sa mga puntong malayo. +2. **Pagpaparusa sa mga Outlier:** Ang pag-square ay nagbibigay ng mas malaking timbang sa malalaking error, kaya pinipilit ang linya na manatiling mas malapit sa mga puntos na malayo. -Pagkatapos ay pinag-samasama natin ang lahat ng squared na halaga. Ang layunin natin ay hanapin ang partikular na linya kung saan ang huling kabuuan ay pinakamaiksi (pinakamaliit na posibleng halaga)—kaya tinawag itong "Least-Squares". +Pinagsasama-sama natin ang lahat ng squared na mga halaga. Ang layunin ay mahanap ang partikular na linya kung saan ang kabuuang sum na ito ay pinakamababa (ang pinakamaliit na posibleng halaga)—kaya't ang pangalan na "Least-Squares." -> **🧮 Ipakita sa akin ang matematika** -> +> **🧮 Ipakita ang matematika** +> > Ang linyang ito, na tinatawag na _line of best fit_ ay maaaring ipahayag gamit ang [isang ekwasyon](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> > ``` > Y = a + bX > ``` -> -> `X` ay ang 'explanatory variable'. `Y` ay ang 'dependent variable'. Ang slope ng linya ay `b` at `a` ang y-intercept, na tumutukoy sa halaga ng `Y` kapag `X = 0`. -> ->![calculate the slope](../../../../translated_images/tl/slope.f3c9d5910ddbfcf9.webp) -> -> Una, kalkulahin ang slope `b`. Infographic mula kay [Jen Looper](https://twitter.com/jenlooper) -> -> Sa ibang salita, at ayon sa orihinal na tanong sa data ng kalabasa: "hulaan ang presyo ng kalabasa kada bushel ayon sa buwan", ang `X` ay tumutukoy sa presyo at ang `Y` ay tumutukoy sa buwan ng pagbebenta. -> ->![complete the equation](../../../../translated_images/tl/calculation.a209813050a1ddb1.webp) -> -> Kalkulahin ang halaga ng Y. Kung nagbabayad ka ng nasa halagang $4, siguradong Abril iyon! Infographic mula kay [Jen Looper](https://twitter.com/jenlooper) -> -> Kinakailangang ipakita ng matematika na kumukuwenta sa linya ang slope nito, na nakabase rin sa intercept, o kung saan matatagpuan ang `Y` kapag `X = 0`. -> -> Maaari mong obserbahan ang paraan ng pagkalkula ng mga halagang ito sa website ng [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Bisitahin din ang [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) upang makita kung paano naaapektuhan ng halaga ng mga numero ang linya. +> +> `X` ay ang 'explanatory variable'. `Y` ay ang 'dependent variable'. Ang slope ng linya ay `b` at ang `a` ay ang y-intercept, na tumutukoy sa halaga ng `Y` kapag `X = 0`. +> +>![calculate the slope](../../../../translated_images/tl/slope.f3c9d5910ddbfcf9.webp) +> +> Una, kalkulahin ang slope na `b`. Infographic ni [Jen Looper](https://twitter.com/jenlooper) +> +> Sa madaling salita, at tumutukoy sa orihinal na tanong ng pumpkin data: "hulaan ang presyo ng kalabasa kada bushel kada buwan", ang `X` ay tumutukoy sa presyo at ang `Y` ay tumutukoy sa buwan ng pagbebenta. +> +>![complete the equation](../../../../translated_images/tl/calculation.a209813050a1ddb1.webp) +> +> Kalkulahin ang halaga ng Y. Kung nagbabayad ka ng nasa $4, dapat ay Abril! Infographic ni [Jen Looper](https://twitter.com/jenlooper) +> +> Ang matematika na kinakalkula ang linya ay dapat magpakita ng slope ng linya, na nakadepende rin sa intercept, o kung saan matatagpuan ang `Y` kapag `X = 0`. +> +> Maaari mong obserbahan ang paraan ng pagkalkula sa [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) na website. Bisitahin din ang [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) para makita kung paano naaapektuhan ng mga halaga ng numero ang linya. ## Korelasyon -Isa pang term na kailangang maunawaan ay ang **Correlation Coefficient** sa pagitan ng mga variable na X at Y. Sa pamamagitan ng scatterplot, madali mong ma-visualize ang coefficient na ito. Ang plot na may mga datapoints na nakaayos sa isang maayos na linya ay may mataas na korelasyon, ngunit ang isang plot na may datapoints na kalat-kalat sa pagitan ng X at Y ay may mababang korelasyon. +Isa pang terminong kailangan maunawaan ay ang **Correlation Coefficient** sa pagitan ng ibinigay na X at Y na mga variable. Gamit ang scatterplot, madali mong makikita ang coefficient na ito. Ang plot na may mga datapoint na nakaayos sa isang maayos na linya ay may mataas na korelasyon, ngunit ang plot na may mga datapoint na nagkalat saan-saan sa pagitan ng X at Y ay may mababang korelasyon. -Ang isang magandang linear regression model ay yaong may mataas (mas malapit sa 1 kaysa 0) na Correlation Coefficient gamit ang Least-Squares Regression method na may regression line. +Ang isang magandang linear regression model ay ang may mataas (mas malapit sa 1 kaysa 0) na Correlation Coefficient gamit ang Least-Squares Regression method at may regression line. -✅ Patakbuhin ang notebook na kasama sa araling ito at tingnan ang scatterplot ng Month to Price. Mukhang mataas ba o mababa ang korelasyon ng data sa pagitan ng Month at Price para sa benta ng kalabasa, ayon sa iyong visual na interpretasyon ng scatterplot? Nagbabago ba ito kung gagamit ka ng mas detalyadong sukat sa halip na `Month`, hal. *araw ng taon* (ibig sabihin bilang ng mga araw mula simula ng taon)? +✅ Patakbuhin ang notebook na kasama ng araling ito at tingnan ang Month to Price scatterplot. Mukhang mataas o mababa ang korelasyon ng data ng Month to Price para sa pumpkin sales ayon sa iyong visual na interpretasyon ng scatterplot? Nagbabago ba ito kung gagamitin mo ang mas masusing sukat gaya ng `day of the year` (ibig sabihin ay bilang ng mga araw mula sa simula ng taon)? -Sa code sa ibaba, ipapalagay natin na malinis na ang data, at nakuha natin ang data frame na tinatawag na `new_pumpkins`, katulad ng sumusunod: +Sa code sa ibaba, ipagpapalagay natin na nilinis na natin ang datos, at nakakuha ng data frame na tinawag na `new_pumpkins`, na katulad ng sumusunod: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,25 +101,25 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Ang code para linisin ang data ay makikita sa [`notebook.ipynb`](notebook.ipynb). Ginawa namin ang parehong mga hakbang sa paglilinis gaya ng sa nakaraang aralin, at nakalkula ang kolum na `DayOfYear` gamit ang sumusunod na expression: +> Ang code para linisin ang data ay makukuha sa [`notebook.ipynb`](notebook.ipynb). Ginawa namin ang parehong hakbang sa paglilinis tulad ng sa nakaraang aralin, at nakalkula ang `DayOfYear` column gamit ang sumusunod na ekspresyon: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +Ngayon na may pagkaunawa ka sa matematika sa likod ng linear regression, gumawa tayo ng Regression model upang makita kung kaya nating hulaan kung aling package ng mga kalabasa ang may pinakamagandang presyo. Ang isang bumibili ng mga kalabasa para sa isang pumpkin patch sa pista ay maaaring gustong malaman ito upang mapabuti ang kanilang mga pagbili ng mga package para sa patch. -Ngayon na naiintindihan mo na ang matematika sa likod ng linear regression, gumawa tayo ng Regression model upang makita kung kaya nating hulaan kung aling pakete ng kalabasa ang may pinakamagandang presyo. Ang sinumang bibili ng mga kalabasa para sa holiday pumpkin patch ay maaaring gusto ang impormasyong ito upang ma-optimize ang kanilang pagbili ng mga pakete ng kalabasa. - -## Paghahanap ng Korelasyon +## Naghahanap ng Korelasyon [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") > 🎥 I-click ang larawan sa itaas para sa maikling video overview ng korelasyon. -Mula sa nakaraang aralin, marahil ay nakita mo na ang karaniwang presyo para sa iba't ibang buwan ay ganito: +Mula sa nakaraang aralin, marahil ay nakita mo na ang average na presyo para sa iba't ibang buwan ay ganito: Average price by month -Ipinapahiwatig nito na dapat may korelasyon, at maaari nating subukan ang pagsasanay ng linear regression model upang mahulaan ang relasyon sa pagitan ng `Month` at `Price`, o sa pagitan ng `DayOfYear` at `Price`. Narito ang scatter plot na nagpapakita ng huling relasyon: +Ipinapahiwatig nito na dapat mayroong ilang korelasyon, at maaari nating subukang magsanay ng linear regression model upang hulaan ang relasyon sa pagitan ng `Month` at `Price`, o sa pagitan ng `DayOfYear` at `Price`. Narito ang scatter plot na nagpapakita ng huli na relasyon: Scatter plot of Price vs. Day of Year @@ -129,8 +129,8 @@ Tingnan natin kung may korelasyon gamit ang `corr` function: print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Mukhang maliit ang korelasyon, -0.15 base sa `Month` at -0.17 base sa `DayOfMonth`, ngunit maaaring may isa pang mahalagang relasyon. Mukhang may iba't ibang cluster ng mga presyo na tumutugma sa iba't ibang varieties ng kalabasa. Upang kumpirmahin ito, ipapakita natin bawat kategorya ng kalabasa gamit ang iba't ibang kulay. Sa pamamagitan ng pagpasa ng `ax` parameter sa `scatter` na plotting function, mapapakita natin lahat ng puntos sa iisang graph: + +Mukhang maliit ang korelasyon, -0.15 gamit ang `Month` at -0.17 gamit ang `DayOfYear`, ngunit maaaring may iba pang mahalagang ugnayan. Mukhang may mga ibang cluster ng mga presyo na tumutugma sa ibang iba't ibang uri ng kalabasa. Upang kumpirmahin ang hypothesis na ito, atin ipaplot ang bawat kategorya ng kalabasa gamit ang iba't ibang kulay. Sa pamamagitan ng pagpasa ng `ax` parameter sa `scatter` plotting function ay maaaring i-plot ang lahat ng puntos sa parehong graph: ```python ax=None @@ -139,18 +139,18 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - + Scatter plot of Price vs. Day of Year -Sinasabi ng imbestigasyon natin na mas malaki ang epekto ng variety sa kabuoang presyo kaysa sa aktwal na petsa ng pagbebenta. Makikita natin ito sa isang bar graph: +Ang ating pagsisiyasat ay nagpapahiwatig na ang variety ay may mas malaking epekto sa kabuuang presyo kaysa sa aktwal na petsa ng pagbebenta. Makikita natin ito gamit ang bar graph: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - + Bar graph of price vs variety -Magtuon muna tayo sa isang uri ng kalabasa, ang 'pie type', at tingnan kung ano ang epekto ng petsa sa presyo: +Mag-focus muna tayo sa isang uri ng kalabasa, ang 'pie type', at tingnan kung ano ang epekto ng petsa sa presyo: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,56 +158,56 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -Kung kakalkulahin natin ngayon ang korelasyon sa pagitan ng `Price` at `DayOfYear` gamit ang `corr` function, makakakuha tayo ng mga tulad ng `-0.27` - ibig sabihin ay may saysay ang pagsasanay ng predictive model. +Kung kakalkulahin natin ang korelasyon sa pagitan ng `Price` at `DayOfYear` gamit ang `corr` function, makakakuha tayo ng mga halagang tulad ng `-0.27` - ibig sabihin ay may saysay ang pagsasanay ng predictive model. -> Bago magsanay ng linear regression model, mahalagang tiyakin na malinis ang ating data. Hindi maganda ang linear regression kapag may mga missing values, kaya nararapat na alisin ang lahat ng walang lamang cells: +> Bago magsanay ng linear regression model, mahalagang siguraduhin na malinis ang ating data. Hindi maganda ang linear regression sa mga nawawalang halaga, kaya makatwiran na alisin ang lahat ng walang laman na cell: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Isa pang paraan ay punan ang mga walang laman na halaga gamit ang mean values mula sa katugmang kolum. + +Isa pang paraan ay punuan ang mga walang laman na halaga gamit ang mean na halaga mula sa katumbas na kolum. ## Simple Linear Regression [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 I-click ang larawan sa itaas para sa maikling video overview ng linear at polynomial regression. +> 🎥 I-click ang larawang nasa itaas para sa maikling video overview ng linear at polynomial regression. -Para sanayin ang Linear Regression model natin, gagamitin natin ang **Scikit-learn** library. +Para sanayin ang ating Linear Regression model, gagamit tayo ng **Scikit-learn** library. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Sinisimulan natin sa paghihiwalay ng mga input values (features) at ang inaasahang output (label) sa magkahiwalay na numpy arrays: + +Nagsisimula tayo sa paghihiwalay ng input na mga halaga (features) at ang inaasahang output (label) sa magkahiwalay na numpy arrays: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Pansinin na kailangan nating gawin ang `reshape` sa input na data upang maunawaan ito nang tama ng Linear Regression package. Inaasahan ng Linear Regression ang isang 2D-array bilang input, kung saan ang bawat hilera ng array ay tumutugma sa isang vector ng input features. Sa ating kaso, dahil isa lang ang input – kailangan natin ng array na may hugis na N×1, kung saan ang N ay ang laki ng dataset. -> Tandaan na kinailangan nating gawin ang `reshape` sa input na data upang maintindihan ito ng Linear Regression package nang tama. Ang Linear Regression ay inaasahan ang 2D-array bilang input, kung saan bawat hilera ng array ay tumutukoy sa isang vector ng input na mga katangian. Sa ating kaso, dahil isa lang ang input, kailangan natin ng array na may hugis na N×1, kung saan ang N ay ang laki ng dataset. - -Pagkatapos, kailangan nating hatiin ang data sa train at test datasets, upang ma-validate natin ang model pagkatapos ng training: +Pagkatapos, kailangan nating hatiin ang data sa train at test datasets, upang ma-validate natin ang modelo pagkatapos ng pagsasanay: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Sa wakas, ang pagsasanay ng aktwal na Linear Regression model ay ginagawa lamang sa dalawang linya ng code. Idefine natin ang `LinearRegression` object, at i-fit ito sa ating data gamit ang `fit` method: + +Sa wakas, ang pagsasanay ng aktuwal na Linear Regression model ay nangangailangan lang ng dalawang linya ng code. I-define natin ang `LinearRegression` na object, at i-fit ito sa ating data gamit ang `fit` method: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Ang `LinearRegression` na object pagkatapos mag-`fit` ay naglalaman ng lahat ng coefficients ng regression, na maaaring ma-access gamit ang `.coef_` na property. Sa ating kaso, may isa lamang coefficient, na dapat ay nasa paligid ng `-0.017`. Ibig sabihin nito, tila bumababa ang mga presyo kasabay ng paglipas ng panahon, ngunit hindi masyadong malaki, mga 2 sentimo bawat araw. Maaari rin nating i-access ang punto ng intersection ng regression sa Y-axis gamit ang `lin_reg.intercept_` - ito ay magiging mga `21` sa ating kaso, na nagpapahiwatig ng presyo sa simula ng taon. +Ang `LinearRegression` na object pagkatapos ma-`fit` ay naglalaman ng lahat ng coefficients ng regression, na maaaring ma-access gamit ang `.coef_` na property. Sa aming kaso, may isang coefficient lamang, na dapat ay nasa paligid ng `-0.017`. Ibig sabihin nito, tila bumababa ng bahagya ang mga presyo sa paglipas ng panahon, ngunit hindi masyado, mga 2 sentimo kada araw. Maaari din nating ma-access ang punto ng pag-intersect ng regression sa Y-axis gamit ang `lin_reg.intercept_` - ito ay magiging nasa paligid ng `21` sa aming kaso, na nagpapahiwatig ng presyo sa simula ng taon. -Para makita kung gaano kasaktong ang ating modelo, maaari nating i-predict ang mga presyo sa test dataset, at pagkatapos ay sukatin kung gaano kalapit ang ating mga prediction sa inaasahang mga halaga. Maaari itong gawin gamit ang root mean square error (RMSE) metrics, na siyang root ng mean ng lahat ng squared differences sa pagitan ng inaasahan at predicted na halaga. +Para makita kung gaano katumpak ang ating modelo, maaari nating hulaan ang mga presyo sa test dataset, at pagkatapos ay sukatin kung gaano kalapit ang ating mga prediksyon sa mga inaasahang halaga. Maaari itong gawin gamit ang root mean square error (RMSE) metrics, na siyang root ng mean ng lahat ng squared differences sa pagitan ng inaasahan at prediktadong halaga. ```python pred = lin_reg.predict(X_test) @@ -216,16 +216,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Ang ating error ay tila nasa paligid ng 2 puntos, na mga ~17%. Hindi masyadong maganda. Isa pang tagapagpahiwatig ng kalidad ng modelo ay ang **coefficient of determination**, na maaaring makuha nang ganito: +Tila ang error natin ay nasa paligid ng 2 points, na humigit-kumulang ~17%. Hindi masyadong maganda. Ang isa pang indikasyon ng kalidad ng modelo ay ang **coefficient of determination**, na maaaring makuha sa ganitong paraan: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Kung ang halaga ay 0, ibig sabihin ay hindi isinasaalang-alang ng modelo ang input data, at kumikilos bilang *pinakapangit na linear predictor*, na simpleng mean value ng resulta. Ang halaga na 1 ay nangangahulugang maaari nating perpektong mahulaan ang lahat ng inaasahang output. Sa ating kaso, ang coefficient ay mga 0.06, na medyo mababa. +Kung ang halaga ay 0, ibig sabihin ay hindi isinasaalang-alang ng modelo ang input data, at kumikilos bilang *pinakamasamang linear predictor*, na simpleng mean value ng resulta. Ang halaga na 1 ay nangangahulugan na maaari nating perpektong mahulaan lahat ng inaasahang output. Sa aming kaso, ang coefficient ay nasa paligid ng 0.06, na medyo mababa. -Maaari rin nating i-plot ang test data kasama ang regression line upang mas makita nang mabuti kung paano gumagana ang regression sa ating kaso: +Maaari din nating i-plot ang test data kasama ang regression line upang mas makita kung paano gumagana ang regression sa aming kaso: ```python plt.scatter(X_test,y_test) @@ -236,17 +236,17 @@ plt.plot(X_test,pred) ## Polynomial Regression -Isa pang uri ng Linear Regression ay Polynomial Regression. Habang minsan ay may linear na relasyon sa pagitan ng mga variable - mas malaki ang kalabasa sa volume, mas mataas ang presyo - minsan hindi maaaring i-plot ang mga relasyong ito bilang isang patag o tuwid na linya. +Isa pang uri ng Linear Regression ang Polynomial Regression. Habang minsan may linear na ugnayan sa pagitan ng mga variable - mas malaki ang kalabasa sa volume, mas mataas ang presyo - minsan ang mga ugnayang ito ay hindi maipapakita bilang isang patag o tuwid na linya. ✅ Narito ang [ilang karagdagang halimbawa](https://online.stat.psu.edu/stat501/lesson/9/9.8) ng data na maaaring gumamit ng Polynomial Regression -Tingnan pang muli ang relasyon sa pagitan ng Date at Price. Para bang ang scatterplot ba ay dapat talagang suriin gamit ang tuwid na linya? Hindi ba maaaring mag-fluctuate ang mga presyo? Sa kasong ito, maaari mong subukan ang polynomial regression. +Tingnan muli ang relasyon sa pagitan ng Date at Price. Mukhang dapat bang pag-aralan ito gamit ang isang tuwid na linya? Hindi ba pwedeng mag-iba-iba ang mga presyo? Sa kasong ito, maaari mong subukan ang polynomial regression. -✅ Ang mga polynomial ay mga matematikal na ekspresyon na maaaring binubuo ng isa o higit pang mga variable at coefficients +✅ Ang mga polynomial ay mga matematikal na ekspresyon na maaaring binubuo ng isa o higit pang mga variable at mga coefficient -Ang polynomial regression ay lumilikha ng kurbadang linya upang mas maiangkop ang nonlinear na data. Sa ating kaso, kung isasama natin ang squared `DayOfYear` na variable sa input data, dapat nating magawang i-fit ang ating data gamit ang parabolic curve, na magkakaroon ng minimum sa isang tiyak na punto sa loob ng taon. +Ang polynomial regression ay lumilikha ng isang kurbadang linya upang mas angkop sa nonlinear na data. Sa aming kaso, kung isasama natin ang squared `DayOfYear` variable sa input data, dapat nating magawa na i-fit ang data gamit ang isang parabolic curve, na magkakaroon ng minimum sa isang partikular na punto sa loob ng taon. -Kasama sa Scikit-learn ang kapaki-pakinabang na [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) upang pagsamahin ang iba't ibang mga hakbang ng data processing. Ang **pipeline** ay isang chain ng **estimators**. Sa ating kaso, gagawa tayo ng pipeline na unang nagdaragdag ng polynomial features sa ating modelo, at pagkatapos ay nagtetrain ng regression: +Kasama sa Scikit-learn ang kapaki-pakinabang na [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) upang pagsamahin ang iba't ibang hakbang ng pagproseso ng data. Ang **pipeline** ay isang chain ng mga **estimators**. Sa aming kaso, gagawa kami ng pipeline na una magdaragdag ng polynomial features sa aming modelo, at pagkatapos ay magte-train ng regression: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Ang paggamit ng `PolynomialFeatures(2)` ay nangangahulugan na isasama natin ang lahat ng second-degree polynomials mula sa input data. Sa ating kaso, ito ay nangangahulugang `DayOfYear`2 lamang, ngunit kung merong dalawang input na variable na X at Y, ito ay magdaragdag ng X2, XY at Y2. Maaari din nating gamitin ang mga polynomial ng mas mataas na degree kung nais natin. +Ang paggamit ng `PolynomialFeatures(2)` ay nangangahulugan na isasama natin ang lahat ng pangalawang-degree polynomials mula sa input data. Sa aming kaso, ito ay nangangahulugan lamang ng `DayOfYear`2, ngunit kung mayroon tayong dalawang input variables na X at Y, idaragdag nito ang X2, XY at Y2. Maaari rin tayong gumamit ng mas mataas na degree polynomials kung nais. + +Maaaring gamitin ang mga pipeline sa parehong paraan tulad ng orihinal na `LinearRegression` na object, ibig sabihin maaari nating `fit` ang pipeline, at pagkatapos ay gamitin ang `predict` upang makuha ang mga resulta ng prediksyon: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Para i-plot ang smooth approximation curve, ginamit natin ang `np.linspace` upang gumawa ng uniform na range ng input values, sa halip na mag-plot direkta sa unordered test data (na magreresulta sa zigzag na linya): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Maaaring gamitin ang mga pipelines sa parehong paraan tulad ng orihinal na `LinearRegression` object, ibig sabihin maaari nating `fit` ang pipeline, at pagkatapos ay gamitin ang `predict` upang makuha ang mga resulta ng prediction. Narito ang graph na nagpapakita ng test data, at ang approximation curve: +Narito ang graph na nagpapakita ng test data, at ang approximation curve: Polynomial regression -Gamit ang Polynomial Regression, makakakuha tayo ng bahagyang mas mababang MSE at mas mataas na coefficient of determination, ngunit hindi gaanong malaki ang kaibahan. Kailangan nating isaalang-alang ang ibang mga features! +Sa paggamit ng Polynomial Regression, makakakuha tayo ng bahagyang mas mababang RMSE at mas mataas na determination, ngunit hindi ito malaki ang pagkakaiba. Kailangan nating isaalang-alang ang iba pang mga features! -> Makikita mo na ang pinakamababang presyo ng kalabasa ay naobserbahan sa paligid ng Halloween. Paano mo ito maipapaliwanag? +> Makikita mo na ang pinakamababang presyo ng kalabasa ay naobserbahan sa paligid ng Halloween. Paano mo ito maipapaliwanag? -🎃 Congratulations, kakagawa mo lang ng isang modelo na makakatulong mag-predict ng presyo ng pie pumpkins. Maaari mong ulitin ang parehong proseso para sa lahat ng uri ng kalabasa, ngunit ito ay magiging mahirap. Alamin natin ngayon kung paano isaalang-alang ang iba't ibang uri ng kalabasa sa ating modelo! +🎃 Congratulations, nakagawa ka lang ng isang modelo na maaaring makatulong hulaan ang presyo ng pie pumpkins. Maaari mo marahil ulitin ang parehong proseso para sa lahat ng uri ng kalabasa, ngunit ito ay magiging matrabaho. Alamin natin ngayon kung paano isaalang-alang ang variety ng kalabasa sa ating modelo! ## Categorical Features -Sa perpektong mundo, gusto nating makapag-predict ng presyo para sa iba't ibang variety ng kalabasa gamit ang parehong modelo. Ngunit, ang column na `Variety` ay medyo iba sa mga column tulad ng `Month`, dahil naglalaman ito ng mga non-numeric na halaga. Ang mga ganitong uri ng column ay tinatawag na **categorical**. +Sa ideal na mundo, nais nating mahulaan ang mga presyo para sa iba't ibang varieties ng kalabasa gamit ang parehong modelo. Gayunpaman, ang column na `Variety` ay medyo iba sa mga column tulad ng `Month`, dahil naglalaman ito ng mga hindi numerikong halaga. Ang mga ganitong column ay tinatawag na **categorical**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 I-click ang larawan sa itaas para sa isang maikling video overview ng paggamit ng categorical features. +> 🎥 I-click ang imahe sa itaas para sa isang maikling video overview tungkol sa paggamit ng categorical features. -Dito makikita mo kung paano ang average price ay nakasalalay sa variety: +Dito makikita kung paano ang average na presyo ay nakadepende sa variety: Average price by variety -Para isaalang-alang ang variety, kailangan muna natin itong i-convert sa numeric na anyo, o **i-encode** ito. May ilang paraan kung paano natin ito magagawa: +Para isaalang-alang ang variety, kailangan muna natin itong i-convert sa numerikong anyo, o **i-encode** ito. May ilang mga paraan upang gawin ito: -* Ang simpleng **numeric encoding** ay gagawa ng talaan ng iba't ibang variety, at pagkatapos ay papalitan ang pangalan ng variety ng isang index sa talaang iyon. Hindi ito pinakamagandang ideya para sa linear regression, dahil ang linear regression ay kumukuha ng aktwal na numeric value ng index, at ina-add ito sa resulta, na minamultiply ng isang coefficient. Sa ating kaso, ang relasyon sa pagitan ng bilang ng index at presyo ay malinaw na hindi linear, kahit na siguraduhin natin na ang mga index ay nakaayos sa isang tiyak na paraan. -* Ang **one-hot encoding** ay papalitan ang `Variety` column ng 4 na magkakaibang columns, isa para sa bawat variety. Bawat column ay magkakaroon ng `1` kung ang katumbas na row ay nasa isang partikular na variety, at `0` kung hindi. Ibig sabihin nito ay magkakaroon ng apat na coefficients sa linear regression, isa para sa bawat variety ng kalabasa, na responsable para sa "starting price" (o mas tama "karagdagang presyo") para sa partikular na variety na iyon. +* Ang simpleng **numeric encoding** ay gagawa ng isang talaan ng iba't ibang varieties, at pagkatapos ay papalitan ang pangalan ng variety ng isang index sa talaang iyon. Hindi ito ang pinakamahusay na ideya para sa linear regression, dahil kinukuha ng linear regression ang aktwal na numerikong halaga ng index, at dinadagdagan ito sa resulta, na minumultiply ng isang coefficient. Sa aming kaso, ang relasyon sa pagitan ng numero ng index at ng presyo ay malinaw na hindi linear, kahit na siguraduhin nating nakaayos ang mga indices sa isang partikular na paraan. +* Ang **one-hot encoding** ay papalitan ang column na `Variety` ng 4 na magkakaibang columns, isa para sa bawat variety. Ang bawat column ay maglalaman ng `1` kung ang katumbas na row ay mula sa isang partikular na variety, at `0` naman kung hindi. Nangangahulugan ito na mayroong apat na coefficients sa linear regression, isa para sa bawat variety ng kalabasa, na responsable para sa "starting price" (o mas tamang sabihin ay "karagdagang presyo") para sa partikular na variety na iyon. -Ipinapakita ng code sa ibaba kung paano natin mae-one-hot encode ang variety: +Ipinapakita ng code sa ibaba kung paano natin magagawa ang one-hot encode ng variety: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Para mag-train ng linear regression gamit ang one-hot encoded na variety bilang input, kailangan lang nating i-initialize ang `X` at `y` na data nang tama: +Para mag-train ng linear regression gamit ang one-hot encoded na variety bilang input, kailangan lamang natin i-initialize ang `X` at `y` data nang tama: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Ang natitirang bahagi ng code ay pareho sa ginamit natin sa itaas para mag-train ng Linear Regression. Kung susubukan mo ito, makikita mo na halos pareho ang mean squared error, ngunit makakakuha tayo ng mas mataas na coefficient of determination (~77%). Para makakuha pa ng mas tumpak na predictions, maaari nating isaalang-alang ang mas maraming categorical na features, pati na rin ang numeric na features, tulad ng `Month` o `DayOfYear`. Para makuha ang isang malaking array ng features, maaari nating gamitin ang `join`: +Ang natitirang bahagi ng code ay pareho tulad ng ginamit natin sa itaas para mag-train ng Linear Regression. Kung susubukan mo ito, makikita mong ang mean squared error ay halos pareho, ngunit nakakakuha tayo ng mas mataas na coefficient of determination (~77%). Upang makakuha ng mas tumpak na mga prediksyon, maaari nating isaalang-alang pa ang mas maraming categorical features, pati na rin ang mga numeric features tulad ng `Month` o `DayOfYear`. Para makabuo ng isang malaking array ng mga features, maaari nating gamitin ang `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,60 +342,60 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Dito isinaalang-alang din natin ang `City` at uri ng `Package`, na nagbigay sa atin ng MSE 2.84 (10%), at determination na 0.94! +Dito kinokonsidera rin natin ang `City` at `Package` type, na nagreresulta sa RMSE na 2.84 (10.5%), at determination na 0.94! ## Pagsasama-sama ng lahat -Para makagawa ng pinakamahusay na modelo, maaari nating gamitin ang pinagsamang (one-hot encoded categorical + numeric) data mula sa halimbawa sa itaas kasabay ng Polynomial Regression. Narito ang buong code para sa iyong kaginhawaan: +Para gumawa ng pinakamahusay na modelo, maaari nating gamitin ang pinagsamang (one-hot encoded categorical + numeric) data mula sa naunang halimbawa kasama ang Polynomial Regression. Narito ang kumpletong code para sa iyong kaginhawaan: ```python -# ayusin ang data para sa pagsasanay +# ihanda ang data para sa pagsasanay X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# gawin ang hati ng pagsasanay-pagsubok +# gawin ang paghahati ng train at test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # ayusin at sanayin ang pipeline pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# hulaan ang mga resulta para sa test data +# hulaan ang mga resulta para sa test na data pred = pipeline.predict(X_test) -# kalkulahin ang MSE at determinasyon -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# kalkulahin ang RMSE at determinasyon +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Dapat magbigay ito sa atin ng pinakamagandang coefficient of determination na halos 97%, at MSE=2.23 (~8% na prediction error). +Dapat itong magbigay sa atin ng pinakamahusay na determination coefficient na halos 97%, at RMSE=2.23 (~8% prediction error). -| Model | MSE | Determination | +| Modelo | RMSE | Determination | |-------|-----|---------------| | `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | | `Variety` Linear | 5.24 (19.7%) | 0.77 | -| All features Linear | 2.84 (10.5%) | 0.94 | -| All features Polynomial | 2.23 (8.25%) | 0.97 | +| Lahat ng features Linear | 2.84 (10.5%) | 0.94 | +| Lahat ng features Polynomial | 2.23 (8.25%) | 0.97 | -🏆 Magaling! Nakagawa ka ng apat na Regression models sa isang aralin, at napabuti ang kalidad ng modelo hanggang 97%. Sa huling bahagi tungkol sa Regression, matututuhan mo ang tungkol sa Logistic Regression para tukuyin ang mga kategorya. +🏆 Magaling! Nakagawa ka ng apat na Regression models sa isang lesson, at napabuti ang kalidad ng modelo hanggang 97%. Sa huling bahagi tungkol sa Regression, matututuhan mo ang tungkol sa Logistic Regression upang matukoy ang mga kategorya. --- ## 🚀Challenge -Subukan ang ilang iba't ibang mga variable sa notebook na ito upang makita kung paano ang korelasyon ay tumutugma sa katumpakan ng modelo. +Subukan ang iba't ibang variables sa notebook na ito upang makita kung paano naaayon ang correlation sa katumpakan ng modelo. ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) ## Review & Self Study -Sa araling ito natutunan natin ang tungkol sa Linear Regression. May iba pang mahahalagang uri ng Regression. Basahin tungkol sa Stepwise, Ridge, Lasso at Elasticnet techniques. Isang magandang kurso para pag-aralan upang matuto nang higit pa ay ang [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Sa lesson na ito natutunan natin ang tungkol sa Linear Regression. May iba pang mahahalagang uri ng Regression. Basahin ang tungkol sa Stepwise, Ridge, Lasso at Elasticnet na mga teknik. Isang magandang kurso na pag-aralan para matuto pa ay ang [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Assignment @@ -383,5 +405,5 @@ Sa araling ito natutunan natin ang tungkol sa Linear Regression. May iba pang ma **Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat aming nilalayon ang katumpakan, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o di-katumpakan. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasaling-tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. +Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa kawastuhan, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o kamalian. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pinagmulan ng katotohanan. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaintindihan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file diff --git a/translations/tl/2-Regression/3-Linear/solution/notebook.ipynb b/translations/tl/2-Regression/3-Linear/solution/notebook.ipynb index e1fc6364a7..8101ff9c8e 100644 --- a/translations/tl/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/tl/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linear at Polynomial Regression para sa Pagpepresyo ng Kalabasa - Aralin 3\n", + "## Linear and Polynomial Regression for Pumpkin Pricing - Leksyon 3\n", "\n", - "I-load ang mga kinakailangang library at dataset. I-convert ang data sa isang dataframe na naglalaman ng subset ng data:\n", + "I-load ang mga kinakailangang library at dataset. I-convert ang data sa isang dataframe na naglalaman ng isang subset ng data:\n", "\n", - "- Kunin lamang ang mga kalabasa na may presyo batay sa bushel\n", - "- I-convert ang petsa sa buwan\n", + "- Kunin lamang ang mga kalabasa na may presyo kada bushel\n", + "- I-convert ang petsa sa isang buwan\n", "- Kalkulahin ang presyo bilang average ng mataas at mababang presyo\n", - "- I-convert ang presyo upang ipakita ang pagpepresyo batay sa dami ng bushel\n" + "- I-convert ang presyo upang ipakita ang pagpepresyo ayon sa dami ng bushel\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ang scatterplot ay nagpapaalala sa atin na mayroon lamang tayong datos mula Agosto hanggang Disyembre. Malamang na kailangan pa natin ng mas maraming datos upang makagawa ng mga konklusyon sa isang linyar na paraan.\n" + "Ang scatterplot ay nagpapaalala sa atin na mayroon lamang tayong data ng buwan mula Agosto hanggang Disyembre. Marahil kailangan pa natin ng mas maraming data upang makabuo ng mga konklusyon sa isang linear na paraan.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Tingnan natin kung may korelasyon:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mukhang maliit ang ugnayan, ngunit may iba pang mas mahalagang relasyon - dahil ang mga presyo sa plot sa itaas ay tila may ilang magkakaibang kumpol. Gumawa tayo ng plot na magpapakita ng iba't ibang uri ng kalabasa:\n" + "Mukhang maliit ang korelasyon, pero may iba pang mas mahalagang relasyon - dahil ang mga price points sa plot sa itaas ay mukhang may ilang natatanging mga cluster. Gumawa tayo ng plot na magpapakita ng iba't ibang mga uri ng kalabasa:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Sa ngayon, magpokus muna tayo sa isang uri lamang - **pie type**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Linear Regression\n", "\n", - "Gagamitin natin ang Scikit Learn upang magsanay ng linear regression model:\n" + "Gagamitin natin ang Scikit Learn upang mag-train ng linear regression model:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Maaari nating gamitin ang sinanay na modelo upang hulaan ang presyo:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Polynomial Regression\n", "\n", - "Minsan, ang relasyon sa pagitan ng mga tampok at resulta ay likas na hindi linear. Halimbawa, maaaring mataas ang presyo ng kalabasa tuwing taglamig (mga buwan=1,2), pagkatapos ay bumaba sa tag-init (mga buwan=5-7), at pagkatapos ay tumaas muli. Hindi kayang mahanap ng linear regression ang relasyong ito nang tama.\n", + "Minsan ang relasyon sa pagitan ng mga katangian at mga resulta ay likas na hindi linear. Halimbawa, maaaring mataas ang presyo ng kalabasa sa taglamig (mga buwan=1,2), pagkatapos bumaba sa tag-init (mga buwan=5-7), at muling tumaas. Hindi kayang tuklasin nang tumpak ng linear regression ang relasyong ito.\n", "\n", - "Sa ganitong kaso, maaari nating isaalang-alang ang pagdaragdag ng mga karagdagang tampok. Isang simpleng paraan ay ang paggamit ng mga polynomial mula sa mga input na tampok, na magreresulta sa **polynomial regression**. Sa Scikit Learn, maaari nating awtomatikong i-pre-compute ang mga polynomial na tampok gamit ang pipelines:\n" + "Sa kasong ito, maaari nating isaalang-alang ang pagdagdag ng dagdag na mga katangian. Madaling paraan ay ang paggamit ng mga polinomial mula sa mga input na katangian, na magreresulta sa **polynomial regression**. Sa Scikit Learn, maaari nating awtomatikong i-precompute ang mga polynomial na katangian gamit ang pipelines: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Pag-encode ng mga uri\n", + "### Mga Uri ng Encoding\n", "\n", - "Sa ideal na mundo, nais nating magawang hulaan ang mga presyo para sa iba't ibang uri ng kalabasa gamit ang parehong modelo. Upang maisaalang-alang ang uri, kailangan muna nating i-convert ito sa numerikong anyo, o **i-encode**. Mayroong ilang mga paraan upang gawin ito:\n", + "Sa ideal na mundo, gusto nating maging kaya nating mahulaan ang mga presyo para sa iba't ibang uri ng kalabasa gamit ang parehong modelo. Upang isaalang-alang ang uri, kailangan muna natin itong i-convert sa numerikal na anyo, o **i-encode**. May ilang paraan para gawin ito:\n", "\n", - "* Simpleng numerikong encoding na gagawa ng isang talahanayan ng iba't ibang uri, at pagkatapos ay papalitan ang pangalan ng uri ng isang index sa talahanayan na iyon. Hindi ito ang pinakamainam na ideya para sa linear regression, dahil isinasaalang-alang ng linear regression ang numerikong halaga ng index, at ang numerikong halaga ay malamang na hindi tumutugma nang numerikal sa presyo.\n", - "* One-hot encoding, na papalitan ang kolum na `Variety` ng 4 na magkakaibang kolum, isa para sa bawat uri, na maglalaman ng 1 kung ang kaukulang hilera ay kabilang sa ibinigay na uri, at 0 kung hindi.\n", + "* Simpleng numerikal na encoding na gagawa ng isang talahanayan ng iba't ibang uri, at pagkatapos ay papalitan ang pangalan ng uri ng isang indeks sa talahanayang iyon. Hindi ito ang pinakamainam na ideya para sa linear regression, dahil iniisip ng linear regression ang numerikal na halaga ng indeks, at malamang na hindi numerikal na makakaugnay ang numerikal na halaga sa presyo.\n", + "* One-hot encoding, na papalitan ang kolum na `Variety` ng 4 na iba't ibang kolum, isa para sa bawat uri, na maglalaman ng 1 kung ang katumbas na hilera ay sa tinukoy na uri, at 0 kung hindi.\n", "\n", - "Ang code sa ibaba ay nagpapakita kung paano natin maaaring i-one-hot encode ang isang uri:\n" + "Ipinapakita ng code sa ibaba kung paano natin maaaring i-one-hot encode ang isang uri:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Linear Regression sa Iba't Ibang Uri\n", + "### Linear Regression sa Variety\n", "\n", - "Gagamitin natin ngayon ang parehong code tulad ng nasa itaas, ngunit sa halip na `DayOfYear`, gagamitin natin ang ating one-hot-encoded na uri bilang input:\n" + "Gagamitin na natin ang parehong code tulad ng nasa itaas, ngunit sa halip na `DayOfYear` ay gagamitin natin ang ating one-hot-encoded variety bilang input:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Maaari rin nating subukang gumamit ng iba pang mga tampok sa parehong paraan, at pagsamahin ang mga ito sa mga numerikal na tampok, tulad ng `Month` o `DayOfYear`:\n" + "Maaari rin nating subukan gamitin ang ibang mga tampok sa parehong paraan, at pagsamahin ang mga ito sa mga numerikal na tampok, tulad ng `Month` o `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Polynomial Regression\n", "\n", - "Ang polynomial regression ay maaari ring gamitin sa mga kategoryang tampok na naka-one-hot-encode. Ang code para sa pagsasanay ng polynomial regression ay halos pareho sa nakita natin sa itaas.\n" + "Maaaring gamitin ang polynomial regression sa mga categorical na katangian na naka-one-hot-encode. Ang code para mag-train ng polynomial regression ay halos pareho lamang ng nakita natin sa itaas.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Paunawa**: \nAng dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.\n" + "---\n\n\n**Paunawa**: \nAng dokumentong ito ay isinalin gamit ang serbisyong AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat pinagsisikapan naming maging tumpak, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o di-tiyak na impormasyon. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pinagmulan ng katotohanan. Para sa mga mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaintindihan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T14:42:08+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "tl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From ca1d8b15011525084f20f8b16de3203705a3728a Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 19:52:36 +0000 Subject: [PATCH 12/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/fa/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 98 +++--- .../fa/2-Regression/3-Linear/README.md | 298 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 59 ++-- translations/ur/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 102 +++--- .../ur/2-Regression/3-Linear/README.md | 312 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 61 ++-- translations/zh-CN/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 100 +++--- .../zh-CN/2-Regression/3-Linear/README.md | 267 ++++++++------- .../3-Linear/solution/notebook.ipynb | 57 ++-- 12 files changed, 743 insertions(+), 653 deletions(-) diff --git a/translations/fa/.co-op-translator.json b/translations/fa/.co-op-translator.json index a2f7035940..8f19a5c190 100644 --- a/translations/fa/.co-op-translator.json +++ b/translations/fa/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "fa" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-04T22:40:01+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:50:00+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "fa" }, @@ -90,8 +90,8 @@ "language_code": "fa" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:42:07+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:49:31+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "fa" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "fa" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:47:41+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "fa" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T22:32:20+00:00", diff --git a/translations/fa/1-Introduction/4-techniques-of-ML/README.md b/translations/fa/1-Introduction/4-techniques-of-ML/README.md index 31f627784b..f33a697011 100644 --- a/translations/fa/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/fa/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # تکنیک‌های یادگیری ماشین -فرآیند ساخت، استفاده و نگهداری مدل‌های یادگیری ماشین و داده‌هایی که از آن‌ها استفاده می‌کنند، بسیار متفاوت از بسیاری از جریان‌های کاری توسعه دیگر است. در این درس، این فرآیند را روشن می‌کنیم و تکنیک‌های اصلی که باید بدانید را توضیح می‌دهیم. شما: +فرآیند ساخت، استفاده و نگهداری از مدل‌های یادگیری ماشین و داده‌هایی که استفاده می‌کنند، فرآیندی بسیار متفاوت از بسیاری دیگر از جریان‌های کاری توسعه است. در این درس، فرآیند را رمزگشایی می‌کنیم و تکنیک‌های اصلی که باید بدانید را مشخص می‌کنیم. شما: - فرآیندهای پایه‌ای یادگیری ماشین را در سطح بالا درک خواهید کرد. - مفاهیم پایه‌ای مانند «مدل‌ها»، «پیش‌بینی‌ها» و «داده‌های آموزشی» را بررسی خواهید کرد. -## [آزمون پیش از درس](https://ff-quizzes.netlify.app/en/ml/) +## [آزمون پیش‌درس](https://ff-quizzes.netlify.app/en/ml/) [![یادگیری ماشین برای مبتدیان - تکنیک‌های یادگیری ماشین](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "یادگیری ماشین برای مبتدیان - تکنیک‌های یادگیری ماشین") -> 🎥 روی تصویر بالا کلیک کنید تا ویدیوی کوتاهی درباره این درس مشاهده کنید. +> 🎥 روی تصویر بالا کلیک کنید برای ویدئویی کوتاه که این درس را مرور می‌کند. ## مقدمه -در سطح بالا، هنر ایجاد فرآیندهای یادگیری ماشین (ML) شامل چندین مرحله است: +در سطح کلی، هنر ساخت فرآیندهای یادگیری ماشین (ML) شامل چندین مرحله است: -1. **تصمیم‌گیری درباره سؤال**. بیشتر فرآیندهای ML با پرسیدن یک سؤال شروع می‌شوند که نمی‌توان آن را با یک برنامه شرطی ساده یا موتور مبتنی بر قوانین پاسخ داد. این سؤالات اغلب حول پیش‌بینی‌هایی بر اساس مجموعه‌ای از داده‌ها می‌چرخند. -2. **جمع‌آوری و آماده‌سازی داده‌ها**. برای پاسخ به سؤال خود، به داده نیاز دارید. کیفیت و گاهی اوقات کمیت داده‌های شما تعیین می‌کند که چقدر می‌توانید به سؤال اولیه خود پاسخ دهید. تجسم داده‌ها جنبه مهمی از این مرحله است. این مرحله همچنین شامل تقسیم داده‌ها به گروه‌های آموزشی و آزمایشی برای ساخت مدل است. -3. **انتخاب روش آموزشی**. بسته به سؤال شما و ماهیت داده‌هایتان، باید انتخاب کنید که چگونه می‌خواهید مدلی را آموزش دهید که بهترین بازتاب داده‌های شما باشد و پیش‌بینی‌های دقیقی بر اساس آن انجام دهد. این بخش از فرآیند ML شما نیاز به تخصص خاص و اغلب مقدار قابل توجهی آزمایش دارد. -4. **آموزش مدل**. با استفاده از داده‌های آموزشی خود، از الگوریتم‌های مختلفی برای آموزش مدل استفاده می‌کنید تا الگوهای موجود در داده‌ها را شناسایی کند. مدل ممکن است از وزن‌های داخلی استفاده کند که می‌توان آن‌ها را تنظیم کرد تا بخش‌های خاصی از داده‌ها را نسبت به دیگران ترجیح دهد و مدل بهتری بسازد. -5. **ارزیابی مدل**. از داده‌هایی که قبلاً دیده نشده‌اند (داده‌های آزمایشی شما) از مجموعه جمع‌آوری‌شده خود استفاده می‌کنید تا ببینید مدل چگونه عمل می‌کند. -6. **تنظیم پارامترها**. بر اساس عملکرد مدل خود، می‌توانید فرآیند را با استفاده از پارامترها یا متغیرهای مختلفی که رفتار الگوریتم‌های استفاده‌شده برای آموزش مدل را کنترل می‌کنند، دوباره انجام دهید. -7. **پیش‌بینی**. از ورودی‌های جدید برای آزمایش دقت مدل خود استفاده کنید. +1. **تصمیم‌گیری درباره سؤال**. اکثر فرآیندهای ML با پرسیدن سؤالی شروع می‌شوند که نمی‌توان به آن با برنامه شرطی ساده یا موتور قوانین مبتنی بر قاعده پاسخ داد. اغلب این سؤالات حول محور پیش‌بینی‌ها بر اساس مجموعه‌ای از داده‌ها می‌چرخند. +2. **جمع‌آوری و آماده‌سازی داده**. برای پاسخ به سؤال خود، به داده نیاز دارید. کیفیت و گاهی کمیت داده‌های شما تعیین می‌کند که چقدر می‌توانید به سؤال اولیه خود پاسخ دهید. مصورسازی داده بخش مهمی از این مرحله است. این مرحله همچنین شامل تقسیم داده‌ها به گروه‌های آموزشی و آزمایشی برای ساخت مدل است. +3. **انتخاب روش آموزش**. بسته به سؤال شما و ماهیت داده‌هایتان، باید انتخاب کنید که چگونه می‌خواهید یک مدل را آموزش دهید تا بهترین بازتاب داده‌ها باشد و پیش‌بینی‌های دقیقی انجام دهد. این بخش از فرآیند ML شما نیازمند تخصص خاص و اغلب میزان قابل توجهی آزمایش و خطا است. +4. **آموزش مدل**. با استفاده از داده‌های آموزشی، از الگوریتم‌های مختلف برای آموزش مدل و شناسایی الگوها در داده استفاده می‌کنید. مدل ممکن است از وزن‌های داخلی بهره ببرد که قابل تنظیم هستند تا بخش‌های خاصی از داده را برای ساخت مدلی بهتر اولویت‌بندی کنند. +5. **ارزیابی مدل**. از داده‌هایی که قبلاً دیده نشده (داده‌های آزمایشی) از مجموعه جمع‌آوری‌شده خود استفاده می‌کنید تا ببینید مدل چگونه عمل می‌کند. +6. **تنظیم پارامترها**. بر اساس عملکرد مدل، می‌توانید فرآیند را با پارامترها یا متغیرهای متفاوت که رفتار الگوریتم‌های آموزش مدل را کنترل می‌کنند، از نو انجام دهید. +7. **پیش‌بینی**. از ورودی‌های جدید برای آزمایش دقت مدل استفاده کنید. -## چه سؤالی باید پرسید؟ +## چه سؤالی بپرسیم -کامپیوترها به‌طور خاص در کشف الگوهای پنهان در داده‌ها مهارت دارند. این قابلیت برای محققانی که سؤالاتی درباره یک حوزه خاص دارند که نمی‌توان به‌راحتی با ایجاد یک موتور مبتنی بر قوانین شرطی پاسخ داد، بسیار مفید است. برای مثال، در یک وظیفه بیمه‌ای، یک دانشمند داده ممکن است بتواند قوانین دستی درباره مرگ‌ومیر افراد سیگاری در مقابل غیرسیگاری‌ها ایجاد کند. +رایانه‌ها در کشف الگوهای پنهان در داده‌ها بسیار ماهر هستند. این ویژگی برای پژوهشگرانی که سؤالاتی درباره یک حوزه مشخص دارند و نمی‌توان به سادگی با ایجاد موتور قوانین مبتنی بر شرط به آن‌ها پاسخ داد بسیار مفید است. به عنوان مثال، در یک وظیفه بیمه‌ای، یک دانشمند داده ممکن است بتواند قوانین دستی درباره مرگ و میر سیگاری‌ها در مقابل غیرسیگاری‌ها بسازد. -با این حال، وقتی متغیرهای زیادی وارد معادله می‌شوند، یک مدل ML ممکن است کارآمدتر باشد تا نرخ مرگ‌ومیر آینده را بر اساس تاریخچه سلامت گذشته پیش‌بینی کند. یک مثال شادتر ممکن است پیش‌بینی آب‌وهوا برای ماه آوریل در یک مکان خاص باشد، بر اساس داده‌هایی که شامل عرض جغرافیایی، طول جغرافیایی، تغییرات اقلیمی، نزدیکی به اقیانوس، الگوهای جریان جت و موارد دیگر است. +با این حال، وقتی بسیاری از متغیرهای دیگر وارد معادله می‌شوند، یک مدل یادگیری ماشین ممکن است در پیش‌بینی نرخ مرگ و میر آینده، بر اساس تاریخچه سلامت گذشته، کارآمدتر باشد. مثال خوشحال‌کننده‌تر می‌تواند پیش‌بینی هوای ماه آوریل در یک مکان مشخص با استفاده از داده‌هایی شامل عرض جغرافیایی، طول جغرافیایی، تغییرات اقلیمی، نزدیکی به اقیانوس، الگوهای جت استریم و غیره باشد. -✅ این [اسلایدها](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) درباره مدل‌های آب‌وهوا، دیدگاه تاریخی برای استفاده از ML در تحلیل آب‌وهوا ارائه می‌دهند. +✅ این [ارائه اسلاید](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) درباره مدل‌های آب و هوا دیدگاه تاریخی برای استفاده از ML در تحلیل آب و هوا ارائه می‌دهد. -## وظایف پیش از ساخت +## وظایف پیش از ساخت مدل -قبل از شروع به ساخت مدل خود، چندین وظیفه وجود دارد که باید انجام دهید. برای آزمایش سؤال خود و تشکیل یک فرضیه بر اساس پیش‌بینی‌های مدل، باید چندین عنصر را شناسایی و پیکربندی کنید. +قبل از شروع به ساخت مدل خود، چند وظیفه وجود دارد که باید آن‌ها را انجام دهید. برای آزمایش سؤال خود و تشکیل فرضیه بر اساس پیش‌بینی‌های مدل، باید چند عنصر را شناسایی و پیکربندی کنید. -### داده‌ها +### داده -برای پاسخ به سؤال خود با هر نوع قطعیتی، به مقدار مناسبی از داده‌های درست نیاز دارید. در این مرحله دو کار باید انجام دهید: +برای اینکه بتوانید با هر نوع اطمینانی به سؤال خود پاسخ دهید، نیاز به مقدار مناسبی از داده‌های درست دارید. در این مرحله باید دو کار انجام دهید: -- **جمع‌آوری داده‌ها**. با توجه به درس قبلی درباره انصاف در تحلیل داده‌ها، داده‌های خود را با دقت جمع‌آوری کنید. از منابع این داده‌ها، هرگونه تعصب ذاتی که ممکن است داشته باشد، آگاه باشید و منشأ آن را مستند کنید. -- **آماده‌سازی داده‌ها**. فرآیند آماده‌سازی داده‌ها شامل چندین مرحله است. ممکن است نیاز باشد داده‌ها را جمع‌آوری و نرمال‌سازی کنید اگر از منابع متنوعی آمده باشند. می‌توانید کیفیت و کمیت داده‌ها را از طریق روش‌های مختلفی مانند تبدیل رشته‌ها به اعداد (همان‌طور که در [خوشه‌بندی](../../5-Clustering/1-Visualize/README.md) انجام می‌دهیم) بهبود دهید. ممکن است داده‌های جدیدی بر اساس داده‌های اصلی تولید کنید (همان‌طور که در [طبقه‌بندی](../../4-Classification/1-Introduction/README.md) انجام می‌دهیم). می‌توانید داده‌ها را پاک‌سازی و ویرایش کنید (همان‌طور که قبل از درس [برنامه وب](../../3-Web-App/README.md) انجام خواهیم داد). در نهایت، ممکن است نیاز باشد داده‌ها را تصادفی‌سازی و مخلوط کنید، بسته به تکنیک‌های آموزشی شما. +- **جمع‌آوری داده**. با در نظر گرفتن درس قبلی درباره عدالت در تحلیل داده‌ها، داده‌های خود را با دقت جمع‌آوری کنید. از منابع این داده‌ها آگاه باشید، از هرگونه تعصب ذاتی آن‌ها مطلع باشید و منشأ آن‌ها را مستندسازی کنید. +- **آماده‌سازی داده**. چند مرحله در فرآیند آماده‌سازی داده وجود دارد. ممکن است نیاز باشد داده‌ها را جمع‌آوری و نرمال‌سازی کنید اگر از منابع مختلف آمده‌اند. می‌توانید کیفیت و کمیت داده را با روش‌های مختلفی مانند تبدیل رشته‌ها به عدد (همانطور که در [خوشه‌بندی](../../5-Clustering/1-Visualize/README.md) انجام می‌دهیم) بهبود بخشید. همچنین ممکن است داده‌های جدیدی بر اساس داده‌های اصلی تولید کنید (همانطور که در [دسته‌بندی](../../4-Classification/1-Introduction/README.md) انجام می‌دهیم). می‌توانید داده‌ها را تمیز و ویرایش کنید (همانطور که قبل از درس [وب اپ](../../3-Web-App/README.md) انجام می‌دهیم). در نهایت، بسته به تکنیک‌های آموزش، ممکن است نیاز باشد آنها را به‌صورت تصادفی مرتب کنید و جابجا کنید. -✅ پس از جمع‌آوری و پردازش داده‌های خود، لحظه‌ای وقت بگذارید تا ببینید آیا شکل آن‌ها به شما اجازه می‌دهد سؤال مورد نظر خود را پاسخ دهید. ممکن است داده‌ها در وظیفه مورد نظر شما عملکرد خوبی نداشته باشند، همان‌طور که در درس‌های [خوشه‌بندی](../../5-Clustering/1-Visualize/README.md) کشف می‌کنیم! +✅ پس از جمع‌آوری و پردازش داده‌ها، کمی وقت بگذارید تا ببینید شکل داده‌ها آیا به شما امکان می‌دهد به سؤال هدف خود پاسخ دهید یا خیر. ممکن است داده‌ها در وظیفهٔ مورد نظر عملکرد خوبی نداشته باشند، همانطور که در درس‌های [خوشه‌بندی](../../5-Clustering/1-Visualize/README.md) می‌بینیم! ### ویژگی‌ها و هدف -یک [ویژگی](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) یک خاصیت قابل اندازه‌گیری از داده‌های شماست. در بسیاری از مجموعه داده‌ها، به‌عنوان عنوان ستون‌هایی مانند «تاریخ»، «اندازه» یا «رنگ» بیان می‌شود. متغیر ویژگی شما، که معمولاً در کد به‌صورت `X` نشان داده می‌شود، متغیر ورودی است که برای آموزش مدل استفاده خواهد شد. +[ویژگی](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) خصوصیتی قابل اندازه‌گیری از داده‌های شما است. در بسیاری از مجموعه داده‌ها، به شکل عنوان ستون‌هایی مانند 'تاریخ'، 'اندازه' یا 'رنگ' بیان می‌شود. متغیر ویژگی شما، که معمولاً در کد به صورت `X` نمایش داده می‌شود، متغیر ورودی است که برای آموزش مدل استفاده می‌شود. -هدف چیزی است که شما سعی دارید پیش‌بینی کنید. هدف که معمولاً به‌صورت `y` در کد نشان داده می‌شود، پاسخ به سؤالی است که شما سعی دارید از داده‌های خود بپرسید: در ماه دسامبر، کدوهای **چه رنگی** ارزان‌تر خواهند بود؟ در سان‌فرانسیسکو، کدام محله‌ها بهترین **قیمت** املاک را خواهند داشت؟ گاهی هدف به‌عنوان ویژگی برچسب نیز شناخته می‌شود. +هدف چیزی است که قصد دارید پیش‌بینی کنید. هدف که معمولاً به صورت `y` در کد نمایش داده می‌شود، پاسخی است به سؤالی که از داده‌ها می‌پرسید: در دسامبر، کدوهای ما ارزان‌ترین کدام رنگ خواهند بود؟ در سان‌فرانسیسکو، کدام محله‌ها بهترین قیمت املاک را خواهند داشت؟ گاهی اوقات هدف به عنوان برچسب (label) نیز نامیده می‌شود. ### انتخاب متغیر ویژگی -🎓 **انتخاب ویژگی و استخراج ویژگی** چگونه می‌دانید کدام متغیر را هنگام ساخت مدل انتخاب کنید؟ احتمالاً فرآیندی از انتخاب ویژگی یا استخراج ویژگی را طی خواهید کرد تا متغیرهای مناسب برای بهترین مدل را انتخاب کنید. با این حال، آن‌ها یکسان نیستند: «استخراج ویژگی ویژگی‌های جدیدی از توابع ویژگی‌های اصلی ایجاد می‌کند، در حالی که انتخاب ویژگی یک زیرمجموعه از ویژگی‌ها را بازمی‌گرداند.» ([منبع](https://wikipedia.org/wiki/Feature_selection)) +🎓 **انتخاب ویژگی و استخراج ویژگی** چگونه می‌دانید هنگام ساخت مدل کدام متغیر را انتخاب کنید؟ احتمالاً از فرایند انتخاب ویژگی یا استخراج ویژگی عبور خواهید کرد تا متغیرهای مناسب را برای مدل با بهترین عملکرد انتخاب کنید. اما این دو یکسان نیستند: «استخراج ویژگی ویژگی‌های جدیدی از توابع ویژگی‌های اصلی ایجاد می‌کند، در حالی که انتخاب ویژگی زیرمجموعه‌ای از ویژگی‌ها را بازمی‌گرداند.» ([منبع](https://wikipedia.org/wiki/Feature_selection)) -### تجسم داده‌های خود +### مصورسازی داده‌هایتان -یکی از جنبه‌های مهم ابزارهای دانشمند داده، قدرت تجسم داده‌ها با استفاده از چندین کتابخانه عالی مانند Seaborn یا MatPlotLib است. نمایش داده‌های خود به‌صورت بصری ممکن است به شما اجازه دهد تا همبستگی‌های پنهانی را کشف کنید که می‌توانید از آن‌ها بهره‌برداری کنید. تجسم‌های شما ممکن است به شما کمک کنند تا تعصب یا داده‌های نامتعادل را کشف کنید (همان‌طور که در [طبقه‌بندی](../../4-Classification/2-Classifiers-1/README.md) کشف می‌کنیم). +جنبه مهمی از جعبه ابزار دانشمند داده توانایی مصورسازی داده‌ها با استفاده از چندین کتابخانه عالی مانند Seaborn یا MatPlotLib است. نمایش داده‌ها به صورت بصری ممکن است اجازه دهد همبستگی‌های پنهان را کشف کنید که می‌توانید از آن بهره ببرید. مصورسازی شما همچنین ممکن است به کشف تعصب یا داده‌های نامتقارن کمک کند (همانطور که در [دسته‌بندی](../../4-Classification/2-Classifiers-1/README.md) می‌بینیم). -### تقسیم مجموعه داده خود +### تقسیم مجموعه داده -قبل از آموزش، باید مجموعه داده خود را به دو یا چند بخش با اندازه‌های نابرابر تقسیم کنید که همچنان داده‌ها را به‌خوبی نمایندگی کنند. +قبل از آموزش، باید مجموعه داده خود را به دو یا چند بخش با اندازه‌های نامساوی تقسیم کنید که هنوز نماینده داده‌ها هستند. -- **آموزشی**. این بخش از مجموعه داده به مدل شما برای آموزش آن اختصاص داده می‌شود. این مجموعه بخش عمده‌ای از مجموعه داده اصلی را تشکیل می‌دهد. -- **آزمایشی**. مجموعه داده آزمایشی یک گروه مستقل از داده‌هاست، که اغلب از داده‌های اصلی جمع‌آوری شده است، که برای تأیید عملکرد مدل ساخته‌شده استفاده می‌کنید. -- **اعتباریابی**. مجموعه اعتباریابی یک گروه کوچک‌تر مستقل از نمونه‌هاست که برای تنظیم پارامترهای مدل یا معماری آن برای بهبود مدل استفاده می‌کنید. بسته به اندازه داده‌های شما و سؤالی که می‌پرسید، ممکن است نیازی به ساخت این مجموعه سوم نداشته باشید (همان‌طور که در [پیش‌بینی سری زمانی](../../7-TimeSeries/1-Introduction/README.md) اشاره می‌کنیم). +- **آموزش**. این بخش از مجموعه داده برای آموزش مدل استفاده می‌شود. این مجموعه بخش عمده‌ای از داده اصلی را تشکیل می‌دهد. +- **آزمون**. مجموعه داده آزمایشی گروه مستقلی از داده‌ها است که معمولاً از داده اصلی گرفته شده و برای تأیید عملکرد مدل ساخته‌شده استفاده می‌شود. +- **اعتبارسنجی**. مجموعه اعتبارسنجی گروه کوچکتری از نمونه‌ها است که برای تنظیم ابرپارامترهای مدل یا ساختار آن جهت بهبود مدل استفاده می‌کنید. بسته به اندازه داده‌ و سؤال مطرح‌شده، ممکن است نیازی به ساخت این مجموعه سوم نداشته باشید (همانطور که در [پیش‌بینی سری‌های زمانی](../../7-TimeSeries/1-Introduction/README.md) اشاره شده است). ## ساخت مدل -با استفاده از داده‌های آموزشی خود، هدف شما ساخت یک مدل یا نمای آماری از داده‌های شماست، با استفاده از الگوریتم‌های مختلف برای **آموزش** آن. آموزش یک مدل آن را در معرض داده‌ها قرار می‌دهد و به آن اجازه می‌دهد تا فرضیاتی درباره الگوهای درک‌شده کشف کند، تأیید کند و بپذیرد یا رد کند. +با استفاده از داده‌های آموزشی، هدف شما ساخت مدلی یا نمایش آماری داده‌ها با استفاده از الگوریتم‌های مختلف برای **آموزش** آن است. آموزش مدل آن را در معرض داده‌ها قرار می‌دهد و به آن اجازه می‌دهد بر اساس الگوهای درک‌شده فرضیه‌سازی کند، آن‌ها را ارزیابی کند و بپذیرد یا رد کند. -### تصمیم‌گیری درباره روش آموزشی +### انتخاب روش آموزش -بسته به سؤال شما و ماهیت داده‌های شما، روش آموزشی را انتخاب خواهید کرد. با مرور [مستندات Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - که در این دوره استفاده می‌کنیم - می‌توانید روش‌های زیادی برای آموزش مدل را بررسی کنید. بسته به تجربه شما، ممکن است مجبور شوید چندین روش مختلف را امتحان کنید تا بهترین مدل را بسازید. احتمالاً فرآیندی را طی خواهید کرد که در آن دانشمندان داده عملکرد مدل را با تغذیه داده‌های دیده‌نشده ارزیابی می‌کنند، دقت، تعصب و سایر مسائل کاهش‌دهنده کیفیت را بررسی می‌کنند و مناسب‌ترین روش آموزشی را برای وظیفه مورد نظر انتخاب می‌کنند. +بسته به سؤال و ماهیت داده‌ها، روشی برای آموزش انتخاب می‌کنید. با مرور مستندات [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - که در این دوره استفاده می‌کنیم - می‌توانید روش‌های زیادی برای آموزش مدل کشف کنید. بسته به تجربه‌تان، ممکن است مجبور شوید چندین روش مختلف را برای ساخت مدل بهتر امتحان کنید. احتمالاً در فرایندی قرار می‌گیرید که داده‌کاوان عملکرد مدل را با تغذیه داده ندیده، بررسی دقت، تعصب و مشکلات کاهش‌دهنده کیفیت می‌سنجند و مناسب‌ترین روش آموزش را برای کار انتخاب می‌کنند. ### آموزش مدل -با داده‌های آموزشی خود آماده هستید تا آن را «تناسب» دهید و یک مدل ایجاد کنید. متوجه خواهید شد که در بسیاری از کتابخانه‌های ML کد 'model.fit' وجود دارد - در این زمان است که متغیر ویژگی خود را به‌صورت آرایه‌ای از مقادیر (معمولاً 'X') و یک متغیر هدف (معمولاً 'y') ارسال می‌کنید. +مجهز به داده‌های آموزشی، آماده «تناسب» دادن مدل هستید. در بسیاری از کتابخانه‌های ML کد 'model.fit' را خواهید دید - این زمانی است که متغیر ویژگی خود را به صورت آرایه‌ای از مقادیر (معمولاً 'X') و متغیر هدف (معمولاً 'y') ارسال می‌کنید. ### ارزیابی مدل -پس از تکمیل فرآیند آموزش (ممکن است برای آموزش یک مدل بزرگ چندین تکرار یا «دوره» طول بکشد)، می‌توانید کیفیت مدل را با استفاده از داده‌های آزمایشی برای سنجش عملکرد آن ارزیابی کنید. این داده‌ها زیرمجموعه‌ای از داده‌های اصلی هستند که مدل قبلاً آن‌ها را تحلیل نکرده است. می‌توانید جدولی از معیارهای کیفیت مدل خود چاپ کنید. +پس از تکمیل فرآیند آموزش (ممکن است برای آموزش یک مدل بزرگ چندین تکرار یا 'اپک' لازم باشد)، می‌توانید کیفیت مدل را با استفاده از داده‌های آزمون که قبلاً مدل آن‌ها را ندیده است ارزیابی کنید. این داده‌ها زیرمجموعه‌ای از داده اصلی هستند که مدل قبلاً تحلیل نکرده است. می‌توانید جدولی از معیارهای کیفیت مدل خود چاپ کنید. 🎓 **تناسب مدل** -در زمینه یادگیری ماشین، تناسب مدل به دقت عملکرد زیرین مدل اشاره دارد که تلاش می‌کند داده‌هایی را که با آن‌ها آشنا نیست تحلیل کند. +در زمینه یادگیری ماشین، تناسب مدل به دقت تابع پایه مدل اشاره دارد هنگامی که سعی می‌کند داده‌هایی را تحلیل کند که با آن‌ها آشنا نیست. -🎓 **تناسب کم** و **تناسب بیش‌ازحد** مشکلات رایجی هستند که کیفیت مدل را کاهش می‌دهند، زیرا مدل یا به‌اندازه کافی خوب تناسب ندارد یا بیش‌ازحد تناسب دارد. این باعث می‌شود مدل پیش‌بینی‌هایی انجام دهد که یا بیش‌ازحد با داده‌های آموزشی هماهنگ هستند یا بیش‌ازحد از آن‌ها فاصله دارند. یک مدل تناسب بیش‌ازحد داده‌های آموزشی را بیش‌ازحد خوب پیش‌بینی می‌کند زیرا جزئیات و نویز داده‌ها را بیش‌ازحد خوب یاد گرفته است. یک مدل تناسب کم دقیق نیست زیرا نمی‌تواند داده‌های آموزشی خود یا داده‌هایی که هنوز «ندیده» است را به‌درستی تحلیل کند. +🎓 **کم‌برازش** و **بیش‌برازش** مشکلات رایجی هستند که کیفیت مدل را کاهش می‌دهند، زیرا مدل یا به اندازه کافی مناسب نیست یا بیش از حد مناسب. این باعث می‌شود مدل پیش‌بینی‌هایی انجام دهد که یا خیلی نزدیک به داده‌های آموزشی است یا بسیار دور از آن. مدل بیش‌برازش داده‌های آموزشی را خیلی خوب پیش‌بینی می‌کند چون جزئیات و نویز داده‌ها را خیلی خوب یاد گرفته است. مدل کم‌برازش دقیق نیست چون نه می‌تواند داده‌های آموزشی را درست تحلیل کند و نه داده‌هایی که قبلاً «ندیده» است. -![مدل تناسب بیش‌ازحد](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![مدل بیش‌برازش](../../../../translated_images/fa/overfitting.1c132d92bfd93cb6.webp) > اینفوگرافیک توسط [Jen Looper](https://twitter.com/jenlooper) ## تنظیم پارامترها -پس از تکمیل آموزش اولیه، کیفیت مدل را مشاهده کنید و بهبود آن را با تنظیم «پارامترهای فرا» در نظر بگیرید. درباره این فرآیند بیشتر بخوانید [در مستندات](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +وقتی آموزش اولیه شما کامل شد، کیفیت مدل را مشاهده کنید و در نظر بگیرید که با تنظیم 'ابرپارامترها' آن را بهبود بخشید. درباره این فرآیند بیشتر در [مستندات](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) بخوانید. ## پیش‌بینی -این لحظه‌ای است که می‌توانید از داده‌های کاملاً جدید برای آزمایش دقت مدل خود استفاده کنید. در یک محیط ML «کاربردی»، جایی که شما دارایی‌های وبی برای استفاده از مدل در تولید می‌سازید، این فرآیند ممکن است شامل جمع‌آوری ورودی کاربر (مثلاً فشار دادن یک دکمه) برای تنظیم یک متغیر و ارسال آن به مدل برای استنتاج یا ارزیابی باشد. +این لحظه‌ای است که می‌توانید از داده‌های کاملاً جدید برای آزمایش دقت مدل خود استفاده کنید. در محیط یادگیری ماشین «کاربردی» که در آن دارایی‌های وب را برای استفاده مدل در تولید می‌سازید، این فرآیند ممکن است شامل جمع‌آوری ورودی کاربر (مثلاً فشار دکمه) برای تنظیم متغیر و ارسال آن به مدل برای استنتاج یا ارزیابی باشد. -در این درس‌ها، شما کشف خواهید کرد که چگونه از این مراحل برای آماده‌سازی، ساخت، آزمایش، ارزیابی و پیش‌بینی استفاده کنید - تمام حرکات یک دانشمند داده و بیشتر، همان‌طور که در سفر خود برای تبدیل شدن به یک مهندس ML «تمام‌عیار» پیشرفت می‌کنید. +در این درس‌ها، خواهید آموخت چگونه با استفاده از این مراحل، آماده‌سازی، ساخت، آزمون، ارزیابی و پیش‌بینی کنید - همه حرکات یک دانشمند داده و فراتر، در مسیر تبدیل شدن به مهندس یادگیری ماشین 'فول استک'. --- ## 🚀چالش -یک نمودار جریان رسم کنید که مراحل یک متخصص ML را نشان دهد. در حال حاضر خود را در کدام مرحله می‌بینید؟ پیش‌بینی می‌کنید کجا با دشواری مواجه شوید؟ چه چیزی برای شما آسان به نظر می‌رسد؟ +یک نمودار جریان رسم کنید که مراحل یک متخصص یادگیری ماشین را نشان دهد. در کجای این فرآیند خود را می‌بینید؟ پیش‌بینی می‌کنید در کجا با مشکل مواجه شوید؟ چه چیزی برایتان آسان به نظر می‌رسد؟ ## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/) -## مرور و مطالعه شخصی +## مرور و مطالعه خودآموز -به‌صورت آنلاین جستجو کنید تا مصاحبه‌هایی با دانشمندان داده پیدا کنید که درباره کار روزانه خود صحبت می‌کنند. اینجا یک [نمونه](https://www.youtube.com/watch?v=Z3IjgbbCEfs) است. +به صورت آنلاین جستجو کنید تا مصاحبه‌هایی با دانشمندان داده که درباره کار روزمره خود صحبت می‌کنند بیابید. این یکی [مصاحبه](https://www.youtube.com/watch?v=Z3IjgbbCEfs) است. -## تکلیف +## تمرین [مصاحبه با یک دانشمند داده](assignment.md) --- + **سلب مسئولیت**: -این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. \ No newline at end of file +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در پی دقت هستیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئولیتی در قبال هرگونه سوءتفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه نداریم. + \ No newline at end of file diff --git a/translations/fa/2-Regression/3-Linear/README.md b/translations/fa/2-Regression/3-Linear/README.md index be99871b3e..c62c0d280b 100644 --- a/translations/fa/2-Regression/3-Linear/README.md +++ b/translations/fa/2-Regression/3-Linear/README.md @@ -1,62 +1,63 @@ -# ساخت یک مدل رگرسیون با استفاده از Scikit-learn: چهار روش رگرسیون +# ساخت مدل رگرسیون با استفاده از Scikit-learn: رگرسیون از چهار دیدگاه مختلف -## نکته مبتدی +## نکته برای مبتدیان -رگرسیون خطی زمانی استفاده می‌شود که بخواهیم یک **مقدار عددی** پیش‌بینی کنیم (برای مثال، قیمت خانه، دما یا فروش). -این مدل با یافتن یک خط راست که بهترین نماینده رابطه بین ویژگی‌های ورودی و خروجی باشد، کار می‌کند. +رگرسیون خطی زمانی استفاده می‌شود که بخواهیم یک **مقدار عددی** پیش‌بینی کنیم (برای مثال، قیمت خانه، دما یا فروش). +این روش با یافتن یک خط مستقیم که بهترین نمایش‌دهنده رابطه بین ویژگی‌های ورودی و خروجی است، کار می‌کند. -در این درس، تمرکز ما بر درک مفهوم است قبل از کاوش روش‌های پیشرفته‌تر رگرسیون. -![رگرسیون خطی در مقابل چندجمله‌ای انفورگرافیک](../../../../translated_images/fa/linear-polynomial.5523c7cb6576ccab.webp) -> اینفوگرافیک توسط [داسانی مادیپالی](https://twitter.com/dasani_decoded) +در این درس، تمرکز ما بر درک مفهوم قبل از بررسی تکنیک‌های پیشرفته‌تر رگرسیون است. +![رگرسیون خطی در مقابل چندجمله‌ای](../../../../translated_images/fa/linear-polynomial.5523c7cb6576ccab.webp) +> اینفوگرافیک توسط [داسانی مادایپالی](https://twitter.com/dasani_decoded) ## [آزمون قبل از درس](https://ff-quizzes.netlify.app/en/ml/) -> ### [این درس در R نیز موجود است!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### مقدمه +> ### [این درس به زبان R نیز در دسترس است!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### معرفی -تا اینجا بررسی کرده‌اید رگرسیون چیست با داده نمونه جمع‌آوری شده از مجموعه داده قیمت کدو تنبل که در طول این درس استفاده خواهیم کرد. همچنین آن را با استفاده از Matplotlib مصورسازی کرده‌اید. +تا به حال بررسی کرده‌اید که رگرسیون چیست با داده‌های نمونه‌ای که از مجموعه داده قیمت کدو تنبل جمع‌آوری شده و در این درس از آن استفاده خواهیم کرد. همچنین آن را با استفاده از Matplotlib تجسم کرده‌اید. -اکنون آماده‌اید عمیق‌تر در رگرسیون برای یادگیری ماشین فرو بروید. در حالی که مصورسازی به شما اجازه می‌دهد داده‌ها را درک کنید، قدرت واقعی یادگیری ماشین از _آموزش مدل‌ها_ می‌آید. مدل‌ها روی داده‌های تاریخی آموزش می‌بینند تا به طور خودکار وابستگی‌های داده را به دست آورند، و به شما اجازه می‌دهند نتایج داده‌های جدید را پیش‌بینی کنید که مدل قبلا ندیده است. +اکنون آماده‌اید تا عمیق‌تر به رگرسیون برای یادگیری ماشین بپردازید. در حالی که تجسم به شما کمک می‌کند داده‌ها را درک کنید، قدرت واقعی یادگیری ماشین از _آموزش مدل‌ها_ ناشی می‌شود. مدل‌ها روی داده‌های تاریخی آموزش داده می‌شوند تا به طور خودکار وابستگی‌های داده را شناسایی کنند و به شما امکان پیش‌بینی نتایج برای داده‌های جدید که مدل قبلاً ندیده است را می‌دهند. -در این درس، شما درباره دو نوع رگرسیون بیشتر خواهید آموخت: _رگرسیون خطی پایه_ و _رگرسیون چندجمله‌ای_، همراه با بخشی از ریاضیات پشت این تکنیک‌ها. این مدل‌ها به ما اجازه می‌دهند قیمت کدو تنبل را بر اساس داده‌های ورودی مختلف پیش‌بینی کنیم. +در این درس، شما با دو نوع رگرسیون بیشتر آشنا خواهید شد: _رگرسیون خطی پایه_ و _رگرسیون چندجمله‌ای_ به همراه بخشی از ریاضی پشت این تکنیک‌ها. این مدل‌ها به ما امکان می‌دهند قیمت کدو تنبل را بر اساس داده‌های ورودی مختلف پیش‌بینی کنیم. [![یادگیری ماشین برای مبتدیان - درک رگرسیون خطی](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "یادگیری ماشین برای مبتدیان - درک رگرسیون خطی") -> 🎥 برای تماشای ویدئوی کوتاه مرور رگرسیون خطی روی تصویر بالا کلیک کنید. +> 🎥 روی تصویر بالا کلیک کنید تا ویدیوی کوتاهی درباره رگرسیون خطی ببینید. -> در طول این دوره، فرض می‌کنیم دانش ریاضی حداقلی است و تلاش می‌کنیم برای دانشجویان از رشته‌های دیگر قابل دسترس باشد، پس مراقب یادداشت‌ها، اشاره‌های 🧮، نمودارها و ابزارهای یادگیری دیگر برای کمک به فهم باشید. +> در سراسر این دوره فرض بر دانش حداقلی ریاضی است و تلاش شده است آن را برای دانشجویانی که از رشته‌های دیگر می‌آیند قابل دسترس کنیم، پس به نکات، 🧮 یادداشت‌ها، نمودارها و دیگر ابزارهای آموزشی دقت کنید. ### پیش‌نیاز -شما باید اکنون با ساختار داده کدو تنبل که بررسی می‌کنیم آشنا باشید. این داده در فایل _notebook.ipynb_ این درس به صورت پیش‌بارگذاری و پیش‌پاک‌سازی شده موجود است. در این فایل، قیمت کدو تنبل به ازای هر بوشل در یک داده فریم جدید نمایش داده شده است. مطمئن شوید می‌توانید این نوت‌بوک‌ها را در کرنل‌های Visual Studio Code اجرا کنید. +حال باید با ساختار داده‌های کدو تنبل که بررسی می‌کنیم آشنا باشید. می‌توانید آن را از پیش بارگذاری شده و پاک‌سازی شده در فایل _notebook.ipynb_ این درس بیابید. در این فایل، قیمت کدو تنبل به ازای هر بشِل (bushel) در یک دیتافریم جدید نمایش داده شده است. اطمینان حاصل کنید می‌توانید این نوت‌بوک‌ها را در هسته‌های Visual Studio Code اجرا کنید. ### آماده‌سازی -به عنوان یادآوری، شما این داده را بارگذاری می‌کنید تا بتوانید سوال‌هایی از آن بپرسید. +برای یادآوری، شما این داده‌ها را بارگذاری می‌کنید تا بتوانید سوالاتی درباره آن مطرح کنید. -- بهترین زمان خرید کدو تنبل کی است؟ -- چه قیمت را انتظار می‌توانم برای یک جعبه کدو تنبل مینیاتوری داشته باشم؟ -- آیا باید آن‌ها را در سبدهای نیم بوشل بخرم یا در جعبه 1 1/9 بوشل؟ -بیایید بیشتر در این داده‌ها کاوش کنیم. +- بهترین زمان خرید کدو تنبل کی هست؟ +- قیمت مورد انتظار برای یک بسته کوچک کدو تنبل چقدر است؟ +- باید آنها را در سبدهای نیم‌بشل یا در جعبه‌های 1 و 1/9 بشل بخرم؟ +بیایید بیشتر به عمق این داده‌ها بپردازیم. -در درس قبلی، یک داده فریم Pandas ایجاد کردید و آن را با بخشی از مجموعه داده اصلی پر کردید، قیمت‌گذاری را بر اساس بوشل معیار قرار دادید. اما با این کار تنها توانستید حدود 400 نقطه داده و فقط برای ماه‌های پاییز به دست آورید. +در درس قبلی، یک دیتافریم Pandas ایجاد کردید و آن را با بخشی از داده‌های اصلی پر کردید، قیمت‌گذاری را بر اساس بشِل استاندارد کردید. اما با این کار تنها توانستید حدود ۴۰۰ داده جمع‌آوری کنید و فقط برای ماه‌های پاییز. -نگاهی به داده‌هایی بیندازید که در نوت‌بوک همراه این درس پیش‌بارگذاری شده است. داده‌ها پیش‌بارگذاری شده‌اند و یک پراکندگی اولیه برای نشان دادن داده‌های ماه رسم شده است. شاید بتوانیم با پاکسازی بیشتر، جزئیات بیشتری درباره ماهیت داده‌ها داشته باشیم. +نگاهی به داده‌های از پیش بارگذاری شده در نوت‌بوک همراه این درس بیندازید. داده‌ها بارگذاری شده و یک نمودار پراکندگی اولیه کشیده شده که داده‌های ماه را نشان می‌دهد. شاید بتوانیم با پاک‌سازی بیشتر جزئیات بیشتری درباره طبیعت داده‌ها به دست آوریم. -## یک خط رگرسیون خطی +## خط رگرسیون خطی -همان‌طور که در درس 1 آموختید، هدف یک تمرین رگرسیون خطی این است که بتوانیم یک خط ترسیم کنیم که: +همان‌طور که در درس اول یاد گرفتید، هدف تمرین رگرسیون خطی این است که بتوانید خطی ترسیم کنید تا: -- **نشان‌دهنده رابطه متغیرها باشد**. نشان دادن رابطه بین متغیرها -- **پیش‌بینی انجام دهد**. پیش‌بینی دقیق جایی که نقطه داده جدید نسبت به آن خط قرار می‌گیرد. +- **نشان دادن روابط متغیرها**. رابطه بین متغیرها را نشان دهد +- **ساخت پیش‌بینی‌ها**. پیش‌بینی دقیق درباره محل قرارگیری یک داده جدید نسبت به آن خط انجام دهد. -معمول است که این نوع خط توسط **رگرسیون کمترین مربعات** رسم شود. اصطلاح "کمترین مربعات" به فرآیند کمینه کردن کل خطا در مدل ما اشاره دارد. برای هر نقطه داده، فاصله عمودی (که به آن باقیمانده می‌گویند) بین نقطه واقعی و خط رگرسیون ما اندازه‌گیری می‌شود. +معمولاً **رگرسیون کمترین مربعات** این نوع خط را رسم می‌کند. اصطلاح "کمترین مربعات" به فرآیند کمینه کردن مجموع خطاهای مدل اشاره دارد. برای هر نقطه داده، فاصله عمودی (که باقیمانده نامیده می‌شود) بین نقطه واقعی و خط رگرسیون اندازه‌گیری می‌شود. -ما این فاصله‌ها را دو دلیل اصلی مربع می‌کنیم: +این فاصله‌ها به دو دلیل مربع می‌شوند: -1. **قدر بیش از جهت:** می‌خواهیم خطای -5 به اندازه خطای +5 حساب شود. مربع گرفتن همه مقادیر را مثبت می‌کند. -2. **جریمه دادن به نقاط پرت:** مربع کردن وزن بیشتری به خطاهای بزرگ می‌دهد و خط را مجبور می‌کند نزدیک‌تر به نقاط دور شود. +1. **اندازه به جای جهت:** می‌خواهیم خطای -۵ را مانند خطای +۵ حساب کنیم. مربع گرفتن همه مقادیر را مثبت می‌کند. -سپس همه این مقادیر مربعی را جمع می‌کنیم. هدف ما یافتن خط خاصی است که این مجموع نهایی کمترین مقدار ممکن را داشته باشد — بنابراین نام "کمترین مربعات" است. +2. **تنبیه نقاط پرت:** مربع گرفتن به خطاهای بزرگتر وزن بیشتری می‌دهد و خط را مجبور می‌کند که به نقاط دورتر نزدیک‌تر بماند. + +سپس همه مقادیر مربعی را جمع می‌کنیم. هدف ما یافتن خط خاصی است که این مجموع نهایی حداقل (کمترین مقدار ممکن) باشد — از این رو نام "کمترین مربعات". > **🧮 ریاضی را به من نشان بده** > @@ -65,71 +66,71 @@ > ``` > Y = a + bX > ``` -> -> `X` متغیر توضیحی است. `Y` متغیر وابسته است. شیب خط `b` است و `a` عرض از مبدأ در محور y است، که مقدار `Y` را وقتی `X = 0` است نشان می‌دهد. -> -> ![محاسبه شیب](../../../../translated_images/fa/slope.f3c9d5910ddbfcf9.webp) -> -> ابتدا شیب `b` را محاسبه کنید. اینفوگرافیک توسط [جن لوپر](https://twitter.com/jenlooper) -> -> به عبارت دیگر، و با اشاره به سوال اصلی داده کدو تنبل ما: "پیش‌بینی قیمت کدو تنبل به ازای هر بوشل بر اساس ماه"، `X` اشاره به قیمت دارد و `Y` به ماه فروش. -> -> ![تکمیل معادله](../../../../translated_images/fa/calculation.a209813050a1ddb1.webp) -> -> مقدار Y را محاسبه کنید. اگر حدود 4 دلار پرداخت می‌کنید، باید آوریل باشد! اینفوگرافیک توسط [جن لوپر](https://twitter.com/jenlooper) -> -> ریاضی که خط را محاسبه می‌کند باید شیب خط را نشان دهد، که همچنین به عرض از مبدأ یا جایی که `Y` وقتی `X = 0` است بستگی دارد. -> -> می‌توانید روش محاسبه این مقادیر را در سایت [ریاضیات سرگرم‌کننده](https://www.mathsisfun.com/data/least-squares-regression.html) مشاهده کنید. همچنین به [این ماشین حساب کمترین مربعات](https://www.mathsisfun.com/data/least-squares-calculator.html) مراجعه کنید تا ببینید چگونه مقادیر اعداد بر خط تاثیر می‌گذارند. +> +> `X` متغیر «توضیح‌دهنده» است. `Y` متغیر «وابسته» است. شیب خط `b` است و `a` عرض از مبدا y است، که به مقدار `Y` هنگام `X = 0` اشاره دارد. +> +>![محاسبه شیب](../../../../translated_images/fa/slope.f3c9d5910ddbfcf9.webp) +> +> ابتدا شیب `b` را محاسبه کنید. اینفوگرافیک توسط [جن لوپر](https://twitter.com/jenlooper) +> +> به عبارت دیگر، و با اشاره به سوال اصلی داده‌های کدو تنبل ما: "پیش‌بینی قیمت کدو تنبل به ازای هر بشِل بر اساس ماه"، `X` به قیمت اشاره می‌کند و `Y` به ماه فروش. +> +>![تکمیل معادله](../../../../translated_images/fa/calculation.a209813050a1ddb1.webp) +> +> مقدار Y را محاسبه کنید. اگر دارید حدود ۴ دلار می‌پردازید، باید ماه آوریل باشد! اینفوگرافیک توسط [جن لوپر](https://twitter.com/jenlooper) +> +> ریاضی که خط را حساب می‌کند باید شیب خط را نشان دهد، که همچنین به عرض از مبدا وابسته است، یا جایی که `Y` قرار دارد وقتی `X = 0`. +> +> می‌توانید روش محاسبه این مقادیر را در سایت [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) مشاهده کنید. همچنین از [ماشین حساب کمترین مربعات](https://www.mathsisfun.com/data/least-squares-calculator.html) دیدن کنید تا ببینید چگونه مقادیر عددی روی خط تاثیر می‌گذارند. ## همبستگی -یک اصطلاح دیگر برای فهمیدن، **ضریب همبستگی** بین متغیرهای X و Y است. با استفاده از نمودار پراکندگی، می‌توانید این ضریب را به سرعت مشاهده کنید. نموداری که نقاط داده مرتب در یک خط منظم پخش شده‌اند همبستگی بالایی دارند، اما نموداری که نقاط داده در تمام محدوده بین X و Y پراکنده هستند همبستگی کمی دارد. +یک اصطلاح دیگر که باید بدانید ضریب **همبستگی** بین متغیرهای X و Y است. با استفاده از نمودار پراکندگی، می‌توانید این ضریب را سریعاً مشاهده کنید. نموداری که نقاط داده روی یک خط مرتب قرار گرفته‌اند همبستگی بالایی دارد، اما اگر نقاط داده در همه جا پخش شده باشند، همبستگی پایین است. -یک مدل رگرسیون خطی خوب مدلی است که ضریب همبستگی بالایی (نزدیک به 1 بیشتر از 0) با استفاده از روش کمترین مربعات و خط رگرسیون داشته باشد. +مدل رگرسیون خطی خوب مدلی است که ضریب همبستگی بالایی داشته باشد (نزدیک به ۱ بیشتر از ۰) با استفاده از روش رگرسیون کمترین مربعات با خط رگرسیون. -✅ نوت‌بوک همراه این درس را اجرا کنید و نمودار پراکندگی ماه به قیمت را نگاه کنید. آیا داده همبستگی بالایی یا پایینی بین ماه و قیمت فروش کدو تنبل دارد بر اساس تفسیر بصری خود از نمودار پراکندگی؟ آیا اگر به جای `Month` از معیار دقیق‌تری مثل *روز سال* (یعنی تعداد روزها از آغاز سال) استفاده کنید، تغییر می‌کند؟ +✅ نوت‌بوک همراه این درس را اجرا کنید و به نمودار پراکندگی ماه به قیمت نگاه کنید. آیا داده‌های ارتباط ماه و قیمت برای فروش کدو تنبل به نظر همبستگی بالا یا پایینی دارند، بر اساس تفسیر بصری شما از نمودار پراکندگی؟ آیا اگر به جای `ماه` از مقیاس دقیق‌تری مانند *روز سال* (مثل تعداد روزهای از ابتدای سال) استفاده کنید، این تغییر می‌کند؟ -در کد زیر فرض می‌کنیم داده را پاکسازی کرده‌ایم و داده فریمی به نام `new_pumpkins` بدست آوردیم، مشابه این: +در کد زیر، فرض می‌کنیم داده‌ها پاک‌سازی شده‌اند، و یک دیتافریم به نام `new_pumpkins` بدست آورده‌ایم، مشابه داده‌های زیر: -ID | ماه | روز_سال | نوع | شهر | بسته‌بندی | قیمت پایین | قیمت بالا | قیمت ----|---|---|---|---|---|---|---|--- -70 | 9 | 267 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | نوع پای | بالتیمور | جعبه‌های 1 1/9 بوشل | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> کد پاکسازی داده در [`notebook.ipynb`](notebook.ipynb) موجود است. ما مراحل پاکسازی مشابه درس قبلی را انجام داده‌ایم، و ستون `DayOfYear` را با استفاده از عبارت زیر محاسبه کردیم: +> کد پاک‌سازی داده‌ها در [`notebook.ipynb`](notebook.ipynb) موجود است. ما همان مراحل پاک‌سازی درس قبلی را انجام داده‌ایم و ستون `DayOfYear` را با استفاده از عبارت زیر محاسبه کرده‌ایم: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -حالا که درک درستی از ریاضی پشت رگرسیون خطی دارید، بیایید یک مدل رگرسیون بسازیم تا ببینیم آیا می‌توانیم پیش‌بینی کنیم کدام بسته کدو تنبل بهترین قیمت‌ها را دارد. کسی که برای یک جشنواره کدو تنبل خرید می‌کند ممکن است بخواهد این اطلاعات را داشته باشد تا خریدهای خود را بهینه کند. + +حالا که درک ریاضی پشت رگرسیون خطی دارید، بیایید یک مدل رگرسیون ایجاد کنیم تا ببینیم آیا می‌توانیم پیش‌بینی کنیم کدام بسته کدو تنبل بهترین قیمت‌ها را خواهد داشت. کسی که کدو تنبل برای باغچه جشن خریداری می‌کند ممکن است بخواهد این اطلاعات را برای بهینه‌سازی خریدهایش داشته باشد. ## جستجوی همبستگی [![یادگیری ماشین برای مبتدیان - جستجوی همبستگی: کلید رگرسیون خطی](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "یادگیری ماشین برای مبتدیان - جستجوی همبستگی: کلید رگرسیون خطی") -> 🎥 برای تماشای ویدئوی کوتاه مرور همبستگی روی تصویر بالا کلیک کنید. +> 🎥 روی تصویر بالا کلیک کنید برای ویدیوی کوتاهی درباره همبستگی. -شما احتمالاً در درس قبلی دیده‌اید که میانگین قیمت‌ها برای ماه‌های مختلف به این صورت است: +احتمالاً در درس قبلی دیده‌اید که میانگین قیمت‌ها برای ماه‌های مختلف اینگونه است: -میانگین قیمت بر اساس ماه +میانگین قیمت به ازای ماه -این نشان می‌دهد باید نوعی همبستگی وجود داشته باشد، و ما می‌توانیم مدل خطی رگرسیون را برای پیش‌بینی رابطه بین `ماه` و `قیمت`، یا بین `روز سال` و `قیمت` آموزش دهیم. اینجا نمودار پراکندگی که رابطه دوم را نشان می‌دهد دیده می‌شود: +این نشان می‌دهد باید همبستگی وجود داشته باشد و می‌توانیم مدل رگرسیون خطی آموزش دهیم تا رابطه بین `Month` و `Price`، یا بین `DayOfYear` و `Price` را پیش‌بینی کند. این نمودار پراکندگی رابطه اخیر را نشان می‌دهد: -نمودار پراکندگی قیمت نسبت به روز سال +نمودار پراکندگی قیمت در برابر روز سال -بیایید ببینیم آیا همبستگی با استفاده از تابع `corr` وجود دارد: +بیایید بررسی کنیم همبستگی با استفاده از تابع `corr` چگونه است: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -به نظر می‌رسد همبستگی نسبتاً کوچک است، -0.15 نسبت به `ماه` و -0.17 نسبت به `روز ماه`، اما ممکن است رابطه مهم دیگری وجود داشته باشد. به نظر می‌رسد خوشه‌های مختلف قیمت مرتبط با انواع مختلف کدو وجود دارد. برای تایید این فرض، اجازه دهید هر دسته کدو را با رنگ متفاوت رسم کنیم. با ارسال آرگومان `ax` به تابع نمودار پراکندگی می‌توانیم تمام نقاط را روی یک گراف نشان دهیم: + +به نظر می‌رسد همبستگی بسیار کم است، -۰.۱۵ بر اساس `Month` و -۰.۱۷ بر اساس `DayOfYear`، ولی ممکن است رابطه مهم دیگری وجود داشته باشد. به نظر می‌رسد خوشه‌های مختلفی از قیمت‌ها متعلق به انواع مختلف کدو تنبل باشد. برای تایید این فرضیه، هر دسته کدو را با رنگ متفاوت رسم کنیم. با دادن پارامتر `ax` به تابع رسم پراکندگی، می‌توانیم همه نقاط را روی یک نمودار رسم کنیم: ```python ax=None @@ -138,76 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - -نمودار پراکندگی قیمت نسبت به روز سال با رنگ‌های متفاوت -بررسی ما نشان می‌دهد که نوع کدو اثر بیشتری بر قیمت کل دارد نسبت به تاریخ فروش واقعی. می‌توانیم این را با نمودار میله‌ای ببینیم: +نمودار پراکندگی قیمت در برابر روز سال با رنگ‌بندی + +تحقیق ما نشان می‌دهد که نوع کدو بر قیمت کلی تاثیر بیشتری از تاریخ فروش دارد. این را می‌توانیم با نمودار میله‌ای مشاهده کنیم: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - -نمودار میله‌ای قیمت نسبت به نوع -در حال حاضر فقط روی یک نوع کدو، یعنی 'نوع پای' تمرکز کنیم و ببینیم تاریخ فروش چه تاثیری بر قیمت دارد: +نمودار میله‌ای قیمت بر اساس نوع + +فعلاً فقط روی یک نوع کدو، یعنی 'نوع پای (pie)', تمرکز کنیم و ببینیم تاریخ چه اثری روی قیمت دارد: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` - -نمودار پراکندگی قیمت نسبت به روز سال برای کدو نوع پای +نمودار پراکندگی قیمت در برابر روز سال، نوع پای -اگر اکنون همبستگی بین `قیمت` و `روز سال` را با تابع `corr` محاسبه کنیم، چیزی حدود `-0.27` بدست می‌آوریم – که یعنی آموزش یک مدل پیش‌بینی منطقی است. +اگر حالا همبستگی بین `Price` و `DayOfYear` را با تابع `corr` محاسبه کنیم، چیزی حدود `-0.27` دریافت می‌کنیم — یعنی آموزش یک مدل پیش‌بینی منطقی به نظر می‌رسد. -> قبل از آموزش مدل رگرسیون خطی، مهم است مطمئن شویم داده‌های ما تمیز هستند. رگرسیون خطی با مقادیر خالی خوب کار نمی‌کند، بنابراین بهتر است همه سلول‌های خالی حذف شوند: +> قبل از آموزش مدل رگرسیون خطی، مهم است اطمینان حاصل کنیم که داده‌های ما تمیز هستند. رگرسیون خطی با مقادیر گمشده خوب کار نمی‌کند، پس بهتر است همه خانه‌های خالی را حذف کنیم: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -راه دیگر پر کردن مقادیر خالی با میانگین‌های ستون مربوطه است. + +رویکرد دیگر پر کردن خانه‌های خالی با مقادیر میانگین ستون مربوطه است. ## رگرسیون خطی ساده [![یادگیری ماشین برای مبتدیان - رگرسیون خطی و چندجمله‌ای با Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "یادگیری ماشین برای مبتدیان - رگرسیون خطی و چندجمله‌ای با Scikit-learn") -> 🎥 برای تماشای ویدئوی کوتاه مرور رگرسیون خطی و چندجمله‌ای روی تصویر بالا کلیک کنید. +> 🎥 روی تصویر بالا کلیک کنید تا ویدیوی کوتاهی درباره رگرسیون خطی و چندجمله‌ای ببینید. -برای آموزش مدل رگرسیون خطی خود، از کتابخانه **Scikit-learn** استفاده خواهیم کرد. +برای آموزش مدل رگرسیون خطی‌مان، از کتابخانه **Scikit-learn** استفاده خواهیم کرد. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -ابتدا با جدا کردن مقادیر ورودی (ویژگی‌ها) و خروجی مورد انتظار (برچسب) به آرایه‌های numpy جداگانه شروع می‌کنیم: + +ابتدا ورودی‌ها (ویژگی‌ها) و خروجی مورد انتظار (برچسب) را به آرایه‌های numpy جداگانه تقسیم می‌کنیم: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> توجه داشته باشید که مجبور شدیم روی داده ورودی `reshape` انجام دهیم تا پکیج رگرسیون خطی آن را به درستی بفهمد. رگرسیون خطی آرایه دو بعدی را به عنوان ورودی انتظار دارد، که هر ردیف آن یک بردار از ویژگی‌های ورودی باشد. در مورد ما، چون تنها یک ورودی داریم، به آرایه‌ای با شکل N×1 نیاز داریم که N اندازه داده است. -سپس باید داده را به مجموعه‌های آموزشی و آزمایشی تقسیم کنیم، تا بتوانیم مدل خود را بعد از آموزش اعتبارسنجی کنیم: +> توجه کنید که مجبور بودیم ورودی را با `reshape` تغییر دهیم تا پکیج رگرسیون خطی بتواند به درستی آن را بفهمد. رگرسیون خطی انتظار آرایه دو بعدی به عنوان ورودی دارد که هر سطر آن یک بردار از ویژگی‌های ورودی است. در مورد ما، چون تنها یک ورودی داریم، به آرایه‌ای با شکل N×1 نیاز است، که N اندازه داده‌ها است. + +سپس باید داده‌ها را به مجموعه‌های آموزش و آزمون تفکیک کنیم تا پس از آموزش مدل آن را اعتبارسنجی کنیم: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -در نهایت، آموزش مدل رگرسیون خطی واقعی تنها دو خط کد نیاز دارد. شیء `LinearRegression` را تعریف می‌کنیم و با استفاده از متد `fit` آن را روی داده‌های خود تطبیق می‌دهیم: + +در نهایت، آموزش مدل رگرسیون خطی با تنها دو خط کد انجام می‌شود. ابتدا شیء `LinearRegression` را تعریف می‌کنیم، سپس آن را با استفاده از متد `fit` روی داده‌ها می‌خواهیم: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -شیء `LinearRegression` پس از اجرای `fit` شامل تمام ضرایب رگرسیون است که می‌توان به آن‌ها از طریق خاصیت `.coef_` دسترسی داشت. در مورد ما، فقط یک ضریب وجود دارد که باید حدود `-0.017` باشد. این یعنی قیمت‌ها به نظر می‌رسد که با گذر زمان کمی کاهش می‌یابند، اما نه خیلی زیاد، حدود ۲ سنت در روز. همچنین می‌توانیم نقطه تلاقی رگرسیون با محور Y را با استفاده از `lin_reg.intercept_` بدست آوریم — که در مورد ما حدود `21` خواهد بود و نشان‌دهنده قیمت در ابتدای سال است. +شیء `LinearRegression` بعد از آموزش (`fit`) شامل تمام ضرایب رگرسیون است که می‌توان با استفاده از ویژگی `.coef_` به آنها دسترسی پیدا کرد. در مورد ما، فقط یک ضریب وجود دارد که تقریباً باید حدود `-0.017` باشد. این یعنی قیمت‌ها به نظر می‌رسد که کمی با گذر زمان کاهش می‌یابند، اما خیلی زیاد نیست، حدود ۲ سنت در روز. همچنین می‌توان نقطه تقاطع رگرسیون با محور Y را با استفاده از `lin_reg.intercept_` مشاهده کرد - در مورد ما این مقدار حدود `21` خواهد بود که نشان‌دهنده قیمت در آغاز سال است. -برای دیدن دقت مدل، می‌توانیم قیمت‌ها را روی داده‌های تست پیش‌بینی کنیم، و سپس بسنجیم چقدر پیش‌بینی‌هایمان به مقادیر مورد انتظار نزدیک هستند. این کار را می‌توان با استفاده از معیار خطای میانگین مربعات جذر (RMSE) انجام داد، که جذر میانگین تمام اختلاف‌های مربعی بین مقدار پیش‌بینی شده و مورد انتظار است. +برای دیدن میزان دقت مدل‌مان، می‌توانیم قیمت‌ها را روی یک مجموعه داده آزمایشی پیش‌بینی کنیم و سپس میزان نزدیکی پیش‌بینی‌های ما به مقادیر انتظار رفته را اندازه‌گیری کنیم. این کار با استفاده از معیار خطای ریشه میانگین مربعات خطا (RMSE) انجام می‌شود، که جذر میانگین تمام اختلافات مربعی میان مقدار مورد انتظار و پیش‌بینی شده است. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -خطای ما حدود ۲ واحد است که تقریباً ~۱۷٪ است، نه چندان خوب. یک شاخص دیگر از کیفیت مدل، **ضریب تعیین** است که می‌توان آن را به این صورت به دست آورد: +خطای ما به نظر می‌رسد حدود ۲ واحد باشد که تقریباً ~۱۷٪ است. زیاد خوب نیست. شاخص دیگر کیفیت مدل، **ضریب تعیین** است که می‌توان آن را به این صورت به دست آورد: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -اگر مقدار برابر ۰ باشد، یعنی مدل داده‌های ورودی را در نظر نمی‌گیرد و مانند *بدترین پیش‌بینی‌کننده خطی* عمل می‌کند، که به سادگی مقدار میانگین خروجی‌ها است. مقدار ۱ یعنی می‌توانیم دقیقاً همه خروجی‌های مورد انتظار را پیش‌بینی کنیم. در مورد ما، ضریب حدود ۰.۰۶ است که نسبتاً پایین است. +اگر مقدار آن صفر باشد، به این معنا است که مدل داده‌های ورودی را در نظر نمی‌گیرد و به عنوان *بدترین پیش‌بینی‌کننده خطی* عمل می‌کند، که صرفاً مقدار میانگین نتیجه است. مقدار 1 به این معنا است که ما می‌توانیم تمام خروجی‌های مورد انتظار را به طور کامل پیش‌بینی کنیم. در مورد ما، ضریب حدود 0.06 است که نسبتاً کم است. -همچنین می‌توانیم داده‌های تست را همراه با خط رگرسیون رسم کنیم تا بهتر ببینیم رگرسیون در مورد ما چگونه عمل می‌کند: +ما همچنین می‌توانیم داده‌های آزمایشی را همراه با خط رگرسیون رسم کنیم تا بهتر ببینیم رگرسیون در مورد ما چگونه عمل می‌کند: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## رگرسیون چندجمله‌ای -نوع دیگری از رگرسیون خطی، رگرسیون چندجمله‌ای است. در حالی که گاهی بین متغیرها رابطه خطی وجود دارد - هر چه حجم کدو تنبل بیشتر باشد، قیمت بالاتر است - گاهی این روابط قابل ترسیم با یک صفحه یا خط مستقیم نیستند. +نوع دیگری از رگرسیون خطی، رگرسیون چندجمله‌ای است. در حالی که گاهی رابطه خطی بین متغیرها وجود دارد - مثلاً هرچه حجم کدو حلوایی بیشتر باشد، قیمت بالاتر است - اما گاهی این روابط را نمی‌توان به صورت یک صفحه یا خط مستقیم رسم کرد. -✅ اینجا [چند مثال دیگر](https://online.stat.psu.edu/stat501/lesson/9/9.8) از داده‌هایی است که می‌توانند از رگرسیون چندجمله‌ای استفاده کنند. +✅ در اینجا [چند مثال بیشتر](https://online.stat.psu.edu/stat501/lesson/9/9.8) از داده‌ها وجود دارد که می‌توانند از رگرسیون چندجمله‌ای استفاده کنند. -دوباره به رابطه بین تاریخ و قیمت نگاه کنید. آیا این نمودار پراکندگی به نظر می‌رسد که حتما باید با یک خط مستقیم تحلیل شود؟ آیا قیمت‌ها نمی‌توانند نوسان کنند؟ در این حالت، می‌توانید رگرسیون چندجمله‌ای را امتحان کنید. +یک بار دیگر به رابطه بین تاریخ و قیمت نگاه کنید. آیا این نمودار پراکندگی حتماً باید با یک خط مستقیم تحلیل شود؟ آیا قیمت‌ها نمی‌توانند نوسان داشته باشند؟ در این صورت، می‌توانید از رگرسیون چندجمله‌ای استفاده کنید. -✅ چندجمله‌ای‌ها عبارت‌های ریاضی هستند که ممکن است شامل یک یا چند متغیر و ضرایب باشند. +✅ چندجمله‌ای‌ها عبارات ریاضی هستند که ممکن است از یک یا چند متغیر و ضرایب تشکیل شده باشند. -رگرسیون چندجمله‌ای یک منحنی ایجاد می‌کند تا داده‌های غیرخطی را بهتر تطبیق دهد. در مورد ما، اگر متغیر مربع‌شده `DayOfYear` را به داده‌های ورودی اضافه کنیم، باید بتوانیم داده‌ها را با یک منحنی سهمی شکل تطبیق دهیم که حداقل آن در نقطه‌ای از سال باشد. +رگرسیون چندجمله‌ای یک منحنی ایجاد می‌کند تا بهتر به داده‌های غیرخطی بپیوندد. در مورد ما، اگر متغیر `DayOfYear` به توان دو را در داده‌های ورودی وارد کنیم، باید بتوانیم داده‌های خود را با یک منحنی سهمی شکل که حداقل در یک نقطه خاص در طول سال دارد، برازش کنیم. -کتابخانه Scikit-learn شامل یک [رابط برنامه‌نویسی خط لوله (pipeline API)](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفید برای ترکیب مراحل مختلف پردازش داده‌ها با هم است. یک **خط لوله** زنجیره‌ای از **برآوردگرها** است. در مورد ما، خط لوله‌ای خواهیم ساخت که ابتدا ویژگی‌های چندجمله‌ای را به مدل اضافه می‌کند و سپس رگرسیون را آموزش می‌دهد: +کتابخانه Scikit-learn شامل یک API مفید به نام [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) است که به ما اجازه می‌دهد مراحل مختلف پردازش داده را ترکیب کنیم. یک **pipeline** زنجیره‌ای از **برآوردگرها** است. در مورد ما، ما یک pipeline می‌سازیم که ابتدا ویژگی‌های چندجمله‌ای را به مدل اضافه می‌کند و سپس رگرسیون را آموزش می‌دهد: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -استفاده از `PolynomialFeatures(2)` به این معناست که همه چندجمله‌ای‌های درجه دوم از داده‌های ورودی را شامل می‌شود. در مورد ما فقط به معنای `DayOfYear`2 است، اما اگر دو متغیر ورودی X و Y داشته باشیم، این شامل X2، XY و Y2 هم خواهد بود. همچنین می‌توانیم درجه‌های بالاتر چندجمله‌ای را استفاده کنیم اگر بخواهیم. +استفاده از `PolynomialFeatures(2)` یعنی اینکه همه چندجمله‌ای‌های درجه دوم از داده‌های ورودی را شامل می‌شود. در مورد ما فقط `DayOfYear` به توان دو خواهد بود، اما با داشتن دو متغیر ورودی X و Y، این شامل X به توان ۲، حاصلضرب XY و Y به توان ۲ خواهد بود. اگر بخواهیم می‌توانیم چندجمله‌ای‌های درجه بالاتر هم استفاده کنیم. + +پایپلاین‌ها را می‌توان دقیقا به همان روشی که شیء `LinearRegression` اصلی استفاده می‌شود، بکار برد، یعنی می‌توانیم pipeline را `fit` کنیم و سپس از `predict` برای دریافت نتایج پیش‌بینی استفاده کنیم: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +برای رسم منحنی تقریب نرم، از `np.linspace` استفاده می‌کنیم تا یک بازه یکنواخت از مقادیر ورودی ایجاد کنیم، به جای اینکه مستقیماً روی داده‌های نامرتب آزمایشی رسم کنیم (که خطوط زیگزاگی ایجاد می‌کرد): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -خط لوله‌ها می‌توانند به همان شیوه شیء اصلی `LinearRegression` استفاده شوند، یعنی می‌توانیم `fit` خط لوله را اجرا کنیم و سپس از `predict` برای دریافت نتایج پیش‌بینی استفاده کنیم. در اینجا نمودار داده‌های تست و منحنی تقریب آورده شده است: +در اینجا نموداری است که داده‌های آزمایشی و منحنی تقریب را نشان می‌دهد: Polynomial regression -با استفاده از رگرسیون چندجمله‌ای، می‌توانیم مقداری کاهش در MSE و افزایش در ضریب تعیین بدست آوریم، اما نه به صورت چشمگیر. باید ویژگی‌های دیگر را نیز در نظر بگیریم! +با استفاده از رگرسیون چندجمله‌ای، می‌توانیم RMSE کمی پایین‌تر و ضریب تعیین بالاتری به دست آوریم، اما نه به صورت قابل توجه. باید ویژگی‌های دیگر را هم در نظر بگیریم! -> می‌بینید که حداقل قیمت‌های کدو تنبل تقریباً حوالی هالووین مشاهده می‌شود. چگونه می‌توانید این را توضیح دهید؟ +> می‌توانید ببینید که کمترین قیمت کدو حلوایی تقریباً در اطراف هالووین مشاهده می‌شود. چگونه می‌توانید این را توضیح دهید؟ -🎃 تبریک، شما به تازگی یک مدل ساخته‌اید که می‌تواند قیمت کدو تنبل پای را پیش‌بینی کند. احتمالاً می‌توانید همین روند را برای تمام انواع کدو تکرار کنید، اما این کار خسته‌کننده خواهد بود. حالا بیایید یاد بگیریم چگونه تنوع کدو را در مدل خود لحاظ کنیم! +🎃 تبریک! شما به تازگی مدل‌هایی ساختید که می‌تواند به پیش‌بینی قیمت کدو حلوایی پای کمک کند. احتمالا می‌توانید همین رویه را برای تمام انواع کدو تکرار کنید، اما این کار خسته‌کننده است. حالا بیایید یاد بگیریم چگونه تنوع کدو را در مدل خود در نظر بگیریم! ## ویژگی‌های دسته‌ای -در دنیای ایده‌آل، می‌خواهیم بتوانیم قیمت‌ها را برای انواع مختلف کدو با استفاده از همان مدل پیش‌بینی کنیم. اما ستون `Variety` کمی متفاوت از ستون‌هایی مثل `Month` است، چون حاوی مقادیر غیرعددی است. چنین ستون‌هایی **دسته‌ای** نامیده می‌شوند. +در دنیای ایده‌آل، می‌خواهیم قادر باشیم قیمت‌ها را برای گونه‌های مختلف کدو با استفاده از یک مدل پیش‌بینی کنیم. با این حال، ستون `Variety` کمی متفاوت از ستون‌هایی مانند `Month` است، زیرا شامل مقادیر غیرعددی است. چنین ستون‌هایی را **دسته‌ای** می‌نامند. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 برای دیدن یک ویدیوی کوتاه درباره استفاده از ویژگی‌های دسته‌ای، روی تصویر بالا کلیک کنید. +> 🎥 برای دیدن ویدیو کوتاه درباره استفاده از ویژگی‌های دسته‌ای، روی تصویر بالا کلیک کنید. -در اینجا می‌بینید که قیمت متوسط چگونه به نوع کدو بستگی دارد: +در اینجا می‌بینید که قیمت متوسط چطور به تنوع بستگی دارد: Average price by variety -برای لحاظ کردن نوع کدو، ابتدا باید آن را به شکل عددی تبدیل کنیم، یا **رمزگذاری** کنیم. چند روش برای این کار وجود دارد: +برای درنظر گرفتن تنوع، ابتدا باید آن را به فرم عددی تبدیل کنیم، یا آن را **کدگذاری** کنیم. چند روش مختلف برای این کار وجود دارد: -* رمزگذاری ساده عددی یک جدول از انواع مختلف ایجاد می‌کند، و سپس نام نوع را با اندیس آن در آن جدول جایگزین می‌کند. این ایده بهترین گزینه برای رگرسیون خطی نیست، چون رگرسیون خطی مقدار عددی اندیس را گرفته و با ضریب خاصی ضرب کرده و به نتیجه اضافه می‌کند. در مورد ما، رابطه بین شماره اندیس و قیمت به وضوح غیرخطی است، حتی اگر مطمئن شویم که اندیس‌ها به ترتیب خاصی مرتب شده‌اند. -* **رمزگذاری تک‌گرمی (one-hot encoding)** ستون `Variety` را با ۴ ستون مختلف جایگزین می‌کند، یکی برای هر نوع کدو. هر ستون شامل `1` است اگر ردیف مربوطه از آن نوع باشد و `0` در غیر این صورت. این یعنی در رگرسیون خطی چهار ضریب وجود دارد، یکی برای هر نوع کدو، که مسئول "قیمت شروع" (یا به عبارت دقیق‌تر "قیمت اضافی") برای آن نوع خاص است. +* **کدگذاری عددی ساده** جدولی از انواع مختلف ایجاد می‌کند و سپس نام تنوع را با یک اندیس در آن جدول جایگزین می‌کند. این ایده خوبی برای رگرسیون خطی نیست، چون رگرسیون خطی مقدار عددی واقعی اندیس را گرفته و آن را ضرب در ضریبی به نتیجه اضافه می‌کند. در مورد ما، رابطه بین شماره اندیس و قیمت واضحاً غیرخطی است، حتی اگر مطمئن شویم که اندیس‌ها به روشی خاص مرتب شده‌اند. +* **کدگذاری یک داغ (one-hot encoding)** ستون `Variety` را با ۴ ستون مختلف جایگزین می‌کند، یکی برای هر تنوع. هر ستون شامل `1` خواهد بود اگر سطر مربوطه متعلق به آن تنوع باشد و در غیر این صورت `0` قرار می‌دهد. این بدان معناست که در رگرسیون خطی چهار ضریب وجود خواهد داشت، یکی برای هر نوع کدو، که مسئول "قیمت شروع" (یا بهتر است بگوییم "قیمت اضافی") برای آن نوع خاص است. -کد زیر نشان می‌دهد چگونه می‌توان یک نوع کدو را با روش one-hot کدگذاری کرد: +کد زیر نشان می‌دهد چگونه می‌توان تنوع را به صورت one-hot کدگذاری کرد: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -برای آموزش رگرسیون خطی با استفاده از نوع کدو one-hot، فقط کافی است `X` و `y` را به درستی مقداردهی اولیه کنیم: +برای آموزش رگرسیون خطی با استفاده از تنوع کدگذاری شده‌ی یک داغ به عنوان ورودی، فقط کافی است داده‌های `X` و `y` را به درستی مقداردهی کنیم: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -باقیمانده کد همان است که قبلاً برای آموزش رگرسیون خطی استفاده کردیم. اگر آن را اجرا کنید، خواهید دید که میانگین مربعات خطا مشابه است اما ضریب تعیین خیلی بالاتری (~۷۷٪) بدست می‌آید. برای دریافت پیش‌بینی‌های حتی دقیق‌تر، می‌توانیم ویژگی‌های دسته‌ای بیشتری را به همراه ویژگی‌های عددی مانند `Month` یا `DayOfYear` لحاظ کنیم. برای داشتن یک آرایه بزرگ از ویژگی‌ها، می‌توانیم از تابع `join` استفاده کنیم: +باقی کد همان است که برای آموزش رگرسیون خطی در بالا استفاده کردیم. اگر آن را امتحان کنید، می‌بینید که میانگین مربعات خطا تقریباً همان است، اما ضریب تعیین بسیار بالاتر (~۷۷٪) می‌شود. برای دقت بیشتر پیش‌بینی‌ها، می‌توانیم ویژگی‌های دسته‌ای بیشتری را در نظر بگیریم و همچنین ویژگی‌های عددی مانند `Month` یا `DayOfYear`. برای بدست آوردن یک آرایه بزرگ ویژگی‌ها، می‌توانیم از `join` استفاده کنیم: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -در اینجا ما همچنین `City` و نوع `Package` را نیز در نظر می‌گیریم، که MSE برابر 2.84 (۱۰٪) و ضریب تعیین 0.94 به ما می‌دهد! +در اینجا همچنین شهر (`City`) و نوع بسته‌بندی (`Package`) را در نظر می‌گیریم که با این کار RMSE برابر ۲.۸۴ (۱۰.۵٪) و ضریب تعیین ۰.۹۴ به دست می‌آید! -## همه چیز را کنار هم بگذاریم +## جمع‌بندی همه چیز -برای ساخت بهترین مدل، می‌توانیم داده‌های ترکیبی (دسته‌ای کدگذاری شده به صورت one-hot + عددی) از مثال بالا را همراه با رگرسیون چندجمله‌ای استفاده کنیم. در اینجا کد کامل برای راحتی شما آمده است: +برای ساخت بهترین مدل، می‌توانیم داده‌های ترکیبی (کدگذاری یک داغ دسته‌ای + عددی) از مثال بالا را با رگرسیون چندجمله‌ای ترکیب کنیم. در اینجا کد کامل برای راحتی شما قرار دارد: ```python -# تنظیم داده‌های آموزشی +# تنظیم داده‌های آموزش X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# تقسیم‌بندی آموزش و آزمون +# تقسیم‌بندی داده‌ها به آموزش و تست X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# تنظیم و آموزش خط لوله +# راه‌اندازی و آموزش خط لوله pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# پیش‌بینی نتایج برای داده‌های آزمون +# پیش‌بینی نتایج برای داده‌های تست pred = pipeline.predict(X_test) -# محاسبه MSE و تعیین ضریب -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# محاسبه RMSE و ضریب تعیین +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -این باید بهترین ضریب تعیین حدود ۹۷٪ و MSE=2.23 (~۸٪ خطای پیش‌بینی) را به ما بدهد. +این باید بهترین ضریب تعیین، حدود ۹۷٪، و RMSE برابر ۲.۲۳ (~۸٪ خطای پیش‌بینی) به ما بدهد. -| مدل | MSE | ضریب تعیین | +| مدل | RMSE | ضریب تعیین | |-------|-----|---------------| -| `DayOfYear` خطی | 2.77 (۱۷.۲٪) | 0.07 | -| `DayOfYear` چندجمله‌ای | 2.73 (۱۷.۰٪) | 0.08 | -| `Variety` خطی | 5.24 (۱۹.۷٪) | 0.77 | -| تمام ویژگی‌ها خطی | 2.84 (۱۰.۵٪) | 0.94 | -| تمام ویژگی‌ها چندجمله‌ای | 2.23 (۸.۲۵٪) | 0.97 | +| `DayOfYear` خطی | 2.77 (17.2%) | 0.07 | +| `DayOfYear` چندجمله‌ای | 2.73 (17.0%) | 0.08 | +| `Variety` خطی | 5.24 (19.7%) | 0.77 | +| همه ویژگی‌ها خطی | 2.84 (10.5%) | 0.94 | +| همه ویژگی‌ها چندجمله‌ای | 2.23 (8.25%) | 0.97 | -🏆 عالی! شما چهار مدل رگرسیون را در یک درس ساختید و کیفیت مدل را تا ۹۷٪ بهبود دادید. در بخش نهایی درباره رگرسیون، با رگرسیون لجستیک برای تعیین دسته‌ها آشنا خواهید شد. +🏆 آفرین! شما چهار مدل رگرسیون را در یک درس ایجاد کردید و کیفیت مدل را تا ۹۷٪ بهبود بخشیدید. در بخش نهایی درباره رگرسیون، درباره رگرسیون لجستیک برای تعیین دسته‌ها خواهید آموخت. --- ## 🚀چالش -تعدادی متغیر مختلف را در این دفترچه تست کنید تا ببینید همبستگی چگونه با دقت مدل مربوط می‌شود. +چند متغیر مختلف را در این دفترچه امتحان کنید تا ببینید چطور همبستگی به دقت مدل مربوط می‌شود. -## [کوییز پس از درس](https://ff-quizzes.netlify.app/en/ml/) +## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/) ## مرور و خودآموزی -در این درس درباره رگرسیون خطی یاد گرفتیم. انواع مهم دیگری از رگرسیون وجود دارد. درباره روش‌های Stepwise، Ridge، Lasso و Elasticnet مطالعه کنید. یک دوره خوب برای یادگیری بیشتر، دوره [یادگیری آماری دانشگاه استنفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) است. +در این درس درباره رگرسیون خطی یاد گرفتیم. انواع مهم دیگری از رگرسیون وجود دارد. در مورد تکنیک‌های Stepwise، Ridge، Lasso و Elasticnet مطالعه کنید. یک دوره خوبی برای یادگیری بیشتر، [دوره آموزش یادگیری آماری دانشگاه استنفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) است. ## تمرین -[ساخت مدل](assignment.md) +[ساخت یک مدل](assignment.md) --- **سلب مسئولیت**: -این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نواقصی باشند. سند اصلی به زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده شود. ما مسئول هیچ گونه سوءتفاهم یا تفسیر نادرستی که ناشی از استفاده از این ترجمه باشد، نیستیم. +این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. هرچند ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نواقصی باشند. سند اصلی به زبان اصلی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه نیستیم. \ No newline at end of file diff --git a/translations/fa/2-Regression/3-Linear/solution/notebook.ipynb b/translations/fa/2-Regression/3-Linear/solution/notebook.ipynb index ca07cd4ab8..614fffbc25 100644 --- a/translations/fa/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/fa/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## رگرسیون خطی و چندجمله‌ای برای قیمت‌گذاری کدو تنبل - درس ۳\n", "\n", - "کتابخانه‌های مورد نیاز و مجموعه داده را بارگذاری کنید. داده‌ها را به یک دیتافریم تبدیل کنید که شامل زیرمجموعه‌ای از داده‌ها باشد:\n", + "کتابخانه‌ها و داده‌های مورد نیاز را بارگذاری کنید. داده‌ها را به یک دیتافریم شامل زیرمجموعه‌ای از داده‌ها تبدیل کنید:\n", "\n", - "- فقط کدو تنبل‌هایی را انتخاب کنید که به صورت بوشل قیمت‌گذاری شده‌اند \n", - "- تاریخ را به ماه تبدیل کنید \n", - "- قیمت را به صورت میانگین قیمت‌های بالا و پایین محاسبه کنید \n", - "- قیمت را به گونه‌ای تبدیل کنید که منعکس‌کننده قیمت‌گذاری بر اساس مقدار بوشل باشد \n" + "- فقط کدو تنبل‌هایی که بر اساس بوشل قیمت‌گذاری شده‌اند را بگیرید\n", + "- تاریخ را به ماه تبدیل کنید\n", + "- قیمت را به صورت میانگین قیمت بالایی و پایینی محاسبه کنید\n", + "- قیمت را به گونه‌ای تبدیل کنید که قیمت‌گذاری بر اساس مقدار بوشل را نشان دهد\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "یک نمودار پراکندگی به ما یادآوری می‌کند که فقط داده‌های ماه از آگوست تا دسامبر را داریم. احتمالاً به داده‌های بیشتری نیاز داریم تا بتوانیم به صورت خطی نتیجه‌گیری کنیم.\n" + "یک نمودار پراکنش به ما یادآوری می‌کند که داده‌های ماهانه ما فقط از اوت تا دسامبر است. احتمالاً به داده‌های بیشتری نیاز داریم تا بتوانیم به صورت خطی نتیجه‌گیری کنیم.\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "به نظر می‌رسد همبستگی بسیار کم است، اما یک رابطه مهم‌تر دیگری وجود دارد - زیرا نقاط قیمت در نمودار بالا به نظر می‌رسد چندین خوشه متمایز دارند. بیایید نموداری بسازیم که انواع مختلف کدو تنبل را نشان دهد:\n" + "به نظر می‌رسد همبستگی نسبتاً کم است، اما یک رابطه‌ی مهم‌تر دیگری وجود دارد - زیرا نقاط قیمت در نمودار بالا به نظر می‌رسد چندین خوشه متمایز داشته باشند. بیایید نموداری بسازیم که انواع مختلف کدو تنبل را نشان دهد:\n" ] }, { @@ -537,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "فعلاً بیایید فقط روی یک نوع - **نوع پای** - تمرکز کنیم.\n" + ] }, { "cell_type": "code", @@ -691,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "می‌توانیم از مدل آموزش‌دیده برای پیش‌بینی قیمت استفاده کنیم:\n" + "ما می‌توانیم از مدل آموزش‌دیده برای پیش‌بینی قیمت استفاده کنیم:\n" ] }, { @@ -722,9 +724,9 @@ "source": [ "### رگرسیون چندجمله‌ای\n", "\n", - "گاهی اوقات رابطه بین ویژگی‌ها و نتایج ذاتاً غیرخطی است. برای مثال، قیمت کدو تنبل ممکن است در زمستان (ماه‌های ۱ و ۲) بالا باشد، سپس در تابستان (ماه‌های ۵ تا ۷) کاهش یابد و دوباره افزایش پیدا کند. رگرسیون خطی نمی‌تواند این رابطه را به‌درستی پیدا کند.\n", + "گاهی رابطه بین ویژگی‌ها و نتایج ذاتاً غیرخطی است. به‌عنوان مثال، قیمت کدو تنبل ممکن است در زمستان (ماه‌ها=1،2) بالا باشد، سپس در تابستان (ماه‌ها=5-7) کاهش یابد، و سپس دوباره افزایش پیدا کند. رگرسیون خطی قادر به یافتن دقیق این رابطه نیست.\n", "\n", - "در این حالت، می‌توانیم اضافه کردن ویژگی‌های اضافی را در نظر بگیریم. یک روش ساده استفاده از چندجمله‌ای‌ها بر اساس ویژگی‌های ورودی است که منجر به **رگرسیون چندجمله‌ای** می‌شود. در Scikit Learn، می‌توانیم به‌صورت خودکار ویژگی‌های چندجمله‌ای را با استفاده از پایپ‌لاین‌ها پیش‌محاسبه کنیم:\n" + "در این حالت، ممکن است در نظر بگیریم که ویژگی‌های اضافی اضافه کنیم. راه ساده استفاده از چندجمله‌ای‌ها از ویژگی‌های ورودی است، که منجر به **رگرسیون چندجمله‌ای** می‌شود. در Scikit Learn، ما می‌توانیم ویژگی‌های چندجمله‌ای را به‌طور خودکار با استفاده از خطوط لوله پیش‌محاسبه کنیم: \n" ] }, { @@ -779,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### انواع کدگذاری\n", + "### انواع رمزگذاری\n", "\n", - "در دنیای ایده‌آل، می‌خواهیم بتوانیم قیمت‌های انواع مختلف کدو تنبل را با استفاده از یک مدل پیش‌بینی کنیم. برای در نظر گرفتن نوع کدو، ابتدا باید آن را به شکل عددی تبدیل کنیم، یا به عبارت دیگر **کدگذاری** کنیم. چند روش برای انجام این کار وجود دارد:\n", + "در دنیای ایده‌آل، می‌خواهیم بتوانیم قیمت‌ها را برای انواع مختلف کدو تنبل با استفاده از همان مدل پیش‌بینی کنیم. برای در نظر گرفتن نوع، ابتدا باید آن را به صورت عددی تبدیل کنیم، یا **رمزگذاری** کنیم. راه‌های مختلفی برای این کار وجود دارد:\n", "\n", - "* کدگذاری عددی ساده که یک جدول از انواع مختلف ایجاد می‌کند و سپس نام نوع را با یک شاخص در آن جدول جایگزین می‌کند. این روش برای رگرسیون خطی بهترین انتخاب نیست، زیرا رگرسیون خطی مقدار عددی شاخص را در نظر می‌گیرد و احتمالاً مقدار عددی با قیمت به صورت عددی همبستگی ندارد.\n", - "* کدگذاری یک‌داغ (One-hot encoding)، که ستون `Variety` را با ۴ ستون مختلف جایگزین می‌کند، یکی برای هر نوع، که اگر ردیف مربوط به نوع خاصی باشد مقدار ۱ و در غیر این صورت مقدار ۰ خواهد داشت.\n", + "* رمزگذاری عددی ساده که جدولی از انواع مختلف می‌سازد و سپس نام نوع را با یک شاخص در آن جدول جایگزین می‌کند. این ایده بهترین روش برای رگرسیون خطی نیست، زیرا رگرسیون خطی مقدار عددی شاخص را در نظر می‌گیرد و احتمالاً مقدار عددی با قیمت به صورت عددی همبستگی ندارد.\n", + "* رمزگذاری تک‌داغ (one-hot encoding)، که ستون `Variety` را با ۴ ستون مختلف جایگزین می‌کند، هر کدام برای هر نوع خاص، که در صورت تعلق ردیف مربوطه به آن نوع مقدار ۱ و در غیر این صورت ۰ دارد.\n", "\n", - "کد زیر نشان می‌دهد که چگونه می‌توان یک نوع را به صورت یک‌داغ کدگذاری کرد:\n" + "کد زیر نشان می‌دهد چگونه می‌توان یک نوع را به صورت تک‌داغ رمزگذاری کرد:\n" ] }, { @@ -942,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### رگرسیون خطی بر روی انواع مختلف\n", + "### رگرسیون خطی بر روی واریته\n", "\n", - "اکنون از همان کدی که در بالا استفاده کردیم بهره می‌بریم، اما به جای `DayOfYear` از نوع‌های کدگذاری‌شده به صورت یک‌-داغ به عنوان ورودی استفاده خواهیم کرد:\n" + "اکنون همان کد بالا را استفاده خواهیم کرد، اما به جای `DayOfYear` از کدگذاری یک‌گرمی واریته به عنوان ورودی استفاده می‌کنیم:\n" ] }, { @@ -992,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ما می‌توانیم به همین روش از ویژگی‌های دیگر نیز استفاده کنیم و آن‌ها را با ویژگی‌های عددی مانند `Month` یا `DayOfYear` ترکیب کنیم:\n" + "ما همچنین می‌توانیم سعی کنیم از ویژگی‌های دیگر به همان شیوه استفاده کنیم و آنها را با ویژگی‌های عددی مانند `Month` یا `DayOfYear` ترکیب کنیم:\n" ] }, { @@ -1025,7 +1030,7 @@ "source": [ "### رگرسیون چندجمله‌ای\n", "\n", - "رگرسیون چندجمله‌ای می‌تواند برای ویژگی‌های دسته‌بندی‌شده که به صورت یک-داغ کدگذاری شده‌اند نیز استفاده شود. کدی که برای آموزش رگرسیون چندجمله‌ای استفاده می‌شود اساساً مشابه چیزی است که در بالا مشاهده کردیم.\n" + "رگرسیون چندجمله‌ای همچنین می‌تواند با ویژگی‌های دسته‌ای که به‌صورت one-hot-encoded هستند استفاده شود. کدی که برای آموزش رگرسیون چندجمله‌ای نوشته می‌شود اساساً مشابه همان چیزی است که در بالا دیده‌ایم.\n" ] }, { @@ -1072,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**سلب مسئولیت**: \nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.\n" + "---\n\n\n**سلب مسئولیت**: \nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در پی دقت هستیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است دارای خطاها یا نادرستی‌هایی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئول هیچگونه سوءتفاهم یا برداشت نادرستی که ناشی از استفاده از این ترجمه باشد، نیستیم.\n\n" ] } ], @@ -1102,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T01:04:40+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "fa" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ur/.co-op-translator.json b/translations/ur/.co-op-translator.json index eba66da568..aec15a2a92 100644 --- a/translations/ur/.co-op-translator.json +++ b/translations/ur/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ur" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T08:52:31+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:51:25+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ur" }, @@ -90,8 +90,8 @@ "language_code": "ur" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:46:52+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:50:52+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ur" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ur" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:48:11+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ur" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T08:44:16+00:00", diff --git a/translations/ur/1-Introduction/4-techniques-of-ML/README.md b/translations/ur/1-Introduction/4-techniques-of-ML/README.md index 3b53aa7320..dbd08c4f41 100644 --- a/translations/ur/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ur/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # مشین لرننگ کی تکنیکیں -مشین لرننگ ماڈلز بنانے، استعمال کرنے، اور ان کے ڈیٹا کو برقرار رکھنے کا عمل دیگر ترقیاتی ورک فلو سے بہت مختلف ہے۔ اس سبق میں، ہم اس عمل کو واضح کریں گے اور وہ اہم تکنیکیں بیان کریں گے جو آپ کو جاننی چاہئیں۔ آپ: +مشین لرننگ ماڈلز بنانے، استعمال کرنے، اور انہیں برقرار رکھنے کا عمل، اور وہ ڈیٹا جو وہ استعمال کرتے ہیں، بہت سے دوسرے ترقیاتی ورک فلو سے بالکل مختلف ہے۔ اس سبق میں، ہم اس عمل کو آسان بنائیں گے، اور آپ کو بنیادی تکنیکیں بتائیں گے جو آپ کو جاننی چاہئیں۔ آپ: -- مشین لرننگ کے بنیادی عمل کو اعلیٰ سطح پر سمجھیں گے۔ +- مشین لرننگ کے بنیادی عمل کو ایک اعلی سطح پر سمجھیں گے۔ - بنیادی تصورات جیسے 'ماڈلز'، 'پیش گوئیاں'، اور 'ٹریننگ ڈیٹا' کو دریافت کریں گے۔ -## [لیکچر سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ml/) +## [سبق سے پہلے کوئز](https://ff-quizzes.netlify.app/en/ml/) -[![مشین لرننگ کے ابتدائی اصول - مشین لرننگ کی تکنیکیں](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "مشین لرننگ کے ابتدائی اصول - مشین لرننگ کی تکنیکیں") +[![بازوکے لئے ML - مشین لرننگ کی تکنیکیں](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "بازوکے لئے ML - مشین لرننگ کی تکنیکیں") -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ اس سبق پر ایک مختصر ویڈیو دیکھ سکیں۔ +> 🎥 اس سبق کی مختصر ویڈیو دیکھنے کے لیے اوپر تصویر پر کلک کریں۔ -## تعارف +## تمہید -اعلیٰ سطح پر، مشین لرننگ (ML) کے عمل کو تخلیق کرنے کا فن کئی مراحل پر مشتمل ہوتا ہے: +اعلی سطح پر، مشین لرننگ (ML) کے عمل بنانے کا کام کئی مراحل پر مشتمل ہوتا ہے: -1. **سوال کا انتخاب کریں**۔ زیادہ تر ML عمل ایک ایسے سوال سے شروع ہوتے ہیں جس کا جواب کسی سادہ شرطی پروگرام یا قواعد پر مبنی انجن سے نہیں دیا جا سکتا۔ یہ سوالات اکثر ڈیٹا کے مجموعے کی بنیاد پر پیش گوئیوں کے گرد گھومتے ہیں۔ -2. **ڈیٹا جمع کریں اور تیار کریں**۔ اپنے سوال کا جواب دینے کے لیے آپ کو ڈیٹا کی ضرورت ہوتی ہے۔ آپ کے ڈیٹا کی معیار اور کبھی کبھار مقدار یہ طے کرے گی کہ آپ اپنے ابتدائی سوال کا کتنا اچھا جواب دے سکتے ہیں۔ ڈیٹا کو بصری طور پر دیکھنا اس مرحلے کا ایک اہم پہلو ہے۔ اس مرحلے میں ڈیٹا کو ٹریننگ اور ٹیسٹنگ گروپ میں تقسیم کرنا بھی شامل ہے تاکہ ماڈل بنایا جا سکے۔ -3. **ٹریننگ کا طریقہ منتخب کریں**۔ آپ کے سوال اور ڈیٹا کی نوعیت کے مطابق، آپ کو یہ فیصلہ کرنا ہوگا کہ ماڈل کو کس طرح تربیت دی جائے تاکہ وہ آپ کے ڈیٹا کی بہترین عکاسی کرے اور اس کے خلاف درست پیش گوئیاں کرے۔ یہ ML عمل کا وہ حصہ ہے جو مخصوص مہارت اور اکثر کافی تجربے کی ضرورت ہوتی ہے۔ -4. **ماڈل کو تربیت دیں**۔ اپنے ٹریننگ ڈیٹا کا استعمال کرتے ہوئے، آپ مختلف الگورتھمز کا استعمال کریں گے تاکہ ماڈل کو ڈیٹا میں موجود پیٹرنز کو پہچاننے کی تربیت دی جا سکے۔ ماڈل اندرونی وزن کا استعمال کر سکتا ہے جو ڈیٹا کے کچھ حصوں کو دوسروں پر ترجیح دینے کے لیے ایڈجسٹ کیے جا سکتے ہیں تاکہ بہتر ماڈل بنایا جا سکے۔ -5. **ماڈل کا جائزہ لیں**۔ آپ اپنے جمع کردہ سیٹ سے پہلے کبھی نہ دیکھے گئے ڈیٹا (اپنے ٹیسٹنگ ڈیٹا) کا استعمال کریں گے تاکہ ماڈل کی کارکردگی کو جانچ سکیں۔ -6. **پیرامیٹرز کو بہتر بنائیں**۔ اپنے ماڈل کی کارکردگی کی بنیاد پر، آپ مختلف پیرامیٹرز یا متغیرات کا استعمال کرتے ہوئے عمل کو دوبارہ کر سکتے ہیں جو ماڈل کو تربیت دینے کے لیے استعمال کیے گئے الگورتھمز کے رویے کو کنٹرول کرتے ہیں۔ -7. **پیش گوئی کریں**۔ نئے ان پٹ کا استعمال کریں تاکہ اپنے ماڈل کی درستگی کو جانچ سکیں۔ +1. **سوال کا تعین کریں**۔ زیادہ تر ML عمل ایک ایسے سوال سے شروع ہوتے ہیں جس کا جواب سادہ مشروط پروگرام یا قواعد پر مبنی انجن سے نہیں دیا جا سکتا۔ یہ سوالات اکثر ایک ڈیٹا کے مجموعے پر مبنی پیش گوئیوں کے بارے میں ہوتے ہیں۔ +2. **ڈیٹا جمع کریں اور تیار کریں**۔ اپنے سوال کا جواب دینے کے لیے، آپ کو ڈیٹا کی ضرورت ہوتی ہے۔ آپ کے ڈیٹا کا معیار اور بعض اوقات مقدار طے کرے گی کہ آپ اپنے ابتدائی سوال کا کتنا اچھے طریقے سے جواب دے سکتے ہیں۔ ڈیٹا کو بصری طور پر دیکھنا اس مرحلے کا ایک اہم جزو ہے۔ اس مرحلے میں ڈیٹا کو تربیت اور جانچ کے گروپ میں تقسیم کرنا بھی شامل ہے تاکہ ماڈل بنایا جا سکے۔ +3. **ٹریننگ طریقہ منتخب کریں**۔ اپنے سوال اور ڈیٹا کی نوعیت کے مطابق، آپ کو یہ منتخب کرنا ہوگا کہ آپ کس طرح ماڈل کو تربیت دینا چاہتے ہیں تاکہ وہ آپ کے ڈیٹا کی بہترین نمائندگی کرے اور اس پر درست پیش گوئیاں کریں۔ یہ آپ کے ML عمل کا وہ حصہ ہے جس کے لیے خاص مہارت اور اکثر کافی تجربہ درکار ہوتا ہے۔ +4. **ماڈل کو تربیت دیں**۔ اپنے تربیتی ڈیٹا کا استعمال کرتے ہوئے، آپ مختلف الگورتھمز کا استعمال کر کے ماڈل کو ڈیٹا میں موجود پیٹرنز پہچاننے کے لیے تربیت دیں گے۔ ماڈل اندرونی وزنوں کا استعمال کر سکتا ہے جن کو ایڈجسٹ کیا جا سکتا ہے تاکہ ڈیٹا کے کچھ حصوں کو ترجیح دی جائے اور بہتر ماڈل بنایا جا سکے۔ +5. **ماڈل کا جائزہ لیں**۔ آپ اپنے جمع کردہ ڈیٹا کے ایسے حصے (جانچ کے ڈیٹا) کا استعمال کریں گے جو ماڈل نے پہلے کبھی نہیں دیکھا تاکہ ماڈل کی کارکردگی کا جائزہ لیا جا سکے۔ +6. **پیرامیٹر ٹیوننگ**۔ ماڈل کی کارکردگی کی بنیاد پر، آپ اس عمل کو مختلف پیرامیٹرز یا متغیرات کے ساتھ دوبارہ کر سکتے ہیں جو ماڈل کو تربیت دینے کے لیے استعمال ہونے والے الگورتھمز کے رویے کو کنٹرول کرتے ہیں۔ +7. **پیش گوئی کریں**۔ نئے ان پٹ استعمال کر کے ماڈل کی درستگی کو آزما سکتے ہیں۔ -## کون سا سوال پوچھنا ہے +## کس سوال کا پوچھنا ہے -کمپیوٹرز ڈیٹا میں چھپے ہوئے پیٹرنز کو دریافت کرنے میں خاص طور پر ماہر ہیں۔ یہ صلاحیت ان محققین کے لیے بہت مددگار ہے جن کے پاس کسی خاص شعبے کے بارے میں ایسے سوالات ہیں جن کا جواب آسانی سے شرطی قواعد کے انجن بنا کر نہیں دیا جا سکتا۔ مثال کے طور پر، ایک ایکچوریل کام کے لیے، ایک ڈیٹا سائنسدان سگریٹ نوشی کرنے والوں اور نہ کرنے والوں کی اموات کے بارے میں ہاتھ سے بنائے گئے قواعد بنا سکتا ہے۔ +کمپیوٹر ڈیٹا میں پوشیدہ نمونوں کو دریافت کرنے میں خاص مہارت رکھتے ہیں۔ یہ صلاحیت ان محققین کے لیے بہت مددگار ہے جن کے پاس کسی مخصوص موضوع کے بارے میں ایسے سوالات ہوتے ہیں جن کا آسانی سے مشروط قواعد پر مبنی انجن بنا کر جواب نہیں دیا جا سکتا۔ مثال کے طور پر، ایک ڈیٹا سائنسدان تعمیری قواعد بنا سکتا ہے کہ سگریٹ نوشوں اور غیر سگریٹ نوشوں میں موت کی شرح کیا ہے۔ -تاہم، جب بہت سے دیگر متغیرات کو مساوات میں شامل کیا جاتا ہے، تو ایک ML ماڈل ماضی کی صحت کی تاریخ کی بنیاد پر مستقبل کی اموات کی شرح کی پیش گوئی کرنے میں زیادہ مؤثر ثابت ہو سکتا ہے۔ ایک خوشگوار مثال اپریل کے مہینے میں کسی مخصوص مقام کے لیے موسم کی پیش گوئی کرنا ہو سکتی ہے، جس میں ڈیٹا شامل ہو جیسے عرض البلد، طول البلد، موسمیاتی تبدیلی، سمندر کے قریب ہونے کی وجہ، جیٹ اسٹریم کے پیٹرنز، اور مزید۔ +لیکن جب کئی دوسرے متغیرات بھی شامل کیے جاتے ہیں، تو مشین لرننگ ماڈل ماضی کی صحت کی تاریخ کی بنیاد پر مستقبل کی موت کی شرح کی بہتر پیش گوئی کر سکتا ہے۔ ایک خوش آئند مثال یہ ہو سکتی ہے کہ اپریل کے مہینے کے لیے موسم کی پیش گوئی کی جائے، جو اس جگہ کے طول بلد، عرض بلد، موسمی تبدیلی، سمندر کی قربت، جیٹ اسٹریم کے پیٹرنز، اور مزید عوامل پر مبنی ہو۔ -✅ یہ [سلائیڈ ڈیک](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) موسم کے ماڈلز میں ML کے استعمال کے لیے ایک تاریخی نقطہ نظر پیش کرتا ہے۔ +✅ اس [سلائیڈ ڈیک](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) میں موسم کے ماڈلز پر تاریخی نظر سے مشین لرننگ کے موسم کی تحلیل میں استعمال کو بیان کیا گیا ہے۔ ## ماڈل بنانے سے پہلے کے کام -ماڈل بنانے سے پہلے، آپ کو کئی کام مکمل کرنے کی ضرورت ہوتی ہے۔ اپنے سوال کو جانچنے اور ماڈل کی پیش گوئیوں کی بنیاد پر ایک مفروضہ بنانے کے لیے، آپ کو کئی عناصر کی شناخت اور ترتیب دینی ہوگی۔ +ماڈل بنانے سے پہلے، آپ کو کئی کام مکمل کرنے ہوتے ہیں۔ سوال کی جانچ کے لیے اور ماڈل کی پیش گوئیوں کی بنیاد پر ایک مفروضہ بنانے کے لیے، آپ کو کئی عناصر کی شناخت اور ترتیب دینی ہوگی۔ ### ڈیٹا -اپنے سوال کا کسی بھی قسم کی یقین دہانی کے ساتھ جواب دینے کے لیے، آپ کو صحیح قسم کے ڈیٹا کی مناسب مقدار کی ضرورت ہوتی ہے۔ اس وقت آپ کو دو کام کرنے کی ضرورت ہے: +اپنے سوال کا یقین کے ساتھ جواب دینے کے لیے، آپ کو درست قسم کا کافی ڈیٹا چاہیے۔ اس مرحلے پر دو باتیں ضروری ہیں: -- **ڈیٹا جمع کریں**۔ ڈیٹا کے تجزیے میں انصاف کے بارے میں پچھلے سبق کو ذہن میں رکھتے ہوئے، اپنے ڈیٹا کو احتیاط سے جمع کریں۔ اس ڈیٹا کے ذرائع، اس میں موجود کسی بھی اندرونی تعصب، اور اس کی اصل کو دستاویزی شکل میں رکھیں۔ -- **ڈیٹا تیار کریں**۔ ڈیٹا کی تیاری کے عمل میں کئی مراحل شامل ہیں۔ اگر ڈیٹا مختلف ذرائع سے آتا ہے تو آپ کو اسے جمع کرنا اور معمول پر لانا پڑ سکتا ہے۔ آپ مختلف طریقوں سے ڈیٹا کے معیار اور مقدار کو بہتر بنا سکتے ہیں، جیسے کہ اسٹرنگز کو نمبروں میں تبدیل کرنا (جیسا کہ ہم [کلسٹرنگ](../../5-Clustering/1-Visualize/README.md) میں کرتے ہیں)۔ آپ اصل ڈیٹا کی بنیاد پر نیا ڈیٹا بھی تیار کر سکتے ہیں (جیسا کہ ہم [کلاسیفیکیشن](../../4-Classification/1-Introduction/README.md) میں کرتے ہیں)۔ آپ ڈیٹا کو صاف اور ترمیم کر سکتے ہیں (جیسا کہ ہم [ویب ایپ](../../3-Web-App/README.md) سبق سے پہلے کریں گے)۔ آخر میں، آپ کو اسے بے ترتیب اور شفل کرنے کی بھی ضرورت ہو سکتی ہے، جو آپ کی تربیتی تکنیکوں پر منحصر ہے۔ +- **ڈیٹا اکٹھا کریں**۔ ڈیٹا تجزیے میں عدل و انصاف کے اس سبق کو ذہن میں رکھتے ہوئے، اپنے ڈیٹا کو احتیاط سے جمع کریں۔ اس ڈیٹا کے ذرائع، اس میں موجود ممکنہ تعصبات، اور اس کی اصلیت کا دستاویزی ریکارڈ رکھیں۔ +- **ڈیٹا تیار کریں**۔ ڈیٹا کی تیاری کے کئی مراحل ہوتے ہیں۔ آپ کو مختلف ذرائع سے آئے ہوئے ڈیٹا کو یکجا اور نارملائز کرنا پڑ سکتا ہے۔ آپ مختلف طریقوں سے ڈیٹا کے معیار اور مقدار کو بہتر بنا سکتے ہیں، مثلاً اسٹارنگز کو نمبرز میں تبدیل کرنا (جیسا ہم [کلسٹرنگ](../../5-Clustering/1-Visualize/README.md) میں کرتے ہیں)۔ آپ اصل ڈیٹا کی بنیاد پر نیا ڈیٹا بھی بنا سکتے ہیں (جیسا ہم [کلاسیکیشن](../../4-Classification/1-Introduction/README.md) میں کرتے ہیں). آپ ڈیٹا کو صاف اور ترمیم بھی کر سکتے ہیں (جیسا ہم [ویب ایپ](../../3-Web-App/README.md) سبق سے پہلے کریں گے). آخر میں، آپ کو اپنے تربیتی طریقوں کی مناسبت سے ڈیٹا کو رینڈمائز اور شفل بھی کرنا پڑ سکتا ہے۔ -✅ ڈیٹا جمع کرنے اور اس پر عمل کرنے کے بعد، ایک لمحہ نکالیں تاکہ یہ دیکھ سکیں کہ آیا اس کی شکل آپ کے مطلوبہ سوال کو حل کرنے کی اجازت دے گی۔ یہ ممکن ہے کہ ڈیٹا آپ کے دیے گئے کام میں اچھی کارکردگی نہ دکھائے، جیسا کہ ہم اپنے [کلسٹرنگ](../../5-Clustering/1-Visualize/README.md) اسباق میں دریافت کرتے ہیں! +✅ اپنے ڈیٹا کو جمع اور پراسیس کرنے کے بعد، ایک لمحہ لیں اور دیکھیں کہ کیا اس کی شکل آپ کے ارادے والا سوال حل کرنے کے قابل ہے۔ ممکن ہے کہ ڈیٹا آپ کے مخصوص کام میں اچھی کارکردگی نہ دکھائے، جیسا ہم [کلسٹرنگ](../../5-Clustering/1-Visualize/README.md) کے دروس میں دریافت کرتے ہیں! ### فیچرز اور ہدف -ایک [فیچر](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) آپ کے ڈیٹا کی ایک قابل پیمائش خصوصیت ہے۔ بہت سے ڈیٹا سیٹس میں یہ 'تاریخ'، 'سائز' یا 'رنگ' جیسے کالم ہیڈنگ کے طور پر ظاہر ہوتا ہے۔ آپ کا فیچر متغیر، جو عام طور پر کوڈ میں `X` کے طور پر ظاہر ہوتا ہے، ان پٹ متغیر کی نمائندگی کرتا ہے جو ماڈل کو تربیت دینے کے لیے استعمال کیا جائے گا۔ +ایک [فیچر](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) آپ کے ڈیٹا کی قابلِ پیمائش خصوصیت ہے۔ بہت سے ڈیٹا سیٹس میں اسے ایک کالم کے عنوان کے طور پر ظاہر کیا جاتا ہے جیسے 'تاریخ'، 'سائز' یا 'رنگ'۔ آپ کا فیچر ویریبل عام طور پر کوڈ میں `X` کے طور پر ظاہر کیا جاتا ہے، جو ان پٹ ویریبل ہے جسے ماڈل کو تربیت دینے کے لیے استعمال کیا جائے گا۔ -ایک ہدف وہ چیز ہے جس کی آپ پیش گوئی کرنے کی کوشش کر رہے ہیں۔ ہدف، جو عام طور پر کوڈ میں `y` کے طور پر ظاہر ہوتا ہے، اس سوال کا جواب دیتا ہے جو آپ اپنے ڈیٹا سے پوچھنے کی کوشش کر رہے ہیں: دسمبر میں کون سے **رنگ** کے کدو سب سے سستے ہوں گے؟ سان فرانسسکو میں کون سے محلوں میں بہترین جائیداد کی **قیمت** ہوگی؟ کبھی کبھی ہدف کو لیبل ایٹریبیوٹ بھی کہا جاتا ہے۔ +ہدف وہ چیز ہے جس کی آپ پیش گوئی کرنے کی کوشش کر رہے ہیں۔ ہدف، جو عموماً کوڈ میں `y` کے طور پر ظاہر ہوتا ہے، آپ کے سوال کا جواب ہے جو آپ اپنے ڈیٹا سے پوچھنا چاہتے ہیں: دسمبر میں، سب سے سستی کدو کا **رنگ** کیا ہوگا؟ سان فرانسسکو میں، کون سے محلے رہائشی جائیداد کی بہترین **قیمت** رکھیں گے؟ ہدف کو بعض اوقات لیبل وصف بھی کہا جاتا ہے۔ -### اپنے فیچر متغیر کا انتخاب +### فیچر ویریبل منتخب کرنا -🎓 **فیچر سلیکشن اور فیچر ایکسٹریکشن** جب آپ ماڈل بناتے وقت متغیر کا انتخاب کرتے ہیں تو آپ کیسے جانتے ہیں کہ کون سا منتخب کرنا ہے؟ آپ شاید فیچر سلیکشن یا فیچر ایکسٹریکشن کے عمل سے گزریں گے تاکہ بہترین ماڈل کے لیے صحیح متغیرات کا انتخاب کیا جا سکے۔ تاہم، یہ دونوں ایک جیسے نہیں ہیں: "فیچر ایکسٹریکشن اصل فیچرز کے فنکشنز سے نئے فیچرز بناتا ہے، جبکہ فیچر سلیکشن فیچرز کے ایک سب سیٹ کو واپس کرتا ہے۔" ([ماخذ](https://wikipedia.org/wiki/Feature_selection)) +🎓 **فیچر انتخاب اور فیچر استخراج** آپ کیسے جانیں گے کہ ماڈل بناتے وقت کون سا ویریبل منتخب کرنا ہے؟ آپ غالباً فیچر انتخاب یا فیچر استخراج کے عمل سے گزریں گے تاکہ بہترین کارکردگی والے ماڈل کے لیے درست متغیرات منتخب کر سکیں۔ تاہم یہ ایک جیسے نہیں ہیں: "فیچر استخراج اصل فیچرز کے فنکشنز سے نئے فیچرز بناتا ہے، جبکہ فیچر انتخاب فیچرز کا ایک ذیلی مجموعہ واپس دیتا ہے۔" ([ماخذ](https://wikipedia.org/wiki/Feature_selection)) -### اپنے ڈیٹا کو بصری طور پر دیکھیں +### اپنے ڈیٹا کا بصری جائزہ لیں -ڈیٹا سائنسدان کے ٹول کٹ کا ایک اہم پہلو ڈیٹا کو بصری طور پر دیکھنے کی طاقت ہے، جس کے لیے کئی بہترین لائبریریاں موجود ہیں جیسے Seaborn یا MatPlotLib۔ اپنے ڈیٹا کو بصری طور پر پیش کرنا آپ کو چھپے ہوئے تعلقات کو دریافت کرنے کی اجازت دے سکتا ہے جنہیں آپ فائدہ اٹھا سکتے ہیں۔ آپ کے بصری نمائندے آپ کو تعصب یا غیر متوازن ڈیٹا کو بھی ظاہر کر سکتے ہیں (جیسا کہ ہم [کلاسیفیکیشن](../../4-Classification/2-Classifiers-1/README.md) میں دریافت کرتے ہیں)۔ +ڈیٹا سائنسدان کے آلے میں ایک اہم خصوصیت مختلف عمدہ لائبریریز جیسے Seaborn یا MatPlotLib کا استعمال کرتے ہوئے ڈیٹا کو بصری طور پر ظاہر کرنے کی طاقت ہے۔ اپنے ڈیٹا کو بصری شکل میں پیش کرنے سے آپ ممکنہ طور پر چھپے ہوئے تعلقات دریافت کر سکتے ہیں جن سے فائدہ اٹھایا جا سکتا ہے۔ آپ کی بصری نمائیشات آپ کو تعصب یا غیر متوازن ڈیٹا کو بھی ظاہر کر سکتی ہیں (جیسا ہم [کلاسیکیشن](../../4-Classification/2-Classifiers-1/README.md) میں دریافت کرتے ہیں)۔ -### اپنے ڈیٹا سیٹ کو تقسیم کریں +### اپنا ڈیٹا سیٹ تقسیم کریں -تربیت سے پہلے، آپ کو اپنے ڈیٹا سیٹ کو دو یا زیادہ غیر مساوی حصوں میں تقسیم کرنا ہوگا جو پھر بھی ڈیٹا کی اچھی نمائندگی کرتے ہیں۔ +ٹریننگ سے پہلے، آپ کو اپنے ڈیٹا سیٹ کو دو یا زیادہ غیر مساوی حصوں میں تقسیم کرنا ہوگا جو اب بھی ڈیٹا کی اچھی نمائندگی کرتے ہوں۔ -- **ٹریننگ**۔ ڈیٹا سیٹ کا یہ حصہ آپ کے ماڈل کو تربیت دینے کے لیے استعمال کیا جاتا ہے۔ یہ سیٹ اصل ڈیٹا سیٹ کا زیادہ تر حصہ ہوتا ہے۔ -- **ٹیسٹنگ**۔ ایک ٹیسٹ ڈیٹا سیٹ اصل ڈیٹا سے حاصل کردہ ایک آزاد ڈیٹا گروپ ہے، جسے آپ بنائے گئے ماڈل کی کارکردگی کی تصدیق کے لیے استعمال کرتے ہیں۔ -- **ویلیڈیٹنگ**۔ ایک ویلیڈیشن سیٹ ایک چھوٹا آزاد گروپ ہے جسے آپ ماڈل کے ہائپر پیرامیٹرز یا آرکیٹیکچر کو بہتر بنانے کے لیے استعمال کرتے ہیں۔ آپ کے ڈیٹا کے سائز اور آپ کے سوال پر منحصر ہے، آپ کو یہ تیسرا سیٹ بنانے کی ضرورت نہیں ہو سکتی (جیسا کہ ہم [ٹائم سیریز فورکاسٹنگ](../../7-TimeSeries/1-Introduction/README.md) میں نوٹ کرتے ہیں)۔ +- **ٹریننگ**۔ ڈیٹا سیٹ کا یہ حصہ آپ کے ماڈل کو تربیت دینے کے لیے استعمال ہوتا ہے۔ یہ سیٹ اصل ڈیٹا سیٹ کی اکثریت پر مشتمل ہوتا ہے۔ +- **جانچ**۔ ٹیسٹ ڈیٹا سیٹ ایک خودمختار ڈیٹا کا گروپ ہوتا ہے، جو عموماً اصل ڈیٹا سے لیا جاتا ہے، تاکہ بنائے گئے ماڈل کی کارکردگی کی تصدیق کی جا سکے۔ +- **تصدیق**۔ ایک تصدیقی سیٹ چھوٹے خودمختار نمونوں کا گروپ ہوتا ہے جسے آپ ماڈل کے ہائپر پیرامیٹرز یا ساخت کو بہتر بنانے کے لیے استعمال کرتے ہیں۔ آپ کے ڈیٹا کے حجم اور سوال کے مطابق، ممکن ہے کہ آپ کو یہ تیسرا سیٹ بنانے کی ضرورت نہ ہو (جیسا ہم [ٹائم سیریز فورکاسٹنگ](../../7-TimeSeries/1-Introduction/README.md) میں نوٹ کرتے ہیں)۔ ## ماڈل بنانا -اپنے ٹریننگ ڈیٹا کا استعمال کرتے ہوئے، آپ کا مقصد ایک ماڈل بنانا ہے، یا اپنے ڈیٹا کی شماریاتی نمائندگی، جسے مختلف الگورتھمز کے ذریعے **ٹرین** کیا جاتا ہے۔ ماڈل کو تربیت دینا اسے ڈیٹا کے سامنے لاتا ہے اور اسے دریافت کیے گئے پیٹرنز کے بارے میں مفروضے بنانے، ان کی تصدیق کرنے، اور قبول یا مسترد کرنے کی اجازت دیتا ہے۔ +اپنے تربیتی ڈیٹا کا استعمال کرتے ہوئے، آپ کا ہدف ماڈل بنانا ہے، یا آپ کے ڈیٹا کی شماریاتی نمائندگی، مختلف الگورتھمز کے ذریعے اسے **تربیت دینا**۔ ماڈل کو تربیت دینا اسے ڈیٹا کے سامنے لانا ہے تاکہ وہ دریافت کردہ نمونوں کے بارے میں اندازہ لگا سکے، انہیں تصدیق کرے، اور قبول یا رد کرے۔ ### تربیت کا طریقہ منتخب کریں -اپنے سوال اور ڈیٹا کی نوعیت کے مطابق، آپ اسے تربیت دینے کے لیے ایک طریقہ منتخب کریں گے۔ [Scikit-learn کی دستاویزات](https://scikit-learn.org/stable/user_guide.html) کے ذریعے قدم بہ قدم چلتے ہوئے - جسے ہم اس کورس میں استعمال کرتے ہیں - آپ ماڈل کو تربیت دینے کے کئی طریقے دریافت کر سکتے ہیں۔ آپ کے تجربے پر منحصر ہے، آپ کو بہترین ماڈل بنانے کے لیے کئی مختلف طریقے آزمانے پڑ سکتے ہیں۔ آپ ممکنہ طور پر ایک عمل سے گزریں گے جس میں ڈیٹا سائنسدان ماڈل کی کارکردگی کا جائزہ لیتے ہیں، اسے غیر دیکھے گئے ڈیٹا کے ساتھ کھلاتے ہیں، درستگی، تعصب، اور دیگر معیار کو کم کرنے والے مسائل کی جانچ کرتے ہیں، اور دیے گئے کام کے لیے سب سے مناسب تربیتی طریقہ منتخب کرتے ہیں۔ +اپنے سوال اور ڈیٹا کی نوعیت کے مطابق، آپ انتخاب کریں گے کہ کس طرح ماڈل کو تربیت دینا ہے۔ [Scikit-learn کی دستاویزات](https://scikit-learn.org/stable/user_guide.html) کو دیکھتے ہوئے - جسے ہم اس کورس میں استعمال کرتے ہیں - آپ بہت سے طریقے تلاش کر سکتے ہیں جن سے ماڈل کو تربیت دیا جا سکتا ہے۔ آپ کو مختلف طریقے آزمانا پڑ سکتے ہیں تاکہ بہترین ماڈل بنایا جا سکے۔ ڈیٹا سائنسدان اکثر ماڈل کی کارکردگی کا جائزہ لیتے ہیں اس کا ڈیٹا اس وقت نہیں دیکھ چکا ہوتا، درستگی، تعصب، اور دیگر مسائل چیک کرتے ہیں، اور سب سے مناسب تربیتی طریقہ منتخب کرتے ہیں۔ ### ماڈل کو تربیت دیں -اپنے ٹریننگ ڈیٹا کے ساتھ، آپ 'فٹ' کرنے کے لیے تیار ہیں تاکہ ایک ماڈل بنایا جا سکے۔ آپ دیکھیں گے کہ بہت سی ML لائبریریوں میں آپ کو 'model.fit' کوڈ ملے گا - یہ وہ وقت ہے جب آپ اپنے فیچر متغیر کو ویلیوز کے ایک ارے کے طور پر بھیجتے ہیں (عام طور پر 'X') اور ایک ہدف متغیر (عام طور پر 'y')۔ +اپنے تربیتی ڈیٹا کے ساتھ، آپ تیار ہیں کہ اسے 'فٹ' کریں تاکہ ماڈل بنائیں۔ آپ دیکھیں گے کہ بہت سی ML لائبریریز میں آپ کو 'model.fit' کوڈ ملے گا — اسی وقت آپ اپنا فیچر ویریبل بطور قیمتوں والی صف (عام طور پر 'X') اور ہدف ویریبل (عام طور پر 'y') بھیجتے ہیں۔ ### ماڈل کا جائزہ لیں -ایک بار تربیتی عمل مکمل ہو جائے (ایک بڑے ماڈل کو تربیت دینے کے لیے کئی تکرار، یا 'epochs' لگ سکتے ہیں)، آپ ٹیسٹ ڈیٹا کا استعمال کرتے ہوئے ماڈل کی کارکردگی کو جانچ کر اس کے معیار کا جائزہ لے سکیں گے۔ یہ ڈیٹا اصل ڈیٹا کا ایک ذیلی سیٹ ہے جسے ماڈل نے پہلے کبھی تجزیہ نہیں کیا۔ آپ اپنے ماڈل کے معیار کے بارے میں میٹرکس کی ایک ٹیبل پرنٹ کر سکتے ہیں۔ +جب تربیت کا عمل مکمل ہو جاتا ہے (بڑے ماڈلز کو تربیت دینے میں کئی تکرار یا 'ایپوکس' لگ سکتے ہیں)، تو آپ ٹیسٹ ڈیٹا استعمال کر کے ماڈل کی معیار کا جائزہ لے سکتے ہیں۔ یہ ڈیٹا اصل ڈیٹا کا وہ حصہ ہوتا ہے جسے ماڈل نے پہلے کبھی نہیں دیکھا۔ آپ ماڈل کی کارکردگی کے بارے میں میٹرکس کی ایک جدول پرنٹ کر سکتے ہیں۔ 🎓 **ماڈل فٹنگ** -مشین لرننگ کے سیاق و سباق میں، ماڈل فٹنگ اس ماڈل کے بنیادی فنکشن کی درستگی کو ظاہر کرتا ہے کیونکہ یہ ڈیٹا کا تجزیہ کرنے کی کوشش کرتا ہے جس سے یہ واقف نہیں ہے۔ +مشین لرننگ کے تناظر میں، ماڈل فٹنگ اس ماڈل کی بنیادی فنکشن کی درستگی کو کہتے ہیں جب وہ ایسے ڈیٹا کا تجزیہ کرتا ہے جس سے وہ واقف نہیں ہوتا۔ -🎓 **انڈر فٹنگ** اور **اوور فٹنگ** عام مسائل ہیں جو ماڈل کے معیار کو کم کرتے ہیں، کیونکہ ماڈل یا تو کافی اچھا فٹ نہیں ہوتا یا بہت زیادہ فٹ ہوتا ہے۔ یہ ماڈل کو پیش گوئیاں کرنے کا سبب بنتا ہے جو یا تو اس کے ٹریننگ ڈیٹا کے ساتھ بہت زیادہ یا بہت کم ہم آہنگ ہوتی ہیں۔ ایک اوور فٹ ماڈل ٹریننگ ڈیٹا کو بہت اچھی طرح سے پیش گوئی کرتا ہے کیونکہ اس نے ڈیٹا کی تفصیلات اور شور کو بہت اچھی طرح سے سیکھ لیا ہے۔ ایک انڈر فٹ ماڈل درست نہیں ہے کیونکہ یہ نہ تو اپنے ٹریننگ ڈیٹا کا درست تجزیہ کر سکتا ہے اور نہ ہی اس ڈیٹا کا جو اس نے ابھی تک 'دیکھا' نہیں ہے۔ +🎓 **انڈر فٹنگ** اور **اوور فٹنگ** عام مسائل ہیں جو ماڈل کی معیار کو خراب کرتے ہیں، کیونکہ ماڈل یا تو اچھی طرح فٹ نہیں ہوتا یا بہت زیادہ فٹ ہو جاتا ہے۔ اس کی وجہ سے ماڈل کی پیش گوئیاں یا تو تربیتی ڈیٹا کے ساتھ بہت قریب ہوتی ہیں یا بہت دور۔ ایک اوورفٹ ماڈل تربیتی ڈیٹا کو بہت اچھے طریقے سے پیش گوئی کرتا ہے کیونکہ اس نے ڈیٹا کی تفصیلات اور شور کو بہت اچھی طرح سیکھ لیا ہوتا ہے۔ ایک انڈر فٹ ماڈل درست نہیں ہوتا کیونکہ وہ نہ اپنے تربیتی ڈیٹا کو درست تجزیہ کر پاتا ہے اور نہ ایسے ڈیٹا کو جو اس نے ابھی دیکھا نہ ہو۔ -![اوور فٹنگ ماڈل](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> انفوگرافک [Jen Looper](https://twitter.com/jenlooper) کے ذریعے +![اوورفٹنگ ماڈل](../../../../translated_images/ur/overfitting.1c132d92bfd93cb6.webp) +> انفرافک آف جن لوپر کی طرف سے ([Jen Looper](https://twitter.com/jenlooper)) -## پیرامیٹرز کو بہتر بنانا +## پیرامیٹر ٹیوننگ -ایک بار آپ کی ابتدائی تربیت مکمل ہو جائے، ماڈل کے معیار کا مشاہدہ کریں اور اس کے 'ہائپر پیرامیٹرز' کو ایڈجسٹ کر کے اسے بہتر بنانے پر غور کریں۔ اس عمل کے بارے میں مزید پڑھیں [دستاویزات میں](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)۔ +جب آپ کی ابتدائی تربیت مکمل ہو جائے، تو ماڈل کی معیار کو دیکھیں اور اس کی 'ہائپر پیرامیٹرز' کو تبدیل کر کے بہتری پر غور کریں۔ اس عمل کے بارے میں مزید پڑھیں [دستاویزات میں](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)۔ ## پیش گوئی -یہ وہ لمحہ ہے جب آپ بالکل نئے ڈیٹا کا استعمال کر کے اپنے ماڈل کی درستگی کو جانچ سکتے ہیں۔ ایک 'اپلائیڈ' ML سیٹنگ میں، جہاں آپ ماڈل کو پروڈکشن میں استعمال کرنے کے لیے ویب اثاثے بنا رہے ہیں، یہ عمل صارف کے ان پٹ (مثال کے طور پر ایک بٹن دبانے) کو متغیر کے طور پر جمع کرنے اور ماڈل کو انفرنس یا جائزے کے لیے بھیجنے میں شامل ہو سکتا ہے۔ +یہ وہ لمحہ ہے جب آپ بالکل نئے ڈیٹا کا استعمال کر کے اپنے ماڈل کی درستگی کو آزما سکتے ہیں۔ ایک 'اطلاق شدہ' ML ماحول میں، جہاں آپ ماڈل کو پروڈکشن میں استعمال کے لیے ویب اثاثے بنا رہے ہیں، یہ عمل ممکنہ طور پر صارف کی ان پٹ (مثلاً بٹن دبانا) حاصل کرنے، ایک ویریبل سیٹ کرنے، اور اسے ماڈل کو انفرنس یا تشخیص کے لیے بھیجنے پر مشتمل ہوتا ہے۔ -ان اسباق میں، آپ دریافت کریں گے کہ ان مراحل کو کیسے تیار کریں، بنائیں، جانچیں، جائزہ لیں، اور پیش گوئی کریں - ڈیٹا سائنسدان کے تمام اشارے اور مزید، جیسے کہ آپ 'فل اسٹیک' ML انجینئر بننے کے سفر میں ترقی کرتے ہیں۔ +ان دروس میں، آپ سیکھیں گے کہ ان مراحل کو کیسے استعمال کریں: تیار کرنا، بنانا، آزمانا، جانچنا، اور پیش گوئی کرنا — یہ سب ڈیٹا سائنسدان کے اشارے اور اس سے بھی زیادہ، جب آپ 'فل اسٹیک' ML انجینئر بننے کے لیے اپنی سفر میں آگے بڑھیں گے۔ --- ## 🚀چیلنج -مشین لرننگ کے ماہر کے مراحل کی عکاسی کرنے کے لیے ایک فلو چارٹ بنائیں۔ آپ اس عمل میں ابھی کہاں ہیں؟ آپ کو کہاں مشکل پیش آنے کی توقع ہے؟ آپ کو کیا آسان لگتا ہے؟ +ایک فلو چارٹ بنائیں جو ML کے ماہر کے مراحل کی عکاسی کرے۔ آپ خود کو اس عمل کے کس مرحلے پر پاتے ہیں؟ آپ کو کہاں مشکلات کا سامنا ہو سکتا ہے؟ آپ کو کیا آسان لگتا ہے؟ -## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/) +## [سبق کے بعد کوئز](https://ff-quizzes.netlify.app/en/ml/) ## جائزہ اور خود مطالعہ -آن لائن تلاش کریں کہ ڈیٹا سائنسدان اپنے روزمرہ کے کام کے بارے میں کیا بات کرتے ہیں۔ یہاں ایک [ویڈیو](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ہے۔ +انٹرنیٹ پر ایسے ڈیٹا سائنسدانوں کے انٹرویوز تلاش کریں جو اپنے روزمرہ کے کام کے بارے میں بات کرتے ہوں۔ یہاں [ایک](https://www.youtube.com/watch?v=Z3IjgbbCEfs) موجود ہے۔ ## اسائنمنٹ @@ -119,5 +119,7 @@ --- + **ڈسکلیمر**: -یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے ترجمہ کی گئی ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا بے دقتیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں قابلِ اعتبار ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ + \ No newline at end of file diff --git a/translations/ur/2-Regression/3-Linear/README.md b/translations/ur/2-Regression/3-Linear/README.md index 41eb43c7db..aa96d0ef6c 100644 --- a/translations/ur/2-Regression/3-Linear/README.md +++ b/translations/ur/2-Regression/3-Linear/README.md @@ -1,97 +1,97 @@ -# Scikit-learn کا استعمال کرتے ہوئے ریگریشن ماڈل بنائیں: ریگریشن کے چار طریقے +# سکائیکیٹ لرن کا استعمال کرتے ہوئے ریگریشن ماڈل بنائیں: ریگریشن چار طریقے ## ابتدائی نوٹ -لکیری ریگریشن اس وقت استعمال ہوتی ہے جب ہم ایک **عددی قدر** کی پیش گوئی کرنا چاہتے ہیں (مثلاً، گھر کی قیمت، درجہ حرارت، یا فروخت)۔ -یہ اس طرح کام کرتی ہے کہ ایک سیدھی لائن تلاش کی جاتی ہے جو انپٹ خصوصیات اور آؤٹ پٹ کے درمیان تعلق کو بہترین انداز میں ظاہر کرے۔ +لینیئر ریگریشن اس وقت استعمال ہوتی ہے جب ہم کسی **عدداتی قیمت** (مثلاً، گھر کی قیمت، درجہ حرارت، یا فروخت) کی پیش گوئی کرنا چاہتے ہوں۔ +یہ کام ان پٹ خصوصیات اور آؤٹ پٹ کے درمیان تعلق کی بہترین نمائندگی کرنے والی سیدھی لائن تلاش کرکے کرتا ہے۔ -اس سبق میں، ہم بنیادی تصور کو سمجھنے پر توجہ دیں گے اس سے پہلے کہ ہم مزید ترقی یافتہ ریگریشن تکنیکوں کو دریافت کریں۔ -![لکیری بمقابلہ کثیر رکنی ریگریشن کی انفوگرافک](../../../../translated_images/ur/linear-polynomial.5523c7cb6576ccab.webp) -> انفوگرافک بنائی گئی توسط [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [سبق سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ml/) +اس سبق میں، ہم تصور کو سمجھنے پر توجہ مرکوز کرتے ہیں اس سے پہلے کہ جدید ریگریشن تکنیکوں کو دریافت کریں۔ +![لینیئر بمقابلہ پولینومیئل ریگریشن انفورگرافک](../../../../translated_images/ur/linear-polynomial.5523c7cb6576ccab.webp) +> انفورگرافک بذریعہ [داسانی مادپلی](https://twitter.com/dasani_decoded) +## [پری-لیکچر کوئز](https://ff-quizzes.netlify.app/en/ml/) -> ### [یہ سبق R میں دستیاب ہے!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [یہ سبق R میں بھی دستیاب ہے!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### تعارف -اب تک آپ نے ریگریشن کیا ہے یہ جانچا ہے مثال کے طور پر کدو کی قیمت کے ڈیٹا سیٹ سے حاصل کردہ نمونہ ڈیٹا کے ساتھ جسے ہم اس سبق میں استعمال کریں گے۔ آپ نے اسے Matplotlib کے ذریعے تصویری شکل میں بھی دیکھا ہے۔ +اب تک آپ نے یہ دریافت کیا ہے کہ ریگریشن کیا ہے، ساتھ ہی ہم نے کدو کی قیمتوں کے ڈیٹا سے نمونہ لیا ہوا ڈیٹا استعمال کیا ہے جسے ہم پورے سبق میں استعمال کریں گے۔ آپ نے اسے میٹ پلوٹ لائبراڑی کا استعمال کرتے ہوئے ویژولائز بھی کیا ہے۔ -اب آپ مشین لرننگ کے لیے ریگریشن میں مزید گہرائی میں جانے کے لیے تیار ہیں۔ جب کہ بصری نمائندگی آپ کو ڈیٹا سمجھنے میں مدد دیتی ہے، مشین لرننگ کی اصل طاقت _ماڈلز کی تربیت_ میں ہے۔ ماڈلز ماضی کے ڈیٹا پر تربیت دیتے ہیں تاکہ خود بخود ڈیٹا کی انحصاریت کو سمجھ سکیں، اور یہ آپ کو نئے ڈیٹا کے لیے پیش گوئی کرنے کی اجازت دیتے ہیں جو ماڈل نے پہلے نہیں دیکھا۔ +اب آپ مشین لرننگ کے لیے ریگریشن میں گہرائی میں جانے کے لیے تیار ہیں۔ جب کہ ویژولائزیشن آپ کو ڈیٹا کو سمجھنے کے قابل بناتی ہے، مشین لرننگ کی اصل طاقت _ماڈلز کی تربیت_ میں ہے۔ ماڈلز تاریخی ڈیٹا پر تربیت دیے جاتے ہیں تاکہ خودکار طریقے سے ڈیٹا کی انحصاریوں کو پکڑ سکیں، اور یہ آپ کو نئے ڈیٹا کے لیے نتائج پیش گوئی کرنے کی اجازت دیتے ہیں، جو ماڈل نے پہلے کبھی نہیں دیکھا۔ -اس سبق میں، آپ دو قسم کی ریگریشنز کے بارے میں مزید جانیں گے: _بنیادی لکیری ریگریشن_ اور _کثیر رکنی ریگریشن_، اور ان تکنیکوں کے پیچھے کچھ ریاضی بھی سیکھیں گے۔ یہ ماڈلز ہمیں مختلف انپٹ ڈیٹا کے مطابق کدو کی قیمت کی پیش گوئی کرنے کی اجازت دیں گے۔ +اس سبق میں، آپ ریگریشن کی دو اقسام کے بارے میں مزید جانیں گے: _بنیادی لینیئر ریگریشن_ اور _پولینومیئل ریگریشن_، ساتھ ہی ان تکنیکوں کے پیچھے موجود کچھ ریاضی بھی۔ یہ ماڈلز ہمیں مختلف ان پٹ ڈیٹا کے مطابق کدو کی قیمتوں کی پیشنگوئی کرنے کی اجازت دیں گے۔ -[![مشین لرننگ مبتدیوں کے لیے - لکیری ریگریشن کو سمجھنا](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "مشین لرننگ مبتدیوں کے لیے - لکیری ریگریشن کو سمجھنا") +[![مشق کے لیے مشین لرننگ - لینیئر ریگریشن کو سمجھنا](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "مشق کے لیے مشین لرننگ - لینیئر ریگریشن کو سمجھنا") -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ لکیری ریگریشن کا مختصر ویڈیو جائزہ دیکھ سکیں۔ +> 🎥 اوپر تصویر پر کلک کریں لینیئر ریگریشن کے بارے میں ایک مختصر ویڈیو جائزہ کے لیے۔ -> اس نصاب کے دوران، ہم فرض کرتے ہیں کہ ریاضی کی معلومات بہت کم ہیں، اور کوشش کرتے ہیں کہ اسے ان طلباء کے لیے قابل فہم بنایا جائے جو دوسرے شعبوں سے آ رہے ہیں، لہٰذا نوٹسز، 🧮 کال آؤٹس، خاکے، اور دیگر تعلیمی اوزار پر دھیان دیں جو سمجھنے میں مدد دیں۔ +> اس نصاب کے دوران، ہم ریاضی کے بارے میں کم از کم معلومات فرض کرتے ہیں، اور اسے دوسرے شعبوں سے آنے والے طلباء کے لیے قابل رسائی بنانے کی کوشش کرتے ہیں، اس لیے نوٹس، 🧮 کالمز، خاکے، اور دیگر تعلیمی اوزار دیکھتے رہیں تاکہ سمجھ بوجھ میں مدد ملے۔ -### پیشگی شرائط +### پیشگی شرط -آپ کو اب تک کدو کے ڈیٹا کے ڈھانچے سے واقف ہونا چاہیے جسے ہم جانچ رہے ہیں۔ آپ اسے اس سبق کی _notebook.ipynb_ فائل میں پری لوڈڈ اور پری کلین کیا ہوا پا سکتے ہیں۔ فائل میں، کدو کی قیمت فی بوشل نئے ڈیٹافریم میں دکھائی گئی ہے۔ اس بات کو یقینی بنائیں کہ آپ یہ نوٹ بکس Visual Studio Code کے کرنلز میں چلا سکیں۔ +اب تک آپ کو کدو کے ڈیٹا کی ساخت سے واقف ہونا چاہیے جس کا ہم جائزہ لے رہے ہیں۔ آپ اسے اس سبق کے _notebook.ipynb_ فائل میں پہلے سے لوڈ اور صاف شدہ حالت میں پا سکتے ہیں۔ اس فائل میں، کدو کی قیمت فی بشل نئے ڈیٹا فریم میں دکھائی گئی ہے۔ یقینی بنائیں کہ آپ یہ نوٹ بکس ویژول اسٹوڈیو کوڈ کے کرنلز میں چلا سکتے ہیں۔ ### تیاری -یاد دہانی کے طور پر، آپ یہ ڈیٹا لوڈ کر رہے ہیں تاکہ اس سے سوالات پوچھ سکیں۔ +یاد دہانی کے طور پر، آپ یہ ڈیٹا لوڈ کر رہے ہیں تاکہ اس سے سوالات پوچھ سکیں۔ -- کب کدو خریدنا سب سے بہتر وقت ہے؟ -- ایک کیس کے منیچر کدو کی قیمت کیا ہوسکتی ہے؟ -- کیا مجھے انہیں آدھے بوشل ٹوکریوں میں خریدنا چاہیے یا 1 1/9 بوشل باکس کے حساب سے؟ -آئیے اس ڈیٹا میں مزید کھنگالیں۔ +- کدو خریدنے کا بہترین وقت کب ہے؟ +- منی ایچر کدو کے ایک کیس کی قیمت کیا ہو سکتی ہے؟ +- کیا مجھے انہیں آدھے بشل ٹوکریوں میں خریدنا چاہیے یا 1 1/9 بشل کے ڈبے میں؟ +آئیے اس ڈیٹا میں مزید کھود کرتے ہیں۔ -پچھلے سبق میں، آپ نے پانڈا ڈیٹافریم تخلیق کیا اور اصل ڈیٹا سیٹ کے ایک حصے کے ساتھ اسے بھر دیا، قیمتوں کو بوشل کے لحاظ سے یکساں بنایا۔ اس طرح کرنے سے آپ تقریباً 400 ڈیٹا پوائنٹس جمع کر سکے لیکن صرف خزاں کے مہینوں کے لیے۔ +پچھلے سبق میں، آپ نے پانڈاز کا ڈیٹا فریم بنایا اور اسے اصل ڈیٹا سیٹ کے ایک حصے سے بھرا، قیمتوں کو بشل کے اعتبار سے معیاری بنایا۔ تاہم ایسا کرنے سے آپ تقریباً 400 ڈیٹا پوائنٹس تک محدود رہے اور صرف خزاں کے مہینوں کے لیے۔ -اس سبق کی ساتھ پیش آنے والی نوٹ بک میں ہم نے جو ڈیٹا پری لوڈ کیا ہے اسے دیکھیں۔ ڈیٹا پری لوڈ ہے اور مہینے کے ڈیٹا کو دکھانے کے لیے ابتدائی اسکیٹر پلاٹ بھی بنایا گیا ہے۔ شاید ہم ڈیٹا کی نوعیت کے بارے میں زیادہ تفصیل حاصل کر سکیں اگر ہم اسے مزید صاف کریں۔ +اس سبق کے ساتھ دی گئی نوٹ بک میں پہلے سے لوڈ کیے گئے ڈیٹا کو دیکھیں۔ ڈیٹا پہلے سے لوڈ کیا گیا ہے اور مہینہ کے ڈیٹا کو دکھانے کے لیے ایک ابتدائی سکریٹر پلاٹ بنایا گیا ہے۔ شاید ہم ڈیٹا کی نوعیت کے بارے میں مزید تفصیل حاصل کر سکیں اگر ہم اسے مزید صاف کریں۔ -## لکیری ریگریشن لائن +## لینیئر ریگریشن لائن -جیسا کہ آپ نے سبق 1 میں سیکھا، لکیری ریگریشن کا مقصد یہ ہے کہ ایک لائن کھینچی جائے تاکہ: +جیسا کہ آپ نے سبق 1 میں سیکھا، لینیئر ریگریشن مشق کا مقصد یہ ہے کہ ایک لائن پلاٹ کریں تاکہ: -- **متغیرات کے تعلقات دکھائے جائیں**۔ متغیرات کے درمیان تعلق دکھائیں -- **پیش گوئیاں کی جائیں**۔ نئی ڈیٹا پوائنٹ کہاں آ سکتی ہے اس کی ٹھیک پیش گوئی کریں۔ +- **متغیرات کے تعلقات دکھائیں۔** متغیرات کے تعلقات کو ظاہر کریں۔ +- **پیشگوئیاں کریں۔** اس بات کی درست پیش گوئی کریں کہ کوئی نیا ڈیٹا پوائنٹ اس لائن کے حوالے سے کہاں آئے گا۔ -یہ عام طور پر **Least-Squares Regression** کا نامی عمل ہوتا ہے کہ اس قسم کی لائن کشید کی جائے۔ “Least-Squares” اصطلاح ماڈل کی کل غلطی کو کم سے کم کرنے کے عمل کی طرف اشارہ کرتی ہے۔ ہر ڈیٹا پوائنٹ کے لیے، ہم اصل نقطہ اور ریگریشن لائن کے درمیان عمودی فاصلہ ناپتے ہیں (جسے ریزیڈیول کہتے ہیں)۔ +**لِیسٹ اسکوائرز ریگریشن** کے لیے عام طور پر اس قسم کی لائن کھینچی جاتی ہے۔ "لِیسٹ اسکوائرز" اصطلاح ماڈل میں کل غلطی کو کم کرنے کے عمل کی طرف اشارہ کرتی ہے۔ ہر ڈیٹا پوائنٹ کے لیے، ہم اصل نقطہ اور ہمارے ریگریشن لائن کے درمیان عمودی فاصلے (جسے بقایا کہتے ہیں) کو ناپتے ہیں۔ -ہم ان فاصلات کو دو وجوہات کی بنا پر مربع کرتے ہیں: +ہم ان فاصلات کو دو بنیادی وجوہات کی بناء پر مربع کرتے ہیں: -1. **مقدار کی اہمیت سمت سے زیادہ:** ہم چاہتے ہیں کہ -5 کی غلطی کو +5 کی غلطی کی طرح سمجھا جائے۔ مربع کرنے سے تمام قدر مثبت ہوجاتی ہیں۔ +1. **مقدار فوقِ سمت:** ہم چاہتے ہیں کہ -5 کی غلطی کو +5 کی غلطی کی طرح سمجھا جائے۔ مربع کرنے سے تمام اقدار مثبت ہو جاتی ہیں۔ -2. **آؤٹ لائرز کو سزا دینا:** مربع کرنے سے بڑی غلطیوں کو زیادہ وزن ملتا ہے، جو لائن کو ان نقاط کے قریب رکھنے پر مجبور کرتا ہے جو دور ہوتے ہیں۔ +2. **آؤٹ لائرز کو سزا دینا:** مربع کرنے سے بڑی غلطیوں کو زیادہ وزن ملتا ہے، لائن کو دور کے نقطہ جات کے قریب رکھنے پر مجبور کرتا ہے۔ -ہم پھر ان تمام مربعوں کو جمع کرتے ہیں۔ ہمارا ہدف وہ مخصوص لائن تلاش کرنا ہے جہاں یہ مجموعہ کم سے کم ہو (سب سے چھوٹی ممکنہ قیمت)—یعنی "Least-Squares" کا مطلب۔ +پھر ہم ان تمام مربع اقدار کو جمع کرتے ہیں۔ ہمارا مقصد خاص لائن تلاش کرنا ہے جہاں یہ مجموعہ اپنی کم سے کم قیمت پر ہو (سب سے چھوٹی ممکنہ قیمت) — اسی لیے اسے "لِیسٹ اسکوائرز" کہتے ہیں۔ -> **🧮 مجھے ریاضی دکھائیں** -> -> اس لائن کو، جسے _بہترین فٹ لائن_ کہا جاتا ہے، [ایک مساوات](https://en.wikipedia.org/wiki/Simple_linear_regression) کے ذریعے ظاہر کیا جا سکتا ہے: -> +> **🧮 مجھے ریاضی دکھائیں** +> +> یہ لائن، جسے _بہترین فٹ لائن_ کہتے ہیں، [ایک مساوات](https://en.wikipedia.org/wiki/Simple_linear_regression) سے ظاہر کی جا سکتی ہے: +> > ``` > Y = a + bX > ``` > -> `X` وضاحتی متغیر ہے۔ `Y` منحصر متغیر ہے۔ لائن کی ڈھلوان `b` ہے اور `a` y-قاطع ہے، جو اس قدر کی وضاحت کرتا ہے جب `X = 0` ہو۔ +> `X` 'وضاحتی متغیر' ہے۔ `Y` 'تابع متغیر' ہے۔ لائن کی ڈھلوان `b` ہے اور `a` y-انٹرسیپٹ ہے، جو اس وقت `Y` کی قیمت ظاہر کرتا ہے جب `X = 0` ہو۔ > >![ڈھلوان کا حساب لگائیں](../../../../translated_images/ur/slope.f3c9d5910ddbfcf9.webp) > -> سب سے پہلے، ڈھلوان `b` کا حساب لگائیں۔ انفوگرافک توسط [Jen Looper](https://twitter.com/jenlooper) +> سب سے پہلے، ڈھلوان `b` کو حساب کریں۔ انفورگرافک بذریعہ [جین لوپر](https://twitter.com/jenlooper) > -> دوسرے الفاظ میں، اور ہمارے کدو کے ڈیٹا کے آغاز کے سوال کی طرف اشارہ کرتے ہوئے: "ہر ماہ فی بوشل کدو کی قیمت کی پیش گوئی کریں"، `X` قیمت کی طرف اشارہ کرے گا اور `Y` فروخت کے مہینے کی طرف۔ +> دوسرے الفاظ میں، اور ہمارے کدو کے ڈیٹا کے اصل سوال کی طرف اشارہ کرتے ہوئے: "مہینے کے حساب سے فی بشل کدو کی قیمت کی پیشنگوئی کریں"، `X` قیمت کی نمائندگی کرے گا اور `Y` فروخت کے مہینے کی نمائندگی کرے گا۔ > >![مساوات مکمل کریں](../../../../translated_images/ur/calculation.a209813050a1ddb1.webp) > -> Y کی قدر کا حساب لگائیں۔ اگر آپ تقریباً $4 ادا کر رہے ہیں، تو ضرور اپریل ہوگا! انفوگرافک توسط [Jen Looper](https://twitter.com/jenlooper) +> Y کی قیمت کا حساب لگائیں۔ اگر آپ تقریباً $4 ادا کر رہے ہیں، تو یہ یقیناً اپریل ہونا چاہیے! انفورگرافک بذریعہ [جین لوپر](https://twitter.com/jenlooper) > -> وہ ریاضی جو لائن کا حساب لگاتی ہے، لائن کی ڈھلوان کو ظاہر کرتی ہے، جو اس قطعۂ حاصل ضرب پر بھی منحصر ہے، یا جہاں `Y` واقع ہوتا ہے جب `X = 0`۔ +> لائن کا حساب لگانے کے لیے ریاضیات کو ڈھلوان دکھانا چاہیے، جو انٹرسپٹ پر بھی منحصر ہے، یعنی جہاں `Y` اس وقت ہوتا ہے جب `X = 0`۔ > -> آپ اس حساب کا طریقہ کار [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ویب سائٹ پر بھی دیکھ سکتے ہیں۔ اس کے علاوہ، [یہ Least-squares کیلکولیٹر](https://www.mathsisfun.com/data/least-squares-calculator.html) ملاحظہ کریں تاکہ دیکھیں کہ اعداد کی قدر لائن کو کیسے متاثر کرتی ہے۔ +> آپ ان اقدار کے حساب کے طریقہ کار کو [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ویب سائٹ پر دیکھ سکتے ہیں۔ مزید برآں، [یہ لِیسٹ-اسکوائرز کیلکولیٹر](https://www.mathsisfun.com/data/least-squares-calculator.html) وزٹ کریں تاکہ دیکھیے کہ اعداد کی قیمتیں لائن کو کیسے متاثر کرتی ہیں۔ -## ربط +## تعلق -ایک اور اصطلاح جو سمجھنی ضروری ہے وہ ہے **ربط کا گتانک** جو دیے گئے X اور Y متغیرات کے درمیان ہوتا ہے۔ اس کو اسکیٹر پلاٹ کے ذریعے جلدی سمجھا جا سکتا ہے۔ اگر نقاط قطار میں سیدھے ہوتے ہیں تو ربط زیادہ ہوگا، اور اگر نقاط ہر جگہ منتشر ہوں تو ربط کم ہوگا۔ +ایک اور اصطلاح جسے سمجھنا ضروری ہے وہ ہے دیے گئے X اور Y متغیرات کے درمیان **تعلق کا کوفی شینٹ**۔ سکریٹر پلاٹ کے ذریعے آپ اس کوفی شینٹ کو جلدی سے دیکھ سکتے ہیں۔ ایک ایسا پلاٹ جس میں ڈیٹا پوائنٹس ایک صاف لائن میں بکھرے ہوتے ہیں تعلق زیادہ ہوتا ہے، لیکن ایک ایسا پلاٹ جس میں ڈیٹا پوائنٹس X اور Y کے درمیان ہر جگہ بکھرے ہوں تعلق کم ہوتا ہے۔ -ایک اچھا لکیری ریگریشن ماڈل وہی ہوگا جس کا ربط درصد (0 کے مقابلے میں 1 کے نزدیک) زیادہ ہو، اور جسے Least-Squares Regression طریقہ استعمال کرتے ہوئے ریگریشن لائن کے ساتھ بنایا گیا ہو۔ +ایک اچھا لینیئر ریگریشن ماڈل وہ ہوگا جس کا تعلق کا کوفی شینٹ (0 کے مقابلے میں 1 کے قریب تر) زیادہ ہو، اور وہ لِیسٹ اسکوائرز ریگریشن کے تحت ریگریشن لائن کے ساتھ ہو۔ -✅ اس سبق کے ساتھ آنے والی نوٹ بک چلائیں اور Month to Price اسکیٹر پلاٹ دیکھیں۔ کیا آپ کے خیال میں مہینے اور کدو کی قیمت کے درمیان ربط زیادہ ہے یا کم، آپ کی بصری تعبیر کے مطابق؟ کیا یہ بدلتا ہے اگر آپ `Month` کی بجائے زیادہ باریک پیمائش استعمال کریں، مثلاً *سال کا دن* (یعنی سال کے آغاز سے دنوں کی تعداد)؟ +✅ اس سبق کے ساتھ دی گئی نوٹ بک چلائیں اور ماہ سے قیمت کے سکریٹر پلاٹ کو دیکھیں۔ آپ کی نظر میں ماہ سے قیمت کے تعلق کی کتنی شدت ہے، یہ آپ کی بصری تشریح کے مطابق کیا تعلق زیادہ ہے یا کم؟ کیا یہ بدلتا ہے اگر آپ زیادہ باریک پیمانے مثلاً _سال کا دن_ (یعنی سال کے آغاز سے گزرے دنوں کی تعداد) استعمال کریں؟ -نیچے دیے گئے کوڈ میں، ہم فرض کریں گے کہ ہم نے ڈیٹا کو صاف کر لیا ہے، اور ایک ڈیٹافریم حاصل کیا ہے جسے `new_pumpkins` کہا گیا ہے، جیسا کہ درج ذیل: +ذیل میں کوڈ میں فرض کرتے ہیں کہ ہم نے ڈیٹا صاف کر لیا ہے، اور ایک ڈیٹا فریم `new_pumpkins` حاصل کیا ہے، جو درج ذیل کی مماثل ہے: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> ڈیٹا صاف کرنے کا کوڈ [`notebook.ipynb`](notebook.ipynb) میں دستیاب ہے۔ ہم نے پچھلے سبق کی طرح صفائی کے اقدامات کیے ہیں، اور `DayOfYear` کالم نچے دیے گئے اظہار کے ذریعے حساب کیا ہے: +> ڈیٹا صاف کرنے کا کوڈ [`notebook.ipynb`](notebook.ipynb) میں دستیاب ہے۔ ہم نے پچھلے سبق کی طرح یہی صفائی کے اقدامات کیے ہیں، اور `DayOfYear` کالم کو درج ذیل اظہار سے حساب کیا ہے: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -اب جب کہ آپ کو لکیری ریگریشن کے پیچھے کے ریاضی کا فہم حاصل ہے، آئیے ایک ریگریشن ماڈل بنائیں تاکہ دیکھ سکیں کہ آیا ہم پیش گوئی کر سکتے ہیں کہ کدو کے کون سے پیکج کی قیمت سب سے اچھی ہوگی۔ کوئی جو تعطیلات کے لیے کدو خرید رہا ہو، وہ اس معلومات کو حاصل کرنا چاہے گا تاکہ اپنے آرڈر کو بہتر بنا سکے۔ +اب جبکہ آپ کو لینیئر ریگریشن کے پیچھے ریاضی کی سمجھ ہے، آئیں ایک ریگریشن ماڈل بنائیں تاکہ دیکھ سکیں کہ ہم پیش گوئی کر سکتے ہیں کہ کس کدو کے پیکیج کی قیمت سب سے بہتر ہوگی۔ کوئی جو تعطیلات کے کدو کی پیٹیچ کے لیے کدو خرید رہا ہو، اسے یہ معلومات اپنی خریداری کو بہتر بنانے کے لیے فائدہ دے سکتی ہے۔ -## ربط کی تلاش +## تعلق کی تلاش -[![مشین لرننگ مبتدیوں کے لیے - ربط کی تلاش: لکیری ریگریشن کی کنجی](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "مشین لرننگ مبتدیوں کے لیے - ربط کی تلاش: لکیری ریگریشن کی کنجی") +[![مشق کے لیے مشین لرننگ - تعلق کی تلاش: لینیئر ریگریشن کی کنجی](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "مشق کے لیے مشین لرننگ - تعلق کی تلاش: لینیئر ریگریشن کی کنجی") -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ ربط کا مختصر ویڈیو جائزہ دیکھ سکیں۔ +> 🎥 اوپر تصویر پر کلک کریں تعلق کے بارے میں مختصر ویڈیو جائزہ کے لیے۔ -پچھلے سبق میں آپ نے شاید دیکھا ہو کہ مختلف مہینوں کی اوسط قیمت کچھ یوں دکھائی دیتی ہے: +پچھلے سبق میں آپ نے شاید دیکھا ہوگا کہ مختلف مہینوں کے لیے اوسط قیمت اس طرح نظر آتی ہے: -مہینوں کے مطابق اوسط قیمت +مہینے کے اعتبار سے اوسط قیمت -یہ ظاہر کرتا ہے کہ یہاں ربط موجود ہونا چاہیے، اور ہم کوشش کر سکتے ہیں کہ لکیری ریگریشن ماڈل تیار کریں تاکہ `Month` اور `Price` کے درمیان یا `DayOfYear` اور `Price` کے درمیان تعلق کی پیش گوئی کریں۔ یہ اسکیٹر پلاٹ دکھاتا ہے جو بعد والے تعلق کو ظاہر کرتا ہے: +یہ اشارہ دیتا ہے کہ کوئی تعلق ہونا چاہیے، اور ہم لینیئر ریگریشن ماڈل کی تربیت کر کے `Month` اور `Price` یا `DayOfYear` اور `Price` کے درمیان تعلق پیش گوئی کر سکتے ہیں۔ ذیل میں وہ سکریٹر پلاٹ ہے جو بعد والے تعلق کو ظاہر کرتا ہے: -قیمت بمقابلہ دنِ سال کا اسکیٹر پلاٹ +قیمت بمقابلہ سال کا دن کا سکریٹر پلاٹ -آئیے `corr` فنکشن استعمال کرکے دیکھتے ہیں کہ ربط کیا ہے: +آئیے `corr` فنکشن کا استعمال کر کے دیکھتے ہیں کیا تعلق ہے: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -ایسا لگتا ہے کہ ربط تھوڑا کم ہے، مہینے کے لیے -0.15 اور دنِ مہینے کے لیے -0.17، لیکن ایک اور اہم تعلق ممکن ہے۔ ایسا لگتا ہے کہ قیمتوں کے مختلف کلسٹرز مختلف کدو کی اقسام سے متعلق ہیں۔ اس مفروضے کی تصدیق کے لیے، آئیے ہر کدو کی قسم کو مختلف رنگ میں پلاٹ کریں۔ `scatter` فنکشن کو `ax` پیرامیٹر دینے سے ہم تمام نقاط ایک ہی گراف پر دکھا سکتے ہیں: +دیکھتے ہیں تعلق نسبتا چھوٹا ہے، -0.15 `Month` کے لحاظ سے اور -0.17 `DayOfYear` کے لحاظ سے، لیکن ایک اور اہم تعلق ہو سکتا ہے۔ ایسا لگتا ہے کہ قیمتوں کے مختلف گروہ مختلف کدو کی اقسام سے متعلق ہیں۔ اس مفروضے کی تصدیق کے لیے، آئیے ہر کدو کی قسم کو مختلف رنگ سے پلاٹ کریں۔ `scatter` فنکشن کو ایک `ax` پیرا میٹر دے کر ہم تمام پوائنٹس کو ایک ہی گراف پر پلاٹ کر سکتے ہیں: ```python ax=None @@ -140,9 +140,9 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -قیمت بمقابلہ دنِ سال کا رنگین اسکیٹر پلاٹ +قیمت بمقابلہ سال کے دن کا سکریٹر پلاٹ (رنگ کے ساتھ) -ہماری تفتیش بتاتی ہے کہ مختلف اقسام کا مجموعی قیمت پر زیادہ اثر ہے بجائے اصلی فروخت کی تاریخ کے۔ ہم اس کو بار گراف سے دیکھ سکتے ہیں: +ہماری تحقیق سے ظاہر ہوتا ہے کہ مجموعی قیمت پر چیز کی قسم کا زیادہ اثر ہوتا ہے بنسبت اصل فروخت کی تاریخ کے۔ ہم اسے بار گراف کے ذریعے بھی دیکھ سکتے ہیں: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') @@ -150,32 +150,32 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') قسم کے مقابلے قیمت کا بار گراف -آئیے اس لمحے صرف ایک کدو کی قسم، 'pie type' پر توجہ دیں اور دیکھیں کہ تاریخ کا قیمت پر کیا اثر ہے: +چند لمحے کے لیے ہم صرف ایک کدو کی قسم، 'پائی ٹائپ' پر توجہ مرکوز کرتے ہیں، اور دیکھتے ہیں کہ تاریخ کا قیمت پر کیا اثر ہے: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -قیمت بمقابلہ دنِ سال کا اسکیٹر پلاٹ +قیمت بمقابلہ سال کے دن کا سکریٹر پلاٹ -اگر ہم اب `corr` فنکشن استعمال کرکے `Price` اور `DayOfYear` کے درمیان ربط کا حساب لگائیں تو ہمیں تقریباً `-0.27` ملے گا—جوبتاتا ہے کہ پیش گوئی کرنے والا ماڈل تربیت دینا معقول ہے۔ +اگر ہم اب `Price` اور `DayOfYear` کے درمیان تعلق `corr` فنکشن کے ذریعے نکالیں، تو ہمیں کچھ ایسا ملے گا: `-0.27` — جس کا مطلب ہے کہ پیش گو ماڈل کی تربیت مفید ہے۔ -> لکیری ریگریشن ماڈل تربیت دینے سے پہلے، یہ ضروری ہے کہ ہمارا ڈیٹا صاف ہو۔ لکیری ریگریشن خالی اقدار کے ساتھ بہتر کام نہیں کرتی، لہٰذا تمام خالی جگہوں کو دور کرنا منطقی ہے: +> لینیئر ریگریشن ماڈل کو تربیت دینے سے پہلے، یہ ضروری ہے کہ ہمارا ڈیٹا صاف ہو۔ لینیئر ریگریشن گمشدہ اقدار کے ساتھ اچھا کام نہیں کرتا، اس لیے تمام خالی سیلز کو ہٹانا مناسب ہے: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -ایک اور طریقہ یہ ہوگا کہ ان خالی اقدار کو متعلقہ کالم کی اوسط قیمت سے بھر دیا جائے۔ +دوسری حکمت عملی یہ ہو سکتی ہے کہ ان خالی اقدار کو متعلقہ کالم کے اوسط سے بھر دیا جائے۔ -## سادہ لکیری ریگریشن +## سادہ لینیئر ریگریشن -[![مشین لرننگ مبتدیوں کے لیے - Scikit-learn استعمال کرتے ہوئے لکیری اور کثیر رکنی ریگریشن](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "مشین لرننگ مبتدیوں کے لیے - Scikit-learn استعمال کرتے ہوئے لکیری اور کثیر رکنی ریگریشن") +[![مشق کے لیے مشین لرننگ - سکائیکیٹ لرن کا استعمال کرتے ہوئے لینیئر اور پولینومیئل ریگریشن](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "مشق کے لیے مشین لرننگ - سکائیکیٹ لرن کا استعمال کرتے ہوئے لینیئر اور پولینومیئل ریگریشن") -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ لکیری اور کثیر رکنی ریگریشن کا مختصر ویڈیو جائزہ دیکھ سکیں۔ +> 🎥 اوپر تصویر پر کلک کریں لینیئر اور پولینومیئل ریگریشن کے بارے میں مختصر ویڈیو جائزہ کے لیے۔ -ہم اپنے لکیری ریگریشن ماڈل کو تربیت دینے کے لیے **Scikit-learn** لائبریری استعمال کریں گے۔ +اپنے لینیئر ریگریشن ماڈل کی تربیت کے لیے، ہم **سکائیکیٹ لرن** لائبریری استعمال کریں گے۔ ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -ہم انپٹ ویلیوز (خصوصیات) اور متوقع آؤٹ پٹ (لیبل) کو الگ الگ numpy ارریوں میں تقسیم کرنا شروع کرتے ہیں: +ہم انپٹ ویلیوز (خصوصیات) اور متوقع آؤٹ پٹ (لیبل) کو الگ الگ numpy ارے میں تقسیم کرتے ہیں: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> نوٹ کریں کہ ہمیں اپنے انپٹ ڈیٹا پر `reshape` کرنا پڑا تاکہ لکیری ریگریشن پیکیج اسے صحیح طور پر سمجھ سکے۔ لکیری ریگریشن 2D ارری کو بطور انپٹ توقع کرتا ہے، جہاں ارری کی ہر صف انپٹ خصوصیات کے ویکٹر کے برابر ہو۔ ہمارے کیس میں، چونکہ صرف ایک انپٹ ہے، ہمیں N×1 اشکال کی ارری چاہیے جہاں N ڈیٹا سیٹ کی تعداد ہے۔ +> نوٹ کریں کہ ہمیں انپٹ ڈیٹا پر `reshape` کرنا پڑا تاکہ لینیئر ریگریشن پیکیج اسے صحیح طریقے سے سمجھے۔ لینیئر ریگریشن 2D-ارے کی توقع کرتی ہے جس میں ہر قطار انپٹ فیچرز کے ویکٹر کے مساوی ہو۔ چونکہ ہمارے پاس صرف ایک انپٹ ہے، ہمیں N×1 شیپ والا ارے چاہیے، جہاں N ڈیٹا سیٹ کا سائز ہو۔ -پھر، ہمیں ڈیٹا کو تربیتی اور جانچ ڈیٹا سیٹ میں تقسیم کرنا چاہیے، تاکہ تربیت کے بعد ہم اپنے ماڈل کی توثیق کر سکیں: +پھر، ہمیں ڈیٹا کو ٹرین اور ٹیسٹ ڈیٹا سیٹس میں تقسیم کرنا ہوگا تاکہ ہم تربیت کے بعد اپنے ماڈل کی تصدیق کر سکیں: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -آخر میں، اصل لکیری ریگریشن ماڈل کی تربیت صرف دو لائنوں کوڈ میں ہوتی ہے۔ ہم `LinearRegression` آبجیکٹ کو تعریف کرتے ہیں، اور اسے `fit` طریقہ سے اپنے ڈیٹا پر فٹ کرتے ہیں: +آخر میں، اصلی لینیئر ریگریشن ماڈل کی تربیت صرف دو لائنوں کوڈ کی ضرورت ہے۔ ہم `LinearRegression` آبجیکٹ بناتے ہیں، اور `fit` طریقہ کار کے ذریعے اسے اپنے ڈیٹا پر فٹ کرتے ہیں: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` آبجیکٹ `fit` کرنے کے بعد ریگریشن کے تمام کو efficient coefficients رکھتا ہے، جن تک `.coef_` پراپرٹی کے ذریعے رسائی حاصل کی جا سکتی ہے۔ ہمارے کیس میں صرف ایک coefficient ہے، جو تقریباً `-0.017` ہونا چاہیے۔ اس کا مطلب ہے کہ قیمتیں وقت کے ساتھ تھوڑی سی کم ہوتی نظر آتی ہیں، لیکن زیادہ نہیں، تقریباً دو سینٹ فی دن۔ ہم ریگریشن کے Y-محور سے انٹرسیکشن پوائنٹ بھی `lin_reg.intercept_` کے ذریعے حاصل کر سکتے ہیں - جو ہمارے کیس میں تقریباً `21` ہوگا، جو سال کے شروع کے وقت کی قیمت کی نشاندہی کرتا ہے۔ +`LinearRegression` آبجیکٹ جو کہ `fit` کرنے کے بعد ہوتا ہے، اس میں تمام رگریشن کے کوفیشینٹس شامل ہوتے ہیں، جن تک `.coef_` پراپرٹی کے ذریعے رسائی حاصل کی جا سکتی ہے۔ ہمارے کیس میں، صرف ایک کوفیشینٹ ہے، جو تقریباً `-0.017` ہونا چاہیے۔ اس کا مطلب ہے کہ قیمتیں وقت کے ساتھ تھوڑا سا کم ہوتی نظر آتی ہیں، لیکن زیادہ نہیں، روزانہ تقریباً 2 سینٹ کی کمی۔ ہم رگریشن کے تخصیص نقطہ کو Y- محور کے ساتھ `lin_reg.intercept_` کے ذریعے بھی حاصل کر سکتے ہیں — یہ ہمارے کیس میں تقریباً `21` ہوگا، جو سال کے شروع میں قیمت کی نشاندہی کرتا ہے۔ -یہ جاننے کے لیے کہ ہمارا ماڈل کتنا درست ہے، ہم ٹیسٹ ڈیٹاسیٹ پر قیمتوں کا اندازہ لگا سکتے ہیں، اور پھر دیکھ سکتے ہیں کہ ہماری پیشن گوئی متوقع قدروں سے کتنی قریب ہے۔ یہ rms (root mean square error) میٹرکس کے ذریعے کیا جا سکتا ہے، جو کہ تمام متوقع اور پیشن گوئی شدہ قدروں کے درمیان تمام مربع فرقوں کے وسط کی جذر ہے۔ +یہ دیکھنے کے لیے کہ ہمارا ماڈل کتنا درست ہے، ہم ٹیسٹ ڈیٹا سیٹ پر قیمتوں کی پیش گوئی کر سکتے ہیں، اور پھر دیکھ سکتے ہیں کہ ہماری پیش گوئیاں متوقع اقدار کے کتنی قریب ہیں۔ یہ کام روٹ مین اسکوائر ایرر (RMSE) میٹرک کے ذریعے کیا جا سکتا ہے، جو متوقع اور پیش گو کردہ قدر کے درمیان تمام مربع فرقوں کا اوسط لے کر اس کی جذر ہے۔ ```python pred = lin_reg.predict(X_test) @@ -215,38 +215,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -ہمارا error تقریباً 2 پوائنٹس کے آس پاس ہے، جو کہ ~17% ہے۔ زیادہ اچھا نہیں۔ ماڈل کے معیار کی ایک اور نشانی **coefficient of determination** ہے، جو اس طرح حاصل کی جا سکتی ہے: + +ہمارا ایرر تقریباً 2 پوائنٹس کے قریب ہے، جو کہ تقریباً 17% ہے۔ یہ زیادہ اچھا نہیں۔ ماڈل کے معیار کا ایک اور اشارہ **coefficient of determination** ہوتا ہے، جو اس طرح حاصل کیا جا سکتا ہے: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - -اگر قیمت 0 ہو، تو اس کا مطلب ہے کہ ماڈل ان پٹ ڈیٹا کو مدنظر نہیں رکھتا، اور *بدترین خطی پیشگو* کے طور پر کام کرتا ہے، جو صرف نتیجہ کا اوسط ویلیو ہوتا ہے۔ قیمت 1 کا مطلب ہے کہ ہم تمام متوقع نتائج کو مکمل طور پر پیش گوئی کر سکتے ہیں۔ ہمارے کیس میں، coefficient تقریباً 0.06 ہے، جو کہ کافی کم ہے۔ -ہم ٹیسٹ ڈیٹا کو ریگریشن لائن کے ساتھ بھی پلاٹ کر سکتے ہیں تاکہ دیکھ سکیں کہ ہمارے کیس میں ریگریشن کس طرح کام کرتی ہے: +اگر اس کی قیمت 0 ہو، تو اس کا مطلب ہے کہ ماڈل ان پٹ ڈیٹا کو مدنظر نہیں رکھتا، اور *worst linear predictor* کے طور پر کام کرتا ہے، جو بس نتیجہ کا اوسط ہوتا ہے۔ قیمت 1 ہونے کا مطلب ہے کہ ہم تمام متوقع آؤٹ پٹ کو بالکل صحیح پیش گوئی کر سکتے ہیں۔ ہمارے کیس میں، کوفیشینٹ تقریباً 0.06 ہے، جو کہ بہت کم ہے۔ + +ہم ٹیسٹ ڈیٹا کو رگریشن لائن کے ساتھ پلاٹ بھی کر سکتے ہیں تاکہ بہتر طور پر دیکھ سکیں کہ ہمارے کیس میں رگریشن کس طرح کام کرتی ہے: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - + Linear regression -## پولینومیل ریگریشن +## پولینومیئل رگریشن -ریگریشن کی ایک اور قسم پولینومیل ریگریشن ہے۔ جب کبھی متغیرات کے درمیان خطی تعلق ہوتا ہے — جیسے جتنا زیادہ کدو حجم میں ہو، قیمت بھی زیادہ ہو — بعض اوقات یہ تعلقات سیدھی لائن یا سطح کی حیثیت سے ظاہر نہیں کیے جا سکتے۔ +لکیری رگریشن کی ایک قسم پولینومیئل رگریشن ہے۔ جہاں کبھی کبھار متغیرات کے درمیان لکیری تعلق ہوتا ہے — جتنا بڑا کدو حجم میں ہو، اتنی زیادہ قیمت — وہاں یہ تعلقات ہمیشہ ایک ہموار سطح یا سیدھی لائن کی صورت میں ہونے لازمی نہیں ہیں۔ -✅ یہاں [کچھ مزید مثالیں](https://online.stat.psu.edu/stat501/lesson/9/9.8) ہیں جو پولینومیل ریگریشن استعمال کر سکتی ہیں۔ +✅ یہاں [کچھ دیگر مثالیں](https://online.stat.psu.edu/stat501/lesson/9/9.8) دی گئی ہیں جو پولینومیئل رگریشن استعمال کر سکتی ہیں -ایک بار پھر تاریخ اور قیمت کے درمیان تعلق کو دیکھیں۔ کیا یہ سکریٹرپلٹ لازمی سیدھی لائن سے تجزیہ ہونا چاہیے؟ کیا قیمتیں اُتار چڑھاؤ نہیں کر سکتیں؟ اس صورت میں، آپ پولینومیل ریگریشن آزما سکتے ہیں۔ +تاریخ اور قیمت کے تعلق پر دوبارہ نظر ڈالیں۔ کیا یہ اسکیٹر پلاٹ لازمی طور پر ایک سیدھی لائن سے تجزیہ ہونا چاہیے؟ کیا قیمتوں میں اتار چڑھاؤ نہیں ہو سکتا؟ اس صورت میں، آپ پولینومیئل رگریشن آزما سکتے ہیں۔ -✅ پولینومیلز ریاضی کے بیانات ہوتے ہیں جو ایک یا زیادہ متغیرات اور coefficients پر مشتمل ہو سکتے ہیں۔ +✅ پولینومیلز ریاضیاتی اظہار ہوتے ہیں جو ایک یا زیادہ متغیرات اور کوفیشینٹس پر مشتمل ہو سکتے ہیں -پولینومیل ریگریشن ایک خمیدہ لائن بناتی ہے تاکہ غیر خطی ڈیٹا کو بہتر فٹ کیا جا سکے۔ ہمارے کیس میں، اگر ہم ان پٹ ڈیٹا میں `DayOfYear` کا مربع شامل کریں، تو ہمیں ایک پیرا بولک منحنی کا فٹ کرنا چاہیے، جس کا کم از کم نقطہ سال کے درمیان ہوگا۔ +پولینومیئل رگریشن نان لکیری ڈیٹا کے بہتر فٹ کے لیے ایک مڑھی ہوئی لائن بناتی ہے۔ ہمارے کیس میں، اگر ہم ان پٹ ڈیٹا میں مربع شدہ `DayOfYear` متغیر کو شامل کریں، تو ہم اپنے ڈیٹا کو ایک پیرا بولا کرف کے ساتھ فٹ کر سکیں گے، جس کی ایک مخصوص پوائنٹ پر سال کے دوران کم از کم قیمت ہوگی۔ -Scikit-learn میں ایک مفید [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) شامل ہے جو مختلف ڈیٹا پروسیسنگ کے مراحل کو یکجا کرتا ہے۔ **پائپ لائن** estimators کی ایک چین ہے۔ ہمارے کیس میں، ہم ایک پائپ لائن بنائیں گے جو پہلے پولینومیل فیچرز کو ہمارے ماڈل میں شامل کرے گا، اور پھر ریگریشن کو ٹرین کرے گا: +سکائیکٹ-لرن ایک مفید [پائپ لائن API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) فراہم کرتا ہے تاکہ ڈیٹا پروسیسنگ کے مختلف مراحل کو ایک ساتھ جوڑا جا سکے۔ **پائپ لائن** مختلف **Estimator** کا سلسلہ ہوتی ہے۔ ہمارے کیس میں، ہم ایسی پائپ لائن بنائیں گے جو پہلے پولینومیئل فیچرز ماڈل میں شامل کرے، اور پھر رگریشن کو ٹرین کرے: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,61 +256,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` - -`PolynomialFeatures(2)` کے استعمال کا مطلب ہے کہ ہم ان پٹ ڈیٹا سے تمام دوسرے درجے کے پولینومیل شامل کریں گے۔ ہمارے کیس میں یہ صرف `DayOfYear`² ہوگا، لیکن اگر دو ان پٹ ویریبلز X اور Y ہوں، تو یہ X²، XY اور Y² شامل کرے گا۔ ہم اگر چاہیں تو زیادہ درجے کے پولینومیل بھی استعمال کر سکتے ہیں۔ -پائپ لائنز کو اسی طرح استعمال کیا جا سکتا ہے جیسے `LinearRegression` آبجیکٹ، یعنی ہم پائپ لائن کو `fit` کر سکتے ہیں، اور پھر `predict` سے پیش گوئی حاصل کر سکتے ہیں۔ یہاں ایک گراف ہے جو ٹیسٹ ڈیٹا اور اندازہ شدہ منحنی دکھاتا ہے: +`PolynomialFeatures(2)` استعمال کرنے کا مطلب ہے کہ ہم ان پٹ ڈیٹا کے تمام دوم درجے کے پولینومیلز شامل کریں گے۔ ہمارے کیس میں یہ صرف `DayOfYear`2 ہوگا، لیکن اگر دو ان پٹ متغیرات X اور Y ہوں، تو یہ X2، XY اور Y2 شامل کرے گا۔ ہم اعلیٰ درجے کے پولینومیلز بھی استعمال کر سکتے ہیں اگر چاہیں۔ + +پائپ لائنز کو اصل `LinearRegression` آبجیکٹ کی طرح استعمال کیا جا سکتا ہے، یعنی ہم پائپ لائن کو `fit` کر سکتے ہیں، اور پھر `predict` سے پیش گوئی کے نتائج حاصل کر سکتے ہیں: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +سموتھ اپروکسیمیشن کرف کو پلاٹ کرنے کے لیے، ہم `np.linspace` استعمال کرتے ہیں تاکہ ان پٹ قدروں کی یکساں رینج بنائی جائے، بجائے اس کے کہ بےترتیب ٹیسٹ ڈیٹا پر براہ راست پلاٹنگ کریں (جو جگزگ لائن پیدا کرتا): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +یہاں گراف ہے جو ٹیسٹ ڈیٹا اور اپروکسیمیشن کرف دکھاتا ہے: Polynomial regression -پولینومیل ریگریشن سے ہمیں تھوڑا سا کم MSE اور زیادہ determination ملتا ہے، لیکن نمایاں طور پر نہیں۔ ہمیں دیگر فیچرز کو بھی مدنظر لینا ہوگا! +پولینومیئل رگریشن استعمال کرتے ہوئے، ہم کچھ کم RMSE اور زیادہ determination حاصل کر سکتے ہیں، لیکن خاص فرق نہیں۔ ہمیں دیگر فیچرز کو بھی مدنظر رکھنا ہوگا! -> آپ دیکھ سکتے ہیں کہ کم سے کم کدو کی قیمتیں ہالووین کے آس پاس دیکھی جاتی ہیں۔ آپ اس کی وضاحت کیسے کریں گے؟ +> آپ دیکھ سکتے ہیں کہ سب سے کم کدو کی قیمتیں تقریباً ہالووین کے قریب دیکھی جاتی ہیں۔ آپ اسے کیسے سمجھائیں گے؟ -🎃 مبارک ہو، آپ نے ابھی ایک ماڈل بنایا ہے جو کدو کی قیمت پیش گوئی کرنے میں مدد دے سکتا ہے۔ آپ شاید یہی طریقہ کار تمام کدو کی اقسام کے لیے دہرائیں، لیکن یہ بہت تھکا دینے والا ہوگا۔ اب سیکھتے ہیں کہ اپنے ماڈل میں کدو کی اقسام کو کیسے شامل کریں! +🎃 مبارک ہو، آپ نے ایک ایسا ماڈل بنایا ہے جو پائی کدو کی قیمت پیش کرنے میں مدد کر سکتا ہے۔ شاید آپ یہ عمل تمام کدو کی اقسام کے لیے دہرا سکتے ہیں، لیکن یہ تھوڑا مشکل ہوگا۔ اب سیکھتے ہیں کہ کس طرح اپنے ماڈل میں کدو کی قسم کو مدنظر رکھیں! -## زمرہ بندی شدہ خصوصیات +## زمرہ وار فیچرز -آئیڈیل دنیا میں، ہم ایک ہی ماڈل استعمال کر کے مختلف کدو کی اقسام کی قیمتیں پیش گوئی کرنا چاہتے ہیں۔ تاہم، `Variety` کالم `Month` جیسے کالموں سے مختلف ہے کیونکہ اس میں غیر عددی قدریں ہوتی ہیں۔ ایسے کالمز کو **زمرہ بندی شدہ** (categorical) کہا جاتا ہے۔ +ایک مثالی دنیا میں، ہم چاہتے ہیں کہ مختلف کدو کی اقسام کی قیمتیں ایک ہی ماڈل سے پیش کی جا سکیں۔ تاہم، `Variety` کالم کچھ مختلف ہے جیسے کہ `Month` کالم، کیونکہ اس میں عددی نہیں بلکہ غیر عددی اقدار ہوتی ہیں۔ ایسے کالمز کو **categorical** کہا جاتا ہے۔ [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 اوپر موجود تصویر پر کلک کریں زمرہ بندی شدہ فیچرز کے استعمال پر مختصر ویڈیو کے لیے۔ +> 🎥 اوپر کی تصویر پر کلک کریں تاکہ categorical فیچرز کے استعمال کا مختصر ویڈیو جائزہ دیکھا جا سکے۔ -یہاں ہم دیکھ سکتے ہیں کہ اوسط قیمت قسم پر کس طرح منحصر ہے: +یہاں دکھایا گیا ہے کہ اوسط قیمت قسم کے لحاظ سے کس طرح ہے: Average price by variety -قسم کو مدنظر رکھنے کے لیے، سب سے پہلے ہمیں اس کو عددی شکل میں تبدیل کرنا پڑے گا، یعنی **انکوڈ** کرنا ہوگا۔ اس کے لیے کئی طریقے ہیں: +قسم کو مدنظر رکھنے کے لیے، سب سے پہلے ہمیں اسے عددی شکل میں تبدیل یا **encode** کرنا ہوگا۔ ہم اس کے کئی طریقے استعمال کر سکتے ہیں: -* سادہ **نو مریکی انکوڈنگ** مختلف اقسام کی ایک ٹیبل بنائے گی، اور پھر قسم کے نام کو اس ٹیبل میں انڈیکس سے تبدیل کر دے گی۔ یہ لائنیر ریگریشن کے لیے بہترین طریقہ نہیں ہے، کیونکہ لائنیر ریگریشن اس انڈیکس کی عددی قیمت لے کر اسے کسی coefficient کے ساتھ ضرب دے کر نتیجہ میں شامل کرتی ہے۔ ہمارے کیس میں، انڈیکس نمبر اور قیمت کے تعلق کا تعلق واضح طور پر غیر خطی ہے، چاہے ہم انڈیکس کو مخصوص ترتیب دیں۔ -* **ون-ہوٹ انکوڈنگ** `Variety` کالم کی جگہ چار مختلف کالم بنائے گی، ہر قسم کے لیے ایک۔ ہر کالم میں 1 تب ہوگا جب متعلقہ قطار اس قسم کی ہو، ورنہ 0 ہوگا۔ اس کا مطلب ہے کہ لائنیر ریگریشن میں چار coefficients ہوں گے، ہر کدو کی قسم کے لیے، جو اس خاص قسم کی "ابتدائی قیمت" (یا "اضافی قیمت") کی نمائندگی کریں گے۔ +* سادہ **numeric encoding** مختلف قسموں کی ایک ٹیبل بنائے گا، اور پھر قسم کے نام کی جگہ ٹیبل میں اس کا انڈیکس لگا دے گا۔ یہ لکیری رگریشن کے لیے بہترین طریقہ نہیں کیونکہ لکیری رگریشن انڈیکس کی اصل عددی قیمت لیتا ہے اور اسے نتیجہ میں کچھ کوفیشینٹ سے ضرب دے کر شامل کرتا ہے۔ ہمارے کیس میں، انڈیکس نمبر اور قیمت کے درمیان تعلق واضح طور پر غیر لکیری ہے، چاہے انڈیکس کسی مخصوص ترتیب میں ہی ہوں۔ +* **One-hot encoding** `Variety` کالم کی جگہ 4 مختلف کالم ڈالے گا، ہر قسم کے لیے ایک۔ ہر کالم میں وہی قطار ہوگی جس میں متعلقہ قسم کی موجودگی 1 ہوگی اور بقیہ 0۔ اس کا مطلب ہے کہ لکیری رگریشن میں چار کوفیشینٹس ہوں گے، ہر کدو کی قسم کے لیے ایک، جو اس خاص قسم کی "ابتدائی قیمت" (یا اضافی قیمت) کی نمائندگی کرے گا۔ -نیچے دیا کوڈ دکھاتا ہے کہ قسم کو ون-ہوٹ انکوڈ کیسے کیا جائے: +ذیل میں کوڈ دکھاتا ہے کہ ہم کیسے قسم کو one-hot encode کر سکتے ہیں: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 - -ون-ہوٹ انکوڈ شدہ قسم کو ان پٹ کے طور پر استعمال کرتے ہوئے لائنیر ریگریشن ٹرین کرنے کے لیے، ہمیں بس `X` اور `y` ڈیٹا کو صحیح طریقے سے initialize کرنا ہوگا: + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +لکیری رگریشن کو one-hot encoded قسم کے ان پٹ کے ساتھ ٹرین کرنے کے لیے، ہمیں صرف `X` اور `y` ڈیٹا کو صحیح طریقے سے initialize کرنا ہوگا: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -باقی کوڈ اسی طرح ہے جیسا کہ ہم نے اوپر لائنیر ریگریشن کے لیے استعمال کیا تھا۔ اگر آپ اسے آزما کر دیکھیں گے تو آپ دیکھیں گے کہ mean squared error تقریباً ویسا ہی ہے، لیکن coefficient of determination بہت زیادہ (~77%) ہو جاتا ہے۔ زیادہ درست پیش گوئیاں حاصل کرنے کے لیے، ہم مزید categorical خصوصیات کے ساتھ ساتھ عددی خصوصیات، جیسے `Month` یا `DayOfYear` کو بھی شامل کر سکتے ہیں۔ فیچرز کی ایک بڑی ارے بنانے کے لیے ہم `join` استعمال کر سکتے ہیں: + +باقی کوڈ وہی ہے جو ہم نے اوپر لکیری رگریشن کو ٹرین کرنے کے لیے استعمال کیا تھا۔ اگر آپ اس کا تجربہ کریں گے، تو آپ دیکھیں گے کہ مین اسکوائر ایرر تقریباً وہی ہے، لیکن ہمیں کوفیشینٹ آف ڈٹرمنیشن بہت زیادہ ملتا ہے (~77%)۔ زیادہ درست پیش گوئیاں حاصل کرنے کے لیے، ہم مزید categorical اور عددی فیچرز جیسے `Month` یا `DayOfYear` کو مدنظر رکھ سکتے ہیں۔ سب فیچرز کو ایک بڑی array میں جمع کرنے کے لیے، ہم `join` استعمال کر سکتے ہیں: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,61 +341,61 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` - -یہاں ہم `City` اور `Package` کی اقسام بھی مدنظر لیتے ہیں، جو ہمیں MSE 2.84 (10%) اور determination 0.94 دیتی ہے! -## سب کچھ ایک ساتھ رکھنا +یہاں ہم `City` اور `Package` ٹائپ کو بھی مدنظر لیتے ہیں، جو ہمیں RMSE 2.84 (10.5%) اور determination 0.94 دیتا ہے! -بہترین ماڈل بنانے کے لیے، ہم اوپر والے مثال میں سے مشترکہ (ون-ہوٹ انکوڈ شدہ زمرہ بندی شدہ + عددی) ڈیٹا کو پولینومیل ریگریشن کے ساتھ استعمال کر سکتے ہیں۔ آپ کی سہولت کے لیے مکمل کوڈ یہاں ہے: +## سب کچھ اکٹھا کرنا + +بہترین ماڈل بنانے کے لیے، ہم اوپر دی گئی مثال سے مشترکہ (one-hot encoded categorical + numeric) ڈیٹا کو پولینومیئل رگریشن کے ساتھ استعمال کر سکتے ہیں۔ آپ کی سہولت کے لیے مکمل کوڈ یہاں ہے: ```python -# تربیتی ڈیٹا تیار کریں +# تربیتی ڈیٹا مرتب کریں X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# تربیت اور امتحان کے لیے تقسیم کریں +# تربیتی اور تجرباتی ڈیٹا تقسیم کریں X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# پائپ لائن تیار کریں اور تربیت دیں +# پائپ لائن مرتب کریں اور تربیت دیں pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ٹیسٹ ڈیٹا کے لیے نتائج کی پیش گوئی کریں +# تجرباتی ڈیٹا کے لیے نتائج کی پیش گوئی کریں pred = pipeline.predict(X_test) -# MSE اور تعیناتی کا حساب لگائیں -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE اور تعیناتی کا حساب لگائیں +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` - -یہ ہمیں تقریباً 97% کی بہترین determination coefficient دے گا، اور MSE=2.23 (~8% میں پیشگوئی کی غلطی)۔ -| ماڈل | MSE | Determination | -|-------|-----|---------------| -| `DayOfYear` خطی | 2.77 (17.2%) | 0.07 | -| `DayOfYear` پولینومیل | 2.73 (17.0%) | 0.08 | -| `Variety` خطی | 5.24 (19.7%) | 0.77 | -| تمام خصوصیات خطی | 2.84 (10.5%) | 0.94 | -| تمام خصوصیات پولینومیل | 2.23 (8.25%) | 0.97 | +یہ ہمیں تقریباً 97% determination کوفیشینٹ اور RMSE=2.23 (~8% پیش گوئی کی غلطی) دے گا۔ + +| ماڈل | RMSE | Determination | +|-------|-----|---------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| تمام فیچرز Linear | 2.84 (10.5%) | 0.94 | +| تمام فیچرز Polynomial | 2.23 (8.25%) | 0.97 | -🏆 بہت خوب! آپ نے ایک سبق میں چار ریگریشن ماڈل بنائے، اور ماڈل کا معیار 97% تک بہتر کیا۔ آخری سیکشن میں آپ لاجسٹک ریگریشن کے بارے میں جانیں گے تاکہ زمروں کی تعیین کی جا سکے۔ +🏆 بہت خوب! آپ نے ایک سبق میں چار رگریشن ماڈلز بنائے، اور ماڈل کے معیار کو 97% تک بہتر کیا۔ رگریشن کے آخری حصے میں، آپ لاجسٹک رگریشن کے بارے میں سیکھیں گے تاکہ زمرہ بندی کی جا سکے۔ ---- +--- ## 🚀چیلنج -اس نوٹ بک میں مختلف متغیرات آزمائیں تاکہ دیکھ سکیں کہ correlation ماڈل کی درستگی کے ساتھ کس طرح مطابقت رکھتا ہے۔ +اس نوٹ بک میں مختلف متغیرات آزما کر دیکھیں کہ تعلق ماڈل کی درستگی سے کیسے مطابقت رکھتا ہے۔ -## [سبق کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/) +## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/) -## جائزہ اور خود مطالعہ +## جائزہ اور خود تعلیم -اس سبق میں ہم نے لائنیر ریگریشن کے بارے میں سیکھا۔ ریگریشن کی دیگر اہم اقسام بھی ہیں۔ Stepwise، Ridge، Lasso اور Elasticnet تکنیکوں کے بارے میں پڑھیں۔ زیادہ سیکھنے کے لیے ایک اچھا کورس [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ہے۔ +اس سبق میں ہم نے لکیری رگریشن کے بارے میں سیکھا۔ دیگر اہم رگریشن کی اقسام بھی ہیں۔ Stepwise, Ridge, Lasso اور Elasticnet تکنیکوں کے بارے میں پڑھیں۔ مزید سیکھنے کے لیے ایک اچھا کورس [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ہے۔ ## اسائنمنٹ @@ -382,6 +404,6 @@ print('Model determination: ', score) --- -**خبردار**: -اس دستاویز کا ترجمہ AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے کیا گیا ہے۔ اگرچہ ہم درستگی کی کوشش کرتے ہیں، براہ کرم آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا غلط فہمیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں مستند ماخذ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ تجویز کیا جاتا ہے۔ ہم اس ترجمہ کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ +**ڈس کلیمر**: +اس دستاویز کا ترجمہ AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم آگاہ رہیں کہ خودکار ترجموں میں غلطیاں یا عدم مطابقت ہو سکتی ہیں۔ اصل دستاویز کو اس کی مادری زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے پیشہ ورانہ انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے ہونے والی کسی بھی غلط فہمی یا بدفہمی کی ذمہ داری ہم پر عائد نہیں ہوتی۔ \ No newline at end of file diff --git a/translations/ur/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ur/2-Regression/3-Linear/solution/notebook.ipynb index 7e62c5542b..28413d2921 100644 --- a/translations/ur/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ur/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## کدو کی قیمت کے لیے لکیری اور کثیرالحدی رجعت - سبق 3\n", + "## پمپکن کی قیمتوں کے لئے لکیری اور کثیر رکنی رجعت - سبق 3\n", "\n", - "ضروری لائبریریاں اور ڈیٹاسیٹ لوڈ کریں۔ ڈیٹا کو ایک ڈیٹا فریم میں تبدیل کریں جو ڈیٹا کا ایک حصہ شامل کرے:\n", + "ضروری لائبریریاں اور ڈیٹا سیٹ لوڈ کریں۔ ڈیٹا کو ایک ڈیٹافریم میں تبدیل کریں جو ڈیٹا کا ایک ذیلی حصہ ہو: \n", "\n", - "- صرف وہ کدو حاصل کریں جو بوشل کے حساب سے قیمت دیے گئے ہوں\n", - "- تاریخ کو مہینے میں تبدیل کریں\n", + "- صرف وہ پمپکن حاصل کریں جن کی قیمت بسہل کے حساب سے ہو\n", + "- تاریخ کو ماہ میں تبدیل کریں\n", "- قیمت کو اونچی اور نیچی قیمتوں کے اوسط کے طور پر حساب کریں\n", - "- قیمت کو بوشل کی مقدار کے حساب سے ظاہر کریں\n" + "- قیمت کو بسہل کی مقدار کے حساب سے ظاہر کرنے کے لئے تبدیل کریں\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ایک اسکیٹرپلاٹ ہمیں یاد دلاتا ہے کہ ہمارے پاس صرف اگست سے دسمبر تک کے مہینوں کا ڈیٹا ہے۔ ہمیں شاید مزید ڈیٹا کی ضرورت ہے تاکہ ہم لکیری انداز میں نتائج اخذ کر سکیں۔\n" + "ایک سکیٹر پلاٹ ہمیں یاد دلاتا ہے کہ ہمارے پاس صرف اگست سے دسمبر تک کے مہینوں کا ڈیٹا ہے۔ ممکنہ طور پر ہمیں خطی انداز میں نتائج نکالنے کے لیے مزید ڈیٹا کی ضرورت ہے۔\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ایسا لگتا ہے کہ تعلق کافی کمزور ہے، لیکن کوئی اور زیادہ اہم تعلق موجود ہے - کیونکہ اوپر دیے گئے پلاٹ میں قیمت کے پوائنٹس کئی مختلف کلسٹرز میں نظر آتے ہیں۔ آئیے ایک پلاٹ بناتے ہیں جو مختلف کدو کی اقسام کو دکھائے:\n" + "ایسا لگتا ہے کہ تعلق بہت کم ہے، لیکن کوئی اور زیادہ اہم تعلق موجود ہے - کیونکہ اوپر کے پلاٹ میں قیمتوں کے پوائنٹس کے کئی الگ الگ گروپس نظر آ رہے ہیں۔ آئیے ایک ایسا پلاٹ بناتے ہیں جو مختلف کدو کی اقسام دکھائے:\n" ] }, { @@ -537,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "اس وقت کے لیے، آئیے صرف ایک اقسام - **پائی کی قسم** پر توجہ مرکوز کریں۔\n" + ] }, { "cell_type": "code", @@ -586,7 +588,7 @@ "source": [ "### لکیری رجعت\n", "\n", - "ہم لکیری رجعت ماڈل کو تربیت دینے کے لیے Scikit Learn کا استعمال کریں گے:\n" + "ہم لکیری رجعت ماڈل کی تربیت کے لیے Scikit Learn استعمال کریں گے:\n" ] }, { @@ -664,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "لکیری رجعتی گتانکات سے لکیر کی ڈھلوان کا تعین کیا جا سکتا ہے:\n" + "خط کی ڈھلوان کو خطی رجعت کے کوایفیشنٹس سے معلوم کیا جا سکتا ہے:\n" ] }, { @@ -722,9 +724,9 @@ "source": [ "### کثیر رکنی ریگریشن\n", "\n", - "کبھی کبھار خصوصیات اور نتائج کے درمیان تعلق فطری طور پر غیر خطی ہوتا ہے۔ مثال کے طور پر، کدو کی قیمتیں سردیوں میں زیادہ ہو سکتی ہیں (مہینے=1،2)، پھر گرمیوں میں کم ہو سکتی ہیں (مہینے=5-7)، اور پھر دوبارہ بڑھ سکتی ہیں۔ خطی ریگریشن اس تعلق کو درست طریقے سے تلاش کرنے سے قاصر ہے۔\n", + "کبھی کبھار خصوصیات اور نتائج کے درمیان تعلق فطری طور پر غیر خطی ہوتا ہے۔ مثال کے طور پر، کدو کی قیمتیں سردیوں میں زیادہ ہو سکتی ہیں (مہینے=1،2)، پھر گرمیوں میں کم ہو جاتی ہیں (مہینے=5-7)، اور پھر دوبارہ بڑھ جاتی ہیں۔ لکیری ریگریشن اس تعلق کو درست طریقے سے نہیں پہچان پاتی۔\n", "\n", - "ایسے میں، ہم اضافی خصوصیات شامل کرنے پر غور کر سکتے ہیں۔ ایک آسان طریقہ یہ ہے کہ ان پٹ خصوصیات سے کثیر رکنی (polynomials) استعمال کریں، جس کے نتیجے میں **کثیر رکنی ریگریشن** حاصل ہو گی۔ Scikit Learn میں، ہم پائپ لائنز کا استعمال کرتے ہوئے خودکار طور پر کثیر رکنی خصوصیات پہلے سے تیار کر سکتے ہیں:\n" + "اس صورت میں، ہم اضافی خصوصیات شامل کرنے پر غور کر سکتے ہیں۔ آسان طریقہ یہ ہے کہ ان پٹ خصوصیات سے کثیر رکنی استعمال کریں، جس سے **کثیر رکنی ریگریشن** حاصل ہوگی۔ سکائیکٹ لرن میں، ہم پائپ لائنز کا استعمال کرتے ہوئے خود بخود کثیر رکنی خصوصیات پہلے سے تیار کر سکتے ہیں: \n" ] }, { @@ -779,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### اقسام کو انکوڈ کرنا\n", + "### اقسام انکوڈنگ\n", "\n", - "ایک مثالی دنیا میں، ہم چاہتے ہیں کہ مختلف کدو کی اقسام کے لیے قیمتوں کی پیش گوئی ایک ہی ماڈل کے ذریعے کی جا سکے۔ اقسام کو مدنظر رکھنے کے لیے، ہمیں پہلے اسے عددی شکل میں تبدیل کرنا ہوگا، یا **انکوڈ** کرنا ہوگا۔ اس کے کئی طریقے ہیں:\n", + "آئڈیل دنیا میں، ہم چاہتے ہیں کہ ایک ہی ماڈل استعمال کرتے ہوئے مختلف کدو کی اقسام کی قیمتیں پیش گوئی کر سکیں۔ قسم کو مدنظر رکھنے کے لیے، سب سے پہلے ہمیں اسے عددی شکل میں تبدیل کرنا ہوگا، یا **انکوڈ** کرنا ہوگا۔ ہم اسے کرنے کے چند طریقے ہیں:\n", "\n", - "* سادہ عددی انکوڈنگ، جو مختلف اقسام کی ایک جدول بنائے گی، اور پھر قسم کے نام کو اس جدول میں ایک انڈیکس سے بدل دے گی۔ یہ طریقہ لکیری رجعت کے لیے بہترین نہیں ہے، کیونکہ لکیری رجعت انڈیکس کی عددی قدر کو مدنظر رکھتی ہے، اور عددی قدر ممکنہ طور پر قیمت کے ساتھ عددی طور پر مطابقت نہیں رکھتی۔\n", - "* ون-ہاٹ انکوڈنگ، جو `Variety` کالم کو 4 مختلف کالمز سے بدل دے گی، ہر قسم کے لیے ایک کالم، جو 1 دکھائے گا اگر متعلقہ قطار دی گئی قسم کی ہو، اور 0 اگر نہ ہو۔\n", + "* سادہ عددی انکوڈنگ جو مختلف اقسام کی ایک جدول بنائے گا، اور پھر قسم کے نام کو اس جدول میں ایک انڈیکس سے تبدیل کر دے گا۔ یہ لکیری ریگریشن کے لیے بہترین خیال نہیں ہے، کیونکہ لکیری ریگریشن انڈیکس کی عددی قدر کو مدنظر رکھتا ہے، اور عددی قدر غالباً قیمت کے ساتھ عددی طور پر متصل نہیں ہوگی۔\n", + "* ون-ہاٹ انکوڈنگ، جو `Variety` کالم کو 4 مختلف کالموں سے بدل دے گا، ہر ایک قسم کے لیے ایک، جس میں 1 ہوگا اگر متعلقہ صف دی گئی قسم کی ہو، ورنہ 0۔\n", "\n", - "نیچے دیا گیا کوڈ دکھاتا ہے کہ ہم کس طرح ایک قسم کو ون-ہاٹ انکوڈ کر سکتے ہیں:\n" + "نیچے دیا گیا کوڈ دکھاتا ہے کہ ہم کیسے کسی قسم کو ون-ہاٹ انکوڈ کر سکتے ہیں:\n" ] }, { @@ -944,7 +949,7 @@ "source": [ "### مختلف اقسام پر لکیری رجعت\n", "\n", - "اب ہم وہی کوڈ استعمال کریں گے جو اوپر دیا گیا ہے، لیکن `DayOfYear` کی بجائے ہم اپنی ون-ہاٹ-انکوڈڈ قسم کو بطور ان پٹ استعمال کریں گے:\n" + "اب ہم اوپر دیے گئے کوڈ کو ہی استعمال کریں گے، لیکن `DayOfYear` کی جگہ ہم اپنے ایک ہاٹ انکوڈڈ مختلف اقسام کو ان پٹ کے طور پر استعمال کریں گے:\n" ] }, { @@ -992,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ہم اسی طریقے سے دیگر خصوصیات کو استعمال کرنے کی کوشش بھی کر سکتے ہیں، اور انہیں عددی خصوصیات جیسے کہ `Month` یا `DayOfYear` کے ساتھ ملا سکتے ہیں:\n" + "ہم اسی طرح دیگر خصوصیات کو آزما سکتے ہیں، اور انہیں عددی خصوصیات کے ساتھ جوڑ سکتے ہیں، جیسے کہ `Month` یا `DayOfYear`:\n" ] }, { @@ -1023,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### کثیر رقمی رجعت\n", + "### پولینومیل ریگرشن\n", "\n", - "کثیر رقمی رجعت کو ان زمرہ جاتی خصوصیات کے ساتھ بھی استعمال کیا جا سکتا ہے جو ایک-ہاٹ-انکوڈڈ ہوں۔ کثیر رقمی رجعت کو تربیت دینے کے لیے کوڈ بنیادی طور پر وہی ہوگا جو ہم نے اوپر دیکھا ہے۔\n" + "پولینومیل ریگرشن کو ایک ہیٹ انکوڈڈ کیٹیگوریکل فیچرز کے ساتھ بھی استعمال کیا جا سکتا ہے۔ پولینومیل ریگرشن کو ٹرین کرنے کا کوڈ بنیادی طور پر وہی ہوگا جو ہم نے اوپر دیکھا ہے۔\n" ] }, { @@ -1072,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**ڈس کلیمر**: \nیہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔\n" + "---\n\n\n**ڈی ایس کلیمر**:\nاس دستاویز کا ترجمہ AI ترجمہ خدمت [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ جبکہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم آگاہ رہیں کہ خودکار تراجم میں غلطیاں یا عدم تناسبات ہو سکتے ہیں۔ اصل دستاویز اپنی مادری زبان میں حتمی ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تعبیرات کی ذمہ داری ہم قبول نہیں کرتے۔\n\n" ] } ], @@ -1102,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T14:41:32+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ur" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/zh-CN/.co-op-translator.json b/translations/zh-CN/.co-op-translator.json index b81184c3f5..b052126f5f 100644 --- a/translations/zh-CN/.co-op-translator.json +++ b/translations/zh-CN/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "zh-CN" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T09:04:44+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:52:25+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "zh-CN" }, @@ -90,8 +90,8 @@ "language_code": "zh-CN" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:51:59+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:52:07+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "zh-CN" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "zh-CN" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:48:37+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "zh-CN" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T08:57:14+00:00", diff --git a/translations/zh-CN/1-Introduction/4-techniques-of-ML/README.md b/translations/zh-CN/1-Introduction/4-techniques-of-ML/README.md index 181e5bf20a..d2331b59e8 100644 --- a/translations/zh-CN/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/zh-CN/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # 机器学习技术 -构建、使用和维护机器学习模型及其所需数据的过程,与许多其他开发工作流有很大的不同。在本课中,我们将揭开这一过程的神秘面纱,并概述您需要了解的主要技术。您将: +构建、使用和维护机器学习模型及其使用数据的过程,与许多其他开发工作流程有很大不同。在本课中,我们将揭开这一过程的神秘面纱,并概述您需要了解的主要技术。您将: -- 从高层次理解机器学习的基本流程。 -- 探索诸如“模型”、“预测”和“训练数据”等基础概念。 +- 以高层次理解支撑机器学习的过程。 +- 探索“模型”、“预测”和“训练数据”等基本概念。 -## [课前测验](https://ff-quizzes.netlify.app/en/ml/) +## [课堂前测验](https://ff-quizzes.netlify.app/en/ml/) -[![机器学习入门 - 机器学习技术](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "机器学习入门 - 机器学习技术") +[![机器学习初学者 - 机器学习技术](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "机器学习初学者 - 机器学习技术") -> 🎥 点击上方图片观看本课的简短视频。 +> 🎥 点击上方图片观看关于本课的简短视频讲解。 ## 介绍 -从高层次来看,创建机器学习(ML)流程的过程包括以下几个步骤: +从宏观角度来看,创建机器学习(ML)流程的技艺包括多个步骤: -1. **确定问题**。大多数机器学习流程从提出一个无法通过简单条件程序或基于规则的引擎回答的问题开始。这些问题通常围绕基于数据集合的预测展开。 -2. **收集和准备数据**。为了回答您的问题,您需要数据。数据的质量以及有时数据的数量将决定您能多好地回答最初的问题。可视化数据是这一阶段的重要部分。这一阶段还包括将数据分为训练集和测试集以构建模型。 -3. **选择训练方法**。根据您的问题和数据的性质,您需要选择一种训练模型的方法,以便最好地反映数据并对其进行准确预测。这是机器学习流程中需要特定专业知识的部分,通常需要大量的实验。 -4. **训练模型**。使用训练数据,您将使用各种算法训练模型以识别数据中的模式。模型可能会利用内部权重,这些权重可以调整以优先考虑数据的某些部分,从而构建更好的模型。 -5. **评估模型**。使用从未见过的数据(测试数据)来检查模型的表现。 -6. **参数调优**。根据模型的表现,您可以使用不同的参数或变量重新进行训练,这些参数或变量控制用于训练模型的算法的行为。 -7. **预测**。使用新的输入测试模型的准确性。 +1. 确定问题。大多数机器学习流程从提出一个不能通过简单条件程序或基于规则的引擎回答的问题开始。这些问题通常围绕基于一组数据的预测展开。 +2. 收集和准备数据。为了回答您的问题,您需要数据。数据的质量以及有时的数据量将决定您能多好地回答最初的问题。数据可视化是这一阶段的重要环节。此阶段还包括将数据拆分为训练组和测试组,以构建模型。 +3. 选择训练方法。根据您的问题和数据的性质,您需要选择如何训练模型,以最好地反映数据并做出准确预测。这是机器学习流程中需要特定专业知识且通常需要大量试验的部分。 +4. 训练模型。利用训练数据,您将使用各种算法训练模型,以识别数据中的模式。模型可能利用可调整的内部权重,优先考虑数据的某些部分,从而构建更好的模型。 +5. 评估模型。使用未见过的数据(测试数据)来检验模型表现如何。 +6. 参数调优。根据模型的表现,可以使用不同参数或变量重新进行训练,这些参数控制用于训练模型的算法行为。 +7. 预测。使用新的输入来测试模型的准确度。 -## 提出什么问题 +## 要问什么问题 -计算机特别擅长发现数据中的隐藏模式。这种能力对研究人员来说非常有用,他们可能会提出一些无法通过条件规则引擎轻松回答的问题。例如,在精算任务中,数据科学家可能能够围绕吸烟者与非吸烟者的死亡率构建手工规则。 +计算机特别擅长发现数据中的隐藏模式。这对于研究人员非常有用,他们有一些问题,不能通过构建基于条件规则引擎的方法轻易回答。举例而言,在精算任务中,数据科学家可能能够围绕吸烟者和非吸烟者的死亡率构建人工规则。 -然而,当许多其他变量被纳入考虑时,机器学习模型可能更高效地根据过去的健康历史预测未来的死亡率。一个更令人愉快的例子可能是基于纬度、经度、气候变化、靠近海洋、喷流模式等数据预测某地四月份的天气。 +然而,当引入许多其他变量时,机器学习模型可能更加高效地根据过去的健康记录预测未来的死亡率。一个更愉快的例子是,基于纬度、经度、气候变化、靠近海洋程度、急流模式等数据,预测某地四月份的天气。 -✅ 这份[幻灯片](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供了使用机器学习进行天气分析的历史视角。 +✅ 这份关于天气模型的[幻灯片](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供了有关天气分析中使用机器学习的历史视角。 ## 构建前的任务 -在开始构建模型之前,您需要完成几个任务。为了测试您的问题并根据模型的预测形成假设,您需要识别并配置几个要素。 +在开始构建模型之前,您需要完成若干任务。为测试您的问题并根据模型预测形成假设,您需要识别并配置几个要素。 ### 数据 -为了以任何确定性回答您的问题,您需要足够数量的正确类型的数据。在这一点上,您需要完成以下两件事: +为了有把握地回答您的问题,您需要大量且类型合适的数据。此时需要做两件事: -- **收集数据**。牢记上一课关于数据分析公平性的内容,谨慎收集数据。注意数据的来源、可能存在的内在偏见,并记录其来源。 -- **准备数据**。数据准备过程包括多个步骤。如果数据来自不同来源,您可能需要整理并规范化数据。您可以通过各种方法提高数据的质量和数量,例如将字符串转换为数字(如我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做的)。您还可以基于原始数据生成新数据(如我们在[分类](../../4-Classification/1-Introduction/README.md)中所做的)。您可以清理和编辑数据(如我们在[Web 应用](../../3-Web-App/README.md)课程之前所做的)。最后,根据您的训练技术,您可能还需要随机化和打乱数据。 +- 收集数据。牢记上一课关于数据分析公正性的内容,谨慎收集数据。关注数据来源、潜在偏见,并记录其来源。 +- 准备数据。数据准备过程包含多个步骤。当数据来源多样时,可能需要合并数据、进行归一化处理。可通过转换字符串为数字等方法提升数据的质量和数量(如我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做)。还可以基于原始数据生成新数据(参见[分类](../../4-Classification/1-Introduction/README.md))。您也可以清洗和编辑数据(我们将在[Web 应用](../../3-Web-App/README.md)课前进行)。最后,可能需要根据训练方法,将数据随机化和打乱。 -✅ 在收集和处理数据后,花点时间检查其形状是否能帮助您解决预期问题。可能会发现数据在给定任务中表现不佳,就像我们在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的那样! +✅ 收集和处理数据后,请花时间检查数据形态是否能支持您计划解决的问题。正如在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的,数据可能并不适合所给任务! ### 特征和目标 -[特征](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是数据的可测量属性。在许多数据集中,它通常以列标题的形式表示,例如“日期”、“大小”或“颜色”。特征变量通常在代码中表示为`X`,代表用于训练模型的输入变量。 +[特征](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是数据的可测量属性。在许多数据集中,它表现为列标题,如“日期”、“大小”或“颜色”。特征变量通常用代码中的 `X` 表示,代表将用来训练模型的输入变量。 -目标是您试图预测的内容。目标通常在代码中表示为`y`,代表您试图从数据中回答的问题:在十二月,哪种**颜色**的南瓜最便宜?在旧金山,哪些社区的房地产**价格**最好?有时目标也被称为标签属性。 +目标是您试图预测的对象。目标通常用代码中的 `y` 表示,代表您想问数据的问题答案:十二月里,什么颜色的南瓜最便宜?在旧金山,哪些社区的房地产价格最好?有时目标也称为标签属性。 ### 选择特征变量 -🎓 **特征选择和特征提取** 如何在构建模型时选择变量?您可能会经历特征选择或特征提取的过程,以选择最适合的变量来构建性能最佳的模型。然而,它们并不相同:“特征提取通过原始特征的函数创建新特征,而特征选择返回特征的子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) +🎓 特征选择与特征提取 如何知道构建模型时选哪个变量?您可能会通过特征选择或特征提取流程,挑选出最合适的变量以获得最佳模型效果。但两者不同:“特征提取通过原始特征的函数创建新特征,而特征选择则返回原始特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) ### 可视化数据 -数据科学家工具箱的重要组成部分是使用 Seaborn 或 MatPlotLib 等优秀库可视化数据的能力。通过可视化数据,您可能会发现可以利用的隐藏相关性。可视化还可能帮助您发现偏差或数据不平衡(如我们在[分类](../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 +数据科学家工具箱中重要的一环是利用诸如 Seaborn 或 MatPlotLib 这类优秀库进行数据可视化。通过可视化数据,您可能发现可利用的隐藏相关性。您的可视化也能帮助发掘偏见或数据不平衡问题(如我们在[分类](../../4-Classification/2-Classifiers-1/README.md)所见)。 -### 划分数据集 +### 拆分数据集 -在训练之前,您需要将数据集划分为两个或更多不等大小的部分,同时确保它们能很好地代表数据。 +训练前,您需将数据集拆分为两个或更多不等大小的部分,但仍能良好代表数据。 -- **训练集**。数据集的这一部分用于训练模型。它通常占原始数据集的大部分。 -- **测试集**。测试数据集是一个独立的数据组,通常从原始数据中提取,用于验证模型的性能。 -- **验证集**。验证集是一个较小的独立数据组,用于调整模型的超参数或架构以改进模型。根据数据的大小和您提出的问题,您可能不需要构建这个第三组(如我们在[时间序列预测](../../7-TimeSeries/1-Introduction/README.md)中提到的)。 +- 训练集。用于“拟合”模型以训练它。这部分数据集是原始数据集的主体。 +- 测试集。测试数据集是一个独立数据组,通常从原始数据中获取,用来确认已构建模型的性能。 +- 验证集。验证集是一小部分独立样本,用于调优模型的超参数或结构,从而改善模型。根据数据大小和问题,您可能不需要构建这一第三组(如我们在[时间序列预测](../../7-TimeSeries/1-Introduction/README.md)中提到)。 ## 构建模型 -使用训练数据,您的目标是通过各种算法**训练**模型,构建数据的统计表示。训练模型使其接触数据,并让它对发现的模式进行假设、验证并接受或拒绝。 +利用训练数据,目标是通过各种算法训练构建模型,或说构建数据的统计表示。训练模型时,模型会暴露于数据中,并尝试对其发现、验证、接受或拒绝的模式做出假设。 ### 决定训练方法 -根据您的问题和数据的性质,您将选择一种训练方法。通过浏览[Scikit-learn 的文档](https://scikit-learn.org/stable/user_guide.html)(我们在本课程中使用的工具),您可以探索多种训练模型的方法。根据您的经验,您可能需要尝试几种不同的方法来构建最佳模型。数据科学家通常会经历一个过程,通过向模型提供未见过的数据来评估其性能,检查准确性、偏差和其他质量问题,并选择最适合当前任务的训练方法。 +依照问题及数据性质,您将选择训练方法。浏览[Scikit-learn 的文档](https://scikit-learn.org/stable/user_guide.html) —— 本课程使用它 —— 您可探究多种训练模型方法。根据经验,可能需尝试多种方法以构建最佳模型。数据科学家通常会通过输入未见数据,检查准确度、偏见及其他影响质量的问题,并据此选择最适合的训练方法。 ### 训练模型 -有了训练数据,您可以开始“拟合”数据以创建模型。您会注意到,在许多机器学习库中,代码中会出现“model.fit”——此时,您将特征变量作为值数组(通常是`X`)和目标变量(通常是`y`)传入。 +有了训练数据,您便可以“拟合”模型。许多机器学习库中会看到代码如 model.fit —— 就在这时,您将以数组形式(通常是‘X’)输入特征变量以及目标变量(通常是‘y’)。 ### 评估模型 -一旦训练过程完成(对于大型模型可能需要多次迭代或“周期”),您可以使用测试数据评估模型的质量,以衡量其性能。这些数据是模型之前未分析过的原始数据的子集。您可以打印出关于模型质量的指标表。 +当训练过程完成(对于大型模型,可能需要多轮“迭代”或“epoch”)后,您可以使用测试数据评估模型质量。测试数据是原始数据的一个子集,模型之前未见过。您可以输出模型质量的指标表。 -🎓 **模型拟合** +🎓 模型拟合 -在机器学习的背景下,模型拟合指的是模型底层函数在尝试分析未见过的数据时的准确性。 +在机器学习中,模型拟合指的是模型在尝试分析不熟悉数据时的准确性。 -🎓 **欠拟合**和**过拟合**是常见问题,会降低模型质量。欠拟合的模型无法很好地分析训练数据或未见过的数据,而过拟合的模型过于贴合训练数据的细节和噪声。过拟合的模型对训练数据的预测过于精准,而欠拟合的模型则不够准确。 +🎓 欠拟合过拟合是常见问题,降低模型质量。欠拟合时,模型表现不佳,既不能准确分析训练数据,也不能分析未见数据。过拟合时,模型过于“刻意”地记住训练数据细节与噪音,自己“学得太好”,因而在新数据上表现欠佳。 -![过拟合模型](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> 信息图由 [Jen Looper](https://twitter.com/jenlooper) 提供 +![过拟合模型](../../../../translated_images/zh-CN/overfitting.1c132d92bfd93cb6.webp) +> 信息图作者:[Jen Looper](https://twitter.com/jenlooper) ## 参数调优 -初步训练完成后,观察模型的质量,并通过调整其“超参数”来改进模型。阅读更多关于该过程的内容:[文档](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 +完成初步训练后,观察模型质量并考虑通过调整“超参数”来改进。详情请参阅文档:[超参数调优](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 ## 预测 -这是您可以使用全新数据测试模型准确性的时刻。在“应用”机器学习场景中,例如构建用于生产的 Web 应用程序,这一过程可能涉及收集用户输入(例如按钮点击)以设置变量并将其发送到模型进行推断或评估。 +此时,您可以使用全新数据测试模型准确性。在“应用型”机器学习环境中,构建网络资产以在生产环境中使用模型时,通常会捕获用户输入(比如按钮点击),设置变量并将其发送到模型进行推断或评估。 -在这些课程中,您将学习如何使用这些步骤来准备、构建、测试、评估和预测——这些都是数据科学家的基本操作,同时也将帮助您在成为“全栈”机器学习工程师的旅程中不断进步。 +在这些课程中,您将发现如何利用这些步骤准备、构建、测试、评估和预测——作为数据科学家所掌握的全部动作,助您逐步成长为“全栈”机器学习工程师。 --- -## 🚀挑战 +## 🚀 挑战 -绘制一张流程图,反映机器学习从业者的步骤。您认为自己目前处于哪个阶段?您预测在哪些方面会遇到困难?哪些部分对您来说似乎很容易? +绘制一个反映机器学习实践者步骤的流程图。您目前处于该过程的哪个阶段?您预测在哪些环节会遇到困难?哪些环节对您来说较为容易? -## [课后测验](https://ff-quizzes.netlify.app/en/ml/) +## [课堂后测验](https://ff-quizzes.netlify.app/en/ml/) ## 复习与自学 -在线搜索数据科学家讨论日常工作的访谈。这里有一个[示例](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 +在线搜索数据科学家的采访,了解他们的日常工作。这里有一个[视频](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 ## 作业 @@ -119,5 +119,7 @@ --- + **免责声明**: -本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。我们不对因使用此翻译而产生的任何误解或误读承担责任。 \ No newline at end of file +本文件使用AI翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)进行翻译。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版本的文件应被视为权威来源。对于关键信息,建议采用专业人工翻译。我们对因使用此翻译而产生的任何误解或误释概不负责。 + \ No newline at end of file diff --git a/translations/zh-CN/2-Regression/3-Linear/README.md b/translations/zh-CN/2-Regression/3-Linear/README.md index fdc2eefca7..1733f59836 100644 --- a/translations/zh-CN/2-Regression/3-Linear/README.md +++ b/translations/zh-CN/2-Regression/3-Linear/README.md @@ -2,96 +2,96 @@ ## 初学者提示 -线性回归用于预测数值型数据(例如房价、温度或销售额)。 -其原理是找到一条最佳拟合输入特征与输出之间关系的直线。 +线性回归用于预测数值型(例如房价、温度或销售额)。 +它通过找到最能代表输入特征与输出关系的直线来实现。 -本课重点理解概念,再探讨更高级的回归技术。 +本课将重点理解概念,然后再探索更高级的回归技术。 ![线性回归与多项式回归信息图](../../../../translated_images/zh-CN/linear-polynomial.5523c7cb6576ccab.webp) -> 信息图作者:[Dasani Madipalli](https://twitter.com/dasani_decoded) +> 信息图由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 制作 ## [课前测验](https://ff-quizzes.netlify.app/en/ml/) -> ### [本课程也提供 R 语言版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [本课内容也提供 R 版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### 介绍 -到目前为止,你已经了解了什么是回归,并用我们本课将持续使用的南瓜定价数据集进行了探索。你还用 Matplotlib 将数据进行了可视化。 +迄今为止,你已经通过使用本课程将会继续使用的南瓜定价数据集了解了回归是什么。你也用 Matplotlib 对数据进行了可视化。 -现在你准备深入学习机器学习中的回归。虽然可视化有助于理解数据,但机器学习的真正威力来自于_训练模型_。模型在历史数据上训练,能够自动捕捉数据间的依赖关系,并能对未见过的新数据做出预测。 +现在你准备深入了解机器学习中的回归。可视化有助于理解数据,但机器学习的真正能力在于训练模型。模型通过历史数据训练,自动捕捉数据之间的依赖关系,并允许你预测模型之前未见过的新数据结果。 -本课将介绍两种回归类型:_基础线性回归_和_多项式回归_,并讲解其中的数学原理。这些模型将帮助我们根据不同输入预测南瓜价格。 +本课你将学习两种回归类型:基本线性回归多项式回归,以及这些技术背后的一些数学原理。通过这些模型,我们可以根据不同输入数据预测南瓜价格。 -[![为初学者讲解线性回归](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "为初学者讲解线性回归") +[![面向初学者的机器学习——理解线性回归](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "面向初学者的机器学习——理解线性回归") -> 🎥 点击上方图片观看线性回归的简短视频概览。 +> 🎥 点击上图观看线性回归简短视频介绍。 -> 在整个课程中,我们假设学生数学基础有限,力求让其他领域的学生也能理解,因此请关注笔记、🧮 数学提示、图表等辅助学习工具。 +> 在整个课程中,我们假设你有最少的数学知识背景,力图为来自其他领域的学生提供可访问的内容,因此请关注笔记、🧮 提示、图示及其他学习工具,以帮助理解。 ### 先决条件 -到目前为止,你应该熟悉我们正在研究的南瓜数据结构了。课中的 _notebook.ipynb_ 文件中已经预加载并预处理了数据。文件中每个蒲式耳的南瓜价格展示于新的数据框中。确保你可以在 Visual Studio Code 的内核中运行这些笔记本。 +你现在应该熟悉我们正在研究的南瓜数据的结构。你可以在本课的 _notebook.ipynb_ 文件中找到已预加载和预处理的数据。在该文件中,南瓜价格以每蒲式耳价格显示在一个新的数据框中。确保你能在 Visual Studio Code 的内核中运行这些笔记本。 ### 准备工作 -提醒一下,你加载数据是为了提出问题。 +提醒一下,我们加载这些数据是为了提问: - 什么时候买南瓜最合适? -- 一箱迷你南瓜价格大概是多少? -- 应该买半蒲式耳篮装,还是1 1/9蒲式耳盒装? -让我们继续挖掘数据。 +- 一箱迷你南瓜的价格大概是多少? +- 该以半蒲式耳篮买,还是1 1/9蒲式耳箱买? +让我们继续深入挖掘这些数据。 -上一课你创建了 Pandas 数据框,并填充了部分原始数据,将价格标准化为每蒲式耳价格。但这样你只能获得约400条数据,且仅限秋季月份。 +在上一课中,你创建了 Pandas 数据框,并用部分原始数据填充,标准化为每蒲式耳价格。这样做后,你只能获得大约 400 条数据点,且仅限秋季月份。 -看看本课随附笔记本中预加载的数据。数据已加载,并绘制了月份散点图。或许我们可以通过更深入的数据清洗来了解数据的本质。 +看看我们在本课随附笔记本中预加载的数据。数据已经加载完毕,并绘制了显示月份数据的初始散点图。也许通过进一步清洗,我们能更详细了解数据的本质。 -## 线性回归直线 +## 线性回归线 -正如第1课所学,线性回归的目标是绘制一条线来: +如你在第一课中所学,线性回归的目标是绘制一条直线来: -- 展示变量关系。显示变量之间的关系。 -- 进行预测。准确预测新数据点相对于该线的位置。 +- 显示变量关系。展示变量间的关系 +- 进行预测。准确预测新数据点在直线上的位置 -最小二乘回归通常会绘制这样的线。“最小二乘”指的是最小化模型总误差的过程。对每个数据点,测量其与回归线的垂直距离(称为残差)。 +通常采用最小二乘回归法绘制此类直线。“最小二乘”指的是尽量减少模型总误差的过程。对于每个数据点,我们测量实际点与回归线之间的垂直距离(称为残差)。 -我们平方这些距离主要有两个原因: +对这些距离平方的原因有两个: -1. 大小优先于方向:想让误差-5与+5同等对待,平方将所有值变为正数。 +1. 忽略方向只看大小:我们希望将误差 -5 和 +5 等同看待,平方可将所有值变为正数。 -2. 惩罚离群值:平方会给较大误差更高权重,迫使回归线更靠近远离的点。 +2. 惩罚离群值:平方更看重大的误差,使回归线尽量贴近远离的点。 -接着将所有平方值相加。目标是找到使该总和最小的线——这就是“最小二乘”名称的由来。 +然后我们将所有平方的距离相加。我们的目标是找到使该总和最小的特定直线(即“最小二乘”)。 -> **🧮 看数学表达** -> -> 这条称为_最佳拟合线_的线可以用[方程](https://en.wikipedia.org/wiki/Simple_linear_regression)表达: -> +> **🧮 数学详解** +> +> 这条称为最佳拟合线的直线可用[一个方程表示](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> `X` 是“自变量”,`Y` 是“因变量”。斜率为 `b`,截距为 `a`,表示 `X=0` 时的 `Y` 值。 +> `X` 是“解释变量”,“Y”是“因变量”。直线的斜率是 `b`,`a` 是 y 轴截距,即当 `X=0` 时 `Y` 的值。 > >![计算斜率](../../../../translated_images/zh-CN/slope.f3c9d5910ddbfcf9.webp) > -> 首先计算斜率 `b`。信息图作者 [Jen Looper](https://twitter.com/jenlooper) +> 首先,计算斜率 `b`。信息图由 [Jen Looper](https://twitter.com/jenlooper) 制作 > -> 换句话说,对于南瓜数据:“按月份预测南瓜每蒲式耳价格”,`X` 是价格,`Y` 是销售月份。 +> 换句话说,针对我们原始的南瓜数据问题:“按月份预测南瓜每蒲式耳价格”,`X` 是价格,`Y` 是销售月份。 > ->![完整方程](../../../../translated_images/zh-CN/calculation.a209813050a1ddb1.webp) +>![完成方程](../../../../translated_images/zh-CN/calculation.a209813050a1ddb1.webp) > -> 计算 `Y` 值。如果你付了大约4美元,那一定是4月!信息图作者 [Jen Looper](https://twitter.com/jenlooper) +> 计算 `Y` 的值。如果你支付大约4美元,那一定是四月!信息图由 [Jen Looper](https://twitter.com/jenlooper) 制作 > -> 计算公式要展示斜率,还要考虑截距,即当 `X=0` 时 `Y` 的位置。 +> 计算此直线的数学方法必须展示斜率,同时也会以截距为依据,即当 `X=0` 时 `Y` 的位置。 > -> 你可以参考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 网站来学习计算方法。还可以访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)观察数字如何影响回归线。 +> 你可以在 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 网站上观察计算步骤。也可访问[最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html),观看数字如何影响直线。 ## 相关性 -另一个要理解的术语是给定 `X` 和 `Y` 变量之间的相关系数。用散点图可以快速观察这一系数。数据点整齐排列成线的图表相关性高,点散布杂乱无章则相关性低。 +另一个需要了解的概念是给定 `X` 和 `Y` 变量之间的相关系数。通过散点图可以快速直观地看出这个系数。散点沿直线排列的图显示高相关性,点散布无序则显示相关性低。 -好的线性回归模型会有较高的(接近于1而非0)相关系数,采用最小二乘法拟合回归线。 +一个好的线性回归模型,应该在最小二乘法下,拥有较高(接近 1 而非 0)的相关系数。 -✅ 运行本课的笔记本,看看“月份与价格”的散点图。根据你的视觉判断,这两个变量的南瓜销售价格相关性是高还是低?如果用更细化的度量(如一年中的某一天,即从年初起的天数)替代 `Month`,相关性会变化吗? +✅ 运行本课附带的笔记本,查看“月份 vs 价格”的散点图。在直观解释该散点图后,南瓜销售相关的“月份 vs 价格”数据看起来相关性高还是低?如果改用更细粒度指标,比如“年份中的天数”(即年初以来的天数),相关性会改变吗? -下面的代码假设已清理数据并获得名为 `new_pumpkins` 的数据框,内容类似: +以下代码假设我们已清理数据,并获得名为 `new_pumpkins` 的数据框,类似于: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> 清理数据的代码可见于[`notebook.ipynb`](notebook.ipynb)中。我们执行了与上一课相同的清理步骤,并用如下表达式计算了 `DayOfYear` 列: +> 清理数据的代码见 [`notebook.ipynb`](notebook.ipynb),我们采用了与上一课相同的清理步骤,并通过以下表达式计算了 `DayOfYear` 列: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -既然已理解线性回归背后的数学原理,让我们创建一个回归模型,看看是否能预测哪种南瓜包装的价格最优。想为节日南瓜园采购南瓜的人可能想知道这些信息,以便优化采购计划。 +既然你了解了线性回归背后的数学,让我们创建一个回归模型,看看是否能预测哪种南瓜包装价格最好。假如有人为节日南瓜园买南瓜,这些信息有助于优化购买。 ## 寻找相关性 -[![为初学者讲解相关性:线性回归的关键](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "为初学者讲解相关性:线性回归的关键") +[![面向初学者的机器学习 - 寻找相关性:线性回归的关键](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "面向初学者的机器学习 - 寻找相关性:线性回归的关键") -> 🎥 点击上方图片观看关于相关性的简短视频。 +> 🎥 点击上图观看相关性简短视频介绍。 -上一课你可能已经看到,不同月份的平均价格如下图所示: +上一课可见,不同月份的平均价格如下图所示: -按月平均价格 +按月份的平均价格 -这说明应存在某种相关性,我们可以试着训练线性回归模型来预测 `Month` 与 `Price` 之间,或 `DayOfYear` 与 `Price` 之间的关系。以下是价格与一年中日期关系的散点图: +这暗示两者之间应有相关性,我们可训练线性回归模型来预测 `Month` 和 `Price`,或 `DayOfYear` 和 `Price` 之间的关系。下面是后者的散点图: -价格与年日期散点图 +价格与年中天数的散点图 -我们用 `corr` 函数来看看相关性: +使用 `corr` 函数检测是否相关: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -看起来相关性非常小,`Month` 为 -0.15,`DayOfYear` 为 -0.17,但可能存在另一种重要关系。不同南瓜品种对应不同价格集群。为确认此假设,我们用不同颜色绘制各品种。通过给 `scatter` 函数传递 `ax` 参数,可以在同一图表上绘制所有点: +相关性看起来较小,月份相关系数约为 -0.15,年中天数相关系数约为 -0.17,但或许存在其他重要关系。似乎不同价格簇对应不同南瓜品种。为验证这个假设,我们给各品种使用不同颜色绘制散点图。通过向 `scatter` 函数传递 `ax` 参数,可以将所有点绘制于同一图表: ```python ax=None @@ -140,9 +140,9 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -价格与年日期不同颜色散点图 +价格与年中天数散点图(彩色区分) -调查显示,品种对整体价格的影响大于销售日期。我们用柱状图表示: +调研表明,品种对价格影响更大于销售日期。下图通过柱状图展示: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') @@ -150,32 +150,32 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') 按品种划分的价格柱状图 -先暂时只关注一种品种——“pie type”,看看日期对价格的影响: +暂时只关注“派类型”南瓜,看看日期对价格的影响: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -pie type 南瓜的价格与年日期散点图 +价格与年中天数的散点图 -若用 `corr` 函数计算 `Price` 和 `DayOfYear` 的相关系数,结果大概为 `-0.27`,说明训练预测模型是有意义的。 +如果用 `corr` 函数计算 `Price` 与 `DayOfYear` 的相关系数,会得到大约 `-0.27`,说明训练预测模型是合理的。 -> 在训练线性回归模型前,务必保证数据干净。线性回归对缺失值不敏感,最合理的做法是去除所有空值: +> 训练线性回归模型前,确保数据干净很重要。线性回归对空值敏感,因此最好去除所有空单元格: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -另一种做法是用对应列的均值填充空白值。 +另一种方法是用对应列的均值填充空值。 ## 简单线性回归 -[![为初学者讲解使用 Scikit-learn 进行线性和多项式回归](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "为初学者讲解使用 Scikit-learn 进行线性和多项式回归") +[![面向初学者的机器学习 - 使用 Scikit-learn 的线性和多项式回归](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "面向初学者的机器学习 - 使用 Scikit-learn 的线性和多项式回归") -> 🎥 点击上方图片观看线性回归和多项式回归的简短视频。 +> 🎥 点击上图观看线性与多项式回归简短视频介绍。 -我们将使用Scikit-learn库训练线性回归模型。 +我们将用 **Scikit-learn** 库训练线性回归模型。 ```python from sklearn.linear_model import LinearRegression @@ -183,16 +183,16 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -首先,将输入值(特征)和预期输出(标签)分隔成独立的 numpy 数组: +首先将输入特征和预期输出(标签)分成不同的 numpy 数组: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> 注意,我们对输入数据进行了 `reshape`,以便线性回归库能正确解读。线性回归要求输入为二维数组,数组每行为一组输入特征向量。这里只有一个输入,因此需要形状为 N×1 的数组,N 是数据集大小。 +> 注意,为了让线性回归库正确识别输入,我们做了 `reshape` 操作。线性回归期望输入为二维数组,每行是特征向量。本例只用一个输入特征,因此需要形状为 N × 1 的数组,N 为数据集大小。 -接着,需要将数据分割为训练集和测试集,以便训练后验证模型: +接着将数据拆分为训练集和测试集,方便训练后验证模型: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) @@ -205,9 +205,9 @@ lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` 对象在 `fit` 之后包含了回归的所有系数,可以通过 `.coef_` 属性访问。在我们的例子中,只有一个系数,应该大约是 `-0.017`。这意味着价格似乎随着时间略有下降,但不多,大约每天降 2 美分。我们还可以通过 `lin_reg.intercept_` 访问回归与 Y 轴的截距点——在我们的例子中大约是 `21`,表示年初的价格。 +`LinearRegression` 对象在 `fit` 后包含了回归的所有系数,可以通过 `.coef_` 属性访问。在我们的例子中,只有一个系数,应该在 `-0.017` 附近。这意味着价格随着时间似乎略有下降,但幅度不大,大约每天下降两分钱。我们还可以通过 `lin_reg.intercept_` 访问回归与 Y 轴的交点——在我们的例子中大约是 `21`,表示年初的价格。 -为了查看模型的准确度,我们可以在测试数据集上预测价格,然后测量预测值与预期值的接近程度。可以使用均方根误差(RMSE)指标,即所有预期值与预测值差值平方的平均值的平方根。 +为了查看模型的准确性,我们可以在测试数据集上预测价格,然后衡量预测值与预期值的接近程度。这可以使用均方根误差(RMSE)指标完成,即期望值与预测值全部平方差的均值开根号。 ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -我们的误差大约是 2 点,约为 ~17%。不是很理想。模型质量的另一个指标是决定系数,可以这样获得: +我们的误差约为 2 点,即约 17%。不是特别好。另一个模型质量指标是决定系数,可以这样获得: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -如果值为 0,表示模型没有考虑输入数据,表现为最差的线性预测器,即结果的均值。值为 1 表示我们可以完美预测所有预期输出。在我们的例子中,系数约为 0.06,相当低。 -我们还可以将测试数据和回归线画在一起,更直观地观察回归效果: +如果值为 0,说明模型不考虑输入数据,表现为最差的线性预测器,即结果的均值。值为 1 则意味着我们能完美预测所有期望输出。在我们的例子中,系数约为 0.06,较低。 + +我们也可以绘制测试数据和回归线,以更直观地了解回归效果: ```python plt.scatter(X_test,y_test) @@ -235,17 +236,17 @@ plt.plot(X_test,pred) ## 多项式回归 -另一种线性回归称为多项式回归。有时变量之间存在线性关系——比如,体积越大的南瓜价格越高,但有时这些关系不能用平面或直线表示。 +另一种线性回归是多项式回归。尽管有时候变量间存在线性关系——比如体积越大的南瓜价格越高——但有时这些关系无法用平面或直线表达。 -✅ 这里有一些[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8)演示可以使用多项式回归的数据 +✅ 这里有一些[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8)展示了适合使用多项式回归的数据 -再看看日期和价格的关系。这个散点图是否必然适合用直线来分析?价格难道不会波动吗?这时可以尝试多项式回归。 +再看看日期和价格的关系。这个散点图一定要用直线分析吗?价格难道不会波动吗?这时,就可以尝试多项式回归。 -✅ 多项式是由一个或多个变量及系数组成的数学表达式 +✅ 多项式是由一个或多个变量和系数组成的数学表达式 -多项式回归创建一条曲线来更好地拟合非线性数据。在我们的例子中,如果在输入数据中加入平方的 `DayOfYear` 变量,应该可以用抛物线拟合数据,在一年中的某个点达到最低点。 +多项式回归通过曲线更好地拟合非线性数据。在我们的案例中,如果将平方的 `DayOfYear` 变量加入输入数据中,应能以抛物线拟合数据,并在一年中某点处有一个极小值。 -Scikit-learn 包含一个方便的[流水线 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)来组合不同的数据处理步骤。流水线是由一系列估计器组成的链。在我们的例子中,我们将创建一个流水线,先添加多项式特征,然后训练回归模型: +Scikit-learn 包含了有用的[流水线 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)用于组合数据处理的多个步骤。流水线是一系列估计器的链。在我们的例子中,我们将创建一个先添加多项式特征、然后进行回归训练的流水线: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -使用 `PolynomialFeatures(2)` 意味着包括输入数据中的所有二次多项式。在我们的例子中,这仅表示 `DayOfYear` 的平方,但如果有两个输入变量 X 和 Y,就会添加 X²、XY 和 Y²。如果需要,也可以使用更高次数的多项式。 +使用 `PolynomialFeatures(2)` 意味着我们会包含输入数据的所有二阶多项式。在我们的例子中仅有 `DayOfYear`2,但若输入有两个变量 X 和 Y,则会加上 X2、XY 和 Y2。如果需要,也可以使用更高阶的多项式。 + +流水线的用法与原始 `LinearRegression` 对象相同,即可以对流水线 `fit`,然后用 `predict` 得到预测结果: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +为了绘制平滑的拟合曲线,我们用 `np.linspace` 创建均匀的输入值范围,而不是在无序的测试数据上直接绘图(那样会出现锯齿形曲线): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -流水线可以像原始的 `LinearRegression` 对象一样使用,即可以 `fit` 流水线,然后用 `predict` 获得预测结果。下面是测试数据和拟合曲线的图示: +下面是测试数据和拟合曲线的图表: Polynomial regression -使用多项式回归,我们可以得到稍低的均方误差和更高的决定系数,但提升不大。我们还需要考虑其他特征! +使用多项式回归,我们能稍微降低 RMSE 并提高决定系数,但提升不大。我们需要考虑更多特征! -> 你可以看到南瓜最低价格出现在万圣节附近。你如何解释这一现象? +> 你可以看到南瓜价格的最低点大约出现在万圣节左右。你能解释这现象吗? -🎃 恭喜,你刚刚创建了一个能够帮助预测派皮南瓜价格的模型。你可能会对所有南瓜类型都重复这个过程,但那会很繁琐。接下来我们学习如何在模型中考虑南瓜品种! +🎃 恭喜,你刚刚建立了一个可以预测派南瓜价格的模型。你也可以用同样方法处理所有南瓜类型,但那样比较繁琐。接下来我们学习如何将南瓜品种纳入模型! -## 类别特征 +## 分类特征 -理想情况下,我们希望用同一个模型预测不同南瓜品种的价格。但 `Variety` 一栏与 `Month` 等数值型列不同,它包含的是非数值数据。这类列称为类别特征。 +理想情况下,我们希望用同一个模型预测不同南瓜品种的价格。然而,`Variety` 列与 `Month` 等列不同,因为它包含非数字值。这类列称为分类变量。 -[![ML for beginners - 使用线性回归预测类别特征](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - 使用线性回归预测类别特征") +[![针对初学者的机器学习——使用线性回归进行分类特征预测](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "针对初学者的机器学习——使用线性回归进行分类特征预测") -> 🎥 点击上图观看一个简短视频,介绍如何使用类别特征。 +> 🎥 点击上方图片观看关于使用分类特征的简短视频介绍。 -你可以看到平均价格如何根据品种变化: +这里显示了平均价格如何随品种变化: Average price by variety -为了在模型中考虑品种,首先需要对其进行数值化,或称编码。编码有几种方法: +要考虑品种,首先需要将其转换为数值形式,也就是编码。有几种常用方法: -* 简单的数字编码会建立一个品种表,然后用该表中的索引替换品种名称。这对线性回归不是最优,因为线性回归将索引的数值直接参与计算,乘以某个系数后加到结果中。在这里,索引与价格关系明显非线性,即使索引按照特定顺序排列。 -* 独热编码会用四个不同的列替换掉 `Variety` 列,每个对应一个品种。对应品种的列取 1,其他列为 0。这样线性回归会得到四个系数,分别对应四种南瓜品种的“基础价”(或“附加价”)。 +* 简单的数字编码会建立一个不同品种的表,然后用表中的索引替代品种名称。对于线性回归来说,这不是最佳方法,因为线性回归会将索引的数值直接加权,然而索引和价格之间显然是非线性的,即便我们保证索引按特定方式排序。 +* 独热编码会用四个不同的列替代 `Variety` 列,每个品种一个列。相应行是该品种则该列为 `1`,否则为 `0`。这样线性回归就有了四个系数,对应四个南瓜品种,分别代表该品种的“起始价”(或更准确地说是“附加价”)。 -下面的代码展示如何对品种进行独热编码: +下面代码展示了如何对品种进行独热编码: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -293,23 +316,23 @@ pd.get_dummies(new_pumpkins['Variety']) ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE ----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738| 0 | 1 | 0 | 0 -1739| 0 | 1 | 0 | 0 -1740| 0 | 1 | 0 | 0 -1741| 0 | 1 | 0 | 0 -1742| 0 | 1 | 0 | 0 +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 -使用独热编码的品种作为输入训练线性回归,只需正确初始化 `X` 和 `y` 数据: +为了用独热编码后的品种训练线性回归,只需正确初始化 `X` 和 `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -其余代码与之前训练线性回归时相同。你尝试后会发现均方误差差不多,但决定系数大大提升到 ~77%。为了得到更精准的预测,可以同时考虑更多类别特征和数值特征,比如 `Month` 或 `DayOfYear`。要合并成一个大特征数组,可以使用 `join`: +其余代码与之前训练线性回归相同。尝试后你会发现均方误差差不多,但决定系数提高到了约 77%。要获得更准确的预测,可以同时考虑更多分类特征和数值特征,比如 `Month` 或 `DayOfYear`。要合并成一个完整特征数组,可使用 `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,11 +342,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -这里还考虑了 `City` 和 `Package` 类型,最后得到均方误差 2.84(10%),决定系数 0.94! +这里我们还考虑了 `City` 和 `Package` 类型,得到 RMSE 2.84(10.5%),决定系数 0.94! ## 综合应用 -为了做出最佳模型,我们可以结合上述例子中独热编码的类别特征和数值特征,再使用多项式回归。以下是完整代码,供你方便使用: +为了获得最佳模型,我们可以将上述示例中的组合(独热编码分类 + 数值特征)数据与多项式回归结合。下面是完整代码,方便参考: ```python # 设置训练数据 @@ -333,54 +356,54 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# 进行训练-测试集划分 +# 制作训练-测试集划分 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# 设置并训练流水线 +# 设置并训练管道 pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # 预测测试数据结果 pred = pipeline.predict(X_test) -# 计算均方误差和决定系数 -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# 计算均方根误差和决定系数 +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -这应该能达到接近 97% 的最高决定系数,均方误差为 2.23(约 8% 预测误差)。 +这将给出近 97% 的最高决定系数和 RMSE=2.23(约 8% 预测误差)。 -| 模型 | MSE | 决定系数 | -|--------------------------|---------------|---------------| -| `DayOfYear` 线性回归 | 2.77 (17.2%) | 0.07 | -| `DayOfYear` 多项式回归 | 2.73 (17.0%) | 0.08 | -| `Variety` 线性回归 | 5.24 (19.7%) | 0.77 | -| 所有特征 线性回归 | 2.84 (10.5%) | 0.94 | -| 所有特征 多项式回归 | 2.23 (8.25%) | 0.97 | +| 模型 | RMSE | 决定系数 | +|-------|-----|---------------| +| `DayOfYear` 线性 | 2.77(17.2%) | 0.07 | +| `DayOfYear` 多项式 | 2.73(17.0%) | 0.08 | +| `Variety` 线性 | 5.24(19.7%) | 0.77 | +| 所有特征 线性 | 2.84(10.5%) | 0.94 | +| 所有特征 多项式 | 2.23(8.25%) | 0.97 | -🏆 干得好!你在一节课中创建了四个回归模型,并将模型质量提升到了 97%。回归的最后一节课中,你将学习用逻辑回归确定类别。 +🏆 太棒了!你在本节课里创建了四个回归模型,并将模型质量提高到 97%。在回归的最后一部分,你将学习如何用逻辑回归做分类判定。 --- ## 🚀挑战 -尝试本笔记本中的几个不同变量,观察它们的相关性如何影响模型准确度。 +在此笔记本中测试多个不同变量,观察相关性与模型准确度的关系。 -## [课后小测](https://ff-quizzes.netlify.app/en/ml/) +## [课后测验](https://ff-quizzes.netlify.app/en/ml/) ## 复习与自学 -本课我们学习了线性回归。还有其他重要的回归类型。请学习逐步回归、岭回归、套索回归和弹性网方法。推荐课程:[斯坦福统计学习课程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +本节课我们学习了线性回归。还有其他重要的回归类型。请阅读关于逐步回归、岭回归(Ridge)、套索回归(Lasso)和弹性网(Elasticnet)技术。推荐学习的好课程是[斯坦福统计学习课程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## 作业 +## 练习 -[建立模型](assignment.md) +[构建模型](assignment.md) --- **免责声明**: -本文档是使用 AI 翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻译的。虽然我们力求准确,但请注意自动翻译可能包含错误或不准确之处。原始文档的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。 +本文档使用 AI 翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。虽然我们力求准确,但请注意自动翻译可能存在错误或不准确之处。原始文档的原语言版本应被视为权威来源。对于重要信息,建议采用专业人工翻译。我们不对因使用本翻译而产生的任何误解或误释承担责任。 \ No newline at end of file diff --git a/translations/zh-CN/2-Regression/3-Linear/solution/notebook.ipynb b/translations/zh-CN/2-Regression/3-Linear/solution/notebook.ipynb index 5577a31854..a6cef617b7 100644 --- a/translations/zh-CN/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/zh-CN/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 南瓜定价的线性和多项式回归 - 第三课\n", + "## 线性回归与多项式回归用于南瓜定价 - 课程3\n", "\n", "加载所需的库和数据集。将数据转换为包含数据子集的数据框:\n", "\n", - "- 仅获取按蒲式耳定价的南瓜\n", + "- 仅获取按蒲式耳计价的南瓜\n", "- 将日期转换为月份\n", "- 计算价格为高价和低价的平均值\n", - "- 将价格转换为按蒲式耳数量定价\n" + "- 将价格转换为反映按蒲式耳数量定价的价格\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "散点图提醒我们,我们只有从八月到十二月的月度数据。我们可能需要更多数据才能以线性方式得出结论。\n" + "散点图提醒我们只有从八月到十二月的月份数据。我们可能需要更多数据才能以线性方式得出结论。\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "让我们看看是否存在相关性:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "看起来相关性很小,但存在一些其他更重要的关系——因为上面图中的价格点似乎有几个不同的聚类。让我们制作一个图表来显示不同的南瓜品种:\n" + "看起来相关性相当小,但似乎有其他更重要的关系——因为上图中的价格点似乎有几个明显的聚类。我们来做一个显示不同南瓜品种的图:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "目前,我们先只专注于一种类型——派型。\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "线的斜率可以通过线性回归系数确定:\n" + "线的斜率可以从线性回归系数中确定:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### 多项式回归\n", "\n", - "有时,特征与结果之间的关系本质上是非线性的。例如,南瓜的价格可能在冬季(月份=1,2)较高,然后在夏季(月份=5-7)下降,之后再次上涨。线性回归无法准确捕捉这种关系。\n", + "有时,特征与结果之间的关系本质上是非线性的。例如,冬季(月份=1,2)南瓜价格可能很高,然后在夏季(月份=5-7)下降,随后再次上涨。线性回归无法准确拟合这种关系。\n", "\n", - "在这种情况下,我们可以考虑添加额外的特征。一种简单的方法是从输入特征中生成多项式,这样就形成了**多项式回归**。在 Scikit Learn 中,我们可以使用管道自动预计算多项式特征:\n" + "在这种情况下,我们可以考虑添加额外的特征。简单的方法是使用输入特征的多项式,这将导致多项式回归。在 Scikit Learn 中,我们可以使用管道自动预计算多项式特征:\n" ] }, { @@ -777,20 +781,23 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 编码品种\n", + "### 编码种类\n", "\n", - "在理想情况下,我们希望能够使用同一个模型预测不同南瓜品种的价格。为了考虑品种因素,我们首先需要将其转换为数值形式,也就是**编码**。有几种方法可以实现:\n", + "在理想情况下,我们希望能够使用相同的模型来预测不同南瓜品种的价格。为了考虑品种因素,我们首先需要将其转换为数值形式,或者说编码。我们可以有几种方法:\n", "\n", - "* 简单的数值编码,这种方法会构建一个不同品种的表格,然后用表中的索引替换品种名称。这对于线性回归来说并不是最好的选择,因为线性回归会考虑索引的数值,而这些数值可能与价格没有直接的数值相关性。\n", - "* 独热编码(One-hot encoding),这种方法会将`Variety`列替换为4个不同的列,每个品种对应一个列。如果某一行属于某个品种,该列的值为1,否则为0。\n", + "* 简单的数值编码,会构建一个不同品种的表格,然后用该表中的索引代替品种名称。这对线性回归来说不是最佳选择,因为线性回归会考虑索引的数值,而索引的数值往往与价格数值上不相关。\n", + "* 独热编码,会用 4 个不同的列替代 `Variety` 列,每个列对应一种品种,如果该行是该品种则值为 1,否则为 0。\n", "\n", "下面的代码展示了如何对品种进行独热编码:\n" ] @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 品种的线性回归\n", + "### 品种上的线性回归\n", "\n", - "我们现在将使用与上面相同的代码,但输入将从 `DayOfYear` 改为我们经过独热编码的品种:\n" + "我们现在将使用与上面相同的代码,但不是使用 `DayOfYear`,而是使用我们的一键编码品种作为输入:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "我们也可以以同样的方式尝试使用其他特征,并将它们与数值特征结合,例如 `Month` 或 `DayOfYear`:\n" + "我们也可以以相同的方式尝试使用其他特征,并将它们与数值特征(例如 `Month` 或 `DayOfYear`)结合起来:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### 多项式回归\n", "\n", - "多项式回归同样可以用于经过独热编码的分类特征。训练多项式回归的代码基本上与我们之前看到的代码相同。\n" + "多项式回归也可以用于经过独热编码的类别特征。训练多项式回归的代码基本上与我们上面看到的相同。\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**免责声明**: \n本文档使用AI翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而导致的任何误解或误读,我们概不负责。\n" + "---\n\n\n**免责声明**: \n本文件由 AI 翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻译而成。尽管我们努力确保准确性,但请注意自动翻译可能包含错误或不准确之处。原始的本地语言文件应被视为权威来源。对于关键信息,建议采用专业人工翻译。我们不对因使用本翻译而产生的任何误解或误释承担责任。\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-03T19:18:23+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "zh" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 9adfc00e7bc0cad35b2d08e5eb3faf06bfae4c7c Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 20:00:28 +0000 Subject: [PATCH 13/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/bn/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 118 +++---- .../bn/2-Regression/3-Linear/README.md | 295 ++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++-- translations/mr/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 118 +++---- .../mr/2-Regression/3-Linear/README.md | 323 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 79 +++-- translations/ne/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 118 +++---- .../ne/2-Regression/3-Linear/README.md | 289 ++++++++-------- .../3-Linear/solution/notebook.ipynb | 77 +++-- 12 files changed, 814 insertions(+), 714 deletions(-) diff --git a/translations/bn/.co-op-translator.json b/translations/bn/.co-op-translator.json index a62b57df09..7fbe01b123 100644 --- a/translations/bn/.co-op-translator.json +++ b/translations/bn/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "bn" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-04T21:07:33+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:57:30+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "bn" }, @@ -90,8 +90,8 @@ "language_code": "bn" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:52:26+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:56:52+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "bn" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "bn" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:54:42+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "bn" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T20:58:49+00:00", diff --git a/translations/bn/1-Introduction/4-techniques-of-ML/README.md b/translations/bn/1-Introduction/4-techniques-of-ML/README.md index d5b49b1e5e..2aa0a6e730 100644 --- a/translations/bn/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/bn/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,127 @@ -# মেশিন লার্নিং এর কৌশলসমূহ +# মেশিন লার্নিংয়ের প্রযুক্তি -মেশিন লার্নিং মডেল তৈরি, ব্যবহার এবং রক্ষণাবেক্ষণের প্রক্রিয়া এবং এই মডেলগুলোর জন্য ব্যবহৃত ডেটা অন্যান্য ডেভেলপমেন্ট ওয়ার্কফ্লো থেকে অনেকটাই আলাদা। এই পাঠে, আমরা এই প্রক্রিয়াকে সহজবোধ্য করব এবং প্রধান কৌশলগুলো তুলে ধরব যা আপনাকে জানতে হবে। আপনি: +মেশিন লার্নিং মডেল তৈরির, ব্যবহারের এবং রক্ষণাবেক্ষণের প্রক্রিয়া এবং তারা যে ডেটা ব্যবহার করে তা অনেক অন্যান্য ডেভেলপমেন্ট ওয়ার্কফ্লো থেকে অনেক ভিন্ন প্রক্রিয়া। এই পাঠে, আমরা এই প্রক্রিয়াটি স্পষ্ট করব এবং আপনার জানা প্রয়োজন এমন প্রধান প্রযুক্তিগুলি তুলে ধরব। আপনি করতে পারবেন: -- উচ্চ পর্যায়ে মেশিন লার্নিং এর প্রক্রিয়াগুলো বুঝতে পারবেন। -- 'মডেল', 'প্রেডিকশন', এবং 'ট্রেনিং ডেটা' এর মতো মৌলিক ধারণাগুলো অন্বেষণ করবেন। +- উচ্চ স্তরে মেশিন লার্নিংয়ের ভিত্তি প্রক্রিয়াগুলি বুঝতে। +- 'মডেল', 'পূর্বাভাস', এবং 'প্রশিক্ষণ ডেটা' এর মতো মূল ধারণাগুলি অন্বেষণ করতে। -## [পূর্ব-পাঠ কুইজ](https://ff-quizzes.netlify.app/en/ml/) +## [পাঠের পূর্বে কুইজ](https://ff-quizzes.netlify.app/en/ml/) -[![শুরু থেকে মেশিন লার্নিং - মেশিন লার্নিং এর কৌশল](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "শুরু থেকে মেশিন লার্নিং - মেশিন লার্নিং এর কৌশল") +[![শিখনশীলদের জন্য মেশিন লার্নিং - প্রযুক্তি](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "শিখনশীলদের জন্য মেশিন লার্নিং - প্রযুক্তি") -> 🎥 উপরের ছবিতে ক্লিক করুন এই পাঠের একটি সংক্ষিপ্ত ভিডিও দেখার জন্য। +> 🎥 এই পাঠের একটি সংক্ষিপ্ত ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন। -## ভূমিকা +## পরিচিতি -উচ্চ পর্যায়ে, মেশিন লার্নিং (ML) প্রক্রিয়া তৈরি করার কাজটি কয়েকটি ধাপে বিভক্ত: +উচ্চ স্তরে, মেশিন লার্নিং (এমএল) প্রক্রিয়া তৈরির কলা অনেক ধাপে বিভক্ত: -1. **প্রশ্ন নির্ধারণ করুন**। বেশিরভাগ ML প্রক্রিয়া এমন একটি প্রশ্ন দিয়ে শুরু হয় যা একটি সাধারণ শর্তযুক্ত প্রোগ্রাম বা নিয়ম-ভিত্তিক ইঞ্জিন দ্বারা উত্তর দেওয়া সম্ভব নয়। এই প্রশ্নগুলো সাধারণত ডেটার উপর ভিত্তি করে ভবিষ্যদ্বাণী করার দিকে মনোনিবেশ করে। -2. **ডেটা সংগ্রহ এবং প্রস্তুত করুন**। আপনার প্রশ্নের উত্তর দিতে, আপনাকে ডেটা প্রয়োজন। আপনার ডেটার গুণমান এবং কখনও কখনও পরিমাণ নির্ধারণ করবে আপনি কতটা ভালোভাবে আপনার প্রশ্নের উত্তর দিতে পারবেন। ডেটা ভিজ্যুয়ালাইজ করা এই ধাপের একটি গুরুত্বপূর্ণ অংশ। এই ধাপে ডেটাকে ট্রেনিং এবং টেস্টিং গ্রুপে ভাগ করাও অন্তর্ভুক্ত। -3. **ট্রেনিং পদ্ধতি নির্বাচন করুন**। আপনার প্রশ্ন এবং ডেটার প্রকৃতির উপর নির্ভর করে, আপনাকে একটি মডেল ট্রেন করার পদ্ধতি নির্বাচন করতে হবে যা আপনার ডেটাকে সঠিকভাবে প্রতিফলিত করে এবং এর বিরুদ্ধে সঠিক ভবিষ্যদ্বাণী করতে পারে। এই অংশটি নির্দিষ্ট দক্ষতা এবং প্রায়শই উল্লেখযোগ্য পরিমাণ পরীক্ষার প্রয়োজন। -4. **মডেল ট্রেন করুন**। আপনার ট্রেনিং ডেটা ব্যবহার করে, আপনি বিভিন্ন অ্যালগরিদম ব্যবহার করে একটি মডেল ট্রেন করবেন যা ডেটার প্যাটার্নগুলো চিনতে পারে। মডেলটি অভ্যন্তরীণ ওজন ব্যবহার করতে পারে যা ডেটার নির্দিষ্ট অংশগুলোকে প্রাধান্য দিতে সামঞ্জস্য করা যায়। -5. **মডেল মূল্যায়ন করুন**। আপনার সংগ্রহ করা সেট থেকে আগে কখনও দেখা না হওয়া ডেটা (আপনার টেস্টিং ডেটা) ব্যবহার করে আপনি মডেলটি কেমন পারফর্ম করছে তা দেখতে পারেন। -6. **প্যারামিটার টিউনিং**। আপনার মডেলের পারফরম্যান্সের উপর ভিত্তি করে, আপনি বিভিন্ন প্যারামিটার বা ভেরিয়েবল ব্যবহার করে প্রক্রিয়াটি পুনরায় করতে পারেন যা মডেল ট্রেন করার জন্য ব্যবহৃত অ্যালগরিদমের আচরণ নিয়ন্ত্রণ করে। -7. **প্রেডিকশন করুন**। নতুন ইনপুট ব্যবহার করে আপনার মডেলের সঠিকতা পরীক্ষা করুন। +1. **প্রশ্ন নির্ধারণ করুন**। বেশিরভাগ এমএল প্রক্রিয়া একটি প্রশ্ন নিয়ে শুরু হয় যা সাধারণ শর্তসাপেক্ষ প্রোগ্রাম বা নিয়ম ভিত্তিক ইঞ্জিন দ্বারা উত্তর দেওয়া যায় না। এই প্রশ্নগুলি প্রায়শই ডেটার সংগ্রহের উপর ভিত্তি করে পূর্বাভাস নিয়ে আবর্তিত হয়। +2. **ডেটা সংগ্রহ ও প্রস্তুতি**। আপনার প্রশ্নের উত্তর দিতে হলে আপনাকে ডেটা দরকার। আপনার ডেটার গুণগতমান এবং কখনও কখনও পরিমাণ নির্ধারণ করবে আপনি কত ভাল আপনার প্রাথমিক প্রশ্নের উত্তর দিতে পারবেন। ডেটা ভিজ্যুয়ালাইজ করা এই ধাপের একটি গুরুত্বপূর্ণ অংশ। এই ধাপে ডেটাকে প্রশিক্ষণ এবং পরীক্ষার গ্রুপে ভাগ করার কাজও অন্তর্ভুক্ত রয়েছে মডেল তৈরি করতে। +3. **প্রশিক্ষণ পদ্ধতি নির্বাচন করুন**। আপনার প্রশ্ন ও ডেটার প্রকৃতির উপর নির্ভর করে, আপনাকে একটি মডেল ট্রেন করতে হবে যা আপনার ডেটাকে সেরা প্রতিফলিত করবে এবং তার বিরুদ্ধে সঠিক পূর্বাভাস দেবে। এটি আপনার এমএল প্রক্রিয়ার অংশ যা নির্দিষ্ট দক্ষতা এবং প্রায়ই প্রচুর পরীক্ষা নিরীক্ষা প্রয়োজন। +4. **মডেল প্রশিক্ষণ দিন**। আপনার প্রশিক্ষণ ডেটা ব্যবহার করে, আপনি বিভিন্ন অ্যালগরিদম ব্যবহার করে একটি মডেল ট্রেন করবেন যা ডেটায় প্যাটার্ন চিনতে পারে। মডেলটি অন্তর্নিহিত ওজন ব্যবহার করতে পারে যা ডেটার নির্দিষ্ট অংশকে অন্য অংশের থেকে বেশি গুরুত্ব দিতে সমন্বয়যোগ্য যাতে একটি ভাল মডেল তৈরি হয়। +5. **মডেল মূল্যায়ন করুন**। আপনি আগে কখনও দেখা না হওয়া ডেটা (আপনার পরীক্ষার ডেটা) ব্যবহার করে দেখতে পারেন মডেল কতটা কার্যকর। +6. **প্যারামিটার সমন্বয়**। মডেলের কার্যক্ষমতার উপর ভিত্তি করে, আপনি বিভিন্ন প্যারামিটার বা ভেরিয়েবল ব্যবহার করে প্রক্রিয়াটি পুনরায় করতে পারেন যা মডেল ট্রেন করতে ব্যবহৃত অ্যালগরিদমগুলোর আচরণ নিয়ন্ত্রণ করে। +7. **পূর্বাভাস দিন**। নতুন ইনপুট ব্যবহার করে মডেলের সঠিকতা পরীক্ষা করুন। ## কোন প্রশ্ন করবেন -কম্পিউটার ডেটার মধ্যে লুকানো প্যাটার্ন আবিষ্কার করতে বিশেষভাবে দক্ষ। এই দক্ষতা গবেষকদের জন্য খুবই সহায়ক যারা একটি নির্দিষ্ট বিষয়ে এমন প্রশ্ন করেন যা শর্তযুক্ত নিয়ম ইঞ্জিন তৈরি করে সহজে উত্তর দেওয়া সম্ভব নয়। উদাহরণস্বরূপ, একটি অ্যাকচুয়ারিয়াল কাজের ক্ষেত্রে, একজন ডেটা বিজ্ঞানী ধূমপায়ী বনাম অ-ধূমপায়ীদের মৃত্যুহারের চারপাশে হাতে তৈরি নিয়ম তৈরি করতে পারেন। +কম্পিউটার ডেটায় লুকানো প্যাটার্ন আবিষ্কারে বিশেষ দক্ষ। গবেষকদের জন্য যারা একটি নির্দিষ্ট ক্ষেত্রে প্রশ্ন রাখেন এবং যেগুলোর উত্তর সহজে শর্তসাপেক্ষ নিয়ম ইঞ্জিন তৈরির মাধ্যমে পাওয়া যায় না, এটি খুব সাহায্যকারী। -যখন অনেক অন্যান্য ভেরিয়েবল সমীকরণে যুক্ত হয়, তখন একটি ML মডেল অতীত স্বাস্থ্য ইতিহাসের উপর ভিত্তি করে ভবিষ্যতের মৃত্যুহার পূর্বাভাস দিতে আরও দক্ষ হতে পারে। একটি আরও আনন্দদায়ক উদাহরণ হতে পারে এপ্রিল মাসে একটি নির্দিষ্ট স্থানের জন্য আবহাওয়ার পূর্বাভাস তৈরি করা, যেখানে ডেটা অন্তর্ভুক্ত করে অক্ষাংশ, দ্রাঘিমাংশ, জলবায়ু পরিবর্তন, সমুদ্রের নিকটবর্তীতা, জেট স্ট্রিমের প্যাটার্ন এবং আরও অনেক কিছু। +উদাহরণস্বরূপ, একটি অ্যাকচুয়ারিয়াল কাজ দেওয়া হলে, একজন ডেটা সায়েন্টিস্ট ধূমপায়ী ও অ-ধূমপায়ীদের মৃত্যু হার নিয়ন্ত্রণ করে তৈরি কাস্টম নিয়ম তৈরি করতে পারেন। -✅ এই [স্লাইড ডেক](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) আবহাওয়া বিশ্লেষণে ML ব্যবহারের জন্য একটি ঐতিহাসিক দৃষ্টিভঙ্গি প্রদান করে। +কিন্তু যখন আরও অনেক ভেরিয়েবল যুক্ত হয়, তখন এমএল মডেল অতীত স্বাস্থ্যের ইতিহাসের ভিত্তিতে ভবিষ্যত মৃত্যুহার পূর্বাভাস দেওয়া আরও কার্যকর প্রমাণিত হতে পারে। একটি আনন্দদায়ক উদাহরণ হতে পারে এপ্রিল মাসে একটি নির্দিষ্ট স্থানে আবহাওয়ার পূর্বাভাস দেওয়া, যেখানে ডেটাতে অন্তর্ভুক্ত রয়েছে অক্ষাংশ, দ্রাঘিমাংশ, জলবায়ু পরিবর্তন, মহাসাগরের নিকটতা, জেট স্ট্রিমের প্যাটার্ন প্রভৃতি। -## মডেল তৈরির পূর্ববর্তী কাজ +✅ এই [স্লাইড ডেক](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) আবহাওয়ার মডেল নিয়ে একটি ঐতিহাসিক দৃষ্টিভঙ্গি দেয় যা আবহাওয়া বিশ্লেষণে এমএল ব্যবহারের বিষয়ে। -আপনার মডেল তৈরি শুরু করার আগে, কয়েকটি কাজ সম্পন্ন করতে হবে। আপনার প্রশ্ন পরীক্ষা করতে এবং একটি মডেলের পূর্বাভাসের উপর ভিত্তি করে একটি হাইপোথিসিস তৈরি করতে, আপনাকে কয়েকটি উপাদান চিহ্নিত এবং কনফিগার করতে হবে। +## মডেল তৈরির পূর্বের কাজ + +মডেল তৈরি শুরু করার আগে আপনাকে কিছু কাজ শেষ করতে হবে। আপনার প্রশ্ন পরীক্ষা করার এবং মডেলের পূর্বাভাসের ভিত্তিতে একটি অনুমান গড়ে তোলার জন্য আপনাকে কয়েকটি উপাদান চিহ্নিত এবং কনফিগার করতে হবে। ### ডেটা -আপনার প্রশ্নের উত্তর নিশ্চিতভাবে দিতে, সঠিক ধরনের পর্যাপ্ত ডেটা প্রয়োজন। এই পর্যায়ে আপনাকে দুটি কাজ করতে হবে: +আপনার প্রশ্নের নিশ্চিত উত্তর দেওয়ার জন্য সঠিক ধরনের প্রচুর ডেটা প্রয়োজন। এ সময় আপনাকে দুটি জিনিস করতে হবে: -- **ডেটা সংগ্রহ করুন**। ডেটা বিশ্লেষণে ন্যায্যতার উপর পূর্ববর্তী পাঠটি মনে রেখে, আপনার ডেটা যত্ন সহকারে সংগ্রহ করুন। এই ডেটার উৎস, এর অন্তর্নিহিত পক্ষপাত এবং এর উৎপত্তি নথিভুক্ত করুন। -- **ডেটা প্রস্তুত করুন**। ডেটা প্রস্তুতির প্রক্রিয়ায় কয়েকটি ধাপ রয়েছে। আপনি যদি বিভিন্ন উৎস থেকে ডেটা সংগ্রহ করেন, তাহলে এটি একত্রিত এবং স্বাভাবিকীকরণ করতে হতে পারে। ডেটার গুণমান এবং পরিমাণ উন্নত করতে বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন, যেমন স্ট্রিংকে সংখ্যায় রূপান্তর করা (যেমন আমরা [ক্লাস্টারিং](../../5-Clustering/1-Visualize/README.md) এ করি)। আপনি মূল ডেটার উপর ভিত্তি করে নতুন ডেটা তৈরি করতে পারেন (যেমন আমরা [ক্লাসিফিকেশন](../../4-Classification/1-Introduction/README.md) এ করি)। আপনি ডেটা পরিষ্কার এবং সম্পাদনা করতে পারেন (যেমন আমরা [ওয়েব অ্যাপ](../../3-Web-App/README.md) পাঠের আগে করি)। অবশেষে, আপনার ট্রেনিং কৌশলের উপর নির্ভর করে, আপনি এটি র‍্যান্ডমাইজ এবং শাফল করতে পারেন। +- **ডেটা সংগ্রহ করুন**। পূর্বের পাঠের ফেয়ারনেস বা ন্যায়পরায়ণতা বিষয়টি মাথায় রেখে, সাবধানে ডেটা সংগ্রহ করুন। এই ডেটা উৎস সম্পর্কে সচেতন থাকুন, কোনও অন্তর্নিহিত পক্ষপাত থাকলে জানুন এবং তার উত্স ডকুমেন্ট করুন। +- **ডেটা প্রস্তুত করুন**। ডেটা প্রস্তুতির কয়েকটি ধাপ রয়েছে। আপনি যদি ডেটা বিভিন্ন উৎস থেকে সংগ্রহ করেন তবে সেটি একত্রিত ও স্বাভাবিককরণ করতে হবে। আপনি ডেটার মান ও পরিমাণ উন্নত করতে পারবেন বিভিন্ন পদ্ধতি ব্যবহার করে যেমন স্ট্রিং থেকে সংখ্যা রূপান্তর (যেমন আমরা [ক্লাস্টারিং](../../5-Clustering/1-Visualize/README.md) এ করি)। আপনি নতুন ডেটাও তৈরি করতে পারেন মূল ডেটার ওপর ভিত্তি করে (যেমন আমরা [ক্লাসিফিকেশন](../../4-Classification/1-Introduction/README.md) এ করি)। আপনি ডেটা পরিষ্কার ও সম্পাদনা করতে পারেন (যেমন আমরা [ওয়েব অ্যাপ](../../3-Web-App/README.md) পাঠের আগে করব)। শেষ পর্যন্ত, আপনি যদি প্রয়োজন হয় তবে ডেটা র‍্যান্ডমাইজ ও শাফলও করতে পারেন প্রশিক্ষণ প্রযুক্তির ওপর নির্ভর করে। -✅ ডেটা সংগ্রহ এবং প্রক্রিয়াকরণের পরে, একটি মুহূর্ত নিন এবং দেখুন এর আকৃতি আপনার উদ্দেশ্যপ্রাপ্ত প্রশ্নের উত্তর দিতে সক্ষম কিনা। হতে পারে যে ডেটা আপনার নির্দিষ্ট কাজের জন্য ভালো পারফর্ম করবে না, যেমন আমরা আমাদের [ক্লাস্টারিং](../../5-Clustering/1-Visualize/README.md) পাঠে আবিষ্কার করি! +✅ ডেটা সংগ্রহ ও প্রক্রিয়াকরণের পরে, কয়েক মুহুর্ত নিন দেখে নিতে ডেটার আকৃতি আপনার প্রশ্নের উত্তর দেওয়ার জন্য যথেষ্ট কিনা। হয়তো ডেটা আপনার কাজের জন্য ভাল কার্যকর নাও হতে পারে, যেমন আমরা আমাদের [ক্লাস্টারিং](../../5-Clustering/1-Visualize/README.md) পাঠে আবিষ্কার করি! -### ফিচার এবং টার্গেট +### ফিচার ও টার্গেট -একটি [ফিচার](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) হলো আপনার ডেটার একটি পরিমাপযোগ্য বৈশিষ্ট্য। অনেক ডেটাসেটে এটি একটি কলামের শিরোনাম হিসেবে প্রকাশিত হয়, যেমন 'তারিখ', 'আকার' বা 'রঙ'। আপনার ফিচার ভেরিয়েবল, সাধারণত কোডে `X` দ্বারা প্রতিনিধিত্ব করা হয়, ইনপুট ভেরিয়েবলকে উপস্থাপন করে যা মডেল ট্রেন করতে ব্যবহৃত হবে। +একটি [ফিচার](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) হল আপনার ডেটার একটি পরিমাপযোগ্য বৈশিষ্ট্য। অনেক ডেটাসেটে এটি একটি কলামের শিরোনামের মতো প্রকাশ পায় যেমন 'তারিখ', 'আকার' বা 'রঙ'। আপনার ফিচার ভেরিয়েবল, যা সাধারণত কোডে `X` দ্বারা প্রকাশিত হয়, হল ইনপুট ভেরিয়েবল যেটা মডেল ট্রেন করতে ব্যবহৃত হয়। -টার্গেট হলো সেই জিনিস যা আপনি পূর্বাভাস দিতে চেষ্টা করছেন। টার্গেট সাধারণত কোডে `y` দ্বারা প্রতিনিধিত্ব করা হয় এবং এটি সেই প্রশ্নের উত্তর উপস্থাপন করে যা আপনি আপনার ডেটার কাছে করতে চান: ডিসেম্বর মাসে কোন **রঙের** কুমড়া সবচেয়ে সস্তা হবে? সান ফ্রান্সিসকোতে কোন এলাকায় রিয়েল এস্টেটের **মূল্য** সবচেয়ে ভালো হবে? কখনও কখনও টার্গেটকে লেবেল অ্যাট্রিবিউটও বলা হয়। +একটি টার্গেট হল আপনি যা পূর্বাভাস দিতে চান। টার্গেট, সাধারণত কোডে `y` দ্বারা প্রকাশিত, আপনার প্রশ্নের উত্তর যা আপনি আপনার ডেটাতে করতে চান: ডিসেম্বর মাসে কোন **রঙের** কুমড়ো সবচেয়ে সস্তা হবে? সান ফ্রান্সিস্কোতে কোন পাড়াগুলো সবচেয়ে ভাল রিয়েল এস্টেট **মূল্য** থাকবে? টার্গেটকে কখনও কখনও লেবেল অ্যাট্রিবিউটও বলা হয়। -### আপনার ফিচার ভেরিয়েবল নির্বাচন করুন +### আপনার ফিচার ভেরিয়েবল নির্বাচন -🎓 **ফিচার সিলেকশন এবং ফিচার এক্সট্রাকশন** মডেল তৈরি করার সময় কোন ভেরিয়েবল নির্বাচন করবেন তা কীভাবে জানবেন? আপনি সম্ভবত ফিচার সিলেকশন বা ফিচার এক্সট্রাকশনের একটি প্রক্রিয়ার মধ্য দিয়ে যাবেন সেরা পারফর্মিং মডেলের জন্য সঠিক ভেরিয়েবলগুলো নির্বাচন করতে। তবে, এগুলো একই জিনিস নয়: "ফিচার এক্সট্রাকশন মূল ফিচারগুলোর ফাংশন থেকে নতুন ফিচার তৈরি করে, যেখানে ফিচার সিলেকশন ফিচারগুলোর একটি সাবসেট প্রদান করে।" ([উৎস](https://wikipedia.org/wiki/Feature_selection)) +🎓 **ফিচার সিলেকশন ও ফিচার এক্সট্র্যাকশন** একটি মডেল তৈরি করার সময় কোন ভেরিয়েবল বেছে নিবেন কিভাবে বুঝবেন? আপনি সম্ভবত সেরা কর্মক্ষম মডেলের জন্য সঠিক ভেরিয়েবল বাছাই করতে ফিচার সিলেকশন বা এক্সট্র্যাকশন প্রক্রিয়ার মধ্য দিয়ে যাবেন। তবে এরা একই নয়: "ফিচার এক্সট্র্যাকশন মূল ফিচার থেকে নতুন ফিচার তৈরি করে, আর ফিচার সিলেকশন ফিচারের একটি উপসেট প্রদান করে।" ([সূত্র](https://wikipedia.org/wiki/Feature_selection)) ### আপনার ডেটা ভিজ্যুয়ালাইজ করুন -একজন ডেটা বিজ্ঞানীর টুলকিটের একটি গুরুত্বপূর্ণ দিক হলো ডেটাকে ভিজ্যুয়ালাইজ করার ক্ষমতা, যা Seaborn বা MatPlotLib এর মতো চমৎকার লাইব্রেরি ব্যবহার করে করা যায়। আপনার ডেটাকে ভিজ্যুয়ালি উপস্থাপন করা আপনাকে লুকানো সম্পর্কগুলো আবিষ্কার করতে সাহায্য করতে পারে যা আপনি কাজে লাগাতে পারেন। আপনার ভিজ্যুয়ালাইজেশনগুলো আপনাকে পক্ষপাত বা ভারসাম্যহীন ডেটা আবিষ্কার করতেও সাহায্য করতে পারে (যেমন আমরা [ক্লাসিফিকেশন](../../4-Classification/2-Classifiers-1/README.md) এ আবিষ্কার করি)। +ডেটা সায়েন্টিস্টের টুলকিটের একটি গুরুত্বপূর্ণ অংশ হলো পাওয়ারফুল ভিজ্যুয়াল লাইব্রেরি ব্যবহার করে ডেটাকে ভিজ্যুয়ালাইজ করার ক্ষমতা যেমন Seaborn বা MatPlotLib। আপনার ডেটাকে ভিজ্যুয়ালভাবে প্রতিনিধিত্ব করা হয়তো আপনাকে লুকানো সম্পর্ক আবিষ্কার করতে সাহায্য করবে যা আপনি কাজে লাগাতে পারেন। আপনার ভিজ্যুয়ালাইজেশন হয়তো পক্ষপাত বা অসমতল ডেটাও উন্মোচন করতে সাহায্য করবে (যেমন আমরা [ক্লাসিফিকেশন](../../4-Classification/2-Classifiers-1/README.md) এ আবিষ্কার করি)। ### আপনার ডেটাসেট ভাগ করুন -ট্রেনিংয়ের আগে, আপনাকে আপনার ডেটাসেটকে অসম আকারের দুই বা ততোধিক অংশে ভাগ করতে হবে যা এখনও ডেটাকে ভালোভাবে উপস্থাপন করে। +প্রশিক্ষণের আগে, আপনাকে আপনার ডেটাসেটকে দুই বা ততোধিক অসম আকারের অংশে ভাগ করতে হবে যা ডেটার ভাল প্রতিনিধিত্ব করবে। -- **ট্রেনিং**। ডেটাসেটের এই অংশটি আপনার মডেলে ফিট করা হয় এটি ট্রেন করার জন্য। এটি মূল ডেটাসেটের বেশিরভাগ অংশ নিয়ে গঠিত। -- **টেস্টিং**। একটি টেস্ট ডেটাসেট হলো একটি স্বাধীন ডেটার গ্রুপ, যা প্রায়শই মূল ডেটা থেকে সংগ্রহ করা হয়, যা আপনি তৈরি করা মডেলের পারফরম্যান্স নিশ্চিত করতে ব্যবহার করেন। -- **ভ্যালিডেটিং**। একটি ভ্যালিডেশন সেট হলো একটি ছোট স্বাধীন উদাহরণের গ্রুপ যা আপনি মডেলের হাইপারপ্যারামিটার বা আর্কিটেকচার টিউন করতে ব্যবহার করেন, মডেলটি উন্নত করতে। আপনার ডেটার আকার এবং আপনি যে প্রশ্ন করছেন তার উপর নির্ভর করে, আপনি এই তৃতীয় সেট তৈরি করতে নাও পারেন (যেমন আমরা [টাইম সিরিজ ফোরকাস্টিং](../../7-TimeSeries/1-Introduction/README.md) এ উল্লেখ করি)। +- **প্রশিক্ষণ**। ডেটাসেটের এই অংশটি আপনার মডেল ট্রেন করতে ব্যবহার হয়। এটি মূল ডেটাসেটের সর্বাধিক অংশ। +- **পরীক্ষা**। একটি পরীক্ষার ডেটাসেট একটি স্বাধীন ডেটা গ্রুপ যা সাধারণত মূল ডেটা থেকে সংগৃহীত হয়, যেটি আপনি তৈরি মডেলের কার্যক্ষমতা যাচাই করার জন্য ব্যবহার করবেন। +- **ভ্যালিডেশন**। একটি ভ্যালিডেশন সেট হল ছোট একটি স্বাধীন উদাহরণসমূহের দল যা আপনি মডেলের হাইপারপ্যারামিটার বা আর্কিটেকচার উন্নত করার জন্য ব্যবহার করবেন। আপনার ডেটার আকার এবং প্রশ্নের ওপর নির্ভর করে, হয়তো আপনাকে এই তৃতীয় সেট তৈরি করতে হবে না (যেমন আমরা [টাইম সিরিজ ফরকাস্টিং](../../7-TimeSeries/1-Introduction/README.md) এ উল্লেখ করেছি)। -## মডেল তৈরি করা +## মডেল তৈরি -আপনার ট্রেনিং ডেটা ব্যবহার করে, আপনার লক্ষ্য হলো একটি মডেল তৈরি করা, বা আপনার ডেটার একটি পরিসংখ্যানগত উপস্থাপনা, যা বিভিন্ন অ্যালগরিদম ব্যবহার করে **ট্রেন** করা হয়। মডেল ট্রেনিং ডেটার সাথে এক্সপোজার পায় এবং এটি আবিষ্কৃত প্যাটার্নগুলো সম্পর্কে অনুমান করতে পারে, যাচাই করতে পারে এবং গ্রহণ বা প্রত্যাখ্যান করতে পারে। +আপনার প্রশিক্ষণ ডেটা ব্যবহার করে, আপনার লক্ষ্য হলো একটি মডেল বা আপনার ডেটার একটি পরিসংখ্যানগত প্রতিনিধিত্ব তৈরি করা বিভিন্ন অ্যালগরিদম ব্যবহার করে **ট্রেন** করার জন্য। মডেল প্রশিক্ষণ মানে মডেলকে ডেটার নিদর্শন চিনতে শেখানো, অনুমান করা এবং যাচাই করার সুযোগ দেয়, এবং তারপরে তা গ্রহণ বা প্রত্যাখ্যান করে। -### ট্রেনিং পদ্ধতি নির্ধারণ করুন +### একটি প্রশিক্ষণ পদ্ধতি নির্ধারণ করুন -আপনার প্রশ্ন এবং ডেটার প্রকৃতির উপর নির্ভর করে, আপনি এটি ট্রেন করার একটি পদ্ধতি নির্বাচন করবেন। [Scikit-learn এর ডকুমেন্টেশন](https://scikit-learn.org/stable/user_guide.html) এর মধ্য দিয়ে হাঁটলে - যা আমরা এই কোর্সে ব্যবহার করি - আপনি মডেল ট্রেন করার অনেক উপায় অন্বেষণ করতে পারেন। আপনার অভিজ্ঞতার উপর নির্ভর করে, আপনি সেরা মডেল তৈরি করতে একাধিক পদ্ধতি চেষ্টা করতে হতে পারে। আপনি সম্ভবত একটি প্রক্রিয়ার মধ্য দিয়ে যাবেন যেখানে ডেটা বিজ্ঞানীরা একটি মডেলের পারফরম্যান্স মূল্যায়ন করেন, এটি অদেখা ডেটা দিয়ে পরীক্ষা করেন, সঠিকতা, পক্ষপাত এবং অন্যান্য গুণমান-হ্রাসকারী সমস্যাগুলো পরীক্ষা করেন এবং নির্দিষ্ট কাজের জন্য সবচেয়ে উপযুক্ত ট্রেনিং পদ্ধতি নির্বাচন করেন। +আপনার প্রশ্ন ও ডেটার প্রকৃতির উপর নির্ভর করে আপনি একটি পদ্ধতি নির্বাচন করবেন মডেল ট্রেন করার জন্য। [Scikit-learn এর ডকুমেন্টেশন](https://scikit-learn.org/stable/user_guide.html) - যেটা আমরা এই কোর্সে ব্যবহার করি - অনুসরণ করলে আপনি অনেক পদ্ধতিতে মডেল ট্রেন করা অন্বেষণ করতে পারবেন। আপনার অভিজ্ঞতার ওপর ভিত্তি করে, সম্ভবত আপনাকে সেরা মডেল তৈরির জন্য বিভিন্ন পদ্ধতি চেষ্টা করতে হবে। সাধারণত ডেটা সায়েন্টিস্টরা একটি মডেলের কার্যকারিতা মূল্যায়ন করেন অদেখা ডেটা খাওয়িয়ে, সঠিকতা, পক্ষপাত এবং অন্যান্য গুণগত সমস্যা যাচাই করে, এবং কাজের জন্য সবচেয়ে উপযুক্ত প্রশিক্ষণ পদ্ধতি বেছে নেন। -### একটি মডেল ট্রেন করুন +### মডেল প্রশিক্ষণ দিন -আপনার ট্রেনিং ডেটা নিয়ে, আপনি এটি 'ফিট' করতে প্রস্তুত একটি মডেল তৈরি করতে। আপনি লক্ষ্য করবেন যে অনেক ML লাইব্রেরিতে আপনি 'model.fit' কোডটি পাবেন - এটি সেই সময় যখন আপনি আপনার ফিচার ভেরিয়েবলকে একটি মানের অ্যারে (সাধারণত 'X') এবং একটি টার্গেট ভেরিয়েবল (সাধারণত 'y') পাঠান। +আপনার প্রশিক্ষণ ডেটা নিয়ে আপনি প্রস্তুত 'ফিট' করার জন্য একটি মডেল তৈরি করতে। অনেক এমএল লাইব্রেরিতে আপনি কোডে 'model.fit' দেখবেন - এই সময় আপনি আপনার ফিচার ভেরিয়েবলকে মানের এরে (সাধারণত 'X') এবং টার্গেট ভেরিয়েবল (সাধারণত 'y') হিসাবে পাঠান। ### মডেল মূল্যায়ন করুন -ট্রেনিং প্রক্রিয়া সম্পন্ন হওয়ার পরে (একটি বড় মডেল ট্রেন করতে অনেক পুনরাবৃত্তি বা 'epochs' লাগতে পারে), আপনি টেস্ট ডেটা ব্যবহার করে মডেলের গুণমান মূল্যায়ন করতে পারবেন। এই ডেটা মূল ডেটার একটি সাবসেট যা মডেল আগে বিশ্লেষণ করেনি। আপনি মডেলের গুণমান সম্পর্কে একটি মেট্রিক টেবিল প্রিন্ট করতে পারেন। +প্রশিক্ষণ প্রক্রিয়া শেষ হলে (একটি বড় মডেল ট্রেন করতে অনেক পুনরাবৃত্তি বা 'ইপোক' লাগতে পারে), আপনি মডেলের গুণমান মূল্যায়ন করতে পারবেন। এর জন্য আপনি পরীক্ষার ডেটা ব্যবহার করবেন যা মডেল আগেই বিশ্লেষণ করে নি। আপনি মডেলের গুণমান সম্পর্কে মেট্রিক্সের একটি টেবিল প্রিন্ট করতে পারবেন। 🎓 **মডেল ফিটিং** -মেশিন লার্নিং এর প্রসঙ্গে, মডেল ফিটিং একটি মডেলের অন্তর্নিহিত ফাংশনের সঠিকতা নির্দেশ করে, যেটি এমন ডেটা বিশ্লেষণ করার চেষ্টা করে যা এটি আগে থেকে জানে না। +মেশিন লার্নিং প্রসঙ্গে, মডেল ফিটিং মানে হলো মডেলের অন্তর্নিহিত ফাংশনের সঠিকতা, যখন এটি অপরিচিত ডেটা বিশ্লেষণ করার চেষ্টা করে। -🎓 **আন্ডারফিটিং** এবং **ওভারফিটিং** সাধারণ সমস্যা যা মডেলের গুণমানকে হ্রাস করে, কারণ মডেলটি যথাযথভাবে ফিট হয় না বা খুব বেশি ফিট হয়। এটি মডেলকে এমন পূর্বাভাস দিতে বাধ্য করে যা তার ট্রেনিং ডেটার সাথে খুব বেশি বা খুব কম সংযুক্ত থাকে। একটি ওভারফিট মডেল ট্রেনিং ডেটাকে খুব ভালোভাবে পূর্বাভাস দেয় কারণ এটি ডেটার বিস্তারিত এবং শব্দ খুব ভালোভাবে শিখেছে। একটি আন্ডারফিট মডেল সঠিক নয় কারণ এটি তার ট্রেনিং ডেটা বা এটি যে ডেটা এখনও 'দেখেনি' তা সঠিকভাবে বিশ্লেষণ করতে পারে না। +🎓 **আন্ডারফিটিং** এবং **ওভারফিটিং** হল সাধারণ সমস্যা যা মডেলের গুণমান কমিয়ে দেয়, কারণ মডেল বা খারাপভাবে ফিট হয় বা অত্যধিক ভালভাবে ফিট হয়। এর ফলে মডেল পূর্বাভাস দেয় প্রশিক্ষণ ডেটার সাথে খুব ঘনিষ্ঠভাবে মেলানো বা খুব দূরত্বপূর্ণ। ওভারফিট মডেল প্রশিক্ষণ ডেটার বিস্তারিত এবং শব্দ খুব ভালোভাবে শিখে ফেলায় খুব ভালো পূর্বাভাস দেয়। আন্ডারফিট মডেল যথাযথ বিশ্লেষণ করতে পারে না না প্রশিক্ষণ ডেটা, না অপরিচিত ডেটা। -![ওভারফিটিং মডেল](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> ইনফোগ্রাফিক: [Jen Looper](https://twitter.com/jenlooper) +![overfitting model](../../../../translated_images/bn/overfitting.1c132d92bfd93cb6.webp) +> ইনফোগ্রাফিক [জেন লুপার](https://twitter.com/jenlooper) দ্বারা ## প্যারামিটার টিউনিং -আপনার প্রাথমিক ট্রেনিং সম্পন্ন হওয়ার পরে, মডেলের গুণমান পর্যবেক্ষণ করুন এবং এর 'হাইপারপ্যারামিটার' সমন্বয় করে এটি উন্নত করার কথা বিবেচনা করুন। এই প্রক্রিয়া সম্পর্কে আরও পড়ুন [ডকুমেন্টেশনে](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)। +আপনার প্রাথমিক প্রশিক্ষণ সম্পন্ন হলে, মডেলের গুণমান দেখুন এবং এর 'হাইপারপ্যারামিটারগুলিকে' টিক্ব করার মাধ্যমে উন্নতি করার কথা বিবেচনা করুন। আরও পড়ুন [ডকুমেন্টেশন](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) দেখুন। -## প্রেডিকশন +## পূর্বাভাস -এটি সেই মুহূর্ত যখন আপনি সম্পূর্ণ নতুন ডেটা ব্যবহার করে আপনার মডেলের সঠিকতা পরীক্ষা করতে পারেন। একটি 'প্রয়োগকৃত' ML সেটিংয়ে, যেখানে আপনি প্রোডাকশনে মডেল ব্যবহার করার জন্য ওয়েব অ্যাসেট তৈরি করছেন, এই প্রক্রিয়াটি ব্যবহারকারীর ইনপুট সংগ্রহ করার (যেমন একটি বোতাম চাপা) মাধ্যমে একটি ভেরিয়েবল সেট করা এবং মডেলে ইনফারেন্স বা মূল্যায়নের জন্য পাঠানোর অন্তর্ভুক্ত হতে পারে। +এখন আপনি সম্পূর্ণ নতুন ডেটা ব্যবহার করে মডেলের সঠিকতা পরীক্ষা করতে পারেন। একটি 'প্রয়োগকৃত' এমএল পরিবেশে, যেখানে আপনি মডেলকে উৎপাদনে ব্যবহার করতে ওয়েব অ্যাসেট তৈরি করছেন, এই প্রক্রিয়াটি ব্যবহারকারীর ইনপুট (যেমন বোতাম চাপ) সংগ্রহ করা এবং সেটি একটি ভেরিয়েবল হিসাবে সেট করে, মডেলে ইনফারেন্স বা মূল্যায়নের জন্য পাঠানো অন্তর্ভুক্ত থাকতে পারে। -এই পাঠগুলোতে, আপনি কীভাবে প্রস্তুতি, তৈরি, পরীক্ষা, মূল্যায়ন এবং পূর্বাভাস দিতে হয় তা আবিষ্কার করবেন - একজন ডেটা বিজ্ঞানীর সমস্ত কার্যকলাপ এবং আরও অনেক কিছু, যেহেতু আপনি 'ফুল স্ট্যাক' ML ইঞ্জিনিয়ার হওয়ার যাত্রায় অগ্রসর হচ্ছেন। +এই পাঠে, আপনি শিখবেন কীভাবে এই ধাপগুলোকে প্রস্তুত, তৈরি, পরীক্ষা, মূল্যায়ন, এবং পূর্বাভাসে ব্যবহার করবেন - ডেটা সায়েন্টিস্টের সকল কাজ এবং আরো কিছু, যেভাবে আপনি 'ফুল স্ট্যাক' এমএল ইঞ্জিনিয়ার হওয়ার পথে অগ্রসর হবেন। --- ## 🚀চ্যালেঞ্জ -একটি ফ্লো চার্ট আঁকুন যা একটি ML প্র্যাকটিশনারের ধাপগুলো প্রতিফলিত করে। আপনি বর্তমানে প্রক্রিয়ার কোন ধাপে আছেন বলে মনে করেন? আপনি কোথায় অসুবিধা অনুভব করবেন বলে মনে করেন? আপনার কাছে কী সহজ মনে হয়? +একটি ফ্লো চার্ট আঁকুন যা একটি এমএল প্র্যাকটিশনারের ধাপগুলো প্রদর্শন করে। বর্তমানে আপনি প্রক্রিয়ার কোন অংশে আছেন বলে মনে করেন? কোথায় আপনি কষ্টের সম্মুখীন হবেন বলে অনুমান করেন? কোন কাজটি আপনার কাছে সহজ মনে হয়? -## [পাঠ-পরবর্তী কুইজ](https://ff-quizzes.netlify.app/en/ml/) +## [পাঠের পরে কুইজ](https://ff-quizzes.netlify.app/en/ml/) -## পর্যালোচনা এবং স্ব-অধ্যয়ন +## রিভিউ ও স্ব-অধ্যয়ন -অনলাইনে ডেটা বিজ্ঞানীদের সাক্ষাৎকার অনুসন্ধান করুন যারা তাদের দৈনন্দিন কাজ নিয়ে আলোচনা করেন। এখানে একটি [সাক্ষাৎকার](https://www.youtube.com/watch?v=Z3IjgbbCEfs) রয়েছে। +অনলাইনে সন্ধান করুন ডেটা সায়েন্টিস্টদের সাক্ষাৎকার যারা তাদের দৈনন্দিন কাজ নিয়ে কথা বলেন। এখানে একটি [সাক্ষাৎকার](https://www.youtube.com/watch?v=Z3IjgbbCEfs) দেওয়া হলো। ## অ্যাসাইনমেন্ট -[একজন ডেটা বিজ্ঞানীর সাক্ষাৎকার নিন](assignment.md) +[একজন ডেটা সায়েন্টিস্টের সাক্ষাৎকার নিন](assignment.md) --- -**অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file + +**অস্বীকৃতি**: +এই ডকুমেন্টটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা সঠিকতার জন্য চেষ্টা করি, তবে অনুগত হোন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ডকুমেন্টটির তার নিজস্ব ভাষায় থাকা সংস্করণই কর্তৃত্বপূর্ণ উত্স হিসাবে বিবেচিত হওয়া উচিত। গুরুতর তথ্যের জন্য পেশাদার মানুষের অনুবাদের পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে কোনও ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। + \ No newline at end of file diff --git a/translations/bn/2-Regression/3-Linear/README.md b/translations/bn/2-Regression/3-Linear/README.md index 3525a2d44d..a2013376cd 100644 --- a/translations/bn/2-Regression/3-Linear/README.md +++ b/translations/bn/2-Regression/3-Linear/README.md @@ -1,136 +1,135 @@ -# স্কাইকিট-লার্ন ব্যবহার করে একটি রিগ্রেশন মডেল নির্মাণ: চার ধরণের রিগ্রেশন +# Scikit-learn ব্যবহার করে একটি রিগ্রেশন মডেল তৈরি করুন: চারভাবে রিগ্রেশন -## প্রারম্ভিক নোট +## শুরুকারীদের জন্য নোট -রৈখিক রিগ্রেশন তখন ব্যবহার করা হয় যখন আমরা একটি **সংখ্যাগত মান** পূর্বাভাস করতে চাই (যেমন, বাড়ির দাম, তাপমাত্রা, বা বিক্রয়)। -এটি কাজ করে এমন একটি সরলরেখা খুঁজে বের করে যা ইনপুট বৈশিষ্ট্য এবং আউটপুটের মধ্যে সম্পর্ককে সর্বোত্তমভাবে উপস্থাপন করে। +লিনিয়ার রিগ্রেশন তখন ব্যবহার করা হয় যখন আমরা একটি **সংখ্যাসূচক মান** (উদাহরণস্বরূপ, ঘরের দাম, তাপমাত্রা, বা বিক্রয়) পূর্বাভাস দিতে চাই। এটি কাজ করে এমন একটি সরলরেখা খুঁজে বের করে যা ইনপুট বৈশিষ্ট্য এবং আউটপুটের সম্পর্ককে সবচেয়ে ভালোভাবে উপস্থাপিত করে। -এই পাঠে, আমরা মূল ধারণাটি বোঝার উপর ফোকাস করব, এর পরে আরো উন্নত রিগ্রেশন পদ্ধতি অনুসন্ধান করবে। -![রৈখিক বনাম বহুপদী রিগ্রেশন ইনফোগ্রাফিক](../../../../translated_images/bn/linear-polynomial.5523c7cb6576ccab.webp) -> ইনফোগ্রাফিক [দাসানি মাদিপল্লী](https://twitter.com/dasani_decoded) এর দ্বারা -## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) +এই পাঠে, আমরা আরও উন্নত রিগ্রেশন কৌশলগুলি অনুসন্ধানের আগে ধারণাটি বুঝতে মনোযোগ দিচ্ছি। +![Linear vs polynomial regression infographic](../../../../translated_images/bn/linear-polynomial.5523c7cb6576ccab.webp) +> ইনফোগ্রাফিক: [দাসানি মাদিপল্লি](https://twitter.com/dasani_decoded) +## [প্রাক-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) -> ### [এই পাঠটি R ভাষায় পাওয়া যায়!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [এই পাঠটি R-এ উপলব্ধ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### পরিচিতি -এখন পর্যন্ত আপনি pumpkin মুল্য নির্ধারণের ডেটাসেট থেকে সংগৃহীত নমুনা ডেটা ব্যবহার করে রিগ্রেশন কী তা অন্বেষণ করেছেন যা আমরা এই পাঠজুড়ে ব্যবহার করব। আপনি এটিও Matplotlib ব্যবহার করে ভিজ্যুয়ালাইজ করে দেখেছেন। +এখন পর্যন্ত আপনি রিগ্রেশন কি তা অনুসন্ধান করেছেন এবং আমরা পুরো পাঠে ব্যবহার করা পাম্পকিন দাম নির্ণয়ের তথ্য সংগ্রহ করা নমুনা ডেটা নিয়ে কাজ করেছেন। এছাড়াও আপনি এটি মাটপ্লটলিব দিয়ে ভিজ্যুয়ালাইজ করেছেন। -এখন আপনি এমএল এর জন্য রিগ্রেশনের গভীরে প্রবেশ করতে প্রস্তুত। ভিজ্যুয়ালাইজেশন আপনাকে ডেটা বুঝতে সাহায্য করলেও, মেশিন লার্নিংয়ের প্রকৃত শক্তি আসে _মডেল প্রশিক্ষণ_ থেকে। মডেলগুলি ঐতিহাসিক ডেটার উপর প্রশিক্ষিত হয় যা ডেটার নির্ভরশীলতা স্বয়ংক্রিয়ভাবে ধারণ করে, এবং তারা নতুন, অদেখা ডেটা জন্য ফলাফল পূর্বাভাস করতে সহায়তা করে। +এখন আপনি এমএল-এর জন্য রিগ্রেশনে আরও গভীরে প্রবেশ করতে প্রস্তুত। ভিজ্যুয়ালাইজেশন আপনাকে ডেটা বুঝতে সাহায্য করলেও, মেশিন লার্নিংয়ের প্রকৃত শক্তি আসে _মডেল প্রশিক্ষণ থেকে_। মডেলগুলি ঐতিহাসিক ডেটায় প্রশিক্ষিত হয় যাতে তারা স্বয়ংক্রিয়ভাবে ডেটা নির্ভরতা ধারণ করে এবং মডেল পূর্বে না দেখা নতুন ডেটার জন্য ফলাফল পূর্বাভাস দেয়। -এই পাঠে, আপনি দুই ধরনের রিগ্রেশন সম্পর্কে শিখবেন: _মৌলিক রৈখিক রিগ্রেশন_ এবং _বহুপদী রিগ্রেশন_, এবং কিছু গণিত যা এই পদ্ধতিগুলির ভিত্তি। এই মডেলগুলি আমাদের বিভিন্ন ইনপুট ডেটা অনুসারে pumpkin এর মূল্য পূর্বাভাস করার সুযোগ দেবে। +এই পাঠে, আপনি দুটি রিগ্রেশনের ধরন সম্পর্কে জানবেন: _মৌলিক লিনিয়ার রিগ্রেশন_ এবং _পলিনোমিয়াল রিগ্রেশন_, এবং এই কৌশলগুলির পেছনের কিছু গণিতের ভিত্তি। এই মডেলগুলি আমাদের বিভিন্ন ইনপুট ডেটার উপর ভিত্তি করে পাম্পকিনের দাম পূর্বানুমান করতে সাহায্য করবে। -[![শিক্ষানবিসদের জন্য এমএল - রৈখিক রিগ্রেশন বোঝা](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "শিক্ষানবিসদের জন্য এমএল - রৈখিক রিগ্রেশন বোঝা") +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 রৈখিক রিগ্রেশনের সংক্ষিপ্ত ভিডিও ওভারভিউ দেখতে উপরের চিত্রে ক্লিক করুন। +> 🎥 লিনিয়ার রিগ্রেশনের সংক্ষিপ্ত ভিডিও ওভারভিউ দেখতে উপরের ছবিতে ক্লিক করুন। -> এই পাঠক্রম জুড়ে, আমরা গণিতের নূন্যতম জ্ঞান ধরে নিই, এবং অন্যান্য ক্ষেত্রে থেকে আগত শিক্ষার্থীদের জন্য এটি বুঝতে সহজ করার চেষ্টা করি, সুতরাং লক্ষ্য করুন নোট, 🧮 কলআউট, ডায়াগ্রাম এবং অন্যান্য শিক্ষা সরঞ্জামগুলি। +> এই পাঠ্যক্রম জুড়ে, আমরা গণিতের খুব কম জ্ঞান ধরে নিই এবং অন্য ক্ষেত্রে থেকে আসা শিক্ষার্থীদের জন্য সহজবোধ্য করতে চাই, তাই নোট, 🧮 কলআউট, চিত্র, এবং অন্যান্য পাঠ্য সহায়ক সরঞ্জাম লক্ষ্য করুন। -### পূর্বশর্ত +### পূর্বপ্রয়োজনীয়তা -আপনি এখন পর্যন্ত pumpkin ডেটার কাঠামো সম্পর্কে পরিচিত হওয়া উচিত যা আমরা পর্যবেক্ষণ করছি। এটি পূর্বনির্ধারিত এবং পরিষ্কৃত অবস্থায় এই পাঠের _notebook.ipynb_ ফাইলে পাওয়া যায়। ফাইলে, pumpkin এর দাম প্রতি বাসেল হিসেবে প্রদর্শিত হয়েছে। নিশ্চিত করুন যে আপনি Visual Studio Code এর কের্নেলগুলিতে এই নোটবুকগুলি চালাতে পারেন। +এখন পর্যন্ত আপনি যেই পাম্পকিন ডেটার গঠন দেখেছেন তার সঙ্গে পরিচিত হওয়া উচিত। এটি এই পাঠের _notebook.ipynb_ ফাইলে আগে থেকে লোড এবং পরিষ্কার করা আছে। ফাইলে, পাম্পকিনের দাম প্রতি বাসেল প্রদর্শিত হয়েছে। নিশ্চিত করুন যে আপনি ভিজুয়াল স্টুডিও কোডে এই নোটবুকগুলি চালাতে পারবেন। ### প্রস্তুতি -স্মরণ করিয়ে দিতে চাই, আপনি এই ডেটা লোড করছেন যাতে এর উপর প্রশ্ন উত্থাপন করতে পারেন। +আপনি এই ডেটা লোড করছেন যাতে এটি নিয়ে প্রশ্ন করতে পারেন, একটি স্মরণীয় ব্যাপার: -- কখন pumpkin কেনা সবচেয়ে ভালো সময়? -- একটি ছোট আকারের pumpkin এর দাম কত আশা করা যায়? -- আমি কি তাদের অর্ধ-বাসেল ঝুড়িতে কিনব নাকি ১ ১/৯ বাসেল বাক্সে? -চলুন এই ডেটা আরও খতিয়ে দেখা যাক। +- কখন পাম্পকিন কেনা সবচেয়ে ভালো সময়? +- মিনি পাম্পকিনের একটি প্যাকের দাম কত হতে পারে? +- কী আমি এগুলো অর্ধেক বাসেল বাস্কেট বা ১ ১/৯ বাসেল বাক্স থেকে কিনব? +চলুন এই ডেটা আরও অনুসন্ধান করা যাক। -পূর্বের পাঠে, আপনি একটি Pandas ডেটাফ্রেম তৈরি করেছিলেন এবং প্রাথমিক ডেটাসেটের একটি অংশ নিয়ে এটিকে বাসেল অনুযায়ী দাম মানকরণ করেছিলেন। কিন্তু এতে আপনি প্রায় ৪০০ ডেটাপয়েন্ট এবং শুধুমাত্র শরৎ মাসের জন্য তথ্য পেয়েছিলেন। +পূর্ববর্তী পাঠে, আপনি একটি প্যান্ডাস ডেটাফ্রেম তৈরি করেছিলেন এবং মূল ডেটাসেট থেকে একটি অংশ ব্যবহার করে প্রতি বাসেলের দাম স্ট্যান্ডার্ডাইজ করেছিলেন। এর ফলে, আপনি প্রায় ৪০০ তথ্য বিন্দু এবং শুধুমাত্র শরৎ মাসের জন্যই তথ্য সংগ্রহ করতে পেরেছিলেন। -এই পাঠের সঙ্গী নোটবুকে আমরা পূর্বনির্ধারিত যে ডেটা লোড করেছি তা দেখুন। ডেটাটি লোড করা হয়েছে এবং প্রথম একটি scatterplot তৈরি করা হয়েছে যা মাসের ডেটা দেখায়। হয়তো এটি আরও পরিষ্কার করলে ডেটার প্রকৃতি সম্পর্কে কিছু বিস্তারিত জানতে পারি। +এই পাঠের সহযোগী নোটবুকটিতে আগে থেকে লোড করা ডেটাটি দেখুন। ডেটা লোড করা আছে এবং একটি প্রাথমিক স্ক্যাটারপ্লট মাসের তথ্য প্রদর্শন করে। হয়তো ডেটা আরও পরিষ্কার করার মাধ্যমে প্রকৃত তথ্যের প্রকৃতি সম্পর্কে কিছু বেশি জানতে পারি। -## একটি রৈখিক রিগ্রেশন লাইন +## একটি লিনিয়ার রিগ্রেশন রেখা -আপনি প্রথম পাঠে শিখেছেন, রৈখিক রিগ্রেশন অনুশীলনের লক্ষ্য হল এমন একটি রেখা আঁকতে পারা যা: +পাঠ ১ থেকে আপনি শিখেছেন, লিনিয়ার রিগ্রেশন অনুশীলনের লক্ষ্য একটি রেখা আঁকা যাতে: -- **চলকগুলোর মধ্যে সম্পর্ক প্রদর্শন করে**। চলকগুলোর মধ্যে সম্পর্ক দেখানো। -- **পূর্বাভাস দেয়**। একটি নতুন ডেটাপয়েন্ট যেখানে পড়বে সেই সম্পর্কে সঠিক পূর্বাভাস দেওয়া। +- **চলকগুলোর সম্পর্ক প্রদর্শন:** চলকগুলোর মধ্যে সম্পর্ক দেখানো +- **পূর্বাভাস তৈরি:** নতুন ডেটাপয়েন্ট কোথায় পড়বে তা সঠিকভাবে পূর্বাভাস করা -**Least-Squares Regression** এ এই ধরনের রেখা আঁকা সাধারণ। "Least-Squares" শব্দগুচ্ছ আমাদের মডেলে মোট ত্রুটি সবচেয়ে কম করার প্রক্রিয়াকে বোঝায়। প্রতিটি ডেটাপয়েন্টের জন্য, আমরা আসল বিন্দু এবং রিগ্রেশন লাইনের মধ্যে উল্লম্ব দূরত্ব (যা অবশিষ্টাংশ বলে) পরিমাপ করি। +**লিস্ট-স্কয়ার রিগ্রেশন** এ ধরনের রেখা আঁকা সাধারণ। "লিস্ট-স্কয়ার" শব্দগুচ্ছ আমাদের মডেলে মোট ভুল সর্বনিম্ন করার প্রক্রিয়াকে বোঝায়। প্রতিটি ডেটাপয়েন্টের জন্য, আমরা প্রকৃত পয়েন্ট এবং আমাদের রিগ্রেশন রেখার মধ্যে উল্লম্ব দূরত্ব (যা অবশিষ্টাংশ নামে পরিচিত) পরিমাপ করি। -আমরা এই দূরত্বগুলিকে বর্গ করি দুইটি প্রধান কারণে: +আমরা এই দূরত্বগুলিকে বর্গ করি দুটি প্রধান কারণে: -1. **পরিমাণের গুরুত্ব, দিক নয়:** আমরা -৫ এর ত্রুটিকে +৫ এর ত্রুটির মত বিবেচনা করতে চাই। বর্গ করলে সকল মান ধনাত্মক হয়। +1. **মেরু পরিবর্তনের উপরে মানের গুরুত্ব:** আমরা -৫ এর ভুলের জন্য +৫ এর ভুলের সমান গুরুত্ব দিতে চাই। বর্গকরণের ফলে সব মান ধনাত্মক হয়ে যায়। -2. **বহিরাগত মানগুলিকে শাস্তি দেওয়া:** বড় ত্রুটিকে বেশি ওজন দেয়, রেখাটিকে সেসব দূরের পয়েন্টের কাছাকাছি থাকতে বাধ্য করে। +2. **আউটলারদের দণ্ডিত করা:** বড় ভুলগুলোকে আরও বেশি ওজন দেয়, লাইনকে দূরে থাকা পয়েন্টগুলোর কাছাকাছি রাখতে বাধ্য করে। -তারপর আমরা এই সব বর্গ মান যোগ করি। আমাদের লক্ষ্য হল সেই রেখাটি খুঁজে পাওয়া যেখান থেকে এই চূড়ান্ত সমষ্টি সর্বনিম্ন হয়—এ কারণেই নাম "Least-Squares"। +তারপর আমরা এই সব বর্গমূল মান যোগ করি। আমাদের লক্ষ্য এমন একটি রেখা খুঁজে বের করা যার এই যোগফল সর্বনিম্ন—এজন্য এর নাম "লিস্ট-স্কয়ারস"। -> **🧮 আমাকে গণিত দেখাও** +> **🧮 গণিত আমাকে দেখাও** > -> এই রেখাটি, যাকে _line of best fit_ বলা হয়, [একটি সমীকরণ](https://en.wikipedia.org/wiki/Simple_linear_regression) দ্বারা প্রকাশ করা যায়: +> এই রেখাটিকে বলা হয় _সেরা ফিটের রেখা_ এবং এটি [একটি সমীকরণের মাধ্যমে প্রকাশ করা যায়](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` হল 'explanatory variable'। `Y` হল 'dependent variable'। রেখার ঢালের মান `b` এবং `a` হল y-intercept, যা `X = 0` এর সময় `Y` এর মান নির্দেশ করে। +> `X` হলো 'ব্যাখ্যামূলক চলক'। `Y` হলো 'নির্ভরশীল চলক'। রেখার স্লোপ `b` এবং `a` হলো y-ইন্টারসেপ্ট, অর্থাৎ `X = 0` থাকলে `Y` মান। > ->![ঢাল গণনা](../../../../translated_images/bn/slope.f3c9d5910ddbfcf9.webp) +>![calculate the slope](../../../../translated_images/bn/slope.f3c9d5910ddbfcf9.webp) > -> প্রথমে ঢাল `b` গণনা করুন। ইনফোগ্রাফিক [জেন লুপার](https://twitter.com/jenlooper) এর দ্বারা +> প্রথমে স্লোপ `b` হিসাব করুন। ইনফোগ্রাফিক: [জেন লুপার](https://twitter.com/jenlooper) > -> অন্য কথায়, এবং আমাদের pumpkin ডেটার মূল প্রশ্নের পরিপ্রেক্ষিতে: "মাস অনুযায়ী একটি pumpkin এর দাম পূর্বাভাস", এখানে `X` দাম বোঝাবে এবং `Y` বিক্রয়ের মাস। +> অন্য কথায়, আমাদের পাম্পকিন ডেটার মূল প্রশ্ন: "মাস অনুসারে প্রতি বাসেলে পাম্পকিনের দাম পূর্বানুমান", এ ক্ষেত্রে `X` হবে দাম এবং `Y` হবে বিক্রয় মাস। > ->![সমীকরণ পূরণ](../../../../translated_images/bn/calculation.a209813050a1ddb1.webp) +>![complete the equation](../../../../translated_images/bn/calculation.a209813050a1ddb1.webp) > -> Y এর মান গণনা করুন। আপনি যদি প্রায় $4 দিচ্ছেন, তবে অবশ্যই এপ্রিল! ইনফোগ্রাফিক [জেন লুপার](https://twitter.com/jenlooper) এর দ্বারা +> `Y` এর মান হিসাব করুন। আপনি যদি প্রায় ৪ ডলারের দাম দেখেন, তাহলে মাস অবশ্যই এপ্রিল! ইনফোগ্রাফিক: [জেন লুপার](https://twitter.com/jenlooper) > -> লাইন গণনা যে গণিতটি করে তা ঢালটি প্রদর্শন করে, যা ইন্টারসেপ্টের উপর নির্ভরশীল, অর্থাৎ `X = 0` এর সময় `Y` কোথায় রয়েছে। +> রেখার গণিত হিসাবটি স্লোপ প্রদর্শন করে, যা ইন্টারসেপ্টের উপরে নির্ভরশীল, অর্থাৎ `X = 0` অবস্থায় `Y` কোথায় থাকবে। > -> এই মানগুলি গণনার পদ্ধতি দেখতে পারেন [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ওয়েবসাইটে। এছাড়া দেখুন [এই Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) যেখানে সংখ্যাগুলোর মান লাইনকে কীভাবে প্রভাবিত করে তা দেখা যায়। +> এই মানগুলো গণনার পদ্ধতি দেখতে [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ওয়েবসাইট ভিজিট করুন। এছাড়াও দেখুন [এই লিস্ট-স্কয়ার ক্যালকুলেটর](https://www.mathsisfun.com/data/least-squares-calculator.html) যেখানে সংখ্যা মানগুলো কিভাবে রেখাকে প্রভাবিত করে তা উপলব্ধি করতে পারেন। -## সহগ +## সম্পর্ক -আরেকটি শব্দ যা জানতেও হবে তা হল `X` এবং `Y` চলকগুলোর মধ্যে **সহগ সহগ (Correlation Coefficient)**। একটি scatterplot ব্যবহার করে আপনি দ্রুত এই সহগকে ভিজ্যুয়ালাইজ করতে পারেন। যে প্লটের ডেটাপয়েন্টগুলো একটি সুন্দর লাইনে ছড়িয়ে আছে সে প্লটের সহগ বেশি, কিন্তু যেখানে ডেটাপয়েন্টগুলো X এবং Y এর মধ্যে এলোমেলো ছড়ানো সেখানে সহগ কম। +আরেকটি শব্দ যা বুঝতে হবে তা হলো দেওয়া X এবং Y চলকগুলোর মধ্যে **সম্পর্ক সহগ**। একটি স্ক্যাটারপ্লট ব্যবহার করে আপনি দ্রুত এই সহগটি ভিজ্যুয়ালাইজ করতে পারেন। যেখানে ডেটাপয়েন্টগুলো সুন্দর সারিতে ছড়িয়ে থাকে সেখানে উচ্চ সম্পর্ক থাকে, আর যেসব প্লটে ডেটা একদম ছড়িয়ে থাকে সেখানে সম্পর্ক কম। -একটি ভাল রৈখিক রিগ্রেশন মডেল হবে এমনটি যার সহগ খুব বেশি (০ থেকে ১ এর কাছে) এবং Least-Squares Regression এর মাধ্যমে রিগ্রেশন রেখা থাকবে। +একটি ভাল লিনিয়ার রিগ্রেশন মডেল হবে এমন একটি যা লিস্ট-স্কয়ারস রিগ্রেশন ব্যবহার করে উচ্চ (০-এর থেকে ১-এর নিকটবর্তী) সম্পর্ক সহগ রাখে। -✅ এই পাঠের সঙ্গী নোটবুকটি চালান এবং Month থেকে Price পর্যন্ত scatterplot দেখুন। কি মনে হয়, মাস এবং দাম পাম্পকিন বিক্রয়ের ডেটার মধ্যে আপনার scatterplot অনুযায়ী কি উচ্চ না কম সহগ আছে? যদি আপনি `Month` এর পরিবর্তে আরো সূক্ষ্ম পরিমাপ ব্যবহার করেন যেমন *বছরের দিন* (অর্থাৎ বছরের শুরু থেকে দিনের সংখ্যা), তাহলে কি এটি পরিবর্তিত হয়? +✅ এই পাঠের সহায়ক নোটবুক রান করুন এবং মাস ও দাম স্ক্যাটারপ্লট দেখুন। আপনার দৃষ্টিতে পাম্পকিন বিক্রয়ের জন্য মাস এবং দামের ডেটা কি উচ্চ নাকি নিম্ন সম্পর্ক প্রদর্শন করে? যদি আপনি মাসের পরিবর্তে সূক্ষ্ম মেজার যেমন *বছরের দিন* (অর্থাৎ বছরের শুরু থেকে দিন সংখ্যা) ব্যবহার করেন, তাহলে কি তা পরিবর্তন হয়? -নিচের কোডে আমরা ধরে নেব ডেটা পরিষ্কার করা হয়েছে এবং একটি ডেটাফ্রেম `new_pumpkins` তৈরি হয়েছে, যা নিম্নরূপ: +নিচের কোডে ধরে নেওয়া হয়েছে আমরা ডেটা পরিষ্কার করেছি এবং একটি ডেটাফ্রেম `new_pumpkins` পেয়েছি যা নিচের মতো: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE| BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE| BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE| BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE| BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE| BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +ID | মাস | বছরের দিন | প্রকার | শহর | প্যাকেজ | সর্বনিম্ন দাম | সর্বোচ্চ দাম | দাম +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | পাই টাইপ | বাল্টিমোর | ১ ১/৯ বাসেল কার্টন | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | পাই টাইপ | বাল্টিমোর | ১ ১/৯ বাসেল কার্টন | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | পাই টাইপ | বাল্টিমোর | ১ ১/৯ বাসেল কার্টন | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | পাই টাইপ | বাল্টিমোর | ১ ১/৯ বাসেল কার্টন | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | পাই টাইপ | বাল্টিমোর | ১ ১/৯ বাসেল কার্টন | 15.0 | 15.0 | 13.636364 -> ডেটা পরিষ্কারের কোড [`notebook.ipynb`](notebook.ipynb) ফাইলে উপলব্ধ। আমরা পূর্বের পাঠে ব্যবহৃত একই পরিষ্কারকরণ প্রক্রিয়া অনুসরণ করেছি এবং নিম্নলিখিত এক্সপ্রেশন ব্যবহার করে `DayOfYear` কলাম গণনা করেছি: +> ডেটা পরিষ্কারের কোড [`notebook.ipynb`](notebook.ipynb) এ পাওয়া যাবে। আমরা পূর্ববর্তী পাঠের মত একই পরিষ্কারকরণ ধাপ করেছি এবং `DayOfYear` কলাম হিসাব করেছি নিম্নলিখিত অভিব্যক্তি ব্যবহার করে: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -এখন আপনি রৈখিক রিগ্রেশনের পেছনের গণিত বুঝতে পারছেন, চলুন একটি রিগ্রেশন মডেল তৈরী করি যা পূর্বাভাস করবে কোন pumpkin এর প্যাকেজে ভালো দাম পাওয়া যাবে। ছুটির জন্য pumpkin কিনছেন এমন কেউ এই তথ্য পেতে চাইবেন যাতে তাদের পাম্পকিন প্যাকেজ কেনাকাটা অপ্টিমাইজ করতে পারেন। +এখন যেহেতু আপনি লিনিয়ার রিগ্রেশনের পেছনের গণিত বুঝতে পেরেছেন, চলুন একটি রিগ্রেশন মডেল তৈরি করি এবং দেখি কোন পাম্পকিন প্যাকেজে সবচেয়ে ভাল দাম হবে পূর্বানুমান করতে পারি কিনা। ছুটির দিনে পাম্পকিনের একটি প্যাচের জন্য কেউ পাম্পকিন কিনতে চাইলে এই তথ্য তাদের প্যাকেজের ক্রয় অপ্টিমাইজ করতে সাহায্য করবে। -## সহগ অনুসন্ধান +## সম্পর্ক খোঁজা -[![শিক্ষানবিসদের জন্য এমএল - সহগ অনুসন্ধান: লিনিয়ার রিগ্রেশনের চাবিকাঠি](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "শিক্ষানবিসদের জন্য এমএল - সহগ অনুসন্ধান: লিনিয়ার রিগ্রেশনের চাবিকাঠি") +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 সহগের সংক্ষিপ্ত ভিডিও ওভারভিউ দেখতে উপরের চিত্রে ক্লিক করুন। +> 🎥 সম্পর্কের সংক্ষিপ্ত ভিডিও ওভারভিউ দেখতে উপরের ছবিতে ক্লিক করুন। -পূর্বের পাঠ থেকে আপনি সম্ভবত দেখেছেন বিভিন্ন মাসের গড় দাম এভাবে: +গত লেসনে আপনি সম্ভবত দেখেছেন বিভিন্ন মাসের গড় দাম এ রকম: -মাস ভিত্তিক গড় দাম +Average price by month -এটি নির্দেশ করে যে কিছুটা সহগ থাকতে হবে, এবং আমরা `Month` এবং `Price` অথবা `DayOfYear` এবং `Price` এর মধ্যে সম্পর্ক পূর্বাভাস করার জন্য লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণ দেওয়ার চেষ্টা করতে পারি। নিচের scatter plot দেখায় পরবর্তী সম্পর্ক: +এটি নির্দেশ করে যে এটার সাথে কিছু সম্পর্ক থাকতে পারে, এবং আমরা চেষ্টা করতে পারি লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণ দিতে `Month` এবং `Price` অথবা `DayOfYear` এবং `Price` এর মধ্যে সম্পর্ক পূর্বানুমান করার জন্য। নিচের স্ক্যাটারপ্লট পরবর্তী সম্পর্কটি দেখায়: -Price বনাম Day of Year ৰScatter plot +Scatter plot of Price vs. Day of Year -চলুন `corr` ফাংশন ব্যবহার করে সহগ দেখে নেওয়া যাক: +চলুন `corr` ফাংশন ব্যবহার করে দেখি সম্পর্ক আছে কি না: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -মনে হচ্ছে সহগ খুব ছোট, `Month` দ্বারা -০.১৫ এবং `DayOfMonth` দ্বারা -০.১৭, কিন্তু একটি অন্য গুরুত্বপূর্ণ সম্পর্ক থাকতে পারে। মনে হচ্ছে বিভিন্ন pumpkin জাতের জন্য বিভিন্ন দামের ক্লাস্টার রয়েছে। এই অনুমান নিশ্চিত করার জন্য, আসুন প্রতিটি pumpkin শ্রেণী ভিন্ন রঙে প্লট করি। `scatter` ফাংশনে `ax` প্যারামিটার ব্যবহার করে আমরা একই গ্রাফে সব পয়েন্ট প্লট করতে পারি: +দেখা যাচ্ছে, সম্পর্ক ছোট, মাস অনুসারে -০.১৫ এবং বছরের দিন অনুসারে -০.১৭, কিন্তু হয়তো একটি আরেকটি গুরুত্বপূর্ণ সম্পর্ক আছে। বিভিন্ন পাম্পকিন প্রজাতির জন্য ভিন্ন দাম ক্লাস্টার লক্ষ্য করা গেছে। এই অনুমান নিশ্চিত করতে, আমরা প্রতিটি পাম্পকিন প্রকার ভিন্ন রঙে স্ক্যাটারপ্লটে দেখাবো। `scatter` প্লটিং ফাংশনে `ax` প্যারামিটার পাস করে সব পয়েন্ট একই গ্রাফে প্লট করা যায়: ```python ax=None @@ -140,42 +139,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Price বনাম Day of Year রঙিন Scatter plot +Scatter plot of Price vs. Day of Year -আমাদের তদন্ত ইঙ্গিত দেয় যে জাত জেনারেল মূল্যের ওপর বিক্রির তারিখের চেয়ে বেশি প্রভাব ফেলে। আমরা এটি একটি বারের গ্রাফে দেখতে পারি: +আমাদের অনুসন্ধান প্রস্তাব করে যে প্রজাতি বিক্রয় তারিখের চেয়ে দাম এর উপর বেশি প্রভাব ফেলে। আমরা এটি একটি বারের গ্রাফ দিয়ে দেখতে পারি: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Price বনাম variety এর বার গ্রাফ +Bar graph of price vs variety -এখন কেবল একটি pumpkin জাত, 'pie type', নিয়ে ফোকাস করি এবং দেখি বিক্রয় তারিখ মূল্যের উপরে কেমন প্রভাব ফেলে: +এই মুহূর্তে শুধুমাত্র একটি পাম্পকিন প্রজাতি, 'পাই টাইপ'-এ মনোযোগ দিয়া দেখি, বিক্রয় তারিখের দাম এর উপর কি প্রভাব: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Price বনাম Day of Year পাই pumpkin স্ক্যাটার +Scatter plot of Price vs. Day of Year -এখন যদি আমরা `Price` এবং `DayOfYear` এর সহগ `corr` ফাংশন ব্যবহার করে বের করি, তবে ফলাফল হবে প্রায় `-0.27` - অর্থাৎ পূর্বাভাস মডেল প্রশিক্ষণ দেওয়া যৌক্তিক। +এখন যদি আমরা `Price` এবং `DayOfYear` এর মধ্যে `corr` ফাংশন ব্যবহার করে সম্পর্ক হিসাব করি, আমরা পাবো প্রায় `-0.27` - যার মানে একটি পূর্বাভাসমূলক মডেল প্রশিক্ষণ দেওয়া যুক্তিযুক্ত। -> রৈখিক রিগ্রেশন মডেল প্রশিক্ষণের আগে, নিশ্চিত হওয়া গুরুত্বপূর্ণ যে আমাদের ডেটা পরিষ্কার। রৈখিক রিগ্রেশন অনুপস্থিত মানের সঙ্গে ভালো কাজ করে না, তাই সব ফাঁকা ঘর মুছে ফেলা যুক্তিযুক্ত: +> লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণের আগে, নিশ্চিত করা উচিত যে ডেটা পরিষ্কার। লিনিয়ার রিগ্রেশন অনুপস্থিত মানের সাথে ভাল কাজ করে না, তাই সব খালি সেল সরিয়ে ফেলা যুক্তিযুক্ত: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -অন্য একটি পদ্ধতি হল ঐ ফাঁকা মানগুলো সংশ্লিষ্ট কলামের গড় মান দিয়ে পূরণ করা। +অন্য একটি পন্থা হবে খালি মানগুলোকে সংশ্লিষ্ট কলামের গড় মান দিয়ে পূরণ করা। -## সাধারণ রৈখিক রিগ্রেশন +## সরল লিনিয়ার রিগ্রেশন -[![শিক্ষানবিসদের জন্য এমএল - Scikit-learn ব্যবহার করে রৈখিক এবং বহুপদী রিগ্রেশন](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "শিক্ষানবিসদের জন্য এমএল - Scikit-learn ব্যবহার করে রৈখিক এবং বহুপদী রিগ্রেশন") +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 রৈখিক এবং বহুপদী রিগ্রেশনের সংক্ষিপ্ত ভিডিও ওভারভিউ দেখতে উপরের চিত্রে ক্লিক করুন। +> 🎥 লিনিয়ার এবং পলিনোমিয়াল রিগ্রেশনের ভিডিও ওভারভিউ দেখতে উপরের ছবিতে ক্লিক করুন। -আমরা আমাদের লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণের জন্য **Scikit-learn** লাইব্রেরি ব্যবহার করব। +আমাদের লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণের জন্য, আমরা **Scikit-learn** লাইব্রেরি ব্যবহার করব। ```python from sklearn.linear_model import LinearRegression @@ -183,31 +182,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -আমরা প্রথমে ইনপুট মান (বৈশিষ্ট্য) এবং প্রত্যাশিত আউটপুট (লেবেল) আলাদা numpy অ্যারেতে রাখব: +আমরা প্রথমে ইনপুট মান (ফিচার) এবং প্রত্যাশিত আউটপুট (লেবেল) আলাদা numpy অ্যারের মধ্যে রাখব: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> লক্ষণীয় যে ইনপুট ডেটাতে `reshape` প্রয়োগ করতে হয়েছে যাতে লিনিয়ার রিগ্রেশন প্যাকেজ এটি সঠিকভাবে বুঝতে পারে। লিনিয়ার রিগ্রেশন ২-ডি অ্যারে ইনপুট হিসেবে চায়, যেখানে প্রতিটি সারি হলো ইনপুট বৈশিষ্ট্যের ভেক্টর। আমাদের ক্ষেত্রে, যেহেতু ইনপুট মাত্র একটির মত, তাই একটি N×1 আকৃতির অ্যারে দরকার, যেখানে N হলো ডেটাসেটের সাইজ। +> খেয়াল করুন, আমরা ইনপুট ডেটায় `reshape` করেছি যাতে লিনিয়ার রিগ্রেশন প্যাকেজ সঠিকভাবে বুঝতে পারে। লিনিয়ার রিগ্রেশন ২ডি অ্যারে ইনপুট হিসেবে আশা করে, যেখানে প্রতিটি সারি ইনপুট ফিচারের একটি ভেক্টর। আমাদের ক্ষেত্রে একটি মাত্র ইনপুট হওয়ায়, এটির আকৃতি হবে N×1, যেখানে N হল ডেটাসেট আকার। -এরপর, আমাদের ডেটা ট্রেন এবং টেস্ট ডেটাসেটে বিভক্ত করতে হবে, যাতে আমরা প্রশিক্ষণের পর মডেল যাচাই করতে পারি: +তারপর, আমরা ডেটা প্রশিক্ষণ এবং পরীক্ষার জন্য ভাগ করব, যাতে প্রশিক্ষণের পর মডেল যাচাই করা যায়: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -অবশেষে, আসল রৈখিক রিগ্রেশন মডেল প্রশিক্ষণ মাত্র দুই লাইনের কোড নিয়ে হয়। আমরা `LinearRegression` অবজেক্ট সংজ্ঞায়িত করি এবং `fit` মেথড ব্যবহার করে আমাদের ডেটার উপর এটি ফিট করি: +অবশেষে, আসল লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণ শুধুমাত্র দুই লাইনের কোড নেয়। আমরা `LinearRegression` অবজেক্ট সংজ্ঞায়িত করি এবং `fit` পদ্ধতি ব্যবহার করে এটি ডেটাতে ফিট করি: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` অবজেক্ট `fit`-এর পরে রিগ্রেশনের সমস্ত সহগ ধারণ করে, যা `.coef_` প্রপার্টি ব্যবহার করে অ্যাক্সেস করা যেতে পারে। আমাদের ক্ষেত্রে, এটি কেবল একটি সহগ আছে, যা প্রায় `-0.017` হওয়া উচিত। এর মানে হলো দাম সময়ের সাথে একটু কমে যাচ্ছে, কিন্তু খুব বেশি নয়, প্রায় দিন প্রতি ২ সেন্ট। আমরা রিগ্রেশনের Y-অক্ষের সাথে ছেদ বিন্দুও `lin_reg.intercept_` ব্যবহার করে অ্যাক্সেস করতে পারি - আমাদের ক্ষেত্রে এটি প্রায় `21` হতে পারে, যা বছরের শুরুতে দাম নির্দেশ করে। +`LinearRegression` অবজেক্ট `fit` করার পরে সমস্ত রিগ্রেশন সহগ রয়েছে, যা `.coef_` প্রপার্টি ব্যবহার করে অ্যাক্সেস করা যেতে পারে। আমাদের ক্ষেত্রে, কেবল একটি সহগ আছে, যা প্রায় `-0.017` হওয়া উচিত। এর অর্থ হলো মূল্যসমূহ সময়ের সাথে সামান্য হ্রাস পায়, তবে খুব বেশি নয়, প্রায় দিনে ২ সেন্টের মতো। আমরা Y-অক্ষের সাথে রিগ্রেশনের ছেদ বিন্দু `lin_reg.intercept_` ব্যবহার করেও অ্যাক্সেস করতে পারি - এটি আমাদের ক্ষেত্রে প্রায় `২১` হবে, যা বছরের শুরুতে দামের নির্দেশ করে। -আমাদের মডেল কতটা সঠিক তা দেখতে, আমরা টেস্ট ডেটাসেটে দাম পূর্বাভাস দিতে পারি, এবং তারপর আমাদের পূর্বাভাসগুলি প্রত্যাশিত মানের কতটা কাছাকাছি তা মাপতে পারি। এটি মূল গড় বর্গমূল ত্রুটি (RMSE) মেট্রিক ব্যবহার করে করা যায়, যা প্রত্যাশিত এবং পূর্বাভাসিত মানের মধ্যে সমস্ত বর্গ পার্থক্যের গড়ের বর্গমূল। +আমাদের মডেল কতটা সঠিক তা দেখতে, আমরা একটি টেস্ট ডেটাসেটে দামগুলি পূর্বাভাস দিতে পারি এবং তারপর আমাদের পূর্বাভাসগুলি প্রত্যাশিত মানের কতটা কাছাকাছি তা পরিমাপ করতে পারি। এটি মূল রুট গড় বর্গ ত্রুটি (RMSE) মেট্রিক্স ব্যবহার করে করা যায়, যা প্রত্যাশিত এবং পূর্বাভাস করা মানের মধ্যে সমস্ত বর্গমূল পার্থক্যের গড়ের মূল। ```python pred = lin_reg.predict(X_test) @@ -216,16 +215,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -আমাদের ত্রুটি প্রায় ২ পয়েন্ট, যা প্রায় ~১৭%। খুব ভাল নয়। মডেলের গুণমানের আরেকটি সূচক হল **নির্ধারণ সহগ**, যা এভাবে পাওয়া যায়: +আমাদের ত্রুটি প্রায় ২ পয়েন্টের মতো মনে হচ্ছে, যা ~১৭%। খুব ভাল নয়। মডেল গুণমানের আরেকটি সূচক হলো **নির্ধারণ সহগ** (coefficient of determination), যা এভাবে পাওয়া যেতে পারে: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` + যদি মানটি ০ হয়, এর অর্থ মডেল ইনপুট ডেটা বিবেচনায় নেয় না, এবং *সর্বনিম্ন রৈখিক পূর্বাভাসক* হিসেবে কাজ করে, যা শুধু ফলাফলের গড় মান। ১ মানে আমরা সমস্ত প্রত্যাশিত আউটপুট নিখুঁতভাবে পূর্বাভাস দিতে পারি। আমাদের ক্ষেত্রে, সহগ প্রায় ০.০৬, যা খুব কম। -যদি মান ০ হয়, তার মানে মডেল ইনপুট ডেটাকে বিবেচনা করে না, এবং *অতীব বাজে রেখীয় পূর্বাভাসকারী* হিসেবে কাজ করে, যা কেবল ফলাফলের গড় মান। মান ১ হলে তার মানে আমরা সমস্ত প্রত্যাশিত আউটপুট নিখুঁতভাবে পূর্বাভাস দিতে পারি। আমাদের ক্ষেত্রে, সহগ প্রায় ০.০৬, যা যথেষ্ট কম। - -আমরা টেস্ট ডেটা এবং রিগ্রেশন লাইন একসাথে প্লট করতে পারি যাতে আমাদের ক্ষেত্রে রিগ্রেশন কিভাবে কাজ করছে তা ভালোভাবে দেখা যায়: +আমরা রিগ্রেশন লাইন সহ টেস্ট ডেটা প্লট করেও দেখতে পারি কিভাবে আমাদের ক্ষেত্রে রিগ্রেশন কাজ করে: ```python plt.scatter(X_test,y_test) @@ -234,19 +232,19 @@ plt.plot(X_test,pred) Linear regression -## পলিনোমিয়াল রিগ্রেশন +## Polynomial Regression -রিগ্রেশনের আরেকটি ধরন হল পলিনোমিয়াল রিগ্রেশন। কখনো কখনো ভেরিয়েবলগুলির মধ্যে রেখীয় সম্পর্ক থাকে - বড় পাম্পকিনের ভলিউম বেশি হলে দামও বেশি - আবার কখনো সম্পর্কগুলো প্লেন বা সরল রেখা হিসেবে আঁকতে পারা যায় না। +রৈখিক রিগ্রেশনের আরেক ধরন হলো পলিনোমিয়াল রিগ্রেশন। কখনও কখনও ভেরিয়েবলগুলির মধ্যে একটি রৈখিক সম্পর্ক থাকে – যেমন ভলিউমে বড় মিষ্টি কুমড়ো, দামও বেশি – তবে কখনও কখনও এই সম্পর্কগুলি একটি সমতল বা সরল রেখা আকারে প্লট করা যায় না। -✅ এখানে [আরও কিছু উদাহরণ](https://online.stat.psu.edu/stat501/lesson/9/9.8) আছে যেগুলিতে পলিনোমিয়াল রিগ্রেশন ব্যবহার করা যেতে পারে +✅ এখানে [আরো কিছু উদাহরণ](https://online.stat.psu.edu/stat501/lesson/9/9.8) রয়েছে এমন ডেটার যেগুলোর জন্য পলিনোমিয়াল রিগ্রেশন প্রযোজ্য হতে পারে -আবার ডেট এবং দাম এর সম্পর্ক দেখুন। এই স্ক্যাটারপ্লট কি অবশ্যই একটি সরল রেখা দ্বারা বিশ্লেষিত হওয়া উচিত বলে মনে হয়? দাম কি ওঠানামা করতে পারে না? এই ক্ষেত্রে, আপনি পলিনোমিয়াল রিগ্রেশন চেষ্টা করতে পারেন। +`Date` এবং `Price` এর মধ্যে সম্পর্ক আবার দেখুন। এই স্ক্যাটারপ্লট কি সরল রেখা দ্বারা বিশ্লেষণ করা উচিত বলে মনে হচ্ছে? দাম ওঠানামা করতে পারে না কি? এই ক্ষেত্রে, আপনি পলিনোমিয়াল রিগ্রেশন চেষ্টা করতে পারেন। -✅ পলিনোমিয়াল হল গাণিতিক প্রকাশ যা একটি বা একাধিক ভেরিয়েবল এবং সহগ নিয়ে গঠিত হতে পারে +✅ পলিনোমিয়ালগুলি হল গাণিতিক এক্সপ্রেশন যা এক বা একাধিক ভেরিয়েবল এবং সহগ সম্বলিত হতে পারে -পলিনোমিয়াল রিগ্রেশন নন-লিনিয়ার ডেটার ভালো ফিট দেওয়ার জন্য একটি বক্ররেখা তৈরি করে। আমাদের ক্ষেত্রে, যদি আমরা ইনপুট ডেটায় বর্গাকার `DayOfYear` ভেরিয়েবল অন্তর্ভুক্ত করি, তাহলে ভেরিয়েশন ডেটার সাথে আমরা একটি পরবলাকার বাঁক ফিট করতে পারব, যার মধ্যে বছরের একটি নির্দিষ্ট জায়গায় নূন্যতম থাকবে। +পলিনোমিয়াল রিগ্রেশন একটি বাকা রেখা তৈরি করে যা অলিনিয়ার ডেটার সাথে ভাল মানায়। আমাদের ক্ষেত্রে, যদি আমরা ইনপুট ডেটাতে একটি বর্গ `DayOfYear` ভেরিয়েবল যোগ করি, তাহলে আমরা একধরনের প্যারাবোলিক কার্ভ দিয়ে ডেটা মানাতে পারব, যার একটি নির্দিষ্ট পয়েন্টে বছরভিত্তিক ন্যূনতম থাকবে। -Scikit-learn একটি সহায়ক [পাইপলাইন API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) অন্তর্ভুক্ত করে যা ডেটা প্রসেসিংয়ের বিভিন্ন ধাপ একত্রিত করতে সাহায্য করে। একটি **পাইপলাইন** হল **এস্টিমেটরগুলির** একটি শৃঙ্খল। আমাদের ক্ষেত্রে, আমরা একটি পাইপলাইন তৈরি করব যা প্রথমে আমাদের মডেলে পলিনোমিয়াল ফিচার যুক্ত করবে, এবং তারপর রিগ্রেশন প্রশিক্ষণ দেবে: +Scikit-learn একটি উপকারী [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) অন্তর্ভুক্ত করেছে যা ডেটা প্রসেসিং এর বিভিন্ন ধাপ একত্রিত করতে সাহায্য করে। একটি **pipeline** হলো **estimators** এর একটি চেইন। আমাদের ক্ষেত্রে, আমরা এমন একটি pipeline তৈরি করব যা প্রথমে পলিনোমিয়াল ফিচার আমাদের মডেলে যোগ করবে, তারপর রিগ্রেশন ট্রেন করবে: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,37 +255,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` ব্যবহার মানে আমরা ইনপুট ডেটার সব দ্বিতীয়-ডিগ্রী পলিনোমিয়াল অন্তর্ভুক্ত করব। আমাদের ক্ষেত্রে এটি শুধু `DayOfYear`2 হবে, কিন্তু দুই ইনপুট ভেরিয়েবল X এবং Y দেওয়া হলে এটি X2, XY এবং Y2 যোগ করবে। আমরা চাইলে উচ্চতর ডিগ্রির পলিনোমিয়ালও ব্যবহার করতে পারি। +`PolynomialFeatures(2)` ব্যবহার মানে আমরা ইনপুট ডেটার সমস্ত দ্বিতীয়-ডিগ্রী পলিনোমিয়াল অন্তর্ভুক্ত করব। আমাদের ক্ষেত্রে এটি শুধু `DayOfYear`2 বোঝাবে, কিন্তু যদি দুটি ইনপুট ভেরিয়েবল X এবং Y থাকে, তাহলে এটি X2, XY এবং Y2 যোগ করবে। আমরা চাইলে উচ্চতর ডিগ্রির পলিনোমিয়ালও ব্যবহার করতে পারি। + +Pipeline গুলো একইভাবে ব্যবহার করা যায় যেমন মূল `LinearRegression` অবজেক্ট, অর্থাৎ আমরা pipeline কে `fit` করতে পারি, তারপর `predict` ব্যবহার করে পূর্বাভাস পেতে পারি: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +মসৃণ অনুমান কার্ভ প্লট করতে, আমরা `np.linspace` ব্যবহার করি ইনপুট মানগুলোর একটি সুষম রেঞ্জ তৈরির জন্য, সরাসরি এলোমেলো টেস্ট ডেটায় প্লট করার পরিবর্তে (যা একটি জিগজ্যাগ লাইন তৈরি করত): -পাইপলাইনগুলি মূল `LinearRegression` অবজেক্টের মত একই রকম ব্যবহার করা যায়, অর্থাৎ আমরা পাইপলাইন `fit` করতে পারি, এবং তারপর `predict` ব্যবহার করে পূর্বাভাস ফলাফল নিতে পারি। নিচের গ্রাফ টি টেস্ট ডেটা এবং আনুমানিক বাঁক দেখাচ্ছে: +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +এখানে গ্রাফটি আছে যা টেস্ট ডেটা এবং অনুমান কার্ভ দেখায়: Polynomial regression -পলিনোমিয়াল রিগ্রেশন ব্যবহার করে আমরা সামান্য কম MSE এবং বেশি নির্ধারণ সহগ পেতে পারি, কিন্তু তা খুব বেশি নয়। আমাদের অন্যান্য বৈশিষ্ট্যগুলোও বিবেচনায় নিতে হবে! +পলিনোমিয়াল রিগ্রেশন ব্যবহার করে আমরা সামান্য কম RMSE এবং উচ্চতর নির্ধারণ সহগ পেতে পারি, কিন্তু তা খুব উল্লেখযোগ্য নয়। আমাদের অন্যান্য ফিচারও বিবেচনায় নিতে হবে! -> আপনি দেখতে পাচ্ছেন যে বছরের আশেপাশে হ্যালোউইনের সময় পাম্পকিনের দাম ন্যূনতম হয়। আপনি কীভাবে এটি ব্যাখ্যা করবেন? +> আপনি দেখতে পাচ্ছেন যে কুমড়োর দাম সর্বনিম্ন পর্যায়ে পাওয়া যায় প্রায় হ্যালোইন সময়। এটি আপনি কীভাবে ব্যাখ্যা করবেন? -🎃 অভিনন্দন, আপনি এমন একটি মডেল তৈরি করলেন যা পাই পাম্পকিনের দাম পূর্বাভাসে সাহায্য করতে পারে। একই পদ্ধতি সব ধরনের পাম্পকিনের জন্য পুনরাবৃত্তি করতে পারেন, কিন্তু সেটা ক্লান্তিকর হবে। এখন শিখি কিভাবে আমাদের মডেলে পাম্পকিন জাত বিবেচনা করব! +🎃 অভিনন্দন, আপনি একটি মডেল তৈরি করলেন যা পাই কুমড়োর দাম পূর্বাভাস দিতে সক্ষম। সম্ভবত আপনি একই পদ্ধতি সমস্ত কুমড়োর ধরনেও অনুকরণ করতে পারেন, কিন্তু সেটা বিরক্তিকর হবে। এখন শিখুন কিভাবে আমাদের মডেলে কুমড়োর বিভিন্ন জাতকে অন্তর্ভুক্ত করা যায়! -## শ্রেণীবদ্ধ বৈশিষ্ট্য (Categorical Features) +## Categorical Features -এক আদর্শ বিশ্বের, আমরা একই মডেল ব্যবহার করে বিভিন্ন পাম্পকিন জাতের দাম পূর্বাভাস দিতে চাই। তবে, `Variety` কলামটি অন্য কলাম যেমন `Month` থেকে ভিন্ন, কারণ এতে অ-সংখ্যাসূচক মান থাকে। এই ধরনের কলামকে বলা হয় **শ্রেণীবদ্ধ (Categorical)**। +আদর্শ জগতে, আমরা একই মডেল ব্যবহার করে বিভিন্ন কুমড়োর জাতের দাম পূর্বাভাস দিতে চাই। কিন্তু `Variety` কলাম অন্যান্য যেমন `Month` কলামের মতো নয়, কারণ এতে অ-সংখ্যাসূচক মান থাকে। এমন কলামগুলোকে **categorical** বলা হয়। -[![শিক্ষানবিশদের জন্য এমএল - শ্রেণীবদ্ধ বৈশিষ্ট্য ব্যবহার করে রিগ্রেশন পূর্বাভাস](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "শিক্ষানবিশদের জন্য এমএল - শ্রেণীবদ্ধ বৈশিষ্ট্য ব্যবহার করে রিগ্রেশন পূর্বাভাস") +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 উপরের ছবিটিতে ক্লিক করে শ্রেণীবদ্ধ বৈশিষ্ট্য ব্যবহারের সংক্ষিপ্ত ভিডিও দেখুন। +> 🎥 উপরের ছবিতে ক্লিক করলে একটি সংক্ষিপ্ত ভিডিও দেখতে পারবেন যা ক্যাটেগরিক্যাল ফিচার ব্যবহারের সারাংশ কীভাবে করবেন তা দেখায়। -এখানে আপনি দেখতে পাচ্ছেন গড় দাম কীভাবে পাম্পকিন জাত অনুযায়ী পরিবর্তিত হয়: +এখানে আপনি দেখতে পারেন কিভাবে গড় দাম জাতের উপর নির্ভর করে: Average price by variety -জাতকে বিবেচনায় নিতে, প্রথমে আমাদের এটিকে সংখ্যাসূচক রূপে রূপান্তর করতে হবে, বা **এনকোড** করতে হবে। আমরা এটি করার কয়েকটি পদ্ধতি আছে: - -* সাধারণ **সংখ্যাসূচক এনকোডিং** বিভিন্ন জাতের একটি টেবিল তৈরি করবে, এবং তারপর জাতের নামকে সেই টেবিলে ইন্ডেক্স দিয়ে প্রতিস্থাপন করবে। এটি রেখীয় রিগ্রেশনের জন্য সবচেয়ে ভালো ধারণা নয়, কারণ রেখীয় রিগ্রেশন ইন্ডেক্সের আসল সংখ্যাসূচক মান নিয়ে কাজ করে, এবং কিছু সহগ দিয়ে তা গুণ করে রেজাল্ট দেয়। আমাদের ক্ষেত্রে, ইন্ডেক্স নম্বর ও দাম এর মধ্যে সম্পর্ক স্পষ্টভাবে অ-রৈখিক, এমনকি আমরা নিশ্চিত করি যে ইন্ডেক্সসমূহ নির্দিষ্ট ক্রমে সাজানো। +জাতকে বিবেচনায় নিতে, প্রথমে আমাদের এটি সংখ্যাসূচক রূপান্তর করতে হবে, বা **এনকোড** করতে হবে। আমরা এটি করার কয়েকটি উপায় আছে: -* **ওয়ান-হট এনকোডিং** `Variety` কলামকে ৪টি ভিন্ন কলামে পরিবর্তন করবে, প্রতিটার জন্য আলাদা আলাদা। প্রতিটি কলামে থাকবে `1` যদি সংশ্লিষ্ট সারিটি ঐ জাতের হয়, অন্যথায় `0`। এর মানে, রিগ্রেশনে চারটি সহগ থাকবে, প্রতিটি পাম্পকিন জাতের জন্য একটি, যেগুলো ঐ বিশেষ জাতের জন্য "শুরু দাম" (অথবা "অতিরিক্ত দাম") নির্দেশ করে। +* সহজ **সংখ্যাসূচক এনকোডিং** একটি টেবিল তৈরি করবে বিভিন্ন জাতের, তারপর জাতের নামটিকে ওই টেবিলের একটি সূচকে পরিবর্তন করবে। এটি রৈখিক রিগ্রেশনের জন্য ভাল ধারণা নয়, কারণ রৈখিক রিগ্রেশন সূচকের প্রকৃত সংখ্যাটি গ্রহণ করে এবং কিছু সহগ দ্বারা গুণ করে ফলাফল যোগ করে। আমাদের ক্ষেত্রে, সূচক সংখ্যা এবং দাম সম্পর্ক স্পষ্টভাবে অলিনিয়ার, যদিও আমরা নিশ্চিত করি সূচক গুলো কোনো বিশেষ ক্রম অনুসারে সাজানো হয়েছে। +* **ওয়ান-হট এনকোডিং** `Variety` কলামকে ৪টি পৃথক কলাম দ্বারা প্রতিস্থাপন করবে, প্রতিটি একটি জাতের জন্য। প্রতিটি কলামে থাকবে `১` যদি সংশ্লিষ্ট সারিটি ঐ জাতের হয়, আর না হলে `০` থাকবে। অর্থাৎ রৈখিক রিগ্রেশনে চারটি সহগ থাকবে, প্রতিটি কুমড়োর জাতের জন্য, যা ঐ জাতের "শুরুর দাম" (বা বরং "অতিরিক্ত দাম") নির্ধারণ করবে। -নীচের কোড দেখায় কিভাবে আমরা জাত কে ওয়ান-হট এনকোড করতে পারি: +নিচের কোডটি দেখায় কিভাবে আমরা জাতকে ওয়ান-হট এনকোড করতে পারি: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -304,14 +323,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -ওয়ান-হট এনকোডেড জাত ব্যবহার করে লিনিয়ার রিগ্রেশন ট্রেন করতে, আমাদের শুধু সঠিকভাবে `X` এবং `y` ডেটা আরম্ভ করতে হবে: +ওয়ান-হট এনকোডেড জাত ব্যবহার করে লিনিয়ার রিগ্রেশন ট্রেন করতে, আমাদের শুধু সঠিকভাবে `X` এবং `y` ডেটা ইনিশিয়ালাইজ করতে হবে: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -বাকি কোড একই, যেটি আমরা পূর্বে লিনিয়ার রিগ্রেশন ট্রেনিংয়ের জন্য ব্যবহার করেছিলাম। আপনি যদি এটি চেষ্টা করেন, দেখতে পাবেন গড় বর্গমূল ত্রুটি প্রায় একই, কিন্তু নির্ধারণ সহগ অনেক বেশি (~৭৭%) পেয়েছি। আরও সঠিক পূর্বাভাসের জন্য আমরা আরো শ্রেণীবদ্ধ বৈশিষ্ট্য এবং সংখ্যাসূচক বৈশিষ্ট্য, যেমন `Month` বা `DayOfYear`, বিবেচনায় নিতে পারি। সব বৈশিষ্ট্যের এক বড় অ্যারে পেতে, আমরা `join` ব্যবহার করতে পারি: +বাকি কোড একই যা আমরা আগে `LinearRegression` ট্রেন করতে ব্যবহার করেছি। আপনি চেষ্টা করলে দেখতে পাবেন গড় বর্গ ত্রুটি একইরকম, কিন্তু আমরা অনেক বেশি নির্ধারণ সহগ (~৭৭%) পাই। আরও সঠিক পূর্বাভাস পেতে, আমরা আরো ক্যাটেগরিক্যাল ফিচার এবং সংখ্যাসূচক ফিচার, যেমন `Month` বা `DayOfYear` বিবেচনায় নিতে পারি। সমস্ত ফিচার একত্রিত করতে, আমরা `join` ব্যবহার করতে পারি: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -321,68 +340,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -এখানে আমরা `City` এবং `Package` টাইপও বিবেচনায় নিয়েছি, যার ফলে MSE হয়েছে 2.84 (১০%) এবং নির্ধারণ 0.94! +এখানে আমরা `City` এবং `Package` টাইপও বিবেচনায় নিচ্ছি, যা আমাদের RMSE ২.৮৪ (১০.৫%) এবং নির্ধারণ সহগ ০.৯৪ দেয়! -## সব একসাথে সংযোজন +## Putting it all together -সেরা মডেল তৈরি করতে, আমরা একত্রিত (ওয়ান-হট এনকোডেড শ্রেণীবদ্ধ + সংখ্যাসূচক) ডেটা উপরের উদাহরণ থেকে ব্যবহার করে পলিনোমিয়াল রিগ্রেশন ব্যবহার করব। আপনার সুবিধার জন্য সম্পূর্ণ কোড দেওয়া হলো: +সেরা মডেল তৈরি করতে, আমরা উপরের উদাহরণ থেকে একাধিক (ওয়ান-হট এনকোডেড ক্যাটেগরিক্যাল + সংখ্যাসূচক) ডেটা পলিনোমিয়াল রিগ্রেশনের সাথে ব্যবহার করতে পারি। নিচে আপনার সুবিধার জন্য সম্পূর্ণ কোড দেওয়া হলো: ```python -# প্রশিক্ষণ ডেটা প্রস্তুত করুন +# প্রশিক্ষণ ডেটা সেট আপ করুন X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# ট্রেন-টেস্ট স্প্লিট তৈরি করুন +# ট্রেন-টেস্ট বিভাজন করুন X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # পাইপলাইন সেটআপ এবং প্রশিক্ষণ দিন pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# টেস্ট ডেটার জন্য ফলাফল পূর্বাভাস করুন +# টেস্ট ডেটার জন্য ফলাফল অনুমান করুন pred = pipeline.predict(X_test) -# MSE এবং নির্ধারণ গণনা করুন -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE এবং নির্ধারণ গণনা করুন +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -এটি আমাদের প্রায় ৯৭% সেরা নির্ধারণ সহগ এবং MSE=2.23 (~৮% পূর্বাভাস ত্রুটি) দেবে। +এটি আমাদের প্রায় ৯৭% নির্ধারণ সহগ এবং RMSE=২.২৩ (~৮% পূর্বাভাস ত্রুটি) দিবে। -| মডেল | MSE | নির্ধারণ | +| Model | RMSE | Determination | |-------|-----|---------------| -| `DayOfYear` লিনিয়ার | 2.77 (১৭.২%) | 0.07 | -| `DayOfYear` পলিনোমিয়াল | 2.73 (১৭.০%) | 0.08 | -| `Variety` লিনিয়ার | 5.24 (১৯.৭%) | 0.77 | -| সব বৈশিষ্ট্য লিনিয়ার | 2.84 (১০.৫%) | 0.94 | -| সব বৈশিষ্ট্য পলিনোমিয়াল | 2.23 (৮.২৫%) | 0.97 | +| `DayOfYear` Linear | ২.৭৭ (১৭.২%) | ০.০৭ | +| `DayOfYear` Polynomial | ২.৭৩ (১৭.০%) | ০.০৮ | +| `Variety` Linear | ৫.২৪ (১৯.৭%) | ০.৭৭ | +| All features Linear | ২.৮৪ (১০.৫%) | ০.৯৪ | +| All features Polynomial | ২.২৩ (৮.২৫%) | ০.৯৭ | -🏆 অসাধারণ! এক লেসনে চারটি রিগ্রেশন মডেল তৈরি করলেন এবং মডেলের গুণমান ৯৭% এ উন্নত করলেন। রিগ্রেশন এর শেষ অংশে আপনি ক্যাটেগরি নির্ধারণের জন্য লজিস্টিক রিগ্রেশন সম্পর্কে জানতে পারবেন। +🏆 বেশ সুন্দর! আপনি একটি পাঠে চারটি রিগ্রেশন মডেল তৈরি করলেন এবং মডেল গুণমান উন্নত করে ৯৭% এ নিলেন। রিগ্রেশনের শেষ অংশে আপনি ক্যাটেগরি নির্ধারণের জন্য লজিস্টিক রিগ্রেশন সম্পর্কে শিখবেন। --- -## 🚀চ্যালেঞ্জ +## 🚀Challenge -এই নোটবুকে বিভিন্ন ভেরিয়েবল পরীক্ষা করুন এবং দেখুন কিভাবে সহগ মডেলের সঠিকতার সাথে সম্পর্কিত। +এই নোটবুকে বিভিন্ন ভেরিয়েবল পরীক্ষা করুন এবং দেখুন সম্পর্ক এবং মডেল সঠিকতার মধ্যে কেমন সংযোগ আছে। -## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) +## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## রিভিউ ও স্ব-অধ্যয়ন +## Review & Self Study -এই লেসনে আমরা লিনিয়ার রিগ্রেশন শিখেছি। রিগ্রেশনের অন্য গুরুত্বপূর্ণ ধরন রয়েছে। স্টেপওয়াইজ, রিজ, লাসো এবং ইলাস্টিকনেট পদ্ধতি সম্পর্কে পড়ুন। ভালো কোর্স হলো [স্ট্যানফোর্ড স্ট্যাটিস্টিক্যাল লার্নিং কোর্স](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +এই পাঠে আমরা লিনিয়ার রিগ্রেশন শিখলাম। রিগ্রেশনের অন্যান্য গুরুত্বপূর্ণ ধরণও আছে। স্টেপওয়াইজ, রিজ, লাসো এবং এলাস্টিকনেট প্রযুক্তিগুলো সম্পর্কে পড়ুন। আরও শেখার জন্য একটি ভালো কোর্স হল [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## অ্যাসাইনমেন্ট +## Assignment -[একটি মডেল তৈরি করুন](assignment.md) +[Build a Model](assignment.md) --- -**প্রত্যাহার সতর্কতা**: -এই নথিটি এআই অনুবাদ সেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা ভুল থাকতে পারে। মূল নথিটি তার প্রাসঙ্গিক ভাষায় কর্তৃত্বস্বরূপ বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানুষের অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে যে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। +**বিকল্প বিবৃতি**: +এই ডকুমেন্টটি AI অনুবাদ সেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। আমরা সঠিকতার জন্য প্রচেষ্টা করি, তবে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা ভুল থাকা সম্ভব। মূল নথি তার নিজস্ব ভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদের পরামর্শ দেওয়া হয়। এই অনুবাদের ব্যবহারে কোনও ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। \ No newline at end of file diff --git a/translations/bn/2-Regression/3-Linear/solution/notebook.ipynb b/translations/bn/2-Regression/3-Linear/solution/notebook.ipynb index 2db62bf3b6..9bbf6e1f3b 100644 --- a/translations/bn/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/bn/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## কুমড়ার মূল্য নির্ধারণের জন্য লিনিয়ার এবং পলিনোমিয়াল রিগ্রেশন - পাঠ ৩\n", + "## কুমড়োর মূল্য নির্ধারণের জন্য লিনিয়ার এবং পলিনোমিয়াল রিগ্রেশন - পাঠ ৩\n", "\n", - "প্রয়োজনীয় লাইব্রেরি এবং ডেটাসেট লোড করুন। ডেটাকে একটি ডেটাফ্রেমে রূপান্তর করুন যা ডেটার একটি অংশ ধারণ করে:\n", + "প্রয়োজনীয় লাইব্রেরি এবং ডেটাসেট লোড করুন। ডেটাকে একটি ডেটাফ্রেমে রূপান্তর করুন যা ডেটার একটি উপসেট ধারণ করে:\n", "\n", - "- শুধুমাত্র সেই কুমড়াগুলো নিন যেগুলো বাসেল অনুযায়ী মূল্য নির্ধারণ করা হয়েছে\n", - "- তারিখকে মাসে রূপান্তর করুন\n", - "- উচ্চ এবং নিম্ন মূল্যের গড় হিসাব করে মূল্য নির্ধারণ করুন\n", - "- মূল্যকে বাসেল পরিমাণ অনুযায়ী রূপান্তর করুন\n" + "- শুধুমাত্র সেই কুমড়োগুলো নিন যেগুলোর মূল্য বাসেল ভিত্তিক\n", + "- তারিখকে একটি মাসে রূপান্তর করুন\n", + "- উচ্চ এবং নিম্ন দামের গড় হিসেবে মূল্য গণনা করুন\n", + "- বাসেল পরিমাণ অনুযায়ী মূল্য প্রয়োগ করুন\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "একটি স্ক্যাটারপ্লট আমাদের মনে করিয়ে দেয় যে আমাদের কাছে শুধুমাত্র আগস্ট থেকে ডিসেম্বর পর্যন্ত মাসের ডেটা রয়েছে। সম্ভবত আমাদের আরও ডেটা প্রয়োজন যাতে আমরা একটি সরলরৈখিক পদ্ধতিতে সিদ্ধান্ত নিতে পারি।\n" + "একটি স্ক্যাটারপ্লট আমাদের মনে করিয়ে দেয় যে আমাদের কাছে শুধু আগস্ট থেকে ডিসেম্বর পর্যন্ত মাসের ডেটা রয়েছে। আমরা সম্ভবত লিনিয়ার ফ্যাশনে উপসংহার টানার জন্য আরও ডেটার প্রয়োজন।\n" ] }, { @@ -448,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "চলুন দেখি কোনো সম্পর্ক আছে কিনা:\n" + "চলুন দেখি কোনো সম্পর্ক আছে কি না:\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "মনে হচ্ছে সম্পর্কটি বেশ ছোট, তবে আরও গুরুত্বপূর্ণ কিছু সম্পর্ক রয়েছে - কারণ উপরের প্লটে মূল্য পয়েন্টগুলি কয়েকটি স্বতন্ত্র ক্লাস্টারে বিভক্ত। চলুন একটি প্লট তৈরি করি যা বিভিন্ন কুমড়ার প্রজাতি দেখাবে:\n" + "দেখা যাচ্ছে সম্পর্ক খুব কম, তবে আরও কিছু গুরুত্বপূর্ণ সম্পর্ক আছে - কারণ উপরের প্লটে দাম পয়েন্টগুলিতে বেশ কয়েকটি পৃথক ক্লাস্টার রয়েছে। চলুন একটি প্লট তৈরি করি যা বিভিন্ন কুমড়ো শ্রেণী দেখাবে:\n" ] }, { @@ -537,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "বর্তমানে, চলুন শুধুমাত্র একটি বর্ণের উপর মনোযোগ কেন্দ্রীভূত করি - **পাই টাইপ**।\n" + ] }, { "cell_type": "code", @@ -586,7 +588,7 @@ "source": [ "### লিনিয়ার রিগ্রেশন\n", "\n", - "আমরা স্কিকিট লার্ন ব্যবহার করে লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণ করব:\n" + "আমরা লিনিয়ার রিগ্রেশন মডেল প্রশিক্ষণের জন্য Scikit Learn ব্যবহার করব:\n" ] }, { @@ -664,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "রেখার ঢাল লিনিয়ার রিগ্রেশন সহগ থেকে নির্ধারণ করা যেতে পারে:\n" + "রৈখিক রিগ্রেশন সহগ থেকে রেখার ঢাল নির্ধারণ করা যায়:\n" ] }, { @@ -691,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "আমরা প্রশিক্ষিত মডেলটি ব্যবহার করে মূল্য পূর্বাভাস দিতে পারি:\n" + "আমরা প্রশিক্ষিত মডেলটি ব্যবহার করে দাম অনুমান করতে পারি:\n" ] }, { @@ -722,9 +724,9 @@ "source": [ "### পলিনোমিয়াল রিগ্রেশন\n", "\n", - "কখনও কখনও ফিচার এবং ফলাফলের মধ্যে সম্পর্ক স্বাভাবিকভাবেই অ-রৈখিক হয়। উদাহরণস্বরূপ, কুমড়ার দাম শীতকালে (মাস=১,২) বেশি হতে পারে, তারপর গ্রীষ্মে (মাস=৫-৭) কমে যেতে পারে, এবং পরে আবার বাড়তে পারে। লিনিয়ার রিগ্রেশন এই সম্পর্কটি সঠিকভাবে খুঁজে পেতে অক্ষম।\n", + "কখনও কখনও বৈশিষ্ট্যগুলির সাথে ফলাফলের সম্পর্ক স্বভাবতই অ-রৈখিক হয়। উদাহরণস্বরূপ, শরত্কালের (মাস=১,২) মধ্যে কুমড়োর দাম বেশি হতে পারে, তারপর গ্রীষ্মকালে (মাস=৫-৭) কমে যেতে পারে, এবং তারপর আবার বাড়তে পারে। রৈখিক রিগ্রেশন এই সম্পর্কটি সঠিকভাবে খুঁজে পায় না।\n", "\n", - "এই ক্ষেত্রে, আমরা অতিরিক্ত ফিচার যোগ করার কথা বিবেচনা করতে পারি। সহজ উপায় হল ইনপুট ফিচার থেকে পলিনোমিয়াল ব্যবহার করা, যা **পলিনোমিয়াল রিগ্রেশন** তৈরি করবে। সাইকিট লার্ন-এ, আমরা পাইপলাইনের মাধ্যমে স্বয়ংক্রিয়ভাবে পলিনোমিয়াল ফিচার প্রি-কম্পিউট করতে পারি:\n" + "এই ক্ষেত্রে, আমরা অতিরিক্ত বৈশিষ্ট্য যোগ করার কথা ভাবতে পারি। একটি সহজ উপায় হল ইনপুট বৈশিষ্ট্য থেকে পলিনোমিয়াল ব্যবহার করা, যা **পলিনোমিয়াল রিগ্রেশন** ফলাফল করবে। Scikit Learn-এ, আমরা পাইপলাইন ব্যবহার করে স্বয়ংক্রিয়ভাবে পলিনোমিয়াল বৈশিষ্ট্যগুলি পূর্ব গণনা করতে পারি: \n" ] }, { @@ -779,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### এনকোডিং প্রকারভেদ\n", + "### এনকোডিং বৈচিত্র্য\n", "\n", - "আদর্শ পরিস্থিতিতে, আমরা চাই একই মডেল ব্যবহার করে বিভিন্ন কুমড়ার প্রকারভেদের দাম পূর্বাভাস দিতে সক্ষম হতে। প্রকারভেদকে বিবেচনায় আনতে, প্রথমে আমাদের এটিকে সংখ্যায় রূপান্তর করতে হবে, বা **এনকোড** করতে হবে। এটি করার কয়েকটি পদ্ধতি রয়েছে:\n", + "আদর্শ বিশ্বের ক্ষেত্রে, আমরা একই মডেল ব্যবহার করে বিভিন্ন কুমড়ো বৈচিত্র্যের দাম পূর্বাভাস দিতে চাই। বৈচিত্র্যকে বিবেচনায় নিতে, আমাদের প্রথমে এটি সংখ্যাসূচক রূপে রূপান্তর করতে হবে, বা **এনকোড** করতে হবে। আমরা এটি করার কয়েকটি উপায় আছে:\n", "\n", - "* সাধারণ সংখ্যাগত এনকোডিং, যা বিভিন্ন প্রকারভেদের একটি টেবিল তৈরি করবে এবং তারপর সেই টেবিলের সূচকের মাধ্যমে প্রকারভেদের নাম প্রতিস্থাপন করবে। এটি লিনিয়ার রিগ্রেশনের জন্য সেরা পদ্ধতি নয়, কারণ লিনিয়ার রিগ্রেশন সূচকের সংখ্যাগত মানকে বিবেচনায় নেয়, এবং সংখ্যাগত মান সম্ভবত দামের সাথে সংখ্যাগতভাবে সম্পর্কিত নয়।\n", - "* ওয়ান-হট এনকোডিং, যা `Variety` কলামকে ৪টি ভিন্ন কলামে প্রতিস্থাপন করবে, প্রতিটি প্রকারভেদের জন্য একটি কলাম থাকবে, যেখানে সংশ্লিষ্ট সারি যদি নির্দিষ্ট প্রকারভেদের হয়, তাহলে ১ থাকবে, অন্যথায় ০ থাকবে।\n", + "* সিম্পল সংখ্যাসূচক এনকোডিং যা বিভিন্ন বৈচিত্র্যের একটি টেবিল তৈরি করবে, এবং তারপর টেবিলের একটি সূচকে বৈচিত্র্যের নাম প্রতিস্থাপন করবে। এটি লিনিয়ার রিগ্রেশনের জন্য সেরা ধারণা নয়, কারণ লিনিয়ার রিগ্রেশন সূচকের সংখ্যাসূচক মানকে বিবেচনায় নেয়, এবং সংখ্যাসূচক মান দাম সাথে সংখ্যাত্মকভাবে সম্পর্কযুক্ত নাও থাকতে পারে।\n", + "* ওয়ান-হট এনকোডিং, যা `Variety` কলামটি ৪টি আলাদা কলামে প্রতিস্থাপন করবে, প্রতিটি বৈচিত্র্যের জন্য একটি, যা থাকবে ১ যদি সংশ্লিষ্ট সারিটি সেই বৈচিত্র্যের হয়, অন্যথায় ০।\n", "\n", - "নিচের কোডটি দেখায় কীভাবে আমরা একটি প্রকারভেদকে ওয়ান-হট এনকোড করতে পারি:\n" + "নিচের কোডটি দেখায় আমরা কীভাবে একটি বৈচিত্র্য ওয়ান-হট এনকোড করতে পারি:\n" ] }, { @@ -942,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### বিভিন্নতার উপর লিনিয়ার রিগ্রেশন\n", + "### ভেরাইটি উপর লিনিয়ার রিগ্রেশন\n", "\n", - "এখন আমরা উপরের একই কোড ব্যবহার করব, তবে `DayOfYear` এর পরিবর্তে ইনপুট হিসেবে আমাদের এক-হট-এনকোড করা বিভিন্নতা ব্যবহার করব:\n" + "আমরা এখন উপরের একই কোড ব্যবহার করব, তবে `DayOfYear` এর পরিবর্তে আমাদের ওয়ান-হট-এনকোডেড ভেরাইটি ইনপুট হিসেবে ব্যবহার করব:\n" ] }, { @@ -992,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "আমরা একই পদ্ধতিতে অন্যান্য বৈশিষ্ট্য ব্যবহার করার চেষ্টা করতে পারি এবং সেগুলিকে সংখ্যাগত বৈশিষ্ট্যের সাথে যেমন `Month` বা `DayOfYear` এর সাথে সংযুক্ত করতে পারি:\n" + "আমরা একইভাবে অন্যান্য বৈশিষ্ট্য ব্যবহার করার চেষ্টা করতে পারি, এবং সেগুলোকে সংখ্যাসূচক বৈশিষ্ট্যগুলোর সাথে একত্রিত করতে পারি, যেমন `Month` বা `DayOfYear`:\n" ] }, { @@ -1023,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### পলিনোমিয়াল রিগ্রেশন\n", + "### পলিনোমিয়াল রিগ্রেশন\n", "\n", - "পলিনোমিয়াল রিগ্রেশন এক-হট-এনকোড করা ক্যাটেগরিকাল বৈশিষ্ট্যগুলোর সাথেও ব্যবহার করা যেতে পারে। পলিনোমিয়াল রিগ্রেশন প্রশিক্ষণের কোড মূলত উপরে দেখা কোডের মতোই হবে।\n" + "এক-হট এনকোড করা ক্যাটেগরিক্যাল বৈশিষ্ট্যগুলির সাথেও পলিনোমিয়াল রিগ্রেশন ব্যবহার করা যেতে পারে। পলিনোমিয়াল রিগ্রেশন প্রশিক্ষণের কোডটি মূলত একই হবে যা আমরা উপরে দেখেছি।\n" ] }, { @@ -1072,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**অস্বীকৃতি**: \nএই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।\n" + "---\n\n\n**অস্বীকৃতি**:\nএই নথিটি AI অনুবাদ সেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা সঠিকতার জন্য চেষ্টা করি, দয়া করে সচেতন থাকুন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা ভুল থাকতে পারে। মূল নথিটি এর স্থানীয় ভাষায়ই কর্তৃত্বপূর্ণ উৎস হিসাবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদের পরামর্শ দেওয়া হয়। এই অনুবাদের ব্যবহারে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই।\n\n" ] } ], @@ -1102,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T22:46:07+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "bn" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/mr/.co-op-translator.json b/translations/mr/.co-op-translator.json index 8accf30362..33249b6123 100644 --- a/translations/mr/.co-op-translator.json +++ b/translations/mr/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "mr" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T06:13:42+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T19:58:51+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "mr" }, @@ -90,8 +90,8 @@ "language_code": "mr" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:56:22+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:58:22+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "mr" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "mr" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:55:14+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "mr" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T06:05:45+00:00", diff --git a/translations/mr/1-Introduction/4-techniques-of-ML/README.md b/translations/mr/1-Introduction/4-techniques-of-ML/README.md index edbf9e0d2f..ae45e6ea53 100644 --- a/translations/mr/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/mr/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ -# मशीन लर्निंगच्या तंत्रज्ञान +# मशीन लर्निंगच्या तंत्रांचा परिचय -मशीन लर्निंग मॉडेल्स तयार करणे, वापरणे आणि त्यांचे व्यवस्थापन करणे हा इतर विकास प्रक्रियांपेक्षा खूप वेगळा आहे. या धड्यात आपण या प्रक्रियेचा उलगडा करू आणि तुम्हाला आवश्यक असलेल्या मुख्य तंत्रज्ञानांची ओळख करून देऊ. तुम्ही: +मशीन लर्निंग मॉडेल्स तयार करणे, वापरणे, आणि त्यांच्याद्वारे वापरल्या जाणाऱ्या डेटाचे व्यवस्थापन करणे हे अनेक इतर विकास प्रक्रियांपेक्षा खूप वेगळे आहे. या धड्यात, आपण या प्रक्रियेला समजून घेऊ आणि त्यातील मुख्य तंत्रे ओळखून घेऊ. आपणः -- मशीन लर्निंगच्या प्रक्रियेची उच्चस्तरीय समज प्राप्त कराल. -- 'मॉडेल्स', 'भाकीत', आणि 'ट्रेनिंग डेटा' यासारख्या मूलभूत संकल्पनांचा अभ्यास कराल. +- मशीन लर्निंगच्या प्रक्रिया उच्च पातळीवर समजून घेणार. +- 'मॉडेल्स', 'भविष्यातील भाकिते', आणि 'प्रशिक्षण डेटा' यांसारख्या मूलभूत संकल्पना पाहणार. -## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) +## [पूर्व लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/) -[![मशीन लर्निंगसाठी सुरुवात - मशीन लर्निंगच्या तंत्रज्ञान](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "मशीन लर्निंगसाठी सुरुवात - मशीन लर्निंगच्या तंत्रज्ञान") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्याचा व्हिडिओ पहा. +> 🎥 वर दिलेल्या प्रतिमेवर क्लिक करा, ज्यात या धड्याचे थोडक्यात स्पष्टीकरण आहे. ## परिचय -उच्चस्तरीय दृष्टिकोनातून, मशीन लर्निंग (ML) प्रक्रिया तयार करण्याची कला अनेक टप्प्यांमध्ये विभागलेली आहे: +उच्च पातळीवर, मशीन लर्निंग (एमएल) प्रक्रिया तयार करण्याचे काम अनेक टप्प्यांमध्ये विभागलेले आहे: -1. **प्रश्न ठरवा**. बहुतेक ML प्रक्रिया अशा प्रश्नाने सुरू होतात ज्याचे उत्तर साध्या अटींवर आधारित प्रोग्राम किंवा नियम-आधारित इंजिनद्वारे देता येत नाही. हे प्रश्न सहसा डेटावर आधारित भाकीतांभोवती फिरतात. -2. **डेटा गोळा करा आणि तयार करा**. तुमच्या प्रश्नाचे उत्तर देण्यासाठी तुम्हाला डेटा आवश्यक आहे. तुमच्या डेटाची गुणवत्ता आणि कधी कधी प्रमाण ठरवते की तुम्ही तुमच्या सुरुवातीच्या प्रश्नाचे उत्तर किती चांगल्या प्रकारे देऊ शकता. डेटाचे व्हिज्युअलायझेशन या टप्प्याचा महत्त्वाचा भाग आहे. या टप्प्यात डेटा ट्रेनिंग आणि टेस्टिंग गटांमध्ये विभागणे समाविष्ट आहे जेणेकरून मॉडेल तयार करता येईल. -3. **ट्रेनिंग पद्धत निवडा**. तुमच्या प्रश्नावर आणि डेटाच्या स्वरूपावर आधारित, तुम्हाला तुमच्या डेटाचे सर्वोत्तम प्रतिबिंबित करण्यासाठी आणि त्यावर अचूक भाकीत करण्यासाठी मॉडेल कसे ट्रेन करायचे ते निवडावे लागेल. ही तुमच्या ML प्रक्रियेची ती भाग आहे ज्यासाठी विशिष्ट कौशल्य आवश्यक आहे आणि अनेकदा बरीच प्रयोगशीलता लागते. -4. **मॉडेल ट्रेन करा**. तुमच्या ट्रेनिंग डेटाचा वापर करून, तुम्ही विविध अल्गोरिदम वापरून मॉडेल ट्रेन कराल जे डेटामधील नमुने ओळखतील. मॉडेल अंतर्गत वजनांचा उपयोग करू शकते जे डेटाच्या विशिष्ट भागांना इतरांपेक्षा प्राधान्य देण्यासाठी समायोजित केले जाऊ शकते जेणेकरून चांगले मॉडेल तयार होईल. -5. **मॉडेलचे मूल्यांकन करा**. तुमच्या गोळा केलेल्या सेटमधून कधीही न पाहिलेल्या डेटाचा (तुमचा टेस्टिंग डेटा) वापर करून तुम्ही मॉडेल कसे कार्य करत आहे ते पाहता. -6. **पॅरामीटर ट्यूनिंग**. तुमच्या मॉडेलच्या कार्यक्षमतेच्या आधारे, तुम्ही वेगवेगळ्या पॅरामीटर्स किंवा व्हेरिएबल्स वापरून प्रक्रिया पुन्हा करू शकता जे मॉडेल ट्रेन करण्यासाठी वापरल्या जाणाऱ्या अल्गोरिदमच्या वर्तनावर नियंत्रण ठेवतात. -7. **भाकीत करा**. नवीन इनपुट्स वापरून तुमच्या मॉडेलची अचूकता तपासा. +1. **प्रश्न ठरवा.** बहुतेक एमएल प्रक्रिया अशा प्रश्नाशी सुरु होतात ज्याचे उत्तर सोप्या शर्तींवर आधारित प्रोग्राम किंवा नियमांमुळे दिले जाऊ शकत नाही. हे प्रश्न बहुधा डेटाच्या संकलनावर आधारित भाकितांभोवती फिरतात. +2. **डेटा गोळा करा व तयार करा.** आपला प्रश्न उत्तर देण्यासाठी तुम्हाला डेटा आवश्यक आहे. डेटाची गुणवत्ता आणि कधी कधी त्याची प्रमाणही, तुमचा मूळ प्रश्न किती चांगल्या प्रकारे उत्तर देता येईल हे ठरवते. डेटा दृश्यरूपात सादर करणे या टप्प्याचा महत्त्वाचा भाग आहे. या टप्प्यात डेटा प्रशिक्षण आणि चाचणी गटांमध्ये विभाजित करण्याचा समावेश देखील आहे, ज्याचा वापर मॉडेल तयार करण्यासाठी होतो. +3. **प्रशिक्षण पद्धत निवडा.** तुमच्या प्रश्नावर आणि डेटाच्या स्वरूपावर अवलंबून, तुम्हाला एक असा मार्ग निवडावा लागेल ज्याद्वारे मॉडेलला प्रशिक्षित करून डेटा प्रतिबिंबित केला जाईल आणि त्यावर अचूक भाकिते केली जातील. हे तुमच्या एमएल प्रक्रियेचा तो भाग आहे ज्यासाठी विशेष कौशल्याची आवश्यकता असते आणि अनेकदा मोठ्या प्रमाणात प्रयोग होते. +4. **मॉडेल प्रशिक्षित करा.** आपल्या प्रशिक्षण डेटाचा वापर करून, विविध अल्गोरिदमचा वापर करून मॉडेलला डेटामधील पॅटर्न ओळखण्यासाठी प्रशिक्षित करता येते. मॉडेलमध्ये अंतर्गत वजनांची (weights) समाविष्टता असू शकते, ज्यामुळे काही भाग डेटा अधिक महत्त्वाचा ठरवू शकतात, त्यामुळे मॉडेल सुधारता येते. +5. **मॉडेलचे मूल्यमापन करा.** तुमच्या संग्रहित डेटामधून कधीही न पाहिलेला डेटा (तुमचा चाचणी डेटासेट) वापरून, मॉडेल कसे काम करत आहे ते तपासता येते. +6. **परिमाण समायोजन (Parameter tuning).** मॉडेलच्या कामगिरीवर आधारित, तुम्ही वेगवेगळे परिमाण किंवा चल (variables) बदलून पुन्हा प्रयत्न करू शकता, ज्यामुळे अल्गोरिदमच्या वर्तनावर नियंत्रण ठेवता येतो. +7. **भाकित करा.** नवीन इनपुट वापरणून तुमच्या मॉडेलच्या अचूकतेची चाचणी घेता येते. ## कोणता प्रश्न विचारायचा -कॉम्प्युटर्स डेटामधील लपलेले नमुने शोधण्यात विशेषतः कुशल असतात. ही उपयोगिता संशोधकांसाठी खूप उपयुक्त आहे ज्यांना एखाद्या डोमेनबद्दल प्रश्न असतो ज्याचे उत्तर अटींवर आधारित नियम इंजिन तयार करून सहज देता येत नाही. उदाहरणार्थ, एखाद्या अॅक्चुअरियल कार्यासाठी, डेटा सायंटिस्ट स्मोकर्स विरुद्ध नॉन-स्मोकर्सच्या मृत्यू दरांभोवती हस्तनिर्मित नियम तयार करू शकतो. +संगणक डेटामधील लपलेले पॅटर्न शोधण्यात विशेष प्रवीण आहेत. विशेषतः संशोधकांसाठी, ज्यांना दिलेल्या क्षेत्राबद्दल प्रश्न असतात आणि ज्याचे उत्तर सोप्या नियमांद्वारे देता येत नाही, हे फार उपयुक्त ठरू शकते. उदाहरणार्थ, एक डेटा सायंटिस्ट धूम्रपान करणाऱ्यांचा आणि न धूम्रपान करणाऱ्यांचा मृत्यू दर यावर हस्तकलेने तयार केलेले नियम तयार करू शकतो. -तथापि, जेव्हा अनेक इतर व्हेरिएबल्स समीकरणात आणले जातात, तेव्हा ML मॉडेल भूतकाळातील आरोग्य इतिहासाच्या आधारे भविष्यातील मृत्यू दरांचे भाकीत करण्यासाठी अधिक कार्यक्षम ठरू शकते. एक आनंददायक उदाहरण म्हणजे एप्रिल महिन्यासाठी एखाद्या ठिकाणासाठी हवामानाचा अंदाज लावणे ज्यामध्ये अक्षांश, रेखांश, हवामान बदल, समुद्राजवळील अंतर, जेट प्रवाहाचे नमुने आणि बरेच काही समाविष्ट आहे. +परंतु जेव्हा अनेक इतर चल या समीकरणात येतात, तेव्हा भूतकाळातील आरोग्य इतिहासावर आधारित भविष्यातील मृत्यू दर भाकीत करण्यासाठी एमएल मॉडेल अधिक कार्यक्षम ठरू शकते. आणखी आनंददायक उदाहरण म्हणजे एखाद्या ठिकाणच्या एप्रिल महिन्यासाठी हवामान भाकिते करणे, ज्यासाठी अक्षांश, रेखांश, हवामान बदल, समुद्राच्या जवळीक, जेट स्ट्रीमचे पॅटर्न आणि इतर डेटा एंट्रीज वापरल्या जातात. -✅ हवामान मॉडेल्सवर आधारित [ही स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) हवामान विश्लेषणात ML वापरण्याचा ऐतिहासिक दृष्टिकोन देते. +✅ हा [स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) हवामान मॉडेल्सवर मशीन लर्निंगचा ऐतिहासिक दृष्टिकोन देतो. -## मॉडेल तयार करण्यापूर्वीचे कार्य +## आधीची तयारी -तुमचे मॉडेल तयार करण्यास सुरुवात करण्यापूर्वी, तुम्हाला काही कार्ये पूर्ण करणे आवश्यक आहे. तुमचा प्रश्न तपासण्यासाठी आणि मॉडेलच्या भाकीतांवर आधारित गृहीतक तयार करण्यासाठी, तुम्हाला काही घटक ओळखणे आणि कॉन्फिगर करणे आवश्यक आहे. +तुमचा मॉडेल तयार करण्यापूर्वी, काही कामे निपटवणे आवश्यक आहे. तुमच्या प्रश्नाची चाचणी करण्यासाठी आणि मॉडेलच्या भाकितांवर आधारित गृहीत धडा तयार करण्यासाठी काही घटक ओळखणे आणि कॉन्फिगर करणे आवश्यक आहे. ### डेटा -तुमच्या प्रश्नाचे कोणत्याही प्रकारच्या खात्रीसह उत्तर देण्यासाठी, तुम्हाला योग्य प्रकारचा डेटा मोठ्या प्रमाणात आवश्यक आहे. या टप्प्यावर तुम्हाला दोन गोष्टी कराव्या लागतील: +तुमचा प्रश्न नक्की उत्तर देण्यासाठी, तुमच्याकडे योग्य प्रकारचा पुरेसा डेटा असणे आवश्यक आहे. येथे दोन गोष्टी कराव्या लागतात: -- **डेटा गोळा करा**. डेटाच्या विश्लेषणातील निष्पक्षतेवर आधारित मागील धड्याचा विचार करून, तुमचा डेटा काळजीपूर्वक गोळा करा. या डेटाचे स्रोत, त्यामध्ये असलेले कोणतेही अंतर्निहित पूर्वग्रह आणि त्याचा उगम दस्तऐवजीकरण करा. -- **डेटा तयार करा**. डेटा तयार करण्याच्या प्रक्रियेत अनेक पायऱ्या असतात. जर डेटा विविध स्रोतांमधून आला असेल तर तुम्हाला डेटा एकत्र करावा लागेल आणि सामान्य करावा लागेल. तुम्ही स्ट्रिंग्सला नंबरमध्ये रूपांतरित करणे (जसे आपण [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) मध्ये करतो) यासारख्या विविध पद्धतींनी डेटाची गुणवत्ता आणि प्रमाण सुधारू शकता. तुम्ही मूळ डेटावर आधारित नवीन डेटा तयार करू शकता (जसे आपण [वर्गीकरण](../../4-Classification/1-Introduction/README.md) मध्ये करतो). तुम्ही डेटा स्वच्छ आणि संपादित करू शकता (जसे आपण [वेब अॅप](../../3-Web-App/README.md) धड्याच्या आधी करू). शेवटी, तुमच्या ट्रेनिंग तंत्रांवर अवलंबून, तुम्हाला ते रँडमाइज आणि शफल करावे लागेल. +- **डेटा गोळा करा.** आधीच्या धड्यातील डेटा विश्लेषणातील नीयमधर्मांवर लक्ष ठेवून, काळजीपूर्वक डेटा संकलित करा. डेटा कसा गोळा केला जातो, त्यात कोणतेही पूर्वग्रह आहेत का याचा विचार करा आणि त्याचा स्रोत नोंदवा. +- **डेटा तयार करा.** डेटा तयार करण्याचा काही टप्पे आहेत. वेगवेगळ्या स्रोतांमधून आल्यानंतर डेटा संयोजित करणे आणि सामान्य स्वरूपात आणणे आवश्यक असू शकते. डेटा गुणवत्ता आणि प्रमाण सुधारण्यासाठी विविध पद्धती वापरू शकता, जसे स्ट्रिंग्सना संख्या मध्ये रूपांतर करणे (आपण [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) मध्ये करत आहोत). मूळ डेटावर आधारित नवीन डेटा तयार करण्याची गरज भासू शकते (आपण [वर्गीकरणात](../../4-Classification/1-Introduction/README.md) तसे करतो). डेटा स्वच्छ आणि संपादितही करत असाल (आम्ही [वेब अ‍ॅप](../../3-Web-App/README.md) धड्यापूर्वी तसे करू). आणि शेवटी, ट्रेनिंग तंत्रानुसार डेटा रँडमाइझ (randomize) आणि शफल (shuffle) करणे आवश्यक आहे. -✅ डेटा गोळा केल्यानंतर आणि प्रक्रिया केल्यानंतर, त्याचा आकार तुमच्या इच्छित प्रश्नाला उत्तर देण्यासाठी योग्य आहे का ते तपासा. असे होऊ शकते की डेटा तुमच्या दिलेल्या कार्यात चांगले कार्य करणार नाही, जसे आपण [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) धड्यांमध्ये शोधतो! +✅ डेटा संकलित आणि प्रक्रिया केल्यानंतर, काही वेळ घेऊन पाहा की डेटाचा प्रकार आणि आकार तुमच्या प्रश्नाला उत्तर देण्यास योग्य आहे का. कधी कधी डेटा तुमच्या विशिष्ट कामगिरीसाठी योग्य नसू शकतो, जसं आपण [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) धड्यांमध्ये पाहतो! -### वैशिष्ट्ये आणि लक्ष्य +### वैशिष्ट्ये (Features) आणि लक्ष्य (Target) -[वैशिष्ट्य](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) म्हणजे तुमच्या डेटाचे मोजण्यायोग्य गुणधर्म. अनेक डेटासेटमध्ये ते 'तारीख', 'आकार' किंवा 'रंग' यासारख्या स्तंभ शीर्षक म्हणून व्यक्त केले जाते. तुमचे वैशिष्ट्य व्हेरिएबल, सहसा कोडमध्ये `X` म्हणून दर्शवले जाते, इनपुट व्हेरिएबलचे प्रतिनिधित्व करते जे मॉडेल ट्रेन करण्यासाठी वापरले जाईल. +[वैशिष्ट्ये](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) म्हणजे तुमच्या डेटाचा मोजता येणारा एक प्रकार. अनेक डेटासेटमध्ये, ही एका कॉलम सारखी असते, जसे 'तारीख', 'आकार' किंवा 'रंग'. तुमचा वैशिष्ट्यांचा चल, सामान्यतः कोडमध्ये `X` या रूपात असतो, तो इनपुट चल दर्शवतो, ज्याचा वापर मॉडेलला प्रशिक्षित करण्यासाठी होतो. -लक्ष्य म्हणजे तुम्ही भाकीत करण्याचा प्रयत्न करत असलेली गोष्ट. लक्ष्य सहसा कोडमध्ये `y` म्हणून दर्शवले जाते, तुमच्या डेटाला विचारत असलेल्या प्रश्नाचे उत्तर दर्शवते: डिसेंबरमध्ये कोणत्या **रंगाचे** भोपळे स्वस्त असतील? सॅन फ्रान्सिस्कोमध्ये कोणत्या परिसरात सर्वात चांगले रिअल इस्टेट **किंमत** असेल? कधी कधी लक्ष्याला लेबल अॅट्रिब्युट असेही म्हणतात. +लक्ष्य म्हणजे तुम्ही जे भाकीत करू इच्छिता ते. लक्ष्य, सामान्यतः कोडमध्ये `y` या रूपात असतो, हा तुमच्या डेटाला विचारला जाणारा प्रश्नाचा उत्तर दर्शवितो: डिसेंबरमध्ये कोणत्या **रंगाचे** भोपळ्याचे दर स्वस्त होतील? सॅन फ्रान्सिस्कोमध्ये कोणत्या भागात सर्वोत्तम रिअल इस्टेट **किंमत** असेल? लक्ष्याला कधी कधी लेबल अ‍ॅट्रिब्युट असेही म्हणतात. -### तुमचे वैशिष्ट्य व्हेरिएबल निवडणे +### तुमचा वैशिष्ट्य चल कसा निवडाल -🎓 **वैशिष्ट्य निवड आणि वैशिष्ट्य काढणे** मॉडेल तयार करताना कोणते व्हेरिएबल निवडायचे हे तुम्हाला कसे कळेल? तुम्ही कदाचित योग्य व्हेरिएबल्स निवडण्यासाठी वैशिष्ट्य निवड किंवा वैशिष्ट्य काढण्याची प्रक्रिया पार पाडाल जे सर्वात कार्यक्षम मॉडेलसाठी योग्य असतील. तथापि, ते समान गोष्टी नाहीत: "वैशिष्ट्य काढणे मूळ वैशिष्ट्यांच्या कार्यांमधून नवीन वैशिष्ट्ये तयार करते, तर वैशिष्ट्य निवड मूळ वैशिष्ट्यांचा उपसंच परत करते." ([स्रोत](https://wikipedia.org/wiki/Feature_selection)) +🎓 **वैशिष्ट्य निवड आणि वैशिष्ट्य काढणी** मॉडेल तयार करताना कोणता चल निवडायचा हे कसे ठरवाल? बहुतेक वेळा तुम्ही वैशिष्ट्य निवड किंवा वैशिष्ट्य काढणी प्रक्रिया वापरून योग्य चल निवडाल. या दोनमध्ये फरक आहे: "वैशिष्ट्य काढणीमध्ये मूळ वैशिष्ट्यांपासून नवीन वैशिष्ट्ये तयार केली जातात, तर वैशिष्ट्य निवडेमध्ये वैशिष्ट्यांचा काही भाग निवडला जातो." ([स्रोत](https://wikipedia.org/wiki/Feature_selection)) -### तुमचा डेटा व्हिज्युअल करा +### तुमचा डेटा दृश्यरूपात पहा -डेटा सायंटिस्टच्या टूलकिटचा एक महत्त्वाचा पैलू म्हणजे डेटा व्हिज्युअल करण्याची क्षमता, ज्यासाठी Seaborn किंवा MatPlotLib सारख्या उत्कृष्ट लायब्ररी आहेत. तुमचा डेटा व्हिज्युअल करून तुम्ही लपलेल्या संबंधांचा शोध घेऊ शकता ज्याचा तुम्ही फायदा घेऊ शकता. तुमच्या व्हिज्युअलायझेशन्स तुम्हाला पूर्वग्रह किंवा असंतुलित डेटा शोधण्यात मदत करू शकतात (जसे आपण [वर्गीकरण](../../4-Classification/2-Classifiers-1/README.md) मध्ये शोधतो). +डेटा सायंटिस्टच्या साधनसामुग्रीमध्ये डेटा दृश्यरूपात सादर करण्याची क्षमता महत्त्वाची आहे. यासाठी Seaborn किंवा MatPlotLib सारख्या उत्कृष्ट लायब्ररी आहेत. डेटा दृश्यरूपात मांडल्याने तुम्हाला लपलेले संदर्भ, संभाव्य पूर्वग्रह किंवा संतुलित नसलेला डेटा शोधता येऊ शकतो (जसे आपण [वर्गीकरण](../../4-Classification/2-Classifiers-1/README.md) धड्यात पाहतो). ### तुमचा डेटासेट विभाजित करा -ट्रेनिंगपूर्वी, तुम्हाला तुमचा डेटासेट दोन किंवा अधिक असमान आकाराच्या भागांमध्ये विभाजित करणे आवश्यक आहे जे डेटा चांगल्या प्रकारे दर्शवतात. +प्रशिक्षणापूर्वी, डेटासेट समसमान जागा न घेणाऱ्या दोन किंवा अधिक भागांत विभाजित करणे आवश्यक आहे, जे तरीही डेटाचे प्रतिनिधित्व करतात. -- **ट्रेनिंग**. डेटासेटचा हा भाग तुमच्या मॉडेलला ट्रेन करण्यासाठी फिट केला जातो. हा सेट मूळ डेटासेटचा बहुतेक भाग असतो. -- **टेस्टिंग**. टेस्ट डेटासेट हा स्वतंत्र डेटा गट आहे, जो अनेकदा मूळ डेटामधून गोळा केला जातो, जो तुम्ही तयार केलेल्या मॉडेलच्या कार्यक्षमतेची पुष्टी करण्यासाठी वापरता. -- **व्हॅलिडेटिंग**. व्हॅलिडेशन सेट हा उदाहरणांचा एक छोटा स्वतंत्र गट आहे जो तुम्ही मॉडेलचे हायपरपॅरामीटर्स किंवा आर्किटेक्चर ट्यून करण्यासाठी वापरता, जेणेकरून मॉडेल सुधारता येईल. तुमच्या डेटाच्या आकारावर आणि तुम्ही विचारत असलेल्या प्रश्नावर अवलंबून, तुम्हाला हा तिसरा सेट तयार करण्याची गरज नसू शकते (जसे आपण [टाइम सिरीज फोरकास्टिंग](../../7-TimeSeries/1-Introduction/README.md) मध्ये नमूद करतो). +- **प्रशिक्षण.** हा भाग मॉडेलला प्रशिक्षण देण्यासाठी वापरला जातो. हा मूळ डेटासेटचा बहुमत असतो. +- **चाचणी.** चाचणी डेटासेट स्वतंत्र असतो, अनेकदा मूळ डेटामधून घेतला जातो, आणि त्याद्वारे तयार मॉडेलची कामगिरी तपासली जाते. +- **प्रमाणपत्र.** प्रमाणपत्र गट हा छोटा स्वतंत्र समूह आहे जो मॉडेलच्या हायपरपॅरामीटर्स किंवा आर्किटेक्चरचे समायोजन करण्यासाठी वापरला जातो. तुमच्या डेटाच्या आकारावर आणि प्रश्नावर अवलंबून, कदाचित तिसऱ्या गटाची गरज नसेल (जसे आपण [टाइम सिरीज फोरकास्टिंग](../../7-TimeSeries/1-Introduction/README.md) धड्यात पाहतो). ## मॉडेल तयार करणे -तुमच्या ट्रेनिंग डेटाचा वापर करून, तुमचे उद्दिष्ट म्हणजे विविध अल्गोरिदम वापरून तुमच्या डेटाचे **ट्रेन** करून मॉडेल तयार करणे, किंवा तुमच्या डेटाचे सांख्यिकीय प्रतिनिधित्व तयार करणे. मॉडेल ट्रेन करणे म्हणजे त्याला डेटाचा सामना करून त्याने शोधलेले नमुने मान्य करणे, सत्यापित करणे आणि स्वीकारणे किंवा नाकारणे. +तुमच्या प्रशिक्षण डेटाचा वापर करून, तुम्ही मॉडेल तयार कराल, किंवा तुमच्या डेटाचा सांख्यिकी प्रतिनिधित्व तयार कराल, अनेक अल्गोरिदम वापरून **प्रशिक्षित** करून. मॉडेलला प्रशिक्षण देणे म्हणजे त्याला डेटा पाहणे आणि त्यातील पॅटर्न्स समजून घेऊन त्यांची पुष्टी किंवा नाकारणे. -### ट्रेनिंग पद्धत ठरवा +### प्रशिक्षण पद्धत ठरवा -तुमच्या प्रश्नावर आणि तुमच्या डेटाच्या स्वरूपावर आधारित, तुम्ही ते ट्रेन करण्यासाठी पद्धत निवडाल. [Scikit-learn च्या दस्तऐवजीकरण](https://scikit-learn.org/stable/user_guide.html) मधून - जे आपण या कोर्समध्ये वापरतो - तुम्ही मॉडेल ट्रेन करण्याचे अनेक मार्ग शोधू शकता. तुमच्या अनुभवावर आधारित, तुम्हाला सर्वोत्तम मॉडेल तयार करण्यासाठी अनेक वेगवेगळ्या पद्धती वापरून पाहाव्या लागतील. तुम्ही कदाचित अशा प्रक्रियेतून जाल जिथे डेटा सायंटिस्ट्स मॉडेलची कार्यक्षमता न पाहिलेल्या डेटावरून मूल्यांकन करतात, अचूकता, पूर्वग्रह आणि इतर गुणवत्ता-घटवणाऱ्या समस्यांची तपासणी करतात आणि दिलेल्या कार्यासाठी सर्वात योग्य ट्रेनिंग पद्धत निवडतात. +तुमच्या प्रश्नावर आणि डेटाच्या स्वरूपावर अवलंबून, तुम्ही प्रशिक्षणासाठी एक पद्धत निवडाल. [Scikit-learn च्या दस्तऐवज](https://scikit-learn.org/stable/user_guide.html) मधून तुम्ही बऱ्याच प्रशिक्षण पद्धतींचा अभ्यास करू शकता, ज्या या अभ्यासक्रमात वापरल्या जातात. तुमचा अनुभवानुसार, सर्वोत्तम मॉडेल तयार करण्यासाठी तुम्हाला अनेक पद्धतींना प्रयत्न करावा लागू शकतो. डेटा सायंटिस्ट्स एका प्रक्रियेतून जातात जिथे ते मॉडेलला न पाहिलेला डेटा देऊन त्याची कामगिरी, अचूकता, पूर्वग्रह आणि इतर गुणवत्ता तपासतात आणि त्या कामासाठी योग्य प्रशिक्षण पद्धत निवडतात. -### मॉडेल ट्रेन करा +### मॉडेल प्रशिक्षित करा -तुमच्या ट्रेनिंग डेटासह, तुम्ही ते 'फिट' करण्यासाठी तयार आहात जेणेकरून मॉडेल तयार करता येईल. तुम्हाला असे आढळेल की अनेक ML लायब्ररींमध्ये तुम्हाला 'model.fit' कोड सापडेल - याच वेळी तुम्ही तुमचे वैशिष्ट्य व्हेरिएबल (सहसा 'X') आणि लक्ष्य व्हेरिएबल (सहसा 'y') मूल्यांच्या अ‍ॅरे म्हणून पाठवता. +प्रशिक्षण डेटा वापरून, तुम्ही 'फिट' करू शकता. बऱ्याच एमएल लायब्ररींमध्ये तुम्हाला 'model.fit' असा कोड दिसेल – यावेळी तुम्ही फीचर चल (सामान्यतः 'X') आणि लक्ष्य चल (सामान्यतः 'y') ला अ‍ॅरे स्वरुपात पाठवता. -### मॉडेलचे मूल्यांकन करा +### मॉडेलचे मूल्यमापन करा -एकदा ट्रेनिंग प्रक्रिया पूर्ण झाली (मोठे मॉडेल ट्रेन करण्यासाठी अनेक पुनरावृत्ती किंवा 'epochs' लागू शकतात), तुम्ही मॉडेलची गुणवत्ता तपासण्यासाठी टेस्ट डेटाचा वापर करू शकता. हा डेटा मूळ डेटाचा उपसंच आहे जो मॉडेलने यापूर्वी विश्लेषण केलेला नाही. तुम्ही तुमच्या मॉडेलच्या गुणवत्तेबद्दल मेट्रिक्सची टेबल प्रिंट करू शकता. +प्रशिक्षण प्रक्रिया पूर्ण झाल्यावर (मोठ्या मॉडेलसाठी अनेक पुनरावृत्त्या किंवा 'एपोक्स' लागू शकतात), तुम्ही मॉडेलच्या गुणवत्तेचे मूल्यमापन करू शकता. चाचणीचा डेटा वापरून कामगिरीची तपासणी करता येते. हे मूळ डेटाचे एक उपसमूह असते ज्याचे मॉडेलने पूर्वी विश्लेषण केलेले नसते. तुम्ही तुमच्या मॉडेलची गुणवत्ता मोजण्यासाठी मेमरीनची (metrics) सारणी छापू शकता. 🎓 **मॉडेल फिटिंग** -मशीन लर्निंगच्या संदर्भात, मॉडेल फिटिंग म्हणजे मॉडेलच्या अंतर्गत फंक्शनची अचूकता जी त्याला परिचित नसलेल्या डेटाचे विश्लेषण करण्याचा प्रयत्न करते. +मशीन लर्निंगच्या संदर्भात, फिटिंग म्हणजे मॉडेलच्या अंतर्निहित फंक्शनची अचूकता ज्यास तो अपरिचित डेटा विश्लेषित करत असतो. -🎓 **अंडरफिटिंग** आणि **ओव्हरफिटिंग** ही सामान्य समस्या आहेत ज्यामुळे मॉडेलची गुणवत्ता कमी होते, कारण मॉडेल ट्रेनिंग डेटाशी किंवा त्याने अद्याप 'पाहिलेल्या' डेटाशी खूप जास्त किंवा खूप कमी संरेखित भाकीत करते. ओव्हरफिट मॉडेल ट्रेनिंग डेटाचे खूप चांगले भाकीत करते कारण त्याने डेटाचे तपशील आणि आवाज खूप चांगल्या प्रकारे शिकले आहे. अंडरफिट मॉडेल अचूक नाही कारण ते त्याच्या ट्रेनिंग डेटाचे किंवा त्याने अद्याप 'पाहिलेल्या' डेटाचे अचूक विश्लेषण करू शकत नाही. +🎓 **अंडरफिटिंग** आणि **ओवरफिटिंग** ही सामान्य समस्या आहेत ज्या मॉडेलच्या गुणवत्तेवर परिणाम करतात, कारण मॉडेल कधी अति सामंजस्यपूर्ण (overfit) किंवा अयोग्य (underfit) असतो. ओवरफिट मॉडेल प्रशिक्षणाच्या तपशील आणि आवाज इतका चांगल्या प्रकारे शिकलेला असतो की ते फक्त प्रशिक्षण डेटावर बरोबर भाकीत करते. अंडरफिट मॉडेल अचूक नाही कारण ते आपल्या प्रशिक्षण डेटा किंवा न पाहिलेल्या डेटाचे चांगले विश्लेषण करू शकत नाही. -![ओव्हरफिटिंग मॉडेल](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> [Jen Looper](https://twitter.com/jenlooper) यांनी तयार केलेले इन्फोग्राफिक +![overfitting model](../../../../translated_images/mr/overfitting.1c132d92bfd93cb6.webp) +> माहितीचित्र [Jen Looper](https://twitter.com/jenlooper) यांनी तयार केलेले -## पॅरामीटर ट्यूनिंग +## परिमाण समायोजन (Parameter tuning) -तुमचे सुरुवातीचे ट्रेनिंग पूर्ण झाल्यानंतर, मॉडेलची गुणवत्ता निरीक्षण करा आणि त्याचे 'हायपरपॅरामीटर्स' बदलून ते सुधारण्याचा विचार करा. या प्रक्रियेबद्दल अधिक वाचा [दस्तऐवजीकरणात](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +प्रारंभिक प्रशिक्षण पूर्ण झाल्यानंतर, मॉडेलची गुणवत्ता तपासा आणि त्याचे 'हायपरपॅरामिटर्स' बदलून सुधारण्याचा विचार करा. या प्रक्रियेबद्दल अधिक वाचा [दस्तऐवजात](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## भाकीत +## भाकिते -हा तो क्षण आहे जिथे तुम्ही पूर्णपणे नवीन डेटा वापरून तुमच्या मॉडेलची अचूकता तपासू शकता. 'अॅप्लाइड' ML सेटिंगमध्ये, जिथे तुम्ही मॉडेल उत्पादनात वापरण्यासाठी वेब अॅसेट्स तयार करत आहात, ही प्रक्रिया कदाचित युजर इनपुट गोळा करणे (उदाहरणार्थ, बटण दाबणे) यामध्ये समाविष्ट असेल जेणेकरून व्हेरिएबल सेट करता येईल आणि मॉडेलला इनफरन्स किंवा मूल्यांकनासाठी पाठवता येईल. +ही वेळ आहे ज्या वेळी तुम्ही पूर्णपणे नवीन डेटा वापरून मॉडेलची अचूकता तपासू शकता. एखाद्या 'अ‍ॅप्लाइड' एमएल सेटिंगमध्ये, जिथे तुम्ही उत्पादनासाठी मॉडेल वापरणार आहात, या प्रक्रियेत वापरकर्त्याचा इनपुट (उदा. बटण दाबणे) गोळा करणे, चल सेट करणे आणि मॉडेलला मूल्यांकनासाठी पाठविणे यांचा समावेश असू शकतो. -या धड्यांमध्ये, तुम्ही डेटा सायंटिस्टच्या सर्व क्रिया आणि अधिक शिकाल - तयार करणे, तयार करणे, चाचणी करणे, मूल्यांकन करणे आणि भाकीत करणे - जेणेकरून तुम्ही 'फुल स्टॅक' ML इंजिनियर बनण्याच्या प्रवासात प्रगती करू शकता. +या धड्यांमध्ये, तुम्हाला ही पावले कशी वापरायची ते शिकवलं जाईल – डेटा सायंटिस्टच्या सर्व कृतींपासून ते पुढे जाऊन 'फुल स्टॅक' एमएल इंजिनीअर होण्यासाठीचा प्रवास. --- -## 🚀चॅलेंज +## 🚀आव्हान -ML प्रॅक्टिशनरच्या टप्प्यांचे फ्लो चार्ट तयार करा. तुम्ही सध्या प्रक्रियेत कुठे आहात असे तुम्हाला वाटते? तुम्हाला कुठे अडचण येईल असे वाटते? तुम्हाला काय सोपे वाटते? +एमएल वापरकर्त्याच्या प्रक्रियेतील टप्पे दर्शवणारा फ्लो चार्ट तयार करा. सध्याच्या प्रक्रियेत तुम्ही कुठे आहात? कोठे अडचण येईल असे वाटते? तुम्हाला काय सोपे वाटते? -## [व्याख्यानानंतर प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) +## [पोस्ट-लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/) -## पुनरावलोकन आणि स्व-अभ्यास +## पुनरावलोकन आणि स्वाध्याय -डेटा सायंटिस्ट्सच्या मुलाखती ऑनलाइन शोधा ज्यामध्ये ते त्यांच्या दैनंदिन कामाबद्दल चर्चा करतात. येथे [एक](https://www.youtube.com/watch?v=Z3IjgbbCEfs) आहे. +ऑनलाइन शोधा अशा डेटा सायंटिस्टांचे मुलाखती, जे त्यांचा दैनंदिन कार्यकाळात काय करतात याबद्दल बोलतात. येथे [एक](https://www.youtube.com/watch?v=Z3IjgbbCEfs) आहे. ## असाइनमेंट @@ -119,5 +119,7 @@ ML प्रॅक्टिशनरच्या टप्प्यांचे --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**संकल्पना शब्द**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) यांच्या मदतीने भाषांतरित केला आहे. आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये चुका किंवा अचूकतेतील त्रुटी असू शकतात. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत म्हणून गणला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराचे शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमजुती किंवा चुकीच्या अर्थाप्रत आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/mr/2-Regression/3-Linear/README.md b/translations/mr/2-Regression/3-Linear/README.md index 959f14815c..9e42f3c55b 100644 --- a/translations/mr/2-Regression/3-Linear/README.md +++ b/translations/mr/2-Regression/3-Linear/README.md @@ -1,136 +1,138 @@ -# Scikit-learn वापरून रिग्रेशन मॉडेल तयार करा: रिग्रेशन चार पद्धती +# Scikit-learn वापरून एक रिग्रेशन मॉडेल तयार करा: रिग्रेशन चार पद्धतींचा अभ्यास -## नवशिक्यांसाठी नोट +## प्रारंभिक टीप -लिनीअर रिग्रेशनचा वापर आपण जेव्हा **संख्यात्मक मूल्य** (उदाहरणार्थ, घराची किंमत, तापमान, किंवा विक्री) भाकीत करू इच्छितो तेव्हा केला जातो. -हे इनपुट वैशिष्ट्ये आणि आउटपुट यामधील संबंध सर्वोत्तम दर्शविणारी सरळ रेषा शोधून काम करते. +लिनीयर रिग्रेशन तेव्हा वापरले जाते जेव्हा आपल्याला एखादा **संख्यात्मक मूल्य** (उदाहरणार्थ, घराची किंमत, तापमान किंवा विक्री) भाकीत करायचा असतो. +हे इनपुट फिचर्स आणि आउटपुट या नात्याचे उत्तम प्रतिनिधित्व करणारी सरळ रेषा शोधून काम करते. -या धड्यात, आम्ही अधिक प्रगत रिग्रेशन तंत्रे शिकण्यापूर्वी संकल्पना समजून घेण्यावर लक्ष केंद्रित करू. +या धड्यात, आपण अधिक प्रगत रिग्रेशन तंत्रे पाहण्यापूर्वी संकल्पना समजण्यावर लक्ष केंद्रित करू. ![Linear vs polynomial regression infographic](../../../../translated_images/mr/linear-polynomial.5523c7cb6576ccab.webp) -> इन्फोग्राफिक [दासानी मदीपाली](https://twitter.com/dasani_decoded) यांच्याकडून +> इन्फोग्राफिक [दासानी माडिपल्ली](https://twitter.com/dasani_decoded) यांनी तयार केले आहे ## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) -> ### [हा धडा R मध्येही उपलब्ध आहे!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### परिचय +> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### परिचय -आत्तापर्यंत आपण रिग्रेशन म्हणजे काय हे कदाचित पाहिले आहे, ज्यासाठी आपण भोपळा किंमत डेटासेटमधून संकलित नमुना डेटा वापरला आहे जो संपूर्ण धडक्यादरम्यान वापरला जाईल. आपण त्याचे Matplotlib वापरून दृश्यांकन देखील केलेले आहे. +आत्तापर्यंत आपण रिग्रेशन म्हणजे काय हे पाहिले आहे, आणि संपूर्ण धड्यात वापरणार्‍या कद्दू किमतींच्या डेटासेटमधून घेतलेल्या नमुना डेटाचा अभ्यास केला आहे. आपण याला Matplotlib वापरून व्हिज्युअलाइजही केलं आहे. -आता आपण मशीन लर्निंगसाठी रिग्रेशनमध्ये अधिक खोलवर जाण्यास तयार आहात. दृश्यांकन केल्याने डेटा समजण्यास मदत होते, पण मशीन लर्निंगची खरी ताकद _मॉडेल्स प्रशिक्षण_ मध्ये आहे. मॉडेल्सला ऐतिहासिक डेटावर प्रशिक्षण दिले जाते ज्यामुळे ते डेटा अवलंबित्वे स्वयंचलितपणे पकडू शकतात, आणि त्यांनी अद्याप पाहिलेला नसलेला नवीन डेटा साठी परिणामांची भाकीत करण्याची परवानगी देतात. +आता आपण ML साठी रिग्रेशन मध्ये अधिक खोलात जाण्यास तयार आहात. व्हिज्युअलायझेशन डेटा समजण्यासाठी मदत करते, पण मशीन लर्निंग ची खरी ताकद _मॉडेल्सची ट्रेनिंग_ मध्ये आहे. +मॉडेल्स ऐतिहासिक डेटावर प्रशिक्षित केल्या जातात जेणेकरून ते डेटाच्या अवलंबित्वांना स्वयंचलितपणे टिपू शकतील, आणि आपल्याला नवीन डेटासाठी, ज्याला मॉडेलने कधी पाहिले नाही, भविष्यातील परिणाम भाकीत करण्याची परवानगी मिळते. -या धड्यात, आपण दोन प्रकारच्या रिग्रेशनबद्दल अधिक शिकणार आहोत: _मूलभूत लिनीअर रिग्रेशन_ आणि _बहुपदीय रिग्रेशन_, तसेच या तंत्रांमागील काही गणित समजून घेणार आहोत. या मॉडेल्समुळे आपण भिन्न इनपुट डेटानुसार भोपळ्याच्या किंमती भाकीत करू शकू. +या धड्यात, आपण दोन प्रकारच्या रिग्रेशनबद्दल अधिक जाणून घेणार आहोत: _मूलभूत लिनीयर रिग्रेशन_ आणि _बहुपद रिग्रेशन_, तसेच या तंत्रज्ञानामागील काही गणित. हे मॉडेल्स आपल्याला विविध इनपुट डेटानुसार कद्दूच्या किमती भाकीत करू देतील. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 वरील प्रतिमेवर क्लिक करा लिनीअर रिग्रेशनचा संक्षिप्त व्हिडिओ आढावा पाहण्यासाठी. +> 🎥 खालील प्रतिमा क्लिक करा लिनीयर रिग्रेशनचा संक्षिप्त व्हिडिओ विहंगावलोकन पाहण्यासाठी. -> संपूर्ण अभ्यासक्रमामध्ये, आम्ही गणिताचे कमी ज्ञान धरतो, आणि इतर क्षेत्रांमधून येणाऱ्या विद्यार्थ्यांसाठी ते सुलभ बनवण्याचा प्रयत्न करतो, त्यामुळे लक्ष ठेवा नोट्स, 🧮 कॉलआउट्स, आकृती आणि इतर शिकण्याच्या साधनांसाठी जी समज वाढविण्यात मदत करतात. +> संपूर्ण अभ्यासक्रमात, आम्ही गणिताचे न्यूनतम ज्ञान मानतो, आणि विद्यारंभिक विद्यार्थी ज्यांना इतर क्षेत्रातून येत आहेत त्यांच्यासाठी सुलभ करण्याचा प्रयत्न करीत आहोत, त्यामुळे लक्ष ठेवा टीपा, 🧮 गणितीय सूचना, आकृत्या आणि इतर शिकवणी साधनांवर. -### पूर्वअट +### पूर्वशर्ती -आपण आता भोपळा डेटाच्या संरचनेशी परिचित असाल ज्याचा आपण अभ्यास करतोय. हा डेटा या धड्याच्या _notebook.ipynb_ फाईलमध्ये प्रीलोड आणि प्री-क्लीन केलेला सापडेल. फाईलमध्ये भोपळ्याची किंमत प्रत्येक बुशेलसाठी नवीन डेटा फ्रेममध्ये दाखवली आहे. हे notebook Visual Studio Code मधील कर्नलमध्ये चालवू शकता याची खात्री करा. +आपण आता पाहत असलेल्या कद्दू डेटाची रचना परिचित असावी. हा डेटा हा या धड्याच्या _notebook.ipynb_ फाईलमध्ये आधीच लोड आणि स्वच्छ केला आहे. त्या फाईलमध्ये कद्दूची किंमत प्रति बुशेल नवीन डेटा फ्रेममध्ये प्रदर्शित केली आहे. +ध्यान ठेवा की आपण Visual Studio Code चे कर्नल्समध्ये हे नोटबुक्स चालवू शकता. ### तयारी -स्मरणार्थ, आपण हा डेटा लोड करता जेणेकरून त्याबाबत प्रश्न विचारता येतील. +स्मरण म्हणून, आपण हा डेटा लोड करत आहात जेणेकरून त्याबाबत प्रश्न विचारू शकता. -- भोपळा खरेदीसाठी सर्वोत्तम वेळ कधी आहे? -- लहान भोपळ्यांच्या केसची किंमत काय अपेक्षित करू शकतो? -- मी त्यांना अर्धा बुशेल टोपल्या मध्ये खरेदी करावे का की 1 1/9 बुशेल बॉक्सने? -चला या डेटामध्ये अधिक खोलवर पाहू. +- कधी कद्दू विकत घेण्याचा सर्वोत्तम वेळ आहे? +- लहान कद्दूंच्या एका पान्याच्या बाबतीत किंमती किती असतील याची अपेक्षा करू शकतो का? +- मी त्यांना अर्ध्या बुशेलच्या टोपल्या मध्ये घेतले पाहिजेत की 1 1/9 बुशेल बॉक्सने? +चला हा डेटा आणखी तपासून पाहू. -यापूर्वीच्या धड्यात आपण Pandas डेटा फ्रेम तयार केला होता आणि मूळ डेटासेटचा भाग वापरून किंमती बुशेलनुसार प्रमाणित केला. मात्र, त्यामुळे केवळ सुमारे ४०० डेटापॉइंट्स मिळाले आणि तेही फक्त शरद ऋतूतील महिनेकरिता. +मागील धड्यात, आपण पँडास डेटा फ्रेम तयार केला आणि त्यामध्ये मूळ डेटासेटचा एक भाग भरला, किंमती बुशेलनुसार प्रमाणित केल्या. पण त्याद्वारे आपल्याला फक्त सुमारे 400 डेटा पॉईंट्स मिळाले आणि फक्त हिवाळी महिन्यांसाठी. -या धड्याच्या संलग्न नोटबुकमध्ये प्रीलोड केलेला डेटा पहा. डेटा प्रीलोड केला आहे आणि प्रारंभिक स्कॅटरप्लॉट तयार केला आहे जे महिना डेटाचा दाखला देतो. कदाचित आपण डेटा अजून स्वच्छ करुन त्याची निसर्ग अधिक जाणून घेऊ शकू. +या धड्याच्या नोटबुकमध्ये आपण पूर्वलोड केलेला डेटा पहा. डेटा पूर्वलोड आणि प्राथमिक स्कॅटरप्लॉट तयार केला आहे ज्यात महिना डेटा दर्शविला आहे. कदाचित आपण अजून स्वच्छ करून डेटा अधिक तपशीलवार करू शकू. -## एक लिनीअर रिग्रेशन रेषा +## लिनीयर रिग्रेशन लाईन -आपण धडा 1 मध्ये शिकलो तसे, लिनीअर रिग्रेशनचा उद्दिष्ट रेषा अशी काढणे आहे जी: +आपल्याला धडा 1 मध्ये शिकवले होते की, लिनीयर रिग्रेशनचा उद्देश असा लाईन काढणे आहे जिचा उपयोग: -- **चल संबंध दाखवते**. चलांच्या संबंध दर्शविणे -- **भाकीत करणे**. नवीन डेटापॉइंट एखाद्या विशिष्ट ठिकाणी येईल का ते अचूक भाकीत करणे. +- **चल (variables) यांचे नाते दाखविण्यासाठी**: चलांमधील संबंध दिखविणे +- **भाकीत करण्यासाठी**: नवीन डेटा पॉईंट लाइनशी कुठे सापडेल हे अचूक भाकीत करणे -हे सहसा **लीस्ट-स्क्वेअर्स रिग्रेशन** वापरून केले जाते. "लीस्ट-स्क्वेअर्स" शब्द म्हणजे आपल्या मॉडेलमधील एकूण त्रुटी कमी करते असे तंत्र. प्रत्येक डेटा पॉइंटसाठी आपण खऱ्या पॉइंट आणि रिग्रेशन लाइनमधील उभी अंतर (रेजिड्युअल) मोजतो. +सर्वसामान्यत: **लीस्ट-स्क्वेअर्स रिग्रेशन** या प्रकारच्या रेषा काढण्यात येतात. "लीस्ट-स्क्वेअर्स" शब्द याचा अर्थ आहे की आपला मॉडेल एकंदर त्रुटी (एरर) कमी करण्याचा प्रयत्न करतो. प्रत्येक डेटा पॉईंटसाठी, आपण वास्तविक पॉईंट आणि आपली रिग्रेशन लाईन या दरम्यानच्या उभ्या अंतराची (ज्याला रेसिड्युअल म्हणतात) मोजणी करतो. -आपण या अंतराला दोन मुख्य कारणांसाठी वर्गाकार करतो: +आपण या अंतरांचे वर्ग (square) काढतो दोन प्रमुख कारणांमुळे: -1. **परिमाणाकडे अधिक महत्त्व**: -5 वजा 5 या त्रुटींना समान समजण्यासाठी वर्गाकार सर्व मूल्ये सकारात्मक करतो. +1. **प्रमाण महत्त्वाचे, दिशा नाही:** -5 चा त्रुटी आणि +5 चा त्रुटी दोन्ही सारखे वागवायचे आहे. वर्गाकाराने सर्व मूल्ये सकारात्मक होतात. -2. **आउटलायरला दंड देणे**: वर्गाकार मोठ्या त्रुटींना अधिक वजन देतो, त्यामुळे रेषा दूर असलेल्या पॉइंट्सजवळ राहायला भाग पाडतो. +2. **आउटलाईअर्सचा दंड:** मोठ्या त्रुटीला अधिक वजन देतो, जेणेकरून रेषा दूरच्या पॉईंटजवळ राहणे बळकट होते. -आम्ही नंतर या सर्व वर्गाकार मूल्यांची बेरीज करतो. आमचा उद्देश असा आहे की ही अंतिम बेरीज कमीत कमी (सर्वात लहान शक्य मूल्य) होईल—म्हणून त्याला "लीस्ट-स्क्वेअर्स" म्हणतात. +यानंतर आपण सर्व वर्गाकार नावे एकत्र करतो. आपला उद्देश असे रेषा शोधणे आहे ज्यासाठी हा एकूण योग लहान (किमान) असेल, म्हणूनच त्याला "लीस्ट-स्क्वेअर्स" असे म्हणतात. -> **🧮 मला गणित दाखवा** -> -> ही रेषा, ज्याला _सर्वोत्तम बसणारी रेषा_ म्हणतात, [एका समीकरणाने](https://en.wikipedia.org/wiki/Simple_linear_regression) व्यक्त केली जाऊ शकते: -> +> **🧮 गणित दाखवा** +> +> या रेषेला _line of best fit_ म्हणतात आणि ते [समीकरणाने](https://en.wikipedia.org/wiki/Simple_linear_regression) दर्शवता येते: +> > ``` > Y = a + bX > ``` -> -> `X` हा 'स्पष्टीकरणात्मक चल' (explanatory variable) आहे. `Y` हा 'आश्रित चल' (dependent variable). रेषेचा उतार `b` आहे आणि `a` हा y-अक्षावर छेदनबिंदू आहे, जो `X = 0` असताना `Y` चे मूल्य दाखवतो. + +> `X` हा 'स्पष्टीकरण चल' आहे. `Y` हा 'आश्रित चल' आहे. लाईनचा उतार `b` आहे आणि `a` हा y-अडकवटा (y-intercept) आहे, जो `X = 0` असताना `Y` चे मूल्य आहे. > >![calculate the slope](../../../../translated_images/mr/slope.f3c9d5910ddbfcf9.webp) > -> सर्वप्रथम, उतार `b` मोजा. इन्फोग्राफिक [जेन लूपर](https://twitter.com/jenlooper) यांनी तयार केला आहे. +> पहिले, उतार `b` मोजा. इन्फोग्राफिक [जेन लूपर](https://twitter.com/jenlooper) यांनी तयार केला. > -> दुसऱ्या शब्दांत, आणि आपल्या भोपळा डेटाच्या मूळ प्रश्नाकडे पाहता: "महिन्यानुसार भोपळा प्रति बुशेल किंमत भाकीत करा," `X` ही किंमत आणि `Y` ही विक्रीचा महिना असेल. +> दुसऱ्या शब्दांत आणि आपल्या कद्दू डेटाच्या मूळ प्रश्नाला संदर्भ देत: "महिन्यानुसार प्रति बुशेल कद्दूची किंमत भाकीत करा", `X` म्हणजे किंमत आणि `Y` म्हणजे विक्रीचा महिना आहे. > >![complete the equation](../../../../translated_images/mr/calculation.a209813050a1ddb1.webp) > -> `Y` ची किंमत काढा. जर आपण सुमारे $4 देत असाल, तर तो एप्रिल असायला हवा! इन्फोग्राफिक [जेन लूपर](https://twitter.com/jenlooper) +> `Y` चे मूल्य मोजा. जर आपण सुमारे $4 देत असाल, तर तो नक्की एप्रिल महिना आहे! इन्फोग्राफिक [जेन लूपर](https://twitter.com/jenlooper) यांनी तयार केले. > -> हे गणित जो रेषा काढते तो रेषेचा उतार दाखवतो, जो छेदनबिंदूवरही अवलंबून असतो, म्हणजे `X=0` असताना `Y` कुठे असते. +> गणिताने 'लाईनचा उतार' प्रदर्शित करणे आवश्यक आहे, जो intercept वर अवलंबून आहे, म्हणजे जेव्हा `X = 0` तेव्हा `Y` कुठे स्थित आहे. > -> आपण [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) या संकेतस्थळावर या मूल्यांच्या गणनेची पद्धत पाहू शकता. तसेच [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) येथे जाऊन संख्यांचे मूल्य रेषेवर कसे परिणाम करतात ते पाहू शकता. +> या मूल्यांचे गणिती मोजमाप [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) या संकेतस्थळावर तपासा. तसेच [ही लीस्ट-स्क्वेअर कॅल्क्युलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) बघा ज्यात संख्यांचे मूल्य कसे रेषेवर परिणाम करतात ते दिसेल. -## सहसंबंध +## सहसंबंध (Correlation) -आणखी एक समजण्याचे टर्म म्हणजे दिलेल्या X आणि Y चलांमधील **सहसंबंध गुणांक**. स्कॅटरप्लॉट वापरून आपण हा गुणांक पटकन देखील पाहू शकता. जर पॉइंट्स एक नीटसर रेषेत विखुरलेले असतील तर त्यात उच्च सहसंबंध आहे, परंतु सर्वत्र विखुरलेल्या पॉइंट्ससह रेषेत कमी सहसंबंध आहे. +आणखी एक संज्ञा समजून घेणे गरजेचे आहे ती म्हणजे दिलेल्या X आणि Y चलांमधील **सहसंबंध गुणांक**. स्कॅटरप्लॉट वापरून आपण ही संख्या पटकन पाहू शकता. जर स्कॅटरप्लॉटमध्ये डेटा पॉईंट्स एक सरळ रेषेत असतील तर सहसंबंध उच्च (उच्च स्पष्टता) असतो, पण जर सर्वत्र विखुरलेले असतील तर तो कमी असतो. -एक चांगला लिनीअर रिग्रेशन मॉडेल तो असेल ज्यात लीस्ट-स्क्वेअर्स रिग्रेशन पद्धतीने रेषेचा सहसंबंध गुणांक जास्त (0 पेक्षा 1 च्या जवळ) असेल. +एक चांगला लिनीयर रिग्रेशन मॉडेल तोच असेल ज्याचा सहसंबंध गुणांक (0 पेक्षा 1 जवळ अधिक) लीस्ट-स्क्वेअर्स पद्धतीने काढलेला असेल. -✅ या धड्याला संलग्न notebook चालवा आणि महिना ते किंमत टेबल पाहा. भोपळा विक्रीसाठी महिना ते किंमत डेटा आपल्या दृश्यात्मक मुल्यांकनानुसार उच्च की कमी सहसंबंध दाखवतो? जर आपण `महिना` ऐवजी अधिक सूक्ष्म मोजमाप वापरले, उदा. *वर्षातील दिवस* (वर्षाच्या सुरुवातीपासून वादलेले दिवस) तर ते बदलते का? +✅ या धड्यासोबत असलेल्या नोटबुक चालवा आणि महिना आणि किंमतीच्या स्कॅटरप्लॉटचे निरीक्षण करा. कद्दू विक्रीसाठी महिना आणि किंमतीतील डेटाचा सहसंबंध तुमच्या अभिप्रेतानुसार उच्च आहे की कमी? जर तुम्ही `Month` ऐवजी अधिक तपशीलवार मोजदाड वापरली (उदा. *वर्षाचा दिवस* म्हणजे वर्षाच्या सुरुवातीपासून किती दिवस झाले?), तर सहसंबंध बदलतो का? -खालील कोडमध्ये, आपण गृहित धरू की आम्ही डेटा स्वच्छ केला आहे आणि `new_pumpkins` नावाचा डेटा फ्रेम तयार केला आहे, जो खालीलप्रमाणे दिसू शकतो: +खाली दिलेल्या कोडमध्ये, आपण गृहित धरतो की डेटाची स्वच्छता केली आहे आणि आपल्याकडे `new_pumpkins` नावाचा डेटा फ्रेम आहे, ज्यात पुढील सारखी माहिती आहे: -ID | महिना | वर्षातील दिवस | विविधता | शहर | पाकेट | कमी किंमत | जास्त किंमत | किंमत ----|-------|--------------|----------|-------|---------|------------|-------------|-------- -70 | 9 | 267 | पाई प्रकार | बाल्टिमोर | 1 1/9 बुशेल कार्टन्स | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | पाई प्रकार | बाल्टिमोर | 1 1/9 बुशेल कार्टन्स | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | पाई प्रकार | बाल्टिमोर | 1 1/9 बुशेल कार्टन्स | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | पाई प्रकार | बाल्टिमोर | 1 1/9 बुशेल कार्टन्स | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | पाई प्रकार | बाल्टिमोर | 1 1/9 बुशेल कार्टन्स | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> डेटा स्वच्छ करण्यासाठीचा कोड [`notebook.ipynb`](notebook.ipynb) मध्ये उपलब्ध आहे. आपण मागील धड्याप्रमाणेच स्वच्छता केली आहे, आणि `DayOfYear` स्तंभ खालील व्यक्तीकरण वापरून काढला आहे: +> स्वच्छता करणारा कोड [`notebook.ipynb`](notebook.ipynb) मध्ये उपलब्ध आहे. आपण मागील धड्यातील स्वच्छता पद्धती केली आणि `DayOfYear` स्तंभ खालील अभिव्यक्तीने काढला: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -आता आपण लिनीअर रिग्रेशन मागील गणित समजत असल्याने, चला एक रिग्रेशन मॉडेल तयार करू जेणेकरून आपण भोपळ्यांच्या पैकेजेसपैकी कोणत्या पैकची किंमत सर्वोत्तम असेल हे भाकीत करू शकू. एखाद्या सणासाठी भोपळा खरेदी करणाऱ्याला त्यांच्या खरेदीत अनुकूल करण्यासाठी ही माहिती आवश्यक असू शकते. + +आपण आता लिनीयर रिग्रेशन मागील गणित समजल्यामुळे, चला एक रिग्रेशन मॉडेल तयार करू, जे कद्दूच्या पॅकेजेसपैकी कोणत्या मध्ये सर्वोत्तम किंमती येतील, भाकीत करू शकेल. कोणीतरी कद्दू विक्रीसाठी हा डेटा वापरून खरेदी अधिक प्रभावी करू शकेल. ## सहसंबंध शोधत आहोत [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 वरील प्रतिमेवर क्लिक करा सहसंबंध या विषयाचा संक्षिप्त व्हिडिओ आढावा पाहण्यासाठी. +> 🎥 वरची प्रतिमा क्लिक करा सहसंबंधाचा संक्षिप्त व्हिडिओ पाहण्यासाठी. -मागील धड्यात आपण कदाचित पाहिले असाल की वेगवेगळ्या महिन्यांची सरासरी किंमत अशी दिसते: +मागील धड्यात आपल्याला कदाचित दिसले असेल की वेगवेगळ्या महिन्यांच्या सरासरी किंमती अशा प्रकारे आहेत: Average price by month -हे सूचित करते की काही सहसंबंध असावा, आणि आपण `Month` आणि `Price` किंवा `DayOfYear` आणि `Price` यांच्या मधील संबंध भाकीत करण्यासाठी लिनीअर रिग्रेशन मॉडेल प्रशिक्षण देऊ शकतो. खालील स्कॅटरप्लॉट दुसऱ्या संबंधाचा दाखला देतो: +हे सूचित करते की काही सहसंबंध आहे, आणि आपण लिनीयर रिग्रेशन मॉडेल ट्रेन करू शकतो जे `Month` आणि `Price` यांच्यातील नाते भाकीत करेल, किंवा `DayOfYear` आणि `Price` यांच्यातील नाते भाकीत करेल. खाली दिलेला स्कॅटरप्लॉट पोस्टरर संबंध दर्शवितो: -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -चला `corr` फंक्शन वापरून सहसंबंध पाहू: +आता `corr` फंक्शन वापरून आहे का ते पाहूया: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -अशी दिसते की सहसंबंध फारसा मोठा नाही, `Month` साठी -0.15 आणि `DayOfYear` साठी -0.17, पण कदाचित दुसरा महत्त्वाचा संबंध असू शकतो. वेगवेगळ्या भोपळा विविधतांच्या किंमती वेगवेगळ्या संचांमध्ये दिसत आहेत. ही कल्पना पुष्टी करण्यासाठी, प्रत्येक भोपळा वर्ग वेगळ्या रंगात दाखवू या. `scatter` फंक्शनला `ax` पॅरामीटर देऊन आपण सर्व पॉइंट्स एकाच ग्राफवर प्लॉट करू शकतो: + +असे दिसते की सहसंबंध त्यामुळे फार काही जास्त नाही, -0.15 `Month` नुसार आणि -0.17 `DayOfYear` नुसार आहे, पण कदाचित आणखी एक महत्त्वाचा संबंध असू शकतो. वेगवेगळे कद्दू प्रकार वेगवेगळ्या किंमतींचे गट तयार करतात. ही कल्पना पुष्टी करण्यासाठी, चला प्रत्येक कद्दू प्रकार वेगळ्या रंगात स्कॅटर प्लॉट करू. `scatter` फंक्शनला `ax` पॅरामीटर दिल्यास सर्व पॉईंट्स एका ग्राफवर प्लॉट करता येतात: ```python ax=None @@ -139,75 +141,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Scatter plot of Price vs. Day of Year -Scatter plot of Price vs. Day of Year - -आपल्या तपासणीने सुचवले आहे की विविधतेचा एकूण किंमतीवर खूप परिणाम होतो, जास्त की विक्री तारखा. हे आम्ही बार ग्राफवर पाहू शकतो: +आमच्या तपासणीत कद्दूचा प्रकार (Variety) किंमतीवर Verkaufs तारखेच्या पेक्षा अधिक प्रभाव टाकतो हे दिसते. हे बार ग्राफने दर्शविले आहे: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Bar graph of price vs variety -Bar graph of price vs variety - -सध्या आपण फक्त एका भोपळा विविधतेवर लक्ष ठेवू, ही म्हणजे 'पाई प्रकार', आणि पाहू की विक्रीच्या तारखेचा किंमतीवर कसा परिणाम होतो: +आता फक्त एका प्रकारावरील, 'pie type' कद्दूवर लक्ष केंद्रित करू आणि पाहू की विक्री तारखेचा किंमतीवर काय परिणाम होतो: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -आता `Price` आणि `DayOfYear` मधील सहसंबंध काढल्यास `corr` फंक्शन वापरून साधारण `-0.27` येईल - जे दर्शवते की भाकीत करणारे मॉडेल तयार करणे अर्थपूर्ण आहे. +आता जर आपण `corr` फंक्शन वापरून `Price` आणि `DayOfYear` मध्ये सहसंबंध मोजला तर ते सुमारे `-0.27` येईल - म्हणजे predictive मॉडेल तयार करणे योग्य आहे. -> लिनीअर रिग्रेशन मॉडेल प्रशिक्षण देण्यापूर्वी, डेटा स्वच्छ असल्याची खात्री करणे महत्त्वाचे आहे. लिनीअर रिग्रेशन रिकाम्या मूल्यांसह चांगले काम करत नाही, म्हणून रिकाम्या सेल्स काढणे योग्य ठरते: +> लिनीयर रिग्रेशन मॉडेल train करण्यापूर्वी डेटा स्वच्छ आहे याची खात्री करणे महत्त्वाचे आहे. लिनीयर रिग्रेशन माहीत नसलेल्या (मिसिंग) मूल्यांसह चांगले काम करत नाही, त्यामुळे रिकाम्या सेल्स काढून टाकणे चांगले: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` + +आणखी एक पर्याय म्हणजे त्या रिकाम्या सेल्सना संबंधित स्तंभाच्या सरासरी मूल्यांनी भरणे. -अधिक एक पद्धत म्हणजे रिकाम्या जागा त्या संबंधित स्तंभाच्या सरासरीने भरणे. - -## साधी लिनीअर रिग्रेशन +## सोपे लिनीयर रिग्रेशन [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 वरील प्रतिमेवर क्लिक करा लिनीअर आणि बहुपदीय रिग्रेशनचा संक्षिप्त व्हिडिओ आढावा पाहण्यासाठी. +> 🎥 वरची प्रतिमा क्लिक करा लिनीयर आणि बहुपदी रिग्रेशनचे संक्षिप्त विडिओ पाहण्यासाठी. -आम्ही लिनीअर रिग्रेशन मॉडेल प्रशिक्षणासाठी **Scikit-learn** लायब्ररी वापरणार आहोत. +आपल्या लिनीयर रिग्रेशन मॉडेलसाठी आपण **Scikit-learn** लायब्ररी वापरणार आहोत. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -आम्ही इनपुट मूल्ये (वैशिष्ट्ये) आणि अपेक्षित आउटपुट (लेबल) वेगळ्या numpy arrays मध्ये विभाजित करून सुरुवात करतो: + +आपण इनपुट मूल्ये (फीचर्स) आणि अपेक्षित आउटपुट (लेबल) स्वतंत्र numpy arrays मध्ये वेगळे करतो: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> लक्षात घ्या की लॉजिकल लिनीयर रिग्रेशन पॅकेजला योग्य समजण्यासाठी इनपुट डेटा `reshape` करावा लागतो. लिनीयर रिग्रेशनला 2D-अॅरेची अपेक्षा असते, जेथे प्रत्येक रांग एक फीचर वेक्टर असतो. आपल्याकडे एकच इनपुट असल्यामुळे आपल्याला आकार N×1 असला पाहिजे, जिथे N डेटासेटची आकार आहे. -> लक्षात घ्या की Linear Regression पॅकेज योग्यरित्या समजावून घेण्यासाठी आम्हाला इनपुट डेटावर `reshape` करावी लागली. लिनीअर रिग्रेशन 2D-array इनपुट म्हणून अपेक्षित असतो, ज्यामध्ये प्रत्येक ओळ इनपुट वैशिष्ट्यांच्या व्हेक्टरसाठी असते. आमच्या बाबतीत, फक्त एक इनपुट असल्यामुळे, N×1 आकाराचा arrary हवा आहे, जिथे N म्हणजे डेटासेटचा आकार. - -आणि मग, आपण डेटा प्रशिक्षण आणि तपासणी सेटमध्ये विभागतो, जेणेकरून प्रशिक्षणानंतर आपल्याला मॉडेल तपासता येईल: +यानंतर, आपल्याला डेटा train आणि test मध्ये विभाजित करावा लागेल जेणेकरून ट्रेनिंगनंतर मॉडेल चाचणी करता येईल: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -शेवटी, वास्तविक लिनीअर रिग्रेशन मॉडेलचे प्रशिक्षण फक्त दोन ओळींमध्ये होते. आपण `LinearRegression` ऑब्जेक्ट परिभाषित करतो, आणि `fit` पद्धत वापरून त्यास आपल्या डेटावर लागू करतो: + +शेवटी, ऑक्ट्युअल लिनीयर रिग्रेशन मॉडेल ट्रेनिंगसाठी फक्त दोन ओळींचा कोड लागतो. आपण `LinearRegression` ऑब्जेक्ट तयार करतो आणि `fit` मेथडने डेटा फिट करतो: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit` केल्यानंतरचा `LinearRegression` ऑब्जेक्टमध्ये रिग्रेशनचे सर्व गुणांक असतात, जे `.coef_` प्रॉपर्टी वापरून पाहता येतात. आपल्या प्रकरणात, फक्त एक गुणांक आहे, जो सुमारे `-0.017` असावा. याचा अर्थ किंमती वेळेनुसार थोड्या प्रमाणात कमी होतात, पण फार नाही, दररोज सुमारे 2 सेंट्स. आपण रिग्रेशनचा Y-ऍक्सिसशी छेद बिंदू `lin_reg.intercept_` वापरून पाहू शकतो - आमच्या प्रकरणात तो सुमारे `21` असेल, जे वर्षाच्या सुरुवातीच्या किंमतींना दर्शवते. +`LinearRegression` वस्तूमध्ये `fit` केल्यानंतर सर्व रिग्रेशनचे गुणांक असतात, जे `.coef_` प्रॉपर्टी वापरून प्राप्त करता येतात. आपल्या बाबतीत, केवळ एक गुणांक आहे, जो सुमारे `-0.017` असावा. याचा अर्थ किंमती थोड्या प्रमाणात काळानुसार कमी होत असल्याचे दिसते, सुमारे २ सेंट प्रति दिवस इतके. आपण रिग्रेशनच्या Y-अक्षाशी छेदन बिंदू देखील `lin_reg.intercept_` वापरून प्राप्त करू शकतो - आपल्या बाबतीत ते सुमारे `21` असले पाहिजे, जे वर्षाच्या सुरुवातीला किंमत दर्शविते. -आपल्या मॉडेलची अचूकता पाहण्यासाठी, आपण टेस्ट डेटासेटवर किंमतींचा अंदाज लावू शकतो, आणि नंतर आपल्या अंदाजित किंमती अपेक्षित किंमतींशी किती जवळ आहेत हे मोजू शकतो. हे root mean square error (RMSE) मेट्रिक वापरून केले जाऊ शकते, जे अपेक्षित आणि अंदाजित किंमतींतील सर्व वर्ग फरकांचा मूळ सरासरी आहे. +आपल्या मॉडेलचे अचूकता तपासण्यासाठी, आपण चाचणी डेटासेटवर किंमती अंदाजित करू शकतो आणि नंतर आमच्या अंदाजांना अपेक्षित मूल्यांशी किती जवळ आहेत हे मोजू शकतो. हे रूट मीन स्क्वेअर एरर (RMSE) मेट्रिक्स वापरून केले जाऊ शकते, जे अपेक्षित आणि अंदाजित मूल्यांमधील सर्व स्क्वेअर्ड फरकांच्या मध्यम मूळ आहे. ```python pred = lin_reg.predict(X_test) @@ -215,37 +217,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -आपला त्रुटी सुमारे 2 गुण आहे, जो ~17% आहे. फारच चांगले नाही. मॉडेल गुणवत्ता दर्शविणारा आणखी एक निर्देशांक म्हणजे **निर्धारण गुणांक** (coefficient of determination), जो खालीलप्रमाणे मिळवता येतो: + +आमची चूक सुमारे २ पॉइंट आहे, जी ~१७% आहे. फार चांगले नाही. मॉडेलच्या गुणवत्तेचे दुसरे निर्देशांक म्हणजे **निर्धारण गुणांक**, जो असे मिळवला जाऊ शकतो: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -जर हा मूल्य 0 असेल, तर याचा अर्थ मॉडेल इनपुट डेटा लक्षात घेत नाही आणि तो *सर्वात वाईट रेषीय भाकीतकार* म्हणून काम करतो, जो फक्त निकालाचा सरासरी मूल्य आहे. 1 ची किंमत म्हणजे आपण सर्व अपेक्षित आउटपुट परिपूर्णपणे भाकीत करू शकतो. आमच्या प्रकरणात, हा गुणांक साधारणपणे 0.06 आहे, जो खूप कमी आहे. + +जर मूल्य ० असेल तर याचा अर्थ मॉडेल इनपुट डेटाला विचारात घेत नाही आणि *सर्वात वाईट रेखीय अनुमानकार* म्हणून कार्य करते, जे फक्त परिणामीचा सरासरी मूल्य आहे. मूल्य १ असणे म्हणजे आम्ही सर्व अपेक्षित आउटपुट पूर्णपणे अंदाजित करू शकतो. आपल्या बाबतीत, गुणांक सुमारे ०.०६ आहे, जो खूप कमी आहे. -आपण टेस्ट डेटासह रिग्रेशन लाइनचा ग्राफ सुद्धा पाहू शकतो, ज्यामुळे रिग्रेशन कसे काम करते हे चांगल्या प्रकारे समजेल: +आपण चाचणी डेटा रिग्रेशन रेषेसह प्लॉट करू शकतो जेणेकरून रिग्रेशन आपल्यासाठी कसे कार्य करते हे चांगल्या प्रकारे पाहता येईल: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - + Linear regression ## बहुपदीय रिग्रेशन -रेषीय फलनाचा आणखी एक प्रकार म्हणजे बहुपदीय रिग्रेशन (Polynomial Regression). कधी कधी चलांच्या दरम्यान रेषीय संबंध असतो - जसे की भोपळ्याचा आयतन जितका मोठा, तितकी किंमत जास्त - पण कधी या संबंधांना प्लेन किंवा सरळ रेषेत प्रदर्शित करता येत नाही. +दुसऱ्या प्रकारचा रेषीय रिग्रेशन हा बहुपदीय रिग्रेशन आहे. कधी कधी चलांमधील रेषीय संबंध असतो - जसे की भोपळ्याचा आयतन जितका मोठा तितकी किंमत जास्त असते - पण कधी कधी हे संबंध समतल किंवा सरळ रेषेत दाखवता येत नाहीत. -✅ येथे [अजून काही उदाहरणे](https://online.stat.psu.edu/stat501/lesson/9/9.8) आहेत, ज्यात बहुपदीय रिग्रेशन वापरता येऊ शकतो +✅ येथे [अधिक उदाहरणे](https://online.stat.psu.edu/stat501/lesson/9/9.8) आहेत ज्यासाठी बहुपदीय रिग्रेशन वापरता येऊ शकतो -“तारीख” आणि “किंमत” यांच्यामधील संबंध पुन्हा पाहा. हा scatterplot असा दिसतो का की तो नेहमीच सरळ रेषेने विश्लेषित केला पाहिजे? किंमती बदलू शकतात का? या परिस्थितीत, आपण बहुपदीय रिग्रेशन वापरू शकतो. +दिनांक आणि किंमत यांच्यातील संबंध पुन्हा पाहा. हा स्कॅटरप्लॉट नक्कीच सरळ रेषेने विश्लेषित केला पाहिजे असाच वाटतो का? किंमती चढ-उतार होऊ शकतात ना? या प्रकरणात आपण बहुपदीय रिग्रेशन वापरून पाहू शकता. -✅ बहुपदी हे गणितीय अभिव्यक्ती आहेत ज्यात एक किंवा अधिक चल आणि गुणांक असू शकतात +✅ बहुपदीय म्हणजे अंकगणिती अभिव्यक्ती ज्यात एक किंवा अधिक चल आणि गुणक असू शकतात -बहुपदीय रिग्रेशन गैररेषीय डेटाला चांगल्या प्रकारे बसवण्यासाठी वक्र रेषा तयार करतो. आपल्या प्रकरणात, जर आपण इनपुट डेटामध्ये ‘DayOfYear’ या चलाचा वर्ग महत्त्वाचा समाविष्ट केला, तर आपल्याला आपला डेटा पॅराबोलिक वक्रासह बसवता येईल, ज्याचा किमान बिंदू वर्षाच्या एका विशिष्ट ठिकाणी असेल. +बहुपदीय रिग्रेशन वक्र रेषा तयार करते ज्यामुळे अवरेखीय डेटा चांगल्या प्रकारे बसतो. आपल्या बाबतीत, जर आपण `DayOfYear` या चलाचा वर्ग (square) इनपुटमध्ये समाविष्ट केला, तर आपल्याला पॅराबोलिक वक्र fitting करता येईल, ज्याची किमान बिंदू वर्षात कुठल्यातरी ठिकाणी असू शकतो. -Scikit-learn मध्ये डेटा प्रक्रिया एकत्र करण्यासाठी उपयुक्त [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) उपलब्ध आहे. **pipeline** म्हणजे **estimators** चा साखळ. आपल्या प्रकरणात, आपण एक पाइपलाइन तयार करू ज्यात आधी बहुपदीय गुणधर्म जोडले जातील आणि नंतर रिग्रेशन प्रशिक्षित केला जाईल: +Scikit-learn मध्ये मदतनीसारखे [पाइपलाइन API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) उपलब्ध आहे जे डेटा प्रक्रियेच्या विविध टप्प्यांना एकत्र जोडू शकते. **पाइपलाइन** म्हणजे **इस्टिमेटर** ची साखळी. आपल्या बाबतीत, आपण अशी पाइपलाइन तयार करू ज्यात प्रथम बहुपदीय वैशिष्ट्ये जोडली जातील आणि नंतर रिग्रेशन प्रशिक्षण दिले जाईल: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,61 +258,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` + +`PolynomialFeatures(2)` वापरणे म्हणजे आपण दुसऱ्या-श्रेणीतील सर्व बहुपदीय समाविष्ट करू, आपल्या बाबतीत म्हणजे `DayOfYear`2. पण जर दोन इनपुट वेरिएबल्स X आणि Y असतील तर हे X2, XY आणि Y2 जोडेल. आपण हवे असल्यास अधिक उच्च-श्रेणीचे बहुपदीय देखील वापरू शकतो. + +पाइपलाईन्सचा वापर मूळ `LinearRegression` ऑब्जेक्टसारखा केला जाऊ शकतो, म्हणजे आपण `fit` करू शकतो आणि नंतर `predict` करून अंदाजित परिणाम मिळवू शकतो: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +सोप्या वक्र कर्वासाठी, आपण `np.linspace` वापरतो जेणेकरून एकसमान इनपुट मूल्यांची श्रेणी तयार होते, थेट अनियोजित चाचणी डेटावर प्लॉट करण्याऐवजी (जे झिगझॅग रेषा तयार करेल): -`PolynomialFeatures(2)` वापरल्याचा अर्थ आपल्याला इनपुट डेटातील सर्व दुसऱ्या दर्जाचा बहुपदीय समाविष्ट करायचा आहे. आपल्या बाबतीत म्हणजे फक्त `DayOfYear`2 असेल, पण जर दोन इनपुट चल X आणि Y असतील, तर हे X2, XY आणि Y2 जोडेल. आपण हवे असल्यास उच्च दर्जाचे बहुपदी देखील वापरू शकतो. +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) -पाइपलाइनचा वापर `LinearRegression` ऑब्जेक्टसारखा केला जाऊ शकतो, म्हणजे आपण पाइपलाइनला `fit` करू शकतो आणि नंतर `predict` वापरून अंदाज मिळवू शकतो. खाली ग्राफिक दाखविते की टेस्ट डेटा आणि सुमारे जवळचे वक्र कसे दिसते: +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +खाली टेस्ट डेटा आणि अंदाज लावणारा वक्र देणारा ग्राफ आहे: Polynomial regression -बहुपदीय रिग्रेशन वापरून आपल्याला थोडे कमी MSE आणि जास्त निर्धारण मिळू शकते, पण महत्त्वपूर्ण फरक नाही. आपल्याला अन्य गुणधर्म देखील लक्षात घ्यावे लागतील! +बहुपदीय रिग्रेशन वापरून आपण किंचित कमी RMSE आणि जास्त निर्धारण गुणांक मिळवू शकतो, पण फारसे महत्त्वाचे वाढत नाही. आपल्याला इतर वैशिष्ट्ये विचारात घ्यावी लागतील! -> आपण पाहू शकता की, भोपळ्यांच्या किमती Halloween च्या सुमारास जवळजवळ किमान असतात. आपण हे कसे समजावता? +> आपण पाहू शकता की किमान भोपळ्यांच्या किमती काहीसे Halloween च्या आसपास आढळतात. आपण हे कसे स्पष्ट करू शकता? -🎃 अभिनंदन, आपण असा मॉडेल बनवला आहे ज्याचा वापर पाय भोपळ्यांच्या किंमती भाकीत करण्यासाठी होऊ शकतो. आपण कदाचित सारखा प्रक्रिया सर्व भोपळ्यांच्या प्रकारांसाठी करू शकता, पण ते वेळखाऊ होईल. आता आपण आपल्या मॉडेलमध्ये भोपळ्याचा प्रकार कसा समाविष्ट करायचा ते शिकू! +🎃 अभिनंदन, तुम्ही असा मॉडेल तयार केला आहे जो पाय भोपळ्यांच्या किमतींची भाकित करू शकतो. तुम्ही कदाचित सर्व भोपळ्यांच्या प्रकारांसाठी हा प्रक्रियाही पुनरावृत्ती करू शकता, पण ते tedious होईल. आता आपण शिकू की कसे आपल्या मॉडेलमध्ये भोपळ्याचे प्रकार विचारात घेतले जाऊ शकतात! -## वर्गवारी गुणधर्म (Categorical Features) +## श्रेणी वैशिष्ट्ये -आदर्श जगात आपल्याला वेगवेगळ्या भोपळ्यांच्या प्रकारांसाठी किंमती भाकीत करायच्या असतात, तोही समान मॉडेल वापरून. पण `Variety` कॉलम इतर कॉलम्ससारखा नाही जसे `Month`, कारण त्यात अंकात्मक नसलेले मूल्य आहे. अशा कॉलम्सना **categorical** म्हणतात. +आदर्श जगात, आपल्याला वेगवेगळ्या भोपळ्यांच्या प्रकारांसाठी किंमती एका मॉडेल वापरून भाकित करता याव्यात. मात्र, `Variety` कॉलम थोडा वेगळा आहे जसा `Month` सारखा कॉलम आहे, कारण यात संख्यात्मक नसलेली मूल्ये असतात. अशा कॉलम्सना **श्रेणी** कॉलम म्हणतात. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 वरच्या चित्रावर क्लिक करा, वर्गवारी गुणधर्म वापरून थोडक्यात व्हिडिओ पाहण्यासाठी. +> 🎥 वरिल प्रतिमा क्लिक करा श्रेणी वैशिष्ट्ये वापरण्याबाबत संक्षिप्त व्हिडिओ पाहण्यासाठी. -येथे आपण पाहू शकतो की सरासरी किंमत प्रकारावर कशी अवलंबून आहे: +येथे तुम्ही पाहू शकता की सरासरी किंमत प्रकारावर कशी अवलंबून आहे: Average price by variety -प्रकार विचारात घेण्यासाठी, आपल्याला प्रथम त्याला अंकात्मक स्वरूपात रूपांतरित करणे किंवा **कोडिंग** करणे आवश्यक आहे. असे करण्याचे काही मार्ग आहेत: +प्रकार विचारात घेण्यासाठी, प्रथम ते संख्यात्मक स्वरूपात रूपांतरित किंवा **एन्कोड** करणे आवश्यक आहे. यासाठी काही मार्ग आहेत: -* सोप्या **न्यूमेरिक एनकोडिंग** मध्ये वेगवेगळ्या प्रकारांसाठी एक तक्ता तयार केला जातो, आणि नंतर त्या तक्त्यातील इंडेक्सनी नाम बदला जातो. पण रेषीय रिग्रेशनसाठी हा चांगला विचार नाही, कारण रेषीय रिग्रेशन इंडेक्समधील अंकात्मक मूल्य घेतो आणि त्याला गुणांकाने गुणून निकालात जोडतो. आमच्या प्रकरणात इंडेक्स नंबर आणि किंमतीत गैररेषीय संबंध स्पष्ट आहे, अगदी आपण इंडेक्स विशिष्ट क्रमाने ठेवला तरीही. -* **वन-हॉट एनकोडिंग** मध्ये `Variety` कॉलमला 4 वेगळ्या कॉलम्समध्ये बदलले जाते, प्रत्येक कॉलम एका प्रकारासाठी. प्रत्येक कॉलम `1` असेल जर त्या रो वर दिलेल्या प्रकाराचा डेटा असेल, आणि 0 अन्यथा. याचा अर्थ, रेषीय रिग्रेशनमध्ये चार गुणांक असतील, एक प्रत्येक भोपळ्याच्या प्रकारासाठी, जो त्या खास प्रकारासाठी “प्रारंभ किंमती” (किंवा “अतिरिक्त किंमती”) साठी जबाबदार असेल. +* सोपी **संख्यात्मक एन्कोडिंग** वेगवेगळ्या प्रकारांची यादी तयार करेल, आणि नंतर त्या प्रकाराचे नाव त्या यादीतील अनुक्रमांकाने बदलेल. रेषीय रिग्रेशनसाठी हे योग्य नाही कारण रिग्रेशन अनुक्रमांकाची वास्तविक संख्यात्मक किंमत घेतो आणि काही गुणाकाने गुणाकार करून निकालात जोडतो. आपल्या प्रकरणात, अनुक्रमांक आणि किंमत यातील संबंध स्पष्टपणे अवरेखीय आहे, जरी अनुक्रमांक विशिष्ट पद्धतीने क्रमबद्ध असले तरीही. +* **वन-हॉट एन्कोडिंग** `Variety` कॉलमला ४ वेगळ्या कॉलम मध्ये विभागेल, म्हणजे प्रत्येक प्रकारासाठी एक कॉलम. प्रत्येक कॉलममध्ये संबंधित ओळ दिलेल्या प्रकारासाठी `1` आणि इतरांसाठी `0` असेल. म्हणजे रेषीय रिग्रेशनमध्ये चार गुणांक असतील, प्रत्येक भोपळ्याच्या प्रकारासाठी एक, जो त्या प्रकारासाठी "सुरुवातीचा किंमत" (किंवा "अतिरिक्त किंमत") म्हणून जबाबदार असेल. -खालील कोड वन-हॉट एनकोडिंग कसा करायचा याचे उदाहरण दाखवतो: +खालील कोडमध्ये वन-हॉट एन्कोडिंग कसे करायचे ते दाखवले आहे: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -वन-हॉट एनकोडिंग केलेल्या प्रकाराचा इनपुट म्हणून वापरून रेषीय रिग्रेशन प्रशिक्षित करण्यासाठी, आपल्याला फक्त `X` आणि `y` डेटा योग्य प्रकारे इनिशियलाइझ करावा लागतो: +वन-हॉट एन्कोडेड प्रकाराच्या इनपुटसह रेषीय रिग्रेशन प्रशिक्षणासाठी, आपल्याला फक्त `X` आणि `y` डेटास योग्यरित्या प्रारंभ करावा लागेल: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -उर्वरित कोड अगदी अगोदर वापरलेले रेषीय रिग्रेशनसारखेच आहे. जर आपण हे वापरले तर आपल्याला रविवारी चतुर्थांश त्रुटी सुमारे अगदी समान मिळेल, पण निर्धारण गुणांक खूप जास्त (~77%) मिळेल. अजूनही अचूक भाकितांसाठी, आपण अनेक वर्गवारी गुणधर्म तसेच अंकात्मक गुणधर्म जसे की `Month` किंवा `DayOfYear` देखील विचारात घेऊ शकतो. सगळे गुणधर्म एकत्र करण्यासाठी `join` वापरू शकतो: + +बाकी कोड वर वापरलेल्या रेषीय रिग्रेशनसारखेच आहे. प्रयत्न केल्यावर तुम्हाला दिसेल की मीन स्क्वेअर एरर जवळजवळ सारखीच आहे, पण आपण बरेच जास्त निर्धारण गुणांक (~७७%) मिळवतो. अधिक अचूक अंदाजासाठी, आपण अधिक श्रेणी वैशिष्ट्ये तसेच संख्यात्मक वैशिष्ट्ये, जसे की `Month` किंवा `DayOfYear` वापरू शकतो. सर्व वैशिष्ट्यांचे एक मोठे एरे तयार करण्यासाठी आपण `join` वापरू शकतो: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,12 +343,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` + +येथे आपण `City` आणि `Package` प्रकार देखील विचारात घेत आहोत, ज्यामुळे RMSE 2.84 (१०.५%), आणि निर्धारण 0.94 आहे! -येथे आपण `City` आणि `Package` प्रकार देखील विचारात घेतले आहेत, ज्यामुळे MSE 2.84 (10%) आणि निर्धारण 0.94 मिळतो! - -## एकत्र करून सर्व काही +## सर्व एकत्र करणे -सर्वात उत्तम मॉडेल बनवण्यासाठी, आपण जोडलेले (वन-हॉट एनकोड केलेले वर्गवारी + अंकात्मक) डेटा वर बहुपदीय रिग्रेशनचा उपयोग करू शकतो. आपल्यासाठी येथे संपूर्ण कोड आहे: +सर्वोत्तम मॉडेल तयार करण्यासाठी, आपण वरील उदाहरणातील संयोजित (वन-हॉट एन्कोड केलेले श्रेणी + संख्यात्मक) डेटा बहुपदीय रिग्रेशनसह वापरू शकतो. येथे पूर्ण कोड दिला आहे: ```python # प्रशिक्षण डेटा सेट करा @@ -336,45 +361,45 @@ y = new_pumpkins['Price'] # ट्रेन-टेस्ट विभाजन करा X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# पाइपलाइन सेट करा आणि प्रशिक्षण द्या +# पाइपलाइन सेटअप आणि प्रशिक्षण द्या pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# चाचणी डेटासाठी परिणाम भाकित करा +# चाचणी डेटासाठी परिणाम भाकीत करा pred = pipeline.predict(X_test) -# MSE आणि निर्धारणाची गणना करा -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE आणि निर्धारण गणना करा +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` + +हे जवळजवळ ९७% चा सर्वोत्तम निर्धारण गुणांक आणि RMSE=2.23 (~८% अंदाज चूक) देईल. -हे आपल्याला अंदाजे 97% ची सर्वोत्तम निर्धारण गुणांक आणि MSE=2.23 (~8% भाकीत त्रुटी) देईल. - -| मॉडेल | MSE | निर्धारण | -|-------|-----|-----------| -| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | -| `Variety` Linear | 5.24 (19.7%) | 0.77 | -| सर्व गुणधर्म Linear | 2.84 (10.5%) | 0.94 | -| सर्व गुणधर्म Polynomial | 2.23 (8.25%) | 0.97 | +| मॉडेल | RMSE | निर्धारण | +|-------|-----|---------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| सर्व वैशिष्ट्ये Linear | 2.84 (10.5%) | 0.94 | +| सर्व वैशिष्ट्ये Polynomial | 2.23 (8.25%) | 0.97 | -🏆 छान! आपण एकाच धड्यात चार रिग्रेशन मॉडेल्स तयार केले आणि मॉडेल गुणवत्ता 97% पर्यंत सुधारली. रिग्रेशनच्या अंतिम विभागात, आपण Logistic Regression बद्दल शिकाल ज्याचा उपयोग वर्ग ठरविण्यासाठी होतो. +🏆 छान! तुम्ही एका धड्यात चार रिग्रेशन मॉडेल्स तयार केले आणि मॉडेलची गुणवत्ता ९७% पर्यंत सुधारली. रिग्रेशनच्या अंतिम भागात तुम्ही कॅटेगॉरिकल निर्धारणासाठी Logistic Regression बद्दल शिकलात. --- ## 🚀आव्हान -हा नोटबुक वापरून विविध चल तपासून पहा, आणि तपासा की सहसंबंध मॉडेलच्या अचूकतेशी कसा संबंधित आहे. +या नोटबुकमध्ये विविध चलांची चाचणी करा आणि पहा की सहसंबंध मॉडेलच्या अचूकतेशी कसा जुळतो. -## [पोस्ट-लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/) +## [धडा-नंतर क्विझ](https://ff-quizzes.netlify.app/en/ml/) -## पुनरावलोकन व स्वअध्ययन +## पुनरावलोकन व स्वअभ्यास -या धड्यात आपण Linear Regression बद्दल शिकलो. रिग्रेशनचे आणखी महत्त्वाचे प्रकार आहेत. Stepwise, Ridge, Lasso आणि Elasticnet तंत्रांबद्दल वाचा. अधिक शिकण्यासाठी एक चांगला अभ्यासक्रम म्हणजे [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning). +या धड्यामध्ये आपण रेषीय रिग्रेशन बद्दल शिकलो. रिग्रेशनचे इतर महत्त्वाचे प्रकारही आहेत. Stepwise, Ridge, Lasso आणि Elasticnet तंत्रज्ञानांची माहिती घ्या. अधिक शिकण्यासाठी Stanford Statistical Learning कोर्स देखील चांगला पर्याय आहे: [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## असाईनमेंट +## स्वरूप [मॉडेल तयार करा](assignment.md) @@ -382,5 +407,5 @@ print('Model determination: ', score) **अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवेचा वापर करून [Co-op Translator](https://github.com/Azure/co-op-translator) द्वारे भाषांतरित केला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया याचा विचार करा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा चुकीची माहिती असू शकते. मूळ दस्तऐवज त्याच्या स्थानिक भाषेतच अधिकृत स्रोत मानला पाहिजे. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतर शिफारसीय आहे. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या चुका किंवा गैरसमजांसाठी आम्ही जबाबदार नाही. +हा दस्तऐवज AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित केला आहे. आम्ही अचूकतेसाठी प्रयत्नशील आहोत, तरी कृपया लक्षात घ्या की स्वयंचलित अनुवादांमध्ये चुका किंवा अचूकतेच्या त्रुटी असू शकतात. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानावा. गंभीर माहितीसाठी व्यावसायिक मानवी अनुवादाची शिफारस केली जाते. या अनुवादाच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमजुती किंवा चुकीच्या अर्थ लावण्याबाबत आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/mr/2-Regression/3-Linear/solution/notebook.ipynb index 26613a26a9..4e09042529 100644 --- a/translations/mr/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/mr/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## भोपळ्याच्या किंमतीसाठी रेषीय आणि बहुपदीय पुनरावृत्ती - धडा 3\n", + "## भोपळ्याच्या किंमतीसाठी रेषीय आणि बहुपद पुनर्रचना - धडा ३\n", "\n", - "आवश्यक लायब्ररी आणि डेटासेट लोड करा. डेटाला एका डेटाफ्रेममध्ये रूपांतरित करा ज्यामध्ये डेटाचा एक उपसंच असेल:\n", + "आवश्यक लायब्ररी आणि डेटासेट लोड करा. डेटाचे एक उपसेट असलेला डेटा फ्रेममध्ये रूपांतर करा:\n", "\n", - "- फक्त बशेलने किंमत दिलेले भोपळे मिळवा \n", - "- दिनांक महिन्यात रूपांतरित करा \n", - "- उच्च आणि निम्न किंमतींच्या सरासरीवरून किंमत मोजा \n", - "- किंमतीला बशेल प्रमाणातील किंमतीचे प्रतिबिंबित रूपांतर करा \n" + "- फक्त बसलने किंमत असलेले भोपळे मिळवा\n", + "- तारखेचे महिन्यात रूपांतरण करा\n", + "- किंमत उच्च आणि कमी किमतींचा सरासरी म्हणून गणना करा\n", + "- किंमत बसल प्रमाणानुसार दर्शविण्यासाठी रूपांतर करा\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "स्कॅटरप्लॉट आपल्याला आठवण करून देते की आपल्याकडे फक्त ऑगस्ट ते डिसेंबरपर्यंतचा महिन्याचा डेटा आहे. रेखीय पद्धतीने निष्कर्ष काढण्यासाठी आपल्याला कदाचित अधिक डेटाची आवश्यकता आहे.\n" + "एक स्कॅटरप्लॉट आपल्याला आठवड्याच्या ऑगस्ट पासून डिसेंबरपर्यंत फक्त महिन्यांचा डेटा असल्याची आठवण करून देतो. आपण बहुधा रेषीय स्वरूपात निष्कर्ष काढण्यासाठी अधिक डेटाची गरज आहे.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "चला पाहूया, काही सहसंबंध आहे का:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "असे दिसते की परस्परसंबंध खूपच कमी आहे, पण काहीतरी अधिक महत्त्वाचे नाते आहे - कारण वरील प्लॉटमधील किंमतीचे बिंदू अनेक वेगळ्या गटांमध्ये दिसत आहेत. चला वेगवेगळ्या भोपळ्याच्या प्रकारांचे दाखवणारा एक प्लॉट तयार करूया:\n" + "असं दिसतं की सहसंबंध फारसा मोठा नाहीये, पण काही दुसरं महत्त्वाचं नाते आहे - कारण वरच्या आकृतीतील किमती काही वेगळ्या गटांमध्ये दिसतात. चला एक आकृती तयार करू ज्यात वेगवेगळ्या भोपळा प्रकार दाखवले जातील:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "सध्याच्या वेळेस, आपण फक्त एका प्रकारावर लक्ष केंद्रित करूया - **पाय प्रकार**.\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### रेषीय प्रतिगमन\n", + "### रेषीय रिग्रेशन\n", "\n", - "आम्ही Scikit Learn वापरून रेषीय प्रतिगमन मॉडेल प्रशिक्षण देणार आहोत:\n" + "आम्ही रेषीय रिग्रेशन मॉडेल प्रशिक्षणासाठी Scikit Learn वापरणार आहोत:\n" ] }, { @@ -661,7 +665,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "रेषेचा उतार रेषीय प्रतिगमन गुणांपासून ठरवता येतो:\n" + ] }, { "cell_type": "code", @@ -686,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "आपण प्रशिक्षित मॉडेलचा वापर करून किंमत भाकीत करू शकतो:\n" + ] }, { "cell_type": "code", @@ -714,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### बहुपदीय प्रतिगमन\n", + "### बहुपद रिग्रेशन\n", "\n", - "कधी कधी वैशिष्ट्ये आणि परिणाम यांच्यातील संबंध स्वाभाविकपणे रेषीय नसतो. उदाहरणार्थ, भोपळ्याच्या किंमती हिवाळ्यात (महिने=1,2) जास्त असू शकतात, नंतर उन्हाळ्यात (महिने=5-7) कमी होतात आणि पुन्हा वाढतात. रेषीय प्रतिगमन या संबंधाचा अचूक अंदाज लावू शकत नाही.\n", + "कधी कधी वैशिष्ट्ये आणि परिणामांमधील संबंध नैसर्गिकरित्या रेषीय नसतो. उदाहरणार्थ, पांपकिनच्या किमती हिवाळ्यात (महिने=1,2) जास्त असू शकतात, नंतर उन्हाळ्यांत (महिने=5-7) कमी होतात, आणि पुन्हा वाढतात. रेषीय रिग्रेशन या संबंधाला अचूकपणे पकडू शकत नाही.\n", "\n", - "अशा परिस्थितीत, आपण अतिरिक्त वैशिष्ट्ये जोडण्याचा विचार करू शकतो. सोपा मार्ग म्हणजे इनपुट वैशिष्ट्यांपासून बहुपदांचा वापर करणे, ज्यामुळे **बहुपदीय प्रतिगमन** होईल. Scikit Learn मध्ये, आपण पाइपलाइन्स वापरून स्वयंचलितपणे बहुपदीय वैशिष्ट्ये पूर्व-गणना करू शकतो:\n" + "या परिस्थितीत, आपण अतिरिक्त वैशिष्ट्ये जोडण्याचा विचार करू शकतो. सोपा मार्ग म्हणजे इनपुट वैशिष्ट्यांमधून बहुपद तयार करणे, ज्यामुळे **बहुपद रिग्रेशन** होते. स्कikit Learn मध्ये, आपण पाइपलाइन वापरून स्वयंचलितपणे बहुपदी वैशिष्ट्ये पूर्व-संसाधित करू शकतो: \n" ] }, { @@ -773,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### विविध प्रकारांचे एन्कोडिंग\n", + "### एन्कोडिंग प्रकार\n", "\n", - "आदर्श परिस्थितीत, आम्हाला वेगवेगळ्या भोपळ्याच्या प्रकारांसाठी किंमतींचा अंदाज एकाच मॉडेलचा वापर करून लावायचा आहे. प्रकार लक्षात घेण्यासाठी, आपल्याला प्रथम त्याला संख्यात्मक स्वरूपात रूपांतरित करावे लागेल, किंवा **एन्कोड** करावे लागेल. हे करण्याचे अनेक मार्ग आहेत:\n", + "आदर्श जगात, आम्हाला वेगवेगळ्या भोपळ्याच्या प्रकारांसाठी किंमती एकाच मॉडेल वापरून अंदाज करण्याची क्षमता हवी आहे. प्रकार लक्षात घेतल्यास, प्रथम त्याला संख्यात्मक स्वरूपात रूपांतरित करणे आवश्यक आहे, किंवा **एन्कोड** करणे आवश्यक आहे. आम्ही हे करण्याचे काही मार्ग आहेत:\n", "\n", - "* साधे संख्यात्मक एन्कोडिंग, जे विविध प्रकारांची एक टेबल तयार करेल आणि नंतर त्या टेबलमधील अनुक्रमांकाने प्रकाराचे नाव बदलून टाकेल. हे रेषीय प्रतिगमनासाठी (linear regression) सर्वोत्तम कल्पना नाही, कारण रेषीय प्रतिगमन अनुक्रमांकाच्या संख्यात्मक मूल्याचा विचार करते, आणि हे संख्यात्मक मूल्य किंमतीशी संख्यात्मकदृष्ट्या संबंधित असण्याची शक्यता कमी असते.\n", - "* वन-हॉट एन्कोडिंग, जे `Variety` स्तंभाला 4 वेगळ्या स्तंभांनी बदलून टाकेल, प्रत्येक प्रकारासाठी एक स्तंभ असेल, जो 1 असेल जर संबंधित रकाना दिलेल्या प्रकाराचा असेल, आणि अन्यथा 0 असेल.\n", + "* सोपी संख्यात्मक एन्कोडिंग जी वेगवेगळ्या प्रकारांची एक टेबल तयार करेल, आणि नंतर प्रकाराचे नाव त्या टेबलमधील अनुक्रमांकाने बदलेल. ही रेषीय प्रतिगमनासाठी सर्वोत्तम कल्पना नाही, कारण रेषीय प्रतिगमन अनुक्रमांकाचे संख्यात्मक मूल्य लक्षात घेतो, आणि ते संख्यात्मक मूल्य किंमतीशी संख्यात्मकरित्या संबंधित नसू शकते.\n", + "* वन-हॉट एन्कोडिंग, ज्यामध्ये `Variety` स्तंभ ४ वेगळ्या स्तंभांनी बदलला जाईल, प्रत्येक प्रकारासाठी एक, ज्यात दिलेल्या ओळीचा प्रकार असल्यास 1 आणि अन्यथा 0 असेल.\n", "\n", - "खालील कोड दाखवतो की आपण प्रकाराचे वन-हॉट एन्कोडिंग कसे करू शकतो:\n" + "खालील कोड दाखवतो की आपण कसे एखाद्या प्रकाराला वन-हॉट एन्कोड करू शकतो:\n" ] }, { @@ -936,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### विविधतेवर आधारित रेषीय प्रतिगमन\n", + "### प्रकारांवर लिनिअर रिग्रेशन\n", "\n", - "आता आपण वर दिलेल्या कोडचा वापर करू, पण `DayOfYear` ऐवजी इनपुट म्हणून आपली वन-हॉट-एनकोड केलेली विविधता वापरू:\n" + "आता आपण वरच्या कोडचा वापर करू, पण `DayOfYear` च्या ऐवजी आपल्या वन-हॉट-एन्कोडेड प्रकाराला इनपुट म्हणून वापरणार आहोत:\n" ] }, { @@ -986,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "आम्ही इतर वैशिष्ट्यांचा वापर देखील याच पद्धतीने करून पाहू शकतो आणि त्यांना `Month` किंवा `DayOfYear` सारख्या संख्यात्मक वैशिष्ट्यांसह एकत्रित करू शकतो:\n" + "आपण त्याच पद्धतीने इतर वैशिष्ट्ये वापरून पाहू शकतो आणि त्यांना संख्यात्मक वैशिष्ट्यांसह एकत्र करू शकतो, जसे की `Month` किंवा `DayOfYear`:\n" ] }, { @@ -1017,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### बहुपद रिग्रेशन\n", + "### बहुपद प्रतिगमन\n", "\n", - "बहुपद रिग्रेशन श्रेणीसंबंधी वैशिष्ट्यांसोबत वापरता येतो, जे वन-हॉट-एन्कोड केलेले असतात. बहुपद रिग्रेशन प्रशिक्षणासाठी कोड वर दिलेल्या उदाहरणासारखाच असेल.\n" + "बहुपद प्रतिगमन कॅटेगॉरिक वैशिष्ट्यांसह जेवन हॉट-एनकोड केलेले असतात, त्यांच्यासाठी देखील वापरता येऊ शकते. बहुपद प्रतिगमन प्रशिक्षित करण्याचा कोड त्याचप्रमाणे असेल जसे आपण वर पाहिले आहे.\n" ] }, { @@ -1066,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.\n" + "---\n\n\n**तोडगा**:\nहा दस्तऐवज AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्न करतो, तरीही कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेत कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेमध्ये अधिकृत स्रोत समजल्यास उत्तम. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतर करण्याचा सल्ला दिला जातो. या भाषांतराच्या वापरामुळे उद्भवलेल्या कोणत्याही गैरसमजुती किंवा चुकीच्या अर्थलागीसाठी आम्ही जबाबदार नाही.\n\n" ] } ], @@ -1096,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T18:44:38+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "mr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ne/.co-op-translator.json b/translations/ne/.co-op-translator.json index caf0b0c11f..e342c05044 100644 --- a/translations/ne/.co-op-translator.json +++ b/translations/ne/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ne" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T06:33:57+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:00:17+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ne" }, @@ -90,8 +90,8 @@ "language_code": "ne" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:01:07+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T19:59:44+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ne" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ne" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T19:55:43+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ne" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T06:26:08+00:00", diff --git a/translations/ne/1-Introduction/4-techniques-of-ML/README.md b/translations/ne/1-Introduction/4-techniques-of-ML/README.md index 19b93a2f62..863ec8e068 100644 --- a/translations/ne/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ne/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # मेसिन लर्निङका प्रविधिहरू -मेसिन लर्निङ मोडेलहरू निर्माण, प्रयोग, र मर्मत गर्ने प्रक्रिया तथा तिनीहरूले प्रयोग गर्ने डाटा अन्य विकास कार्यप्रवाहहरू भन्दा धेरै फरक छ। यस पाठमा, हामी यस प्रक्रियालाई स्पष्ट पार्नेछौं र तपाईंलाई जान्न आवश्यक मुख्य प्रविधिहरूको रूपरेखा प्रस्तुत गर्नेछौं। तपाईं: +मेसिन लर्निङ मोडेलहरू निर्माण गर्ने, प्रयोग गर्ने, र मर्मत गर्ने प्रक्रिया तथा ती मोडेलहरूले प्रयोग गर्ने डाटा धेरै अन्य विकास कार्यप्रवाहहरूभन्दा धेरै फरक प्रक्रिया हो। यस पाठमा, हामी यस प्रक्रियालाई प्रष्ट पार्नेछौं, र तपाईंले जान्नु पर्ने मुख्य प्रविधिहरूको रूपरेखा बनाउनेछौं। तपाईंले: -- मेसिन लर्निङको आधारभूत प्रक्रियाहरू उच्च स्तरमा बुझ्नुहुनेछ। -- 'मोडेल', 'पूर्वानुमान', र 'प्रशिक्षण डाटा' जस्ता आधारभूत अवधारणाहरू अन्वेषण गर्नुहुनेछ। +- उच्च स्तरमा मेसिन लर्निङको आधारभूत प्रक्रियाहरू बुझ्ने। +- 'मोडेलहरू', 'पूर्वानुमानहरू', र 'प्रशिक्षण डाटा' जस्ता आधारभूत अवधारणा अन्वेषण गर्ने। -## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पूर्व-पाठ क्विज](https://ff-quizzes.netlify.app/en/ml/) -[![मेसिन लर्निङका प्रविधिहरू - सुरुवात](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "मेसिन लर्निङका प्रविधिहरू - सुरुवात") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 माथिको तस्बिरमा क्लिक गरेर यस पाठको छोटो भिडियो हेर्नुहोस्। +> 🎥 माथिको छवि क्लिक गरी यस पाठमा छोटो भिडियो हेर्नुहोस्। ## परिचय -उच्च स्तरमा, मेसिन लर्निङ (ML) प्रक्रिया निर्माण गर्ने कला विभिन्न चरणहरूमा विभाजित छ: +उच्च स्तरमा मेसिन लर्निङ (एमएल) प्रक्रिया निर्माण गर्ने कला केही चरणहरूमा बनेको हुन्छ: -1. **प्रश्न तय गर्नुहोस्**। अधिकांश ML प्रक्रियाहरू यस्तो प्रश्न सोधेर सुरु हुन्छन् जसलाई साधारण सर्तहरूमा आधारित प्रोग्राम वा नियम-आधारित इन्जिनले उत्तर दिन सक्दैन। यी प्रश्नहरू प्रायः डाटाको संग्रहमा आधारित पूर्वानुमानहरू वरिपरि घुम्छन्। -2. **डाटा सङ्कलन र तयारी गर्नुहोस्**। तपाईंको प्रश्नको उत्तर दिनको लागि, तपाईंलाई डाटा चाहिन्छ। तपाईंको डाटाको गुणस्तर र कहिलेकाहीं मात्रा तपाईंको प्रारम्भिक प्रश्नको उत्तर दिन कत्तिको सक्षम छ भन्ने निर्धारण गर्दछ। डाटालाई दृश्यात्मक बनाउनु यो चरणको महत्त्वपूर्ण पक्ष हो। यस चरणमा डाटालाई प्रशिक्षण र परीक्षण समूहमा विभाजन गरेर मोडेल निर्माण गर्ने कार्य पनि समावेश छ। -3. **प्रशिक्षण विधि चयन गर्नुहोस्**। तपाईंको प्रश्न र डाटाको प्रकृतिको आधारमा, तपाईंले मोडेललाई कसरी प्रशिक्षण दिने भन्ने निर्णय गर्नुपर्छ ताकि डाटालाई राम्रोसँग प्रतिबिम्बित गर्न र त्यसको विरुद्ध सही पूर्वानुमान गर्न सकियोस्। यो ML प्रक्रियाको भाग हो जसमा विशिष्ट विशेषज्ञता र प्रायः धेरै प्रयोग आवश्यक हुन्छ। -4. **मोडेललाई प्रशिक्षण दिनुहोस्**। तपाईंको प्रशिक्षण डाटाको प्रयोग गरेर, तपाईं विभिन्न एल्गोरिदमहरूको प्रयोग गरेर मोडेललाई डाटामा ढाँचाहरू चिन्न प्रशिक्षण दिनुहुन्छ। मोडेलले आन्तरिक तौलहरू प्रयोग गर्न सक्छ जसलाई समायोजन गरेर डाटाको केही भागलाई अन्य भागहरू भन्दा प्राथमिकता दिन सकिन्छ ताकि राम्रो मोडेल निर्माण गर्न सकियोस्। -5. **मोडेलको मूल्याङ्कन गर्नुहोस्**। तपाईंले सङ्कलित सेटबाट पहिले कहिल्यै नदेखिएको डाटा (तपाईंको परीक्षण डाटा) प्रयोग गरेर मोडेल कत्तिको राम्रो प्रदर्शन गरिरहेको छ हेर्नुहुन्छ। -6. **प्यारामिटर ट्युनिङ**। तपाईंको मोडेलको प्रदर्शनको आधारमा, तपाईं विभिन्न प्यारामिटरहरू वा चरहरू प्रयोग गरेर प्रक्रिया पुनः गर्न सक्नुहुन्छ जसले मोडेललाई प्रशिक्षण दिन प्रयोग गरिएका एल्गोरिदमहरूको व्यवहारलाई नियन्त्रण गर्दछ। -7. **पूर्वानुमान गर्नुहोस्**। नयाँ इनपुटहरू प्रयोग गरेर तपाईंको मोडेलको सटीकता परीक्षण गर्नुहोस्। +1. **प्रश्न तय गर्नुहोस्।** धेरै एमएल प्रक्रियाहरू एक यस्तो प्रश्न सोधेर सुरु हुन्छन् जुन सरल सशर्त प्रोग्राम वा नियम-आधारित इन्जिनले उत्तर दिन सक्दैन। यी प्रश्नहरू प्रायः डाटा सङ्ग्रहमा आधारित पूर्वानुमानहरू वरिपरि घूम्छन्। +2. **डाटा सङ्कलन र तयारी गर्नुहोस्।** आफ्नो प्रश्नको उत्तर दिन सक्षम हुन, तपाईंलाई डाटा आवश्यक हुन्छ। डाटाको गुणस्तर र कहिलेकाहीं मात्राले तपाईंको आरम्भिक प्रश्न कति राम्रोसंग उत्तर दिन सकिन्छ भन्ने निर्धारण गर्दछ। डाटा दृश्यात्मकरण यस चरणको महत्त्वपूर्ण पक्ष हो। यस चरणमा मोडेल निर्माणका लागि डाटालाई प्रशिक्षण र परीक्षण समूहमा पनि विभाजन गरिन्छ। +3. **प्रशिक्षण विधि चयन गर्नुहोस्।** आफ्नो प्रश्न र डाटाको प्रकृतिमा आधारित भएर, तपाईंले आफ्नो डाटालाई सबैभन्दा राम्रो ढङ्गले प्रतिबिम्बित गर्ने र सही पूर्वानुमान गर्न सक्ने मोडेल प्रशिक्षण गर्न कस्तो विधि प्रयोग गर्ने निर्णय गर्नुपर्छ। यो एमएल प्रक्रियाको त्यो भाग हो जसमा विशिष्ट विशेषज्ञता र प्रायः धेरै प्रयोग आवश्यक पर्छ। +4. **मोडेल प्रशिक्षण गर्नुहोस्।** आफ्नो प्रशिक्षण डाटाको प्रयोग गरी विभिन्न एल्गोरिदमहरू प्रयोग गरेर मोडेललाई डाटामा रहेका ढाँचाहरू चिन्ने गरी प्रशिक्षण गर्नुहुन्छ। मोडेलले आन्तरिक तौलहरू प्रयोग गर्न सक्छ जुन समायोजन गरेर डाटाका केही भागहरूलाई बढी प्राथमिकता दिन सक्छ र राम्रो मोडेल निर्माण गर्न सक्छ। +5. **मोडेल मूल्याङ्कन गर्नुहोस्।** तपाईंले कहिल्यै नदेखेको डाटा (तपाईंको परीक्षण डाटा) प्रयोग गरेर मोडेल कति राम्रो छ हेर्नुहुन्छ। +6. **प्यारामिटर ट्यूनिंग।** मोडेलको प्रदर्शनका आधारमा, तपाईंले प्रशिक्षणमा प्रयोग गरिएका एल्गोरिदमहरूको व्यवहार नियन्त्रण गर्ने विभिन्न प्यारामिटरहरू वा चरहरूलाई परिवर्तन गरी प्रक्रिया पुन: गर्न सक्नुहुन्छ। +7. **पूर्वानुमान गर्नुहोस्।** नयाँ इनपुटहरूसँग मोडेलको सटीकताका लागि परीक्षण गर्नुहोस्। -## कुन प्रश्न सोध्ने +## कस्तो प्रश्न सोध्ने -कम्प्युटरहरू डाटामा लुकेका ढाँचाहरू पत्ता लगाउन विशेष रूपमा कुशल छन्। यो उपयोगिता अनुसन्धानकर्ताहरूको लागि धेरै उपयोगी छ जसले कुनै निश्चित क्षेत्रको बारेमा प्रश्न सोध्छन् जसलाई सर्तहरूमा आधारित नियम इन्जिन बनाएर सजिलै उत्तर दिन सकिँदैन। उदाहरणका लागि, बीमाको काममा, डाटा वैज्ञानिकले धूम्रपान गर्ने र नगर्ने व्यक्तिको मृत्यु दरको बारेमा नियमहरू निर्माण गर्न सक्छ। +कम्प्युटरहरू डाटामा लुकेका ढाँचाहरू पत्ता लगाउन विशेष दक्ष हुन्छन्। यो उपयोगिता अनुसन्धानकर्ताहरूका लागि धेरै उपयोगी हुन्छ जसले सशर्त नियम-इन्जिन सिर्जना गरेर सजिलै उत्तर नदिइने प्रश्नहरू सोधेका हुन्छन्। उदाहरणका लागि, एक बीमाकर्मी कार्यका लागि, डाटा वैज्ञानिकले बुकेको नियमहरू तयार पार्न सक्छन् जुन धूम्रपान गर्ने र नगर्नेहरूका मृत्यु दरको लागि हुन्छ। -तर जब धेरै अन्य चरहरू समीकरणमा ल्याइन्छन्, ML मोडेलले विगतको स्वास्थ्य इतिहासको आधारमा भविष्यको मृत्यु दरको पूर्वानुमान गर्न अधिक प्रभावकारी हुन सक्छ। एक खुशीको उदाहरण भनेको कुनै स्थानको अप्रिल महिनाको मौसमको पूर्वानुमान बनाउनु हो, जसमा अक्षांश, देशान्तर, जलवायु परिवर्तन, समुद्रको नजिकको दूरी, जेट स्ट्रिमको ढाँचाहरू, र अन्य धेरै डाटाहरू समावेश छन्। +तर जब धेरै अन्य चरहरूलाई पनि समावेश गरिन्छ, एमएल मोडेलले विगतको स्वास्थ्य इतिहासमा आधारित भविष्यको मृत्यु दरहरू पूर्वानुमान गर्न अधिक प्रभावकारी साबित हुन सक्छ। एउटा रमाइलो उदाहरण हुन सक्छ, दिइएको स्थानमा अप्रिल महिनाको मौसम पूर्वानुमान बनाउने, जसमा अक्षांश, देशांश, जलवायु परिवर्तन, समुद्रको नजिकाई, जेट स्ट्रीमका ढाँचाहरू लगायत धेरै डाटाहरू समावेश छन्। -✅ यो [स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) मा मौसम मोडेलहरूको ऐतिहासिक दृष्टिकोण प्रस्तुत गरिएको छ जसले मौसम विश्लेषणमा ML प्रयोगको बारेमा जानकारी दिन्छ। +✅ यस [स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) मा मौसम मोडेलहरू सम्बद्ध इतिहासात्मक दृष्टिकोणबाट एमएलको प्रयोगसम्बन्धी जानकारी छ। -## निर्माण अघि कार्यहरू +## मोडेल निर्माण अघि गर्नु पर्ने कामहरू -तपाईंको मोडेल निर्माण गर्न सुरु गर्नु अघि, तपाईंले पूरा गर्नुपर्ने केही कार्यहरू छन्। तपाईंको प्रश्न परीक्षण गर्न र मोडेलको पूर्वानुमानको आधारमा परिकल्पना बनाउन, तपाईंले केही तत्वहरू पहिचान र कन्फिगर गर्न आवश्यक छ। +मोडेल निर्माण सुरु गर्नु अघि, तपाईंले केही कामहरू पूरा गर्न आवश्यक हुन्छ। तपाईंको प्रश्न परीक्षण गर्न र मोडेलको पूर्वानुमानमा आधारित एउटा परिकल्पना बनाउन, तपाईंले केहि अङ्गहरू पहिचान गर्न र कन्फिगर गर्न आवश्यक हुन्छ। ### डाटा -तपाईंको प्रश्नको उत्तर कुनै निश्चितताका साथ दिनको लागि, तपाईंलाई सही प्रकारको पर्याप्त डाटा चाहिन्छ। यस बिन्दुमा तपाईंले दुई काम गर्नुपर्छ: +तपाईंको प्रश्नलाई प्रमाणिकतासँग उत्तर दिन सक्षम हुन, तपाईंलाई सही प्रकारको पर्याप्त डाटा चाहिन्छ। यस बिन्दुमा गर्नु पर्ने दुई कुरा छन्: -- **डाटा सङ्कलन गर्नुहोस्**। डाटा विश्लेषणमा निष्पक्षताको बारेमा अघिल्लो पाठलाई ध्यानमा राख्दै, तपाईंले आफ्नो डाटा सावधानीपूर्वक सङ्कलन गर्नुपर्छ। यस डाटाको स्रोतहरू, यसमा हुन सक्ने कुनै पनि अन्तर्निहित पूर्वाग्रहहरू, र यसको उत्पत्तिको दस्तावेजीकरणको बारेमा सचेत रहनुहोस्। -- **डाटा तयार गर्नुहोस्**। डाटा तयारी प्रक्रियामा धेरै चरणहरू समावेश छन्। यदि डाटा विभिन्न स्रोतहरूबाट आएको छ भने तपाईंले डाटालाई एकत्रित गर्न र सामान्यीकरण गर्न आवश्यक हुन सक्छ। तपाईंले स्ट्रिङलाई सङ्ख्यामा रूपान्तरण गर्ने (जस्तै [क्लस्टरिङ](../../5-Clustering/1-Visualize/README.md) मा गरिन्छ) जस्ता विभिन्न विधिहरू प्रयोग गरेर डाटाको गुणस्तर र मात्रा सुधार गर्न सक्नुहुन्छ। तपाईंले मूल डाटाको आधारमा नयाँ डाटा उत्पन्न गर्न सक्नुहुन्छ (जस्तै [वर्गीकरण](../../4-Classification/1-Introduction/README.md) मा गरिन्छ)। तपाईंले डाटालाई सफा र सम्पादन गर्न सक्नुहुन्छ (जस्तै हामी [वेब एप](../../3-Web-App/README.md) पाठ अघि गर्नेछौं)। अन्ततः, तपाईंले प्रशिक्षण प्रविधिहरूको आधारमा डाटालाई अनियमित र फेरबदल गर्न आवश्यक हुन सक्छ। +- **डाटा सङ्कलन।** डाटा विश्लेषणमा निष्पक्षताको बारेमा अघिल्लो पाठ सम्झँदै, सावधानीपूर्वक डाटा सङ्कलन गर्नुहोस्। यस डाटाका स्रोतहरू, यसमा रहेको कुनै पनि पूर्वाग्रहहरू, र यसको उत्पत्तिलाई सचेत रहनुहोस् र दस्तावेज गर्नुहोस्। +- **डाटा तयारी।** डाटा तयारी प्रक्रियामा धेरै चरणहरू छन्। तपाईंलाई विभिन्न स्रोतबाट आएको डाटालाई एकसाथ जोड्न र सामान्य बनाउनु पर्न सक्छ। तपाईं स्ट्रिङलाई सङ्ख्यामा परिवर्तन गरेर डाटाको गुणस्तर र मात्रामा सुधार गर्न सक्नुहुन्छ (जस्तै हामीले [क्लस्टरिङ](../../5-Clustering/1-Visualize/README.md) मा गरेजस्तै)। तपाईं मूल डाटाबाट नयाँ डाटा पनि उत्पादन गर्न सक्नुहुन्छ (जस्तै [श्रेणीकरण](../../4-Classification/1-Introduction/README.md) मा गर्छौं)। तपाईं डाटालाई सफा र सम्पादन गर्न सक्नुहुन्छ (जस्तो हामी [वेब एप](../../3-Web-App/README.md) पाठ अघि गर्नेछौं)। अन्ततः, तपाईंले यसलाई यादृच्छिक पार्न र मिक्स गर्न पनि आवश्यक पर्न सक्छ, तपाईंको प्रशिक्षण प्रविधिहरूमा भर पर्छ। -✅ डाटा सङ्कलन र प्रशोधन गरेपछि, तपाईंको प्रश्नलाई सम्बोधन गर्न यसको आकारले अनुमति दिनेछ कि छैन हेर्न एक क्षण लिनुहोस्। यो सम्भव छ कि डाटाले तपाईंको दिइएको कार्यमा राम्रो प्रदर्शन नगर्नेछ, जस्तै हामी [क्लस्टरिङ](../../5-Clustering/1-Visualize/README.md) पाठहरूमा पत्ता लगाउँछौं! +✅ डाटा सङ्कलन र प्रक्रिया गरेपछि, यसको आकारले तपाईंको प्रश्न समाधान गर्न सक्नेछ कि सक्दैन जाँच गर्न केही समय लिनुहोस्। हामीले [क्लस्टरिङ](../../5-Clustering/1-Visualize/README.md) पाठहरूमा पनि देख्यौं कि कहिलेकाहीं डाटाले दिइएको कार्यमा राम्रो प्रदर्शन नगर्न सक्छ! ### विशेषताहरू र लक्ष्य -[विशेषता](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) भनेको तपाईंको डाटाको मापनयोग्य सम्पत्ति हो। धेरै डाटासेटहरूमा यो 'मिति', 'आकार', वा 'रङ' जस्ता स्तम्भ शीर्षकको रूपमा व्यक्त गरिन्छ। तपाईंको विशेषता चर, प्रायः कोडमा `X` द्वारा प्रतिनिधित्व गरिन्छ, इनपुट चर हो जसले मोडेललाई प्रशिक्षण दिन प्रयोग गरिन्छ। +[विशेषता](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) भनेको तपाईंको डाटाको मापन योग्य गुण हो। धेरै डेटासेटहरूमा यो 'मिति', 'आकार', वा 'रंग' जस्ता स्तम्भ शीर्षकको रूपमा व्यक्त हुन्छ। तपाईंको विशेषता चर, प्रायः कोडमा `X` को रूपमा प्रतिनिधित्व गरिन्छ, इनपुट चर हो जुन मोडेल प्रशिक्षणका लागि प्रयोग गरिनेछ। -लक्ष्य भनेको तपाईंले भविष्यवाणी गर्न खोजिरहेको कुरा हो। लक्ष्य, प्रायः कोडमा `y` द्वारा प्रतिनिधित्व गरिन्छ, तपाईंको डाटाबाट सोध्न खोजिएको प्रश्नको उत्तर हो: डिसेम्बरमा कुन **रङ**का कद्दूहरू सस्तो हुनेछन्? सान फ्रान्सिस्कोमा कुन छिमेकमा सबैभन्दा राम्रो सम्पत्ति **मूल्य** हुनेछ? कहिलेकाहीं लक्ष्यलाई लेबल विशेषता पनि भनिन्छ। +लक्ष्य भनेको त्यो वस्तु हो जुन तपाईं पूर्वानुमान गर्न खोज्दै हुनुहुन्छ। लक्ष्य, प्रायः कोडमा `y` को रूपमा प्रतिनिधित्व गरिन्छ, तपाईंले आफ्नो डाटाबाट सोध्ने प्रश्नको उत्तर जनाउँछ: डिसेम्बरमा, कुन **रंग**को सिँघडा सबैभन्दा सस्तो हुन्छ? स्यान फ्रान्सिस्कोमा, कुन छिमेकहरूमा सबैभन्दा राम्रो घरमूल्य **मूल्य** हुनेछ? कहिलेकाहीं लक्ष्यलाई लेबल विशेषता पनि भनिन्छ। -### तपाईंको विशेषता चर चयन गर्नुहोस् +### आफ्नो विशेषता चर चयन -🎓 **विशेषता चयन र विशेषता निकासी** मोडेल निर्माण गर्दा कुन चर चयन गर्ने थाहा कसरी पाउने? तपाईंले सम्भवतः विशेषता चयन वा विशेषता निकासीको प्रक्रियाबाट जानुपर्नेछ ताकि सबैभन्दा राम्रो प्रदर्शन गर्ने मोडेलका लागि सही चरहरू चयन गर्न सकियोस्। तर यी समान कुरा होइनन्: "विशेषता निकासीले मूल विशेषताहरूको कार्यहरूबाट नयाँ विशेषताहरू सिर्जना गर्दछ, जबकि विशेषता चयनले विशेषताहरूको उपसमुच्ची फिर्ता गर्दछ।" ([स्रोत](https://wikipedia.org/wiki/Feature_selection)) +🎓 **विशेषता चयन र विशेषता निकासी** मोडेल बनाउँदा कुन चर छनोट गर्ने जान्न कसरी? तपाईंले सम्भवत: सबैभन्दा प्रभावकारी मोडेलका लागि सही चरहरू चयन गर्न विशेषता चयन वा विशेषता निकासी प्रक्रियामा जानुहुनेछ। यी एउटै होइनन्: "विशेषता निकासीले मूल विशेषताहरूको कार्यहरूबाट नयाँ विशेषताहरू सिर्जना गर्छ, जबकि विशेषता चयनले विशेषताहरूको उपसमूह फर्काउँछ।" ([स्रोत](https://wikipedia.org/wiki/Feature_selection)) -### तपाईंको डाटालाई दृश्यात्मक बनाउनुहोस् +### आफ्नो डाटा दृश्यात्मकरण गर्नुहोस् -डाटा वैज्ञानिकको उपकरणको महत्त्वपूर्ण पक्ष भनेको Seaborn वा MatPlotLib जस्ता उत्कृष्ट पुस्तकालयहरूको प्रयोग गरेर डाटालाई दृश्यात्मक बनाउने शक्ति हो। तपाईंको डाटालाई दृश्यात्मक रूपमा प्रस्तुत गर्दा तपाईंले उपयोग गर्न सकिने लुकेका सम्बन्धहरू पत्ता लगाउन सक्नुहुन्छ। तपाईंको दृश्यात्मकताले पूर्वाग्रह वा असन्तुलित डाटा पत्ता लगाउन पनि मद्दत गर्न सक्छ (जस्तै हामी [वर्गीकरण](../../4-Classification/2-Classifiers-1/README.md) मा पत्ता लगाउँछौं)। +डाटा वैज्ञानिकको उपकरण बजारको एक महत्वपूर्ण पक्ष हो डाटालाई दृश्यात्मक बनाउन Seaborn वा MatPlotLib जस्ता धेरै उत्कृष्ट पुस्तकालयहरू प्रयोग गर्ने क्षमता। तपाईंको डाटालाई दृश्यमा प्रस्तुत गर्दा तपाईंले लुकेका सम्बन्धहरू पत्ता लगाउन सक्नुहुन्छ जसलाई तपाईं उपयोग गर्न सक्नुहुन्छ। तपाईंका दृश्यले पूर्वाग्रह वा असन्तुलित डाटा पत्ता लगाउन पनि मद्दत गर्न सक्छ (जस्तै हामीले [श्रेणीकरण](../../4-Classification/2-Classifiers-1/README.md) मा पत्ता लगायौं)। -### तपाईंको डाटासेटलाई विभाजन गर्नुहोस् +### आफ्नो डेटासेट विभाजन गर्नुहोस् -प्रशिक्षण अघि, तपाईंले आफ्नो डाटासेटलाई असमान आकारका दुई वा बढी भागमा विभाजन गर्न आवश्यक छ जसले अझै डाटालाई राम्रोसँग प्रतिनिधित्व गर्दछ। +प्रशिक्षण अघि, तपाईंको डेटासेटलाई दुई वा बढी असमान आकारका भागहरूमा विभाजन गर्न आवश्यक हुन्छ जुन अझै डाटालाई राम्रो प्रतिनिधित्व गर्दछन्। -- **प्रशिक्षण**। डाटासेटको यो भाग मोडेललाई प्रशिक्षण दिन फिट गरिन्छ। यो सेट मूल डाटासेटको अधिकांश भाग हो। -- **परीक्षण**। परीक्षण डाटासेट मूल डाटाबाट सङ्कलित स्वतन्त्र डाटाको समूह हो जसले निर्माण गरिएको मोडेलको प्रदर्शन पुष्टि गर्न प्रयोग गरिन्छ। -- **मान्यकरण**। मान्यकरण सेट स्वतन्त्र उदाहरणहरूको सानो समूह हो जसले मोडेलको हाइपरप्यारामिटरहरू वा संरचनालाई ट्युन गर्न प्रयोग गरिन्छ ताकि मोडेल सुधार गर्न सकियोस्। तपाईंको डाटाको आकार र तपाईंले सोधिरहेको प्रश्नको आधारमा, तपाईंले यो तेस्रो सेट निर्माण गर्न आवश्यक नपर्न सक्छ (जस्तै हामी [समय श्रृंखला पूर्वानुमान](../../7-TimeSeries/1-Introduction/README.md) मा नोट गर्छौं)। +- **प्रशिक्षण।** डेटासेटको यो भाग तपाईंको मोडेलमा फिट गरी प्रशिक्षणका लागि प्रयोग हुन्छ। यो सेट मूल डेटासेटको बहुसंख्यक हिस्सा हो। +- **परीक्षण।** परीक्षण डेटासेट एउटा स्वतन्त्र डाटा समूह हो, प्रायः मूल डाटाबाट सङ्कलित, जुन तपाईंले निर्माण गरिएको मोडेलको प्रदर्शन पुष्टि गर्न प्रयोग गर्नुहुन्छ। +- **मान्यकरण।** मान्यकरण सेट सानो स्वतन्त्र उदाहरणहरूको समूह हो जुन तपाईंले मोडेलका हाइपरप्यारामिटरहरू, वा संरचना, समायोजन गर्न प्रयोग गर्नुहुन्छ। तपाईंको डाटाको आकार र प्रश्नमा निर्भर भएर, तपाईंलाई यो तेस्रो सेट आवश्यक नपर्न सक्छ (जस्तै हामीले [समय श्रृंखला पूर्वानुमान](../../7-TimeSeries/1-Introduction/README.md) मा उल्लेख गरेका छौं)। ## मोडेल निर्माण -तपाईंको प्रशिक्षण डाटाको प्रयोग गरेर, तपाईंको लक्ष्य विभिन्न एल्गोरिदमहरूको प्रयोग गरेर **प्रशिक्षण** गरेर मोडेल, वा तपाईंको डाटाको सांख्यिकीय प्रतिनिधित्व निर्माण गर्नु हो। मोडेललाई प्रशिक्षण दिनु भनेको यसलाई डाटामा उजागर गर्नु हो जसले यसलाई पत्ता लगाएको ढाँचाहरूको बारेमा धारणाहरू बनाउन, प्रमाणित गर्न, र स्वीकार वा अस्वीकार गर्न अनुमति दिन्छ। +तपाईंको प्रशिक्षण डाटाको प्रयोग गरी, तपाईंको लक्ष्य मोडेल, वा तपाईंको डाटाको सांख्यिकीय प्रतिनिधित्व, विभिन्न एल्गोरिदमहरू प्रयोग गरेर **प्रशिक्षण** गर्नु हो। मोडेललाई प्रशिक्षण गर्दा यो डाटासँग चिनजान गर्ने अवसर पाउँछ र यो पत्ता लगाएको, प्रमाणित गरेको, र स्वीकार वा अस्वीकृत गरेको घुमावदार ढाँचाहरूमा अनुमान गर्न सक्षम हुन्छ। -### प्रशिक्षण विधि चयन गर्नुहोस् +### प्रशिक्षण विधि छनोट गर्नुहोस् -तपाईंको प्रश्न र तपाईंको डाटाको प्रकृतिको आधारमा, तपाईंले यसलाई प्रशिक्षण दिन विधि चयन गर्नुहुनेछ। [Scikit-learn को दस्तावेज](https://scikit-learn.org/stable/user_guide.html) मा चरणबद्ध रूपमा जानुहोस् - जुन हामी यस पाठ्यक्रममा प्रयोग गर्छौं - तपाईं मोडेललाई प्रशिक्षण दिन धेरै तरिकाहरू अन्वेषण गर्न सक्नुहुन्छ। तपाईंको अनुभवको आधारमा, तपाईंले सबैभन्दा राम्रो मोडेल निर्माण गर्न धेरै फरक विधिहरू प्रयास गर्नुपर्नेछ। तपाईं सम्भवतः एक प्रक्रियाबाट जानुहुनेछ जहाँ डाटा वैज्ञानिकहरूले मोडेलको प्रदर्शन मूल्याङ्कन गर्छन्, यसलाई नदेखिएको डाटा खुवाउँछन्, सटीकता, पूर्वाग्रह, र अन्य गुणस्तर-घटाउने समस्याहरू जाँच गर्छन्, र दिइएको कार्यका लागि सबैभन्दा उपयुक्त प्रशिक्षण विधि चयन गर्छन्। +तपाईंको प्रश्न र डाटाको प्रकृतिमा आधारित, तपाईं यसलाई प्रशिक्षण दिन विधि छनोट गर्नुहुनेछ। [Scikit-learn को दस्तावेज](https://scikit-learn.org/stable/user_guide.html) मार्फत जानुहोस् — जुन यो कोर्समा प्रयोग गरिन्छ — र मोडेल प्रशिक्षण गर्ने धेरै तरिकाहरू अन्वेषण गर्नुहोस्। तपाईंको अनुभवमा भर परे, तपाईंले सबैभन्दा राम्रो मोडेल बनाउन विभिन्न विधि प्रयास गर्नुपर्ने हुन सक्छ। प्रायः डेटा वैज्ञानिकहरूले त्यस्तो प्रक्रियाबाट गुज्रिन्छन् जहाँ उनीहरूले मोडेलको प्रदर्शन अवलोकन गर्छन्: नदेखिएको डाटा मोडेललाई दिन्छन्, सत्यता, पूर्वाग्रह, र अन्य गुणस्तर ह्रास गर्ने समस्याको जाँच गर्छन्, र सम्बन्धित प्रशिक्षण विधि छनोट गर्छन्। -### मोडेललाई प्रशिक्षण दिनुहोस् +### मोडेल प्रशिक्षित गर्नुहोस् -तपाईंको प्रशिक्षण डाटासँग सुसज्जित, तपाईं 'फिट' गरेर मोडेल निर्माण गर्न तयार हुनुहुन्छ। तपाईंले धेरै ML पुस्तकालयहरूमा 'model.fit' को कोड देख्नुहुनेछ - यो समयमा तपाईंले आफ्नो विशेषता चरलाई मानहरूको एरेको रूपमा (प्रायः 'X') र लक्ष्य चरलाई (प्रायः 'y') पठाउनुहुन्छ। +प्रशिक्षण डाटा लिएर, तपाईं तयार हुनुहुन्छ मोडेल बनाउनको लागि 'fit' गर्न। धेरै एमएल पुस्तकालयहरूमा तपाईंले कोड 'model.fit' पाउनु हुनेछ — यो समयमा तपाईले तपाईको विशेषता चरको एरे (प्रायः 'X') र लक्ष्य चर (प्रायः 'y') मोडेलमा पठाउनुहुन्छ। -### मोडेलको मूल्याङ्कन गर्नुहोस् +### मोडेल मूल्याङ्कन गर्नुहोस् -एकपटक प्रशिक्षण प्रक्रिया पूरा भएपछि (ठूलो मोडेललाई प्रशिक्षण दिन धेरै पुनरावृत्ति, वा 'epochs', लाग्न सक्छ), तपाईंले परीक्षण डाटाको प्रयोग गरेर मोडेलको गुणस्तर मूल्याङ्कन गर्न सक्नुहुन्छ। यो डाटा मूल डाटाको उपसमुच्ची हो जसलाई मोडेलले पहिले विश्लेषण गरेको छैन। तपाईंले आफ्नो मोडेलको गुणस्तरको बारेमा मेट्रिक्सको तालिका प्रिन्ट गर्न सक्नुहुन्छ। +प्रशिक्षण प्रक्रिया पूरा भएपछि (ठूलो मोडेललाई प्रशिक्षण दिन धेरै प्रक्रिया वा 'एपोक' लाग्न सकिन्छ), तपाईं परीक्षण डाटा प्रयोग गरी मोडेलको गुणस्तर मूल्याङ्कन गर्न सक्नुहुन्छ। यो डाटा मूल डाटाको एक उपसर्ग हो जसलाई मोडेलले पहिले कहिल्यै विश्लेषण गरेको थिएन। तपाईं मोडेलको गुणस्तरको मेट्रिक्सहरूको तालिका प्रिन्ट गर्न सक्नुहुन्छ। 🎓 **मोडेल फिटिङ** -मेसिन लर्निङको सन्दर्भमा, मोडेल फिटिङले मोडेलको अन्तर्निहित कार्यको सटीकतालाई जनाउँछ जब यसले डाटालाई विश्लेषण गर्न प्रयास गर्छ जससँग यो परिचित छैन। +मेसिन लर्निङको सन्दर्भमा, मोडेल फिटिङले मोडेलको आधारभूत कार्यक्षमताको सटीकतामा जनाउँछ जुन यसले परिचित नभएको डाटामा विश्लेषण गर्ने प्रयास गर्दछ। -🎓 **अन्डरफिटिङ** र **ओभरफिटिङ** सामान्य समस्याहरू हुन् जसले मोडेलको गुणस्तरलाई घटाउँछन्, किनकि मोडेलले प्रशिक्षण डाटासँग न त पर्याप्त राम्रोसँग फिट गर्छ न त धेरै राम्रोसँग। यसले मोडेललाई प्रशिक्षण डाटासँग धेरै नजिक वा धेरै टाढा मिल्दो पूर्वानुमान गर्न बनाउँछ। ओभरफिट मोडेलले प्रशिक्षण डाटालाई धेरै राम्रोसँग पूर्वानुमान गर्छ किनभने यसले डाटाको विवरण र आवाजलाई धेरै राम्रोसँग सिकेको छ। अन्डरफिट मोडेल सटीक छैन किनभने यसले न त यसको प्रशिक्षण डाटालाई सही रूपमा विश्लेषण गर्न सक्छ न त यसले पहिले 'देखेको छैन' डाटालाई। +🎓 **अन्डरफिटिङ** र **ओभरफिटिङ** सामान्य समस्याहरू हुन् जसले मोडेलको गुणस्तर घटाउँछ, किनभने मोडेल ठीकसँग नभएर धेरै राम्रोसँग फिट हुन्छ। यसले मोडेललाई प्रशिक्षण डाटासँग धेरै नजिक वा धेरै टाढा पूर्वानुमान गर्न बाध्य पार्दछ। एक ओभरफिट मोडेलले प्रशिक्षण डाटा धेरै राम्रोसँग पूर्वानुमान गर्छ किनकि यसले डाटाको विवरण र आवाजलाई पनि धेरै राम्ररी सिकिसकेको हुन्छ। एक अन्डरफिट मोडेल सही छैन किनभने यो न त आफ्नो प्रशिक्षण डाटा सहीसँग विश्लेषण गर्न सक्छ न त नदेखिएको डाटा। -![ओभरफिटिङ मोडेल](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक +![overfitting model](../../../../translated_images/ne/overfitting.1c132d92bfd93cb6.webp) +> [जेन लुपर](https://twitter.com/jenlooper) द्वारा infographic -## प्यारामिटर ट्युनिङ +## प्यारामिटर ट्यूनिंग -तपाईंको प्रारम्भिक प्रशिक्षण पूरा भएपछि, मोडेलको गुणस्तरलाई अवलोकन गर्नुहोस् र यसको 'हाइपरप्यारामिटरहरू' समायोजन गरेर सुधार गर्ने विचार गर्नुहोस्। यस प्रक्रियाको बारेमा [दस्तावेजमा](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) थप पढ्नुहोस्। +तपाईंको प्रारम्भिक प्रशिक्षण पूरा भएपछि, मोडेलको गुणस्तर निरीक्षण गर्नुहोस् र यसको 'हाइपरप्यारामिटरहरू' ट्यून गरेर सुधार गर्ने विचार गर्नुहोस्। यस प्रक्रियाबारे थप पढ्न यहाँ हेर्नुहोस् [दस्तावेजमा](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)। ## पूर्वानुमान -यो क्षण हो जहाँ तपाईंले आफ्नो मोडेलको सटीकता परीक्षण गर्न पूर्ण रूपमा नयाँ डाटा प्रयोग गर्न सक्नुहुन्छ। 'लागू गरिएको' ML सेटिङमा, जहाँ तपाईं उत्पादनमा मोडेल प्रयोग गर्न वेब सम्पत्ति निर्माण गर्दै हुनुहुन्छ, यो प्रक्रियाले प्रयोगकर्ता इनपुट सङ्कलन गर्न (उदाहरणका लागि बटन थिच्ने) चर सेट गर्न र मोडेललाई अनुमान वा मूल्याङ्कनको लागि पठाउन समावेश गर्न सक्छ। +यो त्यो क्षण हो जहाँ तपाईं पूरै नयाँ डाटा प्रयोग गरेर आफ्नो मोडेलको शुद्धता परीक्षण गर्न सक्नुहुन्छ। 'प्रयोगात्मक' एमएल सेटिङमा, जहाँ तपाईं मोडेललाई उत्पादनमा प्रयोग गर्न वेब सम्पत्ति निर्माण गर्दै हुनुहुन्छ, यस प्रक्रियामा प्रयोगकर्ता इनपुट सङ्कलन (जस्तै बटन थिच्नु) र त्यसलाई मोडेलमा पठाएर अनुमान लगाउने, वा मूल्याङ्कन गर्ने समावेश हुन सक्छ। -यी पाठहरूमा, तपाईंले यी चरणहरू कसरी प्रयोग गर्ने, निर्माण गर्ने, परीक्षण गर्ने, मूल्याङ्कन गर्ने, र पूर्वानुमान गर्ने - डाटा वैज्ञानिकको सबै इशाराहरू र थप, 'फुल स्ट्याक' ML इन्जिनियर बन्ने यात्रामा प्रगति गर्दै। +यी पाठहरूमा, तपाईं यी चरणहरूमा कसरी डाटा तयारी गर्ने, मोडेल निर्माण गर्ने, परीक्षण गर्ने, मूल्याङ्कन गर्ने, र पूर्वानुमान गर्ने सिक्नुहुनेछ — डाटा वैज्ञानिकका सबै कामहरू र थप — तपाईं 'फुल स्ट्याक' एमएल इञ्जिनियर बन्ने यात्रामा अगाडि बढ्दै गर्दा। --- -## 🚀 चुनौती +## 🚀चुनौती -ML अभ्यासकर्ताको चरणहरूको प्रवाह चार्ट बनाउनुहोस्। तपाईं अहिले प्रक्रियाको कुन भागमा हुनुहुन्छ? तपाईं कहाँ कठिनाइ पाउने भविष्यवाणी गर्नुहुन्छ? तपाईंलाई के सजिलो लाग्छ? +एमएल अभ्यास गर्ने व्यक्तिको कदमहरूको फ्लो चार्ट बनाउनुहोस्। तपाईं अहिले प्रक्रियामा कहाँ हुनुहुन्छ? तपाईंलाई कहाँ कठिनाइ देखिन्छ? के तपाईंलाई सजिलो लाग्छ? -## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पश्चात्-पाठ क्विज](https://ff-quizzes.netlify.app/en/ml/) -## समीक्षा र आत्म अध्ययन +## समीक्षा र आत्म-अध्ययन -डाटा वैज्ञानिकहरूको दैनिक कामको बारेमा छलफल गर्ने अन्तर्वार्ताहरू अनलाइन खोज्नुहोस्। यहाँ [एक](https://www.youtube.com/watch?v=Z3IjgbbCEfs) छ। +डेटा वैज्ञानिकहरूसँगको अन्तर्वार्ता अनलाइन खोज्नुहोस् जसले आफ्ना दैनिक कामका बारेमा कुरा गर्छन्। यहाँ एउटा छ [one](https://www.youtube.com/watch?v=Z3IjgbbCEfs)। ## असाइनमेन्ट -[डाटा वैज्ञानिकसँग अन्तर्वार्ता गर्नुहोस्](assignment.md) +[डेटा वैज्ञानिकसँग अन्तरवार्ता लिनुहोस्](assignment.md) --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file + +**अस्वीकरण**: +यो कागजात AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) को प्रयोग गरेर अनुवाद गरिएको हो। हामी सहीतालाई सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया जान्नुहोस् कि स्वचालित अनुवादमा गल्ती वा अशुद्धता हुन सक्दछ। मूल कागजात यसको मूल भाषामा आधिकारिक स्रोत मानिनु पर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न भएका कुनै पनि गलत बुझाइ वा गलत व्याख्याको लागि हामी जिम्मेवार हौंन। + \ No newline at end of file diff --git a/translations/ne/2-Regression/3-Linear/README.md b/translations/ne/2-Regression/3-Linear/README.md index ef9cc10b97..d52c114400 100644 --- a/translations/ne/2-Regression/3-Linear/README.md +++ b/translations/ne/2-Regression/3-Linear/README.md @@ -1,97 +1,99 @@ -# स्किकिट-लर्न प्रयोग गरी रिग्रेसन मोडेल तयार पार्नुहोस्: रिग्रेसन चार तरिकाले +# Scikit-learn प्रयोग गरेर रिग्रेशन मोडेल बनाउने: चार तरिकाले रिग्रेशन -## शुरुवातकर्ताको नोट +## शुरुवाती नोट -लाइनर रिग्रेसन तब प्रयोग गरिन्छ जब हामी **संख्यात्मक मान** (उदाहरणका लागि, घरको मूल्य, तापक्रम, वा बिक्री) भविष्यवाणी गर्न चाहन्छौं। -यो इनपुट फीचर र आउटपुट बीचको सम्बन्धलाई सर्वोत्तम प्रतिनिधित्व गर्ने सिधा रेखा खोज्छ। +लाइनियर रिग्रेशन तब प्रयोग गरिन्छ जब हामी **संख्यात्मक मान** (उदाहरणका लागि, घरको मूल्य, तापमान, वा बिक्री) भविष्यवाणी गर्न चाहन्छौं। +यो इनपुट विशेषताहरू र आउटपुट बीचको सम्बन्धलाई सबैभन्दा राम्रो प्रतिनिधित्व गर्ने सिधा रेखा खोजेर काम गर्छ। -यस पाठमा, हामी अवधारणा बुझ्नमा केन्द्रित छौं र पछि थप उन्नत रिग्रेसन प्रविधिहरू अन्वेषण गर्नेछौं। +यस पाठमा, हामी अवधारणा बुझ्नमा ध्यान केन्द्रित गर्छौं, र थप उन्नत रिग्रेशन प्रविधिहरू अन्वेषण गर्नु अघि। ![Linear vs polynomial regression infographic](../../../../translated_images/ne/linear-polynomial.5523c7cb6576ccab.webp) -> इन्फोग्राफिक द्वारा [डासानी मडिपल्ली](https://twitter.com/dasani_decoded) -## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) +> इनफोग्राफिक द्वारा [दसानी मडिपल्लि](https://twitter.com/dasani_decoded) + +## [पाठ अघि प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/) > ### [यो पाठ R मा उपलब्ध छ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) + ### परिचय -अहिलेसम्म तपाईंले रिग्रेसन के हो भनेर पम्पकिन मूल्य निर्धारण डाटासेटबाट संकलित नमुना डाटाको साथ अन्वेषण गर्नुभएको छ जुन यो पाठ भर प्रयोग गरिनेछ। तपाईंले यसलाई म्याटप्लट्लिब प्रयोग गरी भीजरूपमा पनि प्रदर्शन गर्नुभएको छ। +अहिलेसम्म तपाईंले के हो रिग्रेशन भनेर बुझ्नुभयो, र यसलाई कद्दू मूल्य निर्धारण डाटासेटबाट सङ्कलित नमूना डाटासँग प्रयोग गर्नुभयो जुन हामी यस पाठमा प्रयोग गर्दैछौं। तपाईंले Matplotlib प्रयोग गरेर यसको भिजुअलाइजेसन पनि गर्नुभयो। -अब तपाईं एमएलका लागि रिग्रेसनमा अझ गहिराइमा जान तयार हुनुहुन्छ। जबकि भीजरूपले डाटालाई बुझ्न मद्दत गर्छ, मेसिन लर्निङको वास्तविक शक्ति _मोडेलहरू प्रशिक्षण_बाट आउँछ। मोडेलहरू ऐतिहासिक डाटामा प्रशिक्षण हुन्छन् जसले स्वचालित रूपमा डाटा निर्भरता समात्छ र नयाँ डाटाका लागि परिणाम भविष्यवाणी गर्न अनुमति दिन्छ जुन मोडेलले पहिले देखेन। +अब तपाईं ML को लागि रिग्रेशनमा अझ गहिराईमा जान तयार हुनुहुन्छ। भिजुअलाइजेसनले डाटालाई बुझ्न मद्दत गर्छ, तर मेशिन लर्निङको वास्तविक शक्ति _मोडेलहरू ट्रेन्ड_ बाट आउँछ। मोडेलहरू ऐतिहासिक डाटामा ट्रेन्ड गरिन्छन् ताकि तिनीहरू स्वतः डेटा निर्भरताहरू समात्न सकून्, र नयाँ डाटाको लागि भविष्यवाणी गर्न सकून्, जुन मोडेलले पहिले देखेको हुँदैन। -यस पाठमा, तपाईं दुई प्रकारका रिग्रेसनहरूमा थप जान्न हुनेछ: _मूलभूत लाइनर रिग्रेसन_ र _पोलिनोमियल रिग्रेसन_, साथै यी प्रविधिहरूमा आधारित गणित। ती मोडेलहरूले हामीलाई विभिन्न इनपुट डाटामा निर्भर गरी पम्पकिनको मूल्य भविष्यवाणी गर्न अनुमति दिनेछन्। +यस पाठमा, तपाईंले दुई प्रकारका रिग्रेशन बारे थप सिक्नु हुनेछ: _बेसिक लाइनियर रिग्रेशन_ र _बहुपद रिग्रेशन_, साथै यी प्रविधिहरू अन्तर्गत केहि गणित पनि। ती मोडेलहरूले हामीलाई कद्दूका मूल्यहरू विभिन्न इनपुट डाटामा निर्भर गर्दै भविष्यवाणी गर्न सक्षम बनाउनेछन्। [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 माथिको तस्वीरमा क्लिक गरी लाइनर रिग्रेसनको छोटो भिडियो हेर्नुहोस्। +> 🎥 माथिको छवि क्लिक गरेर लाइनियर रिग्रेशनको छोटो भिडियो अवलोकन हेर्नुहोस्। -> यस पाठक्रमभरि, हामी कम गणितीय ज्ञान रहने धारणा गर्छौं, र अन्य क्षेत्रबाट आएका विद्यार्थीहरूका लागि यसलाई सजिलो बनाउने प्रयास गर्दछौं, त्यसैले नोटहरू, 🧮 कलआउटहरू, चित्रहरू, र अन्य सिकाइ उपकरणहरूलाई ध्यानमा राख्नुहोस्। +> यस पाठ्यक्रमभरि, हामी न्यूनतम गणितीय ज्ञान मान्नेछौं, र अन्य क्षेत्रका विद्यार्थीहरूका लागि सजिलो बनाउन नोटहरू, 🧮 कलआउटहरू, चित्रहरू, र अन्य सिकाइ उपकरणहरू प्रयोग गर्नेछौं। -### पूर्वआवश्यकता +### पूर्व आवश्यक -अबसम्म तपाईं पम्पकिन डाटाको संरचनासँग परिचित हुनुहुन्छ जुन हामीले अध्ययन गर्दैछौं। यो डाटा यस पाठको _notebook.ipynb_ फाइलमा प्रीलोड र प्रि-क्लिन गरिएको अवस्थामा छ। फाइलमा, पम्पकिन मूल्य प्रति बुषेल नयाँ डाटा फ्रेममा देखाइएको छ। पक्का गर्नुहोस् कि तपाईं भिजुअल स्टुडियो कोडमा कर्नेलहरूमा यी नोटबुकहरू चलाउन सक्नुहुन्छ। +तपाईंले अब सम्म कद्दू डाटाको संरचनासँग परिचित हुनु पर्छ जुन हामी जाँच गर्दैछौं। यो डाटा यस पाठको _notebook.ipynb_ फाइलमा प्रीलोड गरिएको र पूर्व-सफा गरिएको छ। उक्त फाइलमा, कद्दूको मूल्य प्रति बसल नयाँ डाटा फ्रेममा देखाइएको छ। Visual Studio Code कोर्नेलहरूमा यी नोटबुकहरू चलाउन सक्नु पर्छ। ### तयारी -स्मरणका लागि, तपाईं यस डाटालाई लोड गर्दै हुनुहुन्छ ताकि यससँग सम्बन्धित प्रश्नहरू सोध्न सक्नुहोस्। +बिर्सनु हुँदैन, तपाईं यस डाटा लोड गर्दै हुनु हुन्छ प्रश्न सोध्नको लागि। -- पम्पकिन किन्ने सबैभन्दा उपयुक्त समय कहिले हो? -- मिनिएचर पम्पकिनको केसको मूल्य कति हुन सक्छ? -- के म तिनीहरूलाई आधा-बुषेल बास्केटमा किन्ने वा 1 1/9 बुषेल बाकसद्वारा किन्ने? -यस डाटामा अझै खोतलिरहौं। +- कद्दू किन्ने सबैभन्दा उत्तम समय कहिले हो? +- मलाई मिनिएचर कद्दूको एक केसको मूल्य कति अपेक्षा गर्न सक्छु? +- के म तिनीहरूलाई आधा बसल झोला वा १ १/९ बसल बक्समा किन्ने? -अघिल्लो पाठमा, तपाईंले Pandas डाटा फ्रेम सिर्जना गर्नुभयो र मूल डाटासेटको एक भाग प्रयोग गरी मूल्य बुषेल अनुसार सामान्यीकरण गर्नुभयो। यद्यपि, त्यति गर्दा तपाईंले करिब 400 डेटाप्वाइन्ट मात्र सङ्ग्रह गर्न सक्नुभयो र ती पनि केवल पतन महिनाहरूका लागि मात्र। +हामी यस डाटामा अझ गहिराईमा पत्ता लगाउनेछौं। -यस पाठको सम्बन्धित नोटबुकमा हामीले प्रीलोड गरिएको डाटा पुनः हेर्नुहोस्। डाटा प्रीलोड छ र एक प्रारम्भिक स्क्याटरप्लट चार्ट गरिएको छ जुन महिना डाटा देखाउँछ। सायद हामी थप सफाई गरेर डाटाको प्रकृतिबारे थप विवरण प्राप्त गर्न सक्छौं। +अघिल्लो पाठमा, तपाईंले Pandas डाटा फ्रेम सिर्जना गर्नुभयो र मूल डाटासेटको अंशबाट यसलाई भरेर मूल्यलाई बसल अनुसार मानकीकृत गर्नुभयो। तर त्यसले लगभग ४०० डाटापोइन्ट मात्र र पतन महिनाहरूको लागि मात्र सङ्कलन गर्‍यो। -## एक रेखीय रिग्रेसन रेखा +यो पाठ संगै आएको नोटबुकमा प्रीलोड गरिएको डाटा हेरौं। डाटा प्रीलोड गरिएको छ र प्रारम्भिक स्क्याटरप्लट बनाइएको छ जुन महिना डाटालाई देखाउँछ। सायद हामी डाटा अझ सफा गरेर यसको प्रकृतिबारे थोरै थप जानकारी पाउन सक्छौं। -पाठ 1 मा सिकेझैं, लाइनर रिग्रेसन अभ्यासको लक्ष्य भनेको एउटा रेखा प्लट गर्न सक्नु हो जुन: +## एक लाइनियर रिग्रेशन लाइन -- **चरहरूबीच सम्बन्ध देखाउँछ।** चरहरूबीचको सम्बन्ध देखाउने -- **भविष्यवाणी गर्ने।** नयाँ डेटाप्वाइन्ट त्यहि रेखासँग कसरी सम्बन्धित हुन्छ भनी सही भविष्यवाणी गर्ने +பाठ्यक्रम 1 मा सिकेझैं, लाइनियर रिग्रेशनको उद्देश्य यस्तो रेखा प्लट गर्नु हो कि: -यहाँको रेखा निर्माण **कमसेकम-वर्ग रिग्रेसन (Least-Squares Regression)** मा सामान्य छ। “कमसेकम-वर्ग” त्यस्तो प्रक्रिया प्रकट गर्छ जसले मोडेलको कुल त्रुटि न्यूनतम गर्छ। हरेक डाटाप्वाइन्टका लागि, हामी मौलिक बिन्दु र हाम्रो रिग्रेसन रेखाबीचको उभिएको दूरी (अवशिष्ट भनिने) मापन गर्छौं। +- **चरहरूको सम्बन्ध देखाउने**। चरहरू बीचको सम्बन्ध देखाउनुहोस्। +- **भविष्यवाणी गर्ने**। नयाँ डाटापोइन्ट उक्त रेखाको सम्बन्धमा कहाँ पर्छ भनेर सही भविष्यवाणी गर्नुहोस्। -यी अन्तरहरूलाई वर्ग गरेर दुई मुख्य कारणले: +यो प्रायः **लीस्ट-स्क्वेर्स रिग्रेशन** द्वारा गरिन्छ। "लीस्ट-स्क्वेर्स" शब्दले हाम्रो मोडेलमा कुल त्रुटि न्यूनतम गर्ने क्रममा हो। प्रत्येक डाटापोइन्टमा, हामी वास्तविक बिन्दु र हाम्रो रिग्रेशन रेखा बीचको उर्ध्वाधर दूरी (जिसलाई अवशिष्ट भनिन्छ) मापन गर्छौं। -1. **दिशा भन्दा परिमाण:** हामी -5 को त्रुटिलाई +5 जत्तिकै मान्न चाहन्छौं। वर्ग गर्दा सबै मान सकारात्मक हुन्छन्। +हामी यी दूरीहरू वर्ग गर्द्छौं दुई मुख्य कारणले: -2. **आउटलियरहरूलाई दण्ड:** वर्गले ठूला त्रुटि थप trọng दिन्छ, जसले रेखालाई टाढा रहेका पोइन्टहरू नजिक राख्न बाध्य पार्छ। +1. **दिशाको सट्टा परिमाण:** हामी -5 त्रुटिलाई +5 त्रुटि जस्तै व्यवहार गर्न चाहन्छौं। वर्गले सबै मानहरू सकारात्मक बनाउँछ। +2. **आउट्लायरहरूलाई दण्ड:** वर्गले ठूला त्रुटिहरूलाई बढी तौल दिन्छ, जसले रेखालाई फर्छ तिर नजिक राख्न बाध्य पार्छ। -त्यसपछि ती सबै वर्ग मानहरू जम्मा गर्छौं। हाम्रो लक्ष्य भनेको त्यो विशेष रेखा पत्ता लगाउनु हो जहाँ यो अन्तिम जम्मा सबैभन्दा सानो हुन्छ— त्यसैले यसको नाम “कमसेकम-वर्ग” हो। +अनि हामी यी सबै वर्ग मानहरू जोड्छौं। हाम्रो उद्देश्य त्यो विशिष्ट रेखा फेला पार्नु हो जहाँ यो अन्तिम जम्मा सबैभन्दा कम हुन्छ - त्यसैले यसको नाम "लीस्ट-स्क्वेर्स"। -> **🧮 मलाई गणित देखाऊ** -> -> यो रेखालाई, जसलाई _सर्वोत्तम मेल रेखा_ भनिन्छ, [एक समीकरणद्वारा](https://en.wikipedia.org/wiki/Simple_linear_regression) व्यक्त गर्न सकिन्छ: -> +> **🧮 गणित देखाऊ** +> +> यो रेखा, जसलाई _सर्वोत्तम फिट लाइन_ भनिन्छ, [एक समीकरण] (https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त गर्न सकिन्छ: +> > ``` > Y = a + bX > ``` -> -> `X` 'व्याख्यात्मक चल' हो। `Y` 'निर्भर चल' हो। रेखाको ढलान `b` हो र `a` y-अवरोध हो, जुन `X = 0` हुँदा `Y` को मान हो। -> ->![ढलान गणना गर्नुहोस्](../../../../translated_images/ne/slope.f3c9d5910ddbfcf9.webp) -> -> पहिले, ढलान `b` गणना गर्नुहोस्। इन्फोग्राफिक द्वारा [जेन लुपर](https://twitter.com/jenlooper) -> -> अर्को शब्दहरूमा, र हाम्रो पम्पकिन डाटाको मूल प्रश्नलाई सन्दर्भ गर्दै: "महिना अनुसार प्रति बुषेल पम्पकिनको मूल्य पूर्वानुमान गर्न", `X` मूल्यलाई निर्देश गर्दछ र `Y` बिक्री हुने महिनालाई। -> ->![समीकरण पूरा गर्नुहोस्](../../../../translated_images/ne/calculation.a209813050a1ddb1.webp) -> -> Y को मान गणना गर्नुहोस्। यदि तपाईं लगभग $4 तिर्दै हुनुहुन्छ भने, यो अप्रिल हुनुपर्छ! इन्फोग्राफिक [जेन लुपर](https://twitter.com/jenlooper) द्वारा -> -> गणितले रेखाको ढलान देखाउनुपर्छ, जुन y-अवरोधमा निर्भर गर्दछ, जहाँ `X = 0` हुँदा `Y` कता हुन्छ। -> -> तपाईं यी मानहरूको गणनाको विधि [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइटमा हेर्न सक्नुहुन्छ। साथै [यो कमसेकम-वर्ग क्यालकुलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) जानुहोस् र कसरी संख्याहरूले रेखामा प्रभाव पार्छन् हेर्नुहोस्। +> +> `X` लाई 'व्याख्यात्मक चर' भनिन्छ। `Y` लाई 'निर्भर चर' भनिन्छ। रेखाको ढलान `b` हो र `a` y-अवरोध हो, जुन `X = 0` हुँदा `Y` को मान हो। +> +>![ढलान गणना गर्नुहोस्](../../../../translated_images/ne/slope.f3c9d5910ddbfcf9.webp) +> +> पहिले, ढलान `b` गणना गर्नुहोस्। इनफोग्राफिक द्वारा [जन लुपर](https://twitter.com/jenlooper) +> +> अर्को शब्दमा, हाम्रो कद्दू डाटाको मूल प्रश्नमा सन्दर्भ गर्दै: "महिना अनुसार प्रति बसल कद्दूको मूल्य भविष्यवाणी गर्नुहोस्", यहाँ `X` मूल्य र `Y` बिक्रीको महिना हो। +> +>![समीकरण पूरा गर्नुहोस्](../../../../translated_images/ne/calculation.a209813050a1ddb1.webp) +> +> `Y` को मान गणना गर्नुहोस्। यदि तपाईं लगभग $4 तिर्नुहुन्छ भने, त्यो अप्रिल हुनुपर्छ! इनफोग्राफिक द्वारा [जन लुपर](https://twitter.com/jenlooper) +> +> रेखा गणनाले ढलान देखाउनु पर्छ, जसले अवरोधमा पनि निर्भर गर्दछ, अर्थात् `X = 0` हुँदा `Y` कहाँ हुन्छ। +> +> यी मानहरूको गणनाको विधि तपाईं [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइटमा हेर्न सक्नुहुन्छ। साथै, [यो लीस्ट-स्क्वेर्स क्याल्कुलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) मा गएर कसरी मानहरूले रेखालाई असर गर्छन् हेर्न सक्नुहुन्छ। -## सहसम्बन्ध +## सहसंबन्ध -अझ एक शब्द बुझ्नुपर्छ जो हो **सहसम्बन्ध गुणांक** दिइएको X र Y चरहरू बीच। स्क्याटरप्लट प्रयोग गरी यो गुणांक छिटो दृश्य गर्न सकिन्छ। यदि डाटाप्वाइन्टहरू सधैं एक सिधा रेखामा छरिएका छन् भने उच्च सहसम्बन्ध हुन्छ, तर यदि डाटाप्वाइन्टहरू X र Y को बीचमा सबै ठाउँ छरिएका छन् भने कम सहसम्बन्ध हुन्छ। +अर्को बुझ्न पर्ने शब्द हो **सहसंबन्ध गुणांक (Correlation Coefficient)** दिइएको X र Y चरहरू बीच। स्क्याटरप्लट प्रयोग गरेर तपाईं यो गुणांकलाई छिटो भिजुअलाइज गर्न सक्नुहुन्छ। यदि डाटापोइन्टहरू सिधा रेखामा फैलिएका छन् भने उच्च सहसंबन्ध हुन्छ, तर यदि डाटापोइन्टहरू X र Y बीच जहिले तहाँभर छरिदा तल घटेको हुन्छ। -एक राम्रो रिग्रेसन मोडेल त्यो हो जसको सहसम्बन्ध गुणांक उच्च हुन्छ (0 नजिक भन्दा 1 नजिक) कमसेकम-वर्ग रिग्रेसन विधि प्रयोग गरी र रिग्रेसन रेखाको साथ। +एक राम्रो लाइनियर रिग्रेशन मोडेलमा उच्च (0 भन्दा 1 नजिक) सहसंबन्ध गुणांक हुने गर्छ, जसले लीस्ट-स्क्वेर्स मेथडको साथ रिग्रेशन लाइन प्रयोग गर्छ। -✅ यस पाठसँग सम्बन्धित नोटबुक चलाउनुहोस् र महिना र मूल्य बीचको स्क्याटरप्लट हेर्नुहोस्। यो डाटा पम्पकिन बिक्रीका लागि महिना र मूल्य बीच उच्च वा कम सहसम्बन्ध भएको देखिन्छ? तपाईंको स्क्याटरप्लट दृश्य व्याख्याका अनुसार। यदि तपाईं `Month` को सट्टा अधिक सूक्ष्म मापन प्रयोग गर्नु भयो भने, उदाहरणको लागि *वर्षको दिन* (वर्षको सुरुबाट कति दिन भयो), के यो फरक पर्छ? +✅ यस पाठसँगै आएको नोटबुक चलाउनुहोस् र महिना र मूल्यको स्क्याटरप्लट हेर्नुहोस्। तपाईंको दृश्य व्याख्यान अनुसार कद्दू बिक्रीको लागि महिना र मूल्यबीच सहसंबन्ध उच्च हो कि कम? यदि तपाईंले `महिना` सट्टा थप सूक्ष्म मापन (उदाहरणका लागि वर्षको दिन) प्रयोग गर्नुभयो भने के परिवर्तन हुन्छ? -तलको कोडमा, हामीले डाटा सफा गरिसकेको र `new_pumpkins` नाम गरिएको डाटा फ्रेम प्राप्त गरेको मान्नेछौं, जुन यस्तै छ: +तलको कोडमा, हामी मान्छौं कि डाटा सफा गरेको छौं र `new_pumpkins` नामक डाटा फ्रेम प्राप्त छ, जस्तै निम्न: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -99,38 +101,38 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> डेटा सफा गर्ने कोड [`notebook.ipynb`](notebook.ipynb) मा उपलब्ध छ। हामीले अघिल्लो पाठमा जस्तै सफाई चरणहरू सम्पन्न गरेका छौं र निम्न अभिव्यक्तिले `DayOfYear` स्तम्भ गणना गरेका छौं: +> डाटा सफा गर्ने कोड [`notebook.ipynb`](notebook.ipynb) मा उपलब्ध छ। हामीले अघिल्लो पाठमा जस्तै सफाइ गरेका छौं, र `DayOfYear` स्तम्भ गणना गर्न तलको अभिव्यक्ति प्रयोग गरेका छौं: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -अब जब तपाईंले लाइनर रिग्रेसन पछिको गणित बुझ्नुभयो, हामी रिग्रेसन मोडेल बनाउन जाँदैछौं जसले पम्पकिन खरिद गर्ने प्याकेजहरू मध्ये कुनमा सबैभन्दा राम्रो मूल्य हुनेछ अनुमान गर्न सघाउ पुर्याउँछ। कसैले छुट्टीको पम्पकिन प्याचको लागि पम्पकिन किन्न खोज्दा यो जानकारी उपयोगी हुनेछ किनभने यसले खरिदको अनुकूलन गर्न मद्दत गर्नेछ। +अब, तपाईंले लाइनियर रिग्रेशनको पछाडि गणित बुझिसक्नुभएपछि, हामी रिग्रेशन मोडेल सिर्जना गर्नेछौं र हेर्नेछौं कि कुन कद्दू प्याकेजको मूल्य सबैभन्दा राम्रो भविष्यवाणी गर्न सक्छौं कि सक्दैनौं। कसैले पनि छुट्टै कद्दू प्याचका लागि कद्दू खरीद गर्दा यो जानकारी आफ्नो खरिदलाई अनुकूल बनाउन चाहनेछ। -## सहसम्बन्ध खोज्दै +## सहसंबन्ध खोज्दै [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 माथिको तस्वीरमा क्लिक गरी सहसम्बन्धको छोटो भिडियो हेर्नुहोस्। +> 🎥 माथिको छवि क्लिक गरेर सहसंबन्धको छोटो भिडियो अवलोकन हेर्नुहोस्। -अघिल्लो पाठबाट तपाईंले देख्नु भएको होला कि विभिन्न महिनाहरूको औसत मूल्य यस्तो देखिन्छ: +अघिल्लो पाठबाट तपाईंले देख्नुभएको होला कि विभिन्न महिनाहरूको औसत मूल्य यसरी देखिन्छ: Average price by month -यसले के संकेत गर्छ भने केही सहसम्बन्ध हुनुपर्छ, र हामी रिग्रेसन मोडेल ट्रेन्ड गरेर `Month` र `Price` मध्ये वा `DayOfYear` र `Price` बीच सम्बन्ध अनुमान गर्न सक्छौं। तलको स्क्याटरप्लटले पछि चित्रण गरेको सम्बन्ध देखाउँछ: +यसले केहि सहसंबन्ध हुनुपर्ने संकेत दिन्छ, र हामी `Month` र `Price` बीच, वा `DayOfYear` र `Price` बीचको सम्बन्ध भविष्यवाणी गर्न लाइनियर रिग्रेशन मोडेल ट्रेन्ड गर्ने प्रयास गर्न सक्छौं। यहाँ तलको सम्बन्ध देखाउने स्क्याटर प्लट छ: Scatter plot of Price vs. Day of Year -आउनुस् `corr` function प्रयोग गरी सहसम्बन्ध छ कि छैन जाँचौं: +`corr` फंक्शन प्रयोग गरेर सहसंबन्ध छ कि छैन जाँचौं: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -`Month` प्रति सहसम्बन्ध प्राय: -0.15 र `DayOfMonth` प्रति -0.17 जति सानो देखिन्छ, तर अर्को महत्वपूर्ण सम्बन्ध हुन सक्छ। फरक पम्पकिन किसिमका फरक मूल्य क्लस्टरहरू जस्तै देखिन्छ। यस अनुमान पुष्टि गर्न, हामी प्रत्येक पम्पकिन किसिम अलग रंगमा प्लट गर्नेछौं। `scatter` फङ्क्शनमा `ax` प्यारामिटर दिँदा सबै पोइन्टहरू एउटै ग्राफमा देखाउन सकिन्छ: +तपाईं देख्न सक्नुहुन्छ सहसंबन्ध सानो छ, `Month` अनुसार -0.15 र `DayOfYear` अनुसार -0.17, तर अर्को महत्त्वपूर्ण सम्बन्ध हुन सक्छ। देखिन्छ मूल्यहरू विभिन्न कद्दू प्रजातिहरूसँग सम्बन्धित विभिन्न क्लस्टरहरूमा छन्। यो प्रमाणीकरणका लागि, प्रत्येक कद्दू वर्गलाई फरक रंगमा प्लट गरौं। `scatter` plotting function मा `ax` प्यारामिटर पास गरेर हामी सबै पोइन्टहरू एउटै ग्राफमा प्लट गर्न सक्छौं: ```python ax=None @@ -140,43 +142,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -हाम्रो अन्वेषणले देखाउँछ कि किसिमले मूल्यमा महिना भन्दा बढी प्रभाव पार्छ। हामी यो बार ग्राफबाट देख्न सक्छौं: +हाम्रो अनुसन्धानले देखाउँछ कि प्रजातिले बिक्री मितिको तुलनामा मूल्यमा बढी प्रभाव पार्छ। हामी बार ग्राफबाट यो देख्न सक्छौं: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +Bar graph of price vs variety -अहिले हामी केवल एक किसिम 'पाइ प्रकार' मा केन्द्रित हुँ र मूल्यमा मितिले कस्तो प्रभाव पार्छ जाँचौं: +अहिले हामी केवल 'pie type' कद्दू प्रजातिमा ध्यान केन्द्रित गरौं, र मितिले मूल्यमा कस्तो प्रभाव पार्छ हेर्नुहोस्: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` - -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -यदि अब हामी `corr` फङ्क्शन प्रयोग गरी `Price` र `DayOfYear` को सहसम्बन्ध गणना गर्यौं भने, लगभग `-0.27` पाउँछौं - जसले बताउँछ कि पूर्वानुमान मोडेल प्रशिक्षण गर्नु उचित हुन्छ। +यदि हामी `Price` र `DayOfYear` बीचको सहसंबन्ध `corr` बाट गणना गर्छौं भने, लगभग `-0.27` पाइन्छ - जुन अर्थ हुन सक्छ कि पूर्वानुमान मोडेल ट्रेनिङ गर्नु उपयुक्त हुन्छ। -> लाइनर रिग्रेसन मोडेल प्रशिक्षण गर्नु अघि, सुनिश्चित गर्नुहोस् कि डाटा सफा छ। लाइनर रिग्रेसन खाली मानहरू भएको डाटामा राम्रो काम गर्दैन, त्यसैले सबै खाली थानहरू हटाउन उपयुक्त हुन्छ: +> लाइनियर रिग्रेशन मोडेल ट्रेन गर्नु अघि, डाटा सफा हुनु जरूरी छ। लाइनियर रिग्रेशन हराइरहेको मानहरूसँग राम्रो काम गर्दैन, त्यसैले सबै खाली सेलहरू हटाउनु ठीक हुन्छ: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -अर्को उपाय हो ती खाली मानहरूलाई सम्बन्धित स्तम्भको माध्य मानले भर्नु। +अर्को उपाय भनेको त्यो खाली मानहरूलाई सम्बद्ध स्तम्भको औसत मानले भर्नु हो। -## साधारण लाइनर रिग्रेसन +## सरल लाइनियर रिग्रेशन [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 माथिको तस्वीरमा क्लिक गरी लाइनर र पोलिनोमियल रिग्रेसनको छोटो भिडियो हेर्नुहोस्। +> 🎥 माथिको छवि क्लिक गरेर लाइनियर र बहुपद रिग्रेशनको छोटो भिडियो अवलोकन हेर्नुहोस्। -हामी हाम्रो लाइनर रिग्रेसन मोडेल तयार पार्न **Scikit-learn** लाइब्रेरी प्रयोग गर्नेछौं। +हामी हाम्रो लाइनियर रिग्रेशन मोडेल प्रशिक्षित गर्न **Scikit-learn** लाइब्रेरी प्रयोग गर्नेछौं। ```python from sklearn.linear_model import LinearRegression @@ -184,31 +185,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -हामी इनपुट मानहरू (फीचरहरू) र अपेक्षित आउटपुट (लेबल) अलग-अलग नम्पाइ एर्रेहरूमा छुट्याएर सुरु गर्छौं: +हामी इनपुट (विशेषताहरू) र अपेक्षित आउटपुट (लेबल) लाई अलग-अलग numpy arrays मा छुट्याएर शुरू गर्नेछौं: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> नोट गर्नुहोस्, हामीलाई लाइनर रिग्रेसन प्याकेजले सही बुझोस् भनेर इनपुट डाटामा `reshape` गर्नुपर्‍यो। लाइनर रिग्रेसनले २D एर्रे इनपुट अपेक्षा गर्छ, जहाँ एर्रेको प्रत्येक पंक्ति इनपुट फीचरहरूको वेक्टर हुन्छ। हाम्रो केसमा, हाम्रो केवल एक इनपुट भएकोले N×1 आकारको एर्रे चाहिन्छ, जहाँ N डाटासेटको आकार हो। +> ध्यान दिनुहोस्, हामीले इनपुट डाटामा `reshape` गर्नु परेको छ ताकि लाइनियर रिग्रेशन प्याकेजले यसलाई सही रूपमा बुझोस्। लाइनियर रिग्रेशनले 2D-array इनपुट चाहिन्छ, जहाँ प्रत्येक पङ्क्ति इनपुट विशेषता भेक्टर हुन्छ। हाम्रो अवस्थामा एक मात्र इनपुट हुनाले, N×1 आकारको array चाहिन्छ, जहाँ N डाटासेट साइज हो। -त्यसपछि, हामी डेटा ट्रेन र टेस्ट सेटमा विभाजन गर्नुपर्छ ताकि प्रशिक्षण पछि मोडेललाई मान्यकरण गर्न सकौं: +त्यसपछि, हामी डाटालाई ट्रेन र टेस्ट डाटासेटमा विभाजित गर्नुपर्छ, ताकि हामी मोडेललाई ट्रेन गरेपछि मान्यता गर्न सकौं: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -अन्तमा, लाइनर रिग्रेसन मोडेलको वास्तविक प्रशिक्षण केवल दुई लाइन कोडले हुन्छ। हामी `LinearRegression` वस्तु परिभाषित गर्छौं, र `fit` विधि प्रयोग गरी डेटा फिट गर्छौं: +अन्त्यमा, लाइनियर रिग्रेशन मोडेललाई प्रशिक्षित गर्न दुई लाइन कोड मात्र लग्छ। हामीले `LinearRegression` वस्तु define गर्छौं, र `fit` मेथड प्रयोग गरी डाटामा मोडेललाई फिट गर्छौं: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` वस्तु `fit` गरेपछि रिग्रेसनका सबै गुणांकहरू समावेश गरेको हुन्छ, जुन `.coef_` सम्पत्तिको प्रयोग गरेर पहुँच गर्न सकिन्छ। हाम्रो मामलामा, एक मात्र गुणांक छ, जुन लगभग `-0.017` हुनुपर्छ। यसको अर्थ मूल्यहरू समयसँगै थोरै घट्ने देखिन्छ, तर धेरै होइन, दिनको २ सेन्ट वरिपरि। हामी रिग्रेसनको Y-अक्षसँगको अन्तरफलक बिन्दुलाई `lin_reg.intercept_` प्रयोग गरेर पहुँच गर्न सक्छौं - हाम्रो मामलामा यो लगभग `21` हुनेछ, जुन वर्षको सुरुको मूल्य सङ्केत गर्दछ। +`fit` गरेपछि `LinearRegression` वस्तुमा रेग्रेसनका सबै गुणांकहरू हुन्छन्, जुन `.coef_` सम्पत्तिबाट पहुँच गर्न सकिन्छ। हाम्रो केसमा, त्यहाँ एक मात्र गुणांक छ, जुन करिब `-0.017` हुनुपर्छ। यसको अर्थ मूल्यहरू समयसँग केहि घट्ने देखिन्छ, तर धेरै होइन, करिब २ सेन्ट प्रति दिन। हामी रेग्रेसनको Y-अक्षसँगको अतिक्रमण बिन्दु `lin_reg.intercept_` बाट पनि पहुँच गर्न सक्छौं — यो हाम्रो केसमा करिब `21` हुन्छ, जसले वर्षको सुरुवातमा मूल्य जनाउँछ। -हाम्रो मोडेल कति सही छ भनेर हेर्नको लागि, हामी टेस्ट डेटासेटमा मूल्यहरू पूर्वानुमान गर्न सक्छौं, र त्यस पछि हाम्रा पूर्वानुमानहरू अपेक्षित मानहरूसँग कति नजिक छन् मापन गर्न सक्छौं। यसलाई root mean square error (RMSE) मेट्रिक प्रयोग गरेर गर्न सकिन्छ, जुन अपेक्षित र पूर्वानुमानित मानहरूबीच सबै वर्गान्तरहरूको औसतको वर्गमूल हो। +हाम्रो मोडेल कति सही छ हेर्नका लागि, हामी परीक्षण डेटासेटमा मूल्यहरू पूर्वानुमान गर्न सक्छौं, र त्यसपछि हाम्रो पूर्वानुमानहरू अपेक्षित मानहरूसँग कति नजिक छन् मापन गर्न सक्छौं। यो रूट मीन स्क्वायर त्रुटि (RMSE) मेट्रिक्स प्रयोग गरेर गर्न सकिन्छ, जुन अपेक्षित र पूर्वानुमान मानबीच सबै वर्गीकृत फरकहरूको मीनको मूलांक हो। ```python pred = lin_reg.predict(X_test) @@ -217,15 +218,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -हाम्रो त्रुटि लगभग २ पोइन्ट्स छ, जुन ~१७% हो। धेरै राम्रो छैन। मोडेल गुणस्तरको अर्को सूचकांक **coefficient of determination** हो, जुन यसरी प्राप्त गर्न सकिन्छ: +हाम्रो त्रुटि करिब २ अङ्क जस्तो देखिन्छ, जुन ~१७% हो। धेरै राम्रो छैन। मोडेल गुणस्तरको अर्को सूचक **निर्धारण गुणांक** हो, जसलाई यसरी प्राप्त गर्न सकिन्छ: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - यदि मान ० छ भने, यसको अर्थ मोडेल इनपुट डाटालाई ध्यानमा राख्दैन, र सबैभन्दा निकृष्ट रेखीय पूर्वानुमायकको रूपमा काम गर्छ, जुन केवल परिणामको औसत मान हो। मान १ हुनुको अर्थ हामी सबै अपेक्षित आउटपुटहरू पूर्ण रूपमा पूर्वानुमान गर्न सक्छौं। हाम्रो मामलामा गुणांक लगभग ०.०६ छ, जुन धेरै कम हो। + यदि मान ० छ भने यसको अर्थ मोडेलले इनपुट डेटालाई ध्यानमा लिँदैन, र *सबैभन्दा खराब रेखीय पूर्वानुमानकर्ता* जस्तै व्यवहार गर्छ, जुन केवल नतिजाको माध्य मान हो। मान १ भनेको हामी सबै अपेक्षित नतिजाहरू पूर्णतः पूर्वानुमान गर्न सक्छौं भन्ने हो। हाम्रो केसमा, गुणांक करिब ०.०६ छ, जुन निकै कम हो। -हामी टेस्ट डाटालाई रिग्रेसन लाइनसँग सँगै प्लट गरेर हाम्रो मामलामा रिग्रेसन कसरि काम गर्छ हेर्न सक्छौं: +हामी परीक्षण डेटालाई रेग्रेसन लाइनसँग सँगै प्लट गरेर हाम्रो केसमा रेग्रेसन कस्तो काम गर्छ भन्ने कुरा राम्रोसँग देख्न सक्छौं: ```python plt.scatter(X_test,y_test) @@ -234,19 +235,19 @@ plt.plot(X_test,pred) Linear regression -## Polynomial Regression +## बहुपद रेग्रेसन -अर्को प्रकारको Linear Regression हो Polynomial Regression। कहिलेकाहीँ भेरिएबलहरूबीच रेखीय सम्बन्ध हुन्छ - जस्तै भोल्युम अनुसार कद्दु बढ्यो भने मूल्य पनि बढ्छ - तर कहिलेकाहीँ यी सम्बन्धहरू समतल वा सिधा रेखाको रूपमा प्लट गर्न सकिँदैन। +रेखीय रेग्रेसनको अर्को प्रकार हो बहुपद रेग्रेसन। कहिलेकाहीँ चरहरू बीच रेखीय सम्बन्ध हुन्छ — भोल्युममा ठूलो कद्दु्दा, मूल्य उच्च हुन्छ — तर कहिलेकाहीँ यी सम्बन्धहरुलाई समतल वा सिधा रेखाले चित्रण गर्न सम्भव हुँदैन। -✅ यहाँ [अझ केही उदाहरणहरू](https://online.stat.psu.edu/stat501/lesson/9/9.8) छन् जुन Polynomial Regression प्रयोग गर्न सकिन्छ +✅ यहाँ [अझ केही उदाहरणहरू](https://online.stat.psu.edu/stat501/lesson/9/9.8) छन् जसमा बहुपद रेग्रेसन प्रयोग गर्न सकिन्छ। -मेरो तारिख र मूल्यबीचको सम्बन्ध फेरि हेर्नुहोस्। के यो scatterplot आवश्यक रूपमा सिधा रेखाले विश्लेषण गर्नुपर्छ भन्ने देखिन्छ? मूल्यहरू त कहिलेकाहीँ घटबढ हुन सक्दैन? यस अवस्थामा, तपाईं polynomial regression प्रयास गर्न सक्नुहुन्छ। +मिति र मूल्य बीचको सम्बन्धलाई अर्को पटक हेर्नुहोस्। के यो स्क्याटरप्लट अनिवार्य रूपमा सिधा रेखाबाट विश्लेषण गर्नुपर्छ जस्तो लाग्छ? के मूल्यहरू उतारचढाव हुन सक्दैन? यस्तो अवस्थामा बहुपद रेग्रेसन प्रयोग गर्न सकिन्छ। -✅ Polynomial गणितीय अभिव्यक्तिहरू हुन् जसमा एक वा बढी भेरिएबल र गुणांकहरू हुन सक्छन् +✅ बहुपदहरू गणितीय अभिव्यक्तिहरू हुन् जसले एक वा बढी चरहरू र गुणांकहरू समावेश गर्न सक्छन्। -Polynomial regression ले गैररेखीय डाटालाई राम्रोसँग फिट गर्न घुमाउरो रेखा बनाउँछ। हाम्रो मामलामा, यदि हामी `DayOfYear` को वर्गीकरण भेरिएबलहरू इनपुट डाटामा समावेश गर्छौं भने, हामीले एक पैराबोलिक घुमाउरो फिट गर्न सक्छौं जसको न्यूनतम वर्षभित्र कुनै निश्चित बिन्दुमा हुनेछ। +बहुपद रेग्रेसनले अमन पर्ने डेटा फिट गर्न वक्र रेखा सिर्जना गर्छ। हाम्रो केसमा, यदि हामीले इनपुट डेटा मा वर्ग गरिएको `DayOfYear` भेरिएबल समावेश गर्यौं भने, हामीले वर्षभित्र एक निश्चित बिन्दुमा न्यूनतम हुने परवलिक वक्र फिट गर्न सक्नेछौं। -Scikit-learn मा विभिन्न डेटा प्रशोधन चरणहरूलाई सँगै जोड्न सहयोग गर्ने [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) समावेश छ। एक **pipeline** लाई **estimators** को श्रृंखला भनिन्छ। हाम्रो मामलामा, हामी एउटा pipeline बनाउनेछौं जुन पहिले polynomial features मोडेलमा थप्छ र त्यसपछि रिग्रेसन प्रशिक्षित गर्छ: +Scikit-learnमा उपयोगी [पाइपलाइन API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) छ जसले डेटा प्रक्रिया गर्ने विभिन्न चरणहरू संयुक्त गर्न मद्दत गर्छ। एक **पाइपलाइन** भनेको **एस्टीमेटरहरू** को श्रृंखला हो। हाम्रो केसमा, हामी एक पाइपलाइन बनाउनेछौं जसले पहिले हाम्रो मोडेलमा बहुपद सुविधाहरू थप्छ, र त्यसपछि रेग्रेसन तालिम दिन्छ: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +258,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` प्रयोग गर्दा हामी इनपुट डाटाबाट सबै दोस्रो डिग्रीका polynomial समावेश गर्नेछौं। हाम्रो मामलामा यसको अर्थ केवल `DayOfYear`2 हुनेछ, तर यदि दुई इनपुट भेरिएबलहरू X र Y छन् भने यसले X2, XY र Y2 जोड्नेछ। हामी उच्च डिग्री polynomial पनि प्रयोग गर्न सक्छौं यदि आवश्यक छ भने। +`PolynomialFeatures(2)` प्रयोग गर्दा हामीले इनपुट डाटाबाट सबै दोस्रो-डिग्री बहुपदहरू समावेश गर्नेछौं। हाम्रो केसमा यसको अर्थ केवल `DayOfYear`2 हुनेछ, तर दुई इनपुट भेरिएबल X र Y भएमा, यसले X2, XY र Y2 थप्नेछ। हामी उच्च डिग्रीका बहुपदहरू पनि प्रयोग गर्न सक्छौं यदि चाहनु भयो भने। + +पाइपलाइनहरूलाई मूल `LinearRegression` वस्तु जस्तै प्रयोग गर्न सकिन्छ, जसले हामीलाई पाइपलाइन `fit` गर्न र त्यसपछि `predict` प्रयोग गरेर पूर्वानुमान परिणाम प्राप्त गर्न दिन्छ: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +सम चक्रिको वक्र प्लट गर्न, हामी `np.linspace` प्रयोग गर्छौं जसले इनपुट मानहरू को समान दूरीको दायरा बनाउँछ, सिधै अव्यवस्थित परीक्षण डेटामा प्लट नगरि (जसले जिगज्याग रेखा उत्पादन गर्न सक्छ): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -पाइपलाइनहरूलाई `LinearRegression` वस्तु जस्तै नै प्रयोग गर्न सकिन्छ, अर्थात् हामी pipeline लाई `fit` गर्न सक्छौं र त्यसपछि `predict` प्रयोग गरी पूर्वानुमान नतिजा प्राप्त गर्न सक्छौं। यहाँ टेस्ट डेटा र अनुमानित घुमाउरो देखाइएको छ: +यहाँ परीक्षण डेटा र अनुमानित वक्र देखाउने ग्राफ छ: Polynomial regression -Polynomial Regression प्रयोग गर्दा, हामी अलिकति कम MSE र उच्च गत्यात्मक गुणांक (determination) पाउन सक्छौं, तर धेरै फरक पर्दैन। हामीले अन्य विशेषताहरूलाई पनि ध्यानमा लिनुपर्छ! +बहुपद रेग्रेसन प्रयोग गर्दा, हामीले अलि कम RMSE र बढी निर्धारण पाउन सक्छौं, तर उल्लेखनीय रूपमा होइन। हामीले अन्य सुविधाहरूलाई पनि ध्यान दिनु आवश्यक छ! -> तपाईं देख्न सक्नुहुन्छ कि न्यूनतम कद्दुको मूल्यहरू लगभग Halloween को आसपास देखिन्छ। तपाईं यसलाई कसरी व्याख्या गर्नुहुन्छ? +> तपाईंले देख्न सक्नुहुन्छ कि न्यूनतम कद्दु मूल्यहरू प्रायः हेलोविन नजिक देखिन्छन्। तपाईं यसलाई कसरी व्याख्या गर्नुहुन्छ? -🎃 बधाई छ, तपाईं एउटा यस्तो मोडेल सिर्जना गर्नुभएको छ जसले पाई कद्दुहरूको मूल्य पूर्वानुमान गर्न मद्दत गर्न सक्छ। तपाईं सजिलै सबै कद्दु प्रजातिहरूका लागि एउटै तरिका पुन: गर्न सक्नुहुन्छ, तर त्यो थोरै अलमलिलो हुनेछ। अब हामी कसरी हाम्रो मोडेलमा कद्दुको प्रजाति ध्यानमा राख्ने जान्न छौं! +🎃 बधाई छ, तपाईंले एउटा मोडेल सिर्जना गर्नुभयो जुन पाई कद्दुको मूल्य पूर्वानुमान गर्न मद्दत गर्न सक्छ। तपाईं सम्भवतः सबै कद्दु प्रकारहरूका लागि यो प्रक्रिया दोहोर्याउन सक्नुहुन्छ, तर त्यो थोरै श्रोतलाग्दो हुनेछ। अब सिकौँ हामीले हाम्रो मोडेलमा कद्दु विविधतालाई कसरी ध्यानमा राख्ने। -## Categorical Features +## वर्गीकृत सुविधाहरू -आदर्श संसारमा, हामी एउटै मोडेलले विभिन्न कद्दु प्रजातिहरूका मूल्य पूर्वानुमान गर्न सक्न चाहन्छौं। यद्यपि, `Variety` स्तम्भ `Month` जस्ता स्तम्भहरूभन्दा फरक छ किनभने यसमा गैर-संख्यात्मक मानहरू छन्। यस्तो स्तम्भहरूलाई **categorical** भनिन्छ। +आदर्श संसारमा, हामी एउटै मोडेल प्रयोग गरी विभिन्न कद्दु किसिमहरूका मूल्यहरू पूर्वानुमान गर्न चाहन्छौं। तर, `Variety` स्तम्भ केही फरक हुन्छ `Month` जस्ता स्तम्भहरूबाट किनकि यसमा सङ्ख्यात्मक नभएको मानहरू हुन्छन्। यस्ता स्तम्भहरूलाई **वर्गीकृत (categorical)** भन्दछ। [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 माथिको तस्वीरमा क्लिक गरेर क्याटेगोरिकल विशेषताहरू प्रयोग गर्ने छोटकरी भिडियो हेर्नुहोस्। +> 🎥 माथिको तस्वीर क्लिक गरेर वर्गीकृत सुविधाहरूको प्रयोग सम्बन्धी छोटो भिडियो अवलोकन हेर्नुहोस्। -यहाँ तपाईं देख्न सक्नुहुन्छ कि औसत मूल्य प्रजातिमा कसरि निर्भर छ: +यहाँ तपाईंले विविधतामा आधारित औसत मूल्य हेर्न सक्नुहुन्छ: Average price by variety -प्रजातिलाई ध्यानमा राख्न, हामीले पहिले यसलाई सङ्ख्यात्मक रूपान्तरण (encoding) गर्नुपर्छ। यसका केही तरिकाहरू छन्: +विविधतालाई ध्यानमा राख्न, हामीले पहिले यसलाई सङ्ख्यात्मक रूपमा रूपान्तरण गर्नुपर्छ, वा **एन्कोड** गर्नुपर्छ। यसका लागि विभिन्न तरिकाहरू छन्: -* सरल **सङ्ख्यात्मक इन्कोडिङ** ले विभिन्न प्रजातिहरूको तालिका बनाउँछ र त्यसपछि प्रजातिको नामलाई तालिकामा रहेको अनुक्रमणिका (index) द्वारा प्रतिस्थापन गर्छ। यो रेखीय रिग्रेसनको लागि राम्रो विचार होइन, किनभने रिग्रेसनले अनुक्रमणिकाको वास्तविक संख्यात्मक मानलाई लिन्छ र यसको गुणांकसँग परिणाममा जोड्छ। हाम्रो मामलामा, अनुक्रमणिका र मूल्य बीचको सम्बन्ध स्पष्ट रूपमा गैर-रेखीय छ, भले अनुक्रमणिकाहरू विशेष तरिकाले क्रमबद्ध गरे पनि। -* **One-hot encoding** ले `Variety` स्तम्भलाई चार फरक स्तम्भहरूद्वारा प्रतिस्थापन गर्छ, प्रत्येक प्रजातिका लागि एक स्तम्भ। प्रत्येक स्तम्भमा `1` हुन्छ यदि सो पङ्क्ति त्यो प्रजातिको हो भने र `0` अन्यथा। यसको मतलब रेखीय रिग्रेसनमा चार गुणांकहरू हुनेछन्, प्रत्येक कद्दु प्रजातिको लागि, जुन त्यो विशेष प्रजातिको लागि "सुरुवाती मूल्य" (वा "अतिरिक्त मूल्य") को जिम्मेवार हुनेछ। +* साधारण **सङ्ख्यात्मक एन्कोडिङ** ले विभिन्न किसिमहरूको तालिका बनाउँछ र त्यसपछि विविधता नामलाई तालिकाको अनुक्रमांकले रिप्लेस गर्छ। योlinear regression को लागि उत्तम विकल्प होइन किनकि linear regression ले अनुक्रमांकको वास्तविक सङ्ख्यात्मक मान लिन्छ र नतिजामा कुनै गुणांकले गुण गर्नेछ। हाम्रो केसमा अनुक्रमांक र मूल्यका बीच सम्बन्ध स्पष्ट गैर-रेखीय छ, चाहे हामी अनुक्रमांकहरूलाई कुनै विशेष तरिकाले क्रमबद्ध गरौं। +* **वन-हट एन्कोडिङ** ले `Variety` स्तम्भलाई ४ फरक स्तम्भहरूमा रूपान्तरण गर्छ, प्रत्येक किसिमको लागि एउटा स्तम्भ। प्रत्येक स्तम्भमा १ हुन्छ यदि उक्त पङ्क्ति त्यस किसिमको हो, नत्र ०। यसले linear regression मा चार वटा गुणांक हुनेछ, प्रत्येक कद्दु विविधताको लागि, जुन त्यो विविधताका "शुरुवाती मूल्य" (वा "अतिरिक्त मूल्य") को जिम्मेवारी लिन्छ। -तलको कोडले देखाउँछ कसरी एक प्रजातिलाई one-hot encode गर्न सकिन्छ: +तलको कोडले हामीलाई वन-हट एन्कोड कसरी गर्ने देखाउँछ: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +326,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -रिग्रेसनलाई one-hot encoded प्रजातिको रूपमा इनपुट प्रयोग गरी प्रशिक्षित गर्न, हामीलाई `X` र `y` लाई ठीकसँग आरम्भ गर्नुपर्छ: +वन-हट एन्कोड गरिएको विविधतालाई इनपुटका रूपमा लिएर linear regression तालिम दिन, हामीले `X` र `y` डाटा सही तरिकाले प्रारम्भ गर्नुपर्छ: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -बाकी कोड तेस्तै छ जुन हामीले माथि Linear Regression प्रशिक्षित गर्न प्रयोग गरेका थियौं। यदि तपाईं यसलाई प्रयास गर्नुहुनेछ भने, तपाईं देख्नु हुनेछ कि माध्य वर्गमूल त्रुटि लगभग उस्तै छ, तर हामीलाई धेरै उच्च determination गुणांक (~७७%) प्राप्त हुन्छ। अझ सटीक पूर्वानुमानहरूका लागि, हामी अन्य categorical विशेषताहरू पनि र संख्यात्मक विशेषताहरू जस्तै `Month` वा `DayOfYear` पनि ध्यानमा लिन सक्छौं। ठूलो फिचर एर्रे बनाउन `join` प्रयोग गर्न सकिन्छ: +बाकी कोड पहिले प्रयोग गरेको linear regression तालिम जस्तै नै हो। यदि तपाईं यो प्रयास गर्नु भयो भने, तपाईंले देख्नुहुनेछ कि मीन स्क्वायर त्रुटि लगभग समान छ, तर हामी धेरै उच्च निर्धारण गुणांक (~७७%) प्राप्त गर्छौं। अझै बढी सही भविष्यवाणीका लागि, हामीले अन्य वर्गीकृत सुविधाहरू र सङ्ख्यात्मक सुविधाहरू पनि ध्यानमा लिन सक्दछौं, जस्तै `Month` वा `DayOfYear`। सबै सुविधाहरू एउटै ठूलो एरेमा ल्याउन `join` प्रयोग गर्न सकिन्छ: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,62 +343,62 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -यहाँ हामी `City` र `Package` प्रकार पनि ध्यानमा राख्छौं, जसले हामीलाई MSE २.८४ (१०%) र determination ०.९४ दिन्छ! +यहाँ हामीले `City` र `Package` प्रकार पनि ध्यानमा लिएर RMSE 2.84 (10.5%) र निर्धारण 0.94 पाएका छौं। -## सबैलाई एक साथ राख्दै +## सबै कुरा सँगै राख्दै -सबैभन्दा राम्रो मोडेल बनाउन, हामी माथि दिइएको नमूनाको मिश्रित (one-hot encoded categorical + numeric) डाटालाई Polynomial Regression सँग प्रयोग गर्न सक्छौं। यहाँ तपाईंको सुविधा को लागि पूरा कोड छ: +सबैभन्दा राम्रो मोडेल बनाउन हामी माथि देखाएको संयुक्त (वन-हट एन्कोड गरिएको वर्गीकृत + सङ्ख्यात्मक) डेटा बहुपद रेग्रेसनसँग सँगै प्रयोग गर्न सक्छौं। तपाईंको सुविधाका लागि यहाँ पूर्ण कोड छ: ```python -# तालिम डेटा सेट अप गर्नुहोस् +# तालिम डेटा सेटअप गर्नुहोस् X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# ट्रेन-टेस्ट विभाजन बनाउनुहोस् +# ट्रेन-टेस्ट विभाजन गर्नुहोस् X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# पाइपलाइन सेटअप र तालिम दिनुहोस +# पाइपलाइन सेटअप र तालिम गर्नुहोस् pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# परीक्षण डाटाको लागि परिणाम पूर्वानुमान गर्नुहोस् +# परीक्षण डेटाका लागि परिणाम अनुमान गर्नुहोस् pred = pipeline.predict(X_test) -# MSE र निर्धारण गणना गर्नुहोस् -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE र निर्धारण गणना गर्नुहोस् +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -यसले हामीलाई लगभग ९७% को सबैभन्दा राम्रो determination गुणांक र MSE=२.२३ (~८% पूर्वानुमान त्रुटि) देला। +यसले हामीलाई लगभग ९७% निर्धारण गुणांक र RMSE=2.23 (~८% पूर्वानुमान त्रुटि) दिनेछ। -| मोडेल | MSE | Determination | -|-------|-----|---------------| -| `DayOfYear` Linear | २.७७ (१७.२%) | ०.०७ | -| `DayOfYear` Polynomial | २.७३ (१७.०%) | ०.०८ | -| `Variety` Linear | ५.२४ (१९.७%) | ०.७७ | -| सबै विशेषताहरू Linear | २.८४ (१०.५%) | ०.९४ | -| सबै विशेषताहरू Polynomial | २.२३ (८.२५%) | ०.९७ | +| मोडेल | RMSE | निर्धारण | +|-------|-----|----------| +| `DayOfYear` रेखीय | 2.77 (17.2%) | 0.07 | +| `DayOfYear` बहुपद | 2.73 (17.0%) | 0.08 | +| `Variety` रेखीय | 5.24 (19.7%) | 0.77 | +| सबै सुविधाहरू रेखीय | 2.84 (10.5%) | 0.94 | +| सबै सुविधाहरू बहुपद | 2.23 (8.25%) | 0.97 | -🏆 राम्रो काम! तपाईंले एउटै पाठमा चार वटा Regression मोडेलहरू सिर्जना गर्नुभयो र मोडेलको गुणस्तर ९७% सम्म बढाउनुभयो। Regression को अन्तिम भागमा, तपाईं Logistic Regression बारे जान्नु हुनेछ जुन वर्गहरू निर्धारण गर्न प्रयोग हुन्छ। +🏆 राम्रो गर्नुभयो! तपाईंले एउटै पाठमा चार वटा रेग्रेसन मोडेलहरू सिर्जना गर्नुभयो, र मोडेल गुणस्तर ९७% सम्म सुधार गर्नुभयो। रेग्रेसनको अन्तिम भागमा तपाईंले Logistic Regression सिक्नुहुनेछ जसले वर्गहरू निर्धारण गर्छ। --- -## 🚀Challenge +## 🚀 चुनौती -यस नोटबुकमा विभिन्न भेरिएबलहरू परीक्षण गर्नुहोस् ताकि कसरि सहसम्बन्ध (correlation) मोडेलको सटीकता अनुसार जान्छ बुझ्न सकियोस्। +यस नोटबुकमा विभिन्न भेरिएबलहरू परीक्षण गरेर हेर्नुहोस् कि सहसंबन्ध कसरी मोडेलको सटीकताको साथ मेल खान्छ। -## [पाठ-पछि प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/) +## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/) -## पुनरावलोकन र आत्मअध्ययन +## समीक्षा र आत्म-अध्ययन -यस पाठमा हामीले Linear Regression बारे सिक्यौं। अन्य महत्वपूर्ण Regression प्रकारहरू पनि छन्। Stepwise, Ridge, Lasso र Elasticnet प्रविधिहरूको बारेमा पढ्नुहोस्। थप जान्न एक राम्रो कोर्स हो [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +यस पाठमा हामीले Linear Regression सिक्यौं। अन्य महत्वपूर्ण प्रकारका Regression पनि छन्। Stepwise, Ridge, Lasso र Elasticnet प्राविधिहरूको बारेमा पढ्नुहोस्। सिक्न राम्रो कोर्स हो [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## असाइनमेन्ट +## असाइनमेन्ट [मोडेल बनाउनुहोस्](assignment.md) @@ -383,5 +406,5 @@ print('Model determination: ', score) **अस्वीकरण**: -यस दस्तावेजलाई AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी सटीकताको प्रयास गर्छौं भने पनि, कृपया जानकारि हुनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा गलतफहमीहरू हुनसक्छन्। मूल दस्तावेज आफ्नो मूल भाषामै अधिकारिक स्रोत मानिनु पर्छ। महत्वपूर्ण जानकारीको लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलतफहमी वा व्याख्यामा हामी जिम्मेवार छैनौं। +यस कागजातलाई AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी शुद्धताका लागि प्रयासरत छौं, तथापि कृत्रिम अनुवादमा त्रुटि वा अशुद्धता हुन सक्ने कुरा कृपया बुझ्नुहोस्। मूल कागजात त्यसको मूल भाषामा आधिकारिक स्रोतको रूपमा मानिनेछ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी उत्तरदायी छैनौं। \ No newline at end of file diff --git a/translations/ne/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ne/2-Regression/3-Linear/solution/notebook.ipynb index d9ffb1ea82..f60575900a 100644 --- a/translations/ne/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ne/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## कद्दूको मूल्य निर्धारणका लागि रेखीय र बहुपद प्रतिगमन - पाठ ३\n", + "## कद्दू मूल्य निर्धारणका लागि रैखिक र बहुपद प्रतिगमन - पाठ ३\n", "\n", - "आवश्यक पुस्तकालयहरू र डेटासेट लोड गर्नुहोस्। डेटालाई एउटा डाटाफ्रेममा रूपान्तरण गर्नुहोस् जसमा डेटाको एउटा उपसमूह समावेश छ:\n", + "आवश्यक पुस्तकालयहरू र डेटासेट लोड गर्नुहोस्। डेटा एउटा डेटा फ्रेममा परिणत गर्नुहोस् जसमा डेटा को एउटा उपसमूह समावेश हो:\n", "\n", - "- केवल बुसलद्वारा मूल्य निर्धारण गरिएका कद्दूहरू प्राप्त गर्नुहोस् \n", - "- मिति महिनामा रूपान्तरण गर्नुहोस् \n", - "- उच्च र न्यून मूल्यहरूको औसतको रूपमा मूल्य गणना गर्नुहोस् \n", - "- मूल्यलाई बुसलको मात्राद्वारा मूल्य निर्धारण प्रतिबिम्बित गर्न रूपान्तरण गर्नुहोस् \n" + "- केवल बसेलले मूल्य निर्धारण गरिएका कद्दूहरू लिनुहोस्\n", + "- मिति महिनामा रूपान्तरण गर्नुहोस्\n", + "- मूल्यलाई उच्च र न्यून मूल्यहरूको औसतको रूपमा गणना गर्नुहोस्\n", + "- मूल्यलाई बसेल मात्राले मूल्य निर्धारण प्रतिबिम्बित गर्ने रूपमा रूपान्तरण गर्नुहोस्\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "स्क्याटरप्लटले हामीलाई सम्झाउँछ कि हामीसँग केवल अगस्टदेखि डिसेम्बरसम्मको महिनाको डेटा मात्र छ। रेखीय तरिकामा निष्कर्ष निकाल्न सक्षम हुन हामीलाई सम्भवतः थप डेटा आवश्यक छ।\n" + "एक स्क्याटरप्लटले हामीलाई सम्झाउँछ कि हामीसँग अगस्तदेखि डिसेम्बर सम्मका मात्र मासिक डेटा छ। लाइनियर तरिकाले निष्कर्ष निकाल्न हामीलाई सम्भवतः थप डाटाको आवश्यकता छ।\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "हेर्नुहोस् के त्यहाँ सम्बन्ध छ:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "जस्तो देखिन्छ सम्बन्ध धेरै सानो छ, तर त्यहाँ केही अन्य महत्वपूर्ण सम्बन्ध छ - किनभने माथिको प्लटमा मूल्य बिन्दुहरूमा धेरै अलग-अलग समूहहरू देखिन्छन्। विभिन्न कद्दूका प्रकारहरू देखाउने प्लट बनाउँ।\n" + "जस्तो देखिन्छ, सहसम्बन्ध सानो छ, तर त्यहाँ अरू केही महत्वपूर्ण सम्बन्ध छ - किनभने माथि भएको प्लटमा मूल्य बिन्दुहरूमा धेरै फरक समूहहरू देखिन्छन्। अब हामी एउटा प्लट बनाउनेछौं जसले विभिन्न कद्दूका जातहरू देखाओस्:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "अहिलेको लागि, हामी केवल एक किसिममा केन्द्रित गरौं - **पाई प्रकार**।\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### रेखीय प्रतिगमन\n", + "### रेखीय रिग्रेसन\n", "\n", - "हामी Scikit Learn प्रयोग गरेर रेखीय प्रतिगमन मोडेल प्रशिक्षण गर्नेछौं:\n" + "हामी स्किकिट लर्न प्रयोग गरेर रेखीय रिग्रेसन मोडल प्रशिक्षण गर्नेछौं:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "रेखाको ढलान रेखीय प्रतिगमन गुणांकबाट निर्धारण गर्न सकिन्छ:\n" + "रेखा झुकाव रेखीय प्रतिगमन गुणांकहरुबाट निर्धारण गर्न सकिन्छ:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "हामी तालिमप्राप्त मोडेललाई मूल्य पूर्वानुमान गर्नका लागि प्रयोग गर्न सक्छौं:\n" + ] }, { "cell_type": "code", @@ -716,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### बहुपद रिग्रेशन\n", + "### Polynomial Regression\n", "\n", - "कहिलेकाहीं विशेषताहरू र परिणामहरू बीचको सम्बन्ध स्वाभाविक रूपमा गैर-रेखीय हुन्छ। उदाहरणका लागि, फर्सीको मूल्य जाडोमा (महिना=१,२) उच्च हुन सक्छ, त्यसपछि गर्मीमा (महिना=५-७) घट्न सक्छ, र फेरि बढ्न सक्छ। रेखीय रिग्रेशनले यो सम्बन्धलाई सही रूपमा पत्ता लगाउन सक्दैन।\n", + "कहिलेकाहीं फिचरहरू र परिणामहरू बीचको सम्बन्ध स्वभाविक रूपमा गैर-रेखीय हुन्छ। उदाहरणका लागि, कद्दूको मूल्य जाडो महिनामा (महिना=१,२) उच्च हुन सक्छ, त्यसपछि गर्मी महिनामा (महिना=५-७) घट्छ, र फेरि बढ्छ। रेखीय रिग्रेसनले यो सम्बन्धलाई सही रूपमा भेट्टाउन सक्दैन।\n", "\n", - "यस अवस्थामा, हामी अतिरिक्त विशेषताहरू थप्ने विचार गर्न सक्छौं। सरल तरिका भनेको इनपुट विशेषताहरूबाट बहुपदहरू प्रयोग गर्नु हो, जसले **बहुपद रिग्रेशन** परिणाम दिन्छ। Scikit Learn मा, हामी पाइपलाइनहरू प्रयोग गरेर स्वचालित रूपमा बहुपद विशेषताहरू पूर्व-गणना गर्न सक्छौं:\n" + "यस अवस्थामा, हामी थप फिचरहरू थप्न विचार गर्न सक्छौं। सरल तरिका भनेको इनपुट फिचरहरूबाट बहुपदहरू प्रयोग गर्नु हो, जसले **बहुपदीय रिग्रेसन** निम्त्याउँछ। Scikit Learn मा, हामी पाइपलाइनहरूको प्रयोग गरेर स्वचालित रूपमा बहुपदीय फिचरहरू प्रि-कम्प्युट गर्न सक्छौं: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### विभिन्न प्रकारको एन्कोडिङ\n", + "### इन्कोडिङ प्रकारहरू\n", "\n", - "आदर्श संसारमा, हामी एउटै मोडेल प्रयोग गरेर विभिन्न कद्दूका प्रकारहरूको मूल्य भविष्यवाणी गर्न सक्षम हुन चाहन्छौं। प्रकारलाई ध्यानमा राख्नका लागि, हामीले पहिले यसलाई संख्यात्मक रूपमा रूपान्तरण गर्नुपर्छ, वा **एन्कोड** गर्नुपर्छ। यसका लागि केही तरिकाहरू छन्:\n", + "आदर्श संसारमा, हामी एउटै मोडल प्रयोग गरेर विभिन्न फर्सी प्रजातिहरूको मूल्य भविष्यवाणी गर्न सक्षम हुन चाहन्छौं। प्रजातिलाई ध्यानमा राख्नका लागि, हामीले पहिले यसलाई संख्यात्मक रूपान्तरण गर्नुपर्छ, वा **इन्कोड** गर्नुपर्छ। यसका लागि केहि तरिकाहरू छन्:\n", "\n", - "* साधारण संख्यात्मक एन्कोडिङ, जसले विभिन्न प्रकारहरूको तालिका बनाउँछ, र त्यसपछि तालिकामा रहेको सूचकांकद्वारा प्रकारको नामलाई प्रतिस्थापन गर्छ। यो रैखिक प्रतिगमन (linear regression) का लागि उत्तम विचार होइन, किनभने रैखिक प्रतिगमनले सूचकांकको संख्यात्मक मानलाई ध्यानमा राख्छ, र संख्यात्मक मान सम्भवतः मूल्यसँग संख्यात्मक रूपमा सम्बन्धित हुँदैन।\n", - "* वन-हट एन्कोडिङ (One-hot encoding), जसले `Variety` स्तम्भलाई ४ फरक स्तम्भहरूसँग प्रतिस्थापन गर्छ, प्रत्येक प्रकारका लागि एउटा, जसले १ समावेश गर्छ यदि सम्बन्धित पंक्ति दिइएको प्रकारको हो भने, र अन्यथा ०।\n", + "* सरल संख्यात्मक इन्कोडिङ जसले फरक फरक प्रजातिहरूको तालिका बनाउनेछ, र त्यसपछि प्रजातिको नामलाई उक्त तालिकामा रहेको सूचकांक (इन्डेक्स) द्वारा प्रतिस्थापन गर्नेछ। यो रेखीय प्रतिगमन (linear regression) का लागि उत्तम विचार होइन, किनकि रेखीय प्रतिगमनले सूचकांकको संख्यात्मक मानलाई ध्यानमा राख्छ, र त्यो संख्यात्मक मान सम्भावित रूपमा मूल्यसँग संख्यात्मक रूपले सम्बन्धित नहुन सक्छ।\n", + "* वन-हट इन्कोडिङ (one-hot encoding), जसले `Variety` स्तम्भलाई ४ फरक स्तम्भहरूले प्रतिस्थापन गर्नेछ, प्रत्येक प्रजातिको लागि एउटा स्तम्भ हुनेछ, र त्यो स्तम्भमा दिइएको पङ्क्ति सो प्रजातिको भएमा १ र नभए ० हुनेछ।\n", "\n", - "तलको कोडले देखाउँछ कि हामीले कसरी प्रकारलाई वन-हट एन्कोड गर्न सक्छौं:\n" + "तलको कोडले कसरी हामीले वन-हट इन्कोडिङ गर्न सकिन्छ देखाउँछ:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### भिन्नतामा आधारित रेखीय पुनरावृत्ति \n", + "### भिन्नतामा रेखीय प्रतिगमन\n", "\n", - "अब हामी माथिको जस्तै कोड प्रयोग गर्नेछौं, तर `DayOfYear` को सट्टा हामी हाम्रो एक-हट-एन्कोड गरिएको भिन्नता इनपुटको रूपमा प्रयोग गर्नेछौं:\n" + "हामी अब माथिको समान कोड प्रयोग गर्नेछौं, तर `DayOfYear` को सट्टा हामी हाम्रो वन-हट-एन्कोडेड भिन्नतालाई इनपुटको रूपमा प्रयोग गर्नेछौं:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "हामी अन्य सुविधाहरूलाई पनि उस्तै तरिकाले प्रयोग गर्न प्रयास गर्न सक्छौं, र तिनीहरूलाई संख्यात्मक सुविधाहरू जस्तै `Month` वा `DayOfYear` सँग संयोजन गर्न सक्छौं:\n" + "हामी अन्य सुविधाहरू पनि उस्तै तरिकाले प्रयोग गर्न सक्छौं, र तिनीहरूलाई सङ्ख्यात्मक सुविधाहरू जस्तै `Month` वा `DayOfYear` सँग मिलाउन सक्छौं:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### बहुपद रिग्रेशन\n", + "### Polynomial Regression\n", "\n", - "बहुपद रिग्रेशन एक-हट-एन्कोड गरिएको श्रेणीगत विशेषताहरूसँग पनि प्रयोग गर्न सकिन्छ। बहुपद रिग्रेशनलाई प्रशिक्षण दिनको लागि कोड मूलतः माथि देखिएको जस्तै हुनेछ।\n" + "Polynomial regression लाई एउटा-होट-एन्कोड गरिएको वर्गीकृत सुविधाहरू सँग पनि प्रयोग गर्न सकिन्छ। Polynomial regression तालिम दिनको लागि कोड मूलतः माथि देखिएको जस्तै नै हुनेछ।\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**अस्वीकरण**: \nयो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।\n" + "---\n\n\n**अस्वीकरण**: \nयो दस्तावेज AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धिहरू हुनसक्छन्। मूल दस्तावेज यसको मूल भाषामा नै अधिकारप्राप्त स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि व्यावसायिक मानव अनुवाद सिफारिश गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं।\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T18:45:08+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ne" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From f9e9c997fcdff601d557e46913e07eda675c6f80 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 20:07:19 +0000 Subject: [PATCH 14/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/he/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 110 +++--- .../he/2-Regression/3-Linear/README.md | 315 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 71 ++-- translations/nl/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 100 +++--- .../nl/2-Regression/3-Linear/README.md | 250 +++++++------- .../3-Linear/solution/notebook.ipynb | 69 ++-- translations/vi/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 102 +++--- .../vi/2-Regression/3-Linear/README.md | 276 ++++++++------- .../3-Linear/solution/notebook.ipynb | 63 ++-- 12 files changed, 746 insertions(+), 652 deletions(-) diff --git a/translations/he/.co-op-translator.json b/translations/he/.co-op-translator.json index b795d30e08..c7c3f9e08a 100644 --- a/translations/he/.co-op-translator.json +++ b/translations/he/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "he" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T19:35:07+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:05:57+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "he" }, @@ -90,8 +90,8 @@ "language_code": "he" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:51:40+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:05:31+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "he" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "he" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:02:53+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "he" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T18:46:04+00:00", diff --git a/translations/he/1-Introduction/4-techniques-of-ML/README.md b/translations/he/1-Introduction/4-techniques-of-ML/README.md index 8ad70384d2..7dc2907328 100644 --- a/translations/he/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/he/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# טכניקות בלמידת מכונה +# טכניקות של למידת מכונה -תהליך הבנייה, השימוש והתחזוקה של מודלים בלמידת מכונה והנתונים שהם משתמשים בהם שונה מאוד מתהליכי פיתוח אחרים. בשיעור זה, נבאר את התהליך ונפרט את הטכניקות המרכזיות שעליכם להכיר. אתם תלמדו: +תהליך בניית, שימוש ותחזוקה של מודלים ללמידת מכונה והנתונים שהם משתמשים בהם הוא תהליך שונה מאוד מהרבה תהליכים אחרים בפיתוח. בשיעור זה, נמיר את המסתורין סביב התהליך, ונסקור את הטכניקות העיקריות שעליך להכיר. תלמדו: -- להבין את התהליכים שמניעים למידת מכונה ברמה גבוהה. -- לחקור מושגים בסיסיים כמו 'מודלים', 'תחזיות' ו'נתוני אימון'. +- להבין את התהליכים הבסיסיים של למידת מכונה ברמה גבוהה. +- לחקור מושגים בסיסיים כמו 'מודלים', 'תחזיות', ו'נתוני אימון'. -## [שאלון לפני השיעור](https://ff-quizzes.netlify.app/en/ml/) +## [מבחן טרום-הרצאה](https://ff-quizzes.netlify.app/en/ml/) -[![ML למתחילים - טכניקות בלמידת מכונה](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML למתחילים - טכניקות בלמידת מכונה") +[![למידת מכונה למתחילים - טכניקות של למידת מכונה](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "למידת מכונה למתחילים - טכניקות של למידת מכונה") -> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר שמסביר את השיעור. +> 🎥 לחצו על התמונה למעלה כדי לצפות בסרטון קצר שעובר על השיעור הזה. ## מבוא ברמה גבוהה, מלאכת יצירת תהליכי למידת מכונה (ML) מורכבת ממספר שלבים: -1. **הגדרת השאלה**. רוב תהליכי ML מתחילים בשאלה שלא ניתן לענות עליה באמצעות תוכנית מותנית פשוטה או מנוע מבוסס חוקים. שאלות אלו לרוב עוסקות בתחזיות המבוססות על אוסף נתונים. -2. **איסוף והכנת נתונים**. כדי לענות על השאלה שלכם, אתם זקוקים לנתונים. איכות ולעיתים גם כמות הנתונים שלכם יקבעו עד כמה תוכלו לענות על השאלה הראשונית שלכם. ויזואליזציה של נתונים היא חלק חשוב בשלב זה. שלב זה כולל גם חלוקת הנתונים לקבוצת אימון ובדיקה לצורך בניית מודל. -3. **בחירת שיטת אימון**. בהתאם לשאלה שלכם ולאופי הנתונים, עליכם לבחור כיצד לאמן מודל שייצג בצורה הטובה ביותר את הנתונים ויבצע תחזיות מדויקות. זהו החלק בתהליך ML שדורש מומחיות ספציפית ולעיתים ניסוי רב. -4. **אימון המודל**. באמצעות נתוני האימון שלכם, תשתמשו באלגוריתמים שונים כדי לאמן מודל שיזהה דפוסים בנתונים. המודל עשוי להשתמש במשקלים פנימיים שניתן להתאים כדי להעדיף חלקים מסוימים של הנתונים על פני אחרים לצורך בניית מודל טוב יותר. -5. **הערכת המודל**. תשתמשו בנתונים שלא נראו בעבר (נתוני הבדיקה שלכם) מתוך הסט שנאסף כדי לראות כיצד המודל מתפקד. -6. **כיוונון פרמטרים**. בהתבסס על ביצועי המודל שלכם, תוכלו לחזור על התהליך עם פרמטרים או משתנים שונים שמכוונים את התנהגות האלגוריתמים ששימשו לאימון המודל. -7. **תחזית**. השתמשו בקלט חדש כדי לבדוק את דיוק המודל שלכם. +1. **החלטה על השאלה**. רוב תהליכי ה-ML מתחילים עם שאלה שלא ניתן לענות עליה באמצעות תוכנית פשוטה מבוססת תנאים או מנוע כללים. השאלות האלו בדרך כלל מתמקדות בתחזיות המבוססות על אוסף נתונים. +2. **איסוף והכנת נתונים**. כדי שתוכל לענות על שאלתך, אתה זקוק לנתונים. איכות וכמות הנתונים שלך יקבעו עד כמה תוכל לענות על השאלה הראשונית. ויזואליזציה של נתונים היא היבט חשוב של שלב זה. שלב זה כולל גם חלוקה של הנתונים לקבוצת אימון וקבוצת בדיקה כדי לבנות מודל. +3. **בחירת שיטת אימון**. בהתאם לשאלה שלך וטיב הנתונים, עליך לבחור כיצד לאמן את המודל כך שישקף בצורה הטובה ביותר את הנתונים שלך ויעשה תחזיות מדויקות. זהו חלק מתהליך ה-ML שדורש מומחיות ספציפית ולעיתים גם הרבה ניסוי וטעייה. +4. **אימון המודל**. באמצעות נתוני האימון תשתמש באלגוריתמים שונים כדי לאמן מודל שיזהה דפוסים בנתונים. המודל יכול לנצל משקלים פנימיים שניתן לכוונם כדי להעדיף חלקים מסוימים בנתונים על פני אחרים כדי לבנות מודל טוב יותר. +5. **הערכת המודל**. אתה משתמש בנתונים שטרם נראו (נתוני הבדיקה) מתוך האוסף שלך כדי לראות כיצד המודל מתפקד. +6. **כוונון פרמטרים**. בהתבסס על ביצועי המודל, אתה יכול לחזור על התהליך עם פרמטרים שונים או משתנים שבוחנים את התנהגות האלגוריתמים לאימון המודל. +7. **חיזוי**. השתמש בקלטים חדשים כדי לבדוק את דיוק המודל שלך. ## איזו שאלה לשאול -מחשבים מצטיינים במיוחד בגילוי דפוסים נסתרים בנתונים. יכולת זו מועילה מאוד לחוקרים שיש להם שאלות בתחום מסוים שלא ניתן לענות עליהן בקלות באמצעות יצירת מנוע חוקים מותנה. לדוגמה, במשימה אקטוארית, מדען נתונים עשוי להיות מסוגל לבנות חוקים מותאמים אישית סביב תמותת מעשנים לעומת לא מעשנים. +מחשבים מיומנים במיוחד בגילוי דפוסים נסתרים בנתונים. תכונה זו מועילה מאוד לחוקרים שיש להם שאלות בתחום נתון שקשה לענות עליהן על ידי יצירת מנוע כללים מבוסס תנאים. לדוגמה, מטלה אקטוארית, מדען נתונים יכול לבנות כללים ידניים סביב תמותה של מעשנים מול לא מעשנים. -כאשר משתנים רבים נוספים למשוואה, מודל ML עשוי להיות יעיל יותר בתחזית שיעורי תמותה עתידיים בהתבסס על היסטוריית בריאות קודמת. דוגמה משמחת יותר עשויה להיות תחזיות מזג אוויר לחודש אפריל במיקום מסוים בהתבסס על נתונים הכוללים קו רוחב, קו אורך, שינויי אקלים, קרבה לים, דפוסי זרם סילון ועוד. +כאשר נכנסות למערכת משתנים רבים נוספים, ייתכן שמודל למידת מכונה יהיה יעיל יותר לחיזוי שיעורי תמותה עתידיים על סמך היסטוריית בריאות קודמת. דוגמה יותר עליזה יכולה להיות חיזוי מזג אוויר לחודש אפריל במקום מסוים בהתבסס על נתונים הכוללים רוחב, אורך, שינויי אקלים, קרבה לאוקיינוס, דפוסי זרם ג'ט ועוד. -✅ מצגת זו [מצגת](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) על מודלים של מזג אוויר מציעה פרספקטיבה היסטורית לשימוש ב-ML בניתוח מזג אוויר. +✅ מצגת זו על מודלים של מזג אוויר מציעה פרספקטיבה היסטורית על שימוש בלמידת מכונה לניתוח מזג אוויר. -## משימות לפני בנייה +## משימות לפני הבנייה -לפני שתתחילו לבנות את המודל שלכם, ישנם מספר משימות שעליכם להשלים. כדי לבדוק את השאלה שלכם ולגבש השערה המבוססת על תחזיות המודל, עליכם לזהות ולהגדיר מספר אלמנטים. +לפני שתתחיל לבנות את המודל שלך, יש מספר משימות שעליך להשלים. כדי לבדוק את שאלתך וליצור היפותזה בהתבסס על תחזיות המודל, עליך לזהות ולהגדיר כמה אלמנטים. ### נתונים -כדי לענות על השאלה שלכם בוודאות כלשהי, אתם זקוקים לכמות מספקת של נתונים מהסוג הנכון. ישנם שני דברים שעליכם לעשות בשלב זה: +כדי שתוכל לענות על השאלה שלך בוודאות מסוימת, אתה זקוק לכמות טובה של נתונים מסוג מתאים. יש שתי פעולות שעליך לבצע בשלב זה: -- **איסוף נתונים**. תוך שמירה על השיעור הקודם בנושא הוגנות בניתוח נתונים, אספו את הנתונים שלכם בזהירות. היו מודעים למקורות הנתונים, להטיות מובנות שהם עשויים להכיל, ותעדו את מקורם. -- **הכנת נתונים**. ישנם מספר שלבים בתהליך הכנת הנתונים. ייתכן שתצטרכו לאחד נתונים ולנרמל אותם אם הם מגיעים ממקורות מגוונים. תוכלו לשפר את איכות וכמות הנתונים באמצעות שיטות שונות כמו המרת מחרוזות למספרים (כפי שעשינו ב[Clustering](../../5-Clustering/1-Visualize/README.md)). ייתכן שתייצרו נתונים חדשים בהתבסס על המקור (כפי שעשינו ב[Classification](../../4-Classification/1-Introduction/README.md)). תוכלו לנקות ולערוך את הנתונים (כפי שנעשה לפני השיעור על [אפליקציות אינטרנט](../../3-Web-App/README.md)). לבסוף, ייתכן שתצטרכו גם לערבב ולשנות את סדר הנתונים, בהתאם לטכניקות האימון שלכם. +- **איסוף נתונים**. תוך התחשבות בשיעור הקודם על הוגנות בניתוח הנתונים, אסוף את הנתונים שלך בזהירות. היה מודע למקורות הנתונים, ההטיות הטבועות בהם, ותעד את מקורם. +- **הכנת נתונים**. ישנם מספר שלבים בתהליך הכנת הנתונים. ייתכן שתצטרך לאסוף את הנתונים ולנרמל אותם אם הם מגיעים ממקורות מגוונים. ניתן לשפר את איכות וכמות הנתונים בשיטות שונות, כגון המרת מחרוזות למספרים (כפי שאנו עושים ב-[Clustering](../../5-Clustering/1-Visualize/README.md)). ייתכן גם שתיצור נתונים חדשים על בסיס המקוריים (כפי שאנו עושים ב-[Classification](../../4-Classification/1-Introduction/README.md)). ניתן לנקות ולערוך את הנתונים (כפי שנעשה לפני השיעור [Web App](../../3-Web-App/README.md)). לבסוף, ייתכן שתצטרך גם לשרשר ולערבב אותם, בהתאם לטכניקות האימון שלך. -✅ לאחר איסוף ועיבוד הנתונים, הקדישו רגע לבדוק אם הצורה שלהם תאפשר לכם להתמודד עם השאלה המיועדת. ייתכן שהנתונים לא יתפקדו היטב במשימה שלכם, כפי שגילינו בשיעורי [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ לאחר איסוף ועיבוד הנתונים שלך, עצור לרגע וראה אם צורתם תאפשר לך לטפל בשאלה שלך. ייתכן שהנתונים לא יתפקדו היטב במשימה הנתונה, כפי שאנו מגלים בשיעורי [Clustering](../../5-Clustering/1-Visualize/README.md)! -### מאפיינים ומטרה +### תכונות ויעד -[מאפיין](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) הוא תכונה מדידה של הנתונים שלכם. בהרבה מערכי נתונים הוא מתבטא ככותרת עמודה כמו 'תאריך', 'גודל' או 'צבע'. משתנה המאפיין שלכם, שמיוצג בדרך כלל כ-`X` בקוד, מייצג את משתנה הקלט שישמש לאימון המודל. +[feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) היא תכונה שניתנת למדידה של הנתונים שלך. ברבים ממאגרי הנתונים היא מבוטאת כתואר עמודה כמו 'תאריך', 'גודל' או 'צבע'. משתנה התכונה שלך, המיוצג בדרך כלל כ-`X` בקוד, מייצג את משתנה הקלט שישמש לאימון המודל. -מטרה היא הדבר שאתם מנסים לחזות. המטרה, שמיוצגת בדרך כלל כ-`y` בקוד, מייצגת את התשובה לשאלה שאתם מנסים לשאול מהנתונים שלכם: בחודש דצמבר, איזה **צבע** דלעות יהיה הזול ביותר? בסן פרנסיסקו, אילו שכונות יהיו בעלות **מחיר** הנדל"ן הטוב ביותר? לעיתים המטרה מכונה גם תכונת תווית. +היעד הוא הדבר שאתה מנסה לחזות. היעד, המיוצג בדרך כלל כ-`y` בקוד, מייצג את התשובה לשאלה שאתה שואל את הנתונים: בדצמבר, אילו דלעות יהיו בצבע הזול ביותר? בסן פרנסיסקו, באילו שכונות יהיה המחיר הנדל"ני הטוב ביותר? לפעמים היעד מכונה גם תכונת תווית. -### בחירת משתנה המאפיין שלכם +### בחירת משתנה התכונה -🎓 **בחירת מאפיינים והפקת מאפיינים** איך תדעו איזה משתנה לבחור בעת בניית מודל? סביר להניח שתעברו תהליך של בחירת מאפיינים או הפקת מאפיינים כדי לבחור את המשתנים הנכונים למודל הביצועי ביותר. עם זאת, הם אינם אותו הדבר: "הפקת מאפיינים יוצרת מאפיינים חדשים מפונקציות של המאפיינים המקוריים, בעוד שבחירת מאפיינים מחזירה תת-קבוצה של המאפיינים." ([מקור](https://wikipedia.org/wiki/Feature_selection)) +🎓 **בחירת תכונה וחילוץ תכונה** איך תדע איזה משתנה לבחור בונה מודל? ככל הנראה תעבור תהליך של בחירת תכונה או חילוץ תכונה כדי לבחור את המשתנים הנכונים למודל היעיל ביותר. עם זאת, הם לא אותו דבר: "חילוץ תכונה יוצר תכונות חדשות מפונקציות של התכונות המקוריות, בעוד שבחירת תכונה מחזירה תת-קבוצה של התכונות." ([מקור](https://wikipedia.org/wiki/Feature_selection)) -### ויזואליזציה של הנתונים שלכם +### ויזואליזציה של הנתונים שלך -היבט חשוב בארגז הכלים של מדען הנתונים הוא היכולת לייצג נתונים באופן חזותי באמצעות ספריות מצוינות כמו Seaborn או MatPlotLib. ייצוג הנתונים שלכם באופן חזותי עשוי לאפשר לכם לחשוף קשרים נסתרים שתוכלו לנצל. הוויזואליזציות שלכם עשויות גם לעזור לכם לחשוף הטיות או נתונים לא מאוזנים (כפי שגילינו ב[Classification](../../4-Classification/2-Classifiers-1/README.md)). +היבט חשוב בערכת הכלים של מדען הנתונים הוא היכולת ליצור ויזואליזציות של הנתונים באמצעות כמה ספריות מצוינות כמו Seaborn או MatPlotLib. ייצוג הנתונים ויזואלית עשוי לאפשר לך לחשוף מתאמים נסתרים שניתן לנצל. הוויזואליזציות עשויות גם לסייע לך לחשוף הטיה או נתונים לא מאוזנים (כפי שאנו מגלים ב-[Classification](../../4-Classification/2-Classifiers-1/README.md)). -### חלוקת מערך הנתונים שלכם +### חלוקת מאגר הנתונים -לפני האימון, עליכם לחלק את מערך הנתונים שלכם לשני חלקים או יותר בגודל לא שווה שעדיין מייצגים את הנתונים היטב. +לפני האימון, עליך לחלק את מאגר הנתונים שלך לשני חלקים או יותר בגודל שונה אך שמייצגים היטב את הנתונים. -- **אימון**. חלק זה של מערך הנתונים מותאם למודל שלכם כדי לאמן אותו. סט זה מהווה את רוב מערך הנתונים המקורי. -- **בדיקה**. מערך בדיקה הוא קבוצה עצמאית של נתונים, לעיתים נאספת מהנתונים המקוריים, שבה אתם משתמשים כדי לאשר את ביצועי המודל שנבנה. -- **אימות**. סט אימות הוא קבוצה עצמאית קטנה יותר של דוגמאות שבה אתם משתמשים לכוונון ההיפר-פרמטרים של המודל או הארכיטקטורה שלו כדי לשפר את המודל. בהתאם לגודל הנתונים שלכם ולשאלה שאתם שואלים, ייתכן שלא תצטרכו לבנות את הסט השלישי הזה (כפי שאנו מציינים ב[תחזיות סדרות זמן](../../7-TimeSeries/1-Introduction/README.md)). +- **אימון**. חלק זה של מאגר הנתונים מתאים למודל שלך כדי לאמן אותו. סט זה מהווה את רוב מאגר הנתונים המקורי. +- **בדיקה**. קבוצת בדיקה היא קבוצת נתונים עצמאית, שלעתים נאספה מתוך הנתונים המקוריים, שבה תשתמש כדי לאשר את ביצועי המודל. +- **אימות**. קבוצת אימות היא קבוצה עצמאית קטנה של דוגמאות שבה תשתמש כדי לכוונן את ההיפרפרמטרים או את הארכיטקטורה של המודל לשיפורו. בהתאם לגודל הנתונים והשאלה שאתה שואל, ייתכן שלא תצטרך לבנות קבוצה שלישית זו (כפי שמצויין ב-[Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). ## בניית מודל -באמצעות נתוני האימון שלכם, המטרה שלכם היא לבנות מודל, או ייצוג סטטיסטי של הנתונים שלכם, באמצעות אלגוריתמים שונים כדי **לאמן** אותו. אימון מודל חושף אותו לנתונים ומאפשר לו לבצע הנחות לגבי דפוסים שהוא מגלה, מאמת ומקבל או דוחה. +באמצעות נתוני האימון שלך, המטרה היא לבנות מודל, או ייצוג סטטיסטי של הנתונים שלך, באמצעות אלגוריתמים שונים להנחת **אימון** עליו. אימון מודל חושף אותו לנתונים ומאפשר לו להניח הנחות לגבי דפוסים שהוא מגלה, מאמת, ומקבל או דוחה. ### החלטה על שיטת אימון -בהתאם לשאלה שלכם ולאופי הנתונים, תבחרו שיטה לאמן אותם. מעבר על [התיעוד של Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - שבו אנו משתמשים בקורס זה - תוכלו לחקור דרכים רבות לאמן מודל. בהתאם לניסיונכם, ייתכן שתצטרכו לנסות מספר שיטות שונות כדי לבנות את המודל הטוב ביותר. סביר להניח שתעברו תהליך שבו מדעני נתונים מעריכים את ביצועי המודל על ידי הזנת נתונים שלא נראו בעבר, בדיקת דיוק, הטיה ונושאים אחרים שמפחיתים את האיכות, ובחירת שיטת האימון המתאימה ביותר למשימה. +בהתאם לשאלה שלך וטיב הנתונים, תבחר שיטה לאימון המודל. על ידי מעבר על [התיעוד של Scikit-learn](https://scikit-learn.org/stable/user_guide.html) – שאותו אנו משתמשים בקורס זה – תוכל לחקור דרכים רבות לאימון מודל. בהתאם לניסיונך, ייתכן שתצטרך לנסות מספר שיטות שונות כדי לבנות את המודל הטוב ביותר. סביר שתעבור תהליך שבו מדעני נתונים מעריכים את ביצועי המודל על ידי הזנת נתונים שטרם נראו, בדיקת דיוק, הטיה ובעיות אחרות שמשחיתות איכות, ובחירת שיטת האימון המתאימה ביותר למשימה. ### אימון מודל -מצוידים בנתוני האימון שלכם, אתם מוכנים 'להתאים' אותם כדי ליצור מודל. תבחינו שבספריות ML רבות תמצאו את הקוד 'model.fit' - זהו הזמן שבו אתם שולחים את משתנה המאפיין שלכם כמערך ערכים (בדרך כלל 'X') ומשתנה מטרה (בדרך כלל 'y'). +מצויד בנתוני האימון שלך, אתה מוכן 'להתאים' אותו כדי ליצור מודל. תבחין שבספריות למידת מכונה רבות תראה את הקוד 'model.fit' – בשלב זה אתה מזין את משתנה התכונה כמערך ערכים (בדרך כלל 'X') ואת משתנה היעד (בדרך כלל 'y'). ### הערכת המודל -לאחר שתהליך האימון הושלם (זה יכול לקחת מספר איטרציות, או 'epochs', כדי לאמן מודל גדול), תוכלו להעריך את איכות המודל באמצעות נתוני בדיקה כדי למדוד את ביצועיו. נתונים אלו הם תת-קבוצה של הנתונים המקוריים שהמודל לא ניתח בעבר. תוכלו להדפיס טבלה של מדדים על איכות המודל שלכם. +לאחר תהליך האימון הושלם (הוא יכול לקחת מספר רב של איטרציות, או 'אפיקים', לאימון מודל גדול), תוכל להעריך את איכות המודל על ידי שימוש בנתוני בדיקה למדידת ביצועיו. נתונים אלו הם תת-קבוצה של הנתונים המקוריים שהמודל טרם ניתח. תוכל להדפיס טבלת מדדים על איכות המודל שלך. 🎓 **התאמת מודל** -בהקשר של למידת מכונה, התאמת מודל מתייחסת לדיוק הפונקציה הבסיסית של המודל כשהוא מנסה לנתח נתונים שאינם מוכרים לו. +בהקשר של למידת מכונה, התאמת מודל מתייחסת לדיוק הפונקציה הבסיסית של המודל כשהיא מנסה לנתח נתונים שהיא לא מכירה. -🎓 **התאמה חסרה** ו**התאמה יתרה** הן בעיות נפוצות שמפחיתות את איכות המודל, כאשר המודל מתאים או לא מספיק טוב או יותר מדי טוב. זה גורם למודל לבצע תחזיות שמותאמות או קרובות מדי או רחוקות מדי לנתוני האימון שלו. מודל מותאם יתר על המידה חוזה נתוני אימון טוב מדי מכיוון שהוא למד את הפרטים והרעש של הנתונים טוב מדי. מודל מותאם חסר אינו מדויק מכיוון שהוא לא יכול לנתח בצורה מדויקת את נתוני האימון שלו או נתונים שהוא עדיין לא 'ראה'. +🎓 **Underfitting** ו-**overfitting** הן בעיות נפוצות שמורידות את איכות המודל, מאחר שהמודל מתאים לא טוב מספיק או מתאים מדי. זה גורם למודל לחזות באופן הדוק מדי או רופף מדי בהתאם לנתוני האימון שלו. מודל עם overfit חוזה טוב מדי את נתוני האימון כי למד את הפרטים והרעש בנתונים לעומק. מודל עם underfit אינו מדויק, כיוון שאינו מסוגל לנתח בצורה מדויקת את נתוני האימון שלו או את הנתונים שטרם 'ראה'. -![מודל מותאם יתר](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![מודל עם התאמה יתרה](../../../../translated_images/he/overfitting.1c132d92bfd93cb6.webp) > אינפוגרפיקה מאת [Jen Looper](https://twitter.com/jenlooper) -## כיוונון פרמטרים +## כוונון פרמטרים -לאחר שהאימון הראשוני שלכם הושלם, התבוננו באיכות המודל ושקלו לשפר אותו על ידי כיוונון 'היפר-פרמטרים' שלו. קראו עוד על התהליך [בתיעוד](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +לאחר סיום האימון הראשוני, בחן את איכות המודל וחשב לשפר אותו על ידי כוונון 'היפרפרמטרים'. קרא עוד על התהליך [בתיעוד](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## תחזית +## חיזוי -זהו הרגע שבו תוכלו להשתמש בנתונים חדשים לחלוטין כדי לבדוק את דיוק המודל שלכם. בהקשר של ML 'מופעל', שבו אתם בונים נכסי אינטרנט לשימוש המודל בייצור, תהליך זה עשוי לכלול איסוף קלט משתמש (לחיצה על כפתור, למשל) כדי להגדיר משתנה ולשלוח אותו למודל לצורך הסקה או הערכה. +זהו הרגע שבו תוכל להשתמש בנתונים חדשים לגמרי כדי לבדוק את דיוק המודל שלך. בסביבת ML 'מיושמת', שבה בונים נכסי רשת לשימוש במודל בפרודקשן, תהליך זה עשוי לכלול איסוף קלט משתמש (לדוגמה לחצן), הגדרת משתנה ושליחתו למודל להסקת מסקנות או הערכה. -בשיעורים אלו, תגלו כיצד להשתמש בשלבים אלו כדי להכין, לבנות, לבדוק, להעריך ולחזות - כל המחוות של מדען נתונים ועוד, ככל שתתקדמו במסע שלכם להפוך ל'מהנדס ML מלא'. +בשיעורים אלה תגלו כיצד להשתמש בשלבים אלה כדי להכין, לבנות, לבדוק, להעריך ולחזות – כל המהלכים של מדען נתונים ועוד, ככל שתתקדם במסעך להפוך למהנדס ML 'פול סטאק'. --- -## 🚀אתגר +## 🚀 אתגר -ציירו תרשים זרימה שמייצג את שלבי העבודה של מומחה ML. היכן אתם רואים את עצמכם כרגע בתהליך? היכן אתם צופים שתתקלו בקשיים? מה נראה לכם קל? +צייר תרשים זרימה שמשקף את השלבים של מומחה למידת מכונה. איפה אתה רואה את עצמך כרגע בתהליך? היכן אתה חושב שתיתקל בקושי? מה נראה לך קל? -## [שאלון לאחר השיעור](https://ff-quizzes.netlify.app/en/ml/) +## [מבחן לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/) ## סקירה ולימוד עצמי -חפשו באינטרנט ראיונות עם מדעני נתונים שמדברים על עבודתם היומיומית. הנה [אחד](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +חפש באינטרנט ראיונות עם מדעני נתונים שמספרים על עבודתם היומית. הנה [ראיון אחד](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## משימה +## מטלה -[ראיינו מדען נתונים](assignment.md) +[ראיין מדען נתונים](assignment.md) --- + **כתב ויתור**: -מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור הסמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה. \ No newline at end of file +מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדייק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. יש להתייחס למסמך המקורי בשפת המקור כמקור המוסמך. עבור מידע קריטי, מומלץ תרגום מקצועי על ידי אדם. אנו איננו אחראים לכל אי הבנה או פרשנות מוטעית הנובעים מהשימוש בתרגום זה. + \ No newline at end of file diff --git a/translations/he/2-Regression/3-Linear/README.md b/translations/he/2-Regression/3-Linear/README.md index 8324f50a70..89ec1550c6 100644 --- a/translations/he/2-Regression/3-Linear/README.md +++ b/translations/he/2-Regression/3-Linear/README.md @@ -1,136 +1,137 @@ -# לבנות מודל רגרסיה באמצעות Scikit-learn: רגרסיה בארבע דרכים +# לבנות מודל רגרסיה בעזרת Scikit-learn: רגרסיה בארבע דרכים ## הערת מתחילים -רגרסיה ליניארית משמשת כאשר אנו רוצים לחזות **ערך מספרי** (לדוגמה, מחיר בית, טמפרטורה, או מכירות). -היא פועלת על ידי מציאת קו ישר המייצג בצורה הטובה ביותר את הקשר בין תכונות הקלט לפלט. +רגרסיה ליניארית משמשת כאשר רוצים לחזות **ערך מספרי** (למשל, מחיר דירה, טמפרטורה, או מכירות). +היא פועלת על ידי מציאת קו ישר המייצג בצורה הטובה ביותר את הקשר בין תכונות קלט לפלט. -בשיעור זה, נתמקד בהבנת המושג לפני שנחפש טכניקות רגרסיה מתקדמות יותר. -![רגרסיה ליניארית לעומת פולינומית אינפוגרפיקה](../../../../translated_images/he/linear-polynomial.5523c7cb6576ccab.webp) -> אינפוגרפיקה מאת [דאסאני מדיפאלי](https://twitter.com/dasani_decoded) -## [חידון לפני השיעור](https://ff-quizzes.netlify.app/en/ml/) +בשיעור זה נתמקד בהבנת המושג לפני שנחקור טכניקות רגרסיה מתקדמות יותר. +![Linear vs polynomial regression infographic](../../../../translated_images/he/linear-polynomial.5523c7cb6576ccab.webp) +> אינפוגרפיקה מאת [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [מבחן טרום-הרצאה](https://ff-quizzes.netlify.app/en/ml/) -> ### [שיעור זה זמין ב-R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [השיעור זמין גם ב-R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### מבוא -עד כה חקרתם מהי רגרסיה באמצעות דוגמת נתונים שנלקחה ממאגר הנתונים למחירי דלעות שבו נשתמש לאורך כל השיעור. גם הצגתם זאת באמצעות Matplotlib. +עד כה חקרתם מהי רגרסיה עם דוגמת נתונים שנאספה ממאגר מחירי דלעות שבו נשתמש לאורך כל השיעור. גם ויזואליתם זאת בעזרת Matplotlib. -כעת אתם מוכנים לצלול לעומק אל עולם הרגרסיה ללמידת מכונה. בעוד שהויזואליזציה מאפשרת לכם להבין נתונים, הכוח האמיתי של למידת מכונה מגיע מ_מודלים מאומנים_. מודלים מאומנים על נתונים היסטוריים כדי ללכוד באופן אוטומטי תלות בין הנתונים, ומאפשרים לכם לחזות תוצאות עבור נתונים חדשים, אותם המודל לא ראה קודם. +עכשיו אתם מוכנים לעומק נוסף לגבי רגרסיה בלמידת מכונה. בעוד שויזואליזציה מאפשרת להבין את הנתונים, הכוח האמיתי בלמידת מכונה מגיע מ_הכשרת מודלים_. מודלים מאומנים על נתונים היסטוריים כדי ללכוד אוטומטית תלות בנתונים, ומאפשרים לחזות תוצאות עבור נתונים חדשים שהמודל לא ראה בעבר. -בשיעור הזה תלמדו על שני סוגים של רגרסיה: _רגרסיה ליניארית בסיסית_ ו_רגרסיה פולינומית_, יחד עם חלק מהמתמטיקה שמאחורי הטכניקות האלה. המודלים האלה יאפשרו לנו לחזות מחירי דלעות בהתאם לנתוני קלט שונים. +בשיעור זה תלמדו עוד על שני סוגי רגרסיה: _רגרסיה ליניארית בסיסית_ ו_רגרסיה פולינומית_, יחד עם מתמטיקה בסיסית מאחורי הטכניקות האלו. מודלים אלה יאפשרו לנו לחזות מחירי דלעות בהתאם לנתוני קלט שונים. -[![למידת מכונה למתחילים - הבנת רגרסיה ליניארית](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "למידת מכונה למתחילים - הבנת רגרסיה ליניארית") +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 לחצו על התמונה למעלה לסרטון קצר המסביר רגרסיה ליניארית. +> 🎥 לחצו על התמונה למעלה לסרטון קצר על רגרסיה ליניארית. -> לאורך כל התכנית אנו מניחים ידע מינימלי במתמטיקה, ושואפים להפוך את התוכן לנגיש לסטודנטים ממקצועות אחרים, לכן שימו לב להערות, 🧮 קריאות, דיאגרמות, וכלי למידה נוספים שיעזרו לכם בהבנה. +> לאורך כל התכנית אנו מניחים ידע מתמטי מינימלי, ומנסים להפוך את החומר לזמין לסטודנטים מתחומים אחרים, לכן שימו לב להערות, 🧮 קריאות, דיאגרמות וכלי לימוד נוספים המסייעים בהבנה. -### דרישות מקדימות +### דרישות מוקדמות -עד כה עליכם להיות מוכרים עם מבנה נתוני הדלעות שאנו בודקים. ניתן למצוא אותם טעונים ומנוקים מראש בקובץ _notebook.ipynb_ של השיעור הזה. בקובץ, מחיר הדלעות מוצג לפי באושל במסגרת מסגרת נתונים חדשה. וודאו שניתן להריץ קבצים אלה ב-kernels של Visual Studio Code. +כעת אתם אמורים להיות מכירים את מבנה נתוני הדלעות אותם אנו בוחנים. ניתן למצוא אותם טעונים ומנוקים מראש בקובץ ה_ notebook.ipynb_ של השיעור. בקובץ, מחיר הדלעות מוצג לאשכול בדף נתונים חדש. +ודאו שאתם יכולים להריץ מחברות אלה בסביבות בקוד של Visual Studio. ### הכנה -לתזכורת, אתם טוענים את הנתונים האלה כדי לשאול עליהם שאלות. +כתזכורת, אתם טוענים את הנתונים כדי שתוכלו לשאול שאלות לגביהם. -- מתי הזמן הטוב ביותר לקנות דלעות? -- איזה מחיר אפשר לצפות עבור קופסת דלעות מיני? -- האם כדאי לקנות בסלים של חצי באושל או בקופסה של 1 1/9 באושל? -נמשיך לחפור בנתונים האלה. +- מתי הזמן הטוב ביותר לקנות דלעות? +- איזה מחיר אוכל לצפות עבור קרטון דלעות מיניאטוריות? +- האם כדאי לקנות בסלי חצי אשכול או בקרטון 1 1/9 אשכול? +נמשיך לחפש תשובות בנתונים אלו. -בשיעור הקודם יצרתם מסגרת נתונים של Pandas ומילאתם אותה בחלק מן הנתונים המקוריים, כשהמחיר מתוקנן לפי הבאושל. עם זאת, בדרך זו הצלחתם לאסוף רק כ-400 נקודות מידע ורק לחודשי הסתיו. +בשיעור הקודם יצרתם DataFrame ב-Pandas ומילאתם אותו בחלק מנתוני המקור תוך סטנדרטיזציה של המחיר לפי אשכול. עם זאת, עשיתם זאת רק ל-400 נקודות נתונים בלבד ולחודשים של הסתיו. -תסתכלו על הנתונים הטעונים מראש במחברת המצורפת לשיעור זה. הנתונים טעונים מראש ויצרנו גרף פיזור ראשוני שמראה את נתוני החודשים. אולי נוכל לקבל פרטים נוספים על אופי הנתונים על ידי ניקוי נוסף. +עיינו בנתונים שנטענו מראש במחברת הנלווית לשיעור זה. הנתונים נטענים מראש וגרף פיזור ראשוני מוצג להראות נתוני חודשים. אולי נוכל לקבל פרטים מדויקים יותר על טיב הנתונים על ידי ניקוי נוסף. -## קו רגרסיה ליניארית +## קו רגרסיה ליניארי -כפי שלמדתם בשיעור 1, המטרה של תרגיל רגרסיה ליניארית היא להיות מסוגלים לשרטט קו כדי: +כפי שלמדתם בשיעור 1, המטרה של תרגיל רגרסיה ליניארית היא להיות מסוגלים לצייר קו ש: -- **להראות קשר בין משתנים**. להראות את הקשר בין המשתנים. -- **לעשות תחזיות**. לבצע תחזיות מדויקות לגבי מיקום נקודת נתונים חדשה ביחס לקו זה. +- **מראה יחסים בין משתנים**. מציג את הקשר בין משתנים +- **מבצע תחזיות**. מבצע תחזיות מדויקות לגבי היכן תפול נקודת נתונים חדשה ביחס לקו. -מקובל להשתמש ב**רגרסיית הריבועים הפחותים** לציור קו כזה. המונח "ריבועים הפחותים" מתייחס לתהליך של מזעור השגיאה הכוללת במודל שלנו. עבור כל נקודת נתונים, אנו מודדים את המרחק האנכי (נקרא שארית) בין הנקודה האמיתית לקו הרגרסיה. +זה טיפוסי ל**רגרסיה בריבועי המינימום** לשרטט קו כזה. המונח "ריבועי המינימום" מתייחס לתהליך המיזעור של השגיאה הכוללת במודל שלנו. עבור כל נקודת נתונים, אנו מודדים את המרחק האנכי (נקרא שארית) בין הנקודה בפועל לקו הרגרסיה שלנו. -אנו מוכפלים את המרחקים האלה בריבוע משתי סיבות עיקריות: +אנו מרובעים את המרחקים הללו משני סיבות עיקריות: -1. **גודל ולא כיוון:** אנו רוצים להתייחס לשגיאה של -5 באותו אופן כמו לשגיאה של +5. הכפלה בריבוע הופכת את כל הערכים לחיוביים. +1. **גודל במקום כיוון:** אנו רוצים להתייחס לשגיאה של -5 באותה צורה כמו לשגיאה של +5. ריבוע הופך את כל הערכים לחיוביים. -2. **עונש לחריגות:** ריבוע נותן משקל גבוה יותר לשגיאות גדולות, ומכריח את הקו להישאר קרוב יותר לנקודות הרחוקות. +2. **עונש לאאוטליירים:** ריבוע נותן משקל גדול יותר לשגיאות גדולות, מה שמאלץ את הקו להתקרב לנקודות המרוחקות יותר. -אחרי זה אנו מוסיפים את כל הערכים בריבוע יחד. המטרה שלנו היא למצוא את הקו הספציפי שבו סכום זה הוא הנמוך ביותר (הערך הקטן ביותר האפשרי) — ומכאן השם "ריבועים הפחותים". +לאחר מכן נסכום את כל הערכים המרובעים יחד. המטרה היא למצוא את הקו הספציפי שבו הסכום הזה מינימלי (הערך הקטן ביותר האפשרי) - hence השם "ריבועי המינימום". -> **🧮 הראה לי את המתמטיקה** -> -> קו זה, שנקרא _קו ההתאמה הטובה ביותר_ ניתן לתאר באמצעות [משוואה](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 תציג לי את המתמטיקה** +> +> הקו הזה, הנקרא _קו ההתאמה הטובה ביותר_, ניתן לביטוי ב[משוואה](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` הוא 'משתנה מסביר'. `Y` הוא 'משתנה תלוי'. השיפוע של הקו הוא `b` ו-`a` הוא נקודת החיתוך עם ציר ה-Y, שמתאר את ערך `Y` כאשר `X = 0`. -> ->![חישוב השיפוע](../../../../translated_images/he/slope.f3c9d5910ddbfcf9.webp) -> -> תחילה, חשבו את השיפוע `b`. אינפוגרפיקה מאת [ג'ן לופר](https://twitter.com/jenlooper) -> -> במילים אחרות, ובמתייחס לשאלה המקורית של נתוני הדלעות שלנו: "לחזות את מחיר הדלעת ליחידת באושל לפי חודש", `X` יהיה מחיר ו-`Y` יהיה חודש המכירה. -> ->![השלים את המשוואה](../../../../translated_images/he/calculation.a209813050a1ddb1.webp) -> -> חשבו את ערך Y. אם אתם משלמים כ־4 דולר, חייב להיות שזה אפריל! אינפוגרפיקה מאת [ג'ן לופר](https://twitter.com/jenlooper) -> -> המתמטיקה המחושבת את הקו חייבת להראות את השיפוע של הקו, שתלוי גם בנקודת החיתוך, או היכן ש-`Y` נמצא כאשר `X = 0`. -> -> ניתן לראות את שיטת החישוב עבור הערכים האלה באתר [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). בקרו גם במחשבון [ריבועים הפחותים הזה](https://www.mathsisfun.com/data/least-squares-calculator.html) כדי לראות איך ערכי המספרים משפיעים על הקו. +> +> `X` הוא ה'משתנה המסביר'. `Y` הוא ה'משתנה התלוי'. השיפוע של הקו הוא `b` ו-`a` הוא החיתוך ב-y, שמתייחס לערך של `Y` כאשר `X = 0`. +> +>![calculate the slope](../../../../translated_images/he/slope.f3c9d5910ddbfcf9.webp) +> +> ראשית, חשבו את השיפוע `b`. אינפוגרפיקה מאת [Jen Looper](https://twitter.com/jenlooper) +> +> במילים אחרות, ובהתייחס לשאלת נתוני הדלעות שלנו: "לחזות את מחיר דלעת לאשכול לפי חודש", `X` יהיה המחיר ו-`Y` יהיה חודש המכירה. +> +>![complete the equation](../../../../translated_images/he/calculation.a209813050a1ddb1.webp) +> +> חשבו את ערך Y. אם אתם משלמים סביב 4$, זה בטח אפריל! אינפוגרפיקה מאת [Jen Looper](https://twitter.com/jenlooper) +> +> המתמטיקה שמחשבת את הקו חייבת להראות את שיפוע הקו, שהוא גם תלוי בחתך, כלומר היכן ש-`Y` ממוקם כאשר `X = 0`. +> +> ניתן לצפות בשיטת החישוב בערכים אלו באתר [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). בקרו גם ב[מחשבון ריבועי המינימום](https://www.mathsisfun.com/data/least-squares-calculator.html) כדי לראות כיצד ערכי המספרים משפיעים על הקו. ## קורלציה -עוד מונח שיש להבין הוא **מקדם המתאם** בין משתני X ו-Y נתונים. בעזרת גרף פיזור ניתן להמחיש במהירות מקדם זה. גרף עם נקודות מפוזרות לאורך קו נקי הוא בעל קורלציה גבוהה, אך גרף עם נקודות מפוזרות בכל מקום בין X ל-Y הוא בעל קורלציה נמוכה. +מונח נוסף שיש להבין הוא **מקדם הקורלציה** בין משתני X ו-Y נתונים. בעזרת גרף פיזור ניתן לראות במהרה את המקדם הזה. גרף עם נקודות מפוזרות על קו מסודר מראה קורלציה גבוהה, וגרף עם נקודות מפוזרות בכל מקום בין X ו-Y מראה קורלציה נמוכה. -מודל רגרסיה ליניארית טוב יהיה כזה שיביא למקדם מתאם גבוה (קרוב ל-1 יותר מאשר ל-0) באמצעות שיטת ריבועי השגיאות הפחותים עם קו רגרסיה. +מודל רגרסיה ליניארית טוב יהיה כזה שמקדם הקורלציה שלו גבוה (קרוב יותר ל-1 ולא ל-0) בשיטת ריבועי המינימום עם קו רגרסיה. -✅ הריצו את המחברת המצורפת לשיעור זה וצפו בגרף פיזור מחיר לפי חודש. האם הנתונים הקושרים בין חודש למחיר מכירות דלעות נראים בעלי קורלציה גבוהה או נמוכה, לפי הפרשנות הויזואלית שלכם לגרף הפיזור? האם זה משתנה אם משתמשים במדד מדויק יותר במקום `Month`, למשל *יום בשנה* (כלומר מספר הימים מאז תחילת השנה)? +✅ הרץ את המחברת המצורפת לשיעור זה והסתכל על גרף פיזור של חודש מול מחיר. האם הנתונים המקשרים בין חודש למחיר למכירת דלעות נראים עם קורלציה גבוהה או נמוכה, לפי הפרשנות הויזואלית שלך לגרף הפיזור? האם זה משתנה אם תשתמש במדידה מדויקת יותר במקום `חודש`, למשל *יום בשנה* (כלומר מספר הימים מאז תחילת השנה)? -בקוד למטה נניח שניקינו את הנתונים, וקיבלנו מסגרת נתונים בשם `new_pumpkins`, דומה לטבלה הבאה: +בקוד למטה, נניח שניקינו את הנתונים וקיבלנו את ה-DataFrame בשם `new_pumpkins`, דומה לטבלה הבאה: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +| ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price | +|---|---|---|---|---|---|---|---|---| +| 70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 | +| 71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 | +| 72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 | +| 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 | +| 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 | -> הקוד לניקוי הנתונים זמין ב-[`notebook.ipynb`](notebook.ipynb). ביצענו את אותם צעדי ניקוי כמו בשיעור הקודם, וחישבנו את העמודה `DayOfYear` באמצעות הביטוי הבא: +> הקוד לניקוי הנתונים זמין ב-[`notebook.ipynb`](notebook.ipynb). ביצענו את אותם שלבי ניקוי כפי בשיעור הקודם, וחישבנו את עמודת `DayOfYear` בעזרת הביטוי הבא: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -עכשיו כשיש לכם הבנה של המתמטיקה שמאחורי רגרסיה ליניארית, בואו ניצור מודל רגרסיה כדי לבדוק אם נוכל לחזות איזו חבילה של דלעות תכיל את מחירי הדלעות הטובים ביותר. מישהו שקונה דלעות לחג עלול לרצות מידע זה כדי למקסם את רכישת חבילות הדלעות שלו עבור החג. + +כעת כשיש לכם הבנה של המתמטיקה מאחורי רגרסיה ליניארית, נבנה מודל רגרסיה כדי לבדוק האם נוכל לחזות איזו חבילת דלעות תציע את המחירים הטובים ביותר. מישהו שרוכש דלעות לפעילות של חג עשוי לרצות מידע זה כדי לייעל את רכישות הפריטים לחג. ## מחפשים קורלציה -[![למידת מכונה למתחילים - מחפשים קורלציה: המפתח לרגרסיה ליניארית](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "למידת מכונה למתחילים - מחפשים קורלציה: המפתח לרגרסיה ליניארית") +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 לחצו על התמונה למעלה לסרטון קצר המסביר קורלציה. +> 🎥 לחצו על התמונה למעלה לסרטון קצר על קורלציה. -בשיעור הקודם כנראה ראיתם שהמחיר הממוצע לפי חודשים נראה כך: +מהשיעור הקודם כנראה ראיתם שמחיר ממוצע לפי חודשים נראה כך: -מחיר ממוצע לפי חודש +Average price by month -הדבר מצביע על כך שצריכה להיות קורלציה, ואפשר לנסות לאמן מודל רגרסיה ליניארית לחזות את הקשר בין `Month` ל-`Price`, או בין `DayOfYear` ל-`Price`. להלן גרף הפיזור שמראה את הקשר האחרון: +זה מרמז שבעצם יש קורלציה מסוימת, וניתן לנסות לאמן מודל רגרסיה ליניארית כדי לחזות את הקשר בין `Month` ל-`Price`, או בין `DayOfYear` ל-`Price`. להלן גרף פיזור שמראה את הקשר האחרון: -גרף פיזור של מחיר מול יום בשנה +Scatter plot of Price vs. Day of Year -נבדוק אם קיימת קורלציה באמצעות הפונקציה `corr`: +נראה אם יש קורלציה באמצעות פונקציית `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -נראה שהקורלציה יחסית נמוכה, -0.15 לפי `Month` ו- -0.17 לפי `DayOfMonth`, אך ייתכן שקיים קשר חשוב אחר. נראה שישנם אשכולות שונים של מחירים התואמים לזני דלעות שונים. כדי לאשר השערה זו, נשרטט כל קטגוריית דלעות בצבע שונה. על ידי העברת פרמטר `ax` לפונקציית הפריטה `scatter` נוכל להראות את כל הנקודות באותה גרף: + +נראה שהקורלציה יחסית קטנה, -0.15 לפי `Month` ו- -0.17 לפי `DayOfYear`, אבל יכול להיות שיש קשר חשוב אחר. נראה שיש אשכולות שונים של מחירים בהתאם לסוגים שונים של דלעות. לאישור השערה זו, נשרטט כל קטגוריה בצבע שונה. כאשר מעבירים פרמטר `ax` לפונקציית ה-`scatter` ניתן להציג את כל הנקודות באותו הגרף: ```python ax=None @@ -139,75 +140,76 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Scatter plot of Price vs. Day of Year -גרף פיזור של מחיר מול יום בשנה בצבעים - -החקירה שלנו מצביעה על כך שלזן יש השפעה גדולה יותר על המחיר הכולל מאשר על תאריך המכירה בפועל. נוכל לראות זאת באמצעות תרשים עמודות: +החקירה שלנו מרמזת שלזן יש יותר השפעה על המחיר הכולל מאשר תאריך המכירה בפועל. ניתן לראות זאת בעזרת גרף עמודות: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Bar graph of price vs variety -תרשים עמודות של מחיר מול זן - -נקדיש כרגע תשומת לב לזן אחד בלבד, 'pie type', ונראה מה השפעת התאריך על המחיר: +נתמקד כעת רק בסוג דלעת אחד, 'pie type', ונראה מה ההשפעה של התאריך על המחיר: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -גרף פיזור של מחיר מול יום בשנה 粒 görnüş + +Scatter plot of Price vs. Day of Year -עכשיו אם נחשב את הקורלציה בין `Price` ל-`DayOfYear` באמצעות הפונקציה `corr`, נקבל משהו בסביבות `-0.27` - מה שאומר שאימון מודל ניבוי הגיוני. +אם נחשב כעת את הקורלציה בין `Price` ל-`DayOfYear` בעזרת פונקציית `corr`, נקבל משהו בסביבות `-0.27` - מה שאומר שאימון מודל תחזית הגיוני. -> לפני אימון מודל רגרסיה ליניארית, חשוב לוודא שהנתונים שלנו נקיים. רגרסיה ליניארית אינה עובדת טוב עם ערכים חסרים, לכן כדאי להיפטר מכל התאים הריקים: +> לפני אימון מודל רגרסיה ליניארית, חשוב לוודא שהנתונים שלנו נקיים. רגרסיה ליניארית לא פועלת טוב עם ערכים חסרים, ולכן כדאי להיפטר מכל התאים הריקים: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -גישה נוספת תהיה למלא את הערכים החסרים בערכים ממוצעים מתוך העמודה המתאימה. + +גישה נוספת תהיה למלא ערכים ריקים אלו בערך הממוצע מהעמודה המתאימה. ## רגרסיה ליניארית פשוטה -[![למידת מכונה למתחילים - רגרסיה ליניארית ופולינומית באמצעות Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "למידת מכונה למתחילים - רגרסיה ליניארית ופולינומית באמצעות Scikit-learn") +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 לחצו על התמונה למעלה לסרטון קצר המסביר רגרסיה ליניארית ופולינומית. +> 🎥 לחצו על התמונה למעלה לסרטון קצר על רגרסיה ליניארית ופולינומית. -לאימון מודל הרגרסיה הליניארית שלנו נשתמש בספריית **Scikit-learn**. +לאימון מודל הרגרסיה הליניארית שלנו, נשתמש בספריית **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -נתחיל בהפרדת ערכי הקלט (תכונות) והתוצאה המצופה (תווית) למערכי numpy נפרדים: + +נתחיל מלהפריד את ערכי הקלט (התכונות) ואת הפלט הצפוי (התיוג) למערכי numpy נפרדים: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> שימו לב שנאלצנו לבצע `reshape` על נתוני הקלט כדי שחבילת הרגרסיה הליניארית תבין אותם נכון. רגרסיה ליניארית מצפה לקבל מערך דו-ממדי כקלט, שבו כל שורה היא וקטור של תכונות קלט. במקרה שלנו, שכן יש לנו רק תכונה אחת, אנו זקוקים למערך בצורת N×1, כאשר N הוא גודל המערך. -> שימו לב שנאלצנו לבצע `reshape` על נתוני הקלט כדי שהחבילה Linear Regression תוכל להבין אותם כראוי. רגרסיה ליניארית מצפה לקבל מערך דו-ממדי כקלט, שבו כל שורה במערך מייצגת וקטור של תכונות הקלט. במקרה שלנו, מכיוון שיש לנו רק קלט אחד - דרוש מערך בצורת N×1, כאשר N הוא גודל מאגר הנתונים. - -לאחר מכן, נצטרך לחלק את הנתונים למאגר אימון ומאגר בדיקה כדי שנוכל לאמת את המודל לאחר האימון: +לאחר מכן, נחלק את הנתונים למערכי אימון ובדיקה, כדי שנוכל לאמת את המודל לאחר האימון: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -לבסוף, אימון מודל הרגרסיה הליניארית בפועל לוקח רק שתי שורות קוד. אנו מגדירים את האובייקט `LinearRegression`, ומתאימים אותו לנתונים שלנו באמצעות השיטה `fit`: + +לבסוף, אימון מודל הרגרסיה הליניארית בפועל דורש רק שתי שורות קוד. נכין את האובייקט `LinearRegression`, ונאמן אותו על הנתונים בעזרת המתודה `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -אובייקט `LinearRegression` לאחר ביצוע `fit` מכיל את כל המקדמים של הרגרסיה, אליהם ניתן לגשת באמצעות המאפיין `.coef_`. במקרה שלנו, יש רק מקדם אחד, שצריך להיות סביב `-0.017`. המשמעות היא שמחירי הדלעות נראים יורדים מעט עם הזמן, אבל לא יותר מדי, בסביבות 2 סנט ליום. ניתן גם לגשת לנקודת המפגש של הרגרסיה עם ציר ה-Y באמצעות `lin_reg.intercept_` - היא תהיה סביב `21` במקרה שלנו, מציינת את המחיר בתחילת השנה. +אובייקט `LinearRegression` לאחר ביצוע `fit` מכיל את כל המקדמים של הרגרסיה, אליהם ניתן לגשת באמצעות הפרופרטי `.coef_`. במקרה שלנו, יש רק מקדם אחד, אשר אמור להיות בערך `-0.017`. משמעות הדבר היא שהמחירים נראים כמי שמצטמצמים קצת עם הזמן, אבל לא הרבה, בערך 2 סנט ליום. ניתן גם לגשת לנקודת החיתוך של הרגרסיה עם ציר Y בעזרת `lin_reg.intercept_` - היא תהיה בסביבות `21` במקרה שלנו, מציינת את המחיר בתחילת השנה. -כדי לראות כמה המודל שלנו מדויק, נוכל לחזות מחירים על סט נתוני בדיקה, ואז למדוד כמה החזויים שלנו קרובים לערכים הצפויים. אפשר לעשות זאת באמצעות מדד שגיאת השורש הממוצעת המרובעת (RMSE), שהוא השורש של ממוצע כל ההפרשים בריבוע בין הערך הצפוי והערך החזוי. +כדי לראות עד כמה המודל מדויק, נוכל לנבא מחירים על קבוצת בדיקה, ואז למדוד כמה קרובות ההתפלגויות שלנו לערכים הצפויים. זאת ניתן לעשות באמצעות מדד שורש ממוצע הריבועים (RMSE), שהוא השורש של ממוצע כל ההבדלים המרובעים בין הערך הצפוי לערך החזוי. ```python pred = lin_reg.predict(X_test) @@ -216,16 +218,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -השגיאה שלנו נראית באזור של כ-2 נקודות, שזה בערך ~17%. לא כל כך טוב. מדד נוסף לאיכות המודל הוא **מקדם הקביעה**, שניתן לקבל כך: +שגיאתנו נראית בסביבות 2 נקודות, שזה ~17%. לא טוב מדי. אינדיקטור נוסף לאיכות המודל הוא **מקדם הקביעה**, אותו ניתן לקבל כך: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` +אם הערך הוא 0, זה אומר שהמודל לא לוקח את נתוני הקלט בחשבון, ופועל כ-*התחזית הקווית הגרועה ביותר*, שהיא פשוט ממוצע הערכים. הערך 1 אומר שניתן לנבא בצורה מושלמת את כל הפלטים הצפויים. במקרה שלנו, המקדם הוא בסביבות 0.06, שזה די נמוך. -אם הערך הוא 0, זה אומר שהמודל אינו מתחשב בנתוני הקלט ופועל כ-*התחזית הלינארית הגרועה ביותר*, שהיא פשוט ערך ממוצע של התוצאה. הערך 1 מצביע על כך שניתן לחזות במדויק את כל הערכים הצפויים. במקרה שלנו, המקדמה היא סביב 0.06, שזה יחסית נמוך. - -נוכל גם לשרטט את נתוני הבדיקה יחד עם קו הרגרסיה כדי לראות טוב יותר איך הרגרסיה עובדת במקרה שלנו: +ניתן גם לשרטט את נתוני הבדיקה יחד עם קו הרגרסיה כדי לראות טוב יותר איך הרגרסיה פועלת אצלנו: ```python plt.scatter(X_test,y_test) @@ -234,19 +235,19 @@ plt.plot(X_test,pred) Linear regression -## רגרסיה פולינומית +## רגרסיה פולינומיאלית -סוג נוסף של רגרסיה לינארית הוא רגרסיה פולינומית. לפעמים יש קשר לינארי בין משתנים - למשל, ככל שהדלעת גדולה יותר בנפח, המחיר גבוה יותר - אבל לפעמים הקשרים האלה לא ניתנים לייצוג כמישור או כקו ישר. +סוג נוסף של רגרסיה קווית הוא רגרסיה פולינומיאלית. בעוד שלפעמים יש קשר לינארי בין משתנים - ככל שהדלעת גדולה יותר בנפח, כך המחיר גבוה יותר - לעיתים קשרים אלו לא ניתנים לשרטוט כמישור או קו ישר. -✅ הנה [כמה דוגמאות נוספות](https://online.stat.psu.edu/stat501/lesson/9/9.8) לנתונים שיכולים להשתמש ברגרסיה פולינומית +✅ הנה [כמה דוגמאות נוספות](https://online.stat.psu.edu/stat501/lesson/9/9.8) של נתונים שיכולים להשתמש ברגרסיה פולינומיאלית. -הסתכלו שוב על הקשר בין תאריך למחיר. האם הפיזור הזה נראה כמו משהו שצריך בהכרח לנתח באמצעות קו ישר? האם המחירים לא עשויים להשתנות? במצב כזה, אפשר לנסות רגרסיה פולינומית. +תסתכל שוב על הקשר בין תאריך למחיר. האם נראה שהתפלגות הנקודות הזו חייבת להיות מנותחת על ידי קו ישר? האם המחירים לא יכולים להשתנות? במקרה כזה, ניתן לנסות רגרסיה פולינומיאלית. -✅ פולינומים הם ביטויים מתמטיים שעשויים לכלול משתנה או יותר ומקדמים +✅ פולינומים הם ביטויים מתמטיים שעשויים לכלול אחד או יותר משתנים ומקדמים. -רגרסיה פולינומית יוצרת קו מעוקל שיתאים טוב יותר לנתונים לא לינאריים. במקרה שלנו, אם נכלול את המשתנה הרבוע `DayOfYear` בתוך נתוני הקלט, נוכל לנסות להתאים את הנתונים שלנו בעקומה פרבולית, שתכלול נקודת מינימום מסוימת בתוך השנה. +רגרסיה פולינומיאלית יוצרת קו מעוקל כדי להתאים טוב יותר לנתונים לא לינאריים. במקרה שלנו, אם נכלול משתנה `DayOfYear` בריבוע בתור נתון, נוכל להתאים את הנתונים שלנו בעזרת עקומה פרבולית, שתהיה לה מינימום בנקודה מסוימת בתוך השנה. -סייקיט-לרן כוללת API נוח בשם [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) שמשלב ביחד כמה שלבי עיבוד של הנתונים. **פייפליין** הוא שרשרת של **אמדנים**. במקרה שלנו, ניצור פייפליין שמוסיף תחילה תכונות פולינומיות למודל, ואחר כך מאמן את הרגרסיה: +ספריית Scikit-learn כוללת [API של צינור](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) מועיל לשילוב שלבים שונים בעיבוד הנתונים יחד. **צינור** הוא שרשרת של **מנחשים (Estimators)**. במקרה שלנו, ניצור צינור שמוסיף תחילה תכונות פולינומיאליות למודל, ואז מאמן את הרגרסיה: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +258,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -שימוש ב-`PolynomialFeatures(2)` משמעותו שנכליל את כל הפולינומים ממעלה שנייה מתוך נתוני הקלט. במקרה שלנו זה יהיה רק `DayOfYear`2, אבל אם יש לנו שני משתנים קלט, X ו-Y, זה יכלול את X2, XY ו-Y2. אפשר גם להשתמש בפולינומים ממעלה גבוהה יותר אם רוצים. +השימוש ב-`PolynomialFeatures(2)` פירושו שנכליל את כל הפולינומים מדרגה שנייה מהנתונים. במקרה שלנו זה פשוט אומר `DayOfYear`2, אך אם יהיו שני משתנים קלט X ו-Y, זה יוסיף X2, XY ו-Y2. נוכל גם להשתמש בפולינומים מדרגות גבוהות יותר אם נרצה. + +ניתן להשתמש בצינורות באותה צורה כמו האובייקט המקורי `LinearRegression`, כלומר ניתן לבצע `fit` על הצינור, ואז להשתמש ב-`predict` לקבלת תוצאות החיזוי: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +כדי לשרטט את העקומה החלקה, אנו משתמשים ב-`np.linspace` כדי ליצור טווח אחיד של ערכי קלט, במקום לשרטט ישירות על נתוני הבדיקה הלא מסודרים (מה שהיה מייצר קו זיגזג): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -ניתן להשתמש בפייפליינים באותה צורה שבה השתמשנו באובייקט `LinearRegression` המקורי, כלומר נבצע `fit` לפייפליין, ואז נשתמש ב-`predict` לקבלת התוצאות. הנה הגרף שמראה את נתוני הבדיקה ואת עקומת ההתאמה: +הנה הגרף שמציג את נתוני הבדיקה ואת עקומת האפרוקסימציה: Polynomial regression -באמצעות רגרסיה פולינומית נוכל לקבל מעט פחות שגיאה ממוצעת מרובעת ומקדמת קביעה גבוהה יותר, אך לא משמעותית. צריך לקחת בחשבון תכונות נוספות! +באמצעות רגרסיה פולינומיאלית, ניתן לקבל RMSE נמוך יותר במעט וקביעות גבוהה יותר, אך לא משמעותית. צריך לקחת בחשבון תכונות נוספות! -> אפשר לראות שמחירי הדלעות הנמוכים ביותר נצפים בערך סביב הלואווין. איך אתה מסביר את זה? +> ניתן לראות שהמחירים המינימליים לדלעות מתרחשים בערך סביב ליל כל הקדושים. איך תסבירו זאת? -🎃 מזל טוב, רק יצרת מודל שיכול לעזור לחזות את מחירי דלעות הפאי. כנראה שתוכל לחזור על אותה פעולה עבור כל סוגי הדלעות, אבל זה יהיה משעמם. בוא נלמד עכשיו כיצד לקחת את סוג הדלעת בחשבון במודל שלנו! +🎃 כל הכבוד, יצרתם זה עתה מודל שיכול לעזור לנבא את מחיר דלעות הפאי. כנראה תוכלו לחזור על אותה פעולה עבור כל סוגי הדלעות, אך זה יהיה מייגע. בואו עכשיו נלמד כיצד לקחת בחשבון את זני הדלעת במודל שלנו! ## תכונות קטגוריאליות -בעולם האידיאלי, היינו רוצים לחזות מחירים עבור סוגים שונים של דלעות תוך שימוש באותו מודל. עם זאת, עמודת `Variety` שונה במקצת מעמודות כמו `Month`, כי היא מכילה ערכים שאינם מספריים. עמודות כאלה נקראות **קטגוריאליות**. +בעולם האידיאלי, נרצה להיות מסוגלים לנבא מחירים של זני דלעות שונים באמצעות אותו מודל. עם זאת, עמודת `Variety` שונה במקצת מעמודות כמו `Month`, כי היא מכילה ערכים לא נומריים. עמודות כאלה נקראות **קטגוריאליות**. -[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![ML למתחילים - תחזיות עם תכונה קטגוריאלית ברגרסיה ליניארית](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML למתחילים - תחזיות עם תכונה קטגוריאלית ברגרסיה ליניארית") -> 🎥 לחצו על התמונה למעלה לסרטון קצר שמסביר על שימוש בתכונות קטגוריאליות. +> 🎥 לחצו על התמונה למעלה לסרטון קצר שמסביר את השימוש בתכונות קטגוריאליות. -כאן נראה איך המחיר הממוצע תלוי בסוג: +כאן ניתן לראות איך המחיר הממוצע משתנה בהתאם לזן: Average price by variety -כדי לקחת בחשבון את הסוג, אנחנו צריכים קודם להמיר אותו לצורה מספרית, כלומר **לקודד** אותו. יש כמה דרכים לעשות זאת: +כדי לקחת את הזן בחשבון, עלינו תחילה להמיר אותו לצורת מספרית, או **לקודד** אותו. יש מספר דרכים לעשות זאת: -* **הקידוד המספרי הפשוט** יבנה טבלה של סוגים שונים, ואז יחליף את שם הסוג עם אינדקס בטבלה הזו. זו לא רעיון טוב במיוחד עבור רגרסיה לינארית, כי הרגרסיה הלינארית מתייחסת לערך המספרי הממשי של האינדקס ומוסיפה אותו לתוצאה, כפול מקדם מסוים. במקרה שלנו, הקשר בין מספר האינדקס למחיר אינו לינארי, אפילו אם נסדר את האינדקסים בסדר כלשהו. -* **קידוד one-hot** יחליף את העמודה `Variety` בארבעה עמודות שונות, אחת לכל סוג. כל עמודה תכיל `1` אם השורה המקבילה שייכת לסוג זה, ו-`0` אחרת. המשמעות היא שיהיו ארבעה מקדמים ברגרסיה הלינארית, אחד לכל סוג דלעת, שאחראים על "מחיר התחלתי" (או יותר נכון המחיר הנוסף) עבור הסוג המסוים הזה. +* **קידוד מספרי** פשוט יבנה טבלה של זנים שונים, ואז יחליף את שם הזן באינדקס בטבלה. זו לא הרעיון הטוב ביותר לרגרסיה קווית, כי הרגרסיה הקווית לוקחת את הערך המספרי של האינדקס ומוסיפה אותו לתוצאה, מכפילה במקדם כלשהו. במקרה שלנו, הקשר בין מספר האינדקס למחיר ברור שאיננו לינארי, אפילו אם נוודא שהאינדקסים מסודרים בדרך מסוימת. +* **קידוד One-hot** יחליף את עמודת `Variety` ב-4 עמודות שונות, אחת לכל זן. כל עמודה תכיל `1` אם השורה המתאימה היא מהזן הזה, ו-`0` אחרת. משמעות הדבר היא שיהיו ארבעה מקדמים ברגרסיה קווית, אחד לכל זן דלעת, שאחראים על "מחיר התחלתי" (או יותר נכון "מחיר נוסף") לאותו זן מסוים. -הקוד מטה מראה איך לקודד את הסוג ב-one-hot: +הקוד הבא מראה איך ניתן לקודד זן בקידוד One-hot: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +326,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -כדי לאמן רגרסיה לינארית עם סוג מקודד ב-one-hot כקלט, פשוט צריך לאתחל את הנתונים `X` ו-`y` בצורה נכונה: +כדי לאמן רגרסיה לינארית באמצעות זן שנקודד בתכונת one-hot, פשוט צריך לאתחל את נתוני `X` ו-`y` נכון: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -שאר הקוד זהה לזה שבו השתמשנו למעלה כדי לאמן רגרסיה לינארית. אם תנסו זאת, תראו שהשגיאה הממוצעת המרובעת דומה, אבל מקדם הקביעה גבוה משמעותית (~77%). כדי לקבל תחזיות מדויקות יותר, נוכל לקחת בחשבון יותר תכונות קטגוריאליות, וגם תכונות מספריות, כגון `Month` או `DayOfYear`. כדי לקבל מערך אחד גדול של תכונות, נוכל להשתמש ב-`join`: +שאר הקוד זהה למה שהשתמשנו למעלה לאימון רגרסיה לינארית. אם תנסו זאת, תראו ששגיאת הריבועים הממוצעת כמעט זהה, אך מקדם הקביעה גבוה בהרבה (~77%). כדי לקבל תחזיות מדויקות עוד יותר, ניתן לקחת בחשבון יותר תכונות קטגוריאליות, כמו גם תכונות מספריות, כגון `Month` או `DayOfYear`. כדי לקבל מערך תכונות אחד גדול אפשר להשתמש ב-`join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,11 +343,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -כאן אנחנו גם לוקחים בחשבון את `City` ואת סוג `Package`, מה שמביא אותנו ל-MSE של 2.84 (10%), ומקדם קביעה של 0.94! +כאן אנחנו גם לוקחים בחשבון את `City` וסוג `Package`, מה שמביא ל-RMSE של 2.84 (10.5%), וקביעות של 0.94! -## לשלב את הכול ביחד +## לשלב את הכל ביחד -כדי ליצור את המודל הטוב ביותר, נוכל להשתמש בנתונים משולבים (קטגוריאליים המקודדים ב-one-hot + מספריים) מהדוגמה שלמעלה יחד עם רגרסיה פולינומית. הנה הקוד המלא לנוחותכם: +כדי ליצור את המודל הטוב ביותר, נוכל להשתמש בנתוני משולבים (קטגוריאליים בקידוד one-hot + מספריים) מהדוגמה למעלה יחד עם רגרסיה פולינומיאלית. הנה הקוד המלא לנוחיותכם: ```python # להגדיר את נתוני האימון @@ -334,7 +357,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# לבצע חלוקה לאימון ובדיקה +# לבצע פיצול של אימון-בדיקה X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # להגדיר ולאמן את צינור העיבוד @@ -344,44 +367,44 @@ pipeline.fit(X_train,y_train) # לחזות תוצאות עבור נתוני הבדיקה pred = pipeline.predict(X_test) -# לחשב שגיאת ממוצע ריבועי ויחס ההסבר -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# לחשב שגיאת שורש ממוצעת והחלטה +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -זה אמור לתת לנו את מקדם הקביעה הטוב ביותר, כמעט 97%, ו-MSE=2.23 (~8% שגיאת תחזית). +זה אמור לתת לנו את מקדם הקביעה הטוב ביותר של כמעט 97%, ו-RMSE=2.23 (~8% שגיאת חיזוי). -| מודל | MSE | מקדם קביעה | +| מודל | RMSE | מקדם קביעה | |-------|-----|---------------| -| רגרסיה לינארית עם `DayOfYear` | 2.77 (17.2%) | 0.07 | -| רגרסיה פולינומית עם `DayOfYear` | 2.73 (17.0%) | 0.08 | -| רגרסיה לינארית עם `Variety` | 5.24 (19.7%) | 0.77 | -| רגרסיה לינארית עם כל התכונות | 2.84 (10.5%) | 0.94 | -| רגרסיה פולינומית עם כל התכונות | 2.23 (8.25%) | 0.97 | +| `DayOfYear` לינארי | 2.77 (17.2%) | 0.07 | +| `DayOfYear` פולינומיאלי | 2.73 (17.0%) | 0.08 | +| `Variety` לינארי | 5.24 (19.7%) | 0.77 | +| כל התכונות לינארי | 2.84 (10.5%) | 0.94 | +| כל התכונות פולינומיאלי | 2.23 (8.25%) | 0.97 | -🏆 כל הכבוד! יצרתם ארבעה מודלי רגרסיה בשיעור אחד, ושיפרתם את האיכות של המודל ל-97%. בסעיף הסופי ברגרסיה תלמדו על רגרסיה לוגיסטית כדי לקבוע קטגוריות. +🏆 כל הכבוד! יצרתם ארבעה מודלי רגרסיה בשיעור אחד, ושיפרתם את איכות המודל ל-97%. בקטע הסופי על רגרסיות, תלמדו על רגרסיה לוגיסטית לקביעת קטגוריות. --- ## 🚀אתגר -נסו משתנים שונים במחברת זו כדי לראות כיצד הקורלציה מתיישבת עם דיוק המודל. +בדקו מספר משתנים שונים במחברת הזו כדי לראות כיצד מתאם מתייחס לדיוק המודל. -## [מבחן אחרי ההרצאה](https://ff-quizzes.netlify.app/en/ml/) +## [מבחן לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/) ## סקירה ולמידה עצמית -בשיעור זה למדנו על רגרסיה לינארית. ישנם סוגים חשובים אחרים של רגרסיה. קראו על טכניקות Stepwise, Ridge, Lasso ו-Elasticnet. קורס טוב ללמוד ממנו עוד הוא [קורס למידה סטטיסטית של סטנפורד](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +בשיעור זה למדנו על רגרסיה לינארית. קיימים סוגים חשובים נוספים של רגרסיות. קראו על טכניקות Stepwise, Ridge, Lasso ו-Elasticnet. קורס טוב ללמוד בו עוד הוא קורס הסטטיסטיקה באוניברסיטת סטנפורד [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## מטלה +## מטלה -[בנו מודל](assignment.md) +[לבנות מודל](assignment.md) --- -**כתב ויתור**: -מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). אמנם אנו שואפים לדיוק, אך יש לקחת בחשבון שתירגומים אוטומטיים עלולים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפת המקור שלו הוא המקור הסמכותי. למידע קריטי מומלץ תרגום מקצועי ובידי אדם. איננו אחראים לכל אי הבנה או פרשנות שגויה הנובעים מהשימוש בתרגום זה. +**הצהרת אחריות**: +מסמך זה תורגם באמצעות שירות תרגום מבוסס AI [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל טעויות או אי-דיוקים. המסמך המקורי בשפה המקורית שלו צריך להיחשב כמקור האוטוריטטיבי. למידע קריטי מומלץ להשתמש בתרגום אנושי מקצועי. איננו אחראים לכל אי הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה. \ No newline at end of file diff --git a/translations/he/2-Regression/3-Linear/solution/notebook.ipynb b/translations/he/2-Regression/3-Linear/solution/notebook.ipynb index cb4eede29f..a0053a09f7 100644 --- a/translations/he/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/he/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## רגרסיה לינארית ופולינומית לתמחור דלעות - שיעור 3\n", + "## רגרסיה ליניארית ופולינומית לתמחור דלועים - שיעור 3\n", "\n", - "טענו את הספריות והנתונים הנדרשים. המירו את הנתונים למסגרת נתונים המכילה תת-קבוצה של הנתונים:\n", + "טען את הספריות והמערך הנתונים הנדרשים. המר את הנתונים למסגרת נתונים המכילה תת-קבוצה של הנתונים:\n", "\n", - "- קבלו רק דלעות שמתומחרות לפי יחידת \"בושל\"\n", - "- המירו את התאריך לחודש\n", - "- חשבו את המחיר כממוצע של המחיר הגבוה והנמוך\n", - "- המירו את המחיר כך שישקף תמחור לפי כמות בושל\n" + "- קבל רק דלועים המתומחרים לפי בושל\n", + "- המר את התאריך לחודש\n", + "- חשב את המחיר להיות ממוצע של המחירים הגבוהים והנמוכים\n", + "- המר את המחיר כך שישקף את התמחור לפי כמות הבושל\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "פיזור נקודות מזכיר לנו שיש לנו נתוני חודשים רק מאוגוסט עד דצמבר. כנראה שאנחנו צריכים יותר נתונים כדי להיות מסוגלים להסיק מסקנות בצורה ליניארית.\n" + "תרשים הפיזור מזכיר לנו שיש לנו רק נתוני חודש מאוגוסט ועד דצמבר. ככל הנראה, אנחנו זקוקים ליותר נתונים כדי להיות מסוגלים להסיק מסקנות בצורה ליניארית.\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "נראה שהמתאם די קטן, אבל יש קשר אחר חשוב יותר - כי נקודות המחיר בגרף למעלה נראות כאילו יש כמה קבוצות מובחנות. בואו ניצור גרף שיציג זני דלעת שונים:\n" + "נראה כי המתאם קטן למדי, אך קיימת קשר אחר חשוב יותר - מכיוון שנקודות המחיר בגרף למעלה נראות כבעלות מספר אשכולות מובחנים. בואו נעשה גרף שיציג זני דלעת שונים:\n" ] }, { @@ -537,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "לעת עתה, בוא נתרכז רק בסוג אחד - **סוג פאי**.\n" + ] }, { "cell_type": "code", @@ -584,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### רגרסיה לינארית\n", + "### רגרסיה ליניארית\n", "\n", - "נשתמש ב-Scikit Learn כדי לאמן מודל רגרסיה לינארית:\n" + "נשתמש ב-Scikit Learn לאימון מודל רגרסיה ליניארית:\n" ] }, { @@ -664,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ניתן לקבוע את שיפוע הקו ממקדמי הרגרסיה הליניארית:\n" + "השיפוע של הקו יכול להיות נקבע מהמקדם של רגרסיה ליניארית:\n" ] }, { @@ -691,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "אנחנו יכולים להשתמש במודל המאומן כדי לחזות מחיר:\n" + "אנו יכולים להשתמש במודל שהוכשר כדי לחזות את המחיר:\n" ] }, { @@ -720,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### רגרסיה פולינומית\n", + "### רגרסיה פולינומיאלית\n", "\n", - "לפעמים הקשר בין המאפיינים לתוצאות הוא באופן טבעי לא ליניארי. לדוגמה, מחירי דלעת עשויים להיות גבוהים בחורף (חודשים 1,2), ואז לרדת בקיץ (חודשים 5-7), ולעלות שוב. רגרסיה ליניארית אינה מסוגלת לזהות את הקשר הזה בצורה מדויקת.\n", + "לפעמים הקשר בין התכונות לתוצאות הוא במהותו לא ליניארי. לדוגמה, מחירי דלעת עשויים להיות גבוהים בחורף (חודשים=1,2), ואז לרדת בקיץ (חודשים=5-7), ואז לעלות שוב. רגרסיה ליניארית אינה מסוגלת למצוא קשר זה במדויק.\n", "\n", - "במקרה כזה, ניתן לשקול להוסיף מאפיינים נוספים. דרך פשוטה היא להשתמש בפולינומים של מאפייני הקלט, מה שיוביל ל**רגרסיה פולינומית**. ב-Scikit Learn, ניתן לחשב מראש באופן אוטומטי מאפיינים פולינומיים באמצעות pipelines:\n" + "במקרה זה, נוכל לשקול להוסיף תכונות נוספות. דרך פשוטה היא להשתמש בפולינומים מתכונות הקלט, מה שיביא ל-**רגרסיה פולינומיאלית**. ב-Scikit Learn, ניתן לחשב מראש תכונות פולינומיאליות באופן אוטומטי באמצעות צינורות:\n" ] }, { @@ -779,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### קידוד סוגים\n", + "### וריאציות קידוד\n", "\n", - "בעולם האידיאלי, אנחנו רוצים להיות מסוגלים לחזות מחירים עבור סוגים שונים של דלעות באמצעות אותו מודל. כדי לקחת בחשבון את הסוג, קודם כל עלינו להמיר אותו לצורה מספרית, או **לקודד**. יש כמה דרכים לעשות זאת:\n", + "בעולם האידיאלי, אנו רוצים להיות מסוגלים לחזות מחירים עבור וריאציות שונות של דלעת באמצעות אותו המודל. כדי לקחת את הווריאציה בחשבון, עלינו תחילה להמיר אותה לצורה מספרית, או **לקדד**. ישנן כמה דרכים שבהן נוכל לעשות זאת:\n", "\n", - "* קידוד מספרי פשוט שיבנה טבלה של סוגים שונים, ואז יחליף את שם הסוג באינדקס מתוך הטבלה. זו לא הבחירה הטובה ביותר עבור רגרסיה ליניארית, מכיוון שרגרסיה ליניארית מתייחסת לערך המספרי של האינדקס, והערך המספרי כנראה לא יתאם בצורה מספרית עם המחיר.\n", - "* קידוד One-hot, שיחליף את עמודת `Variety` בארבע עמודות שונות, אחת לכל סוג, שיכילו 1 אם השורה המתאימה היא מהסוג הנתון, ו-0 אחרת.\n", + "* קידוד מספרי פשוט שיבנה טבלה של וריאציות שונות, ואז יחליף את שם הווריאציה באינדקס בטבלה זו. זו לא הרעיון הטוב ביותר לרגרסיה ליניארית, כיוון שרגרסיה ליניארית לוקחת בחשבון את הערך המספרי של האינדקס, והערך המספרי סביר שלא להיות מתואם מספרית עם המחיר.\n", + "* קידוד one-hot, שיחליף את עמודת `Variety` בארבעה עמודות שונות, אחת עבור כל וריאציה, שיכילו 1 אם השורה המתאימה היא מהווריאציה הנתונה, ו-0 אחרת.\n", "\n", - "הקוד הבא מראה כיצד ניתן לקודד סוג באמצעות קידוד One-hot:\n" + "הקוד למטה מראה כיצד נוכל לקודד וריאציה בצורה one-hot:\n" ] }, { @@ -942,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### רגרסיה ליניארית על זנים\n", + "### רגרסיה ליניארית על זן\n", "\n", - "כעת נשתמש באותו קוד כמו קודם, אך במקום `DayOfYear` נשתמש בזן המקודד בשיטת one-hot כקלט:\n" + "כעת נשתמש באותו הקוד כמו למעלה, אך במקום `DayOfYear` נשתמש בזן המקודד באחת- חם כקלט:\n" ] }, { @@ -992,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "אנחנו יכולים גם לנסות להשתמש בתכונות אחרות באותו אופן, ולשלב אותן עם תכונות מספריות, כמו `Month` או `DayOfYear`:\n" + "אנו יכולים גם לנסות להשתמש בתכונות אחרות באותו אופן, ולשלב אותן עם תכונות מספריות, כגון `Month` או `DayOfYear`:\n" ] }, { @@ -1023,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### רגרסיה פולינומית\n", + "### רגרסיה פולינומיאלית\n", "\n", - "ניתן להשתמש ברגרסיה פולינומית גם עם מאפיינים קטגוריים שעברו קידוד one-hot. הקוד לאימון רגרסיה פולינומית יהיה למעשה זהה למה שראינו קודם.\n" + "אפשר להשתמש ברגרסיה פולינומיאלית גם עם תכונות קטגוריאליות שמקודדות באופן one-hot. הקוד לאימון רגרסיה פולינומיאלית יהיה באופן מהותי זהה למה שראינו למעלה.\n" ] }, { @@ -1072,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**כתב ויתור**: \nמסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית נחשב למקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי בני אדם. איננו נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה. \n" + "---\n\n\n**הצהרת ויתור**: \nמסמך זה תורגם בעזרת שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל טעויות או אי-דיוקים. המסמך המקורי בשפת המקור שלו נחשב כמקור הסמכותי. למידע קריטי מומלץ להיעזר בתרגום מקצועי על ידי מתרגם אנושי. אנו לא נישא באחריות לכל אי-הבנה או פרשנות שגויה שתיגרם כתוצאה משימוש בתרגום זה.\n\n" ] } ], @@ -1102,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:20:46+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "he" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/nl/.co-op-translator.json b/translations/nl/.co-op-translator.json index bc6a598019..c1d12b58da 100644 --- a/translations/nl/.co-op-translator.json +++ b/translations/nl/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "nl" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T19:34:36+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:04:39+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "nl" }, @@ -90,8 +90,8 @@ "language_code": "nl" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:47:43+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:04:09+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "nl" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "nl" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:02:20+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "nl" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T18:44:22+00:00", diff --git a/translations/nl/1-Introduction/4-techniques-of-ML/README.md b/translations/nl/1-Introduction/4-techniques-of-ML/README.md index 54165a2005..48bbdadbc8 100644 --- a/translations/nl/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/nl/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Technieken van Machine Learning -Het proces van het bouwen, gebruiken en onderhouden van machine learning-modellen en de gegevens die ze gebruiken, verschilt sterk van veel andere ontwikkelworkflows. In deze les zullen we het proces verduidelijken en de belangrijkste technieken bespreken die je moet kennen. Je zult: +Het proces van het bouwen, gebruiken en onderhouden van machine learning-modellen en de data die ze gebruiken is een heel ander proces dan veel andere ontwikkelingsworkflows. In deze les zullen we het proces ontrafelen en de belangrijkste technieken schetsen die je moet kennen. Je zult: -- Begrijpen welke processen ten grondslag liggen aan machine learning op een hoog niveau. -- Basisconcepten verkennen zoals 'modellen', 'voorspellingen' en 'trainingsdata'. +- Het proces achter machine learning op een hoog niveau begrijpen. +- Basisbegrippen zoals 'modellen', 'voorspellingen' en 'trainingsdata' verkennen. -## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) +## [Voorleesspelquiz](https://ff-quizzes.netlify.app/en/ml/) [![ML voor beginners - Technieken van Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML voor beginners - Technieken van Machine Learning") -> 🎥 Klik op de afbeelding hierboven voor een korte video over deze les. +> 🎥 Klik op de afbeelding hierboven voor een korte video waarin deze les wordt behandeld. ## Introductie -Op een hoog niveau bestaat het vak van het creëren van machine learning (ML)-processen uit een aantal stappen: +Op een hoog niveau bestaat het vakmanschap van het creëren van machine learning (ML)-processen uit een aantal stappen: -1. **Bepaal de vraag**. De meeste ML-processen beginnen met het stellen van een vraag die niet kan worden beantwoord met een eenvoudig conditioneel programma of een op regels gebaseerde engine. Deze vragen draaien vaak om voorspellingen op basis van een verzameling gegevens. -2. **Verzamel en bereid gegevens voor**. Om je vraag te kunnen beantwoorden, heb je gegevens nodig. De kwaliteit en soms de hoeveelheid van je gegevens bepalen hoe goed je je oorspronkelijke vraag kunt beantwoorden. Het visualiseren van gegevens is een belangrijk aspect van deze fase. Deze fase omvat ook het splitsen van de gegevens in een trainings- en testgroep om een model te bouwen. -3. **Kies een trainingsmethode**. Afhankelijk van je vraag en de aard van je gegevens moet je kiezen hoe je een model wilt trainen om je gegevens het beste te weerspiegelen en nauwkeurige voorspellingen te doen. Dit is het deel van je ML-proces dat specifieke expertise vereist en vaak een aanzienlijke hoeveelheid experimenten. -4. **Train het model**. Met behulp van je trainingsgegevens gebruik je verschillende algoritmen om een model te trainen dat patronen in de gegevens herkent. Het model kan interne gewichten gebruiken die kunnen worden aangepast om bepaalde delen van de gegevens te bevoordelen boven andere om een beter model te bouwen. -5. **Evalueer het model**. Je gebruikt gegevens die het model nog niet eerder heeft gezien (je testgegevens) uit je verzamelde set om te zien hoe het model presteert. -6. **Parameterafstemming**. Op basis van de prestaties van je model kun je het proces opnieuw uitvoeren met verschillende parameters of variabelen die het gedrag van de algoritmen bepalen die worden gebruikt om het model te trainen. +1. **Bepaal de vraag**. De meeste ML-processen beginnen met het stellen van een vraag die niet beantwoord kan worden met een eenvoudig conditioneel programma of op regels gebaseerd systeem. Deze vragen draaien vaak om voorspellingen op basis van een verzameling data. +2. **Verzamel en bereid data voor**. Om je vraag te kunnen beantwoorden, heb je data nodig. De kwaliteit en soms ook de hoeveelheid van je data bepaalt hoe goed je je oorspronkelijke vraag kunt beantwoorden. Het visualiseren van data is een belangrijk onderdeel van deze fase. Deze fase omvat ook het splitsen van de data in een trainings- en testgroep om een model te bouwen. +3. **Kies een trainingsmethode**. Afhankelijk van je vraag en de aard van je data, moet je kiezen hoe je een model wilt trainen om je data het best te weerspiegelen en nauwkeurige voorspellingen te maken. Dit is het gedeelte van je ML-proces dat specifieke expertise vereist en vaak een aanzienlijke hoeveelheid experimenteren. +4. **Train het model**. Met je trainingsdata gebruik je verschillende algoritmen om een model te trainen dat patronen in de data herkent. Het model kan interne gewichten gebruiken die kunnen worden aangepast om bepaalde delen van de data voorrang te geven om zo een beter model te bouwen. +5. **Evalueer het model**. Je gebruikt nooit eerder geziene data (je testdata) uit je verzamelde set om te zien hoe het model presteert. +6. **Parameterafstemming**. Op basis van de prestaties van je model kun je het proces opnieuw doorlopen met andere parameters, of variabelen, die het gedrag van de algoritmen die het model trainen aansturen. 7. **Voorspel**. Gebruik nieuwe invoer om de nauwkeurigheid van je model te testen. -## Welke vraag stel je? +## Welke vraag te stellen -Computers zijn bijzonder goed in het ontdekken van verborgen patronen in gegevens. Deze eigenschap is erg nuttig voor onderzoekers die vragen hebben over een bepaald domein die niet gemakkelijk kunnen worden beantwoord door een op regels gebaseerde engine te maken. Bij een actuarieel vraagstuk kan een datawetenschapper bijvoorbeeld handgemaakte regels opstellen over de sterfte van rokers versus niet-rokers. +Computers zijn bijzonder goed in het ontdekken van verborgen patronen in data. Deze bruikbaarheid is heel handig voor onderzoekers die vragen hebben over een bepaald domein die niet makkelijk beantwoord kunnen worden door een op voorwaardelijke regels gebaseerd systeem te maken. Bij een actuariele taak, bijvoorbeeld, kan een data scientist handgemaakte regels construeren rond de sterfte van rokers versus niet-rokers. -Wanneer veel andere variabelen in de vergelijking worden gebracht, kan een ML-model echter efficiënter zijn om toekomstige sterftecijfers te voorspellen op basis van eerdere gezondheidsgegevens. Een vrolijker voorbeeld zou het maken van weersvoorspellingen voor de maand april op een bepaalde locatie kunnen zijn, gebaseerd op gegevens zoals breedtegraad, lengtegraad, klimaatverandering, nabijheid van de oceaan, patronen van de straalstroom en meer. +Wanneer veel andere variabelen in de vergelijking worden gebracht, kan een ML-model echter efficiënter blijken te zijn bij het voorspellen van toekomstige sterftecijfers op basis van eerdere gezondheidsgeschiedenis. Een vrolijker voorbeeld is het maken van weersvoorspellingen voor de maand april op een gegeven locatie op basis van data die latitude, longitude, klimaatverandering, nabijheid van de oceaan, patronen van de straalstroom en meer bevat. -✅ Deze [presentatie](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) over weermodellen biedt een historisch perspectief op het gebruik van ML in weersanalyse. +✅ Deze [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) over weermodellen biedt een historisch perspectief op het gebruik van ML in weeranalyse. ## Taken vóór het bouwen -Voordat je begint met het bouwen van je model, zijn er verschillende taken die je moet voltooien. Om je vraag te testen en een hypothese te vormen op basis van de voorspellingen van een model, moet je verschillende elementen identificeren en configureren. +Voordat je begint met het bouwen van je model, moet je verschillende taken voltooien. Om je vraag te testen en een hypothese te vormen op basis van de voorspellingen van een model, moet je verschillende elementen identificeren en configureren. -### Gegevens +### Data -Om je vraag met enige zekerheid te kunnen beantwoorden, heb je een goede hoeveelheid gegevens van het juiste type nodig. Er zijn twee dingen die je op dit punt moet doen: +Om je vraag met enige zekerheid te kunnen beantwoorden, heb je voldoende data van het juiste type nodig. Er zijn twee dingen die je op dit punt moet doen: -- **Gegevens verzamelen**. Houd rekening met de vorige les over eerlijkheid in data-analyse en verzamel je gegevens zorgvuldig. Wees je bewust van de bronnen van deze gegevens, eventuele inherente vooroordelen en documenteer de oorsprong ervan. -- **Gegevens voorbereiden**. Er zijn verschillende stappen in het proces van gegevensvoorbereiding. Je moet mogelijk gegevens samenvoegen en normaliseren als ze uit diverse bronnen komen. Je kunt de kwaliteit en kwantiteit van de gegevens verbeteren via verschillende methoden, zoals het converteren van strings naar getallen (zoals we doen in [Clustering](../../5-Clustering/1-Visualize/README.md)). Je kunt ook nieuwe gegevens genereren op basis van de oorspronkelijke gegevens (zoals we doen in [Classificatie](../../4-Classification/1-Introduction/README.md)). Je kunt de gegevens opschonen en bewerken (zoals we doen voorafgaand aan de [Web App](../../3-Web-App/README.md) les). Tot slot kun je de gegevens willekeurig maken en schudden, afhankelijk van je trainingstechnieken. +- **Verzamel data**. Houd rekening met de eerdere les over eerlijkheid in data-analyse en verzamel je data zorgvuldig. Wees je bewust van de bronnen van deze data, eventuele inherente vooroordelen die het kan bevatten, en documenteer de oorsprong. +- **Bereid data voor**. Er zijn verschillende stappen in het voorbereidingsproces van data. Je moet mogelijk data samenvoegen en normaliseren als het uit diverse bronnen komt. Je kunt de kwaliteit en kwantiteit van de data verbeteren door verschillende methoden zoals het omzetten van strings naar getallen (zoals we doen in [Clustering](../../5-Clustering/1-Visualize/README.md)). Je kunt ook nieuwe data genereren op basis van de originele (zoals we doen in [Classificatie](../../4-Classification/1-Introduction/README.md)). Je kunt de data schoonmaken en bewerken (zoals we zullen doen voorafgaand aan de [Web App](../../3-Web-App/README.md) les). Ten slotte moet je het mogelijk randomizen en schudden, afhankelijk van je trainingsmethoden. -✅ Nadat je je gegevens hebt verzameld en verwerkt, neem een moment om te zien of de vorm ervan je in staat stelt je beoogde vraag te beantwoorden. Het kan zijn dat de gegevens niet goed presteren in je gegeven taak, zoals we ontdekken in onze [Clustering](../../5-Clustering/1-Visualize/README.md) lessen! +✅ Na het verzamelen en verwerken van je data, neem even de tijd om te controleren of de vorm ervan je in staat stelt je bedoelde vraag te beantwoorden. Het kan zijn dat de data niet goed presteert voor jouw gegeven taak, zoals we ontdekken in onze [Clustering](../../5-Clustering/1-Visualize/README.md) lessen! -### Kenmerken en Doel +### Features en target -Een [kenmerk](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) is een meetbare eigenschap van je gegevens. In veel datasets wordt dit uitgedrukt als een kolomkop zoals 'datum', 'grootte' of 'kleur'. Je kenmerkvariabelen, meestal weergegeven als `X` in code, vertegenwoordigen de invoervariabelen die worden gebruikt om het model te trainen. +Een [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) is een meetbare eigenschap van je data. In veel datasets wordt het uitgedrukt als een kolomkop zoals 'datum', 'grootte' of 'kleur'. Je featurevariabele, meestal weergegeven als `X` in code, vertegenwoordigt de invoervariabele die gebruikt zal worden om een model te trainen. -Een doel is datgene wat je probeert te voorspellen. Het doel, meestal weergegeven als `y` in code, vertegenwoordigt het antwoord op de vraag die je probeert te stellen over je gegevens: in december, welke **kleur** pompoenen zullen het goedkoopst zijn? In San Francisco, welke buurten zullen de beste vastgoed**prijzen** hebben? Soms wordt het doel ook wel labelattribuut genoemd. +Een target is iets dat je probeert te voorspellen. Target, meestal weergegeven als `y` in code, is het antwoord op de vraag die je aan je data stelt: in december, welke **kleur** pompoenen zullen het goedkoopst zijn? In San Francisco, welke buurten zullen de beste vastgoed**prijs** hebben? Soms wordt target ook wel een labelattribuut genoemd. -### Selecteer je kenmerkvariabelen +### Je featurevariabele kiezen -🎓 **Kenmerkselectie en Kenmerkextractie** Hoe weet je welke variabelen je moet kiezen bij het bouwen van een model? Je zult waarschijnlijk een proces van kenmerkselectie of kenmerkextractie doorlopen om de juiste variabelen te kiezen voor het meest presterende model. Ze zijn echter niet hetzelfde: "Kenmerkextractie creëert nieuwe kenmerken uit functies van de oorspronkelijke kenmerken, terwijl kenmerkselectie een subset van de kenmerken retourneert." ([bron](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Feature selectie en feature extractie** Hoe weet je welke variabele je moet kiezen bij het bouwen van een model? Je zult waarschijnlijk door een proces van feature selectie of feature extractie gaan om de juiste variabelen te kiezen voor het best presterende model. Ze zijn echter niet hetzelfde: "Feature extractie creëert nieuwe features uit functies van de originele features, terwijl feature selectie een subset van de features teruggeeft." ([bron](https://wikipedia.org/wiki/Feature_selection)) -### Visualiseer je gegevens +### Visualiseer je data -Een belangrijk aspect van de toolkit van een datawetenschapper is de kracht om gegevens te visualiseren met behulp van verschillende uitstekende bibliotheken zoals Seaborn of MatPlotLib. Het visueel weergeven van je gegevens kan je in staat stellen verborgen correlaties te ontdekken die je kunt benutten. Je visualisaties kunnen je ook helpen om vooroordelen of onevenwichtige gegevens te ontdekken (zoals we ontdekken in [Classificatie](../../4-Classification/2-Classifiers-1/README.md)). +Een belangrijk aspect van het gereedschap van de data scientist is de mogelijkheid om data te visualiseren met behulp van verschillende uitstekende bibliotheken zoals Seaborn of MatPlotLib. Het visueel weergeven van je data kan je in staat stellen verborgen correlaties te ontdekken die je kunt benutten. Je visualisaties kunnen je ook helpen vooroordelen of onevenwichtige data te ontdekken (zoals we ontdekken in [Classificatie](../../4-Classification/2-Classifiers-1/README.md)). ### Splits je dataset -Voordat je gaat trainen, moet je je dataset splitsen in twee of meer delen van ongelijke grootte die de gegevens nog steeds goed vertegenwoordigen. +Voor het trainen moet je je dataset splitsen in twee of meer ongelijkwaardige delen die de data toch goed representeren. -- **Training**. Dit deel van de dataset wordt gebruikt om je model te trainen. Dit deel vormt het grootste deel van de oorspronkelijke dataset. -- **Testen**. Een testdataset is een onafhankelijke groep gegevens, vaak verzameld uit de oorspronkelijke gegevens, die je gebruikt om de prestaties van het gebouwde model te bevestigen. -- **Valideren**. Een validatieset is een kleinere onafhankelijke groep voorbeelden die je gebruikt om de hyperparameters of architectuur van het model af te stemmen om het model te verbeteren. Afhankelijk van de grootte van je gegevens en de vraag die je stelt, hoef je deze derde set mogelijk niet te bouwen (zoals we opmerken in [Tijdreeksvoorspelling](../../7-TimeSeries/1-Introduction/README.md)). +- **Training**. Dit deel van de dataset is geschikt voor je model om het te trainen. Deze set vormt het grootste deel van de originele dataset. +- **Testen**. Een testdataset is een onafhankelijke groep data, vaak verzameld uit de originele data, die je gebruikt om de prestaties van het gebouwde model te bevestigen. +- **Valideren**. Een validatieset is een kleinere onafhankelijke groep voorbeelden die je gebruikt om de hyperparameters, of architectuur, van het model af te stemmen om het te verbeteren. Afhankelijk van de omvang van je data en de vraag die je stelt heb je dit derde deel mogelijk niet nodig (zoals we opmerken in [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). ## Een model bouwen -Met behulp van je trainingsgegevens is je doel om een model te bouwen, of een statistische representatie van je gegevens, met behulp van verschillende algoritmen om het te **trainen**. Het trainen van een model stelt het bloot aan gegevens en stelt het in staat aannames te doen over waargenomen patronen die het ontdekt, valideert en accepteert of afwijst. +Met behulp van je trainingsdata is het je doel om een model te bouwen, of een statistische weergave van je data, met behulp van verschillende algoritmes om het te **trainen**. Het trainen van een model stelt het bloot aan data en stelt het in staat aannames te maken over waargenomen patronen die het ontdekt, valideert en accepteert of verwerpt. ### Kies een trainingsmethode -Afhankelijk van je vraag en de aard van je gegevens kies je een methode om het te trainen. Door [Scikit-learn's documentatie](https://scikit-learn.org/stable/user_guide.html) door te nemen - die we in deze cursus gebruiken - kun je veel manieren verkennen om een model te trainen. Afhankelijk van je ervaring moet je mogelijk verschillende methoden proberen om het beste model te bouwen. Je zult waarschijnlijk een proces doorlopen waarbij datawetenschappers de prestaties van een model evalueren door het ongeziene gegevens te voeren, te controleren op nauwkeurigheid, vooroordelen en andere kwaliteitsverminderende problemen, en de meest geschikte trainingsmethode voor de taak te selecteren. +Afhankelijk van je vraag en de aard van je data kies je een methode om het te trainen. Door de documentatie van [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - die we in deze cursus gebruiken - te doorlopen, kun je vele manieren verkennen om een model te trainen. Afhankelijk van je ervaring moet je mogelijk verschillende methoden proberen om het beste model te bouwen. Je zult waarschijnlijk een proces doorlopen waarbij data scientists de prestaties van een model evalueren door het onzichtbare data te voeren, te controleren op nauwkeurigheid, vooringenomenheid en andere kwaliteitsverminderende problemen, en de meest geschikte trainingsmethode voor de taak te kiezen. ### Train een model -Met je trainingsgegevens ben je klaar om ze te 'fitten' om een model te creëren. Je zult merken dat in veel ML-bibliotheken de code 'model.fit' voorkomt - op dit moment stuur je je kenmerkvariabelen als een array van waarden (meestal 'X') en een doelvariabele (meestal 'y'). +Met je trainingsdata ben je klaar om het te 'fitten' om een model te creëren. Je zult merken dat in veel ML-bibliotheken de code 'model.fit' voorkomt - dit is het moment dat je je featurevariabele als een array van waarden (meestal 'X') en een targetvariabele (meestal 'y') verstuurt. ### Evalueer het model -Zodra het trainingsproces is voltooid (het kan veel iteraties, of 'epochs', duren om een groot model te trainen), kun je de kwaliteit van het model evalueren door testgegevens te gebruiken om de prestaties te meten. Deze gegevens zijn een subset van de oorspronkelijke gegevens die het model nog niet eerder heeft geanalyseerd. Je kunt een tabel met statistieken over de kwaliteit van je model afdrukken. +Zodra het trainingsproces voltooid is (het kan vele iteraties, of 'epochs', duren om een groot model te trainen), kun je de kwaliteit van het model evalueren door testdata te gebruiken om de prestaties te beoordelen. Deze data is een subset van de oorspronkelijke data die het model nog niet eerder heeft geanalyseerd. Je kunt een tabel met metrics over de kwaliteit van je model printen. -🎓 **Model fitten** +🎓 **Model fitting** -In de context van machine learning verwijst model fitten naar de nauwkeurigheid van de onderliggende functie van het model terwijl het probeert gegevens te analyseren waarmee het niet bekend is. +In de context van machine learning verwijst model fitting naar de nauwkeurigheid van de onderliggende functie van het model terwijl het probeert data te analyseren waar het niet mee vertrouwd is. -🎓 **Underfitting** en **overfitting** zijn veelvoorkomende problemen die de kwaliteit van het model verminderen, omdat het model ofwel niet goed genoeg past of te goed past. Dit zorgt ervoor dat het model voorspellingen doet die ofwel te nauw aansluiten of te los aansluiten bij de trainingsgegevens. Een overfit model voorspelt trainingsgegevens te goed omdat het de details en ruis van de gegevens te goed heeft geleerd. Een underfit model is niet nauwkeurig omdat het noch zijn trainingsgegevens noch gegevens die het nog niet heeft 'gezien' nauwkeurig kan analyseren. +🎓 **Onderfitting** en **overfitting** zijn veelvoorkomende problemen die de kwaliteit van het model verminderen, doordat het model het niet goed genoeg of juist te goed past. Dit veroorzaakt dat het model voorspellingen maakt die te nauw aansluiten bij of juist te los zijn ten opzichte van de trainingsdata. Een overfit model voorspelt trainingsdata te goed omdat het de details en ruis van de data te goed heeft geleerd. Een underfit model is niet nauwkeurig omdat het noch zijn trainingsdata, noch data die het nog niet heeft 'gezien', nauwkeurig kan analyseren. -![overfitting model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/nl/overfitting.1c132d92bfd93cb6.webp) > Infographic door [Jen Looper](https://twitter.com/jenlooper) ## Parameterafstemming -Zodra je eerste training is voltooid, observeer de kwaliteit van het model en overweeg het te verbeteren door de 'hyperparameters' aan te passen. Lees meer over het proces [in de documentatie](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Zodra je initiële training voltooid is, observeer je de kwaliteit van het model en overweeg je het te verbeteren door de 'hyperparameters' aan te passen. Lees meer over dit proces [in de documentatie](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Voorspelling -Dit is het moment waarop je volledig nieuwe gegevens kunt gebruiken om de nauwkeurigheid van je model te testen. In een 'toegepaste' ML-instelling, waar je webassets bouwt om het model in productie te gebruiken, kan dit proces het verzamelen van gebruikersinvoer omvatten (bijvoorbeeld een druk op een knop) om een variabele in te stellen en deze naar het model te sturen voor inferentie of evaluatie. +Dit is het moment waarop je compleet nieuwe data kunt gebruiken om de nauwkeurigheid van je model te testen. In een 'toegepaste' ML-omgeving, waar je webassets bouwt om het model in productie te gebruiken, kan dit proces het verzamelen van gebruikersinvoer inhouden (bijvoorbeeld een druk op een knop) om een variabele in te stellen en naar het model te sturen voor inferentie, of evaluatie. -In deze lessen ontdek je hoe je deze stappen kunt gebruiken om voor te bereiden, te bouwen, te testen, te evalueren en te voorspellen - alle handelingen van een datawetenschapper en meer, terwijl je vordert in je reis om een 'full stack' ML-engineer te worden. +In deze lessen ontdek je hoe je deze stappen gebruikt om voor te bereiden, bouwen, testen, evalueren en voorspellen - alle handelingen van een data scientist en meer, terwijl je vordert in je reis om een 'full stack' ML-engineer te worden. --- ## 🚀Uitdaging -Teken een stroomdiagram dat de stappen van een ML-practitioner weergeeft. Waar zie je jezelf op dit moment in het proces? Waar denk je dat je moeilijkheden zult ondervinden? Wat lijkt je gemakkelijk? +Teken een stroomdiagram dat de stappen van een ML-praktijker weergeeft. Waar zie je jezelf nu in het proces? Waar verwacht je moeilijkheden? Wat lijkt je makkelijk? -## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) +## [Nabespreking quiz](https://ff-quizzes.netlify.app/en/ml/) ## Review & Zelfstudie -Zoek online naar interviews met datawetenschappers die hun dagelijkse werk bespreken. Hier is [een](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Zoek online naar interviews met data scientists die hun dagelijkse werk bespreken. Hier is [één](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Opdracht -[Interview een datawetenschapper](assignment.md) +[Interview een data scientist](assignment.md) --- + **Disclaimer**: -Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling. \ No newline at end of file +Dit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat automatische vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet als de gezaghebbende bron worden beschouwd. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor enige misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling. + \ No newline at end of file diff --git a/translations/nl/2-Regression/3-Linear/README.md b/translations/nl/2-Regression/3-Linear/README.md index 34286f55a2..c79a262608 100644 --- a/translations/nl/2-Regression/3-Linear/README.md +++ b/translations/nl/2-Regression/3-Linear/README.md @@ -1,113 +1,113 @@ # Bouw een regressiemodel met Scikit-learn: regressie op vier manieren -## Notitie voor beginners +## Aantekening voor beginners -Lineaire regressie wordt gebruikt wanneer we een **numerieke waarde** willen voorspellen (bijvoorbeeld huisprijs, temperatuur, of verkoop). +Lineaire regressie wordt gebruikt wanneer we een **numerieke waarde** willen voorspellen (bijvoorbeeld huisprijs, temperatuur of verkoop). Het werkt door een rechte lijn te vinden die de relatie tussen invoerkenmerken en de uitvoer het beste weergeeft. In deze les richten we ons op het begrijpen van het concept voordat we meer geavanceerde regressietechnieken verkennen. -![Lineaire versus polynoom regressie infographic](../../../../translated_images/nl/linear-polynomial.5523c7cb6576ccab.webp) +![Lineaire vs polynomiale regressie infographic](../../../../translated_images/nl/linear-polynomial.5523c7cb6576ccab.webp) > Infographic door [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Voorcollege quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Deze les is beschikbaar in R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Inleiding +> ### [Deze les is ook beschikbaar in R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Introductie -Tot nu toe heb je onderzocht wat regressie is met voorbeelddata verzameld uit de pompoenprijs dataset die we gedurende deze les zullen gebruiken. Je hebt het ook gevisualiseerd met Matplotlib. +Tot nu toe heb je onderzocht wat regressie is met voorbeeldgegevens verzameld uit de pompoenprijzenset die we door deze les heen zullen gebruiken. Je hebt het ook gevisualiseerd met Matplotlib. -Nu ben je klaar om dieper in regressie voor ML te duiken. Terwijl visualisatie je in staat stelt om data te begrijpen, komt de echte kracht van Machine Learning van het _trainen van modellen_. Modellen worden getraind op historische data om automatisch afhankelijkheden te vangen, en ze stellen je in staat om uitkomsten te voorspellen voor nieuwe data die het model nog niet eerder heeft gezien. +Nu ben je klaar om dieper in regressie voor ML te duiken. Terwijl visualisatie je helpt om gegevens te begrijpen, komt de echte kracht van Machine Learning van het _trainen van modellen_. Modellen worden getraind op historische gegevens om automatisch afhankelijkheden te leren, en ze maken het mogelijk voorspellingen te doen voor nieuwe gegevens die het model nog niet eerder heeft gezien. -In deze les leer je meer over twee types regressie: _basis lineaire regressie_ en _polynomiale regressie_, samen met wat van de onderliggende wiskunde van deze technieken. Deze modellen stellen ons in staat om pompoenprijzen te voorspellen afhankelijk van verschillende invoerdata. +In deze les leer je meer over twee types regressie: _basis lineaire regressie_ en _polynomiale regressie_, samen met enige wiskunde die deze technieken ten grondslag ligt. Deze modellen stellen ons in staat pompoenprijzen te voorspellen afhankelijk van verschillende invoergegevens. -[![ML voor beginners - Begrijpen van lineaire regressie](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML voor beginners - Begrijpen van lineaire regressie") +[![ML voor beginners - Begrip van lineaire regressie](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML voor beginners - Begrip van lineaire regressie") -> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van lineaire regressie. +> 🎥 Klik op de bovenstaande afbeelding voor een korte video-overzicht van lineaire regressie. -> Gedurende deze cursus veronderstellen we minimale wiskundige kennis, en streven we ernaar om het toegankelijk te maken voor studenten uit andere vakgebieden, let daarom op notities, 🧮 uitleg, diagrammen en andere leermiddelen ter ondersteuning van het begrip. +> Door deze curriculum heen gaan we uit van minimale wiskundige kennis en willen we het toegankelijk maken voor studenten uit andere vakgebieden, dus let op notities, 🧮 uitleg, diagrammen en andere leermiddelen ter ondersteuning van begrip. ### Vereisten -Je zou inmiddels bekend moeten zijn met de structuur van de pompoendata die we onderzoeken. Je kunt het voorbeladen en schoongemaakt terugvinden in het _notebook.ipynb_ bestand van deze les. In dit bestand is de pompoenprijs per bushel weergegeven in een nieuw data frame. Zorg ervoor dat je deze notebooks kunt draaien in kernels in Visual Studio Code. +Je zou nu vertrouwd moeten zijn met de structuur van de pompoengegevens die we analyseren. Je kunt ze vooraf geladen en schoon aangetroffen vinden in het _notebook.ipynb_ bestand bij deze les. In het bestand wordt de pompoenprijs per boerentas weergegeven in een nieuw dataframe. Zorg dat je deze notebooks kunt uitvoeren binnen kernels in Visual Studio Code. ### Voorbereiding -Als herinnering, je laadt deze data om er vragen over te kunnen stellen. +Ter herinnering, je laadt deze gegevens om er vragen over te stellen. -- Wanneer is de beste tijd om pompoenen te kopen? -- Welke prijs kan ik verwachten voor een kist miniatuurpompoenen? -- Moet ik ze kopen in halve bushel manden of per 1 1/9 bushel doos? -Laten we dieper graven in deze data. +- Wanneer is de beste tijd om pompoenen te kopen? +- Welke prijs kan ik verwachten voor een kistje miniatuurpompoenen? +- Moet ik ze kopen in half-boerentas manden of per doos van 1 1/9 boerentas? +Laten we verder graven in deze data. -In de vorige les heb je een Pandas data frame gemaakt en gevuld met een deel van de originele dataset, waarbij de prijzen zijn genormaliseerd per bushel. Door dat te doen was je echter maar in staat ongeveer 400 datapunten te verzamelen en alleen voor de herfstmaanden. +In de vorige les heb je een Pandas dataframe gemaakt en gevuld met een deel van de originele dataset, waarbij de prijzen werden gestandaardiseerd per boerentas. Door dat te doen, kon je echter slechts ongeveer 400 data punten verzamelen en alleen voor de herfstmaanden. -Bekijk de data die we voorbeladen hebben in de bijbehorende notebook van deze les. De data is voorbeladen en er is een initiële scatterplot gemaakt om maanddata te tonen. Misschien kunnen we iets meer detail krijgen over de aard van de data door het verder te schonen. +Bekijk de gegevens die we vooraf geladen hebben in het bijbehorende notebook van deze les. De gegevens zijn al ingeladen en er is een eerste scatterplot gemaakt om maandgegevens te tonen. Misschien kunnen we meer details over de aard van de data vinden door het beter schoon te maken. ## Een lineaire regressielijn -Zoals je hebt geleerd in Les 1, is het doel van een lineaire regressie-oefening om in staat te zijn een lijn te plotten om: +Zoals je in Les 1 hebt geleerd, is het doel van een lineaire regressie-oefening om een lijn te tekenen om: -- **Variabelenrelaties te tonen**. Toon het verband tussen variabelen -- **Voorspellingen te doen**. Maak nauwkeurige voorspellingen waar een nieuw datapunt zou vallen ten opzichte van die lijn. +- **Variable relaties weergeven**. Toon de relatie tussen variabelen +- **Voorspellingen doen**. Maak nauwkeurige voorspellingen over waar een nieuw datapunt zich zou bevinden ten opzichte van die lijn. -Het is typisch voor **Kleinstekwadratenregressie** om dit type lijn te tekenen. De term "Kleinstekwadraten" verwijst naar het proces van het minimaliseren van de totale fout in ons model. Voor elk datapunt meten we de verticale afstand (genaamd residu) tussen het werkelijke punt en onze regressielijn. +Het is typisch voor de **Least-Squares Regression** om dit soort lijn te tekenen. De term “Least-Squares” verwijst naar het proces van het minimaliseren van de totale fout in ons model. Voor elk datapunt meten we de verticale afstand (genoemd residu) tussen het werkelijke punt en onze regressielijn. -We kwadrateren deze afstanden om twee hoofdredenen: +Deze afstanden kwadrateren we om twee hoofdredenen: -1. **Grootte boven Richting:** We willen een fout van -5 hetzelfde behandelen als een fout van +5. Kwadrateren maakt alle waarden positief. +1. **Grootte boven Richting:** We willen een fout van -5 hetzelfde behandelen als een fout van +5. Door kwadrateren worden alle waarden positief. -2. **Straffen van Uitbijters:** Kwadrateren geeft meer gewicht aan grotere fouten, waardoor de lijn dichter bij punten die ver weg liggen blijft. +2. **Straffen van Uitschieters:** Kwadrateren geeft meer gewicht aan grotere fouten, waardoor de lijn dichter bij verafgelegen punten blijft. -We tellen vervolgens al deze gekwadrateerde waarden bij elkaar op. Ons doel is om de specifieke lijn te vinden waarbij deze eind-som het kleinst is (de kleinste mogelijke waarde)—vandaar de naam "Kleinstekwadraten". +Dan tellen we al deze gekwadrateerde waarden bij elkaar op. Ons doel is om die specifieke lijn te vinden waarbij deze uiteindelijke som het kleinst is (de kleinst mogelijke waarde)—vandaar de naam "Least-Squares". -> **🧮 Laat me de wiskunde zien** -> -> Deze lijn, genaamd de _beste fit lijn_, kan worden uitgedrukt door [een vergelijking](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Toon mij de wiskunde** +> +> Deze lijn, de _best passende lijn_ genoemd, kan worden uitgedrukt door [een vergelijking](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> `X` is de 'verklarende variabele'. `Y` is de 'afhankelijke variabele'. De helling van de lijn is `b` en `a` is het snijpunt op de y-as, dat verwijst naar de waarde van `Y` wanneer `X = 0`. +> `X` is de 'verklarende variabele'. `Y` is de 'afhankelijke variabele'. De helling van de lijn is `b` en `a` is het snijpunt met de Y-as, wat verwijst naar de waarde van `Y` wanneer `X = 0`. > >![bereken de helling](../../../../translated_images/nl/slope.f3c9d5910ddbfcf9.webp) > > Bereken eerst de helling `b`. Infographic door [Jen Looper](https://twitter.com/jenlooper) > -> Met andere woorden, en verwijzend naar onze originele vraag over pompoendata: "voorspel de prijs van een pompoen per bushel op maand", zou `X` verwijzen naar de prijs en `Y` naar de maand van verkoop. +> Met andere woorden, en verwijzend naar onze pompoengegevens en de oorspronkelijke vraag: "voorspel de prijs van een pompoen per boerentas per maand", zou `X` verwijzen naar de prijs en `Y` naar de maand van verkoop. > ->![vul de vergelijking in](../../../../translated_images/nl/calculation.a209813050a1ddb1.webp) +>![maak de vergelijking af](../../../../translated_images/nl/calculation.a209813050a1ddb1.webp) > > Bereken de waarde van Y. Als je ongeveer $4 betaalt, moet het april zijn! Infographic door [Jen Looper](https://twitter.com/jenlooper) > -> De wiskunde die de lijn berekent moet de helling van de lijn aantonen, die ook afhankelijk is van het intercept, of waar `Y` ligt wanneer `X = 0`. +> De wiskunde die de lijn berekent moet de helling van de lijn aantonen, die ook afhankelijk is van het intercept, oftewel waar `Y` gelegen is als `X = 0`. > -> Je kunt de methode van berekening voor deze waarden bekijken op de [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) website. Bezoek ook [deze Kleinstekwadraten calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) om te zien hoe de getallen de lijn beïnvloeden. +> Je kunt de berekeningsmethode voor deze waarden bekijken op de [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) website. Bezoek ook [deze Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) om te zien hoe de waarde van getallen de lijn beïnvloedt. ## Correlatie -Een andere term om te begrijpen is de **correlatiecoëfficiënt** tussen gegeven X en Y variabelen. Met een scatterplot kun je deze coëfficiënt snel visualiseren. Een plot met datapunten netjes verspreid in een lijn heeft een hoge correlatie, maar een plot met datapunten verspreid over het hele vlak tussen X en Y heeft een lage correlatie. +Een andere term die begrepen moet worden is de **Correlatiecoëfficiënt** tussen de gegeven X en Y variabelen. Met een scatterplot kun je deze coëfficiënt snel visualiseren. Een plot met datapoints netjes op een lijn heeft een hoge correlatie, terwijl een plot met punten verspreid over het veld tussen X en Y een lage correlatie heeft. -Een goed lineair regressiemodel zal een hoge (meer dichtbij 1 dan 0) correlatiecoëfficiënt hebben met behulp van de Kleinstekwadratenregressie methode met een regressielijn. +Een goed lineair regressiemodel is er een met een hoge (dichterbij 1 dan 0) Correlatiecoëfficiënt, gebruikmakend van de Least-Squares Regression-methode met een regressielijn. -✅ Voer het notebook uit dat bij deze les hoort en bekijk de scatterplot van Maand tegen Prijs. Lijkt de data die maand aan prijs koppelt voor pompoenverkoop een hoge of lage correlatie te hebben volgens jouw visuele interpretatie van de scatterplot? Verandert dat als je een fijnere maat gebruikt in plaats van `Maand`, bijvoorbeeld *dag van het jaar* (i.e. aantal dagen sinds het begin van het jaar)? +✅ Voer de bij deze les behorende notebook uit en bekijk de scatterplot van Maand tot Prijs. Lijkt de data die Maand koppelt aan Prijs voor pompoenverkopen een hoge of lage correlatie te hebben, volgens jouw visuele interpretatie van de scatterplot? Verandert dit als je een fijnmaziger maat gebruikt in plaats van `Month`, bijvoorbeeld *dag van het jaar* (dus het aantal dagen sinds het begin van het jaar)? -In onderstaande code gaan we ervan uit dat we de data hebben opgeschoond, en een data frame verkregen genaamd `new_pumpkins`, vergelijkbaar met het volgende: +In de hieronder volgende code gaan we ervan uit dat we de data hebben opgeschoond en een dataframe `new_pumpkins` hebben verkregen, vergelijkbaar met het volgende: ID | Maand | DagVanHetJaar | Variëteit | Stad | Verpakking | Laagste Prijs | Hoogste Prijs | Prijs ----|-------|---------------|-----------|-------|------------|---------------|---------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel kratjes | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel kratjes | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel kratjes | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel kratjes | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel kratjes | 15.0 | 15.0 | 13.636364 +---|-------|--------------|-----------|------|------------|---------------|---------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 boerentas kartonnen doos | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 boerentas kartonnen doos | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 boerentas kartonnen doos | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 boerentas kartonnen doos | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 boerentas kartonnen doos | 15.0 | 15.0 | 13.636364 -> De code om de data schoon te maken is beschikbaar in [`notebook.ipynb`](notebook.ipynb). We hebben dezelfde schoonmaakstappen uitgevoerd als in de vorige les, en de kolom `DagVanHetJaar` berekend met de volgende uitdrukking: +> De code om de data op te schonen is te vinden in [`notebook.ipynb`](notebook.ipynb). We hebben dezelfde schoonmaakstappen uitgevoerd als in de vorige les en hebben de kolom `DayOfYear` berekend met de volgende uitdrukking: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Nu je inzicht hebt in de wiskunde achter lineaire regressie, laten we een regressiemodel maken om te zien of we kunnen voorspellen welke verpakking pompoenen de beste prijzen zal hebben. Iemand die pompoenen koopt voor een feestelijke pompoen-perk wil mogelijk deze informatie om hun aankopen van pompoenverpakkingen voor het perk te optimaliseren. +Nu je een begrip hebt van de wiskunde achter lineaire regressie, laten we een regressiemodel maken om te zien of we kunnen voorspellen welke verpakking pompoenen de beste pompoenprijzen zal hebben. Iemand die pompoenen koopt voor een pompoenpatch op vakantie zou deze informatie willen om zijn aankopen van pompoenverpakkingen voor de patch te optimaliseren. ## Op zoek naar correlatie @@ -115,22 +115,22 @@ Nu je inzicht hebt in de wiskunde achter lineaire regressie, laten we een regres > 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van correlatie. -Uit de vorige les heb je waarschijnlijk gezien dat de gemiddelde prijs voor verschillende maanden er ongeveer zo uitziet: +Uit de vorige les heb je waarschijnlijk gezien dat de gemiddelde prijs voor verschillende maanden er zo uitziet: Gemiddelde prijs per maand -Dit suggereert dat er enige correlatie zou moeten zijn, en we kunnen proberen een lineair regressiemodel te trainen om de relatie tussen `Maand` en `Prijs` te voorspellen, of tussen `DagVanHetJaar` en `Prijs`. Hier is de scatterplot die de laatste relatie toont: +Dit suggereert dat er enige correlatie moet zijn, en we kunnen proberen een lineair regressiemodel te trainen om de relatie tussen `Month` en `Price` te voorspellen, of tussen `DayOfYear` en `Price`. Hier is de scatterplot die de laatste relatie toont: -Scatterplot van Prijs versus Dag van het Jaar +Scatterplot van Prijs vs. Dag van het Jaar -Laten we kijken of er een correlatie is met de `corr` functie: +Laten we kijken of er correlatie is met de functie `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Het lijkt erop dat de correlatie vrij klein is, -0.15 bij `Maand` en -0.17 bij de `DagVanHetJaar`, maar er kan een andere belangrijke relatie zijn. Het lijkt alsof er verschillende clusters prijzen zijn die overeenkomen met verschillende pompoenvariëteiten. Om deze hypothese te bevestigen, laten we elke pompoencategorie met een andere kleur plotten. Door een `ax` parameter door te geven aan de `scatter` plotfunctie kunnen we alle punten op dezelfde grafiek plotten: +Het lijkt erop dat de correlatie vrij klein is, -0.15 voor `Month` en -0.17 voor `DayOfYear`, maar er kan een andere belangrijke relatie zijn. Het lijkt erop dat er verschillende clusters van prijzen zijn die overeenkomen met verschillende pompoenvariëteiten. Om deze hypothese te bevestigen, laten we elke pompoencategorie in een andere kleur plotten. Door een `ax`-parameter mee te geven aan de `scatter` functie kunnen we alle punten op dezelfde grafiek weergeven: ```python ax=None @@ -140,34 +140,34 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatterplot van Prijs versus Dag van het Jaar +Scatterplot van Prijs vs. Dag van het Jaar -Ons onderzoek suggereert dat variëteit meer effect heeft op de prijs dan de daadwerkelijke verkoopdatum. Dit kunnen we zien met een staafdiagram: +Ons onderzoek suggereert dat variëteit een grotere invloed heeft op de algehele prijs dan de daadwerkelijke verkoopdatum. We kunnen dit zien met een staafdiagram: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Staafdiagram van prijs versus variëteit +Staafdiagram van prijs vs variëteit -Laten we ons voor nu alleen richten op één pompoenvariëteit, de 'pie type', en kijken welk effect de datum heeft op de prijs: +Laten we ons voor dit moment alleen richten op één pompoenvariëteit, het 'pie type', en zien wat het effect van de datum op de prijs is: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatterplot van Prijs versus Dag van het Jaar +Scatterplot van Prijs vs. Dag van het Jaar -Als we nu de correlatie tussen `Prijs` en `DagVanHetJaar` berekenen met de `corr` functie, krijgen we iets als `-0.27` - wat betekent dat het zinvol is om een voorspellend model te trainen. +Als we nu de correlatie tussen `Price` en `DayOfYear` berekenen met de functie `corr`, krijgen we iets als `-0.27` - wat betekent dat het zinvol is een voorspellend model te trainen. -> Voordat je een lineair regressiemodel traint is het belangrijk ervoor te zorgen dat onze data schoon is. Lineaire regressie werkt niet goed met ontbrekende waarden, dus het is zinvol om alle lege cellen te verwijderen: +> Voordat we een lineair regressiemodel trainen, is het belangrijk ervoor te zorgen dat onze data schoon is. Lineaire regressie werkt niet goed met ontbrekende waarden, dus het is zinvol om alle lege cellen te verwijderen: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Een andere benadering is om die lege waarden te vullen met gemiddelde waardes uit de betreffende kolom. +Een andere aanpak zou zijn om die lege waarden te vullen met gemiddelde waarden uit de overeenkomstige kolom. ## Eenvoudige lineaire regressie @@ -175,7 +175,7 @@ Een andere benadering is om die lege waarden te vullen met gemiddelde waardes ui > 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van lineaire en polynomiale regressie. -Om ons lineaire regressiemodel te trainen gebruiken we de **Scikit-learn** bibliotheek. +Om ons lineaire regressiemodel te trainen, gebruiken we de **Scikit-learn** bibliotheek. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -We beginnen met het scheiden van invoerwaarden (features) en verwachte uitvoer (label) in afzonderlijke numpy-arrays: +We beginnen met het scheiden van invoerwaarden (features) en de verwachte uitvoer (label) in aparte numpy-arrays: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Let op dat we `reshape` moesten uitvoeren op de invoerdata zodat het Linear Regression-pakket het correct kan begrijpen. Lineaire regressie verwacht een 2D-array als invoer waarbij elke rij van de array overeenkomt met een vector van invoerkenmerken. In ons geval, omdat we slechts één invoer hebben, hebben we een array nodig met de vorm N×1, waarbij N de grootte van de dataset is. +> Merk op dat we `reshape` moesten toepassen op de invoergegevens zodat het Linear Regression-pakket het correct kan begrijpen. Lineaire regressie verwacht een 2D-array als invoer, waarin elke rij overeenkomt met een vector van invoerkenmerken. In ons geval, omdat we maar één invoer hebben, hebben we een array nodig met de vorm N×1, waarbij N de grootte van de dataset is. -Dan moeten we de data splitsen in train- en testdatasets, zodat we ons model na het trainen kunnen valideren: +Daarna moeten we de data splitsen in train- en testdatasets, zodat we ons model kunnen valideren na het trainen: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Tenslotte kost het trainen van het eigenlijke lineaire regressiemodel maar twee regels code. We definiëren het `LinearRegression` object en passen het toe op onze data met de `fit` methode: +Ten slotte kost het trainen van het eigenlijke lineaire regressiemodel slechts twee regels code. We definiëren het `LinearRegression` object en passen het toe op onze data met de `fit`-methode: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Het `LinearRegression` object bevat na het fitten alle coëfficiënten van de regressie, die toegankelijk zijn via de `.coef_` eigenschap. In ons geval is er slechts één coëfficiënt, die ongeveer `-0.017` zou moeten zijn. Dit betekent dat prijzen enigszins lijken te dalen in de tijd, maar niet te veel, ongeveer 2 cent per dag. We kunnen ook het snijpunt van de regressie met de Y-as benaderen via `lin_reg.intercept_` - dit zal rond `21` liggen in ons geval, wat de prijs aan het begin van het jaar aangeeft. +Het `LinearRegression`-object bevat na het `fit`-ten alle coëfficiënten van de regressie, die kunnen worden benaderd via de `.coef_`-eigenschap. In ons geval is er maar één coëfficiënt, die ongeveer `-0.017` zou moeten zijn. Dit betekent dat de prijzen met de tijd lijken te dalen, maar niet teveel, ongeveer 2 cent per dag. We kunnen ook het snijpunt van de regressie met de Y-as benaderen met `lin_reg.intercept_` - dit zal in ons geval rond de `21` liggen, wat de prijs aan het begin van het jaar aangeeft. -Om te zien hoe nauwkeurig ons model is, kunnen we prijzen voorspellen op een testdataset, en vervolgens meten hoe dicht onze voorspellingen bij de verwachte waarden liggen. Dit kan worden gedaan met root mean square error (RMSE) metrics, wat de wortel van het gemiddelde van alle gekwadrateerde verschillen tussen de verwachte en voorspelde waarde is. +Om te zien hoe nauwkeurig ons model is, kunnen we prijzen voorspellen op een testdataset, en dan meten hoe dicht onze voorspellingen bij de verwachte waarden liggen. Dit kan worden gedaan met behulp van root mean square error (RMSE) metriek, wat de wortel is van het gemiddelde van alle gekwadrateerde verschillen tussen verwachte en voorspelde waarden. ```python pred = lin_reg.predict(X_test) @@ -216,36 +216,36 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Onze fout lijkt rond de 2 punten te liggen, wat ongeveer 17% is. Niet zo goed. Een andere indicator van de modelkwaliteit is de **bepalingscoëfficiënt**, die als volgt kan worden verkregen: +Onze fout lijkt ongeveer 2 punten te zijn, wat ~17% is. Niet al te best. Een andere indicator van modelkwaliteit is de **coëfficiënt van determinatie**, die op de volgende manier kan worden verkregen: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Als de waarde 0 is, betekent dit dat het model geen rekening houdt met de invoergegevens en fungeert als de *slechtste lineaire voorspeller*, die simpelweg de gemiddelde waarde van het resultaat is. Een waarde van 1 betekent dat we perfect alle verwachte uitkomsten kunnen voorspellen. In ons geval is de coëfficiënt ongeveer 0.06, wat vrij laag is. +Als de waarde 0 is, betekent dit dat het model geen rekening houdt met de invoergegevens en functioneert als de *slechtste lineaire voorspeller*, wat simpelweg een gemiddelde waarde van het resultaat is. Een waarde van 1 betekent dat we perfect alle verwachte uitkomsten kunnen voorspellen. In ons geval is de coëfficiënt ongeveer 0.06, wat vrij laag is. -We kunnen ook de testdata plotten samen met de regressielijn om beter te zien hoe de regressie in ons geval werkt: +We kunnen ook de testgegevens samen met de regressielijn plotten om beter te zien hoe regressie in ons geval werkt: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` -Lineaire regressie +Linear regression ## Polynomiale Regressie -Een ander type lineaire regressie is polynomiale regressie. Hoewel er soms een lineair verband is tussen variabelen - hoe groter de pompoen in volume, hoe hoger de prijs - kunnen deze relaties soms niet als een vlak of rechte lijn worden geplot. +Een ander type Lineaire Regressie is Polynomiale Regressie. Hoewel er soms een lineair verband is tussen variabelen - hoe groter de pompoen in volume, hoe hoger de prijs - kunnen deze verbanden soms niet worden uitgezet als een vlak of rechte lijn. -✅ Hier zijn [nog enkele voorbeelden](https://online.stat.psu.edu/stat501/lesson/9/9.8) van data die polynomiale regressie kunnen gebruiken +✅ Hier zijn [nog wat meer voorbeelden](https://online.stat.psu.edu/stat501/lesson/9/9.8) van data die gebruik zouden kunnen maken van Polynomiale Regressie -Bekijk nogmaals de relatie tussen Datum en Prijs. Lijkt deze spreidingsgrafiek er echt op dat het noodzakelijk via een rechte lijn geanalyseerd moet worden? Kunnen prijzen niet fluctueren? In dat geval kun je polynomiale regressie proberen. +Kijk nog eens goed naar het verband tussen Datum en Prijs. Lijkt deze scatterplot echt zo dat het noodzakelijk is deze met een rechte lijn te analyseren? Kunnen prijzen niet fluctueren? In dat geval kun je polynomiale regressie proberen. -✅ Polynomen zijn wiskundige expressies die kunnen bestaan uit een of meer variabelen en coëfficiënten +✅ Polynomen zijn wiskundige uitdrukkingen die uit één of meer variabelen en coëfficiënten kunnen bestaan -Polynomiale regressie creëert een gekromde lijn om niet-lineaire data beter te passen. In ons geval, als we een gekwadrateerde `DayOfYear` variabele opnemen in de invoerdata, zouden we onze data moeten kunnen passen met een parabolische curve die een minimum heeft op een bepaald punt binnen het jaar. +Polynomiale regressie maakt een gebogen lijn om beter niet-lineaire data te modelleren. In ons geval, als we een gekwadrateerde `DayOfYear`-variabele opnemen in de invoergegevens, zouden we onze data moeten kunnen benaderen met een parabolische kromme, die een minimum heeft op een bepaald punt in het jaar. -Scikit-learn bevat een handige [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) om verschillende stappen van dataverwerking te combineren. Een **pipeline** is een keten van **estimators**. In ons geval maken we een pipeline die eerst polynomiale kenmerken toevoegt aan ons model, en vervolgens de regressie traint: +Scikit-learn bevat een handige [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) om verschillende stappen van dataverwerking te combineren. Een **pipeline** is een keten van **estimatoren**. In ons geval maken we een pipeline die eerst polynoomkenmerken toevoegt aan ons model, en daarna de regressie traint: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Door `PolynomialFeatures(2)` te gebruiken, nemen we alle tweede-graads polynomen van de invoerdata op. In ons geval betekent dit alleen `DayOfYear`2, maar met twee invoervariabelen X en Y voegt dit X2, XY en Y2 toe. We kunnen ook hogere graads polynomen gebruiken als we willen. +Het gebruik van `PolynomialFeatures(2)` betekent dat we alle tweedegraads polynomen van de invoergegevens meenemen. In ons geval betekent dit alleen `DayOfYear`2, maar met twee invoervariabelen X en Y zal dit X2, XY en Y2 toevoegen. We kunnen ook hogere graad polynomen gebruiken indien gewenst. + +Pipelines kunnen op dezelfde manier worden gebruikt als het originele `LinearRegression`-object, d.w.z. we kunnen de pipeline `fit`-ten en daarna `predict` gebruiken om voorspellingen te krijgen: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Om de vloeiende benaderingskromme te plotten, gebruiken we `np.linspace` om een uniforme reeks invoerwaarden aan te maken, in plaats van direct te plotten op de ongeordende testdata (wat een zigzaglijn zou opleveren): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelines kunnen op dezelfde manier worden gebruikt als het originele `LinearRegression` object, d.w.z. we kunnen de pipeline `fitten` en vervolgens `predict` gebruiken om de resultaten te krijgen. Hier is de grafiek met testdata en de benaderingscurve: +Hier is de grafiek die de testdata en de benaderingskromme toont: -Polynomiale regressie +Polynomial regression -Met polynomiale regressie krijgen we iets lagere MSE en hogere bepalingscoëfficiënt, maar niet significant. We moeten rekening houden met andere kenmerken! +Met Polynomiale Regressie kunnen we iets lagere RMSE en hogere determinatie bereiken, maar niet significant. We moeten ook andere kenmerken in overweging nemen! -> Je ziet dat de minimale pompoenprijzen ergens rond Halloween zijn. Hoe kun je dat verklaren? +> Je kunt zien dat de minimale pompoenprijzen ergens rond Halloween voorkomen. Hoe kun je dat verklaren? -🎃 Gefeliciteerd, je hebt zojuist een model gemaakt dat kan helpen de prijs van taartpompoenen te voorspellen. Waarschijnlijk kun je dezelfde procedure voor alle pompoentypes herhalen, maar dat zou saai zijn. Laten we nu leren hoe we pompoensoorten rekening kunnen laten houden in ons model! +🎃 Gefeliciteerd, je hebt zojuist een model gemaakt dat kan helpen de prijs van taartpompoenen te voorspellen. Waarschijnlijk kun je dezelfde procedure herhalen voor alle pompoentypes, maar dat zou tijdrovend zijn. Laten we nu leren hoe we pompoenvariëteit kunnen meenemen in ons model! ## Categorische Kenmerken -In de ideale wereld willen we prijzen kunnen voorspellen voor verschillende pompoenrassen met hetzelfde model. De kolom `Variety` is echter anders dan kolommen zoals `Month`, omdat deze niet-numerieke waarden bevat. Zulke kolommen heten **categorisch**. +In de ideale wereld willen we prijzen voor verschillende pompoenvariëteiten kunnen voorspellen met hetzelfde model. De kolom `Variety` is echter anders dan kolommen zoals `Month`, omdat deze niet-numerieke waarden bevat. Zulke kolommen worden **categorisch** genoemd. -[![ML voor beginners - Categorische Kenmerken voorspellen met Lineaire Regressie](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML voor beginners - Categorische Kenmerken voorspellen met Lineaire Regressie") +[![ML voor beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML voor beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht van het gebruik van categorische kenmerken. +> 🎥 Klik op de afbeelding hierboven voor een korte video-overzicht over het gebruik van categorische kenmerken. Hier zie je hoe de gemiddelde prijs afhangt van de variëteit: -Gemiddelde prijs per variëteit +Average price by variety -Om variëteit mee te nemen, moeten we het eerst omzetten naar numerieke vorm, oftewel **encoderen**. We kunnen dat op verschillende manieren doen: +Om variëteit mee te nemen moeten we deze eerst omzetten naar numerieke vorm, oftewel **encoder**. Er zijn verschillende manieren om dat te doen: -* Eenvoudige **numerieke codering** maakt een tabel van verschillende variëteiten en vervangt dan de variëteitnaam door een index in die tabel. Dit is niet de beste methode voor lineaire regressie, omdat lineaire regressie de daadwerkelijke numerieke waarde van de index neemt en toevoegt aan het resultaat, vermenigvuldigd met een coëfficiënt. In ons geval is de relatie tussen het indexnummer en de prijs duidelijk niet-lineair, zelfs als we zorgen dat indices op bepaalde orde staan. -* **One-hot encoding** vervangt de kolom `Variety` door 4 verschillende kolommen, één voor elke variëteit. Elke kolom bevat `1` als de overeenkomstige rij van die variëteit is, en `0` anders. Dit betekent dat er vier coëfficiënten in de lineaire regressie zijn, één per pompoenvariëteit, verantwoordelijk voor de "startprijs" (of beter gezegd "extra prijs") voor die specifieke variëteit. +* Eenvoudige **numerieke codering** bouwt een tabel van verschillende variëteiten en vervangt daarna de variëteitsnaam door een index in die tabel. Dit is niet ideaal voor lineaire regressie, omdat lineaire regressie de numerieke waarde van de index gebruikt en deze vermenigvuldigt met een coëfficiënt om op te tellen bij het resultaat. In ons geval is het verband tussen indexnummer en prijs duidelijk niet-lineair, ook al zorgen we ervoor dat indices op een specifieke manier worden geordend. +* **One-hot encoding** vervangt de `Variety`-kolom door 4 verschillende kolommen, één voor elke variëteit. Elke kolom bevat `1` als de betreffende rij die variëteit heeft, en anders `0`. Dit betekent dat er vier coëfficiënten in de lineaire regressie zijn, één voor elke pompoenvariëteit, verantwoordelijk voor de "startprijs" (of beter gezegd "extra prijs") voor die specifieke variëteit. -De volgende code laat zien hoe we variëteit one-hot encoderen: +De onderstaande code laat zien hoe je een variëteit one-hot kunt encoderen: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Om lineaire regressie te trainen met one-hot encoded variëteit als invoer, hoeven we `X` en `y` alleen correct te initialiseren: +Om lineaire regressie te trainen met one-hot encoded variëteit als input, hoeven we alleen `X` en `y` correct te initialiseren: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -De rest van de code is hetzelfde als wat we eerder gebruikten om lineaire regressie te trainen. Als je dit probeert, zie je dat de mean squared error ongeveer hetzelfde is, maar we krijgen veel een hogere bepalingscoëfficiënt (~77%). Om nog nauwkeurigere voorspellingen te krijgen, kunnen we meer categorische kenmerken meenemen, evenals numerieke kenmerken zoals `Month` of `DayOfYear`. Om één grote array van kenmerken te verkrijgen, kunnen we `join` gebruiken: +De rest van de code is hetzelfde als wat we hierboven gebruikten om Lineaire Regressie te trainen. Als je dit probeert, zul je zien dat de mean squared error ongeveer hetzelfde is, maar we krijgen een veel hogere coëfficiënt van determinatie (~77%). Om nog nauwkeurigere voorspellingen te krijgen kunnen we meer categorische kenmerken meenemen, evenals numerieke kenmerken zoals `Month` of `DayOfYear`. Om één grote features-array te krijgen, kunnen we `join` gebruiken: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Hier houden we ook rekening met `City` en `Package` type, wat ons een MSE van 2.84 (10%) en een bepalingscoëfficiënt van 0.94 geeft! +Hier nemen we ook `City` en het type `Package` mee, wat ons RMSE 2.84 (10.5%) en determinatie 0.94 geeft! ## Alles samenvoegen -Om het beste model te maken, kunnen we gecombineerde (one-hot encoded categorische + numerieke) data van het bovenstaande voorbeeld samen met polynomiale regressie gebruiken. Hier is de complete code voor jouw gemak: +Om het beste model te maken kunnen we gecombineerde (one-hot encoded categorisch + numeriek) data van het bovenstaande voorbeeld samen met Polynomiale Regressie gebruiken. Hier is de complete code voor je gemak: ```python # stel trainingsgegevens in @@ -343,44 +365,44 @@ pipeline.fit(X_train,y_train) # voorspel resultaten voor testgegevens pred = pipeline.predict(X_test) -# bereken MSE en determinatie -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# bereken RMSE en bepaling +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Dit zou ons de beste bepalingscoëfficiënt van bijna 97% moeten geven, en MSE=2.23 (~8% voorspellingsfout). +Dit zou ons de beste determinatiecoëfficiënt van bijna 97% moeten geven, en RMSE=2.23 (~8% voorspellingsfout). -| Model | MSE | Bepalingscoëfficiënt | -|-------|-----|----------------------| -| `DayOfYear` Lineair | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Polynomiaal | 2.73 (17.0%) | 0.08 | -| `Variety` Lineair | 5.24 (19.7%) | 0.77 | -| Alle kenmerken Lineair | 2.84 (10.5%) | 0.94 | -| Alle kenmerken Polynomiaal | 2.23 (8.25%) | 0.97 | +| Model | RMSE | Determinatie | +|-------|-----|--------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| Alle kenmerken Linear | 2.84 (10.5%) | 0.94 | +| Alle kenmerken Polynomial | 2.23 (8.25%) | 0.97 | -🏆 Goed gedaan! Je maakte vier regressiemodellen in één les en verbeterde de modelkwaliteit tot 97%. In de laatste sectie over regressie leer je over logistieke regressie om categorieën te bepalen. +🏆 Goed gedaan! Je hebt vier Regressiemodellen in één les gemaakt en de modelkwaliteit verbeterd tot 97%. In het laatste gedeelte over Regressie leer je over Logistische Regressie om categorieën te bepalen. --- ## 🚀Uitdaging -Test verschillende variabelen in dit notebook om te zien hoe correlatie overeenkomt met modelnauwkeurigheid. +Test verschillende variabelen in dit notebook om te zien hoe correlatie correspondeert met modelnauwkeurigheid. ## [Quiz na de les](https://ff-quizzes.netlify.app/en/ml/) -## Review & Zelfstudie +## Herziening & Zelfstudie -In deze les leerden we over lineaire regressie. Er zijn andere belangrijke typen regressie. Lees over Stepwise, Ridge, Lasso en Elasticnet technieken. Een goede cursus om meer te leren is de [Stanford Statistical Learning cursus](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +In deze les leerden we over Lineaire Regressie. Er zijn andere belangrijke soorten Regressie. Lees over Stepwise, Ridge, Lasso en Elasticnet technieken. Een goede cursus om meer te leren is de [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Opdracht -[Maak een model](assignment.md) +[Maak een Model](assignment.md) --- -**Disclaimer**: -Dit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, moet u er rekening mee houden dat geautomatiseerde vertalingen fouten of onjuistheden kunnen bevatten. Het originele document in de oorspronkelijke taal dient als de gezaghebbende bron te worden beschouwd. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties voortvloeiend uit het gebruik van deze vertaling. +**Disclaimer**: +Dit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet als de gezaghebbende bron worden beschouwd. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor enige misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling. \ No newline at end of file diff --git a/translations/nl/2-Regression/3-Linear/solution/notebook.ipynb b/translations/nl/2-Regression/3-Linear/solution/notebook.ipynb index c1729361a9..4e6b2284fa 100644 --- a/translations/nl/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/nl/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineaire en Polynomiale Regressie voor Pompoenprijzen - Les 3\n", + "## Lineaire en polynomiale regressie voor pompoenprijzen - Les 3\n", "\n", - "Laad de benodigde bibliotheken en dataset. Zet de gegevens om naar een dataframe met een subset van de gegevens:\n", + "Laad de benodigde bibliotheken en dataset. Zet de gegevens om naar een dataframe met een subset van de data:\n", "\n", - "- Selecteer alleen pompoenen die per schepel geprijsd zijn\n", - "- Converteer de datum naar een maand\n", - "- Bereken de prijs als het gemiddelde van de hoge en lage prijzen\n", - "- Pas de prijs aan om de prijs per schepelhoeveelheid weer te geven\n" + "- Haal alleen pompoenen op die per bushel geprijsd zijn\n", + "- Zet de datum om naar een maand\n", + "- Bereken de prijs als een gemiddelde van hoge en lage prijzen\n", + "- Zet de prijs om zodat deze de prijs per bushel hoeveelheid weergeeft\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Een spreidingsdiagram herinnert ons eraan dat we alleen maandgegevens hebben van augustus tot en met december. We hebben waarschijnlijk meer gegevens nodig om conclusies op een lineaire manier te kunnen trekken.\n" + "Een spreidingsdiagram herinnert ons eraan dat we alleen maandgegevens hebben van augustus tot en met december. Waarschijnlijk hebben we meer gegevens nodig om op een lineaire manier conclusies te kunnen trekken.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Laten we eens kijken of er een correlatie is:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Het lijkt erop dat de correlatie vrij klein is, maar er is een andere, belangrijkere relatie - omdat de prijsgegevens in de bovenstaande plot lijken te bestaan uit verschillende duidelijke clusters. Laten we een plot maken die verschillende pompoenvariëteiten laat zien:\n" + "Het lijkt erop dat de correlatie vrij klein is, maar er is een andere, belangrijkere relatie - omdat de prijsniveaus in de bovenstaande grafiek meerdere duidelijke clusters lijken te hebben. Laten we een grafiek maken die verschillende pompoenrassen laat zien:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Laten we ons voorlopig alleen concentreren op één soort - **taarttype**.\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineaire regressie\n", + "### Lineaire Regressie\n", "\n", - "We gebruiken Scikit Learn om een lineair regressiemodel te trainen:\n" + "We zullen Scikit Learn gebruiken om een lineair regressiemodel te trainen:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "De helling van de lijn kan worden bepaald aan de hand van lineaire regressiecoëfficiënten:\n" + "De helling van de lijn kan worden bepaald uit de coëfficiënten van de lineaire regressie:\n" ] }, { @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polynomiale regressie\n", + "### Polynomiale Regressie\n", "\n", - "Soms is de relatie tussen kenmerken en de resultaten van nature niet-lineair. Bijvoorbeeld, pompoenprijzen kunnen hoog zijn in de winter (maanden=1,2), vervolgens dalen in de zomer (maanden=5-7), en daarna weer stijgen. Lineaire regressie kan deze relatie niet nauwkeurig vinden.\n", + "Soms is de relatie tussen kenmerken en resultaten van nature niet-lineair. Bijvoorbeeld, pompoenprijzen kunnen hoog zijn in de winter (maanden=1,2), vervolgens dalen in de zomer (maanden=5-7), en daarna weer stijgen. Lineaire regressie kan deze relatie niet nauwkeurig vinden.\n", "\n", - "In dit geval kunnen we overwegen om extra kenmerken toe te voegen. Een eenvoudige manier is om polynomen van invoerkenmerken te gebruiken, wat resulteert in **polynomiale regressie**. In Scikit Learn kunnen we automatisch polynomiale kenmerken vooraf berekenen met behulp van pipelines:\n" + "In dit geval kunnen we overwegen extra kenmerken toe te voegen. Een eenvoudige manier is om polynomen van de invoerkenmerken te gebruiken, wat zou resulteren in **polynomiale regressie**. In Scikit Learn kunnen we polynomiale kenmerken automatisch vooraf berekenen met behulp van pipelines: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Verschillende manieren van coderen\n", + "### Codering variëteiten\n", "\n", - "In een ideale wereld willen we prijzen voor verschillende pompoenvariëteiten kunnen voorspellen met hetzelfde model. Om rekening te houden met de variëteit, moeten we deze eerst omzetten naar een numerieke vorm, ofwel **coderen**. Er zijn verschillende manieren om dit te doen:\n", + "In de ideale wereld willen we prijzen voor verschillende pompoenvariëteiten kunnen voorspellen met hetzelfde model. Om rekening te houden met variëteit, moeten we deze eerst omzetten naar numerieke vorm, of **coderen**. Er zijn verschillende manieren om dit te doen:\n", "\n", - "* Eenvoudige numerieke codering, waarbij een tabel wordt gemaakt van verschillende variëteiten, en de variëteitsnaam wordt vervangen door een index in die tabel. Dit is niet de beste aanpak voor lineaire regressie, omdat lineaire regressie de numerieke waarde van de index meeneemt, en die numerieke waarde waarschijnlijk niet numeriek correleert met de prijs.\n", - "* One-hot encoding, waarbij de kolom `Variety` wordt vervangen door 4 verschillende kolommen, één voor elke variëteit. Deze kolommen bevatten een 1 als de betreffende rij van die specifieke variëteit is, en een 0 anders.\n", + "* Eenvoudige numerieke codering die een tabel van verschillende variëteiten opbouwt, en vervolgens de variëteitsnaam vervangt door een index in die tabel. Dit is niet de beste keuze voor lineaire regressie, omdat lineaire regressie de numerieke waarde van de index meeneemt, en de numerieke waarde waarschijnlijk niet numeriek correleert met de prijs.\n", + "* One-hot codering, die de `Variety` kolom vervangt door 4 verschillende kolommen, één voor elke variëteit, die 1 bevatten als de overeenkomende rij de gegeven variëteit heeft, en 0 anders.\n", "\n", - "De onderstaande code laat zien hoe we een variëteit kunnen one-hot encoderen:\n" + "De onderstaande code laat zien hoe we een variëteit one-hot kunnen coderen:\n" ] }, { @@ -942,7 +949,7 @@ "source": [ "### Lineaire regressie op variëteit\n", "\n", - "We zullen nu dezelfde code als hierboven gebruiken, maar in plaats van `DayOfYear` gebruiken we onze one-hot-gecodeerde variëteit als invoer:\n" + "We zullen nu dezelfde code gebruiken als hierboven, maar in plaats van `DayOfYear` gebruiken we onze one-hot-gecodeerde variëteit als invoer:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We kunnen ook proberen andere functies op dezelfde manier te gebruiken en ze te combineren met numerieke functies, zoals `Month` of `DayOfYear`:\n" + "We kunnen ook proberen andere kenmerken op dezelfde manier te gebruiken en deze te combineren met numerieke kenmerken, zoals `Month` of `DayOfYear`:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polynomiale regressie\n", "\n", - "Polynomiale regressie kan ook worden gebruikt met categorische kenmerken die one-hot-encoded zijn. De code om polynomiale regressie te trainen zou in wezen hetzelfde zijn als wat we hierboven hebben gezien.\n" + "Polynomiale regressie kan ook worden gebruikt met categorische kenmerken die one-hot-gecodeerd zijn. De code om polynomiale regressie te trainen zou in feite hetzelfde zijn als wat we hierboven hebben gezien.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Disclaimer**: \nDit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, willen we u erop wijzen dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n" + "---\n\n\n**Disclaimer**: \nDit document is vertaald met behulp van de AI-vertalingsdienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onjuistheden kunnen bevatten. Het oorspronkelijke document in de oorspronkelijke taal moet als gezaghebbende bron worden beschouwd. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T11:31:07+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "nl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/vi/.co-op-translator.json b/translations/vi/.co-op-translator.json index 219a6947e6..86e8960ec8 100644 --- a/translations/vi/.co-op-translator.json +++ b/translations/vi/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "vi" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T19:35:41+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:07:09+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "vi" }, @@ -90,8 +90,8 @@ "language_code": "vi" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T20:56:30+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:06:44+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "vi" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "vi" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:03:21+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "vi" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T18:46:57+00:00", diff --git a/translations/vi/1-Introduction/4-techniques-of-ML/README.md b/translations/vi/1-Introduction/4-techniques-of-ML/README.md index c6d518d26a..394261856d 100644 --- a/translations/vi/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/vi/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ -# Kỹ thuật Học Máy +# Kỹ thuật của Máy học -Quy trình xây dựng, sử dụng và duy trì các mô hình học máy cùng dữ liệu mà chúng sử dụng là một quy trình rất khác biệt so với nhiều quy trình phát triển khác. Trong bài học này, chúng ta sẽ làm rõ quy trình này và phác thảo các kỹ thuật chính mà bạn cần biết. Bạn sẽ: +Quá trình xây dựng, sử dụng và duy trì các mô hình máy học cùng dữ liệu mà chúng sử dụng là một quy trình rất khác biệt so với nhiều quy trình phát triển khác. Trong bài học này, chúng ta sẽ làm sáng tỏ quy trình và phác thảo các kỹ thuật chính mà bạn cần biết. Bạn sẽ: -- Hiểu các quy trình nền tảng của học máy ở mức độ cao. +- Hiểu được các quy trình làm nền tảng cho máy học ở mức cao. - Khám phá các khái niệm cơ bản như 'mô hình', 'dự đoán', và 'dữ liệu huấn luyện'. -## [Câu hỏi trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) +## [Bài kiểm tra trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) -[![Học máy cho người mới bắt đầu - Kỹ thuật Học Máy](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Học máy cho người mới bắt đầu - Kỹ thuật Học Máy") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Nhấp vào hình ảnh trên để xem video ngắn về bài học này. +> 🎥 Nhấn vào hình ảnh ở trên để xem video ngắn hướng dẫn qua bài học này. ## Giới thiệu -Ở mức độ cao, việc tạo ra các quy trình học máy (ML) bao gồm một số bước: +Ở mức độ tổng quát, công việc tạo ra các quy trình máy học (ML) bao gồm một số bước: -1. **Xác định câu hỏi**. Hầu hết các quy trình ML bắt đầu bằng việc đặt ra một câu hỏi mà không thể trả lời bằng một chương trình điều kiện đơn giản hoặc một hệ thống dựa trên quy tắc. Những câu hỏi này thường xoay quanh việc dự đoán dựa trên một tập hợp dữ liệu. -2. **Thu thập và chuẩn bị dữ liệu**. Để có thể trả lời câu hỏi của bạn, bạn cần dữ liệu. Chất lượng và, đôi khi, số lượng dữ liệu của bạn sẽ quyết định mức độ bạn có thể trả lời câu hỏi ban đầu. Việc trực quan hóa dữ liệu là một khía cạnh quan trọng của giai đoạn này. Giai đoạn này cũng bao gồm việc chia dữ liệu thành nhóm huấn luyện và kiểm tra để xây dựng mô hình. -3. **Chọn phương pháp huấn luyện**. Tùy thuộc vào câu hỏi của bạn và bản chất của dữ liệu, bạn cần chọn cách huấn luyện mô hình để phản ánh tốt nhất dữ liệu và đưa ra dự đoán chính xác. Đây là phần của quy trình ML yêu cầu chuyên môn cụ thể và thường cần một lượng lớn thử nghiệm. -4. **Huấn luyện mô hình**. Sử dụng dữ liệu huấn luyện của bạn, bạn sẽ sử dụng các thuật toán khác nhau để huấn luyện mô hình nhận diện các mẫu trong dữ liệu. Mô hình có thể sử dụng các trọng số nội bộ có thể được điều chỉnh để ưu tiên một số phần của dữ liệu hơn các phần khác nhằm xây dựng mô hình tốt hơn. -5. **Đánh giá mô hình**. Bạn sử dụng dữ liệu chưa từng thấy trước đây (dữ liệu kiểm tra của bạn) từ tập dữ liệu đã thu thập để xem mô hình hoạt động như thế nào. -6. **Điều chỉnh tham số**. Dựa trên hiệu suất của mô hình, bạn có thể thực hiện lại quy trình bằng cách sử dụng các tham số hoặc biến khác nhau để kiểm soát hành vi của các thuật toán được sử dụng để huấn luyện mô hình. -7. **Dự đoán**. Sử dụng các đầu vào mới để kiểm tra độ chính xác của mô hình. +1. **Xác định câu hỏi**. Hầu hết các quy trình ML bắt đầu bằng việc đặt ra một câu hỏi không thể trả lời bằng một chương trình điều kiện đơn giản hoặc một công cụ dựa trên quy tắc. Những câu hỏi này thường xoay quanh các dự đoán dựa trên một tập hợp dữ liệu. +2. **Thu thập và chuẩn bị dữ liệu**. Để có thể trả lời câu hỏi, bạn cần dữ liệu. Chất lượng và, đôi khi, số lượng dữ liệu của bạn sẽ quyết định mức độ tốt bạn có thể trả lời câu hỏi ban đầu. Việc trực quan hóa dữ liệu là một khía cạnh quan trọng của giai đoạn này. Giai đoạn này cũng bao gồm chia dữ liệu thành nhóm huấn luyện và kiểm tra để xây dựng mô hình. +3. **Chọn phương pháp huấn luyện**. Tùy vào câu hỏi và tính chất của dữ liệu, bạn cần chọn cách huấn luyện một mô hình tốt nhất để phản ánh dữ liệu và đưa ra dự đoán chính xác với nó. Đây là phần trong quy trình ML của bạn đòi hỏi chuyên môn cụ thể và thường là một lượng lớn thử nghiệm. +4. **Huấn luyện mô hình**. Sử dụng dữ liệu huấn luyện, bạn sẽ sử dụng nhiều thuật toán khác nhau để huấn luyện một mô hình nhận diện các mô hình trong dữ liệu. Mô hình có thể sử dụng các trọng số nội bộ có thể điều chỉnh để ưu tiên phần dữ liệu nào đó nhằm xây dựng mô hình tốt hơn. +5. **Đánh giá mô hình**. Bạn sử dụng dữ liệu chưa từng thấy trước đây (dữ liệu kiểm tra) từ bộ dữ liệu đã thu thập để xem mô hình hoạt động ra sao. +6. **Điều chỉnh tham số**. Dựa trên hiệu suất của mô hình, bạn có thể thực hiện lại quy trình sử dụng các tham số khác nhau, hoặc biến số, kiểm soát hành vi của các thuật toán được dùng để huấn luyện mô hình. +7. **Dự đoán**. Sử dụng dữ liệu đầu vào mới để kiểm tra độ chính xác của mô hình. ## Câu hỏi cần đặt ra -Máy tính đặc biệt giỏi trong việc khám phá các mẫu ẩn trong dữ liệu. Tiện ích này rất hữu ích cho các nhà nghiên cứu có câu hỏi về một lĩnh vực nhất định mà không thể dễ dàng trả lời bằng cách tạo một hệ thống dựa trên quy tắc điều kiện. Ví dụ, trong một nhiệm vụ tính toán bảo hiểm, một nhà khoa học dữ liệu có thể xây dựng các quy tắc thủ công về tỷ lệ tử vong của người hút thuốc so với người không hút thuốc. +Máy tính đặc biệt giỏi trong việc phát hiện các mẫu ẩn trong dữ liệu. Khả năng này rất hữu ích cho các nhà nghiên cứu có câu hỏi về một lĩnh vực nhất định mà không thể dễ dàng trả lời bằng cách tạo ra một công cụ quy tắc dựa trên điều kiện. Ví dụ, với một nhiệm vụ thống kê bảo hiểm, một nhà khoa học dữ liệu có thể xây dựng các quy tắc thủ công xoay quanh tỷ lệ tử vong của người hút thuốc so với người không hút thuốc. -Tuy nhiên, khi nhiều biến khác được đưa vào phương trình, một mô hình ML có thể chứng minh hiệu quả hơn trong việc dự đoán tỷ lệ tử vong trong tương lai dựa trên lịch sử sức khỏe trước đây. Một ví dụ vui vẻ hơn có thể là dự đoán thời tiết cho tháng Tư tại một địa điểm cụ thể dựa trên dữ liệu bao gồm vĩ độ, kinh độ, biến đổi khí hậu, khoảng cách đến đại dương, các mẫu luồng khí, và nhiều yếu tố khác. +Tuy nhiên, khi nhiều biến số khác được đưa vào phép tính, một mô hình ML có thể chứng minh hiệu quả hơn trong việc dự đoán tỷ lệ tử vong tương lai dựa trên lịch sử sức khỏe trong quá khứ. Một ví dụ vui hơn có thể là đưa ra dự đoán thời tiết cho tháng Tư tại một vị trí nhất định dựa trên dữ liệu gồm vĩ độ, kinh độ, biến đổi khí hậu, vị trí gần biển, các mẫu của dòng jet stream, và nhiều yếu tố khác. -✅ Bộ [slide này](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) về các mô hình thời tiết cung cấp một góc nhìn lịch sử về việc sử dụng ML trong phân tích thời tiết. +✅ Bộ slide này [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) về mô hình thời tiết cung cấp một góc nhìn lịch sử về việc sử dụng ML trong phân tích thời tiết. -## Nhiệm vụ trước khi xây dựng +## Các nhiệm vụ trước khi xây dựng -Trước khi bắt đầu xây dựng mô hình của bạn, có một số nhiệm vụ bạn cần hoàn thành. Để kiểm tra câu hỏi của bạn và hình thành giả thuyết dựa trên dự đoán của mô hình, bạn cần xác định và cấu hình một số yếu tố. +Trước khi bắt đầu xây dựng mô hình, có một số nhiệm vụ bạn cần hoàn thành. Để kiểm tra câu hỏi và hình thành giả thuyết dựa trên dự đoán của mô hình, bạn cần xác định và cấu hình một số yếu tố. ### Dữ liệu -Để có thể trả lời câu hỏi của bạn với bất kỳ mức độ chắc chắn nào, bạn cần một lượng dữ liệu tốt và đúng loại. Có hai điều bạn cần làm tại thời điểm này: +Để có thể trả lời câu hỏi của bạn với bất kỳ độ chắc chắn nào, bạn cần một lượng dữ liệu đủ tốt và đúng loại. Có hai việc bạn cần làm ở giai đoạn này: -- **Thu thập dữ liệu**. Ghi nhớ bài học trước về tính công bằng trong phân tích dữ liệu, hãy thu thập dữ liệu của bạn một cách cẩn thận. Hãy nhận thức về nguồn gốc của dữ liệu này, bất kỳ thiên kiến nào mà nó có thể mang theo, và ghi lại nguồn gốc của nó. -- **Chuẩn bị dữ liệu**. Có một số bước trong quy trình chuẩn bị dữ liệu. Bạn có thể cần tổng hợp dữ liệu và chuẩn hóa nó nếu nó đến từ các nguồn khác nhau. Bạn có thể cải thiện chất lượng và số lượng dữ liệu thông qua các phương pháp khác nhau như chuyển đổi chuỗi thành số (như chúng ta làm trong [Phân cụm](../../5-Clustering/1-Visualize/README.md)). Bạn cũng có thể tạo dữ liệu mới dựa trên dữ liệu gốc (như chúng ta làm trong [Phân loại](../../4-Classification/1-Introduction/README.md)). Bạn có thể làm sạch và chỉnh sửa dữ liệu (như chúng ta sẽ làm trước bài học [Ứng dụng Web](../../3-Web-App/README.md)). Cuối cùng, bạn cũng có thể cần ngẫu nhiên hóa và xáo trộn dữ liệu, tùy thuộc vào kỹ thuật huấn luyện của bạn. +- **Thu thập dữ liệu**. Ghi nhớ bài học trước về sự công bằng trong phân tích dữ liệu, hãy thu thập dữ liệu cẩn thận. Hiểu rõ nguồn gốc của dữ liệu này, bất kỳ thành kiến tiềm ẩn nào có thể tồn tại, và ghi chép nguồn gốc của nó. +- **Chuẩn bị dữ liệu**. Có một số bước trong quy trình chuẩn bị dữ liệu. Bạn có thể cần tổng hợp dữ liệu và chuẩn hóa nếu nó đến từ nhiều nguồn khác nhau. Bạn có thể cải thiện chất lượng và số lượng dữ liệu thông qua các phương pháp khác nhau như chuyển đổi chuỗi thành số (như chúng ta làm trong [Clustering](../../5-Clustering/1-Visualize/README.md)). Bạn cũng có thể tạo ra dữ liệu mới, dựa trên dữ liệu gốc (như chúng ta làm trong [Classification](../../4-Classification/1-Introduction/README.md)). Bạn có thể làm sạch và chỉnh sửa dữ liệu (như chúng ta sẽ làm trước bài học [Web App](../../3-Web-App/README.md)). Cuối cùng, bạn có thể cần làm ngẫu nhiên và trộn dữ liệu, tùy thuộc vào kỹ thuật huấn luyện của bạn. -✅ Sau khi thu thập và xử lý dữ liệu của bạn, hãy dành một chút thời gian để xem liệu hình dạng của nó có cho phép bạn giải quyết câu hỏi dự định hay không. Có thể dữ liệu sẽ không hoạt động tốt trong nhiệm vụ của bạn, như chúng ta phát hiện trong các bài học [Phân cụm](../../5-Clustering/1-Visualize/README.md)! +✅ Sau khi thu thập và xử lý dữ liệu, hãy dành chút thời gian để xem liệu hình dạng dữ liệu có cho phép bạn giải quyết câu hỏi dự định hay không. Có thể dữ liệu sẽ không hoạt động tốt trong nhiệm vụ của bạn, như chúng ta phát hiện trong các bài học [Clustering](../../5-Clustering/1-Visualize/README.md)! -### Đặc trưng và Mục tiêu +### Thuộc tính và Mục tiêu -Một [đặc trưng](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) là một thuộc tính có thể đo lường của dữ liệu. Trong nhiều tập dữ liệu, nó được biểu diễn dưới dạng tiêu đề cột như 'ngày', 'kích thước' hoặc 'màu sắc'. Biến đặc trưng của bạn, thường được biểu diễn là `X` trong mã, đại diện cho biến đầu vào sẽ được sử dụng để huấn luyện mô hình. +Một [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) là một thuộc tính có thể đo lường của dữ liệu. Trong nhiều bộ dữ liệu, nó được biểu thị dưới dạng tiêu đề cột như 'date' 'size' hoặc 'color'. Biến đặc trưng của bạn, thường được biểu diễn là `X` trong mã, biểu thị biến đầu vào sẽ được dùng để huấn luyện mô hình. -Mục tiêu là điều bạn đang cố gắng dự đoán. Mục tiêu, thường được biểu diễn là `y` trong mã, đại diện cho câu trả lời cho câu hỏi bạn đang cố gắng hỏi từ dữ liệu: vào tháng 12, **màu sắc** của bí ngô nào sẽ rẻ nhất? ở San Francisco, khu vực nào sẽ có **giá** bất động sản tốt nhất? Đôi khi mục tiêu cũng được gọi là thuộc tính nhãn. +Một mục tiêu là một thứ mà bạn đang cố gắng dự đoán. Mục tiêu, thường biểu diễn là `y` trong mã, biểu thị câu trả lời cho câu hỏi bạn đặt ra với dữ liệu của mình: vào tháng Mười Hai, quả bí ngô có **màu sắc** nào sẽ rẻ nhất? ở San Francisco, khu vực nào sẽ có **giá** bất động sản tốt nhất? Đôi khi mục tiêu cũng được gọi là thuộc tính nhãn. ### Chọn biến đặc trưng của bạn -🎓 **Lựa chọn đặc trưng và Trích xuất đặc trưng** Làm thế nào để bạn biết biến nào cần chọn khi xây dựng mô hình? Bạn có thể sẽ trải qua một quy trình lựa chọn đặc trưng hoặc trích xuất đặc trưng để chọn các biến phù hợp nhất cho mô hình hiệu quả nhất. Tuy nhiên, chúng không giống nhau: "Trích xuất đặc trưng tạo ra các đặc trưng mới từ các hàm của các đặc trưng gốc, trong khi lựa chọn đặc trưng trả về một tập hợp con của các đặc trưng." ([nguồn](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Chọn lựa thuộc tính và Trích xuất thuộc tính** Làm thế nào để biết biến nào nên chọn khi xây dựng mô hình? Bạn có thể sẽ trải qua một quy trình chọn thuộc tính hoặc trích xuất thuộc tính để chọn các biến đúng cho mô hình hiệu quả nhất. Tuy nhiên, chúng không giống nhau: "Trích xuất thuộc tính tạo ra các thuộc tính mới từ các hàm của thuộc tính gốc, trong khi chọn thuộc tính trả về một tập con các thuộc tính." ([nguồn](https://wikipedia.org/wiki/Feature_selection)) ### Trực quan hóa dữ liệu của bạn -Một khía cạnh quan trọng trong bộ công cụ của nhà khoa học dữ liệu là khả năng trực quan hóa dữ liệu bằng cách sử dụng một số thư viện xuất sắc như Seaborn hoặc MatPlotLib. Việc biểu diễn dữ liệu của bạn một cách trực quan có thể cho phép bạn khám phá các mối tương quan ẩn mà bạn có thể tận dụng. Các biểu đồ trực quan của bạn cũng có thể giúp bạn phát hiện thiên kiến hoặc dữ liệu không cân bằng (như chúng ta phát hiện trong [Phân loại](../../4-Classification/2-Classifiers-1/README.md)). +Một khía cạnh quan trọng trong bộ công cụ của nhà khoa học dữ liệu là khả năng trực quan hóa dữ liệu bằng nhiều thư viện tuyệt vời như Seaborn hoặc MatPlotLib. Biểu diễn dữ liệu của bạn một cách trực quan có thể giúp bạn phát hiện các mối tương quan ẩn mà bạn có thể tận dụng. Các trực quan hóa của bạn cũng có thể giúp bạn phát hiện thành kiến hoặc dữ liệu không cân bằng (như chúng ta khám phá trong [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Chia tập dữ liệu của bạn +### Chia bộ dữ liệu -Trước khi huấn luyện, bạn cần chia tập dữ liệu của mình thành hai hoặc nhiều phần có kích thước không bằng nhau nhưng vẫn đại diện tốt cho dữ liệu. +Trước khi huấn luyện, bạn cần chia bộ dữ liệu thành hai hoặc nhiều phần có kích thước không đều nhưng vẫn đại diện tốt cho dữ liệu. -- **Huấn luyện**. Phần này của tập dữ liệu được sử dụng để huấn luyện mô hình của bạn. Tập này chiếm phần lớn của tập dữ liệu gốc. -- **Kiểm tra**. Tập dữ liệu kiểm tra là một nhóm dữ liệu độc lập, thường được thu thập từ dữ liệu gốc, mà bạn sử dụng để xác nhận hiệu suất của mô hình đã xây dựng. -- **Xác thực**. Tập xác thực là một nhóm nhỏ các ví dụ độc lập mà bạn sử dụng để điều chỉnh các siêu tham số hoặc kiến trúc của mô hình nhằm cải thiện mô hình. Tùy thuộc vào kích thước dữ liệu của bạn và câu hỏi bạn đang hỏi, bạn có thể không cần xây dựng tập thứ ba này (như chúng ta lưu ý trong [Dự báo chuỗi thời gian](../../7-TimeSeries/1-Introduction/README.md)). +- **Huấn luyện**. Phần này của bộ dữ liệu được dùng để phù hợp với mô hình, huấn luyện nó. Phần này chiếm đa số trong bộ dữ liệu gốc. +- **Kiểm tra**. Một bộ dữ liệu kiểm tra là một nhóm dữ liệu độc lập, thường lấy từ dữ liệu gốc, mà bạn dùng để xác nhận hiệu suất của mô hình đã xây dựng. +- **Xác thực**. Bộ dữ liệu xác thực là một nhóm mẫu độc lập nhỏ hơn mà bạn dùng để điều chỉnh các siêu tham số, hoặc kiến trúc của mô hình, nhằm cải thiện mô hình. Tùy thuộc vào kích thước dữ liệu và câu hỏi bạn đang đặt ra, bạn có thể không cần xây dựng bộ thứ ba này (như chúng ta lưu ý trong [Dự báo chuỗi thời gian](../../7-TimeSeries/1-Introduction/README.md)). ## Xây dựng mô hình -Sử dụng dữ liệu huấn luyện của bạn, mục tiêu của bạn là xây dựng một mô hình, hoặc một biểu diễn thống kê của dữ liệu, bằng cách sử dụng các thuật toán khác nhau để **huấn luyện** nó. Việc huấn luyện mô hình cho phép nó tiếp xúc với dữ liệu và đưa ra các giả định về các mẫu mà nó phát hiện, xác nhận, và chấp nhận hoặc từ chối. +Sử dụng dữ liệu huấn luyện, mục tiêu của bạn là xây dựng một mô hình, hoặc một biểu diễn thống kê của dữ liệu, sử dụng các thuật toán khác nhau để **huấn luyện** nó. Việc huấn luyện mô hình đưa nó vào tiếp xúc với dữ liệu và cho phép nó đưa ra giả định về các mẫu được nhận diện, xác nhận, và chấp nhận hoặc từ chối. -### Quyết định phương pháp huấn luyện +### Chọn phương pháp huấn luyện -Tùy thuộc vào câu hỏi của bạn và bản chất của dữ liệu, bạn sẽ chọn một phương pháp để huấn luyện nó. Khi xem qua [tài liệu của Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - mà chúng ta sử dụng trong khóa học này - bạn có thể khám phá nhiều cách để huấn luyện mô hình. Tùy thuộc vào kinh nghiệm của bạn, bạn có thể phải thử nhiều phương pháp khác nhau để xây dựng mô hình tốt nhất. Bạn có khả năng trải qua một quy trình mà các nhà khoa học dữ liệu đánh giá hiệu suất của mô hình bằng cách cung cấp cho nó dữ liệu chưa từng thấy, kiểm tra độ chính xác, thiên kiến, và các vấn đề làm giảm chất lượng khác, và chọn phương pháp huấn luyện phù hợp nhất cho nhiệm vụ hiện tại. +Tùy vào câu hỏi và tính chất của dữ liệu, bạn sẽ chọn một phương pháp để huấn luyện. Khi xem qua [tài liệu của Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - thư viện chúng ta sử dụng trong khóa học này - bạn có thể khám phá nhiều cách huấn luyện mô hình. Tùy vào kinh nghiệm, bạn có thể phải thử nhiều phương pháp khác nhau để xây dựng mô hình tốt nhất. Bạn có thể sẽ trải qua một quy trình mà các nhà khoa học dữ liệu đánh giá hiệu suất của mô hình bằng cách cho mô hình thấy dữ liệu chưa từng nhìn thấy, kiểm tra độ chính xác, thành kiến, và các vấn đề làm giảm chất lượng khác, rồi chọn phương pháp huấn luyện phù hợp nhất với nhiệm vụ. ### Huấn luyện mô hình -Với dữ liệu huấn luyện của bạn, bạn đã sẵn sàng 'fit' nó để tạo ra một mô hình. Bạn sẽ nhận thấy rằng trong nhiều thư viện ML, bạn sẽ thấy mã 'model.fit' - đây là lúc bạn gửi biến đặc trưng của mình dưới dạng một mảng giá trị (thường là 'X') và một biến mục tiêu (thường là 'y'). +Với dữ liệu huấn luyện, bạn sẵn sàng 'fit' nó để tạo ra mô hình. Bạn sẽ nhận thấy rằng trong nhiều thư viện ML thường có dòng mã 'model.fit' - đó chính là lúc bạn gửi vào biến đặc trưng dưới dạng mảng các giá trị (thường là 'X') và biến mục tiêu (thường là 'y'). ### Đánh giá mô hình -Khi quá trình huấn luyện hoàn tất (nó có thể mất nhiều lần lặp lại, hoặc 'epochs', để huấn luyện một mô hình lớn), bạn sẽ có thể đánh giá chất lượng của mô hình bằng cách sử dụng dữ liệu kiểm tra để đo lường hiệu suất của nó. Dữ liệu này là một tập hợp con của dữ liệu gốc mà mô hình chưa từng phân tích trước đó. Bạn có thể in ra một bảng các chỉ số về chất lượng của mô hình. +Khi quy trình huấn luyện hoàn tất (có thể mất nhiều lần lặp, hoặc 'epoch', để huấn luyện một mô hình lớn), bạn có thể đánh giá chất lượng mô hình bằng việc sử dụng dữ liệu kiểm tra đo hiệu suất của nó. Dữ liệu này là một phần nhỏ của dữ liệu gốc mà mô hình chưa từng phân tích trước đây. Bạn có thể in ra một bảng các chỉ số về chất lượng mô hình. -🎓 **Fit mô hình** +🎓 **Fitting mô hình** -Trong bối cảnh học máy, fit mô hình đề cập đến độ chính xác của hàm cơ bản của mô hình khi nó cố gắng phân tích dữ liệu mà nó không quen thuộc. +Trong ngữ cảnh máy học, fitting mô hình đề cập đến độ chính xác của hàm số cơ sở của mô hình khi nó cố gắng phân tích dữ liệu mà nó chưa quen thuộc. -🎓 **Underfitting** và **overfitting** là các vấn đề phổ biến làm giảm chất lượng của mô hình, khi mô hình fit không đủ tốt hoặc quá tốt. Điều này khiến mô hình đưa ra dự đoán quá sát hoặc quá lỏng lẻo với dữ liệu huấn luyện của nó. Một mô hình overfit dự đoán dữ liệu huấn luyện quá tốt vì nó đã học quá kỹ các chi tiết và nhiễu của dữ liệu. Một mô hình underfit không chính xác vì nó không thể phân tích chính xác dữ liệu huấn luyện của nó hoặc dữ liệu mà nó chưa 'thấy'. +🎓 **Underfitting** và **overfitting** là những vấn đề phổ biến làm giảm chất lượng mô hình, khi mô hình fit không đủ tốt hoặc quá tốt. Điều này khiến mô hình đưa ra dự đoán quá sát hoặc quá lỏng với dữ liệu huấn luyện. Mô hình overfit dự đoán dữ liệu huấn luyện quá tốt vì nó đã học quá kỹ các chi tiết và nhiễu của dữ liệu. Mô hình underfit không chính xác vì nó không thể phân tích chính xác dữ liệu huấn luyện hoặc dữ liệu chưa từng thấy. -![mô hình overfitting](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/vi/overfitting.1c132d92bfd93cb6.webp) > Đồ họa thông tin bởi [Jen Looper](https://twitter.com/jenlooper) ## Điều chỉnh tham số -Khi quá trình huấn luyện ban đầu hoàn tất, hãy quan sát chất lượng của mô hình và cân nhắc cải thiện nó bằng cách điều chỉnh các 'siêu tham số' của nó. Đọc thêm về quy trình này [trong tài liệu](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Khi huấn luyện ban đầu hoàn tất, quan sát chất lượng mô hình và cân nhắc cải thiện nó bằng cách điều chỉnh các 'siêu tham số' của nó. Đọc thêm về quy trình này [trong tài liệu](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Dự đoán -Đây là thời điểm bạn có thể sử dụng dữ liệu hoàn toàn mới để kiểm tra độ chính xác của mô hình. Trong một môi trường ML 'ứng dụng', nơi bạn đang xây dựng các tài sản web để sử dụng mô hình trong sản xuất, quy trình này có thể bao gồm việc thu thập đầu vào từ người dùng (ví dụ, một lần nhấn nút) để đặt một biến và gửi nó đến mô hình để suy luận hoặc đánh giá. +Đây là thời điểm bạn có thể sử dụng dữ liệu hoàn toàn mới để kiểm tra độ chính xác của mô hình. Trong bối cảnh ML 'ứng dụng', nơi bạn xây dựng các tài nguyên web để sử dụng mô hình trong sản xuất, quy trình này có thể bao gồm việc thu thập dữ liệu đầu vào từ người dùng (ví dụ nhấn nút) để đặt một biến và gửi nó tới mô hình để suy luận hoặc đánh giá. -Trong các bài học này, bạn sẽ khám phá cách sử dụng các bước này để chuẩn bị, xây dựng, kiểm tra, đánh giá, và dự đoán - tất cả các thao tác của một nhà khoa học dữ liệu và hơn thế nữa, khi bạn tiến bộ trong hành trình trở thành một kỹ sư ML 'full stack'. +Trong các bài học này, bạn sẽ khám phá cách sử dụng các bước này để chuẩn bị, xây dựng, kiểm tra, đánh giá, và dự đoán - tất cả những thao tác của một nhà khoa học dữ liệu và hơn thế nữa, khi bạn tiến bộ trên hành trình trở thành kỹ sư ML 'full stack'. --- ## 🚀Thử thách -Vẽ một biểu đồ luồng phản ánh các bước của một nhà thực hành ML. Bạn thấy mình đang ở đâu trong quy trình này? Bạn dự đoán sẽ gặp khó khăn ở đâu? Điều gì có vẻ dễ dàng đối với bạn? +Vẽ một sơ đồ quy trình phản ánh các bước của một nhà thực hành ML. Bạn đang thấy mình ở bước nào trong quy trình? Bạn dự đoán sẽ gặp khó khăn ở đâu? Điều gì có vẻ dễ với bạn? -## [Câu hỏi sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) +## [Bài kiểm tra sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) ## Ôn tập & Tự học -Tìm kiếm trực tuyến các cuộc phỏng vấn với các nhà khoa học dữ liệu thảo luận về công việc hàng ngày của họ. Đây là [một cuộc phỏng vấn](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Tìm kiếm trên mạng các phỏng vấn với các nhà khoa học dữ liệu nói về công việc hàng ngày của họ. Đây là [một phỏng vấn](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Bài tập @@ -119,5 +119,7 @@ Tìm kiếm trực tuyến các cuộc phỏng vấn với các nhà khoa học --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file + +**Tuyên bố từ chối trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ mẹ đẻ của nó nên được coi là nguồn chính xác và có thẩm quyền. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp của con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. + \ No newline at end of file diff --git a/translations/vi/2-Regression/3-Linear/README.md b/translations/vi/2-Regression/3-Linear/README.md index f496716c35..a1280647ce 100644 --- a/translations/vi/2-Regression/3-Linear/README.md +++ b/translations/vi/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Xây dựng mô hình hồi quy sử dụng Scikit-learn: hồi quy theo bốn phương pháp +# Xây dựng mô hình hồi quy sử dụng Scikit-learn: hồi quy theo bốn cách ## Ghi chú cho người mới bắt đầu Hồi quy tuyến tính được sử dụng khi chúng ta muốn dự đoán một **giá trị số** (ví dụ, giá nhà, nhiệt độ hoặc doanh số). -Nó hoạt động bằng cách tìm một đường thẳng đại diện tốt nhất cho mối quan hệ giữa các đặc trưng đầu vào và đầu ra. +Nó hoạt động bằng cách tìm ra đường thẳng đại diện tốt nhất cho mối quan hệ giữa các đặc trưng đầu vào và đầu ra. Trong bài học này, chúng ta tập trung vào việc hiểu khái niệm trước khi khám phá các kỹ thuật hồi quy nâng cao hơn. -![Linear vs polynomial regression infographic](../../../../translated_images/vi/linear-polynomial.5523c7cb6576ccab.webp) -> Infographic bởi [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Bài kiểm tra trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) +![Biểu đồ thông tin hồi quy tuyến tính và đa thức](../../../../translated_images/vi/linear-polynomial.5523c7cb6576ccab.webp) +> Biểu đồ thông tin bởi [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Trắc nghiệm trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) -> ### [Bài học này cũng có sẵn bằng R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Giới thiệu +> ### [Bài học này có sẵn bằng R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Giới thiệu -Từ trước đến nay bạn đã khám phá khái niệm hồi quy với dữ liệu mẫu thu thập từ bộ dữ liệu giá bí ngô mà chúng ta sẽ sử dụng xuyên suốt bài học này. Bạn cũng đã hình dung dữ liệu bằng Matplotlib. +Cho đến nay bạn đã khám phá hồi quy là gì với dữ liệu mẫu thu thập từ bộ dữ liệu giá bí ngô mà chúng ta sẽ sử dụng trong suốt bài học này. Bạn cũng đã trực quan hóa nó bằng Matplotlib. -Bây giờ bạn đã sẵn sàng để đi sâu hơn vào hồi quy trong ML. Trong khi việc trực quan hóa dữ liệu giúp bạn hiểu được dữ liệu, sức mạnh thực sự của Machine Learning đến từ _việc huấn luyện mô hình_. Mô hình được huấn luyện trên dữ liệu lịch sử để tự động nắm bắt các phụ thuộc trong dữ liệu, cho phép bạn dự đoán kết quả cho dữ liệu mới mà mô hình chưa từng thấy trước đó. +Bây giờ bạn đã sẵn sàng để đi sâu hơn vào hồi quy trong ML. Trong khi trực quan hóa giúp bạn hiểu dữ liệu, sức mạnh thực sự của Machine Learning đến từ việc _huấn luyện mô hình_. Các mô hình được huấn luyện trên dữ liệu lịch sử để tự động nắm bắt các phụ thuộc dữ liệu, và cho phép bạn dự đoán kết quả cho dữ liệu mới mà mô hình chưa từng thấy trước đó. -Trong bài học này, bạn sẽ học thêm về hai loại hồi quy: _hồi quy tuyến tính cơ bản_ và _hồi quy đa thức_, cùng với một số toán học nền tảng của các kỹ thuật này. Những mô hình đó sẽ giúp chúng ta dự đoán giá bí ngô tùy thuộc vào các dữ liệu đầu vào khác nhau. +Trong bài học này, bạn sẽ tìm hiểu thêm về hai loại hồi quy: _hồi quy tuyến tính cơ bản_ và _hồi quy đa thức_, cùng với một số toán học nền tảng của các kỹ thuật này. Những mô hình đó sẽ cho phép chúng ta dự đoán giá bí ngô tùy theo dữ liệu đầu vào khác nhau. -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML cho người mới bắt đầu - Hiểu hồi quy tuyến tính](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML cho người mới bắt đầu - Hiểu hồi quy tuyến tính") -> 🎥 Nhấn vào hình trên để xem video tóm tắt ngắn về hồi quy tuyến tính. +> 🎥 Click vào hình bên trên để xem video tóm tắt ngắn về hồi quy tuyến tính. -> Xuyên suốt chương trình học này, chúng tôi giả định kiến thức toán học tối thiểu, và cố gắng làm cho nó dễ tiếp cận cho học viên từ các lĩnh vực khác, vì vậy hãy chú ý đến các ghi chú, 🧮 cảnh báo, sơ đồ và các công cụ học tập khác để hỗ trợ tiếp thu. +> Trong suốt chương trình học này, chúng ta giả định kiến thức toán học tối thiểu, và cố gắng làm cho nó dễ tiếp cận cho sinh viên đến từ các lĩnh vực khác, vì vậy hãy chú ý đến các ghi chú, 🧮 chú thích, sơ đồ và các công cụ học tập khác nhằm hỗ trợ hiểu bài. -### Kiến thức nền tảng +### Điều kiện tiên quyết -Bạn nên đã quen với cấu trúc dữ liệu bí ngô mà chúng ta đang xem xét. Bạn có thể tìm thấy nó được tải sẵn và đã được làm sạch trong tệp _notebook.ipynb_ của bài học này. Trong tệp, giá bí ngô được hiển thị theo mỗi bushel trong một dataframe mới. Đảm bảo bạn có thể chạy các notebook này trong môi trường kernel trên Visual Studio Code. +Bạn nên quen với cấu trúc dữ liệu bí ngô mà chúng ta đang xem xét. Bạn có thể tìm thấy nó được tải sẵn và làm sạch sẵn trong file _notebook.ipynb_ của bài học này. Trong file, giá bí ngô được hiển thị trên mỗi bushel trong một khung dữ liệu mới. Hãy chắc chắn bạn có thể chạy các notebook này trong các kernel của Visual Studio Code. ### Chuẩn bị -Như một lời nhắc, bạn đang tải dữ liệu này để đặt câu hỏi với nó. +Như lời nhắc nhở, bạn đang tải dữ liệu này để có thể đặt câu hỏi cho nó. - Khi nào là thời điểm tốt nhất để mua bí ngô? -- Giá của một thùng bí ngô tí hon có thể kỳ vọng là bao nhiêu? -- Tôi nên mua chúng trong giỏ nửa bushel hay theo hộp 1 1/9 bushel? -Hãy tiếp tục khai thác dữ liệu này. +- Tôi có thể mong đợi giá bao nhiêu cho một thùng bí ngô mini? +- Tôi có nên mua chúng trong giỏ nửa bushel hay hộp 1 1/9 bushel? +Hãy tiếp tục khám phá dữ liệu này. -Trong bài học trước, bạn đã tạo một Pandas dataframe và điền dữ liệu từ bộ dữ liệu gốc, chuẩn hóa giá theo bushel. Tuy nhiên, bằng cách đó bạn chỉ thu thập được khoảng 400 điểm dữ liệu và chỉ cho các tháng mùa thu. +Trong bài học trước, bạn đã tạo một khung dữ liệu Pandas và điền dữ liệu với một phần của bộ dữ liệu gốc, chuẩn hóa giá theo bushel. Tuy nhiên, bằng cách đó, bạn chỉ lấy được khoảng 400 điểm dữ liệu và chỉ trong các tháng mùa thu. -Hãy xem dữ liệu được tải sẵn trong notebook đi kèm bài học này. Dữ liệu đã được tải sẵn và một biểu đồ điểm ban đầu đã được vẽ để hiển thị dữ liệu theo tháng. Có lẽ chúng ta có thể thu được nhiều chi tiết hơn về bản chất dữ liệu bằng cách làm sạch thêm. +Hãy xem dữ liệu được tải sẵn trong notebook kèm theo bài học này. Dữ liệu được tải sẵn và biểu đồ phân tán ban đầu được vẽ để hiển thị dữ liệu theo tháng. Có thể chúng ta có thể có thêm một chút chi tiết về tính chất của dữ liệu bằng cách làm sạch nó hơn nữa. ## Đường hồi quy tuyến tính -Như bạn đã học trong Bài 1, mục tiêu của bài tập hồi quy tuyến tính là có thể vẽ một đường để: +Như bạn đã học trong Bài học 1, mục tiêu của bài tập hồi quy tuyến tính là có thể vẽ một đường để: -- **Hiển thị quan hệ biến số**. Thể hiện mối quan hệ giữa các biến -- **Dự đoán**. Dự đoán chính xác vị trí mà một điểm dữ liệu mới rơi vào tương quan với đường đó. +- **Hiển thị mối quan hệ biến số**. Hiển thị mối quan hệ giữa các biến. +- **Dự đoán**. Dự đoán chính xác vị trí mà một điểm dữ liệu mới sẽ nằm trên đường đó. -Dòng thường được sử dụng trong **Hồi quy bình phương tối thiểu**. Thuật ngữ "Bình phương tối thiểu" đề cập đến quá trình giảm thiểu tổng sai số trong mô hình. Với mỗi điểm dữ liệu, ta đo khoảng cách thẳng đứng (gọi là phần dư) giữa điểm thực tế và đường hồi quy của chúng ta. +Thông thường, **Hồi quy bình phương tối thiểu (Least-Squares Regression)** được dùng để vẽ loại đường này. Thuật ngữ "Bình phương tối thiểu" đề cập đến quá trình tối thiểu hóa tổng sai số trong mô hình của chúng ta. Với mỗi điểm dữ liệu, ta đo khoảng cách dọc (gọi là độ dư) giữa điểm thực tế và đường hồi quy của chúng ta. -Chúng ta lấy bình phương các khoảng cách này vì hai lý do chính: +Chúng ta bình phương các khoảng cách này vì hai lý do chính: -1. **Cường độ hơn hướng:** Chúng ta muốn xem lỗi -5 tương đương với lỗi +5. Việc bình phương làm tất cả giá trị thành số dương. +1. **Độ lớn không tính hướng:** Chúng ta muốn xử lý lỗi bằng -5 tương tự như lỗi bằng +5. Bình phương sẽ biến tất cả giá trị thành số dương. -2. **Phạt các ngoại lệ:** Việc bình phương cho trọng số cao hơn với các lỗi lớn, buộc đường hồi quy phải gần hơn với các điểm dữ liệu xa. +2. **Phạt điểm ngoại lai:** Bình phương sẽ tăng trọng số cho các lỗi lớn hơn, buộc đường phải nằm gần các điểm xa hơn hơn. -Sau đó chúng ta cộng tất cả các giá trị bình phương lại với nhau. Mục tiêu là tìm ra đường cụ thể nơi tổng này nhỏ nhất có thể — do đó tên gọi "Bình phương tối thiểu". +Sau đó, ta cộng tất cả các giá trị bình phương này lại. Mục tiêu của ta là tìm ra đường cụ thể mà tổng cuối cùng này là nhỏ nhất (giá trị nhỏ nhất có thể) — do đó mới gọi là "Bình phương tối thiểu". > **🧮 Cho tôi xem toán học** > -> Đường này, gọi là _đường khớp tốt nhất_ có thể được biểu diễn bằng [một phương trình](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Đường này, gọi là _đường phù hợp nhất_ có thể được biểu diễn bằng [một phương trình](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` là 'biến giải thích'. `Y` là 'biến phụ thuộc'. Độ dốc của đường là `b` và `a` là điểm giao y, tức là giá trị của `Y` khi `X = 0`. +> `X` là 'biến giải thích'. `Y` là 'biến phụ thuộc'. Độ dốc của đường là `b` và `a` là điểm cắt y, nghĩa là giá trị của `Y` khi `X = 0`. > ->![calculate the slope](../../../../translated_images/vi/slope.f3c9d5910ddbfcf9.webp) +>![tính độ dốc](../../../../translated_images/vi/slope.f3c9d5910ddbfcf9.webp) > -> Trước tiên, tính độ dốc `b`. Infographic bởi [Jen Looper](https://twitter.com/jenlooper) +> Đầu tiên, tính độ dốc `b`. Biểu đồ thông tin bởi [Jen Looper](https://twitter.com/jenlooper) > -> Nói cách khác, và liên quan đến câu hỏi ban đầu về dữ liệu bí ngô của chúng ta: "dự đoán giá bí ngô theo bushel theo tháng", `X` sẽ là giá và `Y` sẽ là tháng bán. +> Nói cách khác, và tham khảo câu hỏi gốc về dữ liệu bí ngô của chúng ta: "dự đoán giá bí ngô trên mỗi bushel theo tháng", `X` sẽ tương ứng với giá và `Y` sẽ tương ứng với tháng bán. > ->![complete the equation](../../../../translated_images/vi/calculation.a209813050a1ddb1.webp) +>![hoàn thành phương trình](../../../../translated_images/vi/calculation.a209813050a1ddb1.webp) > -> Tính giá trị Y. Nếu bạn trả khoảng $4, chắc hẳn là tháng Tư! Infographic bởi [Jen Looper](https://twitter.com/jenlooper) +> Tính giá trị Y. Nếu bạn trả khoảng 4 đô la, chắc chắn là tháng Tư! Biểu đồ thông tin bởi [Jen Looper](https://twitter.com/jenlooper) > -> Toán học tính toán đường phải biểu thị độ dốc của đường, cũng phụ thuộc vào giao điểm, tức vị trí `Y` khi `X = 0`. +> Phép toán tính đường phải biểu diễn được độ dốc của đường, cũng phụ thuộc vào điểm cắt, hoặc vị trí của `Y` khi `X = 0`. > -> Bạn có thể quan sát phương pháp tính cho những giá trị này trên trang web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Cũng hãy ghé xem [máy tính bình phương tối thiểu này](https://www.mathsisfun.com/data/least-squares-calculator.html) để xem cách giá trị số ảnh hưởng đến đường. +> Bạn có thể xem phương pháp tính các giá trị này trên trang web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Cũng truy cập [Máy tính bình phương tối thiểu này](https://www.mathsisfun.com/data/least-squares-calculator.html) để xem giá trị các số ảnh hưởng như thế nào đến đường. ## Tương quan -Một thuật ngữ nữa cần hiểu là **Hệ số Tương quan** giữa các biến X và Y cho trước. Bằng việc sử dụng biểu đồ phân tán, bạn có thể nhanh chóng trực quan hệ số này. Một biểu đồ với các điểm dữ liệu xếp thành một đường thẳng rõ ràng có tương quan cao, còn biểu đồ với điểm dữ liệu rải rác khắp nơi giữa X và Y có tương quan thấp. +Một thuật ngữ nữa cần hiểu là **Hệ số tương quan** giữa các biến X và Y cho trước. Sử dụng biểu đồ phân tán, bạn có thể nhanh chóng trực quan hóa hệ số này. Một biểu đồ với các điểm dữ liệu nằm rải rác theo một đường gọn gàng sẽ có tương quan cao, nhưng biểu đồ với các điểm dữ liệu phân tán khắp nơi giữa X và Y thì có tương quan thấp. -Một mô hình hồi quy tuyến tính tốt sẽ có hệ số tương quan cao (gần 1 hơn 0) sử dụng phương pháp Hồi quy bình phương tối thiểu với đường hồi quy. +Một mô hình hồi quy tuyến tính tốt sẽ có Hệ số tương quan cao (gần 1 hơn là 0) sử dụng phương pháp Hồi quy bình phương tối thiểu với một đường hồi quy. -✅ Chạy notebook đi kèm bài học và xem biểu đồ phân tán Tháng với Giá. Theo quan sát của bạn, dữ liệu liên hệ giữa Tháng và Giá trong bán bí ngô có vẻ tương quan cao hay thấp? Liệu điều này có thay đổi nếu bạn sử dụng đo lường chi tiết hơn thay vì `Month`, ví dụ *ngày trong năm* (tức số ngày kể từ đầu năm)? +✅ Chạy notebook kèm theo bài học này và nhìn biểu đồ phân tán Tháng so với Giá. Dữ liệu liên kết Tháng với Giá cho doanh số bí ngô có vẻ có tương quan cao hay thấp, theo cách bạn nhìn hình? Liệu điều đó có thay đổi nếu bạn sử dụng thước đo chi tiết hơn thay vì `Month`, ví dụ *ngày trong năm* (số ngày kể từ đầu năm)? -Trong đoạn mã dưới đây, ta giả sử đã làm sạch dữ liệu và thu được một dataframe có tên `new_pumpkins`, tương tự như sau: +Trong đoạn mã dưới đây, chúng ta giả sử đã làm sạch dữ liệu, và có một khung dữ liệu gọi là `new_pumpkins`, tương tự như sau: -ID | Tháng | NgàyTrongNăm | ChủngLoại | ThànhPhố | Gói | Giá Thấp | Giá Cao | Giá Trung Bình ----|-------|--------------|-----------|----------|--------|---------|---------|-------------- -70 | 9 | 267 | LOẠI BÁNH | BALTIMORE | hộp 1 1/9 bushel | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | LOẠI BÁNH | BALTIMORE | hộp 1 1/9 bushel | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | LOẠI BÁNH | BALTIMORE | hộp 1 1/9 bushel | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | LOẠI BÁNH | BALTIMORE | hộp 1 1/9 bushel | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | LOẠI BÁNH | BALTIMORE | hộp 1 1/9 bushel | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Mã lệnh làm sạch dữ liệu có trong [`notebook.ipynb`](notebook.ipynb). Chúng ta đã tiến hành các bước làm sạch giống như bài học trước, và đã tính toán cột `DayOfYear` theo biểu thức sau: +> Mã làm sạch dữ liệu có sẵn trong [`notebook.ipynb`](notebook.ipynb). Chúng tôi đã thực hiện các bước làm sạch giống như bài học trước, và đã tính cột `DayOfYear` bằng biểu thức sau: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Bây giờ bạn đã hiểu toán học nền tảng của hồi quy tuyến tính, hãy tạo mô hình Hồi quy để xem liệu chúng ta có thể dự đoán gói bí ngô nào sẽ có giá tốt nhất không. Người mua bí ngô cho khu vực trang trí lễ hội có thể muốn thông tin này để tối ưu hóa việc mua hàng. +Bây giờ bạn đã hiểu toán học đằng sau hồi quy tuyến tính, hãy tạo một mô hình Hồi quy để xem liệu chúng ta có thể dự đoán gói bí ngô nào sẽ có giá tốt nhất hay không. Người mua bí ngô để trang trí cho dịp lễ có thể muốn biết điều này để tối ưu hóa việc mua các gói bí ngô cho khu vực trang trí. -## Tìm kiếm tương quan +## Tìm kiếm Tương quan -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![ML cho người mới bắt đầu - Tìm Tương quan: Chìa khóa của Hồi quy tuyến tính](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML cho người mới bắt đầu - Tìm Tương quan: Chìa khóa của Hồi quy tuyến tính") -> 🎥 Nhấn vào hình trên để xem video tóm tắt ngắn về tương quan. +> 🎥 Click vào hình bên trên để xem video tóm tắt ngắn về tương quan. -Từ bài học trước, bạn có thể đã thấy rằng giá trung bình cho các tháng khác nhau trông như sau: +Từ bài học trước, bạn có thể đã thấy rằng giá trung bình theo các tháng trông như sau: -Average price by month +Giá trung bình theo tháng -Điều này gợi ý rằng có thể có tương quan, và chúng ta có thể thử huấn luyện mô hình hồi quy tuyến tính để dự đoán mối quan hệ giữa `Month` và `Price`, hoặc giữa `DayOfYear` và `Price`. Dưới đây là biểu đồ phân tán thể hiện mối quan hệ sau: +Điều này gợi ý rằng nên có một mức tương quan nào đó, và chúng ta có thể thử huấn luyện mô hình hồi quy tuyến tính để dự đoán mối quan hệ giữa `Month` và `Price`, hoặc giữa `DayOfYear` và `Price`. Đây là biểu đồ phân tán cho thấy mối quan hệ sau: -Scatter plot of Price vs. Day of Year +Biểu đồ phân tán Giá theo Ngày trong năm -Hãy xem tương quan qua hàm `corr`: +Hãy xem liệu có tương quan hay không bằng hàm `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Có vẻ hệ số tương quan khá nhỏ, -0.15 theo `Month` và -0.17 theo `DayOfYear`, nhưng rất có thể còn mối quan hệ quan trọng khác. Có vẻ như có các cụm điểm giá ứng với các chủng loại bí ngô khác nhau. Để xác nhận giả thuyết này, hãy vẽ mỗi loại bí ngô bằng màu khác nhau. Bằng cách truyền tham số `ax` vào hàm vẽ `scatter` ta có thể vẽ tất cả điểm trong cùng một biểu đồ: +Có vẻ như hệ số tương quan khá nhỏ, -0.15 đối với `Month` và -0.17 đối với `DayOfYear`, nhưng có thể tồn tại một mối quan hệ quan trọng khác. Có vẻ có các nhóm giá khác nhau tương ứng với các loại bí ngô khác nhau. Để xác nhận giả thuyết này, hãy vẽ mỗi loại bí ngô dùng màu khác nhau. Bằng cách truyền tham số `ax` vào hàm vẽ `scatter`, ta có thể vẽ tất cả các điểm trên cùng một biểu đồ: ```python ax=None @@ -140,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +Biểu đồ phân tán Giá theo Ngày trong năm, tô màu theo loại -Cuộc điều tra cho thấy chủng loại ảnh hưởng nhiều hơn đến giá chung so với ngày bán thực tế. Ta có thể thấy điều này qua biểu đồ cột: +Điều tra của chúng ta cho thấy loại bí ngô có ảnh hưởng nhiều hơn đến giá tổng thể so với ngày bán thực tế. Chúng ta có thể thấy điều này qua biểu đồ thanh: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +Biểu đồ thanh giá theo loại -Tạm thời chúng ta hãy tập trung chỉ vào một chủng loại bí ngô, 'loại bánh', và xem ngày bán ảnh hưởng thế nào đến giá: +Hãy tạm thời tập trung chỉ vào một loại bí ngô duy nhất, loại 'pie type', và xem ngày bán ảnh hưởng như thế nào đến giá: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Biểu đồ phân tán Giá so với Ngày trong năm -Nếu ta tính toán tương quan giữa `Price` và `DayOfYear` bằng hàm `corr`, ta sẽ thu được khoảng `-0.27` - nghĩa là việc huấn luyện mô hình dự đoán là có lý. +Nếu bây giờ chúng ta tính hệ số tương quan giữa `Price` và `DayOfYear` bằng hàm `corr`, ta sẽ được khoảng `-0.27` - nghĩa là việc huấn luyện mô hình dự đoán là hợp lý. -> Trước khi đào tạo mô hình hồi quy tuyến tính, quan trọng là phải đảm bảo dữ liệu sạch. Hồi quy tuyến tính không làm việc tốt với các giá trị thiếu, vì vậy nên loại bỏ tất cả ô trống: +> Trước khi huấn luyện mô hình hồi quy tuyến tính, quan trọng là phải đảm bảo dữ liệu của ta sạch. Hồi quy tuyến tính không hoạt động tốt với các giá trị thiếu, do đó hợp lý khi loại bỏ tất cả các ô trống: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Một cách tiếp cận khác là điền các giá trị thiếu bằng giá trị trung bình của cột tương ứng. +Một phương pháp khác là điền các giá trị trống đó bằng giá trị trung bình của cột tương ứng. ## Hồi quy tuyến tính đơn giản -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ML cho người mới bắt đầu - Hồi quy tuyến tính và đa thức sử dụng Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML cho người mới bắt đầu - Hồi quy tuyến tính và đa thức sử dụng Scikit-learn") -> 🎥 Nhấn vào hình trên để xem video tóm tắt ngắn về hồi quy tuyến tính và đa thức. +> 🎥 Click vào hình bên trên để xem video tóm tắt ngắn về hồi quy tuyến tính và đa thức. -Để huấn luyện mô hình Hồi quy tuyến tính, chúng ta sẽ dùng thư viện **Scikit-learn**. +Để huấn luyện mô hình Hồi quy tuyến tính, ta sẽ sử dụng thư viện **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Đầu tiên ta tách các giá trị đầu vào (đặc trưng) và kết quả mong đợi (nhãn) ra thành các mảng numpy riêng biệt: +Chúng ta bắt đầu bằng cách tách giá trị đầu vào (đặc trưng) và đầu ra mong muốn (nhãn) thành các mảng numpy riêng biệt: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Lưu ý chúng ta phải thực hiện `reshape` trên dữ liệu đầu vào để gói Linear Regression hiểu đúng cách. Hồi quy tuyến tính yêu cầu đầu vào là mảng 2 chiều, trong đó mỗi dòng là một vector đặc trưng. Trong trường hợp của ta, vì chỉ có một đầu vào nên cần mảng có kích thước N×1, với N là kích thước bộ dữ liệu. +> Lưu ý rằng ta phải thực hiện `reshape` đối với dữ liệu đầu vào để gói Linear Regression có thể hiểu đúng. Hồi quy tuyến tính mong đợi một mảng 2 chiều làm đầu vào, trong đó mỗi hàng tương ứng với một vector đặc trưng đầu vào. Trong trường hợp của ta, vì chỉ có một đầu vào duy nhất - ta cần một mảng với kích thước N×1, trong đó N là kích thước của bộ dữ liệu. -Sau đó, ta phải chia dữ liệu thành tập huấn luyện và tập kiểm tra để có thể kiểm tra mô hình sau khi huấn luyện: +Sau đó, ta cần chia dữ liệu thành tập huấn luyện và tập kiểm tra để có thể kiểm tra mô hình sau khi huấn luyện: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Cuối cùng, việc huấn luyện mô hình Linear Regression thực tế chỉ mất hai dòng code. Ta định nghĩa đối tượng `LinearRegression`, và gọi phương thức `fit` để phù hợp với dữ liệu: +Cuối cùng, việc huấn luyện mô hình Hồi quy tuyến tính thực sự chỉ mất hai dòng mã. Ta định nghĩa đối tượng `LinearRegression`, và dùng phương thức `fit` để phù hợp với dữ liệu: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Đối tượng `LinearRegression` sau khi được `fit` chứa tất cả các hệ số của hồi quy, có thể truy cập thông qua thuộc tính `.coef_`. Trong trường hợp của chúng ta, chỉ có một hệ số duy nhất, khoảng `-0.017`. Điều này có nghĩa là giá cả có xu hướng giảm nhẹ theo thời gian, nhưng không nhiều, khoảng 2 cent mỗi ngày. Chúng ta cũng có thể truy cập điểm giao của hồi quy với trục Y bằng `lin_reg.intercept_` - nó sẽ khoảng `21` trong trường hợp của chúng ta, biểu thị giá vào đầu năm. +Đối tượng `LinearRegression` sau khi `fit` chứa tất cả các hệ số của hồi quy, có thể truy cập bằng thuộc tính `.coef_`. Trong trường hợp của chúng ta, chỉ có một hệ số, khoảng `-0.017`. Điều này có nghĩa là giá dường như giảm nhẹ theo thời gian, nhưng không nhiều, khoảng 2 cent mỗi ngày. Chúng ta cũng có thể truy cập điểm giao nhau của hồi quy với trục Y bằng `lin_reg.intercept_` - sẽ khoảng `21` trong trường hợp của chúng ta, cho thấy giá vào đầu năm. -Để xem mô hình của chúng ta chính xác đến mức nào, chúng ta có thể dự đoán giá trên bộ dữ liệu test, và sau đó đo xem các dự đoán có gần với giá trị mong đợi hay không. Điều này có thể được thực hiện bằng cách sử dụng chỉ số lỗi trung bình bình phương căn (RMSE), là căn bậc hai của trung bình tất cả các sai số bình phương giữa giá trị mong đợi và giá trị dự đoán. +Để xem mô hình của chúng ta chính xác đến mức nào, chúng ta có thể dự đoán giá trên bộ dữ liệu kiểm tra, sau đó đo mức độ gần giữa dự đoán và giá trị mong đợi. Việc này có thể được thực hiện bằng cách sử dụng chỉ số lỗi bình phương trung bình căn bậc hai (RMSE), là căn bậc hai của trung bình tất cả các hiệu số bình phương giữa giá trị mong đợi và dự đoán. ```python pred = lin_reg.predict(X_test) @@ -216,16 +216,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Lỗi của chúng ta có vẻ khoảng 2 điểm, tức là ~17%. Không được tốt lắm. Một chỉ số khác để đánh giá chất lượng mô hình là **hệ số xác định**, có thể lấy như sau: +Lỗi của chúng ta dường như khoảng 2 điểm, tương đương ~17%. Không quá tốt. Một chỉ số khác về chất lượng mô hình là **hệ số xác định (coefficient of determination)**, có thể lấy được như sau: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Nếu giá trị là 0, nghĩa là mô hình không xem xét dữ liệu đầu vào, và hoạt động như *bộ dự đoán tuyến tính tệ nhất*, chính là giá trị trung bình của kết quả. Giá trị 1 nghĩa là chúng ta có thể dự đoán chính xác tất cả các đầu ra mong đợi. Trong trường hợp của chúng ta, hệ số khoảng 0.06, khá thấp. +Nếu giá trị là 0, có nghĩa mô hình không tính đến dữ liệu đầu vào, và hoạt động như *bộ dự đoán tuyến tính tệ nhất*, đơn giản là giá trị trung bình của kết quả. Giá trị 1 nghĩa là chúng ta có thể dự đoán hoàn hảo tất cả các đầu ra mong muốn. Trong trường hợp của chúng ta, hệ số khoảng 0.06, khá thấp. -Chúng ta cũng có thể vẽ dữ liệu test cùng với đường hồi quy để thấy rõ hơn hồi quy hoạt động như thế nào trong trường hợp của chúng ta: +Chúng ta cũng có thể vẽ dữ liệu kiểm tra cùng với đường hồi quy để thấy rõ hơn cách hồi quy hoạt động trong trường hợp này: ```python plt.scatter(X_test,y_test) @@ -234,19 +234,19 @@ plt.plot(X_test,pred) Linear regression -## Hồi quy đa thức +## Hồi Quy Đa Thức -Một loại khác của Hồi quy tuyến tính là Hồi quy đa thức. Mặc dù đôi khi có mối quan hệ tuyến tính giữa các biến - càng to thì giá càng cao - đôi khi các mối quan hệ này không thể biểu diễn bằng một mặt phẳng hoặc đường thẳng. +Một loại hồi quy tuyến tính khác là Hồi Quy Đa Thức. Trong khi đôi khi có một mối quan hệ tuyến tính giữa các biến - quả bí ngô càng to về thể tích thì giá càng cao - đôi khi những mối quan hệ này không thể biểu diễn trên một mặt phẳng hay đường thẳng. -✅ Đây là [một số ví dụ khác](https://online.stat.psu.edu/stat501/lesson/9/9.8) về dữ liệu có thể sử dụng Hồi quy đa thức +✅ Dưới đây là [một số ví dụ khác](https://online.stat.psu.edu/stat501/lesson/9/9.8) về dữ liệu có thể sử dụng Hồi Quy Đa Thức -Hãy xem lại mối quan hệ giữa Ngày và Giá. Đồ thị phân tán này có thật sự nên được phân tích bằng đường thẳng không? Không thể có sự dao động về giá sao? Trong trường hợp này, bạn có thể thử hồi quy đa thức. +Hãy xem lại mối quan hệ giữa Ngày và Giá. Biểu đồ điểm này có nhất thiết phải được phân tích bằng một đường thẳng không? Giá có thể dao động mà? Trong trường hợp này, bạn có thể thử hồi quy đa thức. -✅ Đa thức là các biểu thức toán học có thể gồm một hoặc nhiều biến và hệ số +✅ Đa thức là các biểu thức toán học có thể bao gồm một hay nhiều biến và hệ số -Hồi quy đa thức tạo đường cong để phù hợp hơn với dữ liệu phi tuyến. Trong trường hợp của chúng ta, nếu thêm biến `DayOfYear` bình phương vào dữ liệu đầu vào, chúng ta có thể khớp dữ liệu với đường cong parabol, có điểm cực tiểu ở một thời điểm trong năm. +Hồi quy đa thức tạo ra một đường cong để phù hợp với dữ liệu phi tuyến tốt hơn. Trong trường hợp của chúng ta, nếu thêm biến `DayOfYear` bình phương vào dữ liệu đầu vào, ta có thể khớp dữ liệu bằng một đường cong parabol, có điểm cực tiểu tại một thời điểm nhất định trong năm. -Scikit-learn có API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) hữu ích để kết hợp các bước xử lý dữ liệu lại với nhau. Một **pipeline** là chuỗi các **estimator**. Trong trường hợp này, chúng ta sẽ tạo pipeline đầu tiên thêm các đặc trưng đa thức vào mô hình, rồi sau đó huấn luyện hồi quy: +Scikit-learn có một API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) hữu ích để kết hợp các bước xử lý dữ liệu. Một **pipeline** là chuỗi các **estimator**. Trong trường hợp của chúng ta, sẽ tạo pipeline trước để thêm các đặc trưng đa thức vào mô hình, sau đó huấn luyện hồi quy: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Sử dụng `PolynomialFeatures(2)` nghĩa là chúng ta sẽ bao gồm tất cả đa thức bậc hai từ dữ liệu đầu vào. Trong trường hợp này chỉ là `DayOfYear`2, nhưng với hai biến đầu vào X và Y, sẽ thêm X2, XY và Y2. Chúng ta cũng có thể dùng đa thức bậc cao hơn nếu muốn. +Sử dụng `PolynomialFeatures(2)` có nghĩa là chúng ta sẽ bao gồm tất cả đa thức bậc hai từ dữ liệu đầu vào. Trong trường hợp của chúng ta sẽ chỉ là `DayOfYear`2, nhưng với hai biến đầu vào X và Y, điều này sẽ thêm X2, XY và Y2. Chúng ta cũng có thể dùng đa thức bậc cao hơn nếu muốn. -Pipeline có thể dùng như đối tượng `LinearRegression` ban đầu, tức là ta có thể `fit` pipeline rồi sau đó dùng `predict` để lấy kết quả dự đoán. Dưới đây là đồ thị cho thấy dữ liệu test và đường cong xấp xỉ: +Pipeline có thể dùng giống như đối tượng `LinearRegression` gốc, tức là có thể `fit` pipeline rồi dùng `predict` để lấy kết quả dự đoán: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Để vẽ đường cong gần đúng mượt mà, ta dùng `np.linspace` tạo dải giá trị đầu vào đồng đều, thay vì vẽ trực tiếp trên dữ liệu kiểm tra không theo thứ tự (sẽ tạo ra đường zíc zắc): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Đây là đồ thị hiển thị dữ liệu kiểm tra và đường cong gần đúng: Polynomial regression -Dùng Hồi quy đa thức, ta có thể có MSE hơi thấp hơn và hệ số xác định cao hơn, nhưng không đáng kể. Ta cần xem xét các đặc trưng khác! +Sử dụng Hồi Quy Đa Thức, chúng ta có thể có RMSE thấp hơn và hệ số xác định cao hơn một chút, nhưng không đáng kể. Cần xem xét các đặc trưng khác! -> Bạn có thể thấy giá tối thiểu của bí ngô xuất hiện xung quanh Halloween. Bạn giải thích điều này thế nào? +> Bạn có thấy giá bí ngô thấp nhất vào khoảng lễ Halloween không? Bạn có thể giải thích lý do không? -🎃 Chúc mừng, bạn vừa tạo mô hình có thể giúp dự đoán giá bí ngô làm bánh. Có thể bạn sẽ lặp lại quy trình cho các loại bí khác, nhưng sẽ rất tốn thời gian. Giờ hãy học cách đưa loại bí vào mô hình nhé! +🎃 Chúc mừng bạn đã tạo mô hình giúp dự đoán giá bí ngô nướng. Có thể bạn sẽ lặp lại thao tác này cho các loại bí ngô khác, nhưng sẽ rất mất công sức. Giờ hãy cùng học cách đưa loại bí ngô vào mô hình! -## Đặc trưng phân loại +## Các Đặc Trưng Phân Loại -Trong thế giới lý tưởng, ta muốn dự đoán giá cho các loại bí khác nhau bằng cùng một mô hình. Tuy nhiên, cột `Variety` khá khác so với các cột như `Month` vì nó chứa giá trị không phải số. Các cột như vậy gọi là **phân loại**. +Trong thế giới lý tưởng, ta muốn dự đoán giá của các loại bí ngô khác nhau bằng cùng một mô hình. Nhưng cột `Variety` khác với các cột như `Month` vì chứa các giá trị không phải số. Các cột như vậy gọi là **phân loại (categorical)**. -[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![ML cho người mới - Dự đoán đặc trưng phân loại với Hồi Quy Tuyến Tính](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML cho người mới - Dự đoán đặc trưng phân loại với Hồi Quy Tuyến Tính") -> 🎥 Nhấn vào hình trên để xem video ngắn về cách dùng các đặc trưng phân loại. +> 🎥 Nhấn vào hình trên để xem video ngắn về cách dùng đặc trưng phân loại. -Bạn có thể thấy giá trung bình phụ thuộc vào loại bí như thế nào: +Dưới đây là đồ thị cho thấy giá trung bình theo từng loại: Average price by variety -Để đưa loại bí vào mô hình, trước tiên cần chuyển thành dạng số, hay **mã hóa**. Có một số cách để làm điều này: +Để đưa loại vào mô hình, trước hết phải chuyển nó về dạng số, hay còn gọi là **mã hóa (encode)**. Có vài cách để làm: -* **Mã hóa số đơn giản** tạo bảng các loại khác nhau, rồi thay tên loại bằng chỉ số trong bảng đó. Đây không phải ý hay cho hồi quy tuyến tính, vì hồi quy tuyến tính dùng trực tiếp giá trị số của chỉ số và nhân với hệ số. Trong trường hợp này, mối quan hệ giữa số chỉ số và giá không phải là tuyến tính, dù ta cố sắp xếp các chỉ số theo thứ tự nào đó. -* **Mã hóa one-hot** sẽ thay cột `Variety` bằng 4 cột khác, mỗi cột cho một loại. Mỗi cột có giá trị `1` nếu hàng tương ứng thuộc loại đó, `0` nếu không. Điều này dẫn đến 4 hệ số trong hồi quy, mỗi hệ số dành cho một loại bí, thể hiện "giá khởi đầu" (hoặc "giá thêm") cho loại đó. +* Mã hóa số đơn giản sẽ tạo một bảng các loại, sau đó thay tên loại bằng chỉ số trong bảng đó. Điều này không tốt cho hồi quy tuyến tính, vì hồi quy lấy giá trị số thực của chỉ số và nhân với hệ số để cộng vào kết quả. Trong trường hợp ta, mối quan hệ giữa số chỉ số và giá rõ ràng không phải tuyến tính, dù có sắp xếp chỉ số theo cách nào. +* **One-hot encoding** sẽ thay cột `Variety` bằng 4 cột khác nhau, mỗi cột cho một loại. Mỗi cột sẽ chứa `1` nếu hàng đó thuộc loại tương ứng, và `0` nếu không. Điều này có nghĩa hồi quy tuyến tính có 4 hệ số, mỗi hệ số ứng với một loại bí ngô, chịu trách nhiệm cho "giá khởi đầu" (hay chính xác là "giá cộng thêm") cho loại đó. -Đoạn mã dưới đây cho thấy cách mã hóa one-hot cho loại bí: +Đoạn mã dưới đây cho thấy cách chúng ta có thể mã hóa one-hot một loại: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Để huấn luyện hồi quy tuyến tính dùng kiểu mã hóa one-hot, ta chỉ cần khởi tạo dữ liệu `X` và `y` đúng cách: +Để huấn luyện hồi quy tuyến tính với dữ liệu một-hot mã hóa làm đầu vào, ta chỉ cần khởi tạo dữ liệu `X` và `y` đúng cách: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Phần còn lại của mã giống như trên dùng để huấn luyện hồi quy tuyến tính. Nếu bạn thử, sẽ thấy MSE gần như bằng nhau, nhưng hệ số xác định tăng lên khá nhiều (~77%). Để dự đoán chính xác hơn, ta có thể dùng nhiều đặc trưng phân loại hơn, cũng như các đặc trưng số, ví dụ như `Month` hoặc `DayOfYear`. Để có mảng đặc trưng lớn, dùng `join`: +Phần còn lại của mã giống như khi đã dùng hồi quy tuyến tính ở trên. Nếu bạn thử, sẽ thấy lỗi bình phương trung bình tương đương, nhưng hệ số xác định cao hơn nhiều (~77%). Để dự đoán chính xác hơn nữa, ta có thể đưa nhiều đặc trưng phân loại vào cùng với các đặc trưng số, như `Month` hay `DayOfYear`. Để có một mảng đặc trưng lớn, ta dùng `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,21 +342,21 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Ở đây ta cũng thêm vào `City` và loại `Package`, cho kết quả MSE 2.84 (10%), và hệ số xác định 0.94! +Ở đây ta cũng đưa vào `City` và loại `Package`, dẫn đến RMSE = 2.84 (10.5%) và hệ số xác định 0.94! -## Tổng hợp lại +## Tổng Hợp Tất Cả -Để có mô hình tốt nhất, ta có thể dùng dữ liệu kết hợp (phân loại mã hóa one-hot + số) từ ví dụ trên cùng hồi quy đa thức. Dưới đây là mã đầy đủ cho bạn tiện sử dụng: +Để tạo mô hình tốt nhất, ta kết hợp dữ liệu (đặc trưng phân loại one-hot + số) ở ví dụ trên cùng với Hồi Quy Đa Thức. Đây là mã đầy đủ để bạn tiện theo dõi: ```python -# thiết lập dữ liệu đào tạo +# thiết lập dữ liệu huấn luyện X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# chia dữ liệu thành tập huấn luyện và kiểm tra +# chia tách dữ liệu thành tập huấn luyện và kiểm tra X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # thiết lập và huấn luyện pipeline @@ -344,44 +366,44 @@ pipeline.fit(X_train,y_train) # dự đoán kết quả cho dữ liệu kiểm tra pred = pipeline.predict(X_test) -# tính MSE và hệ số xác định -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# tính RMSE và hệ số xác định +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Mô hình này cho hệ số xác định cao nhất gần 97% và MSE=2.23 (~8% lỗi dự đoán). +Điều này sẽ cho hệ số xác định tốt nhất gần 97% và RMSE=2.23 (~8% sai số dự đoán). -| Mô hình | MSE | Hệ số xác định | +| Mô hình | RMSE | Hệ số xác định | |-------|-----|---------------| -| `DayOfYear` Tuyến tính | 2.77 (17.2%) | 0.07 | -| `DayOfYear` Đa thức | 2.73 (17.0%) | 0.08 | -| `Variety` Tuyến tính | 5.24 (19.7%) | 0.77 | -| Tất cả đặc trưng Tuyến tính | 2.84 (10.5%) | 0.94 | -| Tất cả đặc trưng Đa thức | 2.23 (8.25%) | 0.97 | +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| Tất cả đặc trưng Linear | 2.84 (10.5%) | 0.94 | +| Tất cả đặc trưng Polynomial | 2.23 (8.25%) | 0.97 | -🏆 Làm tốt lắm! Bạn đã tạo bốn mô hình hồi quy trong một bài học, và cải thiện chất lượng mô hình lên 97%. Trong phần cuối về Hồi quy, bạn sẽ học về Hồi quy Logistic để phân loại. +🏆 Tuyệt vời! Bạn đã tạo 4 mô hình hồi quy trong một bài học, và cải thiện độ chính xác lên 97%. Ở phần cuối về Hồi Quy, bạn sẽ học về Hồi Quy Logistic để phân loại. --- -## 🚀Thử thách +## 🚀Thử Thách -Thử nghiệm với vài biến khác nhau trong notebook này để xem yếu tố tương quan tương ứng với độ chính xác mô hình như thế nào. +Thử nghiệm các biến khác nhau trong notebook này để xem mối tương quan ảnh hưởng thế nào đến độ chính xác mô hình. ## [Bài kiểm tra sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) -## Ôn tập & Tự học +## Ôn Tập & Tự Học -Trong bài học này chúng ta tìm hiểu về Hồi quy tuyến tính. Còn nhiều loại hồi quy quan trọng khác. Hãy đọc về các kỹ thuật Stepwise, Ridge, Lasso và Elasticnet. Một khóa học hay để học thêm là [khóa học Học thống kê Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Trong bài học này, chúng ta đã học về Hồi Quy Tuyến Tính. Còn nhiều loại hồi quy quan trọng khác. Bạn có thể đọc về các kỹ thuật Stepwise, Ridge, Lasso và Elasticnet. Một khóa học tốt để học thêm là [Khóa học Học Thống Kê Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Bài tập +## Bài Tập -[Xây dựng mô hình](assignment.md) +[Xây dựng một mô hình](assignment.md) --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm đối với bất kỳ sự hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này. +**Tuyên bố từ chối trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ mẹ đẻ của nó nên được coi là nguồn tham khảo chính xác nhất. Đối với các thông tin quan trọng, nên sử dụng bản dịch chuyên nghiệp do con người thực hiện. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Regression/3-Linear/solution/notebook.ipynb b/translations/vi/2-Regression/3-Linear/solution/notebook.ipynb index 39b8d056df..5acad22a8b 100644 --- a/translations/vi/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/vi/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Hồi quy tuyến tính và hồi quy đa thức để định giá bí ngô - Bài học 3\n", + "## Hồi quy tuyến tính và đa thức cho giá bí ngô - Bài học 3\n", "\n", - "Tải các thư viện cần thiết và tập dữ liệu. Chuyển đổi dữ liệu thành một dataframe chứa một phần dữ liệu:\n", + "Tải các thư viện và bộ dữ liệu cần thiết. Chuyển đổi dữ liệu thành một dataframe chứa một phần dữ liệu:\n", "\n", - "- Chỉ lấy bí ngô được định giá theo đơn vị bushel\n", + "- Chỉ lấy bí ngô được định giá theo bushel\n", "- Chuyển đổi ngày thành tháng\n", - "- Tính giá trung bình dựa trên giá cao và giá thấp\n", - "- Chuyển đổi giá để phản ánh mức giá theo số lượng bushel\n" + "- Tính giá bằng trung bình giá cao và thấp\n", + "- Chuyển đổi giá để phản ánh giá theo số lượng bushel\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Biểu đồ phân tán nhắc nhở chúng ta rằng chúng ta chỉ có dữ liệu tháng từ tháng Tám đến tháng Mười Hai. Chúng ta có lẽ cần thêm dữ liệu để có thể đưa ra kết luận theo cách tuyến tính.\n" + "Một biểu đồ phân tán nhắc nhở chúng ta rằng chúng ta chỉ có dữ liệu tháng từ tháng Tám đến tháng Mười Hai. Có lẽ chúng ta cần thêm dữ liệu để có thể rút ra kết luận theo cách tuyến tính.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Hãy xem liệu có mối tương quan không:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Có vẻ như mối tương quan khá nhỏ, nhưng có một mối quan hệ quan trọng hơn - vì các điểm giá trong biểu đồ trên dường như có một số cụm riêng biệt. Hãy tạo một biểu đồ để hiển thị các loại bí ngô khác nhau:\n" + "Có vẻ như sự tương quan khá nhỏ, nhưng có một mối quan hệ quan trọng khác - bởi vì các điểm giá trong biểu đồ trên dường như có một số cụm riêng biệt. Hãy tạo một biểu đồ sẽ hiển thị các giống bí đỏ khác nhau:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Trong thời gian này, hãy tập trung chỉ vào một loại duy nhất - **loại bánh pie**.\n" + ] }, { "cell_type": "code", @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Chúng ta có thể sử dụng mô hình đã được huấn luyện để dự đoán giá:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Hồi quy đa thức\n", "\n", - "Đôi khi mối quan hệ giữa các đặc điểm và kết quả vốn dĩ không tuyến tính. Ví dụ, giá bí ngô có thể cao vào mùa đông (tháng 1, 2), sau đó giảm vào mùa hè (tháng 5-7), rồi lại tăng lên. Hồi quy tuyến tính không thể tìm ra mối quan hệ này một cách chính xác.\n", + "Đôi khi mối quan hệ giữa các đặc trưng và kết quả vốn dĩ không phải tuyến tính. Ví dụ, giá bí ngô có thể cao vào mùa đông (tháng=1,2), sau đó giảm vào mùa hè (tháng=5-7), rồi lại tăng trở lại. Hồi quy tuyến tính không thể phù hợp chính xác với mối quan hệ này.\n", "\n", - "Trong trường hợp này, chúng ta có thể cân nhắc thêm các đặc điểm bổ sung. Một cách đơn giản là sử dụng các đa thức từ các đặc điểm đầu vào, điều này sẽ dẫn đến **hồi quy đa thức**. Trong Scikit Learn, chúng ta có thể tự động tính trước các đặc điểm đa thức bằng cách sử dụng pipelines:\n" + "Trong trường hợp này, chúng ta có thể xem xét thêm các đặc trưng bổ sung. Cách đơn giản là sử dụng đa thức từ các đặc trưng đầu vào, điều này sẽ dẫn đến **hồi quy đa thức**. Trong Scikit Learn, chúng ta có thể tự động tiền tính các đặc trưng đa thức bằng cách sử dụng pipeline: \n" ] }, { @@ -775,20 +781,23 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Các phương pháp mã hóa\n", + "### Các loại mã hóa\n", "\n", - "Trong thế giới lý tưởng, chúng ta muốn có thể dự đoán giá cho các loại bí ngô khác nhau bằng cùng một mô hình. Để tính đến loại bí ngô, trước tiên chúng ta cần chuyển đổi nó sang dạng số, hay còn gọi là **mã hóa**. Có một số cách để thực hiện điều này:\n", + "Trong thế giới lý tưởng, chúng ta muốn có thể dự đoán giá cho các loại bí ngô khác nhau bằng cùng một mô hình. Để tính đến loại, trước tiên chúng ta cần chuyển nó thành dạng số, hay còn gọi là **mã hóa**. Có một số cách chúng ta có thể làm điều đó:\n", "\n", - "* Mã hóa số đơn giản sẽ tạo một bảng các loại khác nhau, sau đó thay thế tên loại bằng một chỉ số trong bảng đó. Đây không phải là ý tưởng tốt nhất cho hồi quy tuyến tính, vì hồi quy tuyến tính sẽ tính đến giá trị số của chỉ số, và giá trị số này có khả năng không tương quan một cách tuyến tính với giá cả.\n", - "* Mã hóa one-hot, sẽ thay thế cột `Variety` bằng 4 cột khác nhau, mỗi cột đại diện cho một loại, chứa giá trị 1 nếu hàng tương ứng thuộc loại đó, và 0 nếu không.\n", + "* Mã hóa số đơn giản sẽ xây dựng một bảng các loại khác nhau, sau đó thay thế tên loại bằng chỉ số trong bảng đó. Đây không phải là ý tưởng tốt nhất cho hồi quy tuyến tính, vì hồi quy tuyến tính xem giá trị số của chỉ số là yếu tố quan trọng, và giá trị số này có khả năng không tương quan về số học với giá.\n", + "* Mã hóa one-hot, sẽ thay thế cột `Variety` bằng 4 cột khác nhau, mỗi cột cho một loại, trong đó chứa 1 nếu hàng tương ứng là loại đó, và 0 nếu không phải.\n", "\n", "Đoạn mã dưới đây cho thấy cách chúng ta có thể mã hóa one-hot cho một loại:\n" ] @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Hồi quy tuyến tính trên các loại\n", + "### Hồi quy tuyến tính trên chủng loại\n", "\n", - "Bây giờ chúng ta sẽ sử dụng cùng một đoạn mã như trên, nhưng thay vì `DayOfYear`, chúng ta sẽ sử dụng loại đã được mã hóa one-hot làm đầu vào:\n" + "Chúng ta sẽ sử dụng cùng mã như trên, nhưng thay vì `DayOfYear` chúng ta sẽ sử dụng chủng loại được mã hóa một-hot làm đầu vào:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Chúng ta cũng có thể thử sử dụng các đặc điểm khác theo cách tương tự, và kết hợp chúng với các đặc điểm số, chẳng hạn như `Month` hoặc `DayOfYear`:\n" + "Chúng ta cũng có thể thử sử dụng các đặc trưng khác theo cùng cách, và kết hợp chúng với các đặc trưng số, chẳng hạn như `Month` hoặc `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Hồi quy đa thức\n", "\n", - "Hồi quy đa thức cũng có thể được sử dụng với các đặc trưng phân loại đã được mã hóa one-hot. Mã nguồn để huấn luyện hồi quy đa thức về cơ bản sẽ giống như chúng ta đã thấy ở trên.\n" + "Hồi quy đa thức cũng có thể được sử dụng với các đặc trưng dạng phân loại đã được mã hóa one-hot. Mã để huấn luyện hồi quy đa thức về cơ bản sẽ giống như chúng ta đã thấy ở trên.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Tuyên bố miễn trừ trách nhiệm**: \nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.\n" + "---\n\n\n**Tuyên bố từ chối trách nhiệm**: \nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi nỗ lực để đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ nguyên bản nên được coi là nguồn tham khảo chính xác nhất. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp do con người thực hiện. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc sai lệch nào phát sinh từ việc sử dụng bản dịch này.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:12:40+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "vi" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From ec25fb32a87865eb75efb9b7f0ab9ba83b48272a Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 20:14:19 +0000 Subject: [PATCH 15/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/ar/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 112 +++--- .../ar/2-Regression/3-Linear/README.md | 246 +++++++------ .../3-Linear/solution/notebook.ipynb | 65 ++-- translations/de/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 110 +++--- .../de/2-Regression/3-Linear/README.md | 334 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 65 ++-- translations/ru/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 102 +++--- .../ru/2-Regression/3-Linear/README.md | 310 ++++++++-------- .../3-Linear/solution/notebook.ipynb | 61 ++-- 12 files changed, 768 insertions(+), 679 deletions(-) diff --git a/translations/ar/.co-op-translator.json b/translations/ar/.co-op-translator.json index 88d34d36b9..03563bc717 100644 --- a/translations/ar/.co-op-translator.json +++ b/translations/ar/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ar" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-04T20:47:01+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:14:08+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ar" }, @@ -90,8 +90,8 @@ "language_code": "ar" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:04:49+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:13:41+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ar" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ar" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:10:25+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ar" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T20:39:43+00:00", diff --git a/translations/ar/1-Introduction/4-techniques-of-ML/README.md b/translations/ar/1-Introduction/4-techniques-of-ML/README.md index f7d86fd7d1..9e175f8044 100644 --- a/translations/ar/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ar/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# تقنيات تعلم الآلة +# تقنيات التعلم الآلي -عملية بناء واستخدام وصيانة نماذج تعلم الآلة والبيانات التي تستخدمها تختلف بشكل كبير عن العديد من سير العمل التطويرية الأخرى. في هذا الدرس، سنزيل الغموض عن هذه العملية، ونوضح التقنيات الرئيسية التي تحتاج إلى معرفتها. ستتعلم: +عملية بناء واستخدام وصيانة نماذج التعلم الآلي والبيانات التي تستخدمها هي عملية مختلفة جدًا عن العديد من سير العمل الأخرى في التطوير. في هذا الدرس، سنقوم بتبسيط العملية، وتحديد التقنيات الرئيسية التي تحتاج إلى معرفتها. سوف: -- فهم العمليات التي تقوم عليها تعلم الآلة على مستوى عالٍ. -- استكشاف المفاهيم الأساسية مثل "النماذج"، "التنبؤات"، و"بيانات التدريب". +- تفهم العمليات الأساسية التي تقوم عليها التعلم الآلي على مستوى عالٍ. +- تستكشف المفاهيم الأساسية مثل "النماذج"، و"التنبؤات"، و"بيانات التدريب". -## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/) +## [اختبار قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/) -[![تعلم الآلة للمبتدئين - تقنيات تعلم الآلة](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "تعلم الآلة للمبتدئين - تقنيات تعلم الآلة") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح هذا الدرس. +> 🎥 انقر على الصورة أعلاه لفيديو قصير يشرح هذا الدرس. ## المقدمة -على مستوى عالٍ، تتكون عملية إنشاء عمليات تعلم الآلة (ML) من عدة خطوات: +على مستوى عالٍ، يتألف فن إنشاء عمليات التعلم الآلي (ML) من عدد من الخطوات: -1. **تحديد السؤال**. تبدأ معظم عمليات تعلم الآلة بطرح سؤال لا يمكن الإجابة عليه ببرنامج شرطي بسيط أو محرك قائم على القواعد. غالبًا ما تدور هذه الأسئلة حول التنبؤات بناءً على مجموعة من البيانات. -2. **جمع وتحضير البيانات**. للإجابة على سؤالك، تحتاج إلى بيانات. جودة البيانات وأحيانًا كميتها ستحدد مدى قدرتك على الإجابة على سؤالك الأولي. يعد تصور البيانات جانبًا مهمًا في هذه المرحلة. تتضمن هذه المرحلة أيضًا تقسيم البيانات إلى مجموعة تدريب واختبار لبناء نموذج. -3. **اختيار طريقة التدريب**. بناءً على سؤالك وطبيعة بياناتك، تحتاج إلى اختيار الطريقة التي تريد بها تدريب نموذج يعكس بياناتك بدقة ويقدم تنبؤات دقيقة. هذه هي المرحلة التي تتطلب خبرة محددة وغالبًا قدرًا كبيرًا من التجريب. -4. **تدريب النموذج**. باستخدام بيانات التدريب الخاصة بك، ستستخدم خوارزميات مختلفة لتدريب نموذج للتعرف على الأنماط في البيانات. قد يعتمد النموذج على أوزان داخلية يمكن تعديلها لتفضيل أجزاء معينة من البيانات على الأخرى لبناء نموذج أفضل. -5. **تقييم النموذج**. تستخدم بيانات لم يسبق للنموذج رؤيتها (بيانات الاختبار) من المجموعة التي جمعتها لمعرفة أداء النموذج. -6. **ضبط المعلمات**. بناءً على أداء النموذج، يمكنك إعادة العملية باستخدام معلمات أو متغيرات مختلفة تتحكم في سلوك الخوارزميات المستخدمة لتدريب النموذج. -7. **التنبؤ**. استخدم مدخلات جديدة لاختبار دقة النموذج. +1. **حدد السؤال**. تبدأ معظم عمليات التعلم الآلي بطرح سؤال لا يمكن الإجابة عليه باستخدام برنامج شرطي بسيط أو محرك قواعد معتمد على الشروط. غالبًا ما تدور هذه الأسئلة حول التنبؤات بناءً على مجموعة من البيانات. +2. **جمع وتحضير البيانات**. لكي تكون قادرًا على الإجابة على سؤالك، تحتاج إلى بيانات. جودة وأحيانًا كمية بياناتك ستحدد مدى قدرتك على الإجابة عن سؤالك الأولي. تصور البيانات هو جانب مهم من هذه المرحلة. تشمل هذه المرحلة أيضًا تقسيم البيانات إلى مجموعة تدريب ومجموعة اختبار لبناء نموذج. +3. **اختر طريقة التدريب**. اعتمادًا على سؤالك وطبيعة بياناتك، تحتاج إلى اختيار كيفية تدريب النموذج لتعكس بياناتك بشكل أفضل وتجعل التنبؤات دقيقة. هذا هو الجزء من عملية التعلم الآلي الذي يتطلب خبرة محددة، وغالبًا كمية كبيرة من التجارب. +4. **تدريب النموذج**. باستخدام بيانات التدريب الخاصة بك، ستستخدم خوارزميات مختلفة لتدريب نموذج للتعرف على الأنماط في البيانات. قد يستخدم النموذج أوزانًا داخلية يمكن تعديلها لإعطاء أولوية لأجزاء معينة من البيانات على أخرى لبناء نموذج أفضل. +5. **تقييم النموذج**. تستخدم بيانات لم تُرى من قبل (بيانات الاختبار) من المجموعة التي جمعتها لتقييم أداء النموذج. +6. **ضبط المعاملات**. بناءً على أداء النموذج، يمكنك إعادة العملية باستخدام معاملات مختلفة، أو متغيرات، تتحكم في سلوك الخوارزميات المستخدمة لتدريب النموذج. +7. **التنبؤ**. استخدم مدخلات جديدة لاختبار دقة النموذج الخاص بك. ## ما السؤال الذي يجب طرحه -تتميز أجهزة الكمبيوتر بمهارتها في اكتشاف الأنماط المخفية في البيانات. هذه الفائدة مفيدة جدًا للباحثين الذين لديهم أسئلة حول مجال معين لا يمكن الإجابة عليها بسهولة من خلال إنشاء محرك قواعد شرطي. على سبيل المثال، قد يتمكن عالم بيانات من إنشاء قواعد يدوية حول معدل الوفيات بين المدخنين وغير المدخنين. +تتمتع الحواسيب بمهارة خاصة في اكتشاف الأنماط المخفية في البيانات. هذه الفائدة مفيدة جدًا للباحثين الذين لديهم أسئلة حول مجال معين لا يمكن الإجابة عليها بسهولة عن طريق إنشاء محرك قواعد معتمد على الشروط. على سبيل المثال، في مهمة تأمينية، قد يتمكن عالم بيانات من إنشاء قواعد مصنوعة يدويًا حول وفاة المدخنين مقابل غير المدخنين. -ولكن عندما يتم إدخال العديد من المتغيرات الأخرى في المعادلة، قد يكون نموذج تعلم الآلة أكثر كفاءة في التنبؤ بمعدلات الوفيات المستقبلية بناءً على التاريخ الصحي السابق. مثال أكثر تفاؤلاً قد يكون التنبؤ بالطقس لشهر أبريل في موقع معين بناءً على بيانات تشمل خطوط العرض والطول، تغير المناخ، القرب من المحيط، أنماط التيار النفاث، والمزيد. +لكن عندما يتم إدخال العديد من المتغيرات الأخرى في المعادلة، قد يثبت نموذج التعلم الآلي فعاليته أكثر في التنبؤ بمعدلات الوفيات المستقبلية بناءً على التاريخ الصحي السابق. مثال أكثر بهجة قد يكون تكوين توقعات الطقس لشهر أبريل في موقع معين بناءً على بيانات تشمل خط العرض، وخط الطول، وتغير المناخ، والقرب من المحيط، وأنماط التيار النفاث، وغير ذلك. -✅ يقدم هذا [العرض التقديمي](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) نظرة تاريخية على استخدام تعلم الآلة في تحليل الطقس. +✅ هذه [شرائح العرض](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) حول نماذج الطقس تقدم منظورًا تاريخيًا لاستخدام التعلم الآلي في تحليل الطقس. ## المهام قبل البناء -قبل البدء في بناء النموذج الخاص بك، هناك عدة مهام تحتاج إلى إكمالها. لاختبار سؤالك وتشكيل فرضية بناءً على تنبؤات النموذج، تحتاج إلى تحديد وتكوين عدة عناصر. +قبل البدء في بناء النموذج، هناك عدة مهام يجب إكمالها. لاختبار سؤالك وتكوين فرضية بناءً على توقعات النموذج، تحتاج إلى تحديد وتكوين عدة عناصر. ### البيانات -للإجابة على سؤالك بأي درجة من اليقين، تحتاج إلى كمية جيدة من البيانات من النوع الصحيح. هناك شيئان تحتاج إلى القيام بهما في هذه المرحلة: +لكي تتمكن من الإجابة على سؤالك بأي درجة من اليقين، تحتاج إلى كمية جيدة من البيانات من النوع المناسب. هناك أمران تحتاج إلى القيام بهما في هذه المرحلة: -- **جمع البيانات**. مع الأخذ في الاعتبار الدرس السابق حول الإنصاف في تحليل البيانات، اجمع بياناتك بعناية. كن على دراية بمصادر هذه البيانات، وأي تحيزات متأصلة قد تكون لديها، ووثق أصلها. -- **تحضير البيانات**. هناك عدة خطوات في عملية تحضير البيانات. قد تحتاج إلى تجميع البيانات وتطبيعها إذا كانت تأتي من مصادر متنوعة. يمكنك تحسين جودة وكمية البيانات من خلال طرق مختلفة مثل تحويل النصوص إلى أرقام (كما نفعل في [التجميع](../../5-Clustering/1-Visualize/README.md)). قد تقوم أيضًا بإنشاء بيانات جديدة بناءً على الأصل (كما نفعل في [التصنيف](../../4-Classification/1-Introduction/README.md)). يمكنك تنظيف وتحرير البيانات (كما سنفعل قبل درس [تطبيق الويب](../../3-Web-App/README.md)). وأخيرًا، قد تحتاج أيضًا إلى عشوائية البيانات وخلطها، بناءً على تقنيات التدريب الخاصة بك. +- **جمع البيانات**. مع وضع الدرس السابق حول النزاهة في تحليل البيانات في الاعتبار، اجمع بياناتك بعناية. كن واعيًا لمصادر هذه البيانات، وأي تحيزات كامنة قد تكون لديها، ودوّن أصلها. +- **تحضير البيانات**. هناك عدة خطوات في عملية تحضير البيانات. قد تحتاج إلى جمع البيانات وتطبيعها إذا كانت قادمة من مصادر متنوعة. يمكنك تحسين جودة وكمية البيانات من خلال عدة طرق مثل تحويل السلاسل النصية إلى أعداد (كما نفعل في [التجميع](../../5-Clustering/1-Visualize/README.md)). قد تنتج أيضًا بيانات جديدة بناءً على الأصلية (كما نفعل في [التصنيف](../../4-Classification/1-Introduction/README.md)). يمكنك تنظيف وتحرير البيانات (كما سنفعل قبل درس [تطبيق الويب](../../3-Web-App/README.md)). وأخيرًا، قد تحتاج أيضًا إلى عشوائيتها وخلطها، اعتمادًا على تقنيات التدريب الخاصة بك. -✅ بعد جمع ومعالجة بياناتك، خذ لحظة لترى ما إذا كان شكلها سيسمح لك بمعالجة سؤالك المقصود. قد تكون البيانات غير مناسبة لمهمتك المحددة، كما نكتشف في دروس [التجميع](../../5-Clustering/1-Visualize/README.md)! +✅ بعد جمع ومعالجة بياناتك، خذ لحظة لترى إذا كان شكلها سيسمح لك بمعالجة السؤال الذي تقصده. قد تكون البيانات غير مناسبة لمهمتك المحددة، كما نكتشف في دروسنا في [التجميع](../../5-Clustering/1-Visualize/README.md)! -### الميزات والهدف +### السمات والهدف -الميزة هي خاصية قابلة للقياس في بياناتك. في العديد من مجموعات البيانات، يتم التعبير عنها كعنوان عمود مثل "التاريخ"، "الحجم"، أو "اللون". تمثل متغيرات الميزات، التي يتم تمثيلها عادةً بـ `X` في الكود، المتغيرات المدخلة التي سيتم استخدامها لتدريب النموذج. +[الميزة](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) هي خاصية قابلة للقياس في بياناتك. في العديد من مجموعات البيانات، يتم التعبير عنها كعنوان عمود مثل "التاريخ" أو "الحجم" أو "اللون". متغير الميزة الخاص بك، الذي يُمثل عادةً بـ`X` في الكود، يمثل المتغير المدخل الذي سيتم استخدامه لتدريب النموذج. -الهدف هو الشيء الذي تحاول التنبؤ به. يتم تمثيل الهدف عادةً بـ `y` في الكود، ويمثل الإجابة على السؤال الذي تحاول طرحه على بياناتك: في ديسمبر، ما هو **لون** القرع الذي سيكون الأرخص؟ في سان فرانسيسكو، ما هي الأحياء التي ستحتوي على أفضل **أسعار** العقارات؟ أحيانًا يُشار إلى الهدف أيضًا كخاصية التسمية. +الهدف هو الشيء الذي تحاول التنبؤ به. الهدف، والذي يُمثل عادةً بـ`y` في الكود، يمثل الإجابة على السؤال الذي تحاول طرحه على بياناتك: في ديسمبر، ما **لون** اليقطين سيكون الأرخص؟ في سان فرانسيسكو، أي الأحياء سيكون لديها أفضل **سعر** عقار؟ في بعض الأحيان يُشار إلى الهدف أيضًا على أنه خاصية التسمية. ### اختيار متغير الميزة الخاص بك -🎓 **اختيار الميزات واستخراج الميزات** كيف تعرف أي متغير تختار عند بناء نموذج؟ ربما ستخوض عملية اختيار الميزات أو استخراج الميزات لاختيار المتغيرات المناسبة للنموذج الأكثر كفاءة. ومع ذلك، فهما ليسا نفس الشيء: "استخراج الميزات ينشئ ميزات جديدة من وظائف الميزات الأصلية، بينما اختيار الميزات يعيد مجموعة فرعية من الميزات." ([المصدر](https://wikipedia.org/wiki/Feature_selection)) +🎓 **اختيار الميزة واستخلاص الميزة** كيف تعرف أي متغير تختار عند بناء نموذج؟ من المحتمل أن تمر بعملية اختيار ميزة أو استخلاص ميزة لاختيار المتغيرات الصحيحة لأفضل نموذج أداء. ومع ذلك، فهما ليسا نفس الشيء: "استخلاص الميزة ينشئ ميزات جديدة من دوال الميزات الأصلية، في حين أن اختيار الميزة يعيد مجموعة فرعية من الميزات." ([المصدر](https://wikipedia.org/wiki/Feature_selection)) ### تصور بياناتك -جانب مهم من أدوات عالم البيانات هو القدرة على تصور البيانات باستخدام العديد من المكتبات الممتازة مثل Seaborn أو MatPlotLib. قد يسمح لك تمثيل بياناتك بصريًا بالكشف عن ارتباطات مخفية يمكنك الاستفادة منها. قد تساعدك التصورات أيضًا في الكشف عن التحيز أو البيانات غير المتوازنة (كما نكتشف في [التصنيف](../../4-Classification/2-Classifiers-1/README.md)). +جانب مهم في أدوات عالم البيانات هو القدرة على تصور البيانات باستخدام العديد من المكتبات الممتازة مثل Seaborn أو MatPlotLib. تمثيل بياناتك بصريًا قد يسمح لك بالكشف عن ترابطات مخفية يمكن أن تستفيد منها. قد تساعدك تصوراتك أيضًا في اكتشاف تحيز أو بيانات غير متوازنة (كما نكتشف في [التصنيف](../../4-Classification/2-Classifiers-1/README.md)). -### تقسيم مجموعة البيانات الخاصة بك +### قسّم مجموعة بياناتك -قبل التدريب، تحتاج إلى تقسيم مجموعة البيانات الخاصة بك إلى جزأين أو أكثر بأحجام غير متساوية تمثل البيانات بشكل جيد. +قبل التدريب، تحتاج إلى تقسيم مجموعة البيانات إلى جزأين أو أكثر من أحجام غير متساوية لكنها لا تزال تمثل البيانات جيدًا. -- **التدريب**. هذا الجزء من مجموعة البيانات يتم استخدامه لتدريب النموذج. يشكل هذا الجزء الغالبية من مجموعة البيانات الأصلية. -- **الاختبار**. مجموعة بيانات الاختبار هي مجموعة مستقلة من البيانات، غالبًا ما يتم جمعها من البيانات الأصلية، والتي تستخدمها لتأكيد أداء النموذج المبني. -- **التحقق**. مجموعة التحقق هي مجموعة أصغر مستقلة من الأمثلة التي تستخدمها لضبط معلمات النموذج أو هيكله لتحسين النموذج. بناءً على حجم بياناتك والسؤال الذي تطرحه، قد لا تحتاج إلى بناء هذه المجموعة الثالثة (كما نلاحظ في [التنبؤ بالسلاسل الزمنية](../../7-TimeSeries/1-Introduction/README.md)). +- **التدريب**. هذا الجزء من مجموعة البيانات يتم ملاءمته لنموذجك لتدريبه. هذه المجموعة تشكل أغلبية مجموعة البيانات الأصلية. +- **الاختبار**. مجموعة بيانات الاختبار هي مجموعة مستقلة من البيانات، غالبًا مأخوذة من البيانات الأصلية، تستخدمها لتأكيد أداء النموذج المبني. +- **التحقق**. مجموعة التحقق هي مجموعة أصغر مستقلة من الأمثلة تستخدمها لضبط المعاملات الفائقة للنموذج، أو الهيكل، لتحسين النموذج. بناءً على حجم بياناتك والسؤال الذي تسأله، قد لا تحتاج إلى بناء هذه المجموعة الثالثة (كما نذكر في [التنبؤ بالسلاسل الزمنية](../../7-TimeSeries/1-Introduction/README.md)). ## بناء نموذج -باستخدام بيانات التدريب الخاصة بك، هدفك هو بناء نموذج، أو تمثيل إحصائي لبياناتك، باستخدام خوارزميات مختلفة لتدريبه. تدريب النموذج يعرضه للبيانات ويسمح له بافتراض الأنماط التي يكتشفها، يتحقق منها، ويقبلها أو يرفضها. +باستخدام بيانات التدريب الخاصة بك، هدفك هو بناء نموذج، أو تمثيل إحصائي لبياناتك، باستخدام خوارزميات مختلفة لتدريبه. تدريب النموذج يعرضه للبيانات ويسمح له بعمل فرضيات حول الأنماط التي يكتشفها، ويُحققها، ويقبلها أو يرفضها. -### تحديد طريقة التدريب +### اختر طريقة التدريب -بناءً على سؤالك وطبيعة بياناتك، ستختار طريقة لتدريبها. من خلال استعراض [وثائق Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - التي نستخدمها في هذا الدورة - يمكنك استكشاف العديد من الطرق لتدريب نموذج. بناءً على تجربتك، قد تضطر إلى تجربة عدة طرق مختلفة لبناء النموذج الأفضل. من المحتمل أن تمر بعملية يقوم فيها علماء البيانات بتقييم أداء النموذج من خلال تزويده ببيانات غير مرئية، والتحقق من الدقة، والتحيز، والقضايا الأخرى التي تقلل من الجودة، واختيار طريقة التدريب الأنسب للمهمة المطروحة. +اعتمادًا على سؤالك وطبيعة بياناتك، ستختار طريقة لتدريب النموذج. من خلال تصفح [وثائق Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - التي نستخدمها في هذه الدورة - يمكنك استكشاف العديد من الطرق لتدريب نموذج. بناءً على خبرتك، قد تضطر إلى تجربة عدة طرق مختلفة لبناء أفضل نموذج. من المحتمل أن تمر بعملية يقيم فيها علماء البيانات أداء النموذج من خلال تغذيته ببيانات غير معروفة مسبقًا، والتحقق من الدقة، والتحيز، ومشكلات أخرى تقلل الجودة، واختيار طريقة التدريب الأنسب للمهمة. -### تدريب النموذج +### تدريب نموذج -مسلحًا ببيانات التدريب الخاصة بك، أنت جاهز لـ "تطبيقها" لإنشاء نموذج. ستلاحظ أنه في العديد من مكتبات تعلم الآلة ستجد الكود 'model.fit' - في هذا الوقت تقوم بإرسال متغير الميزة الخاص بك كمصفوفة من القيم (عادةً 'X') ومتغير الهدف (عادةً 'y'). +مزودًا ببيانات التدريب، تكون جاهزًا لـ'ملاءمتها' لإنشاء نموذج. ستلاحظ في العديد من مكتبات التعلم الآلي وجود الكود 'model.fit' - هذا هو الوقت الذي ترسل فيه متغير الميزات الخاص بك كمصفوفة من القيم (عادة 'X') ومتغير الهدف (عادة 'y'). ### تقييم النموذج -بمجرد اكتمال عملية التدريب (قد تستغرق العديد من التكرارات، أو "epochs"، لتدريب نموذج كبير)، ستتمكن من تقييم جودة النموذج باستخدام بيانات الاختبار لقياس أدائه. هذه البيانات هي جزء فرعي من البيانات الأصلية التي لم يقم النموذج بتحليلها مسبقًا. يمكنك طباعة جدول من المقاييس حول جودة النموذج. +بمجرد اكتمال عملية التدريب (قد يستغرق الأمر عدة تكرارات، أو "عصور"، لتدريب نموذج كبير)، ستكون قادرًا على تقييم جودة النموذج باستخدام بيانات الاختبار لقياس أدائه. هذه البيانات هي جزء فرعي من البيانات الأصلية التي لم يحللها النموذج سابقًا. يمكنك طباعة جدول للمعايير حول جودة النموذج الخاص بك. -🎓 **تطبيق النموذج** +🎓 **ملاءمة النموذج** -في سياق تعلم الآلة، يشير تطبيق النموذج إلى دقة الوظيفة الأساسية للنموذج أثناء محاولته تحليل البيانات التي ليست مألوفة له. +في سياق التعلم الآلي، تشير ملاءمة النموذج إلى دقة الدالة الأساسية للنموذج أثناء محاولته تحليل البيانات التي ليست مألوفة له. -🎓 **التطبيق الناقص** و **التطبيق الزائد** هما مشكلتان شائعتان تقللان من جودة النموذج، حيث يتناسب النموذج إما بشكل غير كافٍ أو بشكل زائد. يؤدي ذلك إلى جعل النموذج يقدم تنبؤات إما متطابقة جدًا أو غير متطابقة مع بيانات التدريب الخاصة به. النموذج الزائد يتنبأ ببيانات التدريب بشكل جيد جدًا لأنه تعلم تفاصيل البيانات وضوضائها بشكل زائد. النموذج الناقص ليس دقيقًا لأنه لا يمكنه تحليل بيانات التدريب الخاصة به أو البيانات التي لم "يرها" بعد بدقة. +🎓 **النموذج ناقص الملاءمة** و **النموذج زائد الملاءمة** هما مشكلتان شائعتان تضعفان جودة النموذج، حيث أن النموذج إما لا يناسب البيانات بشكل كافٍ أو يناسبها بشكل مفرط. هذا يؤدي إلى أن يقوم النموذج بعمل توقعات متطابقة جدًا أو ضعيفة جدًا مع بيانات التدريب الخاصة به. النموذج زائد الملاءمة يتنبأ ببيانات التدريب بدقة شديدة لأنه تعلم تفاصيل الضوضاء في البيانات جيدًا جدًا. النموذج ناقص الملاءمة غير دقيق لأنه لا يمكنه تحليل بيانات التدريب أو البيانات التي لم يرها بعد بدقة. -![نموذج زائد التطبيق](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> رسم توضيحي بواسطة [Jen Looper](https://twitter.com/jenlooper) +![overfitting model](../../../../translated_images/ar/overfitting.1c132d92bfd93cb6.webp) +> رسم معلوماتي بواسطة [جن لوبر](https://twitter.com/jenlooper) -## ضبط المعلمات +## ضبط المعاملات -بمجرد اكتمال التدريب الأولي، راقب جودة النموذج وفكر في تحسينه عن طريق تعديل "المعلمات الفائقة". اقرأ المزيد عن العملية [في الوثائق](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +بمجرد الانتهاء من تدريبك الأولي، راقب جودة النموذج وفكر في تحسينها عن طريق تعديل "المعاملات الفائقة" له. اقرأ المزيد عن العملية [في الوثائق](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## التنبؤ -هذه هي اللحظة التي يمكنك فيها استخدام بيانات جديدة تمامًا لاختبار دقة النموذج الخاص بك. في إعداد تعلم الآلة "التطبيقي"، حيث تقوم ببناء أصول ويب لاستخدام النموذج في الإنتاج، قد تتضمن هذه العملية جمع مدخلات المستخدم (مثل الضغط على زر) لتعيين متغير وإرساله إلى النموذج للاستدلال أو التقييم. +هذه هي اللحظة التي يمكنك فيها استخدام بيانات جديدة تمامًا لاختبار دقة نموذجك. في بيئة تعلم آلي "تطبيقية"، حيث تبني أصول ويب لاستخدام النموذج في الإنتاج، قد يتضمن هذا العملية جمع مدخلات المستخدم (مثل ضغط زر، على سبيل المثال) لتعيين متغير وإرساله إلى النموذج للقيام بالاستدلال أو التقييم. -في هذه الدروس، ستكتشف كيفية استخدام هذه الخطوات للتحضير، البناء، الاختبار، التقييم، والتنبؤ - جميع إيماءات عالم البيانات والمزيد، أثناء تقدمك في رحلتك لتصبح مهندس تعلم الآلة "متكامل المهارات". +في هذه الدروس، ستكتشف كيفية استخدام هذه الخطوات للتحضير والبناء والاختبار والتقييم والتنبؤ - كل حركات عالم البيانات وأكثر، مع تقدمك في رحلتك لتصبح مهندس تعلم آلي "متكامل". --- -## 🚀تحدي +## 🚀التحدي -ارسم مخططًا انسيابيًا يعكس خطوات ممارس تعلم الآلة. أين ترى نفسك الآن في العملية؟ أين تتوقع أن تجد صعوبة؟ ما الذي يبدو سهلاً بالنسبة لك؟ +ارسم مخطط تدفق يعكس خطوات ممارس التعلم الآلي. أين ترى نفسك الآن في العملية؟ أين تتوقع أن تجد صعوبة؟ ما الذي يبدو سهلاً بالنسبة لك؟ -## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/) +## [اختبار بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/) ## المراجعة والدراسة الذاتية -ابحث عبر الإنترنت عن مقابلات مع علماء بيانات يناقشون عملهم اليومي. هنا [واحدة](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +ابحث عبر الإنترنت عن مقابلات مع علماء بيانات يتحدثون عن عملهم اليومي. إليك [واحدة](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## الواجب -[قم بمقابلة مع عالم بيانات](assignment.md) +[قم بإجراء مقابلة مع عالم بيانات](assignment.md) --- -**إخلاء المسؤولية**: -تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الحرجة، يوصى بالترجمة البشرية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة. + \ No newline at end of file diff --git a/translations/ar/2-Regression/3-Linear/README.md b/translations/ar/2-Regression/3-Linear/README.md index c889102f80..2d3db700ba 100644 --- a/translations/ar/2-Regression/3-Linear/README.md +++ b/translations/ar/2-Regression/3-Linear/README.md @@ -2,96 +2,96 @@ ## ملاحظة للمبتدئين -يُستخدم الانحدار الخطي عندما نريد التنبؤ بقيمة **عددية** (على سبيل المثال، سعر المنزل، درجة الحرارة، أو المبيعات). -يعمل عن طريق إيجاد خط مستقيم يمثل أفضل علاقة بين ميزات الإدخال والمخرجات. +يُستخدم الانحدار الخطي عندما نرغب في التنبؤ بقيمة **رقمية** (على سبيل المثال، سعر المنزل، درجة الحرارة، أو المبيعات). +يعمل عن طريق إيجاد خط مستقيم يمثل بأفضل شكل العلاقة بين ميزات الإدخال والمخرج. -في هذا الدرس، نركز على فهم المفهوم قبل استكشاف تقنيات الانحدار الأكثر تقدمًا. +في هذا الدرس، نركز على فهم المفهوم قبل استكشاف تقنيات الانحدار المتقدمة. ![Linear vs polynomial regression infographic](../../../../translated_images/ar/linear-polynomial.5523c7cb6576ccab.webp) -> رسم معلوماتي بواسطة [داساني ماديبالي](https://twitter.com/dasani_decoded) -## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/) +> رسم معلومات بواسطة [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [اختبار تمهيدي للدرس](https://ff-quizzes.netlify.app/en/ml/) -> ### [هذا الدرس متوفر أيضًا بلغة R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### المقدمة +> ### [هذا الدرس متاح بلغة R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### مقدمة -حتى الآن، استكشفت ما هو الانحدار باستخدام بيانات عينة تم جمعها من مجموعة بيانات تسعير اليقطين التي سنستخدمها طوال هذا الدرس. وقد قمت أيضًا بتصويرها باستخدام Matplotlib. +حتى الآن استكشفت ما هو الانحدار باستخدام بيانات عينة مأخوذة من مجموعة بيانات تسعير اليقطين التي سنستخدمها طوال هذا الدرس. وقد قمت أيضًا بتصورها باستخدام Matplotlib. -الآن أنت مستعد للتعمق أكثر في الانحدار لتعلم الآلة. بينما يسمح التصوير لفهم البيانات، القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. تُدرَّب النماذج على بيانات تاريخية لالتقاط التبعيات تلقائيًا، وتتيح لك التنبؤ بالنتائج لبيانات جديدة لم يسبق للنموذج رؤيتها. +أنت الآن مستعد للتعمق أكثر في الانحدار لـ ML. بينما يسمح التصور بفهم البيانات، القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. يتم تدريب النماذج على البيانات التاريخية لالتقاط تبعيات البيانات تلقائيًا، وتسمح لك بالتنبؤ بالنتائج للبيانات الجديدة التي لم يرها النموذج من قبل. -في هذا الدرس، ستتعلم أكثر عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و_الانحدار المتعدد الحدود_، بالإضافة إلى بعض الأسس الرياضية لهذه التقنيات. هذه النماذج ستسمح لنا بالتنبؤ بأسعار اليقطين بناءً على بيانات الإدخال المختلفة. +في هذا الدرس، ستتعلم المزيد عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و _الانحدار متعدد الحدود_، بالإضافة إلى بعض الرياضيات الأساسية لهذه التقنيات. ستتيح لنا هذه النماذج التنبؤ بأسعار اليقطين اعتمادًا على بيانات الإدخال المختلفة. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي. +> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي. -> طوال هذا المنهج، نفترض معرفة رياضية بسيطة، ونسعى لجعلها متاحة للطلاب القادمين من مجالات أخرى، لذا تابع الملاحظات، 🧮 الإشارات، الرسوم التوضيحية، وأدوات التعلم الأخرى للمساعدة في الفهم. +> طوال هذه المنهجية، نفترض معرفة رياضية محدودة، ونسعى لجعلها متاحة للطلاب القادمين من حقول أخرى، فتابع الملاحظات، نداءات 🧮، الرسوم التوضيحية، وأدوات التعلم الأخرى للمساعدة في الاستيعاب. -### المتطلبات السابقة +### المتطلبات الأساسية -يجب أن تكون على دراية الآن ببنية بيانات اليقطين التي نقوم بفحصها. يمكنك العثور عليها محملة ومُنظفة مسبقًا في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يظهر سعر اليقطين لكل سطل في إطار بيانات جديد. تأكد من قدرتك على تشغيل هذه الدفاتر في بيئات التنفيذ داخل Visual Studio Code. +ينبغي أن تكون مألوفًا حتى الآن مع هيكل بيانات اليقطين التي نفحصها. يمكنك العثور عليها محملة مسبقًا ومنظفة مسبقًا في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يُعرض سعر اليقطين لكل بوشل في إطار بيانات جديد. تأكد من قدرتك على تشغيل هذه النوتبوك في kernels في Visual Studio Code. ### التحضير -كتذكير، أنت تقوم بتحميل هذه البيانات لطرح أسئلة عليها. +كتذكير، تقوم بتحميل هذه البيانات لطرح أسئلة حولها. -- متى هو أفضل وقت لشراء اليقطين؟ -- ما السعر الذي يمكنني توقعه لحالة من اليقطين الصغير الحجم؟ -- هل يجب علي شراؤها في سلال نصف السطل أم عبر صندوق سطل وربع السطل؟ -لنواصل الغوص في هذه البيانات. +- متى أفضل وقت لشراء اليقطين؟ +- ما السعر المتوقع لعلبة من يقطين صغير الحجم؟ +- هل يجب أن أشتريها في سلال نصف بوشل أم بصندوق 1 1/9 بوشل؟ +دعنا نستمر في استكشاف هذه البيانات. -في الدرس السابق، أنشأت إطار بيانات Pandas وملأته بجزء من مجموعة البيانات الأصلية، مع توحيد الأسعار حسب السطل. ولكن بهذا الشكل، تمكنت فقط من جمع حوالي 400 نقطة بيانات وفقط لأشهر الخريف. +في الدرس السابق، أنشأت إطار بيانات من Pandas وملأته بجزء من مجموعة البيانات الأصلية، موحدًا الأسعار حسب البوشل. لكن بهذه الطريقة، تمكنت فقط من جمع حوالي 400 نقطة بيانات ولأشهر الخريف فقط. -ألقِ نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المصاحب لهذا الدرس. البيانات محملة مسبقًا وتم رسم مخطط مبعثر أولي لعرض بيانات الشهر. ربما يمكننا الحصول على مزيد من التفاصيل حول طبيعة البيانات من خلال تنظيفها أكثر. +ألق نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المرافق لهذا الدرس. البيانات محملة مسبقًا وتم رسم مخطط مبعثر مبدئي لعرض بيانات الأشهر. ربما يمكننا الحصول على تفاصيل أكثر عن طبيعة البيانات من خلال تنظيفها أكثر. -## خط الانحدار الخطي +## خط انحدار خطي -كما تعلمت في الدرس 1، الهدف من تمرين الانحدار الخطي هو القدرة على رسم خط لـ: +كما تعلمت في الدرس الأول، هدف تمرين الانحدار الخطي هو القدرة على رسم خط لـ: -- **عرض علاقات المتغيرات**. عرض العلاقة بين المتغيرات -- **عمل تنبؤات**. عمل تنبؤات دقيقة حول مكان وقوع نقطة بيانات جديدة بالنسبة لذلك الخط. +- **عرض العلاقات بين المتغيرات**. إظهار العلاقة بين المتغيرات +- **عمل توقعات**. عمل توقعات دقيقة عن مكان وقوع نقطة بيانات جديدة نسبة إلى هذا الخط. -غالبًا ما يتم رسم هذا النوع من الخط ضمن **انحدار المربعات الصغرى**. يشير مصطلح "المربعات الصغرى" إلى عملية تقليل مجموع الخطأ الكلي في نموذجنا. لكل نقطة بيانات، نقيس المسافة العمودية (المسماة بالبقايا) بين النقطة الفعلية وخط الانحدار. +من المعتاد في **انحدار الأقل مجموع المربعات** رسم هذا النوع من الخطوط. مصطلح "الأقل مجموع المربعات" يشير إلى عملية تقليل الخطأ الكلي في نموذجنا. لكل نقطة بيانات، نقيس المسافة العمودية (المسماة بالبقايا) بين النقطة الفعلية وخط الانحدار. -نقوم بتربيع هذه المسافات لسببين رئيسيين: +نقوم بتربيع هذه المسافات لسببين رئيسيين: -1. **الحجم على الاتجاه:** نريد معاملة الخطأ -5 بنفس الطريقة كخطأ +5. التربيع يحول كل القيم إلى موجبة. +1. **المقدار أهم من الاتجاه:** نريد أن نعامل خطأ -5 مثل خطأ +5. التربيع يجعل كل القيم موجبة. -2. **معاقبة القيم المتطرفة:** التربيع يعطي وزنًا أكبر للأخطاء الكبيرة، مما يجبر الخط على البقاء أقرب إلى النقاط البعيدة. +2. **معاقبة القيم المتطرفة:** التربيع يعطي وزنًا أكبر للأخطاء الكبيرة، مما يجبر الخط على الاقتراب أكثر من النقاط البعيدة. -ثم نجمع كل هذه القيم المربعة معًا. هدفنا هو العثور على الخط المحدد حيث يكون مجموع هذه القيم في أقل مستوى له (القيمة الصغرى الممكنة) — ومن هنا جاء اسم "المربعات الصغرى". +ثم نجمع كل هذه القيم المربعة معًا. هدفنا هو إيجاد الخط المحدد حيث تكون هذه المجموعة النهائية بأقل قيمة ممكنة—ومن هنا جاء اسم "الأقل مجموع المربعات". > **🧮 أرني الرياضيات** > -> يمكن التعبير عن هذا الخط، الذي يسمى _خط الانسب_، بواسطة [معادلة](https://en.wikipedia.org/wiki/Simple_linear_regression): +> هذا الخط، المسمى _خط أفضل ملاءمة_ يمكن التعبير عنه بواسطة [معادلة](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` -> -> حيث `X` هي 'المتغير التفسيري'. و `Y` هو 'المتغير التابع'. ميل الخط هو `b` و `a` هو الجزء المقطوع من المحور الصادي، والذي يشير إلى قيمة `Y` عندما يكون `X = 0`. -> ->![calculate the slope](../../../../translated_images/ar/slope.f3c9d5910ddbfcf9.webp) -> -> أولًا، احسب الميل `b`. رسم معلوماتي من [جن لوبر](https://twitter.com/jenlooper) -> -> بمعنى آخر، وبالرجوع لسؤال بيانات اليقطين الأصلي: "التنبؤ بسعر اليقطين لكل سطل حسب الشهر"، يشير `X` إلى السعر و`Y` إلى شهر البيع. -> ->![complete the equation](../../../../translated_images/ar/calculation.a209813050a1ddb1.webp) -> -> احسب قيمة Y. إن كنت تدفع حوالي 4 دولارات، فلا بد أن يكون أبريل! رسم معلوماتي من [جن لوبر](https://twitter.com/jenlooper) -> -> الرياضيات التي تحسب الخط يجب أن تبرز ميل الخط، والذي يعتمد أيضًا على الجزء المقطوع، أو مكان وجود `Y` عندما `X = 0`. -> -> يمكنك الاطلاع على طريقة الحساب لهذه القيم على موقع [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). كما زر [حاسبة المربعات الصغرى](https://www.mathsisfun.com/data/least-squares-calculator.html) لمشاهدة تأثير قيم الأرقام على الخط. +> +> `X` هو 'المتغير التفسيري'. `Y` هو 'المتغير التابع'. ميل الخط هو `b` و `a` هو التقاطع عند المحور Y، وهو يشير إلى قيمة `Y` عندما تكون `X = 0`. +> +>![calculate the slope](../../../../translated_images/ar/slope.f3c9d5910ddbfcf9.webp) +> +> أولاً، احسب الميل `b`. رسم معلومات بواسطة [Jen Looper](https://twitter.com/jenlooper) +> +> بعبارة أخرى، وبالإشارة إلى سؤال بيانات اليقطين الأصلي: "تنبؤ سعر اليقطين لكل بوشل حسب الشهر"، فإن `X` تشير للسعر و `Y` تشير لشهر البيع. +> +>![complete the equation](../../../../translated_images/ar/calculation.a209813050a1ddb1.webp) +> +> احسب قيمة Y. إذا كنت تدفع حوالي 4 دولارات، فلا بد أنه أبريل! رسم معلومات بواسطة [Jen Looper](https://twitter.com/jenlooper) +> +> يجب أن توضح الرياضيات التي تحسب الخط ميل الخط، والذي يعتمد أيضًا على التقاطع، أو المكان الذي يتواجد فيه `Y` عندما `X = 0`. +> +> يمكنك مشاهدة طريقة الحساب لهذه القيم في موقع [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). كما يمكنك زيارة [حاسبة الأقل مجموع المربعات](https://www.mathsisfun.com/data/least-squares-calculator.html) لمشاهدة كيف تؤثر قيم الأرقام على الخط. -## الترابط +## الارتباط -مصطلح آخر يجب فهمه هو **معامل الترابط** بين المتغيرات X و Y المعطاة. باستخدام مخطط مبعثر، يمكنك تصور هذا المعامل بسرعة. المخطط الذي تتوزع نقاط بياناته في خط مرتب له ترابط عالٍ، بينما المخطط الذي تتوزع نقاطه في كل مكان بين X و Y له ترابط منخفض. +مصطلح آخر يجب فهمه هو **معامل الارتباط** بين المتغيرات X و Y المعطاة. باستخدام المخطط المبعثر، يمكنك تصور هذا المعامل بسرعة. المخطط الذي تتوزع نقاط البيانات فيه في خط مرتب لديه ارتباط عالي، لكن المخطط الذي تنتشر فيه النقاط في كل مكان بين X و Y لديه ارتباط منخفض. -نموذج الانحدار الخطي الجيد هو الذي يمتلك معامل ترابط عالٍ (أقرب إلى 1 منه إلى 0) باستخدام طريقة انحدار المربعات الصغرى وخط الانحدار. +نموذج الانحدار الخطي الجيد هو الذي لديه معامل ارتباط عالي (أقرب إلى 1 منه إلى 0) باستخدام طريقة انحدار الأقل مجموع المربعات مع خط الانحدار. -✅ شغل دفتر الملاحظات المصاحب لهذا الدرس وانظر إلى المخطط المبعثر بين الشهر والسعر. هل تبدو البيانات المرتبطة بين الشهر والسعر لمبيعات اليقطين ذات ترابط عالي أم منخفض، حسب تفسيرك البصري للمخطط المبعثر؟ هل يتغير ذلك إذا استخدمت قياسًا أكثر دقة بدلًا من `Month`، كمثال *يوم السنة* (أي عدد الأيام منذ بداية السنة)؟ +✅ شغّل دفتر الملاحظات المرافق لهذا الدرس وانظر إلى المخطط المبعثر بين الشهر والسعر. هل تبدو البيانات التي تربط الشهر والسعر لمبيعات اليقطين ذات ارتباط عالي أم منخفض حسب تفسيرك البصري للمخطط المبعثر؟ وهل يتغير ذلك إذا استخدمت مقياسًا أكثر دقة بدلاً من `Month`، مثل *يوم السنة* (أي عدد الأيام منذ بداية السنة)؟ -في الكود أدناه، سنفترض أننا قمنا بتنظيف البيانات، وحصلنا على إطار بيانات يسمى `new_pumpkins`، مشابه للآتي: +في الكود أدناه، سنفترض أننا قمنا بتنظيف البيانات، وحصلنا على إطار بيانات يسمى `new_pumpkins`، يشبه الجدول التالي: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> الشفرة الخاصة بتنظيف البيانات متوفرة في [`notebook.ipynb`](notebook.ipynb). لقد قمنا بنفس خطوات التنظيف كالدرس السابق، وحسبنا عمود `DayOfYear` باستخدام التعبير التالي: +> كود تنظيف البيانات متوفر في [`notebook.ipynb`](notebook.ipynb). لقد قمنا بتنفيذ نفس خطوات التنظيف كما في الدرس السابق، وحسبنا عمود `DayOfYear` باستخدام التعبير التالي: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -الآن بعد أن أصبحت تفهم الرياضيات وراء الانحدار الخطي، دعونا ننشئ نموذج انحدار لنرى ما إذا كان بإمكاننا التنبؤ بأفضل عبوة من اليقطين التي ستحصل على أفضل الأسعار. قد يرغب شخص يشتري يقطينًا لزراعة بقعة هالوين في معرفة هذه المعلومات ليتمكن من تحسين مشترياته. +الآن بعد أن فهمت الرياضيات خلف الانحدار الخطي، دعنا ننشئ نموذج الانحدار لنرى إن كنا نستطيع التنبؤ بأي حزمة من اليقطين سيكون لها أفضل الأسعار. قد يرغب من يشتري اليقطين لبقعة يقطين احتفالية بمعرفة هذه المعلومة لتحسين مشترياته من حزم اليقطين للبقعة. -## البحث عن الترابط +## البحث عن الارتباط [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير حول الترابط. +> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح الارتباط. -من الدرس السابق، ربما لاحظت أن متوسط السعر للأشهر المختلفة يبدو كالتالي: +من الدرس السابق ربما رأيت أن متوسط السعر للأشهر المختلفة يبدو كالتالي: Average price by month -هذا يشير إلى أنه يجب أن يكون هناك بعض الترابط، ويمكننا محاولة تدريب نموذج انحدار خطي للتنبؤ بالعلاقة بين `Month` و `Price`، أو بين `DayOfYear` و `Price`. إليك المخطط المبعثر الذي يظهر العلاقة الأخيرة: +وهذا يشير إلى أنه يجب أن يكون هناك بعض الارتباط، ويمكننا محاولة تدريب نموذج انحدار خطي للتنبؤ بالعلاقة بين `Month` و`Price`، أو بين `DayOfYear` و`Price`. فيما يلي المخطط المبعثر الذي يظهر العلاقة الأخيرة: Scatter plot of Price vs. Day of Year -لنرَ ما إذا كان هناك ترابط باستخدام دالة `corr`: +لنرَ إذا كان هناك ارتباط باستخدام دالة `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -يبدو أن الترابط صغير إلى حدٍّ ما، -0.15 بالنسبة لـ `Month` و -0.17 بالنسبة لـ `DayOfMonth`، لكن قد يكون هناك علاقة مهمة أخرى. يبدو أن هناك تجمعات مختلفة من الأسعار تتوافق مع أصناف مختلفة من اليقطين. لتأكيد هذا الفرض، دعنا نرسم كل فئة من اليقطين بلون مختلف. بتمرير معامل `ax` إلى دالة `scatter` نتمكن من رسم كل النقاط على نفس الرسم: +يبدو أن الارتباط صغير جدًا، -0.15 حسب `Month` و -0.17 حسب `DayOfYear`، لكن قد يكون هناك علاقة مهمة أخرى. يبدو أن هناك مجموعات مختلفة من الأسعار تتوافق مع أصناف مختلفة من اليقطين. لتأكيد هذا الافتراض، دعنا نرسم كل فئة يقطين بلون مختلف. عن طريق تمرير معلمة `ax` إلى دالة `scatter` يمكننا رسم كل النقاط على نفس الرسم البياني: ```python ax=None @@ -142,7 +142,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): Scatter plot of Price vs. Day of Year -تحقيقنا يشير إلى أن الصنف له تأثير أكبر على السعر الكلي من تاريخ البيع الفعلي. يمكننا رؤية ذلك من خلال رسم بياني شريطي: +تشير تحقيقاتنا إلى أن الصنف له تأثير أكبر على السعر الكلي من تاريخ البيع الفعلي. يمكننا أن نرى ذلك مع مخطط الأعمدة: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') @@ -150,7 +150,7 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') Bar graph of price vs variety -دعنا نركز للحظة على صنف واحد من اليقطين، وهو 'نوع الفطيرة'، ولنرى تأثير التاريخ في السعر: +دعنا نركز للحظة فقط على صنف يقطين واحد، نوع "الفطيرة"، ونرى تأثير التاريخ على السعر: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,22 +158,22 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -إذا حسبنا الآن الترابط بين `Price` و `DayOfYear` باستخدام دالة `corr`، سنحصل على تقريبًا `-0.27` - مما يعني أن تدريب نموذج تنبؤي يصبح منطقيًا. +إذا حسبنا الآن معامل الارتباط بين `Price` و `DayOfYear` باستخدام دالة `corr`، سنحصل على شيء مثل `-0.27` - وهذا يعني أن تدريب نموذج تنبئي له معنى. -> قبل تدريب نموذج الانحدار الخطي، من المهم التأكد من أن بياناتنا نظيفة. الانحدار الخطي لا يعمل جيدًا مع القيم المفقودة، لذا من المنطقي إزالة جميع الخلايا الفارغة: +> قبل تدريب نموذج الانحدار الخطي، من المهم التأكد من أن بياناتنا نظيفة. الانحدار الخطي لا يعمل جيدًا مع القيم المفقودة، لذا من المنطقي التخلص من كل الخلايا الفارغة: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -من الشائع ملء القيم الفارغة بالقيمة المتوسطة للعمود المقابل. +نهج آخر سيكون ملء هذه القيم الفارغة بقيم المتوسط من العمود المقابل. ## الانحدار الخطي البسيط [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي والانحدار متعددة الحدود. +> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير عن الانحدار الخطي ومتعدد الحدود. لتدريب نموذج الانحدار الخطي، سنستخدم مكتبة **Scikit-learn**. @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -نبدأ بفصل قيم الإدخال (الميزات) والنتيجة المتوقعة (التسمية) في مصفوفات numpy منفصلة: +نبدأ بفصل القيم المدخلة (الميزات) والنتيجة المتوقعة (التسمية) في مصفوفات numpy منفصلة: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> لاحظ أننا اضطررنا لأداء `reshape` على البيانات المدخلة لكي تفهم حزمة الانحدار الخطي البيانات بشكل صحيح. الانحدار الخطي يتوقع مصفوفة ذات بعدين كإدخال، حيث كل صف من المصفوفة يمثل متجهًا لميزات الإدخال. في حالتنا، حيث لدينا مدخل واحد فقط - نحتاج إلى مصفوفة بحجم N×1، حيث N هو حجم مجموعة البيانات. +> لاحظ أننا اضطررنا إلى إجراء `reshape` على بيانات الإدخال لكي يفهمها حزمة الانحدار الخطي بشكل صحيح. الانحدار الخطي يتوقع مصفوفة ثنائية الأبعاد كمدخلات، حيث يمثل كل صف من المصفوفة متجهًا للميزات المدخلة. في حالتنا، بما أنه لدينا ميزة واحدة فقط - نحتاج إلى مصفوفة ذات شكل N×1، حيث N هي حجم مجموعة البيانات. -بعدها، نحتاج إلى تقسيم البيانات إلى مجموعات تدريب واختبار، حتى نستطيع التحقق من نموذجنا بعد التدريب: +بعد ذلك، نحتاج إلى تقسيم البيانات إلى مجموعات تدريب واختبار، حتى نتمكن من التحقق من صحة نموذجنا بعد التدريب: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -أخيرًا، تدريب نموذج الانحدار الخطي الفعلي يحتاج فقط إلى سطرين من الكود. نعرّف كائن `LinearRegression`، ثم نلائم النموذج على بياناتنا باستخدام دالة `fit`: +أخيرًا، يستغرق تدريب نموذج الانحدار الخطي الفعلي سطرين فقط من الكود. نعرف كائن `LinearRegression`، ونُلائم النموذج لبياناتنا باستخدام طريقة `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -يحتوي كائن `LinearRegression` بعد عملية `fit` على جميع معاملات الانحدار، والتي يمكن الوصول إليها باستخدام الخاصية `.coef_`. في حالتنا، يوجد معامل واحد فقط، والذي يجب أن يكون حوالي `-0.017`. هذا يعني أن الأسعار تبدو وكأنها تنخفض قليلاً مع مرور الوقت، ولكن ليس بشكل كبير، حوالي سنتين في اليوم. يمكننا أيضًا الوصول إلى نقطة التقاطع مع محور Y باستخدام `lin_reg.intercept_` - والتي ستكون حوالي `21` في حالتنا، مما يشير إلى السعر في بداية السنة. +يحتوي كائن `LinearRegression` بعد عملية `fit` على جميع معاملات الانحدار، والتي يمكن الوصول إليها باستخدام خاصية `.coef_`. في حالتنا، يوجد معامل واحد فقط، والذي يجب أن يكون حوالي `-0.017`. وهذا يعني أن الأسعار يبدو أنها تنخفض قليلاً مع مرور الوقت، ولكن ليس بشكل كبير، حوالي سنتين في اليوم. يمكننا أيضًا الوصول إلى نقطة تقاطع الانحدار مع محور Y باستخدام `lin_reg.intercept_` - وستكون حوالي `21` في حالتنا، مما يشير إلى السعر في بداية العام. -لمعرفة مدى دقة نموذجنا، يمكننا توقع الأسعار على مجموعة البيانات الاختبارية، ثم قياس مدى قرب تنبؤاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقياس جذر متوسط مربعات الخطأ (RMSE)، وهو الجذر التربيعي لمتوسط كل الفروق المربعة بين القيمة المتوقعة والقيمة المتنبأ بها. +لمعرفة مدى دقة نموذجنا، يمكننا التنبؤ بالأسعار على مجموعة بيانات اختبار، ثم قياس مدى قرب تنبؤاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقياس الجذر التربيعي للخطأ المتوسط (RMSE)، وهو الجذر لمتوسط جميع الفروق المربعة بين القيمة المتوقعة والمتنبأ بها. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -يبدو أن خطأنا حوالي نقطتين، وهو ~17%. ليس جيدًا جدًا. مؤشر آخر لجودة النموذج هو **معامل التحديد**، والذي يمكن الحصول عليه بهذه الطريقة: +يبدو أن خطأنا حوالي نقطتين، وهو ~17%. ليس جيدًا جدًا. مؤشر آخر لجودة النموذج هو **معامل التحديد**، والذي يمكن الحصول عليه هكذا: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - إذا كانت القيمة 0، فهذا يعني أن النموذج لا يأخذ بيانات الإدخال في الاعتبار، ويتصرف كـ *أسوأ متنبئ خطي*، والذي هو ببساطة متوسط ​​القيمة للنتيجة. القيمة 1 تعني أننا نستطيع التنبؤ بجميع المخرجات المتوقعة بشكل مثالي. في حالتنا، المعامل حوالي 0.06، وهو منخفض إلى حد ما. + إذا كانت القيمة 0، فهذا يعني أن النموذج لا يأخذ بيانات الإدخال في الاعتبار، ويتصرف كـ *أسوأ متنبئ خطي*، وهو ببساطة قيمة المتوسط للنتيجة. القيمة 1 تعني أننا نستطيع التنبؤ بجميع المخرجات المتوقعة بدقة تامة. في حالتنا، معامل التحديد حوالي 0.06، وهو منخفض جدًا. -يمكننا أيضًا رسم بيانات الاختبار مع خط الانحدار لرؤية كيفية عمل الانحدار في حالتنا بشكل أفضل: +يمكننا أيضًا رسم بيانات الاختبار مع خط الانحدار لنرى بشكل أفضل كيف يعمل الانحدار في حالتنا: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## الانحدار متعدد الحدود -نوع آخر من الانحدار الخطي هو الانحدار متعدد الحدود. بينما في بعض الأحيان هناك علاقة خطية بين المتغيرات - كلما كانت القرعة أكبر من حيث الحجم، كلما كان السعر أعلى - أحيانًا لا يمكن تمثيل هذه العلاقات كمسطح أو خط مستقيم. +نوع آخر من الانحدار الخطي هو الانحدار متعدد الحدود. في حين أنه أحيانًا توجد علاقة خطية بين المتغيرات - كلما زاد حجم اليقطين، زاد السعر - في بعض الأحيان لا يمكن تمثيل هذه العلاقات كمستوى أو خط مستقيم. -✅ إليك [بعض الأمثلة الأخرى](https://online.stat.psu.edu/stat501/lesson/9/9.8) على بيانات يمكن استخدام الانحدار متعدد الحدود لها +✅ إليك [بعض الأمثلة الإضافية](https://online.stat.psu.edu/stat501/lesson/9/9.8) على بيانات يمكن استخدام الانحدار متعدد الحدود معها. -ألق نظرة أخرى على العلاقة بين التاريخ والسعر. هل يبدو أن هذا المخطط النقطي يجب بالضرورة تحليله بخط مستقيم؟ ألا يمكن للأسعار أن تتقلب؟ في هذه الحالة، يمكنك تجربة الانحدار متعدد الحدود. +أعد النظر في العلاقة بين التاريخ والسعر. هل يبدو هذا الرسم النقطي وكأنه يجب تحليله بواسطة خط مستقيم بالضرورة؟ ألا يمكن أن تتقلب الأسعار؟ في هذه الحالة، يمكنك تجربة الانحدار متعدد الحدود. -✅ متعددات الحدود هي تعبيرات رياضية قد تتكون من متغير أو أكثر ومعاملات +✅ كثيرات الحدود هي تعبيرات رياضية قد تتكون من متغير واحد أو أكثر مع معاملات. -ينشئ الانحدار متعدد الحدود خط منحني ليناسب البيانات غير الخطية بشكل أفضل. في حالتنا، إذا قمنا بتضمين متغير `DayOfYear` مربع في بيانات الإدخال، يجب أن نتمكن من ملائمة بياناتنا بمنحنى قطع مكافئ، سيكون له أدنى نقطة في نقطة معينة خلال السنة. +ينشئ الانحدار متعدد الحدود خطًا منحنيًا ليتناسب بشكل أفضل مع البيانات غير الخطية. في حالتنا، إذا أضفنا متغير `DayOfYear` المربّع إلى بيانات الإدخال، يجب أن نتمكن من ملائمة بياناتنا بمنحنى قطع مكافئ يحتوي على حد أدنى في نقطة معينة خلال العام. -تتضمن مكتبة Scikit-learn واجهة برمجة تطبيقات مفيدة تسمى [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) لدمج خطوات معالجة البيانات المختلفة معًا. **الخط الأنبوبي** هو سلسلة من **المقدرون**. في حالتنا، سوف ننشئ خطًا أنبوبيًا يضيف مميزات متعددة الحدود إلى نموذجنا أولاً، ثم يقوم بتدريب الانحدار: +تتضمن مكتبة Scikit-learn [واجهة برمجة تطبيقات pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفيدة لدمج خطوات معالجة البيانات المختلفة معًا. الـ **pipeline** هو سلسلة من **المقدِّرين (estimators)**. في حالتنا، سننشئ دالة pipeline تضيف أولاً ميزات متعددة الحدود إلى نموذجنا، ثم تدرب الانحدار: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -استخدام `PolynomialFeatures(2)` يعني أننا سوف نضمّن جميع كثيرات الحدود من الدرجة الثانية من بيانات الإدخال. في حالتنا، سيعني هذا فقط `DayOfYear`2، ولكن إذا كان هناك متغيران للإدخال X و Y، فسيضيف هذا X2، XY، و Y2. يمكننا أيضًا استخدام كثيرات حدود بدرجات أعلى إذا أردنا. +استخدام `PolynomialFeatures(2)` يعني أننا سنشمل كل كثيرات الحدود من الدرجة الثانية من بيانات الإدخال. في حالتنا، سيعني فقط `DayOfYear`2، لكن مع وجود متغيري مدخلات X و Y، سيضيف ذلك X2، XY و Y2. يمكننا أيضًا استخدام كثيرات حدود بدرجات أعلى إذا أردنا. + +يمكن استخدام الـ Pipelines بنفس طريقة استخدام كائن `LinearRegression` الأصلي، أي يمكننا `fit` الـ pipeline، ثم استخدام `predict` للحصول على نتائج التنبؤ: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +لرسم منحنى التقريب الناعم، نستخدم `np.linspace` لإنشاء مدى متساوي من قيم الإدخال، بدلاً من الرسم مباشرة على بيانات الاختبار غير المرتبة (والتي ستنتج خطًا متعرجًا): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -يمكن استخدام الخطوط الأنبوبية بنفس طريقة كائن `LinearRegression` الأصلي، أي يمكننا `fit` الخط الأنبوبي، ثم استخدام `predict` للحصول على نتائج التنبؤ. هنا الرسم البياني الذي يعرض بيانات الاختبار ومنحنى التقريب: +إليك الرسم الذي يُظهر بيانات الاختبار ومنحنى التقريب: Polynomial regression -باستخدام الانحدار متعدد الحدود، يمكننا الحصول على MSE أقل قليلاً ومعامل تحديد أعلى، لكن ليس بشكل كبير. نحن بحاجة إلى أخذ ميزات أخرى في الاعتبار! +باستخدام الانحدار متعدد الحدود، يمكننا الحصول على RMSE أقل قليلاً ومعامل تحديد أعلى، لكن ليس بشكل كبير. نحتاج إلى أخذ ميزات أخرى في الاعتبار! -> يمكنك رؤية أن أدنى أسعار القرع تُلاحظ في مكان ما حول عيد الهالوين. كيف يمكنك تفسير ذلك؟ +> يمكنك رؤية أن أسعار اليقطين الأدنى تُلاحظ في مكان ما حول عيد الهالوين. كيف تفسر ذلك؟ -🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في توقع سعر قرع الفطائر. ربما يمكنك تكرار نفس الإجراء لجميع أنواع القرع، لكن ذلك سيكون شاقًا. دعنا نتعلم الآن كيفية أخذ نوع القرع في الاعتبار في نموذجنا! +🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في التنبؤ بسعر يقطين الفطائر. من المحتمل أنك تستطيع تكرار نفس الإجراء لجميع أنواع اليقطين، لكن ذلك سيكون مملًا. لنتعلم الآن كيفية أخذ نوع اليقطين في الاعتبار في نموذجنا! ## الميزات الفئوية -في العالم المثالي، نريد أن نكون قادرين على التنبؤ بالأسعار لأنواع مختلفة من القرع باستخدام نفس النموذج. ومع ذلك، فإن عمود `Variety` يختلف قليلاً عن الأعمدة مثل `Month`، لأنه يحتوي على قيم غير رقمية. تُسمى هذه الأعمدة **الفئوية**. +في العالم المثالي، نريد أن نتمكن من التنبؤ بالأسعار لأنواع اليقطين المختلفة باستخدام نفس النموذج. ومع ذلك، فإن عمود `Variety` يختلف عن أعمدة مثل `Month` لأنه يحتوي على قيم غير رقمية. تسمى هذه الأعمدة **فئوية**. -[![ML للمبتدئين - التنبؤ بالميزات الفئوية باستخدام الانحدار الخطي](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML للمبتدئين - التنبؤ بالميزات الفئوية باستخدام الانحدار الخطي") +[![ML للمبتدئين - التنبؤات بالفئات باستخدام الانحدار الخطي](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML للمبتدئين - التنبؤات بالفئات باستخدام الانحدار الخطي") -> 🎥 انقر على الصورة أعلاه لمشاهدة نظرة عامة قصيرة على استخدام الميزات الفئوية. +> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير عن استخدام الميزات الفئوية. هنا يمكنك رؤية كيف يعتمد متوسط السعر على النوع: Average price by variety -لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **ترميزه**. هناك عدة طرق يمكننا القيام بها: +لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى صيغة رقمية، أو **ترميزه**. هناك عدة طرق يمكننا القيام بها: -* **ترميز رقمي** بسيط سيبني جدولًا لأنواع مختلفة، ثم يستبدل اسم النوع بمؤشر في ذلك الجدول. هذه ليست أفضل فكرة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للمؤشر، ويضيفها إلى النتيجة مضروبة في بعض المعاملات. في حالتنا، العلاقة بين رقم المؤشر والسعر واضحة غير خطية، حتى لو تأكدنا من أن المؤشرات مرتبة بطريقة معينة. -* **الترميز أحادي التواجد (one-hot encoding)** سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل نوع. يحتوي كل عمود على `1` إذا كان الصف المقابل من ذلك النوع، و `0` خلاف ذلك. هذا يعني أن هناك أربعة معاملات في الانحدار الخطي، واحد لكل نوع قرع، مسؤول عن "السعر الابتدائي" (أو بالأحرى "السعر الإضافي") لذلك النوع المحدد. +* الترميز الرقمي البسيط **numeric encoding** سيبني جدولًا للأنواع المختلفة، ثم يستبدل اسم النوع برقم مؤشر في ذلك الجدول. هذه ليست فكرة جيدة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للمؤشر ويضيفها إلى النتيجة، مضروبًا في معامل ما. في حالتنا، العلاقة بين رقم المؤشر والسعر غير خطية بوضوح، حتى لو تأكدنا من ترتيب المؤشرات بطريقة معينة. +* الترميز باستخدام **One-hot encoding** سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحدة لكل نوع. يحتوي كل عمود على `1` إذا كانت الصف المقابل من النوع المعطى، و `0` خلاف ذلك. هذا يعني أن هناك أربعة معاملات في الانحدار الخطي، واحدة لكل نوع يقطين، مسؤولة عن "سعر البداية" (أو "السعر الإضافي") لذلك النوع المعين. -يُظهر الكود أدناه كيفية ترميز النوع باستخدام الترميز أحادي التواجد: +يُظهر الكود أدناه كيف يمكننا ترميز النوع باستخدام one-hot: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -لتدريب الانحدار الخطي باستخدام النوع المشفر بأحادي التواجد كإدخال، نحتاج فقط إلى تهيئة بيانات `X` و `y` بشكل صحيح: +لتدريب الانحدار الخطي باستخدام النوع المشفر بطريقة one-hot كمدخل، نحتاج فقط إلى تهيئة بيانات `X` و `y` بشكل صحيح: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -بقية الكود هو نفسه الذي استخدمناه أعلاه لتدريب الانحدار الخطي. إذا جربته، سترى أن متوسط مربع الخطأ مماثل تقريبًا، لكننا نحصل على معامل تحديد أعلى بكثير (~77%). للحصول على توقعات أكثر دقة، يمكننا أخذ المزيد من الميزات الفئوية والعوامل الرقمية في الاعتبار، مثل `Month` أو `DayOfYear`. للحصول على مصفوفة واسعة من الميزات، يمكننا استخدام `join`: +بقية الكود هي نفسها التي استخدمناها أعلاه لتدريب الانحدار الخطي. إذا جربتها، سترى أن متوسط الخطأ المربع تقريبًا هو نفسه، لكننا نحصل على معامل تحديد أعلى بكثير (~77%). للحصول على تنبؤات أكثر دقة، يمكننا أخذ ميزات فئوية أخرى وكذلك ميزات رقمية مثل `Month` أو `DayOfYear` في الاعتبار. للحصول على مصفوفة واحدة كبيرة من الميزات، يمكننا استخدام `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -هنا نأخذ أيضًا في الاعتبار `City` ونوع `Package`، والذي يعطينا MSE=2.84 (10%)، ومعامل تحديد 0.94! +هنا نأخذ أيضًا في الاعتبار `City` ونوع `Package`، مما يعطينا RMSE بقيمة 2.84 (10.5%)، ومعامل تحديد 0.94! -## تجميع كل شيء معًا +## جمع كل شيء معًا -لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (المشفرة أحادي التواجد + الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. هنا الكود الكامل لراحتك: +لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (الميزات الفئوية المرمّزة + الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. إليك الكود الكامل لراحتك: ```python # إعداد بيانات التدريب @@ -340,47 +362,47 @@ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# توقع النتائج لبيانات الاختبار +# التنبؤ بالنتائج لبيانات الاختبار pred = pipeline.predict(X_test) -# حساب متوسط مربع الخطأ والتحديد -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# حساب الجذر التربيعي لمتوسط الخطأ والتحديد +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -يجب أن يعطينا هذا أفضل معامل تحديد يقارب 97%، و MSE=2.23 (~8% خطأ في التنبؤ). +يجب أن يعطينا هذا أفضل معامل تحديد بنحو 97%، و RMSE=2.23 (~8% خطأ التنبؤ). -| النموذج | MSE | معامل التحديد | +| النموذج | RMSE | معامل التحديد | |-------|-----|---------------| | `DayOfYear` خطي | 2.77 (17.2%) | 0.07 | | `DayOfYear` متعدد الحدود | 2.73 (17.0%) | 0.08 | | `Variety` خطي | 5.24 (19.7%) | 0.77 | -| كل الميزات خطي | 2.84 (10.5%) | 0.94 | -| كل الميزات متعدد الحدود | 2.23 (8.25%) | 0.97 | +| جميع الميزات خطي | 2.84 (10.5%) | 0.94 | +| جميع الميزات متعدد الحدود | 2.23 (8.25%) | 0.97 | -🏆 أحسنت! لقد أنشأت أربعة نماذج انحدار في درس واحد، وحسنت جودة النموذج إلى 97%. في القسم النهائي عن الانحدار، ستتعلم عن الانحدار اللوجستي لتحديد الفئات. +🏆 عمل رائع! أنشأت أربعة نماذج انحدار في درس واحد، وحسّنت جودة النموذج إلى 97%. في القسم النهائي عن الانحدار، ستتعلم عن الانحدار اللوجستي لتحديد الفئات. --- ## 🚀التحدي -اختبر عدة متغيرات مختلفة في هذا الدفتر لترى كيف تتناسب الارتباطات مع دقة النموذج. +اختبر عدة متغيرات مختلفة في هذا الدفتر لترى كيف يتناسب الارتباط مع دقة النموذج. ## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/) ## مراجعة ودراسة ذاتية -في هذا الدرس تعلمنا عن الانحدار الخطي. هناك أنواع أخرى مهمة من الانحدار. اقرأ عن تقنيات Stepwise، Ridge و Lasso و Elasticnet. دورة جيدة للدراسة والتعلم أكثر هي دورة [Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +في هذا الدرس تعرفنا على الانحدار الخطي. هناك أنواع أخرى مهمة من الانحدار. اقرأ عن تقنيات الخطوي، وريج، ولاسو، وإيلاستيك نت. دورة جيدة للدراسة والتعلم أكثر هي [دورة التعلم الإحصائي من ستانفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## التعيين +## الواجب [إنشاء نموذج](assignment.md) --- -**تنويه**: -تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار النسخة الأصلية من المستند بلغتها الأصلية المصدر الأساسي والموثوق. للحصول على معلومات هامة، يُنصح بالترجمة الاحترافية البشرية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة. +**تنويه**: +تمت ترجمة هذا الوثيقة باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر المعتمد. بالنسبة للمعلومات الهامة، يُنصح بالاعتماد على الترجمة المهنية البشرية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb index 5afde9d1a2..a38a2e7492 100644 --- a/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## الانحدار الخطي والانحدار متعدد الحدود لتسعير القرع - الدرس الثالث\n", + "## الانحدار الخطي والانحدار متعدد الحدود لتسعير اليقطين - الدرس 3\n", "\n", - "قم بتحميل المكتبات والبيانات المطلوبة. قم بتحويل البيانات إلى إطار بيانات يحتوي على جزء من البيانات:\n", + "قم بتحميل المكتبات المطلوبة ومجموعة البيانات. حوّل البيانات إلى إطار بيانات يحتوي على مجموعة فرعية من البيانات:\n", "\n", - "- احصل فقط على القرع الذي تم تسعيره بوحدة البوشل\n", - "- قم بتحويل التاريخ إلى شهر\n", - "- احسب السعر ليكون متوسط الأسعار المرتفعة والمنخفضة\n", - "- قم بتحويل السعر ليعكس التسعير بوحدة كمية البوشل\n" + "- جلب اليقطين المسعر فقط حسب البوشل\n", + "- تحويل التاريخ إلى شهر\n", + "- حساب السعر ليكون متوسط الأسعار العالية والمنخفضة\n", + "- تحويل السعر ليعكس التسعير حسب كمية البوشل\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "تذكرنا مخططات الانتشار بأن لدينا بيانات الأشهر فقط من أغسطس حتى ديسمبر. من المحتمل أننا بحاجة إلى المزيد من البيانات لنتمكن من استخلاص استنتاجات بطريقة خطية.\n" + "تذكرنا مخطط النقاط بأن لدينا بيانات فقط من أغسطس حتى ديسمبر. ربما نحتاج إلى المزيد من البيانات لنتمكن من استخلاص استنتاجات بطريقة خطية.\n" ] }, { @@ -448,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "لنرَ إذا كان هناك ارتباط:\n" + "لنرَ إن كان هناك ارتباط:\n" ] }, { @@ -474,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "يبدو أن الارتباط صغير جدًا، ولكن هناك علاقة أخرى أكثر أهمية - لأن نقاط الأسعار في الرسم البياني أعلاه تبدو وكأنها تحتوي على عدة مجموعات مميزة. لنقم بإنشاء رسم بياني يُظهر أنواع القرع المختلفة:\n" + "يبدو أن الارتباط صغير جدًا، لكن هناك علاقة أخرى أكثر أهمية - لأن نقاط السعر في الرسم البياني أعلاه تبدو وكأنها تحتوي على عدة تجمعات مميزة. لنرسم رسمًا بيانيًا سيُظهر أنواع اليقطين المختلفة:\n" ] }, { @@ -537,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "في الوقت الحالي، دعونا نركز فقط على نوع واحد - **نوع الفطيرة**.\n" + ] }, { "cell_type": "code", @@ -586,7 +588,7 @@ "source": [ "### الانحدار الخطي\n", "\n", - "سنستخدم مكتبة Scikit Learn لتدريب نموذج الانحدار الخطي:\n" + "سوف نستخدم Scikit Learn لتدريب نموذج الانحدار الخطي:\n" ] }, { @@ -720,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### الانحدار متعدد الحدود\n", + "### الانحدار كثير الحدود\n", "\n", - "في بعض الأحيان تكون العلاقة بين الميزات والنتائج غير خطية بطبيعتها. على سبيل المثال، قد تكون أسعار القرع مرتفعة في الشتاء (الشهور=1،2)، ثم تنخفض خلال الصيف (الشهور=5-7)، ثم ترتفع مرة أخرى. الانحدار الخطي غير قادر على تحديد هذه العلاقة بدقة.\n", + "أحيانًا تكون العلاقة بين الميزات والنتائج غير خطية بطبيعتها. على سبيل المثال، قد تكون أسعار القرع مرتفعة في الشتاء (الأشهر=1، 2)، ثم تنخفض خلال الصيف (الأشهر=5-7)، ثم ترتفع مرة أخرى. الانحدار الخطي غير قادر على تحديد هذه العلاقة بدقة.\n", "\n", - "في هذه الحالة، يمكننا التفكير في إضافة ميزات إضافية. الطريقة البسيطة هي استخدام الحدوديات من الميزات المدخلة، مما يؤدي إلى **الانحدار متعدد الحدود**. في مكتبة Scikit Learn، يمكننا حساب الميزات متعددة الحدود تلقائيًا باستخدام الأنابيب:\n" + "في هذه الحالة، قد نحتاج إلى إضافة ميزات إضافية. الطريقة البسيطة هي استخدام كثيرات الحدود من الميزات المدخلة، مما يؤدي إلى **الانحدار كثير الحدود**. في مكتبة Scikit Learn، يمكننا حساب ميزات كثير الحدود تلقائيًا باستخدام خطوط الأنابيب: \n" ] }, { @@ -779,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### أنواع الترميز\n", + "### أنواع التشفير\n", "\n", - "في العالم المثالي، نريد أن نتمكن من التنبؤ بأسعار أنواع مختلفة من القرع باستخدام نفس النموذج. لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **ترميزه**. هناك عدة طرق يمكننا القيام بذلك:\n", + "في العالم المثالي، نريد أن نتمكن من التنبؤ بأسعار أصناف اليقطين المختلفة باستخدام نفس النموذج. لأخذ الصنف في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **تشفيره**. هناك عدة طرق يمكننا القيام بذلك:\n", "\n", - "* ترميز رقمي بسيط يقوم بإنشاء جدول لأنواع مختلفة، ثم يستبدل اسم النوع بمؤشر في ذلك الجدول. هذه ليست أفضل فكرة بالنسبة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية للمؤشر في الاعتبار، والقيمة الرقمية من المحتمل ألا تكون مرتبطة عدديًا بالسعر.\n", - "* الترميز الأحادي (One-hot encoding)، الذي سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل نوع، يحتوي على 1 إذا كانت الصفوف المقابلة من النوع المعطى، و0 خلاف ذلك.\n", + "* التشفير الرقمي البسيط الذي سيبني جدولاً للأصناف المختلفة، ثم يستبدل اسم الصنف بفهرس في ذلك الجدول. هذه ليست الفكرة الأفضل للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية للفهرس في الاعتبار، والقيمة الرقمية من المحتمل ألا ترتبط رقمياً بالسعر.\n", + "* التشفير بنظام الواحد الحار \"one-hot encoding\"، الذي سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل صنف، تحتوي على 1 إذا كان الصف المقابل من الصنف المعطى، و0 خلاف ذلك.\n", "\n", - "الكود أدناه يوضح كيف يمكننا ترميز النوع باستخدام الترميز الأحادي:\n" + "يعرض الكود أدناه كيف يمكننا تشفير صنف بنظام الواحد الحار:\n" ] }, { @@ -942,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### الانحدار الخطي على التنوع\n", + "### الانحدار الخطي على الأصناف\n", "\n", - "سنستخدم الآن نفس الكود المذكور أعلاه، ولكن بدلاً من `DayOfYear` سنستخدم التنوع المشفر بطريقة الـ one-hot كمدخل:\n" + "سنستخدم الآن نفس الكود كما في الأعلى، ولكن بدلاً من `DayOfYear` سنستخدم صنفنا المشفر بطريقة one-hot كمدخل:\n" ] }, { @@ -992,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "يمكننا أيضًا تجربة استخدام ميزات أخرى بنفس الطريقة، ودمجها مع الميزات العددية، مثل `Month` أو `DayOfYear`:\n" + "يمكننا أيضًا تجربة استخدام ميزات أخرى بنفس الطريقة، ودمجها مع الميزات الرقمية، مثل `Month` أو `DayOfYear`:\n" ] }, { @@ -1025,7 +1030,7 @@ "source": [ "### الانحدار متعدد الحدود\n", "\n", - "يمكن استخدام الانحدار متعدد الحدود أيضًا مع الميزات الفئوية التي تم ترميزها بطريقة التشفير الواحد-الساخن. سيكون الكود المستخدم لتدريب الانحدار متعدد الحدود مشابهًا بشكل أساسي لما رأيناه أعلاه.\n" + "يمكن أيضًا استخدام الانحدار متعدد الحدود مع الميزات التصنيفية التي تم ترميزها بطريقة واحدة فقط (one-hot-encoded). سيكون رمز تدريب الانحدار متعدد الحدود في الأساس هو نفسه الذي رأيناه أعلاه.\n" ] }, { @@ -1072,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**إخلاء المسؤولية**: \nتم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.\n" + "---\n\n\n**إخلاء المسؤولية**: \nتمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى جاهدين لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق به. للمعلومات الحساسة، يُنصح بالترجمة المهنية البشرية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.\n\n" ] } ], @@ -1102,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T14:40:56+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ar" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/de/.co-op-translator.json b/translations/de/.co-op-translator.json index 21076e42f5..c21104e400 100644 --- a/translations/de/.co-op-translator.json +++ b/translations/de/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "de" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-04T21:59:17+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:11:39+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "de" }, @@ -90,8 +90,8 @@ "language_code": "de" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T15:54:04+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:11:15+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "de" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "de" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:09:25+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "de" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T21:51:09+00:00", diff --git a/translations/de/1-Introduction/4-techniques-of-ML/README.md b/translations/de/1-Introduction/4-techniques-of-ML/README.md index a14241087f..9f81ba3469 100644 --- a/translations/de/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/de/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Techniken des maschinellen Lernens -Der Prozess des Erstellens, Nutzens und Wartens von Modellen des maschinellen Lernens sowie der Daten, die sie verwenden, unterscheidet sich stark von vielen anderen Entwicklungs-Workflows. In dieser Lektion werden wir den Prozess entmystifizieren und die wichtigsten Techniken skizzieren, die Sie kennen müssen. Sie werden: +Der Prozess des Erstellens, Verwendens und Wartens von Modellen des maschinellen Lernens und deren genutzten Daten ist ein ganz anderer Prozess als viele andere Entwicklungsworkflows. In dieser Lektion werden wir den Prozess entmystifizieren und die wichtigsten Techniken skizzieren, die Sie kennen müssen. Sie werden: -- Die grundlegenden Prozesse des maschinellen Lernens auf hoher Ebene verstehen. -- Grundkonzepte wie "Modelle", "Vorhersagen" und "Trainingsdaten" erkunden. +- Die Prozesse, die dem maschinellen Lernen zugrunde liegen, auf hohem Niveau verstehen. +- Grundkonzepte wie „Modelle“, „Vorhersagen“ und „Trainingsdaten“ erkunden. -## [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/) +## [Vorlesungsquiz](https://ff-quizzes.netlify.app/en/ml/) -[![ML für Anfänger - Techniken des maschinellen Lernens](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML für Anfänger - Techniken des maschinellen Lernens") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Klicken Sie auf das Bild oben, um ein kurzes Video zu dieser Lektion anzusehen. +> 🎥 Klicken Sie auf das Bild oben für ein kurzes Video, das durch diese Lektion führt. ## Einführung -Auf hoher Ebene besteht die Kunst, Prozesse des maschinellen Lernens (ML) zu erstellen, aus mehreren Schritten: +Auf hohem Niveau besteht das Handwerk der Erstellung von Prozessen des maschinellen Lernens (ML) aus mehreren Schritten: -1. **Formulieren Sie die Frage.** Die meisten ML-Prozesse beginnen mit einer Frage, die nicht durch ein einfaches bedingtes Programm oder eine regelbasierte Engine beantwortet werden kann. Diese Fragen drehen sich oft um Vorhersagen, die auf einer Sammlung von Daten basieren. -2. **Sammeln und vorbereiten von Daten.** Um Ihre Frage beantworten zu können, benötigen Sie Daten. Die Qualität und manchmal auch die Menge Ihrer Daten bestimmen, wie gut Sie Ihre ursprüngliche Frage beantworten können. Die Visualisierung von Daten ist ein wichtiger Aspekt dieser Phase. Diese Phase umfasst auch das Aufteilen der Daten in eine Trainings- und Testgruppe, um ein Modell zu erstellen. -3. **Wählen Sie eine Trainingsmethode.** Abhängig von Ihrer Frage und der Art Ihrer Daten müssen Sie entscheiden, wie Sie ein Modell trainieren möchten, um Ihre Daten bestmöglich zu repräsentieren und genaue Vorhersagen zu treffen. Dieser Teil des ML-Prozesses erfordert spezifisches Fachwissen und oft eine beträchtliche Menge an Experimenten. -4. **Trainieren Sie das Modell.** Mithilfe Ihrer Trainingsdaten verwenden Sie verschiedene Algorithmen, um ein Modell zu trainieren, das Muster in den Daten erkennt. Das Modell kann interne Gewichte nutzen, die angepasst werden können, um bestimmte Teile der Daten gegenüber anderen zu bevorzugen, um ein besseres Modell zu erstellen. -5. **Bewerten Sie das Modell.** Sie verwenden bisher unbekannte Daten (Ihre Testdaten) aus Ihrem gesammelten Satz, um zu sehen, wie das Modell abschneidet. -6. **Parameteranpassung.** Basierend auf der Leistung Ihres Modells können Sie den Prozess mit unterschiedlichen Parametern oder Variablen, die das Verhalten der Algorithmen steuern, wiederholen. -7. **Vorhersagen.** Verwenden Sie neue Eingaben, um die Genauigkeit Ihres Modells zu testen. +1. **Die Frage festlegen.** Die meisten ML-Prozesse beginnen mit einer Frage, die nicht durch ein einfaches bedingtes Programm oder regelbasiertes System beantwortet werden kann. Diese Fragen drehen sich oft um Vorhersagen basierend auf einer Datensammlung. +2. **Daten sammeln und vorbereiten.** Um Ihre Frage beantworten zu können, benötigen Sie Daten. Die Qualität und manchmal auch die Menge Ihrer Daten bestimmt, wie gut Sie Ihre ursprüngliche Frage beantworten können. Die Visualisierung der Daten ist ein wichtiger Aspekt dieser Phase. Diese Phase umfasst auch die Aufteilung der Daten in Trainings- und Testgruppen zum Aufbau eines Modells. +3. **Eine Trainingsmethode wählen.** Abhängig von Ihrer Frage und der Natur Ihrer Daten müssen Sie entscheiden, wie Sie ein Modell trainieren möchten, um Ihre Daten am besten widerzuspiegeln und genaue Vorhersagen zu treffen. Dies ist der Teil Ihres ML-Prozesses, der spezifische Expertise und oft eine beträchtliche Menge an Experimenten erfordert. +4. **Das Modell trainieren.** Mithilfe Ihrer Trainingsdaten verwenden Sie verschiedene Algorithmen, um ein Modell zu trainieren, das Muster in den Daten erkennt. Das Modell kann interne Gewichte verwenden, die angepasst werden können, um bestimmten Teilen der Daten Vorrang zu geben und so ein besseres Modell zu erstellen. +5. **Das Modell bewerten.** Sie verwenden zuvor nie gesehene Daten (Ihre Testdaten) aus Ihrem gesammelten Datensatz, um die Leistung des Modells zu überprüfen. +6. **Parameteranpassung.** Basierend auf der Leistung Ihres Modells können Sie den Prozess wiederholen und verschiedene Parameter oder Variablen verwenden, die das Verhalten der zum Training verwendeten Algorithmen steuern. +7. **Vorhersagen treffen.** Verwenden Sie neue Eingaben, um die Genauigkeit Ihres Modells zu testen. -## Welche Frage soll gestellt werden? +## Welche Frage sollte man stellen -Computer sind besonders gut darin, versteckte Muster in Daten zu entdecken. Diese Fähigkeit ist sehr hilfreich für Forscher, die Fragen zu einem bestimmten Bereich haben, die nicht leicht durch die Erstellung einer bedingungsbasierten Regel-Engine beantwortet werden können. Bei einer versicherungsmathematischen Aufgabe könnte ein Datenwissenschaftler beispielsweise handgefertigte Regeln zur Sterblichkeit von Rauchern im Vergleich zu Nichtrauchern erstellen. +Computer sind besonders gut darin, verborgene Muster in Daten zu entdecken. Diese Nützlichkeit ist sehr hilfreich für Forscher, die Fragen zu einem bestimmten Gebiet haben, die nicht leicht durch ein regelbasiertes System beantwortet werden können. Bei einer versicherungsmathematischen Aufgabe könnte ein Datenwissenschaftler zum Beispiel handgefertigte Regeln zur Mortalität von Rauchern versus Nichtrauchern erstellen. -Wenn jedoch viele andere Variablen in die Gleichung einfließen, könnte sich ein ML-Modell als effizienter erweisen, um zukünftige Sterblichkeitsraten basierend auf vergangenen Gesundheitsdaten vorherzusagen. Ein fröhlicheres Beispiel könnte die Wettervorhersage für den Monat April an einem bestimmten Ort sein, basierend auf Daten wie Breitengrad, Längengrad, Klimawandel, Nähe zum Ozean, Jetstream-Mustern und mehr. +Wenn jedoch viele andere Variablen mit einbezogen werden, könnte sich ein ML-Modell als effizienter erweisen, um zukünftige Sterblichkeitsraten basierend auf der bisherigen Gesundheitsgeschichte vorherzusagen. Ein fröhlicheres Beispiel könnte das Erstellen von Wettervorhersagen für den Monat April an einem bestimmten Ort sein, basierend auf Daten, die Breite, Länge, Klimawandel, Nähe zum Ozean, Muster des Jetstreams und mehr enthalten. -✅ Diese [Präsentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) zu Wettermodellen bietet eine historische Perspektive zur Nutzung von ML in der Wetteranalyse. +✅ Diese [Präsentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) über Wettermodelle bietet eine historische Perspektive zur Verwendung von ML in der Wetteranalyse. -## Aufgaben vor dem Modellaufbau +## Aufgaben vor dem Aufbau -Bevor Sie mit dem Aufbau Ihres Modells beginnen, gibt es mehrere Aufgaben, die Sie erledigen müssen. Um Ihre Frage zu testen und eine Hypothese basierend auf den Vorhersagen eines Modells zu formulieren, müssen Sie mehrere Elemente identifizieren und konfigurieren. +Bevor Sie mit dem Aufbau Ihres Modells beginnen, müssen Sie mehrere Aufgaben erledigen. Um Ihre Frage zu testen und eine Hypothese auf Basis der Vorhersagen eines Modells zu bilden, müssen Sie mehrere Elemente identifizieren und konfigurieren. ### Daten -Um Ihre Frage mit einer gewissen Sicherheit beantworten zu können, benötigen Sie eine ausreichende Menge an Daten des richtigen Typs. Es gibt zwei Dinge, die Sie an diesem Punkt tun müssen: +Um Ihre Frage mit einer gewissen Sicherheit beantworten zu können, benötigen Sie eine gute Menge an Daten vom richtigen Typ. An diesem Punkt müssen Sie zwei Dinge tun: -- **Daten sammeln.** Denken Sie an die vorherige Lektion zur Fairness in der Datenanalyse und sammeln Sie Ihre Daten sorgfältig. Achten Sie auf die Quellen dieser Daten, mögliche inhärente Verzerrungen und dokumentieren Sie deren Herkunft. -- **Daten vorbereiten.** Es gibt mehrere Schritte im Datenvorbereitungsprozess. Sie müssen möglicherweise Daten zusammenstellen und normalisieren, wenn sie aus verschiedenen Quellen stammen. Sie können die Qualität und Quantität der Daten durch verschiedene Methoden verbessern, wie z. B. das Konvertieren von Zeichenfolgen in Zahlen (wie wir es in [Clustering](../../5-Clustering/1-Visualize/README.md) tun). Sie könnten auch neue Daten basierend auf den ursprünglichen generieren (wie wir es in [Klassifikation](../../4-Classification/1-Introduction/README.md) tun). Sie können die Daten bereinigen und bearbeiten (wie wir es vor der [Web-App](../../3-Web-App/README.md)-Lektion tun werden). Schließlich müssen Sie die Daten möglicherweise auch zufällig anordnen und mischen, je nach Ihren Trainingstechniken. +- **Daten sammeln.** Unter Berücksichtigung der vorherigen Lektion zur Fairness in der Datenanalyse sammeln Sie Ihre Daten sorgfältig. Seien Sie sich der Herkunft dieser Daten bewusst, etwaiger inhärenter Verzerrungen und dokumentieren Sie deren Ursprung. +- **Daten vorbereiten.** Im Datenvorbereitungsprozess sind mehrere Schritte erforderlich. Möglicherweise müssen Sie Daten aus verschiedenen Quellen sammeln und normalisieren. Sie können die Qualität und Menge der Daten durch verschiedene Methoden verbessern, z. B. durch Umwandlung von Zeichenketten in Zahlen (wie wir es in [Clustering](../../5-Clustering/1-Visualize/README.md) tun). Sie können auch neue Daten basierend auf den Originaldaten erzeugen (wie wir es in [Classification](../../4-Classification/1-Introduction/README.md) tun). Sie können die Daten säubern und bearbeiten (wie wir es vor der [Web-App](../../3-Web-App/README.md) Lektion tun). Schließlich müssen Sie sie je nach Trainingsmethode möglicherweise auch zufällig mischen und durchmischen. -✅ Nachdem Sie Ihre Daten gesammelt und verarbeitet haben, nehmen Sie sich einen Moment Zeit, um zu prüfen, ob deren Struktur es Ihnen ermöglicht, Ihre beabsichtigte Frage zu beantworten. Es könnte sein, dass die Daten für Ihre Aufgabe nicht gut geeignet sind, wie wir in unseren [Clustering](../../5-Clustering/1-Visualize/README.md)-Lektionen herausfinden! +✅ Nachdem Sie Ihre Daten gesammelt und verarbeitet haben, nehmen Sie sich einen Moment Zeit, um zu sehen, ob deren Form es Ihnen erlaubt, Ihre beabsichtigte Frage zu bearbeiten. Es kann sein, dass die Daten für Ihre Aufgabe nicht gut geeignet sind, wie wir in unseren [Clustering](../../5-Clustering/1-Visualize/README.md) Lektionen entdecken! ### Merkmale und Ziel -Ein [Merkmal](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ist eine messbare Eigenschaft Ihrer Daten. In vielen Datensätzen wird es als Spaltenüberschrift wie 'Datum', 'Größe' oder 'Farbe' ausgedrückt. Ihre Merkmalsvariable, die in der Regel als `X` im Code dargestellt wird, repräsentiert die Eingabevariable, die verwendet wird, um das Modell zu trainieren. +Ein [Merkmal](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ist eine messbare Eigenschaft Ihrer Daten. In vielen Datensätzen wird es als Spaltenüberschrift wie „Datum“, „Größe“ oder „Farbe“ dargestellt. Ihre Merkmalsvariable, meist als `X` im Code dargestellt, repräsentiert die Eingangsvariable, die zum Trainieren eines Modells verwendet wird. -Ein Ziel ist das, was Sie vorhersagen möchten. Das Ziel, in der Regel als `y` im Code dargestellt, repräsentiert die Antwort auf die Frage, die Sie an Ihre Daten stellen möchten: Im Dezember, welche **Farbe** haben die günstigsten Kürbisse? In San Francisco, welche Stadtteile haben die besten Immobilien-**preise**? Manchmal wird das Ziel auch als Label-Attribut bezeichnet. +Ein Ziel ist das, was Sie vorhersagen möchten. Das Ziel, meist als `y` im Code dargestellt, repräsentiert die Antwort auf die Frage, die Sie Ihren Daten stellen möchten: Im Dezember, welche **Farbe** werden Kürbisse am günstigsten haben? In San Francisco, welche Viertel werden den besten Immobilien-**Preis** haben? Manchmal wird das Ziel auch als Label-Attribut bezeichnet. ### Auswahl Ihrer Merkmalsvariablen -🎓 **Merkmalsauswahl und Merkmalsextraktion** Wie wissen Sie, welche Variable Sie beim Aufbau eines Modells auswählen sollen? Sie werden wahrscheinlich einen Prozess der Merkmalsauswahl oder Merkmalsextraktion durchlaufen, um die richtigen Variablen für das leistungsfähigste Modell auszuwählen. Sie sind jedoch nicht dasselbe: "Die Merkmalsextraktion erstellt neue Merkmale aus Funktionen der ursprünglichen Merkmale, während die Merkmalsauswahl eine Teilmenge der Merkmale zurückgibt." ([Quelle](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Merkmalsauswahl und Merkmalsextraktion** Wie wissen Sie, welche Variable Sie beim Aufbau eines Modells wählen sollen? Wahrscheinlich durchlaufen Sie einen Prozess der Merkmalsauswahl oder Merkmalsextraktion, um die richtigen Variablen für das leistungsfähigste Modell auszuwählen. Sie sind jedoch nicht dasselbe: „Merkmalsextraktion erstellt neue Merkmale aus Funktionen der ursprünglichen Merkmale, während Merkmalsauswahl eine Teilmenge der Merkmale zurückgibt.“ ([Quelle](https://wikipedia.org/wiki/Feature_selection)) ### Visualisieren Sie Ihre Daten -Ein wichtiger Aspekt im Werkzeugkasten eines Datenwissenschaftlers ist die Fähigkeit, Daten mithilfe mehrerer hervorragender Bibliotheken wie Seaborn oder MatPlotLib zu visualisieren. Die visuelle Darstellung Ihrer Daten könnte es Ihnen ermöglichen, versteckte Korrelationen zu entdecken, die Sie nutzen können. Ihre Visualisierungen könnten Ihnen auch helfen, Verzerrungen oder unausgewogene Daten aufzudecken (wie wir in [Klassifikation](../../4-Classification/2-Classifiers-1/README.md) herausfinden). +Ein wichtiger Bestandteil des Werkzeugsatzes eines Datenwissenschaftlers ist die Fähigkeit, Daten mit mehreren exzellenten Bibliotheken wie Seaborn oder MatPlotLib zu visualisieren. Die visuelle Darstellung Ihrer Daten kann Ihnen helfen, verborgene Korrelationen zu entdecken, die Sie nutzen können. Ihre Visualisierungen können Ihnen auch helfen, Verzerrungen oder unausgewogene Daten zu erkennen (wie wir in [Classification](../../4-Classification/2-Classifiers-1/README.md) entdecken). -### Teilen Sie Ihren Datensatz +### Teilen Sie Ihren Datensatz auf -Vor dem Training müssen Sie Ihren Datensatz in zwei oder mehr Teile ungleicher Größe aufteilen, die die Daten dennoch gut repräsentieren. +Vor dem Training müssen Sie Ihren Datensatz in zwei oder mehr unterschiedlich große Teile aufteilen, die dennoch die Daten gut repräsentieren. -- **Training.** Dieser Teil des Datensatzes wird an Ihr Modell angepasst, um es zu trainieren. Dieser Satz macht den Großteil des ursprünglichen Datensatzes aus. -- **Testen.** Ein Testdatensatz ist eine unabhängige Gruppe von Daten, die oft aus den ursprünglichen Daten entnommen wird und mit der Sie die Leistung des erstellten Modells überprüfen. -- **Validieren.** Ein Validierungssatz ist eine kleinere unabhängige Gruppe von Beispielen, die Sie verwenden, um die Hyperparameter oder die Architektur des Modells zu optimieren, um das Modell zu verbessern. Abhängig von der Größe Ihrer Daten und der Frage, die Sie stellen, müssen Sie diesen dritten Satz möglicherweise nicht erstellen (wie wir in [Zeitreihenprognosen](../../7-TimeSeries/1-Introduction/README.md) feststellen). +- **Training.** Dieser Teil des Datensatzes wird verwendet, um Ihr Modell zu trainieren. Dieser Satz macht den Großteil des ursprünglichen Datensatzes aus. +- **Testen.** Ein Testdatensatz ist eine unabhängige Datenmenge, oft aus den Originaldaten gewonnen, die Sie verwenden, um die Leistung des gebauten Modells zu bestätigen. +- **Validierung.** Ein Validierungssatz ist eine kleinere unabhängige Gruppe von Beispielen, die Sie zur Feinabstimmung der Hyperparameter oder Architektur des Modells nutzen, um das Modell zu verbessern. Je nach Größe Ihrer Daten und der gestellten Frage benötigen Sie diesen dritten Satz möglicherweise nicht (wie wir in [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) anmerken). -## Ein Modell erstellen +## Aufbau eines Modells -Mithilfe Ihrer Trainingsdaten ist es Ihr Ziel, ein Modell oder eine statistische Darstellung Ihrer Daten zu erstellen, indem Sie verschiedene Algorithmen verwenden, um es zu **trainieren**. Das Training eines Modells setzt es Daten aus und ermöglicht es ihm, Annahmen über wahrgenommene Muster zu treffen, diese zu validieren und anzunehmen oder abzulehnen. +Mit Ihren Trainingsdaten ist es Ihr Ziel, ein Modell oder eine statistische Darstellung Ihrer Daten durch verschiedene Algorithmen zu **trainieren**. Das Trainieren eines Modells setzt es den Daten aus und ermöglicht ihm, Annahmen über wahrgenommene Muster zu treffen, diese zu validieren und anzunehmen oder abzulehnen. -### Entscheiden Sie sich für eine Trainingsmethode +### Wählen Sie eine Trainingsmethode -Abhängig von Ihrer Frage und der Art Ihrer Daten wählen Sie eine Methode, um sie zu trainieren. Wenn Sie die [Dokumentation von Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - die wir in diesem Kurs verwenden - durchgehen, können Sie viele Möglichkeiten erkunden, ein Modell zu trainieren. Abhängig von Ihrer Erfahrung müssen Sie möglicherweise mehrere Methoden ausprobieren, um das beste Modell zu erstellen. Sie werden wahrscheinlich einen Prozess durchlaufen, bei dem Datenwissenschaftler die Leistung eines Modells bewerten, indem sie ihm unbekannte Daten zuführen, die Genauigkeit, Verzerrungen und andere qualitätsmindernde Probleme überprüfen und die am besten geeignete Trainingsmethode für die jeweilige Aufgabe auswählen. +Je nach Ihrer Frage und der Natur Ihrer Daten wählen Sie eine Methode, um das Modell zu trainieren. Wenn Sie durch die [Dokumentation von Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - die wir in diesem Kurs verwenden - gehen, finden Sie viele Möglichkeiten, ein Modell zu trainieren. Je nach Ihrer Erfahrung müssen Sie möglicherweise mehrere verschiedene Methoden ausprobieren, um das beste Modell zu erstellen. Häufig durchlaufen Datenwissenschaftler einen Prozess, bei dem sie die Leistung eines Modells durch die Überprüfung von zuvor unbekannten Daten, die auf Genauigkeit, Verzerrung und andere Qualitätsprobleme geprüft werden, evaluieren und die passendste Trainingsmethode für die jeweilige Aufgabe auswählen. -### Ein Modell trainieren +### Trainieren Sie ein Modell -Mit Ihren Trainingsdaten sind Sie bereit, sie zu "fitten", um ein Modell zu erstellen. Sie werden feststellen, dass Sie in vielen ML-Bibliotheken den Code 'model.fit' finden - zu diesem Zeitpunkt senden Sie Ihre Merkmalsvariable als Array von Werten (in der Regel 'X') und eine Zielvariable (in der Regel 'y') ein. +Mit Ihren Trainingsdaten sind Sie bereit, es zu „fitten“, um ein Modell zu erstellen. Sie werden feststellen, dass Sie in vielen ML-Bibliotheken den Code `model.fit` sehen – zu diesem Zeitpunkt übergeben Sie Ihre Merkmalsvariable als Array von Werten (normalerweise 'X') und eine Zielvariable (normalerweise 'y'). -### Das Modell bewerten +### Bewerten Sie das Modell -Sobald der Trainingsprozess abgeschlossen ist (es kann viele Iterationen oder 'Epochen' dauern, um ein großes Modell zu trainieren), können Sie die Qualität des Modells bewerten, indem Sie Testdaten verwenden, um seine Leistung zu messen. Diese Daten sind ein Teil der ursprünglichen Daten, die das Modell zuvor nicht analysiert hat. Sie können eine Tabelle mit Metriken zur Qualität Ihres Modells ausgeben. +Sobald der Trainingsprozess abgeschlossen ist (es können viele Iterationen oder „Epochen“ nötig sein, um ein großes Modell zu trainieren), können Sie die Qualität des Modells anhand von Testdaten einschätzen. Diese Daten sind ein Teil des ursprünglichen Datensatzes, den das Modell noch nicht analysiert hat. Sie können eine Tabelle mit Metriken zur Qualität Ihres Modells ausgeben. 🎓 **Modellanpassung** -Im Kontext des maschinellen Lernens bezieht sich die Modellanpassung auf die Genauigkeit der zugrunde liegenden Funktion des Modells, während es versucht, Daten zu analysieren, mit denen es nicht vertraut ist. +Im Kontext des maschinellen Lernens bezieht sich Modellanpassung auf die Genauigkeit der zugrundeliegenden Funktion des Modells, während es versucht, Daten zu analysieren, mit denen es nicht vertraut ist. -🎓 **Underfitting** und **Overfitting** sind häufige Probleme, die die Qualität des Modells beeinträchtigen, da das Modell entweder nicht gut genug oder zu gut passt. Dies führt dazu, dass das Modell Vorhersagen entweder zu eng oder zu locker an seine Trainingsdaten anpasst. Ein überangepasstes Modell sagt Trainingsdaten zu gut voraus, da es die Details und das Rauschen der Daten zu gut gelernt hat. Ein unterangepasstes Modell ist nicht genau, da es weder seine Trainingsdaten noch Daten, die es noch nicht "gesehen" hat, genau analysieren kann. +🎓 **Underfitting** und **Overfitting** sind häufige Probleme, die die Qualität des Modells beeinträchtigen, wenn das Modell entweder nicht gut genug oder zu gut anpasst. Dies führt dazu, dass das Modell entweder zu genau oder zu lose mit seinen Trainingsdaten übereinstimmt. Ein überangepasstes Modell sagt die Trainingsdaten zu gut vorher, da es die Details und das Rauschen der Daten zu genau gelernt hat. Ein unterangepasstes Modell ist ungenau, da es weder seine Trainingsdaten noch neue Daten, die es noch nicht „gesehen“ hat, genau analysieren kann. -![überangepasstes Modell](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/de/overfitting.1c132d92bfd93cb6.webp) > Infografik von [Jen Looper](https://twitter.com/jenlooper) ## Parameteranpassung -Sobald Ihr erstes Training abgeschlossen ist, beobachten Sie die Qualität des Modells und überlegen, wie Sie es durch Anpassung seiner 'Hyperparameter' verbessern können. Lesen Sie mehr über den Prozess [in der Dokumentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Sobald Ihr erstes Training abgeschlossen ist, beobachten Sie die Qualität des Modells und überlegen, es zu verbessern, indem Sie dessen „Hyperparameter“ anpassen. Lesen Sie mehr über den Prozess [in der Dokumentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Vorhersage -Dies ist der Moment, in dem Sie völlig neue Daten verwenden können, um die Genauigkeit Ihres Modells zu testen. In einem 'angewandten' ML-Setting, in dem Sie Webanwendungen erstellen, um das Modell in der Produktion zu verwenden, könnte dieser Prozess das Sammeln von Benutzereingaben (z. B. einen Knopfdruck) umfassen, um eine Variable festzulegen und sie an das Modell zur Inferenz oder Bewertung zu senden. +Dies ist der Moment, in dem Sie völlig neue Daten verwenden können, um die Genauigkeit Ihres Modells zu testen. In einem „angewandten“ ML-Setting, bei dem Sie Web-Anwendungen erstellen, um das Modell in der Produktion zu nutzen, könnte dieser Prozess die Erfassung von Benutzereingaben (beispielsweise ein Button-Klick) umfassen, um eine Variable zu setzen und an das Modell zur Inferenz oder Bewertung zu senden. -In diesen Lektionen werden Sie entdecken, wie Sie diese Schritte nutzen, um vorzubereiten, zu bauen, zu testen, zu bewerten und vorherzusagen - all die Gesten eines Datenwissenschaftlers und mehr, während Sie auf Ihrer Reise zum 'Full-Stack'-ML-Ingenieur voranschreiten. +In diesen Lektionen entdecken Sie, wie Sie diese Schritte nutzen, um Daten vorzubereiten, Modelle zu erstellen, zu testen, zu bewerten und Vorhersagen zu treffen – all die Gesten eines Datenwissenschaftlers und mehr, während Sie auf dem Weg sind, ein „Full Stack“ ML Engineer zu werden. --- -## 🚀 Herausforderung +## 🚀Herausforderung -Erstellen Sie ein Flussdiagramm, das die Schritte eines ML-Praktikers darstellt. Wo sehen Sie sich derzeit im Prozess? Wo erwarten Sie Schwierigkeiten? Was erscheint Ihnen einfach? +Zeichnen Sie ein Flussdiagramm, das die Schritte eines ML-Praktikers widerspiegelt. Wo sehen Sie sich gerade im Prozess? Wo prognostizieren Sie Schwierigkeiten? Was erscheint Ihnen leicht? -## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/) +## [Nachvorlesungs-Quiz](https://ff-quizzes.netlify.app/en/ml/) -## Überprüfung & Selbststudium +## Rückblick & Selbststudium -Suchen Sie online nach Interviews mit Datenwissenschaftlern, die über ihre tägliche Arbeit sprechen. Hier ist [eins](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Suchen Sie online nach Interviews mit Datenwissenschaftlern, die ihren Arbeitsalltag beschreiben. Hier ist [eines](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Aufgabe -[Führen Sie ein Interview mit einem Datenwissenschaftler](assignment.md) +[Interviewen Sie einen Datenwissenschaftler](assignment.md) --- + **Haftungsausschluss**: -Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben. \ No newline at end of file +Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir auf Genauigkeit achten, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache gilt als maßgebliche Quelle. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. + \ No newline at end of file diff --git a/translations/de/2-Regression/3-Linear/README.md b/translations/de/2-Regression/3-Linear/README.md index fb522a5948..bc93cff0b8 100644 --- a/translations/de/2-Regression/3-Linear/README.md +++ b/translations/de/2-Regression/3-Linear/README.md @@ -1,139 +1,136 @@ -# Erstellen eines Regressionsmodells mit Scikit-learn: Regression auf vier Arten +# Erstelle ein Regressionsmodell mit Scikit-learn: Regression auf vier Arten -## Anfängerhinweis +## Anmerkung für Anfänger -Lineare Regression wird verwendet, wenn wir einen **numerischen Wert** vorhersagen wollen (zum Beispiel Hauspreis, Temperatur oder Umsatz). -Sie funktioniert, indem sie eine Gerade findet, die die Beziehung zwischen Eingabefunktionen und Ausgabe am besten darstellt. +Lineare Regression wird verwendet, wenn wir einen **numerischen Wert** vorhersagen möchten (zum Beispiel Hauspreis, Temperatur oder Umsatz). +Sie funktioniert, indem sie eine Gerade findet, die die Beziehung zwischen Eingabemerkmalen und Ausgabe bestmöglich darstellt. -In dieser Lektion konzentrieren wir uns darauf, das Konzept zu verstehen, bevor wir uns fortgeschritteneren Regressionsmethoden zuwenden. -![Lineare vs. polynomiale Regression Infografik](../../../../translated_images/de/linear-polynomial.5523c7cb6576ccab.webp) +In dieser Lektion konzentrieren wir uns darauf, das Konzept zu verstehen, bevor wir fortgeschrittenere Regressionstechniken erkunden. +![Linear vs polynomial regression infographic](../../../../translated_images/de/linear-polynomial.5523c7cb6576ccab.webp) > Infografik von [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Pre-lecture Quiz](https://ff-quizzes.netlify.app/en/ml/) +## [Vorlesungsquiz](https://ff-quizzes.netlify.app/en/ml/) > ### [Diese Lektion ist auch in R verfügbar!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Einführung -### Einführung - -Bisher hast du untersucht, was Regression ist, mit Beispieldaten aus dem Kürbispreis-Datensatz, den wir während dieser Lektion verwenden werden. Du hast ihn auch mit Matplotlib visualisiert. +Bis jetzt hast du erkundet, was Regression ist, anhand von Beispieldaten aus dem Kürbis-Preis-Datensatz, den wir in dieser Lektion verwenden werden. Du hast ihn auch mit Matplotlib visualisiert. -Jetzt bist du bereit, tiefer in die Regression für ML einzutauchen. Während Visualisierung dir hilft, Daten zu verstehen, liegt die wahre Stärke von Machine Learning im _Trainieren von Modellen_. Modelle werden mit historischen Daten trainiert, um Datenabhängigkeiten automatisch zu erfassen, und sie ermöglichen die Vorhersage von Ergebnissen für neue Daten, die das Modell vorher nicht gesehen hat. +Jetzt bist du bereit, tiefer in Regression für ML einzutauchen. Während die Visualisierung dabei hilft, die Daten zu verstehen, liegt die wahre Stärke von Machine Learning im _Trainieren von Modellen_. Modelle werden auf historischen Daten trainiert, um Datenabhängigkeiten automatisch zu erfassen, und ermöglichen es, Vorhersagen für neue Daten zu machen, die das Modell vorher nicht gesehen hat. -In dieser Lektion lernst du zwei Arten der Regression kennen: _einfache lineare Regression_ und _polynomiale Regression_, sowie einige der mathematischen Grundlagen dieser Techniken. Diese Modelle ermöglichen uns, Kürbispreise in Abhängigkeit von unterschiedlichen Eingabedaten vorherzusagen. +In dieser Lektion lernst du mehr über zwei Arten der Regression: _einfache lineare Regression_ und _polynomiale Regression_ sowie einige der Mathematik, die diesen Techniken zugrunde liegt. Diese Modelle werden uns erlauben, Kürbisse je nach unterschiedlichen Eingabedaten vorherzusagen. -[![ML für Anfänger – Verständnis der linearen Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML für Anfänger – Verständnis der linearen Regression") +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") > 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zur linearen Regression. -> Im gesamten Curriculum gehen wir von minimalen Mathematikkenntnissen aus und möchten das Thema für Studierende aus anderen Bereichen zugänglich machen. Achte daher auf Hinweise, 🧮 Erklärungen, Diagramme und andere Lernhilfen zur Unterstützung des Verständnisses. +> Im gesamten Lehrplan gehen wir von minimalen mathematischen Vorkenntnissen aus und möchten es für Studierende aus anderen Fachrichtungen zugänglich machen. Achte also auf Anmerkungen, 🧮 Hervorhebungen, Diagramme und andere Lernhilfen zur Unterstützung des Verständnisses. ### Voraussetzungen -Du solltest inzwischen mit der Struktur der Kürbisdaten vertraut sein, die wir untersuchen. Die Daten sind in der Datei _notebook.ipynb_ dieser Lektion vorab geladen und bereinigt. Dort wird der Kürbispreis pro Scheffel in einem neuen DataFrame angezeigt. Stelle sicher, dass du diese Notebooks in Visual Studio Code ausführen kannst. +Du solltest jetzt mit der Struktur der Kürbisdaten vertraut sein, die wir untersuchen. Du findest sie vorab geladen und bereinigt in der Datei _notebook.ipynb_ dieser Lektion. Dort wird der Kürbisp steht pro Bushel in einem neuen DataFrame angezeigt. Stelle sicher, dass du diese Notebooks in Visual Studio Code in passenden Umgebungen ausführen kannst. ### Vorbereitung Zur Erinnerung: Du lädst diese Daten, um Fragen an sie stellen zu können. -- Wann ist die beste Zeit, Kürbisse zu kaufen? -- Welchen Preis kann ich für eine Kiste Mini-Kürbisse erwarten? -- Sollte ich sie in Halbscheffel-Körben oder in 1 1/9 Scheffel Kisten kaufen? - -Lass uns tiefer in diese Daten eintauchen. - -In der vorherigen Lektion hast du ein Pandas DataFrame erstellt und mit einem Teil des ursprünglichen Datensatzes befüllt, wobei die Preise auf den Scheffel normiert wurden. Damit konntest du allerdings nur etwa 400 Datenpunkte sammeln und nur für die Herbstmonate. +- Wann ist die beste Zeit, Kürbisse zu kaufen? +- Welchen Preis kann ich für eine Kiste mit Mini-Kürbissen erwarten? +- Sollte ich sie in halben Bushel-Körben oder im 1 1/9 Bushel-Karton kaufen? +Lass uns weiter in diese Daten eintauchen. -Schau dir die Daten an, die wir im Notebook dieser Lektion vorab geladen haben. Die Daten sind vorab geladen, und ein erster Streudiagramm wurde gezeichnet, um Monatsdaten zu zeigen. Vielleicht können wir durch weitergehende Bereinigung mehr über die Natur der Daten erfahren. +In der vorherigen Lektion hast du ein Pandas DataFrame erstellt und mit einem Teil des ursprünglichen Datensatzes gefüllt, wobei die Preise pro Bushel standardisiert wurden. Dadurch konntest du jedoch nur etwa 400 Datenpunkte und nur für die Herbstmonate erfassen. -## Eine lineare Regressionsgerade +Betrachte die Daten, die wir in dem Notebook dieser Lektion vorab geladen haben. Die Daten sind vorab geladen und ein erster Streudiagramm wird gezeichnet, um Monatsdaten zu zeigen. Vielleicht können wir mehr Details über die Natur der Daten erhalten, wenn wir sie weiter bereinigen. -Wie du in Lektion 1 gelernt hast, ist das Ziel einer linearen Regression, eine Gerade zu zeichnen, die: +## Eine Linie der linearen Regression -- **Variablenbeziehungen zeigt**. Zeigt die Beziehung zwischen Variablen -- **Vorhersagen ermöglicht**. Ermöglicht genaue Vorhersagen, wo ein neuer Datenpunkt relativ zu dieser Linie liegen würde. +Wie du in Lektion 1 gelernt hast, ist das Ziel einer linearen Regression, eine Linie zu zeichnen, um: -Typisch ist bei der **Methode der kleinsten Quadrate** (Least-Squares Regression) das Ziehen dieser Art von Linie. Der Begriff "Methode der kleinsten Quadrate" bezieht sich auf den Prozess der Minimierung des Gesamtfehlers im Modell. Für jeden Datenpunkt messen wir den vertikalen Abstand (genannt Residuum) zwischen dem tatsächlichen Punkt und unserer Regressionslinie. +- **Variablenbeziehungen zu zeigen**. Die Beziehung zwischen Variablen darstellen +- **Vorhersagen zu machen**. Genau vorhersagen, wo ein neuer Datenpunkt in Bezug auf diese Linie liegen würde. + +Typisch für die **Methode der kleinsten Quadrate** ist es, diese Art von Linie zu zeichnen. Der Begriff "Methode der kleinsten Quadrate" bezieht sich auf den Prozess, den Gesamtfehler in unserem Modell zu minimieren. Für jeden Datenpunkt messen wir den vertikalen Abstand (genannt Residuum) zwischen dem tatsächlichen Punkt und unserer Regressionslinie. Wir quadrieren diese Abstände aus zwei Hauptgründen: -1. **Betrag statt Richtung:** Wir wollen einen Fehler von -5 genauso behandeln wie einen Fehler von +5. Das Quadrieren macht alle Werte positiv. +1. **Betrag statt Richtung:** Wir möchten einen Fehler von -5 genauso behandeln wie einen Fehler von +5. Das Quadrieren macht alle Werte positiv. -2. **Bestrafung von Ausreißern:** Das Quadrieren gibt größeren Fehlern mehr Gewicht und zwingt die Gerade, näher an weiter entfernte Punkte heranzurücken. +2. **Bestrafung von Ausreißern:** Das Quadrieren gibt größeren Fehlern mehr Gewicht, wodurch die Linie gezwungen wird, näher an weit entfernten Punkten zu bleiben. -Dann addieren wir alle quadrierten Werte zusammen. Unser Ziel ist es, genau die Linie zu finden, bei der diese Summe am geringsten ist (der kleinstmögliche Wert) – daher der Name „Methode der kleinsten Quadrate“. +Dann addieren wir alle quadrierten Werte zusammen. Unser Ziel ist es, genau die Linie zu finden, bei der diese Summe am geringsten ist – daher der Name "Methode der kleinsten Quadrate". -> **🧮 Zeig mir die Mathematik** -> -> Diese Linie, genannt die _Bestanpassungslinie_, kann mit [einer Gleichung](https://de.wikipedia.org/wiki/Einfache_lineare_Regression) dargestellt werden: -> +> **🧮 Zeig mir die Mathematik** +> +> Diese Linie, genannt _Line of Best Fit_, kann durch [eine Gleichung](https://en.wikipedia.org/wiki/Simple_linear_regression) ausgedrückt werden: +> > ``` > Y = a + bX > ``` -> -> `X` ist die „erklärende Variable“. `Y` ist die „abhängige Variable“. Die Steigung der Geraden ist `b` und `a` ist der Achsenabschnitt, also der Wert von `Y`, wenn `X = 0` ist. -> ->![Berechnung der Steigung](../../../../translated_images/de/slope.f3c9d5910ddbfcf9.webp) -> -> Berechne zuerst die Steigung `b`. Infografik von [Jen Looper](https://twitter.com/jenlooper) -> -> Anders ausgedrückt und bezogen auf unsere ursprüngliche Kürbisdatenfrage: "Vorhersage des Preises eines Kürbisses pro Scheffel nach Monat" entspricht `X` dem Preis und `Y` dem Verkaufsmonat. -> ->![Gleichung vervollständigen](../../../../translated_images/de/calculation.a209813050a1ddb1.webp) -> -> Berechne den Wert von Y. Wenn du etwa 4 Dollar bezahlst, muss es April sein! Infografik von [Jen Looper](https://twitter.com/jenlooper) -> -> Die Mathematik, die die Gerade berechnet, muss die Steigung der Geraden darstellen, die auch vom Achsenabschnitt abhängt, also wo `Y` liegt, wenn `X = 0`. -> -> Du kannst die Berechnungsmethode für diese Werte auf der Webseite [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) nachlesen. Besuche auch [diesen Least-squares Rechner](https://www.mathsisfun.com/data/least-squares-calculator.html), um zu sehen, wie die Werte die Gerade beeinflussen. +> +> `X` ist die „erklärende Variable“. `Y` ist die „abhängige Variable“. Die Steigung der Linie ist `b` und `a` ist der y-Achsenabschnitt, also der Wert von `Y`, wenn `X = 0` ist. +> +>![calculate the slope](../../../../translated_images/de/slope.f3c9d5910ddbfcf9.webp) +> +> Zuerst berechne die Steigung `b`. Infografik von [Jen Looper](https://twitter.com/jenlooper) +> +> Anders ausgedrückt, und bezogen auf die ursprüngliche Frage unserer Kürbisdaten: "Vorhersage des Preises eines Kürbisses pro Bushel nach Monat", würde `X` den Preis darstellen und `Y` den Verkaufsmonat. +> +>![complete the equation](../../../../translated_images/de/calculation.a209813050a1ddb1.webp) +> +> Berechne den Wert von Y. Wenn du etwa $4 zahlst, muss es April sein! Infografik von [Jen Looper](https://twitter.com/jenlooper) +> +> Die Rechnung, die die Linie berechnet, muss die Steigung der Linie zeigen, die auch vom Achsenabschnitt abhängt, also von dem Punkt, an dem `Y` liegt, wenn `X = 0` ist. +> +> Du kannst die Berechnungsmethode für diese Werte auf der Website [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) nachlesen. Besuche auch [diesen Least-Squares-Rechner](https://www.mathsisfun.com/data/least-squares-calculator.html), um zu sehen, wie die Werte die Linie beeinflussen. ## Korrelation -Ein weiterer Begriff, den du verstehen solltest, ist der **Korrelationskoeffizient** zwischen gegebenen X- und Y-Variablen. Mithilfe eines Streudiagramms kannst du diesen Koeffizienten schnell visualisieren. Ein Plot mit Punkten, die sich auf einer klaren Linie befinden, hat eine hohe Korrelation, während ein Plot mit zufällig verteilten Punkten eine geringe Korrelation aufweist. +Ein weiterer Begriff, den du verstehen solltest, ist der **Korrelationskoeffizient** zwischen bestimmten X- und Y-Variablen. Mit einem Streudiagramm kannst du diesen Koeffizienten schnell visualisieren. Ein Diagramm mit Datenpunkten, die sich in einer geordneten Linie anordnen, hat eine hohe Korrelation, während ein Diagramm mit verstreuten Punkten zwischen X und Y eine niedrige Korrelation aufweist. Ein gutes lineares Regressionsmodell hat einen hohen (näher bei 1 als bei 0) Korrelationskoeffizienten, wenn die Methode der kleinsten Quadrate mit einer Regressionslinie verwendet wird. -✅ Führe das Notebook zu dieser Lektion aus und sieh dir das Streudiagramm von Monat zu Preis an. Scheint die Assoziation vom Monat zum Kürbiskaufpreis nach deiner visuellen Interpretation des Streudiagramms eine hohe oder niedrige Korrelation zu haben? Ändert sich das, wenn du statt `Month` eine feinere Maßeinheit wie *Tag des Jahres* (also Anzahl der Tage seit Jahresbeginn) nutzt? +✅ Führe das zu dieser Lektion gehörende Notebook aus und sieh dir das Streudiagramm Monat zu Preis an. Hat die Datenzuordnung von Monat zu Preis für Kürbisverkäufe deiner visuellen Interpretation nach eine hohe oder niedrige Korrelation? Ändert sich das, wenn du statt `Monat` eine feinere Maßeinheit wie *Tag des Jahres* (z.B. Anzahl der Tage seit Jahresbeginn) verwendest? -Im folgenden Code gehen wir davon aus, dass wir die Daten bereinigt haben und ein DataFrame namens `new_pumpkins` vorliegt, das in etwa so aussieht: +Im folgenden Code gehen wir davon aus, dass wir die Daten bereinigt und einen DataFrame mit dem Namen `new_pumpkins` erhalten haben, ähnlich dem Folgenden: -ID | Monat | TagDesJahres | Sorte | Stadt | Verpackung | Niedriger Preis | Hoher Preis | Preis ----|-------|--------------|-------|-------|------------|-----------------|-------------|-------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 15.0 | 15.0 | 13.636364 +ID | Monat | TagDesJahres | Sorte | Stadt | Verpackung | Niedriger Preis | Hoher Preis | Preis +---|-------|--------------|-------|-------|------------|----------------|-------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 15.0 | 15.0 | 13.636364 -> Der Code zur Datenbereinigung ist in [`notebook.ipynb`](notebook.ipynb) verfügbar. Wir haben die gleichen Bereinigungsschritte wie in der vorherigen Lektion durchgeführt und die Spalte `DayOfYear` mit folgendem Ausdruck berechnet: +> Der Code zum Bereinigen der Daten ist in [`notebook.ipynb`](notebook.ipynb) verfügbar. Wir haben die gleichen Bereinigungsschritte wie in der vorherigen Lektion durchgeführt und die Spalte `DayOfYear` mit folgendem Ausdruck berechnet: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Jetzt, da du die Mathematik hinter der linearen Regression verstehst, lass uns ein Regressionsmodell erstellen, um zu sehen, ob wir vorhersagen können, welches Kürbispaket die besten Preise haben wird. Jemand, der Kürbisse für einen Kürbisgarten zu Halloween kauft, möchte diese Informationen, um seinen Einkauf zu optimieren. -## Auf der Suche nach Korrelation +Nachdem du die Mathematik hinter der linearen Regression verstanden hast, erstellen wir nun ein Regressionsmodell, um zu sehen, ob wir vorhersagen können, welches Kürbis-Paket die besten Preise hat. Jemand, der Kürbisse für einen Feiertag-Kürbisgarten kauft, möchte diese Information möglicherweise nutzen, um seine Kürbiskäufe zu optimieren. + +## Suche nach Korrelation -[![ML für Anfänger – Auf der Suche nach Korrelation: Der Schlüssel zur linearen Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML für Anfänger – Auf der Suche nach Korrelation: Der Schlüssel zur linearen Regression") +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zur Korrelation. +> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht über Korrelation. -Aus der vorherigen Lektion hast du wahrscheinlich gesehen, dass der Durchschnittspreis für unterschiedliche Monate so aussieht: +Aus der vorherigen Lektion hast du wahrscheinlich gesehen, dass der Durchschnittspreis für verschiedene Monate so aussieht: -Durchschnittspreis nach Monat +Average price by month -Das deutet darauf hin, dass es eine bestimmte Korrelation geben sollte, und wir können versuchen, ein lineares Regressionsmodell zu trainieren, um die Beziehung zwischen `Monat` und `Preis` oder zwischen `TagDesJahres` und `Preis` vorherzusagen. Hier ist das Streudiagramm, das letztere Beziehung zeigt: +Das deutet darauf hin, dass es eine Korrelation geben sollte, und wir können versuchen, ein lineares Regressionsmodell zu trainieren, um die Beziehung zwischen `Monat` und `Preis` oder zwischen `DayOfYear` und `Preis` vorherzusagen. Hier ist das Streudiagramm, das die letztere Beziehung zeigt: -Streudiagramm von Preis vs. Tag des Jahres +Scatter plot of Price vs. Day of Year -Sehen wir uns die Korrelation mit der Funktion `corr` an: +Sehen wir uns die Korrelation mit der `corr` Funktion an: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Es sieht so aus, als sei die Korrelation ziemlich klein, -0,15 für `Monat` und -0,17 für `TagDesJahres`, aber es könnte eine andere wichtige Beziehung geben. Es sieht so aus, als gäbe es unterschiedliche Cluster von Preisen, die verschiedenen Kürbissorten zugeordnet sind. Zur Bestätigung dieser Hypothese wollen wir jede Kürbissorte mit einer anderen Farbe darstellen. Indem wir der `scatter`-Plotfunktion einen `ax`-Parameter übergeben, können wir alle Punkte auf demselben Diagramm darstellen: + +Es scheint, dass die Korrelation ziemlich gering ist, -0,15 bei `Monat` und -0,17 bei `DayOfYear`, aber es könnte eine andere wichtige Beziehung geben. Es sieht so aus, als gäbe es verschiedene Preiscluster, die unterschiedlichen Kürbissorten entsprechen. Um diese Hypothese zu bestätigen, zeichnen wir jede Kürbiskategorie mit einer anderen Farbe. Indem wir der `scatter` Funktion einen `ax` Parameter übergeben, können wir alle Punkte im gleichen Diagramm darstellen: ```python ax=None @@ -142,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - -Streudiagramm von Preis vs. Tag des Jahres mit Farbunterscheidung + +Scatter plot of Price vs. Day of Year Unsere Untersuchung legt nahe, dass die Sorte mehr Einfluss auf den Gesamtpreis hat als das tatsächliche Verkaufsdatum. Das können wir mit einem Balkendiagramm sehen: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - -Balkendiagramm Preis vs. Sorte -Konzentrieren wir uns für den Moment nur auf eine Kürbissorte, den 'Pie Type', und schauen, welchen Einfluss das Datum auf den Preis hat: +Bar graph of price vs variety + +Konzentrieren wir uns nun nur auf eine Kürbissorte, den 'Pie Type', und sehen uns den Einfluss des Datums auf den Preis an: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Streudiagramm von Preis vs. Tag des Jahres für Pie-Kürbisse +Scatter plot of Price vs. Day of Year -Wenn wir jetzt die Korrelation zwischen `Preis` und `TagDesJahres` mit der Funktion `corr` berechnen, erhalten wir etwa `-0.27` – was bedeutet, dass das Trainieren eines Vorhersagemodells sinnvoll ist. +Wenn wir jetzt die Korrelation zwischen `Preis` und `DayOfYear` mit der `corr` Funktion berechnen, erhalten wir ungefähr `-0,27` – was bedeutet, dass es sinnvoll ist, ein Vorhersagemodell zu trainieren. -> Bevor wir ein lineares Regressionsmodell trainieren, ist es wichtig sicherzustellen, dass unsere Daten sauber sind. Lineare Regression funktioniert nicht gut mit fehlenden Werten, daher ist es sinnvoll, alle leeren Zellen zu entfernen: +> Bevor du ein lineares Regressionsmodell trainierst, ist es wichtig sicherzustellen, dass unsere Daten sauber sind. Lineare Regression funktioniert schlecht mit fehlenden Werten, daher ist es sinnvoll, leere Zellen zu entfernen: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Ein anderer Ansatz wäre, diese fehlenden Werte mit Mittelwerten der entsprechenden Spalte zu füllen. + +Eine andere Möglichkeit wäre, diese leeren Werte mit Mittelwerten der jeweiligen Spalte zu füllen. ## Einfache lineare Regression -[![ML für Anfänger – Lineare und polynomiale Regression mit Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML für Anfänger – Lineare und polynomiale Regression mit Scikit-learn") +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zur linearen und polynomialen Regression. +> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zu linearer und polynomialer Regression. -Um unser Lineares Regressionsmodell zu trainieren, verwenden wir die **Scikit-learn**-Bibliothek. +Um unser Modell der linearen Regression zu trainieren, verwenden wir die **Scikit-learn**-Bibliothek. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Wir beginnen damit, Eingabewerte (Features) und die erwartete Ausgabe (Label) in separate numpy-Arrays aufzuteilen: + +Wir beginnen, indem wir Eingabewerte (Features) und die erwartete Ausgabe (Label) in getrennte Numpy-Arrays aufteilen: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> Beachte, dass wir auf die Eingabedaten `reshape` anwenden mussten, damit das Linear Regression-Paket sie korrekt versteht. Die lineare Regression erwartet als Eingabe ein 2D-Array, wobei jede Zeile einem Vektor von Eingabefunktionen entspricht. Da wir nur eine Eingabevariable haben, brauchen wir ein Array mit der Form N×1, wobei N die Größe des Datensatzes ist. -Dann müssen wir die Daten in Trainings- und Testdaten aufteilen, damit wir unser Modell nach dem Training validieren können: +> Beachte, dass wir die Eingabedaten mittels `reshape` umformen mussten, damit das Linear Regression-Paket sie korrekt versteht. Lineare Regression erwartet ein 2D-Array als Eingabe, wobei jede Zeile des Arrays einem Vektor von Eingabewerten entspricht. In unserem Fall, da wir nur ein Eingabewert haben, brauchen wir ein Array mit der Form N×1, wobei N die Größe des Datensatzes ist. + +Dann müssen wir die Daten in Trainings- und Testdatensätze aufteilen, damit wir unser Modell nach dem Training validieren können: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Schließlich nimmt das Training des eigentlichen Linearen Regressionsmodells nur zwei Codezeilen in Anspruch. Wir definieren das `LinearRegression`-Objekt und passen es mit der Methode `fit` an unsere Daten an: + +Schließlich dauert das eigentliche Training des linearen Regressionsmodells nur zwei Codezeilen. Wir definieren das `LinearRegression`-Objekt und passen es mit der `fit`-Methode an unsere Daten an: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Das `LinearRegression`-Objekt enthält nach dem `fit`-ten alle Koeffizienten der Regression, auf die über die `.coef_`-Eigenschaft zugegriffen werden kann. In unserem Fall gibt es nur einen Koeffizienten, der ungefähr `-0.017` sein sollte. Das bedeutet, dass die Preise mit der Zeit etwas zu sinken scheinen, aber nicht zu stark, ungefähr 2 Cent pro Tag. Wir können auch den Schnittpunkt der Regression mit der Y-Achse über `lin_reg.intercept_` abrufen – dieser wird in unserem Fall ungefähr `21` sein und den Preis zu Beginn des Jahres anzeigen. +Das `LinearRegression`-Objekt enthält nach dem `fit`-ten alle Koeffizienten der Regression, auf die über die Eigenschaft `.coef_` zugegriffen werden kann. In unserem Fall gibt es nur einen Koeffizienten, der ungefähr `-0,017` betragen sollte. Das bedeutet, dass die Preise mit der Zeit etwas zu sinken scheinen, aber nicht zu stark, ungefähr 2 Cent pro Tag. Wir können auch den Schnittpunkt der Regression mit der Y-Achse mithilfe von `lin_reg.intercept_` abrufen – dieser wird in unserem Fall etwa `21` betragen und zeigt den Preis am Anfang des Jahres an. -Um zu sehen, wie genau unser Modell ist, können wir die Preise auf einem Testdatensatz vorhersagen und dann messen, wie nah unsere Vorhersagen an den erwarteten Werten sind. Dies kann mithilfe der Metrik Root Mean Square Error (RMSE) erfolgen, welche die Wurzel des Mittels aller quadrierten Differenzen zwischen erwartetem und vorhergesagtem Wert ist. +Um zu sehen, wie genau unser Modell ist, können wir Preise in einem Testdatensatz vorhersagen und dann messen, wie nah unsere Vorhersagen an den erwarteten Werten sind. Dies kann mittels Root Mean Square Error (RMSE) geschehen, das die Wurzel aus dem Mittelwert aller quadrierten Differenzen zwischen erwartetem und vorhergesagtem Wert ist. ```python pred = lin_reg.predict(X_test) @@ -218,37 +215,38 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -Unser Fehler scheint etwa 2 Punkte zu betragen, was ca. 17 % sind. Nicht besonders gut. Ein weiterer Indikator für die Modellqualität ist der **Bestimmtheitsmaß**, der folgendermaßen ermittelt werden kann: + +Unser Fehler scheint bei etwa 2 Punkten zu liegen, was ca. 17 % entspricht. Nicht allzu gut. Ein weiterer Indikator für die Modellqualität ist der **Bestimmtheitsmaß**, der folgendermaßen ermittelt werden kann: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Wenn der Wert 0 ist, bedeutet dies, dass das Modell die Eingabedaten nicht berücksichtigt und als *schlechtester linearer Prädiktor* fungiert, was einfach ein Mittelwert des Ergebnisses ist. Ein Wert von 1 bedeutet, dass wir alle erwarteten Ausgaben perfekt vorhersagen können. In unserem Fall liegt der Koeffizient bei etwa 0,06, was ziemlich niedrig ist. + +Wenn der Wert 0 ist, bedeutet dies, dass das Modell die Eingabedaten nicht berücksichtigt und als *schlechtester linearer Prädiktor* fungiert, was einfach dem Mittelwert des Ergebnisses entspricht. Ein Wert von 1 bedeutet, dass wir alle erwarteten Ausgaben perfekt vorhersagen können. In unserem Fall liegt der Koeffizient bei etwa 0,06, was recht niedrig ist. -Wir können auch die Testdaten zusammen mit der Regressionslinie darstellen, um besser zu sehen, wie die Regression in unserem Fall funktioniert: +Wir können auch die Testdaten zusammen mit der Regressionslinie plotten, um besser zu sehen, wie die Regression in unserem Fall funktioniert: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - -Lineare Regression + +Linear regression ## Polynomiale Regression -Eine andere Art der linearen Regression ist die polynomiale Regression. Manchmal besteht zwar eine lineare Beziehung zwischen Variablen – je größer der Kürbis in Volumen, desto höher der Preis – aber manchmal können diese Beziehungen nicht als Ebene oder Gerade dargestellt werden. +Eine andere Art der linearen Regression ist die Polynomiale Regression. Während es manchmal eine lineare Beziehung zwischen Variablen gibt – je größer der Kürbis im Volumen, desto höher der Preis – können diese Beziehungen manchmal nicht als Ebene oder Gerade dargestellt werden. -✅ Hier sind [weitere Beispiele](https://online.stat.psu.edu/stat501/lesson/9/9.8) für Daten, die polynomiale Regression benötigen könnten. +✅ Hier sind [weitere Beispiele](https://online.stat.psu.edu/stat501/lesson/9/9.8) für Daten, die eine polynomiale Regression benötigen könnten. -Betrachte nochmal die Beziehung zwischen Datum und Preis. Sieht dieses Streudiagramm so aus, als sollte es unbedingt mit einer Geraden analysiert werden? Können Preise nicht schwanken? In diesem Fall kann man es mit polynomieller Regression versuchen. +Schauen Sie sich die Beziehung zwischen Datum und Preis noch einmal an. Sollte dieses Streudiagramm zwangsläufig durch eine Gerade analysiert werden? Können die Preise nicht schwanken? In solchen Fällen kann man polynomiale Regression versuchen. ✅ Polynome sind mathematische Ausdrücke, die aus einer oder mehreren Variablen und Koeffizienten bestehen können. -Die polynomiale Regression erstellt eine gekrümmte Linie, um nichtlineare Daten besser anzupassen. In unserem Fall, wenn wir eine quadrierte Variable `DayOfYear` in die Eingabedaten aufnehmen, sollten wir unsere Daten mit einer parabolischen Kurve anpassen können, die ihr Minimum an einem bestimmten Punkt im Jahr hat. +Die polynomiale Regression erstellt eine gekrümmte Linie, um besser zu nichtlinearen Daten zu passen. In unserem Fall sollten wir durch Einbeziehung einer quadrierten `DayOfYear`-Variable in die Eingabedaten in der Lage sein, unsere Daten mit einer parabolischen Kurve anzupassen, die an einem bestimmten Punkt innerhalb des Jahres ein Minimum hat. -Scikit-learn enthält eine hilfreiche [Pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), um verschiedene Verarbeitungsschritte von Daten zu kombinieren. Eine **Pipeline** ist eine Kette von **Estimatoren**. In unserem Fall erstellen wir eine Pipeline, die zunächst polynomialen Features zum Modell hinzufügt und dann die Regression trainiert: +Scikit-learn bietet eine hilfreiche [Pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), um verschiedene Verarbeitungsschritte zusammenzuführen. Eine **Pipeline** ist eine Kette von **Estimatoren**. In unserem Fall erstellen wir eine Pipeline, die zuerst polynomiale Merkmale zum Modell hinzufügt und dann die Regression trainiert: ```python from sklearn.preprocessing import PolynomialFeatures @@ -258,61 +256,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` + +Die Verwendung von `PolynomialFeatures(2)` bedeutet, dass wir alle Polynome zweiten Grades aus den Eingabedaten einschließen. In unserem Fall bedeutet das nur `DayOfYear`2, aber bei zwei Eingabevariablen X und Y werden zusätzlich X2, XY und Y2 hinzugefügt. Wir können auch Polynome höheren Grades verwenden, wenn wir möchten. -Die Verwendung von `PolynomialFeatures(2)` bedeutet, dass wir alle Polynome zweiten Grades aus den Eingabedaten einschließen. In unserem Fall ist das nur `DayOfYear`2, aber mit zwei Eingabevariablen X und Y fügt dies X2, XY und Y2 hinzu. Wir können auch Polynome höheren Grades verwenden, wenn wir möchten. +Pipelines können auf die gleiche Weise wie das ursprüngliche `LinearRegression`-Objekt verwendet werden, d.h. wir können die Pipeline `fit`-ten und dann `predict` aufrufen, um Vorhersagen zu erhalten: -Pipelines können genauso verwendet werden wie das ursprüngliche `LinearRegression`-Objekt, d.h. wir können die Pipeline `fit`ten und anschließend `predict` verwenden, um Vorhersagen zu erhalten. Hier ist das Diagramm mit den Testdaten und der Approximationskurve: +```python +pred = pipeline.predict(X_test) -Polynomiale Regression +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') -Mit Polynom-Regression können wir leicht geringere MSE und einen höheren Bestimmtheitsmaß erreichen, aber nicht signifikant. Wir müssen auch andere Merkmale berücksichtigen! +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Um die glatte Annäherungskurve zu zeichnen, verwenden wir `np.linspace`, um einen gleichmäßigen Bereich von Eingabewerten zu erzeugen, anstatt direkt die ungeordneten Testdaten zu verwenden (was eine Zickzacklinie ergeben würde): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) -> Man sieht, dass die minimalen Kürbispreise irgendwo um Halloween zu beobachten sind. Wie kann man das erklären? +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +Hier ist der Graph, der Testdaten und die Annäherungskurve zeigt: -🎃 Glückwunsch, du hast gerade ein Modell erstellt, das helfen kann, den Preis von Backkürbissen vorherzusagen. Du kannst das wahrscheinlich für alle Kürbissorten wiederholen, aber das wäre mühsam. Lernen wir jetzt, wie wir Kürbissorten in unser Modell einbeziehen können! +Polynomial regression + +Mit polynomieller Regression können wir etwas geringeren RMSE und höhere Bestimmtheitsmaße erzielen, aber nicht signifikant. Wir müssen weitere Merkmale berücksichtigen! + +> Sie können sehen, dass die minimalen Kürbiskurse irgendwo um Halloween beobachtet werden. Wie können Sie das erklären? + +🎃 Herzlichen Glückwunsch, Sie haben gerade ein Modell erstellt, das dabei helfen kann, den Preis von Backkürbissen vorherzusagen. Wahrscheinlich können Sie dasselbe Verfahren für alle Kürbissorten wiederholen, aber das wäre mühsam. Lernen wir nun, wie wir die Kürbissorte in unser Modell einbeziehen! ## Kategorische Merkmale -In einer idealen Welt wollen wir in der Lage sein, Preise für verschiedene Kürbissorten mit demselben Modell vorherzusagen. Allerdings ist die Spalte `Variety` etwas anders als z.B. `Month`, weil sie nicht numerische Werte enthält. Solche Spalten nennt man **kategorische**. +In der idealen Welt wollen wir Preise für verschiedene Kürbissorten mit demselben Modell vorhersagen können. Die Spalte `Variety` unterscheidet sich jedoch etwas von Spalten wie `Month`, da sie nicht-numerische Werte enthält. Solche Spalten nennt man **kategorisch**. -[![ML für Anfänger - Kategorische Merkmalvorhersagen mit Linearer Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML für Anfänger - Kategorische Merkmalvorhersagen mit Linearer Regression") +[![ML für Anfänger – Kategorische Merkmalsvorhersagen mit Linearer Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML für Anfänger – Kategorische Merkmalsvorhersagen mit Linearer Regression") -> 🎥 Klicke das obige Bild für eine kurze Videoübersicht zur Verwendung kategorischer Merkmale. +> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zum Umgang mit kategorialen Merkmalen. -Hier sieht man, wie der Durchschnittspreis von der Sorte abhängt: +Hier sehen Sie, wie der Durchschnittspreis von der Sorte abhängt: Durchschnittspreis nach Sorte -Um die Sorte zu berücksichtigen, müssen wir sie zunächst in eine numerische Form umwandeln, oder **kodieren**. Es gibt mehrere Möglichkeiten: +Um die Sorte zu berücksichtigen, müssen wir sie zunächst in numerische Form umwandeln oder **kodieren**. Es gibt verschiedene Vorgehensweisen: -* Eine einfache **numerische Kodierung** erstellt eine Tabelle der verschiedenen Sorten und ersetzt anschließend den Sortennamen durch einen Index in dieser Tabelle. Dies ist keine gute Idee für lineare Regression, da die lineare Regression den tatsächlichen numerischen Wert des Index nimmt und ihn mit einem Koeffizienten multipliziert zum Ergebnis hinzufügt. In unserem Fall ist die Beziehung zwischen Indexnummer und Preis klar nichtlinear, auch wenn wir sicherstellen, dass die Indizes in einer bestimmten Reihenfolge sind. -* **One-Hot-Kodierung** ersetzt die Spalte `Variety` durch 4 verschiedene Spalten, eine für jede Sorte. Jede Spalte enthält eine `1`, wenn die entsprechende Zeile die gegebene Sorte hat, andernfalls `0`. Das bedeutet, dass es vier Koeffizienten in der linearen Regression gibt, einen für jede Kürbissorte, der für den „Startpreis“ (besser gesagt den „zusätzlichen Preis“) dieser Sorte verantwortlich ist. +* Eine einfache **numerische Kodierung** erstellt eine Tabelle der verschiedenen Sorten und ersetzt dann den Sortennamen durch einen Index in dieser Tabelle. Das ist keine gute Idee für lineare Regression, weil das Modell den tatsächlichen numerischen Wert des Index nimmt und mit einem Koeffizienten multipliziert zum Ergebnis hinzufügt. In unserem Fall ist die Beziehung zwischen dem Index und dem Preis eindeutig nicht-linear, selbst wenn wir sicherstellen, dass die Indizes in einer bestimmten Reihenfolge angeordnet sind. +* **One-Hot-Kodierung** ersetzt die Spalte `Variety` durch 4 verschiedene Spalten, je eine für jede Sorte. Jede Spalte enthält `1`, wenn die entsprechende Zeile diese Sorte hat, und `0` sonst. Das bedeutet, dass es vier Koeffizienten in der linearen Regression gibt, einen für jede Kürbissorte, der für den „Startpreis“ (bzw. „zusätzlichen Preis“) für diese Sorte verantwortlich ist. -Der folgende Code zeigt, wie wir eine Sorte one-hot kodieren können: +Der folgende Code zeigt, wie wir eine Sorte als One-Hot kodieren können: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 - -Um lineare Regression mit one-hot kodierter Sorte als Eingabe zu trainieren, müssen wir nur `X` und `y` richtig initialisieren: + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +Um lineare Regression mit der One-Hot-kodierten Sorte als Eingabe zu trainieren, müssen wir nur die Daten in `X` und `y` richtig initialisieren: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -Der restliche Code ist derselbe wie der obige zum Trainieren der linearen Regression. Wenn du es ausprobierst, wirst du sehen, dass der mittlere quadratische Fehler ungefähr gleich ist, aber wir erhalten einen viel höheren Bestimmtheitsmaß (~77 %). Für noch genauere Vorhersagen können wir mehr kategorische Merkmale sowie numerische Merkmale wie `Month` oder `DayOfYear` berücksichtigen. Um ein großes Array von Merkmalen zu erhalten, können wir `join` verwenden: + +Der Rest des Codes ist derselbe wie oben für das Training der linearen Regression. Wenn Sie es ausprobieren, werden Sie sehen, dass der mittlere quadratische Fehler ungefähr gleich bleibt, wir aber eine deutlich höhere Bestimmtheitsmaßzahl (~77 %) erhalten. Für noch genauere Vorhersagen können wir weitere kategoriale Merkmale sowie numerische Merkmale wie `Month` oder `DayOfYear` einbeziehen. Um ein großes Merkmal-Array zu erhalten, können wir `join` verwenden: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -321,12 +341,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` - -Hier beziehen wir auch `City` und `Package`-Typ ein, was uns eine MSE von 2,84 (10 %) und eine Bestimmtheit von 0,94 verschafft! + +Hier berücksichtigen wir auch `City` und `Package`-Typ, was uns einen RMSE von 2,84 (10,5 %) und eine Bestimmtheitsmaßzahl von 0,94 gibt! ## Alles zusammenführen -Um das beste Modell zu erstellen, können wir kombinierte (one-hot kodierte kategoriale + numerische) Daten aus dem obigen Beispiel zusammen mit polynomieller Regression verwenden. Hier ist der komplette Code zu deiner Bequemlichkeit: +Um das beste Modell zu erstellen, können wir kombinierte (one-hot-kodierte kategoriale + numerische) Daten aus dem obigen Beispiel zusammen mit Polynomialer Regression verwenden. Hier ist der vollständige Code zu Ihrer Bequemlichkeit: ```python # Trainingsdaten einrichten @@ -336,7 +356,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# Train-Test-Aufteilung machen +# Trainings- und Testdaten aufteilen X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # Pipeline einrichten und trainieren @@ -346,44 +366,44 @@ pipeline.fit(X_train,y_train) # Ergebnisse für Testdaten vorhersagen pred = pipeline.predict(X_test) -# MSE und Bestimmtheitsmaß berechnen -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE und Bestimmtheitsmaß berechnen +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` + +Damit sollten wir den besten Bestimmtheitsmaß von fast 97 % und RMSE = 2,23 (~8 % Vorhersagefehler) erhalten. -Dies sollte uns den besten Bestimmtheitsmaß von fast 97 % und eine MSE von 2,23 (~8 % Vorhersagefehler) liefern. - -| Modell | MSE | Bestimmtheitsmaß | -|-------|-----|------------------| +| Modell | RMSE | Bestimmtheitsmaß | +|-------|-----|---------------| | `DayOfYear` Linear | 2,77 (17,2 %) | 0,07 | | `DayOfYear` Polynomial | 2,73 (17,0 %) | 0,08 | | `Variety` Linear | 5,24 (19,7 %) | 0,77 | | Alle Merkmale Linear | 2,84 (10,5 %) | 0,94 | | Alle Merkmale Polynomial | 2,23 (8,25 %) | 0,97 | -🏆 Gut gemacht! Du hast in einer Lektion vier Regressionsmodelle erstellt und die Modellqualität auf 97 % verbessert. Im abschließenden Abschnitt zur Regression lernst du mehr über logistische Regression zur Bestimmung von Kategorien. +🏆 Gut gemacht! Sie haben in einer Lektion vier Regressionsmodelle erstellt und die Modellqualität auf 97 % verbessert. Im abschließenden Abschnitt über Regression lernen Sie logistische Regression kennen, um Kategorien zu bestimmen. --- -## 🚀 Herausforderung +## 🚀Herausforderung -Teste in diesem Notebook verschiedene Variablen, um zu sehen, wie die Korrelation mit der Modellgenauigkeit zusammenhängt. +Testen Sie in diesem Notebook verschiedene Variablen, um zu sehen, wie Korrelation mit der Modellgenauigkeit zusammenhängt. -## [Post-Vorlesungs-Quiz](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/) -## Rückblick & Selbststudium +## Wiederholung & Selbststudium -In dieser Lektion haben wir lineare Regression kennengelernt. Es gibt weitere wichtige Regressionsarten. Lies über Stepwise, Ridge, Lasso und Elasticnet-Techniken. Ein guter Kurs zur Vertiefung ist der [Stanford Statistical Learning Kurs](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning). +In dieser Lektion haben wir über Lineare Regression gelernt. Es gibt noch andere wichtige Regressionstypen. Lesen Sie über Stepwise-, Ridge-, Lasso- und Elasticnet-Techniken. Ein guter Kurs zum Weiterlernen ist der [Stanford Statistical Learning Course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Aufgabenstellung +## Aufgabe -[Erstelle ein Modell](assignment.md) +[Ein Modell erstellen](assignment.md) --- **Haftungsausschluss**: -Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das ursprüngliche Dokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. +Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache ist als maßgebliche Quelle anzusehen. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die durch die Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/2-Regression/3-Linear/solution/notebook.ipynb b/translations/de/2-Regression/3-Linear/solution/notebook.ipynb index b5c04ea349..e9c0983012 100644 --- a/translations/de/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/de/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Lineare und polynomiale Regression zur Preisgestaltung von Kürbissen - Lektion 3\n", + "## Lineare und Polynomiale Regression für Kürbissepreise - Lektion 3\n", "\n", - "Laden Sie die erforderlichen Bibliotheken und den Datensatz. Konvertieren Sie die Daten in ein DataFrame, das einen Teil der Daten enthält:\n", + "Laden Sie die erforderlichen Bibliotheken und den Datensatz. Konvertieren Sie die Daten in ein DataFrame, das eine Teilmenge der Daten enthält:\n", "\n", - "- Nur Kürbisse berücksichtigen, die pro Scheffel bepreist sind\n", - "- Das Datum in einen Monat umwandeln\n", - "- Den Preis als Durchschnitt aus Höchst- und Tiefstpreisen berechnen\n", - "- Den Preis so umrechnen, dass er die Preisgestaltung pro Scheffelmenge widerspiegelt\n" + "- Nur Kürbisse, die pro Scheffel bepreist sind\n", + "- Konvertieren Sie das Datum in einen Monat\n", + "- Berechnen Sie den Preis als Durchschnitt aus Höchst- und Tiefstpreis\n", + "- Passen Sie den Preis an die Preisgestaltung pro Scheffelmenge an\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ein Streudiagramm erinnert uns daran, dass wir nur Monatsdaten von August bis Dezember haben. Wir benötigen wahrscheinlich mehr Daten, um Schlussfolgerungen auf lineare Weise ziehen zu können.\n" + "Ein Streudiagramm erinnert uns daran, dass wir nur Monatsdaten von August bis Dezember haben. Wahrscheinlich benötigen wir mehr Daten, um in der Lage zu sein, linear gültige Schlussfolgerungen zu ziehen.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Schauen wir, ob eine Korrelation besteht:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Es sieht so aus, als ob die Korrelation ziemlich gering ist, aber es gibt eine andere, wichtigere Beziehung – denn die Preispunkte im obigen Diagramm scheinen mehrere unterschiedliche Cluster zu haben. Lassen Sie uns ein Diagramm erstellen, das verschiedene Kürbissorten zeigt:\n" + "Es sieht so aus, als sei die Korrelation ziemlich gering, aber es gibt eine andere wichtigere Beziehung – denn die Preiswerte im obigen Diagramm scheinen mehrere unterschiedliche Cluster zu bilden. Lassen Sie uns ein Diagramm erstellen, das verschiedene Kürbissorten zeigt:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Vorerst konzentrieren wir uns nur auf eine Sorte - **Kuchentyp**.\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Steigung der Linie kann aus den Koeffizienten der linearen Regression bestimmt werden:\n" + "Die Steigung der Geraden kann aus den Koeffizienten der linearen Regression bestimmt werden:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Polynomiale Regression\n", "\n", - "Manchmal ist die Beziehung zwischen Merkmalen und Ergebnissen von Natur aus nicht linear. Zum Beispiel könnten Kürbispreise im Winter (Monate=1,2) hoch sein, dann im Sommer (Monate=5-7) sinken und anschließend wieder steigen. Lineare Regression kann diese Beziehung nicht genau erfassen.\n", + "Manchmal ist die Beziehung zwischen den Merkmalen und den Ergebnissen von Natur aus nicht-linear. Zum Beispiel könnten Kürbispreise im Winter (Monate=1,2) hoch sein, dann im Sommer (Monate=5-7) fallen und anschließend wieder steigen. Die lineare Regression kann diese Beziehung nicht genau erfassen.\n", "\n", - "In diesem Fall könnten wir in Betracht ziehen, zusätzliche Merkmale hinzuzufügen. Eine einfache Methode ist die Verwendung von Polynomen aus Eingabemerkmalen, was zu einer **polynomialen Regression** führt. In Scikit Learn können wir polynomiale Merkmale automatisch mithilfe von Pipelines vorab berechnen:\n" + "In diesem Fall können wir in Betracht ziehen, zusätzliche Merkmale hinzuzufügen. Ein einfacher Weg ist die Verwendung von Polynomen aus Eingabemerkmalen, was zu einer **polynomialen Regression** führen würde. In Scikit Learn können wir polynomiale Merkmale automatisch mit Pipelines vorab berechnen: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kodierung von Sorten\n", + "### Sortenvarianten der Kodierung\n", "\n", - "In einer idealen Welt möchten wir in der Lage sein, die Preise für verschiedene Kürbissorten mit demselben Modell vorherzusagen. Um die Sorte zu berücksichtigen, müssen wir sie zunächst in numerische Form umwandeln, oder **kodieren**. Es gibt mehrere Möglichkeiten, dies zu tun:\n", + "In einer idealen Welt möchten wir mit demselben Modell die Preise für verschiedene Kürbissorten vorhersagen können. Um die Sorte zu berücksichtigen, müssen wir sie zunächst in eine numerische Form umwandeln oder **kodieren**. Es gibt mehrere Möglichkeiten, dies zu tun:\n", "\n", - "* Eine einfache numerische Kodierung, die eine Tabelle mit verschiedenen Sorten erstellt und dann den Sortennamen durch einen Index in dieser Tabelle ersetzt. Dies ist keine gute Idee für die lineare Regression, da die lineare Regression den numerischen Wert des Index berücksichtigt und dieser numerische Wert wahrscheinlich nicht numerisch mit dem Preis korreliert.\n", - "* One-Hot-Encoding, das die `Variety`-Spalte durch 4 verschiedene Spalten ersetzt, eine für jede Sorte, die 1 enthält, wenn die entsprechende Zeile zur angegebenen Sorte gehört, und 0, wenn nicht.\n", + "* Einfache numerische Kodierung, die eine Tabelle verschiedener Sorten erstellt und dann den Sortennamen durch einen Index in dieser Tabelle ersetzt. Dies ist keine gute Idee für die lineare Regression, da die lineare Regression den numerischen Wert des Index berücksichtigt und der numerische Wert wahrscheinlich nicht numerisch mit dem Preis korreliert.\n", + "* One-Hot-Kodierung, bei der die `Variety`-Spalte durch 4 verschiedene Spalten ersetzt wird, eine für jede Sorte, die 1 enthält, wenn die entsprechende Zeile zur gegebenen Sorte gehört, und sonst 0.\n", "\n", - "Der folgende Code zeigt, wie wir eine Sorte mit One-Hot-Encoding kodieren können:\n" + "Der folgende Code zeigt, wie man eine Sorte one-hot kodieren kann:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Lineare Regression auf Sorten\n", + "### Lineare Regression auf Sorte\n", "\n", - "Wir verwenden nun denselben Code wie oben, aber anstelle von `DayOfYear` nutzen wir unsere one-hot-codierte Sorte als Eingabe:\n" + "Wir werden nun den gleichen Code wie oben verwenden, aber anstelle von `DayOfYear` verwenden wir unsere One-Hot-codierte Sorte als Eingabe:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wir können auch versuchen, andere Funktionen auf die gleiche Weise zu verwenden und sie mit numerischen Merkmalen wie `Month` oder `DayOfYear` zu kombinieren:\n" + "Wir können auch versuchen, andere Merkmale auf dieselbe Weise zu verwenden und sie mit numerischen Merkmalen wie `Month` oder `DayOfYear` zu kombinieren:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polynomiale Regression\n", "\n", - "Polynomiale Regression kann auch mit kategorialen Merkmalen verwendet werden, die als One-Hot-Encoding dargestellt sind. Der Code zum Trainieren der polynomialen Regression wäre im Wesentlichen derselbe wie oben gezeigt.\n" + "Polynomiale Regression kann auch mit kategorialen Merkmalen verwendet werden, die im One-Hot-Encoding vorliegen. Der Code zum Trainieren der polynomialen Regression wäre im Wesentlichen derselbe wie oben gesehen.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Haftungsausschluss**: \nDieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.\n" + "---\n\n\n**Haftungsausschluss**: \nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, können automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T01:04:13+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "de" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ru/.co-op-translator.json b/translations/ru/.co-op-translator.json index 37d10b4677..fe9e215673 100644 --- a/translations/ru/.co-op-translator.json +++ b/translations/ru/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ru" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T08:32:15+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:12:52+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ru" }, @@ -90,8 +90,8 @@ "language_code": "ru" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T15:59:23+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:12:31+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ru" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ru" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:09:56+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ru" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T08:25:03+00:00", diff --git a/translations/ru/1-Introduction/4-techniques-of-ML/README.md b/translations/ru/1-Introduction/4-techniques-of-ML/README.md index eeeb71f233..03bda0678b 100644 --- a/translations/ru/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ru/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Техники машинного обучения -Процесс создания, использования и поддержки моделей машинного обучения и данных, которые они используют, сильно отличается от многих других рабочих процессов разработки. В этом уроке мы разберем этот процесс и выделим основные техники, которые вам нужно знать. Вы: +Процесс создания, использования и поддержки моделей машинного обучения и данных, которые они используют, сильно отличается от многих других рабочих процессов разработки. В этом уроке мы разберём этот процесс и обозначим основные техники, которые вам нужно знать. Вы узнаете: -- Поймете процессы, лежащие в основе машинного обучения, на высоком уровне. -- Изучите базовые концепции, такие как "модели", "предсказания" и "обучающие данные". +- Поймёте основные процессы, лежащие в основе машинного обучения. +- Изучите базовые понятия, такие как «модели», «предсказания» и «обучающие данные». -## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/) +## [Квиз перед лекцией](https://ff-quizzes.netlify.app/en/ml/) -[![Машинное обучение для начинающих - Техники машинного обучения](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Машинное обучение для начинающих - Техники машинного обучения") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") > 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео по этому уроку. ## Введение -На высоком уровне процесс создания машинного обучения (ML) состоит из нескольких шагов: +На высоком уровне искусство создания процессов машинного обучения (ML) состоит из нескольких этапов: -1. **Определите вопрос**. Большинство процессов ML начинается с постановки вопроса, на который нельзя ответить с помощью простой программы с условиями или движка на основе правил. Эти вопросы часто связаны с предсказаниями на основе набора данных. -2. **Соберите и подготовьте данные**. Чтобы ответить на ваш вопрос, вам нужны данные. Качество и, иногда, количество ваших данных определят, насколько хорошо вы сможете ответить на начальный вопрос. Визуализация данных — важный аспект этого этапа. Этот этап также включает разделение данных на обучающую и тестовую группы для построения модели. -3. **Выберите метод обучения**. В зависимости от вашего вопроса и природы данных вам нужно выбрать, как вы хотите обучить модель, чтобы она лучше отражала данные и делала точные предсказания. Эта часть процесса ML требует специфической экспертизы и, часто, значительного количества экспериментов. -4. **Обучите модель**. Используя обучающие данные, вы применяете различные алгоритмы для обучения модели распознаванию закономерностей в данных. Модель может использовать внутренние веса, которые можно корректировать, чтобы выделять определенные части данных для улучшения модели. -5. **Оцените модель**. Вы используете данные, которые модель ранее не видела (ваши тестовые данные), чтобы проверить, как она работает. -6. **Настройка параметров**. На основе производительности модели вы можете повторить процесс, используя разные параметры или переменные, которые контролируют поведение алгоритмов, используемых для обучения модели. -7. **Предсказание**. Используйте новые входные данные, чтобы проверить точность вашей модели. +1. **Определить вопрос**. Большинство процессов ML начинается с вопроса, на который нельзя ответить с помощью простой условной программы или системы правил. Такие вопросы часто касаются прогнозов на основе набора данных. +2. **Собрать и подготовить данные**. Чтобы ответить на ваш вопрос, вам нужны данные. Качество и, иногда, количество ваших данных определяют, насколько хорошо вы сможете ответить на исходный вопрос. Визуализация данных — важный аспект этого этапа. На этом шаге также данные разделяются на обучающую и тестовую группы для построения модели. +3. **Выбрать метод обучения**. В зависимости от вашего вопроса и характера данных, необходимо решить, как обучить модель так, чтобы она отражала данные и делала точные прогнозы. Эта часть процесса ML требует специфических знаний и часто значительного количества экспериментов. +4. **Обучить модель**. Используя обучающие данные, вы применяете различные алгоритмы для обучения модели распознавать паттерны в данных. Модель может использовать внутренние веса, которые регулируются для повышения качества модели за счёт приоритизации определённых частей данных. +5. **Оценить модель**. Вы используете ранее не виденные данные (тестовый набор), чтобы проверить качество работы модели. +6. **Настройка параметров**. На основе производительности модели вы можете повторить процесс, изменяя параметры или переменные, управляющие поведением алгоритмов обучения. +7. **Сделать прогноз**. Используйте новые данные для проверки точности модели. -## Какой вопрос задать +## Какой вопрос задавать -Компьютеры особенно хороши в обнаружении скрытых закономерностей в данных. Эта способность очень полезна для исследователей, у которых есть вопросы о конкретной области, на которые нельзя легко ответить, создавая движок на основе правил. Например, при актуарной задаче аналитик данных может создать набор правил, связанных со смертностью курильщиков и некурящих. +Компьютеры особенно хорошо умеют обнаруживать скрытые паттерны в данных. Это очень полезно для исследователей, у которых есть вопросы по определённой области, на которые сложно ответить с помощью правил. Например, для актуарной задачи учёный данных может создать вручную набор правил о смертности курильщиков и некурящих. -Однако, когда в уравнение добавляется множество других переменных, модель ML может оказаться более эффективной для предсказания будущих показателей смертности на основе истории здоровья. Более жизнерадостный пример — предсказание погоды на апрель в определенном месте на основе данных, включающих широту, долготу, изменения климата, близость к океану, паттерны струйных течений и многое другое. +Однако при добавлении множества других переменных модель ML может оказаться эффективнее для предсказания будущих показателей смертности на основе истории здоровья. Более приятный пример — прогноз погоды на апрель в конкретном месте с учётом широты, долготы, изменения климата, близости к океану, паттернов струйного течения и прочего. -✅ Эта [презентация](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) о погодных моделях предлагает историческую перспективу использования ML в анализе погоды. +✅ Эта [презентация](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) по моделям погоды даёт историческую перспективу использования ML в анализе погоды. -## Задачи перед построением модели +## Задачи до начала построения модели -Перед началом создания модели есть несколько задач, которые нужно выполнить. Чтобы проверить ваш вопрос и сформировать гипотезу на основе предсказаний модели, необходимо определить и настроить несколько элементов. +Перед тем как начать строить модель, нужно выполнить несколько задач. Чтобы проверить ваш вопрос и выработать гипотезу на основе предсказаний модели, нужно определить и настроить несколько элементов. ### Данные -Чтобы ответить на ваш вопрос с какой-либо степенью уверенности, вам нужно достаточное количество данных нужного типа. На этом этапе нужно сделать две вещи: +Чтобы ответить на ваш вопрос с какой-либо уверенностью, вам нужно достаточное количество данных нужного типа. На этом этапе необходимо сделать два шага: -- **Соберите данные**. Учитывая предыдущий урок о справедливости в анализе данных, собирайте данные с осторожностью. Учитывайте источники данных, возможные встроенные предвзятости и документируйте их происхождение. -- **Подготовьте данные**. Процесс подготовки данных включает несколько шагов. Возможно, вам нужно будет объединить данные и нормализовать их, если они поступают из разных источников. Вы можете улучшить качество и количество данных различными методами, например, преобразуя строки в числа (как мы делаем в [Кластеризации](../../5-Clustering/1-Visualize/README.md)). Вы также можете сгенерировать новые данные на основе исходных (как мы делаем в [Классификации](../../4-Classification/1-Introduction/README.md)). Вы можете очистить и отредактировать данные (как мы сделаем перед уроком о [веб-приложении](../../3-Web-App/README.md)). Наконец, возможно, вам нужно будет рандомизировать и перемешать данные в зависимости от ваших методов обучения. +- **Собрать данные**. Учитывая урок о справедливости анализа данных, собирайте данные внимательно. Осознавайте источники данных, возможные при этом предвзятости и документируйте происхождение данных. +- **Подготовить данные**. Процесс подготовки данных включает несколько этапов. Возможно, нужно собрать данные вместе и нормализовать их, если они поступают из разных источников. Улучшить качество и количество данных можно с помощью методов, таких как преобразование строк в числа (как мы делаем в [кластеризации](../../5-Clustering/1-Visualize/README.md)). Можно сгенерировать новые данные на основе исходных (как в [классификации](../../4-Classification/1-Introduction/README.md)). Можно очистить и отредактировать данные (как мы сделаем перед уроком [веб-приложения](../../3-Web-App/README.md)). Наконец, необходимо может потребоваться рандомизация и перемешивание данных, в зависимости от техники обучения. -✅ После сбора и обработки данных уделите время, чтобы убедиться, что их структура позволит вам ответить на поставленный вопрос. Возможно, данные не подойдут для вашей задачи, как мы обнаруживаем в уроках по [Кластеризации](../../5-Clustering/1-Visualize/README.md)! +✅ После сбора и обработки данных уделите время проверке, подходит ли их форма для решения вашей задачи. Может оказаться, что данные не подходят для вашей задачи, как мы видим в уроках по [кластеризации](../../5-Clustering/1-Visualize/README.md)! ### Признаки и целевая переменная -[Признак](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — это измеряемое свойство ваших данных. Во многих наборах данных он представлен как заголовок столбца, например, "дата", "размер" или "цвет". Переменные признаков, обычно обозначаемые как `X` в коде, представляют входные данные, которые будут использоваться для обучения модели. +[Признак](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — измеримое свойство ваших данных. Во многих наборах данных он выражается названием столбца, например «дата», «размер» или «цвет». В коде переменная признака обычно обозначается как `X` и представляет входные данные для обучения модели. -Целевая переменная — это то, что вы пытаетесь предсказать. Целевая переменная, обычно обозначаемая как `y` в коде, представляет ответ на вопрос, который вы задаете своим данным: в декабре, какого **цвета** тыквы будут самыми дешевыми? В Сан-Франциско, в каких районах будет самая выгодная **цена** на недвижимость? Иногда целевая переменная также называется меткой. +Целевая переменная — это то, что вы хотите предсказать. Обычно в коде она обозначается как `y` и представляет ответ на вопрос, который вы задаёте данным: в декабре, какой **цвет** у тыкв будет самым дешёвым? В Сан-Франциско, в каких районах будет самая высокая **цена** на недвижимость? Целевую переменную иногда также называют меткой. -### Выбор переменных признаков +### Выбор признака -🎓 **Выбор признаков и извлечение признаков** Как выбрать переменные для построения модели? Вы, вероятно, пройдете процесс выбора признаков или их извлечения, чтобы выбрать подходящие переменные для наиболее производительной модели. Однако это не одно и то же: "Извлечение признаков создает новые признаки из функций исходных признаков, тогда как выбор признаков возвращает подмножество признаков." ([источник](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Отбор признаков и извлечение признаков** Как определить, какую переменную выбрать при построении модели? Вероятно, вы пройдёте процесс выбора признаков или их извлечения, чтобы выбрать правильные переменные для наиболее производительной модели. Однако это не одно и то же: «Извлечение признаков создаёт новые признаки из функций оригинальных, тогда как отбор признаков возвращает подмножество признаков.» ([источник](https://wikipedia.org/wiki/Feature_selection)) ### Визуализация данных -Важный инструмент в арсенале аналитика данных — это возможность визуализировать данные с помощью таких библиотек, как Seaborn или MatPlotLib. Визуализация данных может помочь вам обнаружить скрытые корреляции, которые можно использовать. Она также может выявить предвзятость или несбалансированность данных (как мы обнаруживаем в [Классификации](../../4-Classification/2-Classifiers-1/README.md)). +Важный инструмент в арсенале учёного данных — возможность визуализировать данные с помощью отличных библиотек, таких как Seaborn или MatPlotLib. Визуальное представление данных может помочь выявить скрытые корреляции, которые можно использовать. Визуализации могут также помочь выявить предвзятость или несбалансированные данные (как мы увидим в [классификации](../../4-Classification/2-Classifiers-1/README.md)). ### Разделение набора данных -Перед обучением необходимо разделить набор данных на две или более части неравного размера, которые все же хорошо представляют данные. +Перед обучением нужно разделить набор данных на две или более части разного размера, которые при этом хорошо представляют данные. -- **Обучение**. Эта часть набора данных используется для обучения модели. Она составляет основную часть исходного набора данных. -- **Тестирование**. Тестовый набор данных — это независимая группа данных, часто взятая из исходных данных, которую вы используете для проверки производительности построенной модели. -- **Валидация**. Валидационный набор — это меньшая независимая группа примеров, которую вы используете для настройки гиперпараметров или архитектуры модели, чтобы улучшить ее. В зависимости от размера ваших данных и поставленного вопроса вам может не понадобиться создавать этот третий набор (как мы отмечаем в [Прогнозировании временных рядов](../../7-TimeSeries/1-Introduction/README.md)). +- **Обучающий набор**. Часть данных, на которой обучается модель. Обычно это большая часть исходного набора. +- **Тестовый набор**. Независимая группа данных, обычно взятая из исходного набора, используемая для проверки качества построенной модели. +- **Валидационный набор**. Меньшая независимая группа примеров, используемая для настройки гиперпараметров или структуры модели для её улучшения. В зависимости от размера данных и вопроса, который вы задаёте, этот набор может не понадобиться (как мы отмечаем в [прогнозировании временных рядов](../../7-TimeSeries/1-Introduction/README.md)). ## Построение модели -Используя обучающие данные, ваша цель — построить модель, или статистическое представление ваших данных, с помощью различных алгоритмов для ее **обучения**. Обучение модели позволяет ей анализировать данные, делать предположения о закономерностях, которые она обнаруживает, и принимать или отвергать их. +Используя обучающие данные, вы стремитесь построить модель, или статистическое представление данных, с помощью различных алгоритмов для её **обучения**. Обучение модели означает подвергать её воздействию данных и позволять делать предположения о найденных паттернах, подтверждая или отвергая их. ### Выбор метода обучения -В зависимости от вашего вопроса и природы данных вы выберете метод обучения. Просматривая [документацию Scikit-learn](https://scikit-learn.org/stable/user_guide.html), которую мы используем в этом курсе, вы можете изучить множество способов обучения модели. В зависимости от вашего опыта вам, возможно, придется попробовать несколько методов, чтобы построить лучшую модель. Вы, скорее всего, пройдете процесс, в котором аналитики данных оценивают производительность модели, используя данные, которые она ранее не видела, проверяя точность, предвзятость и другие проблемы, ухудшающие качество, и выбирая наиболее подходящий метод обучения для текущей задачи. +В зависимости от вашего вопроса и характера данных вы выбираете метод обучения. Перебрав документацию [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), которую мы используем в курсе, вы можете исследовать множество способов обучения моделей. Вероятно, вам придётся попробовать несколько методов, чтобы построить лучшую модель. Учёные данных часто оценивают производительность модели, подавая ей невиденные данные, проверяя точность, наличие смещения и другие проблемы, влияющие на качество, и выбирают наиболее подходящий метод обучения. ### Обучение модели -Имея обучающие данные, вы готовы "подогнать" их для создания модели. Вы заметите, что во многих библиотеках ML используется код 'model.fit' — именно в этот момент вы передаете переменные признаков в виде массива значений (обычно 'X') и целевую переменную (обычно 'y'). +Имея обучающие данные, вы готовы «подогнать» модель. Многие ML-библиотеки имеют код с вызовом 'model.fit' — именно тогда вы передаёте переменную признаков в виде массива значений (обычно 'X') и целевую переменную (обычно 'y'). ### Оценка модели -После завершения процесса обучения (для больших моделей это может занять много итераций, или "эпох") вы сможете оценить качество модели, используя тестовые данные для проверки ее производительности. Эти данные — подмножество исходных данных, которые модель ранее не анализировала. Вы можете вывести таблицу метрик, характеризующих качество вашей модели. +После завершения обучения (которое может занимать множество итераций, или «эпох», для большой модели) вы сможете оценить качество модели, используя тестовые данные для проверки её производительности. Это подмножество исходных данных, которые модель ранее не видела. Можно вывести таблицу с метриками качества модели. 🎓 **Подгонка модели** -В контексте машинного обучения подгонка модели относится к точности функции модели при анализе данных, с которыми она не знакома. +В контексте машинного обучения подгонка модели отражает точность базовой функции модели при анализе незнакомых ей данных. -🎓 **Недообучение** и **переобучение** — это распространенные проблемы, которые ухудшают качество модели, когда она либо недостаточно хорошо, либо слишком хорошо подстраивается под данные. Это приводит к тому, что модель делает предсказания либо слишком точно соответствующие, либо слишком далекие от обучающих данных. Переобученная модель слишком хорошо предсказывает обучающие данные, так как она слишком детально изучила их особенности и шум. Недообученная модель неточна, так как она не может точно анализировать ни обучающие данные, ни данные, которые она еще не "видела". +🎓 **Недообучение** и **переобучение** — распространённые проблемы, ухудшающие качество модели, когда модель либо недостаточно хорошо, либо слишком хорошо подгоняется под обучающие данные. Переобученная модель слишком точно повторяет детали и шум обучающих данных. Недообученная модель не способна точно анализировать ни обучающие данные, ни новые данные. -![переобучение модели](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/ru/overfitting.1c132d92bfd93cb6.webp) > Инфографика от [Jen Looper](https://twitter.com/jenlooper) ## Настройка параметров -После завершения начального обучения наблюдайте за качеством модели и подумайте о ее улучшении, изменяя "гиперпараметры". Подробнее о процессе можно прочитать [в документации](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +После первичного обучения наблюдайте за качеством модели и подумайте о её улучшении путём настройки «гиперпараметров». Подробнее об этом процессе читайте [в документации](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Предсказание +## Прогнозирование -Это момент, когда вы можете использовать совершенно новые данные, чтобы проверить точность вашей модели. В "прикладной" среде ML, где вы создаете веб-ресурсы для использования модели в производстве, этот процесс может включать сбор пользовательских данных (например, нажатие кнопки), чтобы задать переменную и отправить ее в модель для вывода или оценки. +Это момент, когда можно использовать совершенно новые данные для проверки точности модели. В прикладном ML, где вы создаёте веб-активы для использования модели в продакшене, этот процесс может включать сбор пользовательских данных (например, нажатие кнопки) для установки переменной и передачи её модели для вывода (инференса). -В этих уроках вы узнаете, как использовать эти шаги для подготовки, построения, тестирования, оценки и предсказания — все это навыки аналитика данных и многое другое, что поможет вам стать "полноценным" инженером ML. +В этих уроках вы узнаете, как использовать эти шаги для подготовки, построения, тестирования, оценки и предсказания — все действия учёного данных и даже больше по мере вашего развития как «full stack» ML инженера. --- -## 🚀Задание +## 🚀 Задание -Нарисуйте блок-схему, отражающую шаги работы специалиста по ML. На каком этапе процесса вы видите себя сейчас? Где, по вашему мнению, вы столкнетесь с трудностями? Что кажется вам легким? +Нарисуйте блок-схему, отражающую шаги специалиста по ML. Где вы сейчас находитесь в этом процессе? Где, по вашему мнению, возникнут сложности? Что кажется простым? -## [Тест после лекции](https://ff-quizzes.netlify.app/en/ml/) +## [Квиз после лекции](https://ff-quizzes.netlify.app/en/ml/) ## Обзор и самостоятельное изучение -Найдите в интернете интервью с аналитиками данных, которые рассказывают о своей повседневной работе. Вот [одно из них](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Ищите в интернете интервью с учёными данных, которые рассказывают о своей повседневной работе. Вот [одно из них](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Задание +## Домашнее задание -[Возьмите интервью у аналитика данных](assignment.md) +[Возьмите интервью у учёного данных](assignment.md) --- + **Отказ от ответственности**: -Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file +Этот документ был переведен с помощью сервиса AI-перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, обращаем ваше внимание, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или ошибки в интерпретации, возникающие при использовании данного перевода. + \ No newline at end of file diff --git a/translations/ru/2-Regression/3-Linear/README.md b/translations/ru/2-Regression/3-Linear/README.md index 0baa54d064..11737c5851 100644 --- a/translations/ru/2-Regression/3-Linear/README.md +++ b/translations/ru/2-Regression/3-Linear/README.md @@ -1,138 +1,136 @@ -# Создание регрессионной модели с помощью Scikit-learn: четыре подхода к регрессии +# Построение модели регрессии с использованием Scikit-learn: регрессия четырьмя способами ## Заметка для начинающих -Линейная регрессия используется, когда мы хотим предсказать **числовое значение** (например, цену дома, температуру или продажи). -Она работает путем нахождения прямой линии, которая лучше всего описывает зависимость между входными признаками и выходным значением. +Линейная регрессия используется, когда мы хотим предсказать **числовое значение** (например, цену на дом, температуру или продажи). +Она работает, находя прямую линию, которая лучше всего отражает зависимость между входными признаками и выходным значением. -В этом уроке мы сосредоточимся на понимании концепции, прежде чем изучать более сложные методы регрессии. -![Линейная и полиномиальная регрессия инфографика](../../../../translated_images/ru/linear-polynomial.5523c7cb6576ccab.webp) +В этом уроке мы сосредоточимся на понимании концепции, прежде чем изучать более продвинутые методы регрессии. +![Инфографика линейной и полиномиальной регрессии](../../../../translated_images/ru/linear-polynomial.5523c7cb6576ccab.webp) > Инфографика от [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Прекурс по уроку](https://ff-quizzes.netlify.app/en/ml/) -## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/) +> ### [Этот урок доступен на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Введение -> ### [Этот урок доступен на языке R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +До сих пор вы изучали, что такое регрессия, используя пример с данными по ценам на тыквы, которые мы будем использовать в течение всего урока. Вы также визуализировали эти данные с помощью Matplotlib. -### Введение +Теперь вы готовы углубиться в регрессию для машинного обучения. В то время как визуализация помогает понять данные, настоящая сила машинного обучения заключается в _обучении моделей_. Модели обучаются на исторических данных, чтобы автоматически улавливать зависимости, и позволяют предсказывать результаты для новых данных, которых модель ранее не видела. -До сих пор вы изучали, что такое регрессия, на примере данных о ценах на тыквы, которые мы будем использовать на протяжении всего урока. Вы также визуализировали эти данные с помощью Matplotlib. +В этом уроке вы узнаете больше о двух типах регрессии: _базовой линейной регрессии_ и _полиномиальной регрессии_, а также о математике, лежащей в основе этих методов. Эти модели позволят нам предсказывать цены на тыквы в зависимости от различных входных данных. -Теперь вы готовы погрузиться глубже в регрессию для машинного обучения. Визуализация помогает лучше понять данные, но настоящая сила машинного обучения заключается в _обучении моделей_. Модели обучаются на исторических данных, чтобы автоматически выявлять зависимости и позволяют делать прогнозы для новых данных, которых модель ранее не видела. +[![Машинное обучение для начинающих - понимание линейной регрессии](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -В этом уроке вы узнаете больше о двух типах регрессии: _базовой линейной регрессии_ и _полиномиальной регрессии_, а также познакомитесь с математикой, лежащей в основе этих методов. Эти модели позволят нам предсказывать цены на тыквы в зависимости от различных входных данных. +> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеообзор линейной регрессии. -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +> В течение всего курса мы предполагаем минимальные знания математики и стараемся сделать его доступным для студентов из других областей, поэтому внимательнее следите за заметками, 🧮 подсказками, диаграммами и другими учебными материалами для облегчения понимания. -> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео с обзором линейной регрессии. +### Предварительные знания -> В этом курсе мы предполагаем минимальные знания математики и стараемся сделать материал доступным для студентов из других областей, поэтому обращайте внимание на дополнительные заметки, 🧮 пояснения, диаграммы и другие инструменты для обучения. - -### Предпосылки - -К этому моменту вы должны быть знакомы со структурой данных по тыквам, которые мы рассматриваем. Они уже загружены и очищены в файле _notebook.ipynb_ этого урока. В файле цена за бушель отображается в новом датафрейме. Убедитесь, что вы можете запускать эти ноутбуки в среде Visual Studio Code. +Вы уже должны быть знакомы со структурой данных о тыквах, которую мы рассматриваем. Вы можете найти их предварительно загруженными и очищенными в файле _notebook.ipynb_, прилагающемся к этому уроку. В этом файле цена тыквы отображается за бушель в новом датафрейме. Убедитесь, что вы можете запускать эти ноутбуки в ядрах Visual Studio Code. ### Подготовка -Напоминаем, что вы загружаете эти данные, чтобы задавать к ним вопросы. +Напоминаем, что вы загружаете эти данные, чтобы задавать вопросы. -- Когда лучше всего покупать тыквы? -- Какую цену можно ожидать за ящик миниатюрных тыкв? -- Стоит ли покупать их в корзинах на полбушеля или ящиках на 1 1/9 бушеля? -Давайте продолжим исследовать эти данные. +- Когда лучше всего покупать тыквы? +- Какую цену можно ожидать за коробку миниатюрных тыкв? +- Нужно ли покупать их в корзинах на полбушеля или в ящиках 1 1/9 бушеля? +Продолжим изучать эти данные. -В предыдущем уроке вы создали датафрейм Pandas и заполнили его частью исходных данных, стандартизировав цены по бушелю. Однако этим вы смогли собрать около 400 точек данных и только за осенние месяцы. +В предыдущем уроке вы создали Pandas DataFrame и заполнили его частью исходного набора данных, стандартизировав цены за бушель. Однако при этом вы получили около 400 точек данных и только за осенние месяцы. -Взгляните на данные, которые мы предварительно загрузили в сопроводительном ноутбуке этого урока. Данные загружены и для них построен начальный график разброса, отображающий данные по месяцам. Может быть, мы сможем узнать чуть больше о природе данных, очистив их еще лучше. +Посмотрите на данные, которые мы предварительно загрузили в прилагаемом к уроку ноутбуке. Данные загружены, а также построен начальный диаграмма рассеяния по месяцам. Возможно, стоит очистить данные более тщательно, чтобы получить больше информации о природе данных. -## Линия линейной регрессии +## Линейная регрессионная линия -Как вы узнали в Уроке 1, цель упражнения по линейной регрессии — построить линию, которая будет: +Как вы узнали в Уроке 1, целью упражнения линейной регрессии является построение линии, чтобы: -- **Показывать взаимосвязь переменных.** Отобразить зависимость между переменными. -- **Делать прогнозы.** Точно предсказывать, где на линии окажется новая точка данных. +- **Показать взаимосвязи переменных**. Показать связь между переменными +- **Делать предсказания**. Точно предсказывать, где окажется новая точка данных относительно этой линии. -Часто для этого используется метод **наименьших квадратов**. Термин "наименьших квадратов" относится к процессу минимизации общей ошибки модели. Для каждой точки данных мы измеряем вертикальное расстояние (называемое остатком) между фактической точкой и нашей линией регрессии. +Обычно для этого рисуют линию методом **наименьших квадратов**. Термин «наименьших квадратов» относится к процессу минимизации общей ошибки в нашей модели. Для каждой точки данных мы измеряем вертикальное расстояние (называемое остатком) между фактической точкой и линией регрессии. -Мы возводим эти расстояния в квадрат по двум основным причинам: +Мы возводим эти расстояния в квадрат по двум причинам: -1. **Величина вместо направления:** Мы хотим, чтобы ошибка -5 рассматривалась так же, как ошибка +5. Возведение в квадрат превращает все значения в положительные. +1. **Размер, а не направление:** Мы хотим, чтобы ошибка -5 рассматривалась так же, как ошибка +5. Возведение в квадрат делает все значения положительными. -2. **Штрафование выбросов:** Квадрат больших ошибок увеличивает их вес, заставляя линию держаться ближе к отдалённым точкам. +2. **Штраф за выбросы:** Возведение в квадрат придаёт больший вес большим ошибкам, заставляя линию ближе подходить к точкам, которые сильно отклоняются. -Затем мы суммируем все эти квадраты. Наша цель — найти такую линию, для которой сумма будет минимальной — отсюда и название "наименьших квадратов". +Затем мы суммируем все эти квадраты. Цель – найти такую линию, где эта сумма будет минимальной — отсюда и название "Метод наименьших квадратов". -> **🧮 Покажите математику** -> -> Эта линия, называемая _линией наилучшего соответствия_, выражается [уравнением](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Покажите математику** +> +> Эта линия, называемая _линией наилучшего соответствия_, может быть выражена [уравнением](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` — «объясняющая переменная». `Y` — «зависимая переменная». Наклон линии — `b`, а `a` — y-пересечение, то есть значение `Y`, когда `X = 0`. -> ->![расчет наклона](../../../../translated_images/ru/slope.f3c9d5910ddbfcf9.webp) -> -> Сначала вычислите наклон `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper) -> -> Иными словами, ссылаясь на исходный вопрос наших данных по тыквам: "предсказать цену тыквы за бушель по месяцу", `X` будет означать цену, а `Y` — месяц продажи. -> ->![завершение уравнения](../../../../translated_images/ru/calculation.a209813050a1ddb1.webp) -> -> Вычислите значение Y. Если платите около 4 долларов, должно быть, это апрель! Инфографика от [Jen Looper](https://twitter.com/jenlooper) -> -> Математика, которая вычисляет линию, должна демонстрировать наклон линии, который также зависит от пересечения, т.е. где `Y` находится при `X = 0`. -> -> Метод вычисления этих значений можно посмотреть на сайте [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Также посетите [калькулятор наименьших квадратов](https://www.mathsisfun.com/data/least-squares-calculator.html), чтобы увидеть, как значения чисел влияют на линию. +> +> `X` — это «объясняющая переменная». `Y` — «зависимая переменная». Наклон линии обозначен как `b`, а `a` — это y-перехват, то есть значение `Y` при `X = 0`. +> +>![вычисление наклона](../../../../translated_images/ru/slope.f3c9d5910ddbfcf9.webp) +> +> Сначала вычислите наклон `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper) +> +> Другими словами, и ссылаясь на исходный вопрос нашего набора данных о тыквах: "предсказать цену тыквы за бушель по месяцу", `X` будет означать месяц, а `Y` — цену. +> +>![завершение уравнения](../../../../translated_images/ru/calculation.a209813050a1ddb1.webp) +> +> Вычислите значение Y. Если вы платите около $4, должно быть, сейчас апрель! Инфографика от [Jen Looper](https://twitter.com/jenlooper) +> +> Математика, которая вычисляет линию, должна демонстрировать наклон линии, зависящий также от перехвата, то есть того, где `Y` расположен при `X = 0`. +> +> Вы можете посмотреть метод расчёта этих значений на сайте [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Также посетите [этот калькулятор наименьших квадратов](https://www.mathsisfun.com/data/least-squares-calculator.html), чтобы увидеть, как значения чисел влияют на линию. ## Корреляция -Еще один термин, который нужно понять — это **коэффициент корреляции** между заданными переменными X и Y. Используя диаграмму рассеяния, вы можете быстро визуализировать этот коэффициент. Если точки на графике лежат вдоль аккуратной линии — корреляция высокая, а если разбросаны по всему пространству — корреляция низкая. +Еще один термин, который нужно понять — это **коэффициент корреляции** между переменными X и Y. Используя диаграмму рассеяния, можно быстро визуализировать этот коэффициент. Если точки на графике располагаются вдоль четкой линии, корреляция высокая, а если точки «разбросаны» повсюду, корреляция низкая. -Хорошая модель линейной регрессии имеет высокий коэффициент корреляции (ближе к 1, чем к 0), используя метод наименьших квадратов с линией регрессии. +Хорошая модель линейной регрессии — это та, у которой высокий (ближе к 1, чем к 0) коэффициент корреляции, рассчитанный методом наименьших квадратов с линией регрессии. -✅ Запустите ноутбук, который сопровождает этот урок, и посмотрите на диаграмму рассеяния «Месяц — Цена». Кажется ли вам, что данные связывают месяц и цену продажи тыкв с высокой или низкой корреляцией, согласно вашему визуальному восприятию графика? Изменится ли это, если использовать более мелкий масштаб вместо `Month`, например, *день в году* (т.е. количество дней с начала года)? +✅ Запустите ноутбук, прилагающийся к этому уроку, и посмотрите на диаграмму рассеяния «Месяц — Цена». Кажется ли вам, что данные, связывающие месяц с ценой продажи тыкв, имеют высокую или низкую корреляцию, по вашему визуальному восприятию диаграммы рассеяния? Изменится ли это, если использовать более детальную меру вместо `Месяца`, например, *номер дня в году* (количество дней с начала года)? -В приведенном ниже коде мы предположим, что данные были очищены, и получен датафрейм с именем `new_pumpkins`, подобный следующему: +В приведённом ниже коде будем считать, что мы очистили данные и получили DataFrame под названием `new_pumpkins`, примерно такого вида: -ID | Месяц | ДеньВГоду | Сорт | Город | Упаковка | Низкая цена | Высокая цена | Цена ----|-------|-----------|---------|------|---------|-------------|--------------|------ -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Код для очистки данных доступен в [`notebook.ipynb`](notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и рассчитали столбец `DayOfYear` с помощью следующего выражения: +> Код очистки данных доступен в файле [`notebook.ipynb`](notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и рассчитали столбец `DayOfYear` с помощью следующего выражения: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Теперь, когда у вас есть понимание математики, лежащей в основе линейной регрессии, давайте создадим регрессионную модель, чтобы посмотреть, сможем ли мы предсказать, какая упаковка тыкв будет иметь лучшие цены. Человеку, покупающему тыквы для праздничного тыквенного участка, эта информация может помочь оптимизировать закупки. + +Теперь, когда вы понимаете математику, лежащую в основе линейной регрессии, давайте создадим регрессионную модель, чтобы проверить, можем ли мы предсказывать, какой пакет тыкв будет иметь лучшую цену. Кто-то, покупающий тыквы для праздничного тыквенного огорода, может захотеть эту информацию, чтобы оптимизировать покупку пакетов тыкв для своей грядки. ## Поиск корреляции -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![Машинное обучение для начинающих - Поиск корреляции: ключ к линейной регрессии](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео с обзором корреляции. +> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеообзор корреляции. Из предыдущего урока вы, вероятно, видели, что средняя цена по месяцам выглядит так: Средняя цена по месяцам -Это говорит о том, что должна быть некоторая корреляция, и мы можем попробовать обучить модель линейной регрессии для предсказания связи между `Month` и `Price`, или `DayOfYear` и `Price`. Вот график разброса, показывающий последнюю связь: +Это говорит о том, что должна быть некоторая корреляция, и мы можем попробовать обучить модель линейной регрессии для предсказания связи между `Месяц` и `Ценой`, или между `День года` и `Ценой`. Ниже приведена диаграмма рассеяния, показывающая последнее взаимосвязь: -Диаграмма рассеяния Price против Day of Year +Диаграмма рассеяния цены по дню года -Давайте проверим корреляцию с помощью функции `corr`: +Давайте посмотрим, есть ли корреляция, используя функцию `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Похоже, что корреляция довольно мала — -0.15 для `Month` и -0.17 для `DayOfMonth`, но, возможно, есть другая важная зависимость. Судя по всему, имеются разные кластеры цен, соответствующие разным сортам тыкв. Чтобы подтвердить гипотезу, давайте отобразим каждый сорт тыкв разным цветом. Передавая параметр `ax` в функцию `scatter`, мы сможем вывести все точки на одном графике: + +Похоже, корреляция довольно низкая: -0.15 для `Месяца` и -0.17 для `Дня года`, но возможно существует другая важная взаимосвязь. Похоже, существуют разные кластеры цен, соответствующие разным сортам тыкв. Чтобы подтвердить гипотезу, давайте нанесём каждую категорию тыкв своим цветом. Передавая параметр `ax` функции `scatter`, мы можем нарисовать все точки на одном графике: ```python ax=None @@ -141,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - -Диаграмма рассеяния Price против Day of Year -Наше исследование показывает, что сорт влияет на общую цену сильнее, чем фактическая дата продажи. Мы можем увидеть это на столбчатой диаграмме: +Диаграмма рассеяния цены по дню года с цветами сортов + +Наше исследование показывает, что сорт больше влияет на общую цену, чем фактическая дата продажи. Это видно на столбчатой диаграмме: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - -Столбчатая диаграмма цена по сортам -Сконцентрируемся теперь на одном сорте тыкв — «pie type» — и посмотрим, какой эффект оказывает дата на цену: +Столбчатая диаграмма цены по сортам + +Давайте пока сосредоточимся только на одном сорте тыкв, «pie type», и посмотрим, какое влияние дата оказывает на цену: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Диаграмма рассеяния Price против Day of Year +Диаграмма рассеяния цены по дню года для сорта pie type -Если теперь вычислить корреляцию между `Price` и `DayOfYear` с помощью функции `corr`, мы получим значение около `-0.27` — это значит, что обучение прогностической модели целесообразно. +Если теперь вычислить корреляцию между `Price` и `DayOfYear` с помощью функции `corr`, мы получим примерно `-0.27` — что означает, что обучение предсказательной модели имеет смысл. -> Перед обучением модели линейной регрессии важно убедиться, что наши данные чисты. Линейная регрессия плохо работает с пропущенными значениями, поэтому имеет смысл удалить все пустые ячейки: +> Перед обучением модели линейной регрессии важно убедиться, что данные чисты. Линейная регрессия плохо работает с отсутствующими значениями, поэтому имеет смысл удалить все пустые ячейки: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Другим подходом может быть заполнение пустых значений средними значениями соответствующего столбца. + +Другой подход — заполнить отсутствующие значения средними значениями соответствующего столбца. ## Простая линейная регрессия -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![Машинное обучение для начинающих - Линейная и полиномиальная регрессия с использованием Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео с обзором линейной и полиномиальной регрессии. +> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеообзор линейной и полиномиальной регрессии. -Для обучения нашей модели линейной регрессии мы будем использовать библиотеку **Scikit-learn**. +Для обучения модели линейной регрессии мы будем использовать библиотеку **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Начнем с того, что отделим входные значения (признаки) и ожидаемый результат (метка) в отдельные массивы numpy: + +Начинаем с разделения входных значений (признаков) и ожидаемого выхода (меток) на отдельные numpy-массивы: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> Обратите внимание, что нам пришлось применить `reshape` к входным данным, чтобы библиотека линейной регрессии правильно их восприняла. Линейная регрессия ожидает на вход двумерный массив, где каждая строка массива соответствует вектору признаков. В нашем случае, поскольку у нас один вход, нам нужен массив формы N×1, где N — размер набора данных. -Далее необходимо разбить данные на тренировочную и тестовую выборки, чтобы потом проверить нашу модель после обучения: +> Обратите внимание, что нам пришлось выполнить `reshape` для входных данных, чтобы пакет Linear Regression правильно воспринял их. Линейная регрессия ожидает вход в виде 2D-массива, где каждая строка — это вектор входных признаков. В нашем случае, поскольку у нас только один признак, нужен массив формы N×1, где N — размер набора данных. + +Далее нам нужно разделить данные на обучающую и тестовую выборки, чтобы проверить модель после обучения: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Наконец, обучение самой модели линейной регрессии занимает всего две строки кода. Мы создаем объект `LinearRegression` и подгоняем модель под данные с помощью метода `fit`: + +Наконец, обучение самой модели линейной регрессии занимает всего две строчки кода. Мы создаём объект `LinearRegression` и обучаем его на данных с помощью метода `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Объект `LinearRegression` после выполнения `fit` содержит все коэффициенты регрессии, к которым можно получить доступ с помощью свойства `.coef_`. В нашем случае есть всего один коэффициент, который должен быть около `-0.017`. Это означает, что цены, по всей видимости, немного снижаются с течением времени, но незначительно, примерно на 2 цента в день. Мы также можем получить точку пересечения регрессии с осью Y с помощью `lin_reg.intercept_` — в нашем случае это будет около `21`, что указывает на цену в начале года. +Объект `LinearRegression` после выполнения `fit` содержит все коэффициенты регрессии, к которым можно получить доступ с помощью свойства `.coef_`. В нашем случае есть только один коэффициент, который должен быть примерно `-0.017`. Это означает, что цены, похоже, немного падают со временем, но не слишком сильно, примерно на 2 цента в день. Также мы можем получить точку пересечения регрессии с осью Y с помощью `lin_reg.intercept_` — в нашем случае это будет около `21`, что указывает на цену в начале года. -Чтобы посмотреть, насколько точна наша модель, мы можем предсказать цены на тестовом наборе данных, а затем измерить, насколько наши прогнозы близки к ожидаемым значениям. Это можно сделать с помощью метрики среднеквадратичной ошибки (RMSE), которая является корнем из среднего всех квадратичных разностей между ожидаемыми и предсказанными значениями. +Чтобы оценить точность нашей модели, мы можем спрогнозировать цены на тестовом наборе данных, а затем измерить, насколько близки наши прогнозы к ожидаемым значениям. Это можно сделать с помощью метрики корня из средней квадратичной ошибки (RMSE), которая является квадратным корнем из среднего по всем квадратам разностей между ожидаемым и предсказанным значением. ```python pred = lin_reg.predict(X_test) @@ -218,36 +216,36 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Наша ошибка кажется около 2 баллов, что примерно 17%. Не очень хорошо. Еще одним показателем качества модели является **коэффициент детерминации**, который можно получить следующим образом: +Наша ошибка составляет примерно 2 балла, что около ~17%. Не слишком хорошо. Еще одним показателем качества модели является **коэффициент детерминации**, который можно получить следующим образом: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Если значение равно 0, это значит, что модель не учитывает входные данные и действует как *худший линейный предсказатель*, который просто является средним значением результата. Значение 1 означает, что мы можем идеально предсказать все ожидаемые выходные данные. В нашем случае коэффициент около 0.06, что довольно низко. +Если значение равно 0, значит модель не учитывает входные данные и выступает как *худший линейный предсказатель*, то есть просто среднее значение результата. Значение 1 означает, что мы можем идеально предсказать все ожидаемые выходные данные. В нашем случае коэффициент около 0.06, что довольно низко. -Мы также можем построить график тестовых данных вместе с линией регрессии, чтобы лучше понять, как работает регрессия в нашем случае: +Мы также можем построить график тестовых данных вместе с линией регрессии, чтобы лучше увидеть, как работает регрессия в нашем случае: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` -Линейная регрессия +Linear regression ## Полиномиальная регрессия -Другим типом линейной регрессии является полиномиальная регрессия. Хотя иногда между переменными существует линейная связь — чем больше объем тыквы, тем выше цена — иногда эти связи нельзя изобразить как плоскость или прямую линию. +Другим типом линейной регрессии является полиномиальная регрессия. Хотя иногда между переменными есть линейная зависимость — чем больше объем тыквы, тем выше цена — иногда эти зависимости нельзя представить как плоскость или прямую линию. -✅ Вот [несколько дополнительных примеров](https://online.stat.psu.edu/stat501/lesson/9/9.8) данных, для которых можно применять полиномиальную регрессию +✅ Вот [еще несколько примеров](https://online.stat.psu.edu/stat501/lesson/9/9.8) данных, для которых можно использовать полиномиальную регрессию -Посмотрите еще раз на связь между датой и ценой. Кажется ли вам, что этот диаграмм рассеяния обязательно должен анализироваться прямой линией? Разве цены не могут колебаться? В таком случае можно попробовать полиномиальную регрессию. +Еще раз взгляните на зависимость между датой и ценой. Кажется ли вам, что эту диаграмму рассеяния обязательно нужно анализировать с помощью прямой линии? Разве цены не могут колебаться? В таком случае можно попробовать полиномиальную регрессию. -✅ Полиномы — это математические выражения, которые могут состоять из одной или нескольких переменных и коэффициентов. +✅ Полиномы — это математические выражения, которые могут состоять из одной или нескольких переменных и коэффициентов -Полиномиальная регрессия создает кривую, чтобы лучше подстроиться под нелинейные данные. В нашем случае, если мы включим переменную `DayOfYear` в квадрате в входные данные, мы сможем аппроксимировать наши данные параболой, которая будет иметь минимум в определенной точке в течение года. +Полиномиальная регрессия создает кривую линию, чтобы лучше подогнать нелинейные данные. В нашем случае, если мы добавим в данные входа переменную `DayOfYear` в квадрате, мы сможем подогнать данные параболической кривой, которая будет иметь минимум в определенной точке в течение года. -В Scikit-learn есть удобное [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) для объединения различных этапов обработки данных. **Pipeline** — это цепочка **оценивателей**. В нашем случае мы создадим pipeline, который сначала добавит полиномиальные признаки к нашей модели, а затем обучит регрессию: +В Scikit-learn есть полезный [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), который позволяет объединять разные этапы обработки данных вместе. **Pipeline** — это цепочка **оценивателей**. В нашем случае мы создадим pipeline, который сначала добавит полиномиальные признаки в нашу модель, а затем обучит регрессию: ```python from sklearn.preprocessing import PolynomialFeatures @@ -258,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Использование `PolynomialFeatures(2)` означает, что мы включим все полиномы второй степени из входных данных. В нашем случае это будет просто `DayOfYear`2, но для двух входных переменных X и Y это добавит X2, XY и Y2. Можно также использовать полиномы более высокого порядка при необходимости. +Использование `PolynomialFeatures(2)` означает, что мы включим все полиномы второй степени из входных данных. В нашем случае это будет просто `DayOfYear`2, но если у нас есть две переменные X и Y, это добавит X2, XY и Y2. Можно также использовать полиномы более высокой степени. + +Pipeline можно использовать так же, как исходный объект `LinearRegression`: мы можем выполнить `fit` для pipeline, а затем использовать `predict` для получения результатов прогноза: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Для построения гладкой кривой аппроксимации мы используем `np.linspace`, чтобы создать равномерный диапазон входных значений, а не рисовать напрямую на неупорядоченных тестовых данных (что дало бы зигзагообразную линию): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelines можно использовать так же, как и исходный объект `LinearRegression`, то есть мы можем выполнить `fit` для pipeline, а затем использовать `predict` для получения результатов предсказания. Вот график, показывающий тестовые данные и аппроксимирующую кривую: +Вот график с тестовыми данными и аппроксимационной кривой: -Полиномиальная регрессия +Polynomial regression -Используя полиномиальную регрессию, можно получить немного меньшую среднеквадратичную ошибку и более высокий коэффициент детерминации, но незначительно. Нужно учитывать и другие признаки! +Используя полиномиальную регрессию, мы можем получить немного меньшую RMSE и более высокий коэффициент детерминации, но не значительно. Нужно учитывать и другие признаки! -> Вы видите, что минимальные цены на тыквы наблюдаются где-то около Хэллоуина. Как вы это объясните? +> Вы можете заметить, что минимальные цены на тыквы-пай наблюдаются где-то около Хэллоуина. Как вы это объясните? -🎃 Поздравляем, вы только что создали модель, которая может помочь прогнозировать цену на тыквы для пирогов. Вероятно, вы сможете повторить ту же процедуру для всех видов тыкв, но это будет утомительно. Давайте теперь узнаем, как учесть сорт тыквы в нашей модели! +🎃 Поздравляем, вы только что создали модель, которая может помочь предсказывать цену на тыквы для пирога. Вероятно, вы сможете проделать ту же процедуру для всех типов тыкв, но это будет утомительно. Давайте теперь научимся учитывать сорт тыквы в нашей модели! ## Категориальные признаки -В идеальном мире мы хотели бы предсказывать цены для разных сортов тыкв, используя одну и ту же модель. Однако столбец `Variety` несколько отличается от таких колонок, как `Month`, потому что содержит нечисловые значения. Такие столбцы называются **категориальными**. +В идеале мы хотим иметь возможность предсказывать цены для разных сортов тыкв с помощью одной и той же модели. Однако столбец `Variety` несколько отличается от таких, как `Month`, потому что он содержит нечисловые значения. Подобные столбцы называются **категориальными**. -[![ML для начинающих - предсказания с категориальными признаками с помощью линейной регрессии](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML для начинающих - предсказания с категориальными признаками с помощью линейной регрессии") +[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео-обзор использования категориальных признаков. +> 🎥 Щелкните по изображению выше для краткого видеообзора использования категориальных признаков. -Здесь вы видите, как средняя цена зависит от сорта: +Здесь вы можете увидеть, как средняя цена зависит от сорта: -Средняя цена по сортам +Average price by variety -Чтобы учитывать сорт, нам сначала нужно преобразовать его в числовую форму, или **закодировать**. Существует несколько способов сделать это: +Чтобы учесть сорт, сначала нужно преобразовать его в числовой формат, то есть **закодировать**. Есть несколько способов сделать это: -* Простой **числовой кодировкой** составляется таблица различных сортов, а затем название сорта заменяется индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что она воспринимает числовое значение индекса как фактическое число и добавляет его к результату, умножая на коэффициент. В нашем случае связь между номером индекса и ценой явно нелинейная, даже если упорядочить индексы определённым образом. -* **One-hot кодировка** заменит столбец `Variety` на 4 разные столбца, по одному для каждого сорта. Каждый столбец будет содержать `1`, если соответствующая строка относится к данному сорту, и `0` в противном случае. Это означает, что в линейной регрессии будет четыре коэффициента, по одному для каждого сорта тыквы, отвечающие за "начальную цену" (точнее "дополнительную цену") для конкретного сорта. +* Простое **числовое кодирование** создаст таблицу различных сортов, а затем заменит название сорта индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что линейная регрессия воспринимает фактическое числовое значение индекса и добавляет его к результату, умножая на некоторый коэффициент. В нашем случае связь между номером индекса и ценой явно нелинейна, даже если индексы упорядочены каким-то определённым образом. +* **One-hot кодирование** заменит столбец `Variety` на 4 разных столбца, по одному для каждого сорта. Каждый столбец будет содержать `1`, если соответствующая строка относится к этому сорту, и `0` в противном случае. Это означает, что в линейной регрессии будет четыре коэффициента, по одному для каждого сорта тыквы, отвечающих за «начальную цену» (или скорее «дополнительную цену») для данного сорта. -Пример кода ниже показывает, как можно выполнить one-hot кодировку сорта: +Пример кода ниже показывает, как мы можем закодировать сорт с помощью one-hot: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -304,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Чтобы обучить линейную регрессию, используя one-hot кодированный сорт в качестве входных данных, нам просто нужно правильно инициализировать данные `X` и `y`: +Чтобы обучить линейную регрессию с one-hot кодировкой сорта в качестве входных данных, нам нужно просто правильно инициализировать данные `X` и `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Остальной код такой же, как мы использовали ранее для обучения линейной регрессии. Если вы попробуете, увидите, что среднеквадратическая ошибка примерно такая же, но коэффициент детерминации значительно выше (~77%). Чтобы получить еще более точные прогнозы, мы можем учитывать больше категориальных признаков, а также числовые признаки, например `Month` или `DayOfYear`. Чтобы получить один большой массив признаков, можно использовать `join`: +Остальная часть кода такая же, как и выше для обучения линейной регрессии. Если вы попробуете это, то увидите, что среднеквадратичная ошибка примерно та же, но коэффициент детерминации значительно выше (~77%). Чтобы получить еще более точные прогнозы, можно учесть больше категориальных признаков, а также числовые, такие как `Month` или `DayOfYear`. Чтобы получить один большой массив признаков, можно использовать `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -321,21 +341,21 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Здесь мы также учитываем `City` и тип `Package`, что дает нам MSE 2.84 (10%) и коэффициент детерминации 0.94! +Здесь мы также учитываем `City` и тип `Package`, что дает нам RMSE 2.84 (10.5%) и коэффициент детерминации 0.94! -## Объединяем все вместе +## Итог -Чтобы получить лучшую модель, мы можем использовать объединённые (one-hot кодированные категориальные + числовые) данные из приведённого выше примера вместе с полиномиальной регрессией. Вот полный код для вашего удобства: +Чтобы создать лучшую модель, мы можем использовать объединённые данные (one-hot кодированные категориальные + числовые) из приведенного выше примера вместе с полиномиальной регрессией. Вот полный код для вашего удобства: ```python -# подготовить обучающие данные +# подготовить тренировочные данные X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# разделить на обучающую и тестовую выборки +# сделать разделение на обучающую и тестовую выборки X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # настроить и обучить конвейер @@ -345,44 +365,44 @@ pipeline.fit(X_train,y_train) # предсказать результаты для тестовых данных pred = pipeline.predict(X_test) -# вычислить MSE и коэффициент детерминации -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# вычислить RMSE и коэффициент детерминации +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Это должно дать нам лучший коэффициент детерминации почти 97% и MSE=2.23 (~8% ошибка предсказания). +Это должно дать нам лучший коэффициент детерминации почти 97% и RMSE=2.23 (~8% ошибки предсказания). -| Модель | MSE | Коэффициент детерминации | +| Модель | RMSE | Коэффициент детерминации | |-------|-----|--------------------------| -| Линейная (`DayOfYear`) | 2.77 (17.2%) | 0.07 | -| Полиномиальная (`DayOfYear`) | 2.73 (17.0%) | 0.08 | -| Линейная (`Variety`) | 5.24 (19.7%) | 0.77 | -| Линейная (Все признаки) | 2.84 (10.5%) | 0.94 | -| Полиномиальная (Все признаки) | 2.23 (8.25%) | 0.97 | +| `DayOfYear` Линейная | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Полиномиальная | 2.73 (17.0%) | 0.08 | +| `Variety` Линейная | 5.24 (19.7%) | 0.77 | +| Все признаки Линейная | 2.84 (10.5%) | 0.94 | +| Все признаки Полиномиальная | 2.23 (8.25%) | 0.97 | -🏆 Отличная работа! Вы создали четыре модели регрессии в одном уроке и повысили качество модели до 97%. В последнем разделе по регрессии вы узнаете о логистической регрессии для определения категорий. +🏆 Отлично! Вы создали четыре модели регрессии за один урок и улучшили качество модели до 97%. В заключительном разделе про регрессию вы узнаете о логистической регрессии для определения категорий. --- ## 🚀Задание -Попробуйте несколько разных переменных в этой тетрадке, чтобы увидеть, как корреляция влияет на точность модели. +Попробуйте несколько разных переменных в этой тетрадке, чтобы увидеть, как корреляция соответствует точности модели. ## [Викторина после лекции](https://ff-quizzes.netlify.app/en/ml/) ## Обзор и самостоятельное изучение -В этом уроке мы изучили линейную регрессию. Существуют и другие важные типы регрессии. Ознакомьтесь с поэтапной, гребневой (Ridge), лассо (Lasso) и Elasticnet техниками. Хорошим курсом для изучения является [курс по статистическому обучению Стэнфорда](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +В этом уроке мы узнали о линейной регрессии. Существуют и другие важные виды регрессии. Изучите методы Stepwise, Ridge, Lasso и Elasticnet. Хорошим курсом для изучения является [курс по статистическому обучению в Стэнфорде](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Домашнее задание -[Постройте модель](assignment.md) +[Построить модель](assignment.md) --- **Отказ от ответственности**: -Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на то, что мы стремимся к точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для важной информации рекомендуется обратиться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода. +Этот документ был переведен с помощью сервиса машинного перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb index 8eafa720cd..2bcfa8b24b 100644 --- a/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Линейная и полиномиальная регрессия для определения цен на тыквы - Урок 3\n", + "## Линейная и полиномиальная регрессия для ценообразования тыкв - Урок 3\n", "\n", "Загрузите необходимые библиотеки и набор данных. Преобразуйте данные в датафрейм, содержащий подмножество данных:\n", "\n", - "- Оставьте только тыквы, цена которых указана за бушель\n", + "- Получите только тыквы, оцененные по бушелю\n", "- Преобразуйте дату в месяц\n", "- Рассчитайте цену как среднее значение между высокой и низкой ценой\n", - "- Преобразуйте цену, чтобы она отражала стоимость за количество в бушелях\n" + "- Преобразуйте цену с учётом цены за количество бушелей\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Диаграмма рассеяния напоминает нам, что у нас есть данные только за месяцы с августа по декабрь. Нам, вероятно, нужно больше данных, чтобы сделать выводы линейным образом.\n" + "Диаграмма рассеяния напоминает нам, что у нас есть данные только за месяцы с августа по декабрь. Вероятно, нам нужны дополнительные данные, чтобы иметь возможность делать выводы в линейном виде.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Давайте посмотрим, есть ли корреляция:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Похоже, корреляция довольно мала, но существует какая-то другая, более важная зависимость - потому что точки цен на графике выше, кажется, образуют несколько отдельных кластеров. Давайте создадим график, который покажет различные сорта тыквы:\n" + "Похоже, корреляция довольно мала, но существует какая-то другая, более важная связь — потому что ценовые точки на графике выше, похоже, образуют несколько отчетливых кластеров. Давайте сделаем график, который покажет разные сорта тыкв:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "На данный момент давайте сосредоточимся только на одном варианте — **тип пирога**.\n" + ] }, { "cell_type": "code", @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Мы можем использовать обученную модель для предсказания цены:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Полиномиальная регрессия\n", "\n", - "Иногда связь между признаками и результатами изначально является нелинейной. Например, цены на тыквы могут быть высокими зимой (месяцы=1,2), затем снижаться летом (месяцы=5-7), а потом снова повышаться. Линейная регрессия не может точно уловить эту зависимость.\n", + "Иногда зависимость между признаками и результатами является изначально нелинейной. Например, цены на тыквы могут быть высокими зимой (месяцы=1,2), затем снижаться летом (месяцы=5-7) и снова расти. Линейная регрессия не может точно отразить эту зависимость.\n", "\n", - "В таком случае можно рассмотреть добавление дополнительных признаков. Простой способ — использовать полиномы от входных признаков, что приведет к **полиномиальной регрессии**. В Scikit Learn мы можем автоматически предварительно вычислить полиномиальные признаки с помощью конвейеров:\n" + "В этом случае можно рассмотреть добавление дополнительных признаков. Простой способ — использовать полиномы от входных признаков, что приведет к **полиномиальной регрессии**. В Scikit Learn мы можем автоматически предварительно вычислить полиномиальные признаки с помощью пайплайнов: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Кодирование сортов\n", + "### Варианты кодирования\n", "\n", - "В идеальном мире мы хотим иметь возможность предсказывать цены для разных сортов тыквы, используя одну и ту же модель. Чтобы учитывать сорт, сначала нужно преобразовать его в числовую форму, или **закодировать**. Существует несколько способов сделать это:\n", + "В идеальном мире мы хотим иметь возможность предсказывать цены для разных сортов тыкв, используя одну и ту же модель. Чтобы учитывать сорт, нам сначала нужно преобразовать его в числовую форму, или **закодировать**. Существует несколько способов сделать это:\n", "\n", - "* Простое числовое кодирование, которое создаст таблицу различных сортов, а затем заменит название сорта на индекс в этой таблице. Это не лучший вариант для линейной регрессии, так как линейная регрессия учитывает числовое значение индекса, а числовое значение, скорее всего, не будет коррелировать с ценой.\n", - "* One-hot кодирование, которое заменит столбец `Variety` на 4 разных столбца, по одному для каждого сорта, где будет стоять 1, если соответствующая строка относится к данному сорту, и 0 в противном случае.\n", + "* Простое числовое кодирование, которое создаст таблицу различных сортов, а затем заменит название сорта индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что линейная регрессия учитывает числовое значение индекса, а числовое значение, скорее всего, не будет коррелировать численно с ценой.\n", + "* Кодирование методом one-hot, которое заменит столбец `Variety` на 4 разных столбца, по одному для каждого сорта, которые будут содержать 1, если соответствующая строка относится к данному сорту, и 0 — в противном случае.\n", "\n", - "Код ниже показывает, как можно выполнить one-hot кодирование сорта:\n" + "Ниже приведён код, показывающий, как можно выполнять кодирование методом one-hot для сорта:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Линейная регрессия на основе сорта\n", + "### Линейная регрессия по сорту\n", "\n", - "Теперь мы будем использовать тот же код, что и выше, но вместо `DayOfYear` будем использовать наш one-hot-encoded сорт в качестве входных данных:\n" + "Теперь мы будем использовать тот же код, что и выше, но вместо `DayOfYear` в качестве входных данных используем нашу закодированную с помощью one-hot переменную сорта:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Мы также можем попробовать использовать другие функции таким же образом, комбинируя их с числовыми функциями, такими как `Month` или `DayOfYear`:\n" + "Мы также можем попробовать использовать другие признаки таким же образом и комбинировать их с числовыми признаками, такими как `Month` или `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Полиномиальная регрессия\n", "\n", - "Полиномиальная регрессия также может быть использована с категориальными признаками, которые закодированы методом one-hot. Код для обучения полиномиальной регрессии будет практически таким же, как показано выше.\n" + "Полиномиальная регрессия также может использоваться с категориальными признаками, кодированными методом one-hot. Код для обучения полиномиальной регрессии будет по сути таким же, как мы видели выше.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Отказ от ответственности**: \nЭтот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.\n" + "---\n\n\n**Отказ от ответственности**: \nЭтот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для важной информации рекомендуется обращаться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T22:46:31+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ru" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 6790ef5b2f9696929dcb5e6bda1d49c7963c4a71 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 20:21:57 +0000 Subject: [PATCH 16/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/el/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 118 ++++--- .../el/2-Regression/3-Linear/README.md | 292 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 61 ++-- translations/sv/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 106 +++---- .../sv/2-Regression/3-Linear/README.md | 282 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 61 ++-- translations/th/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 112 +++---- .../th/2-Regression/3-Linear/README.md | 259 +++++++++------- .../3-Linear/solution/notebook.ipynb | 75 ++--- 12 files changed, 763 insertions(+), 645 deletions(-) diff --git a/translations/el/.co-op-translator.json b/translations/el/.co-op-translator.json index 01dfb4db97..5ded33d938 100644 --- a/translations/el/.co-op-translator.json +++ b/translations/el/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "el" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T00:27:54+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:19:07+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "el" }, @@ -90,8 +90,8 @@ "language_code": "el" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:12:29+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:18:24+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "el" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "el" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:16:11+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "el" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-04T23:31:10+00:00", diff --git a/translations/el/1-Introduction/4-techniques-of-ML/README.md b/translations/el/1-Introduction/4-techniques-of-ML/README.md index a86c2fa718..01ef3a5a65 100644 --- a/translations/el/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/el/1-Introduction/4-techniques-of-ML/README.md @@ -1,101 +1,125 @@ -# Τεχνικές Μηχανικής Μάθησης +# Τεχνικές της Μηχανικής Μάθησης -Η διαδικασία δημιουργίας, χρήσης και συντήρησης μοντέλων μηχανικής μάθησης και των δεδομένων που χρησιμοποιούν είναι πολύ διαφορετική από πολλές άλλες ροές εργασίας ανάπτυξης. Σε αυτό το μάθημα, θα απομυθοποιήσουμε τη διαδικασία και θα περιγράψουμε τις βασικές τεχνικές που πρέπει να γνωρίζετε. Θα: +Η διαδικασία δημιουργίας, χρήσης και συντήρησης μοντέλων μηχανικής μάθησης και των δεδομένων που χρησιμοποιούν είναι μια διαδικασία πολύ διαφορετική από πολλές άλλες ροές εργασίας ανάπτυξης. Σε αυτό το μάθημα, θα απομυθοποιήσουμε τη διαδικασία και θα περιγράψουμε τις βασικές τεχνικές που πρέπει να γνωρίζετε. Εσείς θα: -- Κατανοήσετε τις διαδικασίες που υποστηρίζουν τη μηχανική μάθηση σε υψηλό επίπεδο. -- Εξερευνήσετε βασικές έννοιες όπως "μοντέλα", "προβλέψεις" και "δεδομένα εκπαίδευσης". +- Κατανοήσετε τις διαδικασίες που στηρίζουν τη μηχανική μάθηση σε υψηλό επίπεδο. +- Εξερευνήσετε βασικές έννοιες όπως 'μοντέλα', 'προβλέψεις' και 'δεδομένα εκπαίδευσης'. ## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/) [![ML για αρχάριους - Τεχνικές Μηχανικής Μάθησης](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML για αρχάριους - Τεχνικές Μηχανικής Μάθησης") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο που επεξηγεί αυτό το μάθημα. +> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο που αναλύει αυτό το μάθημα. ## Εισαγωγή Σε υψηλό επίπεδο, η τέχνη της δημιουργίας διαδικασιών μηχανικής μάθησης (ML) αποτελείται από μια σειρά βημάτων: -1. **Αποφασίστε την ερώτηση**. Οι περισσότερες διαδικασίες ML ξεκινούν με την υποβολή μιας ερώτησης που δεν μπορεί να απαντηθεί με ένα απλό πρόγραμμα συνθηκών ή μια μηχανή βασισμένη σε κανόνες. Αυτές οι ερωτήσεις συχνά περιστρέφονται γύρω από προβλέψεις βασισμένες σε μια συλλογή δεδομένων. -2. **Συλλέξτε και προετοιμάστε δεδομένα**. Για να μπορέσετε να απαντήσετε στην ερώτησή σας, χρειάζεστε δεδομένα. Η ποιότητα και, μερικές φορές, η ποσότητα των δεδομένων σας θα καθορίσει πόσο καλά μπορείτε να απαντήσετε στην αρχική σας ερώτηση. Η οπτικοποίηση των δεδομένων είναι μια σημαντική πτυχή αυτής της φάσης. Αυτή η φάση περιλαμβάνει επίσης τη διαίρεση των δεδομένων σε ομάδες εκπαίδευσης και δοκιμής για τη δημιουργία ενός μοντέλου. -3. **Επιλέξτε μέθοδο εκπαίδευσης**. Ανάλογα με την ερώτησή σας και τη φύση των δεδομένων σας, πρέπει να επιλέξετε πώς θέλετε να εκπαιδεύσετε ένα μοντέλο ώστε να αντικατοπτρίζει καλύτερα τα δεδομένα σας και να κάνει ακριβείς προβλέψεις. Αυτό είναι το μέρος της διαδικασίας ML που απαιτεί συγκεκριμένη εξειδίκευση και, συχνά, σημαντική ποσότητα πειραματισμού. -4. **Εκπαιδεύστε το μοντέλο**. Χρησιμοποιώντας τα δεδομένα εκπαίδευσης, θα χρησιμοποιήσετε διάφορους αλγόριθμους για να εκπαιδεύσετε ένα μοντέλο ώστε να αναγνωρίζει μοτίβα στα δεδομένα. Το μοντέλο μπορεί να χρησιμοποιεί εσωτερικά βάρη που μπορούν να προσαρμοστούν για να δώσουν προτεραιότητα σε ορισμένα μέρη των δεδομένων έναντι άλλων για τη δημιουργία ενός καλύτερου μοντέλου. -5. **Αξιολογήστε το μοντέλο**. Χρησιμοποιείτε δεδομένα που δεν έχουν ξαναχρησιμοποιηθεί (τα δεδομένα δοκιμής σας) από το συλλεγμένο σύνολο για να δείτε πώς αποδίδει το μοντέλο. -6. **Ρύθμιση παραμέτρων**. Με βάση την απόδοση του μοντέλου σας, μπορείτε να επαναλάβετε τη διαδικασία χρησιμοποιώντας διαφορετικές παραμέτρους ή μεταβλητές που ελέγχουν τη συμπεριφορά των αλγορίθμων που χρησιμοποιούνται για την εκπαίδευση του μοντέλου. -7. **Προβλέψτε**. Χρησιμοποιήστε νέες εισόδους για να δοκιμάσετε την ακρίβεια του μοντέλου σας. +1. **Αποφασίστε την ερώτηση**. Οι περισσότερες διαδικασίες ML ξεκινούν θέτοντας μια ερώτηση που δεν μπορεί να απαντηθεί από ένα απλό προγραμματιστικό όρο ή ένα κανόνισμένο σύστημα βασισμένο σε κανόνες. Αυτές οι ερωτήσεις συχνά περιστρέφονται γύρω από προβλέψεις βάσει μιας συλλογής δεδομένων. +2. **Συλλογή και προετοιμασία δεδομένων**. Για να μπορέσετε να απαντήσετε στην ερώτησή σας, χρειάζεστε δεδομένα. Η ποιότητα και, μερικές φορές, η ποσότητα των δεδομένων σας θα καθορίσει πόσο καλά μπορείτε να απαντήσετε την αρχική σας ερώτηση. Ο οπτικοποίηση των δεδομένων είναι μια σημαντική πτυχή αυτής της φάσης. Αυτή η φάση περιλαμβάνει επίσης το διαχωρισμό των δεδομένων σε ομάδα εκπαίδευσης και δοκιμής για τη δημιουργία ενός μοντέλου. +3. **Επιλέξτε μια μέθοδο εκπαίδευσης**. Ανάλογα με την ερώτησή σας και τη φύση των δεδομένων σας, πρέπει να επιλέξετε πώς θέλετε να εκπαιδεύσετε ένα μοντέλο ώστε να αντανακλά καλύτερα τα δεδομένα σας και να κάνει ακριβείς προβλέψεις σε αυτά. Αυτό είναι το μέρος της διαδικασίας ML που απαιτεί εξειδίκευση και, συχνά, σημαντικό πείραμα. +4. **Εκπαιδεύστε το μοντέλο**. Χρησιμοποιώντας τα δεδομένα εκπαίδευσής σας, θα χρησιμοποιήσετε διάφορους αλγορίθμους για να εκπαιδεύσετε ένα μοντέλο ώστε να αναγνωρίζει μοτίβα στα δεδομένα. Το μοντέλο μπορεί να χρησιμοποιεί εσωτερικά βάρη που μπορούν να προσαρμοστούν για να δώσουν προτεραιότητα σε συγκεκριμένα μέρη των δεδομένων για να δημιουργηθεί καλύτερο μοντέλο. +5. **Αξιολογήστε το μοντέλο**. Χρησιμοποιείτε δεδομένα που δεν έχουν ξαναδει (τα δεδομένα δοκιμής) από το συλλεγμένο σύνολο για να δείτε πώς αποδίδει το μοντέλο. +6. **Ρύθμιση παραμέτρων**. Βάσει της απόδοσης του μοντέλου σας, μπορείτε να επαναλάβετε τη διαδικασία χρησιμοποιώντας διαφορετικές παραμέτρους ή μεταβλητές που ελέγχουν τη συμπεριφορά των αλγορίθμων που χρησιμοποιούνται για την εκπαίδευση του μοντέλου. +7. **Προβλέψτε**. Χρησιμοποιήστε νέα δεδομένα για να ελέγξετε την ακρίβεια του μοντέλου σας. ## Ποια ερώτηση να θέσετε -Οι υπολογιστές είναι ιδιαίτερα ικανοί στο να ανακαλύπτουν κρυφά μοτίβα στα δεδομένα. Αυτή η χρησιμότητα είναι πολύ χρήσιμη για ερευνητές που έχουν ερωτήσεις σχετικά με έναν συγκεκριμένο τομέα που δεν μπορούν να απαντηθούν εύκολα με τη δημιουργία μιας μηχανής βασισμένης σε κανόνες. Δεδομένης μιας αναλογιστικής εργασίας, για παράδειγμα, ένας επιστήμονας δεδομένων μπορεί να κατασκευάσει χειροποίητους κανόνες γύρω από τη θνησιμότητα των καπνιστών έναντι των μη καπνιστών. +Οι υπολογιστές είναι ιδιαίτερα ικανοί στο να ανακαλύπτουν κρυφά μοτίβα στα δεδομένα. Αυτή η χρησιμότητα είναι πολύτιμη για ερευνητές που έχουν ερωτήματα σχετικά με ένα δεδομένο πεδίο που δεν μπορούν να απαντηθούν εύκολα δημιουργώντας έναν κανόνισμένο κανόνα βασισμένο σε συνθήκες. Για παράδειγμα, σε μια πράξη επαγγέλματος, ένας επιστήμονας δεδομένων μπορεί να κατασκευάσει χειροποίητους κανόνες για τη θνησιμότητα καπνιστών έναντι μη καπνιστών. -Όταν όμως εισάγονται πολλές άλλες μεταβλητές στην εξίσωση, ένα μοντέλο ML μπορεί να αποδειχθεί πιο αποτελεσματικό για την πρόβλεψη μελλοντικών ποσοστών θνησιμότητας βάσει ιστορικού υγείας. Ένα πιο ευχάριστο παράδειγμα μπορεί να είναι η πρόβλεψη καιρού για τον μήνα Απρίλιο σε μια συγκεκριμένη τοποθεσία βάσει δεδομένων που περιλαμβάνουν γεωγραφικό πλάτος, γεωγραφικό μήκος, κλιματική αλλαγή, εγγύτητα στη θάλασσα, μοτίβα του αεροχειμάρρου και άλλα. +Όταν όμως πολλά άλλα μεταβλητά στοιχεία λαμβάνονται υπόψη, ένα μοντέλο ML μπορεί να αποδειχθεί πιο αποτελεσματικό για την πρόβλεψη μελλοντικών ποσοστών θνησιμότητας βάσει παρελθοντικού ιστορικού υγείας. Ένα πιο χαρούμενο παράδειγμα μπορεί να είναι η πρόβλεψη καιρού για τον μήνα Απρίλιο σε μια συγκεκριμένη τοποθεσία βάσει δεδομένων που περιλαμβάνουν γεωγραφικό πλάτος, μήκος, αλλαγή κλίματος, γειτνίαση με τον ωκεανό, μοτίβα του ρεύματος τζετ και άλλα. -✅ Αυτή η [παρουσίαση](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) σχετικά με μοντέλα καιρού προσφέρει μια ιστορική προοπτική για τη χρήση της ML στην ανάλυση καιρού. +✅ Αυτή η [παρουσίαση διαφανειών](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) για τα μοντέλα καιρού προσφέρει μια ιστορική προοπτική για τη χρήση ML στην ανάλυση του καιρού. -## Εργασίες πριν την κατασκευή +## Προκαταρκτικές εργασίες -Πριν ξεκινήσετε να δημιουργείτε το μοντέλο σας, υπάρχουν αρκετές εργασίες που πρέπει να ολοκληρώσετε. Για να δοκιμάσετε την ερώτησή σας και να σχηματίσετε μια υπόθεση βάσει των προβλέψεων ενός μοντέλου, πρέπει να εντοπίσετε και να διαμορφώσετε αρκετά στοιχεία. +Πριν ξεκινήσετε να χτίζετε το μοντέλο σας, υπάρχουν αρκετές εργασίες που πρέπει να ολοκληρώσετε. Για να δοκιμάσετε την ερώτησή σας και να δημιουργήσετε μια υπόθεση βάσει των προβλέψεων του μοντέλου, πρέπει να προσδιορίσετε και να διαμορφώσετε αρκετά στοιχεία. ### Δεδομένα -Για να μπορέσετε να απαντήσετε στην ερώτησή σας με οποιοδήποτε είδος βεβαιότητας, χρειάζεστε μια καλή ποσότητα δεδομένων του σωστού τύπου. Υπάρχουν δύο πράγματα που πρέπει να κάνετε σε αυτό το σημείο: +Για να μπορέσετε να απαντήσετε στην ερώτησή σας με κάποια βεβαιότητα, χρειάζεστε ικανοποιητική ποσότητα δεδομένων του σωστού τύπου. Υπάρχουν δύο πράγματα που πρέπει να κάνετε σε αυτό το σημείο: -- **Συλλογή δεδομένων**. Λαμβάνοντας υπόψη το προηγούμενο μάθημα σχετικά με τη δικαιοσύνη στην ανάλυση δεδομένων, συλλέξτε τα δεδομένα σας με προσοχή. Να είστε ενήμεροι για τις πηγές αυτών των δεδομένων, τυχόν εγγενείς προκαταλήψεις που μπορεί να έχουν και να τεκμηριώσετε την προέλευσή τους. -- **Προετοιμασία δεδομένων**. Υπάρχουν αρκετά βήματα στη διαδικασία προετοιμασίας δεδομένων. Ίσως χρειαστεί να συγκεντρώσετε δεδομένα και να τα κανονικοποιήσετε εάν προέρχονται από διαφορετικές πηγές. Μπορείτε να βελτιώσετε την ποιότητα και την ποσότητα των δεδομένων μέσω διάφορων μεθόδων, όπως η μετατροπή συμβολοσειρών σε αριθμούς (όπως κάνουμε στην [Ομαδοποίηση](../../5-Clustering/1-Visualize/README.md)). Ίσως επίσης να δημιουργήσετε νέα δεδομένα βάσει των αρχικών (όπως κάνουμε στην [Κατηγοριοποίηση](../../4-Classification/1-Introduction/README.md)). Μπορείτε να καθαρίσετε και να επεξεργαστείτε τα δεδομένα (όπως θα κάνουμε πριν το μάθημα [Web App](../../3-Web-App/README.md)). Τέλος, ίσως χρειαστεί να τα τυχαιοποιήσετε και να τα ανακατέψετε, ανάλογα με τις τεχνικές εκπαίδευσης που χρησιμοποιείτε. +- **Συλλογή δεδομένων**. Λαμβάνοντας υπόψη το προηγούμενο μάθημα για τη δικαιοσύνη στην ανάλυση δεδομένων, συλλέξτε τα δεδομένα σας με προσοχή. Να είστε ενήμεροι για τις πηγές των δεδομένων, για τυχόν εγγενείς προκαταλήψεις που μπορεί να έχουν και να καταγράψετε την προέλευσή τους. +- **Προετοιμασία δεδομένων**. Υπάρχουν πολλά βήματα στη διαδικασία προετοιμασίας δεδομένων. Μπορεί να χρειαστεί να συγκεντρώσετε δεδομένα και να τα κανονικοποιήσετε αν προέρχονται από διάφορες πηγές. Μπορείτε να βελτιώσετε την ποιότητα και την ποσότητα των δεδομένων με διάφορες μεθόδους, όπως η μετατροπή συμβολοσειρών σε αριθμούς (όπως κάνουμε στο [Ομαδοποίηση](../../5-Clustering/1-Visualize/README.md)). Μπορεί επίσης να δημιουργήσετε νέα δεδομένα βασισμένα στα αρχικά (όπως κάνουμε στην [Κατηγοριοποίηση](../../4-Classification/1-Introduction/README.md)). Μπορείτε να καθαρίσετε και να επεξεργαστείτε τα δεδομένα (όπως θα κάνουμε πριν από το μάθημα [Web App](../../3-Web-App/README.md)). Τέλος, μπορεί να χρειαστεί να τα τυχαία ανακατέψετε, ανάλογα με τις τεχνικές εκπαίδευσής σας. -✅ Αφού συλλέξετε και επεξεργαστείτε τα δεδομένα σας, αφιερώστε λίγο χρόνο για να δείτε αν η μορφή τους θα σας επιτρέψει να απαντήσετε στην ερώτηση που θέσατε. Μπορεί να διαπιστώσετε ότι τα δεδομένα δεν θα αποδώσουν καλά στην εργασία που έχετε θέσει, όπως ανακαλύπτουμε στα μαθήματα [Ομαδοποίησης](../../5-Clustering/1-Visualize/README.md)! +✅ Αφού συλλέξετε και επεξεργαστείτε τα δεδομένα σας, κάντε μια παύση για να δείτε αν το σχήμα τους θα σας επιτρέψει να απαντήσετε στην ερώτηση που έχετε θέσει. Μπορεί να συμβεί να μην αποδώσουν καλά τα δεδομένα στην εργασία σας, όπως ανακαλύπτουμε στα μαθήματα [Ομαδοποίησης](../../5-Clustering/1-Visualize/README.md)! -### Χαρακτηριστικά και Στόχος +### Χαρακτηριστικά και στόχος -Ένα [χαρακτηριστικό](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) είναι μια μετρήσιμη ιδιότητα των δεδομένων σας. Σε πολλά σύνολα δεδομένων εκφράζεται ως επικεφαλίδα στήλης όπως 'ημερομηνία', 'μέγεθος' ή 'χρώμα'. Η μεταβλητή χαρακτηριστικού σας, συνήθως εκπροσωπείται ως `X` στον κώδικα, αντιπροσωπεύει τη μεταβλητή εισόδου που θα χρησιμοποιηθεί για την εκπαίδευση του μοντέλου. +Ένα [χαρακτηριστικό](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) είναι μια μετρήσιμη ιδιότητα των δεδομένων σας. Σε πολλά σύνολα δεδομένων εκφράζεται ως επικεφαλίδα στήλης όπως 'ημερομηνία', 'μέγεθος' ή 'χρώμα'. Η μεταβλητή χαρακτηριστικού, συνήθως αναπαριστώμενη ως `X` στον κώδικα, αντιπροσωπεύει τη μεταβλητή εισόδου που θα χρησιμοποιηθεί για την εκπαίδευση ενός μοντέλου. -Ο στόχος είναι αυτό που προσπαθείτε να προβλέψετε. Ο στόχος, συνήθως εκπροσωπείται ως `y` στον κώδικα, αντιπροσωπεύει την απάντηση στην ερώτηση που προσπαθείτε να θέσετε στα δεδομένα σας: τον Δεκέμβριο, ποιο **χρώμα** κολοκύθες θα είναι οι φθηνότερες; Στο Σαν Φρανσίσκο, ποιες γειτονιές θα έχουν την καλύτερη **τιμή** ακινήτων; Μερικές φορές ο στόχος αναφέρεται επίσης ως χαρακτηριστικό ετικέτας. +Ένας στόχος είναι κάτι που προσπαθείτε να προβλέψετε. Ο στόχος, συνήθως αναπαριστώμενος ως `y` στον κώδικα, αντιπροσωπεύει την απάντηση στην ερώτηση που θέτετε στα δεδομένα σας: τον Δεκέμβριο, ποια **χρώμα** κολοκύθες θα είναι φθηνότερες; στο Σαν Φρανσίσκο, ποια γειτονιά θα έχει την καλύτερη **τιμή** ακινήτων; Μερικές φορές ο στόχος αναφέρεται επίσης ως ετικέτα. -### Επιλογή μεταβλητής χαρακτηριστικού +### Επιλογή της μεταβλητής χαρακτηριστικού σας -🎓 **Επιλογή Χαρακτηριστικών και Εξαγωγή Χαρακτηριστικών** Πώς ξέρετε ποια μεταβλητή να επιλέξετε όταν δημιουργείτε ένα μοντέλο; Πιθανότατα θα περάσετε από μια διαδικασία επιλογής χαρακτηριστικών ή εξαγωγής χαρακτηριστικών για να επιλέξετε τις σωστές μεταβλητές για το πιο αποδοτικό μοντέλο. Ωστόσο, δεν είναι το ίδιο πράγμα: "Η εξαγωγή χαρακτηριστικών δημιουργεί νέα χαρακτηριστικά από συναρτήσεις των αρχικών χαρακτηριστικών, ενώ η επιλογή χαρακτηριστικών επιστρέφει ένα υποσύνολο των χαρακτηριστικών." ([πηγή](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Επιλογή Χαρακτηριστικών και Εξαγωγή Χαρακτηριστικών** Πώς ξέρετε ποια μεταβλητή να επιλέξετε κατά την κατασκευή ενός μοντέλου; Πιθανώς θα περάσετε από μια διαδικασία επιλογής ή εξαγωγής χαρακτηριστικών για να διαλέξετε τις σωστές μεταβλητές για το πιο αποδοτικό μοντέλο. Δεν είναι το ίδιο όμως: "Η εξαγωγή χαρακτηριστικών δημιουργεί νέα χαρακτηριστικά από συναρτήσεις των αρχικών χαρακτηριστικών, ενώ η επιλογή χαρακτηριστικών επιστρέφει ένα υποσύνολο των χαρακτηριστικών." ([πηγή](https://wikipedia.org/wiki/Feature_selection)) -### Οπτικοποίηση των δεδομένων σας +### Οπτικοποιήστε τα δεδομένα σας -Μια σημαντική πτυχή του εργαλείου του επιστήμονα δεδομένων είναι η δύναμη να οπτικοποιεί δεδομένα χρησιμοποιώντας αρκετές εξαιρετικές βιβλιοθήκες όπως Seaborn ή MatPlotLib. Η αναπαράσταση των δεδομένων σας οπτικά μπορεί να σας επιτρέψει να ανακαλύψετε κρυφές συσχετίσεις που μπορείτε να αξιοποιήσετε. Οι οπτικοποιήσεις σας μπορεί επίσης να σας βοηθήσουν να ανακαλύψετε προκαταλήψεις ή μη ισορροπημένα δεδομένα (όπως ανακαλύπτουμε στην [Κατηγοριοποίηση](../../4-Classification/2-Classifiers-1/README.md)). +Μια σημαντική πτυχή των εργαλείων του επιστήμονα δεδομένων είναι η δυνατότητα οπτικοποίησης δεδομένων χρησιμοποιώντας αρκετές εξαιρετικές βιβλιοθήκες όπως Seaborn ή MatPlotLib. Η οπτική αναπαράσταση των δεδομένων σας μπορεί να σας επιτρέψει να αποκαλύψετε κρυφές συσχετίσεις που μπορείτε να αξιοποιήσετε. Οι οπτικοποιήσεις σας μπορεί επίσης να σας βοηθήσουν να ανακαλύψετε προκατάληψη ή ανομοιόμορφα κατανεμημένα δεδομένα (όπως ανακαλύπτουμε στην [Κατηγοριοποίηση](../../4-Classification/2-Classifiers-1/README.md)). -### Διαχωρισμός του συνόλου δεδομένων σας +### Διαχωρίστε το σύνολο δεδομένων σας -Πριν από την εκπαίδευση, πρέπει να διαχωρίσετε το σύνολο δεδομένων σας σε δύο ή περισσότερα μέρη άνισης μεγέθους που εξακολουθούν να αντιπροσωπεύουν καλά τα δεδομένα. +Προτού την εκπαίδευση, πρέπει να διαχωρίσετε το σύνολο δεδομένων σας σε δύο ή περισσότερα μέρη άνισου μεγέθους που όμως θα αντιπροσωπεύουν καλά τα δεδομένα. -- **Εκπαίδευση**. Αυτό το μέρος του συνόλου δεδομένων προσαρμόζεται στο μοντέλο σας για να το εκπαιδεύσει. Αυτό το σύνολο αποτελεί την πλειοψηφία του αρχικού συνόλου δεδομένων. -- **Δοκιμή**. Ένα σύνολο δεδομένων δοκιμής είναι μια ανεξάρτητη ομάδα δεδομένων, συχνά συγκεντρωμένη από τα αρχικά δεδομένα, που χρησιμοποιείτε για να επιβεβαιώσετε την απόδοση του μοντέλου που δημιουργήθηκε. -- **Επικύρωση**. Ένα σύνολο επικύρωσης είναι μια μικρότερη ανεξάρτητη ομάδα παραδειγμάτων που χρησιμοποιείτε για να ρυθμίσετε τις υπερπαραμέτρους ή την αρχιτεκτονική του μοντέλου για να το βελτιώσετε. Ανάλογα με το μέγεθος των δεδομένων σας και την ερώτηση που θέτετε, μπορεί να μην χρειαστεί να δημιουργήσετε αυτό το τρίτο σύνολο (όπως σημειώνουμε στην [Πρόβλεψη Χρονοσειρών](../../7-TimeSeries/1-Introduction/README.md)). +- **Εκπαίδευση**. Αυτό το μέρος του συνόλου δεδομένων προσαρμόζεται στο μοντέλο σας για να το εκπαιδεύσει. Αυτό το σύνολο αποτελεί το μεγαλύτερο μέρος του αρχικού συνόλου. +- **Δοκιμή**. Ένα σύνολο δεδομένων δοκιμής είναι μια ανεξάρτητη ομάδα δεδομένων, συχνά συλλεγμένη από τα πρωτογενή δεδομένα, που χρησιμοποιείτε για να επιβεβαιώσετε την απόδοση του σχηματισμένου μοντέλου. +- **Επικύρωση**. Ένα σύνολο επικύρωσης είναι μια μικρότερη ανεξάρτητη ομάδα παραδειγμάτων που χρησιμοποιείτε για να ρυθμίσετε τις υπερπαραμέτρους ή την αρχιτεκτονική του μοντέλου, ώστε να βελτιώσετε το μοντέλο. Ανάλογα με το μέγεθος των δεδομένων σας και την ερώτηση που θέτετε, μπορεί να μη χρειαστεί να δημιουργήσετε αυτό το τρίτο σύνολο (όπως σημειώνουμε στην [Πρόβλεψη Χρονικής Σειράς](../../7-TimeSeries/1-Introduction/README.md)). ## Δημιουργία μοντέλου -Χρησιμοποιώντας τα δεδομένα εκπαίδευσης σας, ο στόχος σας είναι να δημιουργήσετε ένα μοντέλο, ή μια στατιστική αναπαράσταση των δεδομένων σας, χρησιμοποιώντας διάφορους αλγόριθμους για να το **εκπαιδεύσετε**. Η εκπαίδευση ενός μοντέλου το εκθέτει σε δεδομένα και του επιτρέπει να κάνει υποθέσεις σχετικά με αντιληπτά μοτίβα που ανακαλύπτει, επικυρώνει και αποδέχεται ή απορρίπτει. +Χρησιμοποιώντας τα δεδομένα εκπαίδευσής σας, σκοπός σας είναι να δημιουργήσετε ένα μοντέλο, ή μια στατιστική αναπαράσταση των δεδομένων σας, χρησιμοποιώντας διάφορους αλγορίθμους για να το **εκπαιδεύσετε**. Η εκπαίδευση ενός μοντέλου το εκθέτει σε δεδομένα και του επιτρέπει να κάνει υποθέσεις για αντιληπτά μοτίβα που ανακαλύπτει, επαληθεύει και αποδέχεται ή απορρίπτει. -### Αποφασίστε τη μέθοδο εκπαίδευσης +### Αποφασίστε για μια μέθοδο εκπαίδευσης -Ανάλογα με την ερώτησή σας και τη φύση των δεδομένων σας, θα επιλέξετε μια μέθοδο για να τα εκπαιδεύσετε. Εξετάζοντας την [τεκμηρίωση του Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - την οποία χρησιμοποιούμε σε αυτό το μάθημα - μπορείτε να εξερευνήσετε πολλούς τρόπους για να εκπαιδεύσετε ένα μοντέλο. Ανάλογα με την εμπειρία σας, μπορεί να χρειαστεί να δοκιμάσετε αρκετές διαφορετικές μεθόδους για να δημιουργήσετε το καλύτερο μοντέλο. Είναι πιθανό να περάσετε από μια διαδικασία όπου οι επιστήμονες δεδομένων αξιολογούν την απόδοση ενός μοντέλου τροφοδοτώντας το με δεδομένα που δεν έχει δει, ελέγχοντας για ακρίβεια, προκαταλήψεις και άλλα ζητήματα που υποβαθμίζουν την ποιότητα, και επιλέγοντας την πιο κατάλληλη μέθοδο εκπαίδευσης για την εργασία. +Ανάλογα με την ερώτησή σας και τη φύση των δεδομένων σας, θα επιλέξετε μια μέθοδο για την εκπαίδευση. Περιηγούμενοι στην [τεκμηρίωση του Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - που χρησιμοποιούμε σε αυτό το μάθημα - μπορείτε να εξερευνήσετε πολλούς τρόπους εκπαίδευσης μοντέλου. Ανάλογα με την εμπειρία σας, ίσως χρειαστεί να δοκιμάσετε αρκετές διαφορετικές μεθόδους για να χτίσετε το καλύτερο μοντέλο. Πιθανόν να περάσετε από μια διαδικασία όπου οι επιστήμονες δεδομένων αξιολογούν τις επιδόσεις ενός μοντέλου παρέχοντάς του αθέατα δεδομένα, ελέγχοντας την ακρίβεια, την προκατάληψη και άλλα ζητήματα που υποβαθμίζουν την ποιότητα, και επιλέγοντας την καταλληλότερη μέθοδο εκπαίδευσης για την εκάστοτε εργασία. -### Εκπαίδευση μοντέλου +### Εκπαιδεύστε το μοντέλο -Με τα δεδομένα εκπαίδευσης σας, είστε έτοιμοι να τα "προσαρμόσετε" για να δημιουργήσετε ένα μοντέλο. Θα παρατηρήσετε ότι σε πολλές βιβλιοθήκες ML θα βρείτε τον κώδικα 'model.fit' - είναι αυτή τη στιγμή που στέλνετε τη μεταβλητή χαρακτηριστικού σας ως πίνακα τιμών (συνήθως 'X') και μια μεταβλητή στόχου (συνήθως 'y'). +Οπλισμένοι με τα δεδομένα εκπαίδευσής σας, είστε έτοιμοι να τα 'προσαρμόσετε' για να δημιουργήσετε ένα μοντέλο. Θα παρατηρήσετε ότι σε πολλές βιβλιοθήκες ML υπάρχει η μέθοδος 'model.fit' - είναι η στιγμή που στέλνετε τη μεταβλητή χαρακτηριστικού σας ως πίνακα τιμών (συνήθως 'X') και τη μεταβλητή στόχου (συνήθως 'y'). -### Αξιολόγηση του μοντέλου +### Αξιολογήστε το μοντέλο -Μόλις ολοκληρωθεί η διαδικασία εκπαίδευσης (μπορεί να χρειαστούν πολλές επαναλήψεις ή "εποχές" για να εκπαιδευτεί ένα μεγάλο μοντέλο), θα μπορείτε να αξιολογήσετε την ποιότητα του μοντέλου χρησιμοποιώντας δεδομένα δοκιμής για να μετρήσετε την απόδοσή του. Αυτά τα δεδομένα είναι ένα υποσύνολο των αρχικών δεδομένων που το μοντέλο δεν έχει αναλύσει προηγουμένως. Μπορείτε να εκτυπώσετε έναν πίνακα μετρικών σχετικά με την ποιότητα του μοντέλου σας. +Μόλις ολοκληρωθεί η διαδικασία εκπαίδευσης (μπορεί να χρειαστούν πολλές επαναλήψεις ή 'epochs' για την εκπαίδευση ενός μεγάλου μοντέλου), θα είστε σε θέση να αξιολογήσετε την ποιότητα του μοντέλου χρησιμοποιώντας δεδομένα δοκιμής για να μετρήσετε τις επιδόσεις του. Αυτά τα δεδομένα είναι ένα υποσύνολο των αρχικών που το μοντέλο δεν έχει αναλύσει προηγουμένως. Μπορείτε να εκτυπώσετε έναν πίνακα με στατιστικά για την ποιότητα του μοντέλου σας. 🎓 **Προσαρμογή μοντέλου** -Στο πλαίσιο της μηχανικής μάθησης, η προσαρμογή μοντέλου αναφέρεται στην ακρίβεια της υποκείμενης λειτουργίας του μοντέλου καθώς προσπαθεί να αναλύσει δεδομένα με τα οποία δεν είναι εξοικειωμένο. +Στο πλαίσιο της μηχανικής μάθησης, η προσαρμογή μοντέλου αναφέρεται στην ακρίβεια της υποκείμενης συνάρτησης του μοντέλου καθώς επιχειρεί να αναλύσει δεδομένα με τα οποία δεν είναι εξοικειωμένο. -🎓 **Υποπροσαρμογή** και **υπερπροσαρμογή** είναι κοινά προβλήματα που υποβαθμίζουν την ποιότητα του μοντέλου, καθώς το μοντέλο προσαρμόζεται είτε όχι αρκετά καλά είτε υπερβολικά καλά. Αυτό προκαλεί το μοντέλο να κάνει προβλέψεις είτε πολύ στενά ευθυγραμμισμένες είτε πολύ χαλαρά ευθυγραμμισμένες με τα δεδομένα εκπαίδευσης του. Ένα υπερπροσαρμοσμένο μοντέλο προβλέπει τα δεδομένα εκπαίδευσης πολύ καλά επειδή έχει μάθει τις λεπτομέρειες και τον θόρυβο των δεδομένων υπερβολικά καλά. Ένα υποπροσαρμοσμένο μοντέλο δεν είναι ακριβές καθώς δεν μπορεί να αναλύσει με ακρίβεια ούτε τα δεδομένα εκπαίδευσης ούτε τα δεδομένα που δεν έχει "δει". +🎓 Τα **υποπροσαρμοσμένα** και **υπερπροσαρμοσμένα** μοντέλα είναι συνηθισμένα προβλήματα που υποβαθμίζουν την ποιότητα του μοντέλου, καθώς το μοντέλο προσαρμόζεται είτε όχι αρκετά καλά είτε υπερβολικά καλά. Αυτό προκαλεί στο μοντέλο να κάνει προβλέψεις που είναι είτε πολύ στενά είτε πολύ χαλαρά ευθυγραμμισμένες με τα δεδομένα εκπαίδευσης. Ένα υπερπροσαρμοσμένο μοντέλο προβλέπει πολύ καλά τα δεδομένα εκπαίδευσης επειδή έχει μάθει πολύ καλά τις λεπτομέρειες και τον θόρυβο των δεδομένων. Ένα υποπροσαρμοσμένο μοντέλο δεν είναι ακριβές αφού δεν μπορεί ούτε να αναλύσει με ακρίβεια τα δεδομένα εκπαίδευσης ούτε τα δεδομένα που δεν έχει δει ακόμα. -![υπερπροσαρμοσμένο μοντέλο](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> Γραφικό από [Jen Looper](https://twitter.com/jenlooper) +![μοντέλο υπερπροσαρμογής](../../../../translated_images/el/overfitting.1c132d92bfd93cb6.webp) +> Γραφικό από την [Jen Looper](https://twitter.com/jenlooper) ## Ρύθμιση παραμέτρων -Μόλις ολοκληρωθεί η αρχική εκπαίδευση, παρατηρήστε την ποιότητα του μοντέλου και σκεφτείτε να το βελτιώσετε τροποποιώντας τις "υπερπαραμέτρους" του. Διαβάστε περισσότερα για τη διαδικασία [στην τεκμηρίωση](https:// +Μόλις ολοκληρωθεί η αρχική εκπαίδευση, παρατηρήστε την ποιότητα του μοντέλου και σκεφτείτε να το βελτιώσετε τροποποιώντας τις 'υπερπαραμέτρους' του. Διαβάστε περισσότερα για τη διαδικασία [στην τεκμηρίωση](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). + +## Πρόβλεψη + +Αυτή είναι η στιγμή που μπορείτε να χρησιμοποιήσετε εντελώς νέα δεδομένα για να ελέγξετε την ακρίβεια του μοντέλου σας. Σε ένα 'εφαρμοσμένο' περιβάλλον ML, όπου κατασκευάζετε διαδικτυακά υποστρώματα για να χρησιμοποιήσετε το μοντέλο σε παραγωγή, αυτή η διαδικασία μπορεί να περιλαμβάνει τη συλλογή εισόδου χρήστη (π.χ. πάτημα κουμπιού) για την ορισμό μιας μεταβλητής και την αποστολή της στο μοντέλο για συμπεράσματα ή αξιολόγηση. + +Σε αυτά τα μαθήματα θα ανακαλύψετε πώς να χρησιμοποιείτε αυτά τα βήματα για να προετοιμάσετε, δημιουργήσετε, δοκιμάσετε, αξιολογήσετε και προβλέψετε - όλες τις ενέργειες ενός επιστήμονα δεδομένων και πολλά άλλα, καθώς προχωράτε στην πορεία σας για να γίνετε μηχανικός ML «full stack». + +--- + +## 🚀Πρόκληση + +Σχεδιάστε ένα διάγραμμα ροής που να απεικονίζει τα βήματα ενός επαγγελματία ML. Πού βλέπετε τον εαυτό σας αυτή τη στιγμή στη διαδικασία; Πού προβλέπετε ότι θα βρείτε δυσκολία; Τι σας φαίνεται εύκολο; + +## [Μετά το μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/) + +## Ανασκόπηση & Αυτοδιδασκαλία + +Αναζητήστε στο διαδίκτυο συνεντεύξεις με επιστήμονες δεδομένων που μιλούν για την καθημερινή τους δουλειά. Εδώ είναι [μία](https://www.youtube.com/watch?v=Z3IjgbbCEfs). + +## Ανάθεση + +[Συνεντεύξτε έναν επιστήμονα δεδομένων](assignment.md) --- -**Αποποίηση ευθύνης**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +**Αποποίηση ευθυνών**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που προσπαθούμε για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το αρχικό έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αξιόπιστη πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. + \ No newline at end of file diff --git a/translations/el/2-Regression/3-Linear/README.md b/translations/el/2-Regression/3-Linear/README.md index 71eb494642..5950a235c8 100644 --- a/translations/el/2-Regression/3-Linear/README.md +++ b/translations/el/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Δημιουργία μοντέλου παλινδρόμησης χρησιμοποιώντας το Scikit-learn: παλινδρόμηση με τέσσερις τρόπους +# Κατασκευή μοντέλου παλινδρόμησης με χρήση Scikit-learn: τέσσερις τρόποι παλινδρόμησης ## Σημείωση για αρχάριους -Η γραμμική παλινδρόμηση χρησιμοποιείται όταν θέλουμε να προβλέψουμε μια **αριθμητική τιμή** (για παράδειγμα, την τιμή ενός σπιτιού, τη θερμοκρασία ή τις πωλήσεις). -Λειτουργεί βρίσκοντας μια ευθεία γραμμή που αντιπροσωπεύει καλύτερα τη σχέση μεταξύ των εισροών και της εξόδου. +Η γραμμική παλινδρόμηση χρησιμοποιείται όταν θέλουμε να προβλέψουμε μια **ποσοτική τιμή** (για παράδειγμα, τιμή σπιτιού, θερμοκρασία ή πωλήσεις). +Λειτουργεί βρίσκοντας μια ευθεία γραμμή που αναπαριστά καλύτερα τη σχέση μεταξύ των εισαγόμενων χαρακτηριστικών και της εξόδου. Σε αυτό το μάθημα, εστιάζουμε στην κατανόηση της έννοιας πριν εξερευνήσουμε πιο προχωρημένες τεχνικές παλινδρόμησης. -![Γραμμική έναντι πολυωνυμικής παλινδρόμησης infographic](../../../../translated_images/el/linear-polynomial.5523c7cb6576ccab.webp) -> Infographic από [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Προ-μαθηματικό κουίζ](https://ff-quizzes.netlify.app/en/ml/) +![Linear vs polynomial regression infographic](../../../../translated_images/el/linear-polynomial.5523c7cb6576ccab.webp) +> Infographic από τον/την [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Προ-διάλεξη κουίζ](https://ff-quizzes.netlify.app/en/ml/) > ### [Αυτό το μάθημα είναι διαθέσιμο και σε R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Εισαγωγή +### Εισαγωγή -Μέχρι τώρα έχετε εξερευνήσει τι είναι η παλινδρόμηση με δείγματα δεδομένων που συλλέχθηκαν από το σύνολο δεδομένων τιμών κολοκύθας που θα χρησιμοποιήσουμε σε όλο αυτό το μάθημα. Έχετε επίσης το οπτικοποιήσει χρησιμοποιώντας το Matplotlib. +Μέχρι στιγμής έχετε εξερευνήσει τι είναι η παλινδρόμηση με δείγμα δεδομένων από το σύνολο δεδομένων τιμών κολοκύθας που θα χρησιμοποιήσουμε σε όλο το μάθημα. Επίσης, το έχετε απεικονίσει χρησιμοποιώντας τη Matplotlib. -Τώρα είστε έτοιμοι να εμβαθύνετε στην παλινδρόμηση για Μηχανική Μάθηση. Ενώ η οπτικοποίηση σας επιτρέπει να κατανοήσετε τα δεδομένα, η πραγματική δύναμη της Μηχανικής Μάθησης προέρχεται από _την εκπαίδευση μοντέλων_. Τα μοντέλα εκπαιδεύονται σε ιστορικά δεδομένα για να συλλάβουν αυτόματα τις εξαρτήσεις των δεδομένων και σας επιτρέπουν να προβλέπετε αποτελέσματα για νέα δεδομένα που το μοντέλο δεν έχει ξαναδεί. +Τώρα είστε έτοιμοι να εμβαθύνετε στην παλινδρόμηση για Μηχανική Μάθηση. Ενώ η οπτικοποίηση σας επιτρέπει να κατανοήσετε τα δεδομένα, η πραγματική δύναμη της Μηχανικής Μάθησης προέρχεται από την _εκπαίδευση μοντέλων_. Τα μοντέλα εκπαιδεύονται σε ιστορικά δεδομένα για να συλλάβουν αυτόματα τις εξαρτήσεις δεδομένων, και σας επιτρέπουν να προβλέπετε αποτελέσματα για νέα δεδομένα, που το μοντέλο δεν έχει δει ποτέ πριν. -Σε αυτό το μάθημα, θα μάθετε περισσότερα για δύο τύπους παλινδρόμησης: _βασική γραμμική παλινδρόμηση_ και _πολυωνυμική παλινδρόμηση_, μαζί με κάποια από τα μαθηματικά που υποστηρίζουν αυτές τις τεχνικές. Αυτά τα μοντέλα θα μας επιτρέψουν να προβλέψουμε τις τιμές της κολοκύθας ανάλογα με διάφορα εισερχόμενα δεδομένα. +Σε αυτό το μάθημα, θα μάθετε περισσότερα για δύο τύπους παλινδρόμησης: _βασική γραμμική παλινδρόμηση_ και _πολυωνυμική παλινδρόμηση_, μαζί με μερικά από τα μαθηματικά που βασίζουν αυτές τις τεχνικές. Αυτά τα μοντέλα θα μας επιτρέψουν να προβλέψουμε τις τιμές της κολοκύθας ανάλογα με διαφορετικά εισαγόμενα δεδομένα. -[![Μηχανική Μάθηση για αρχάριους - Κατανόηση της γραμμικής παλινδρόμησης](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Μηχανική Μάθηση για αρχάριους - Κατανόηση της γραμμικής παλινδρόμησης") +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο επισκόπησης της γραμμικής παλινδρόμησης. +> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση της γραμμικής παλινδρόμησης. -> Καθ' όλη τη διάρκεια αυτού του προγράμματος σπουδών, υποθέτουμε ελάχιστες γνώσεις μαθηματικών και προσπαθούμε να το κάνουμε προσιτό σε φοιτητές από άλλα πεδία, οπότε δώστε προσοχή σε σημειώσεις, 🧮 υπομνήσεις, διαγράμματα και άλλα εργαλεία μάθησης για να βοηθήσουν στην κατανόηση. +> Σε όλη τη διδακτέα ύλη υποθέτουμε ελάχιστη γνώση μαθηματικών και προσπαθούμε να την κάνουμε προσιτή για φοιτητές από άλλους τομείς, αναζητώντας σημειώσεις, 🧮 υπενθυμίσεις, διαγράμματα και άλλα εργαλεία μάθησης για να βοηθήσουμε στην κατανόηση. ### Προαπαιτούμενα -Πρέπει να είστε πλέον εξοικειωμένοι με τη δομή των δεδομένων κολοκύθας που εξετάζουμε. Μπορείτε να τα βρείτε προφορτωμένα και προ-καθαρισμένα στο αρχείο _notebook.ipynb_ αυτού του μαθήματος. Στο αρχείο, η τιμή της κολοκύθας εμφανίζεται ανά μπούσελ σε νέο πλαίσιο δεδομένων. Βεβαιωθείτε ότι μπορείτε να εκτελέσετε αυτά τα notebooks σε πυρήνες στο Visual Studio Code. +Πρέπει να είστε πλέον εξοικειωμένοι με τη δομή των δεδομένων κολοκύθας που εξετάζουμε. Μπορείτε να τα βρείτε προφορτωμένα και προ-καθαρισμένα στο αρχείο _notebook.ipynb_ αυτού του μαθήματος. Στο αρχείο, η τιμή της κολοκύθας εμφανίζεται ανά μπουσέλ. Φροντίστε να μπορείτε να τρέχετε αυτά τα notebook σε kernels στο Visual Studio Code. ### Προετοιμασία -Ως υπενθύμιση, φορτώνετε αυτά τα δεδομένα για να κάνετε ερωτήσεις σχετικά με αυτά. +Ως υπενθύμιση, φορτώνετε αυτά τα δεδομένα ώστε να μπορείτε να κάνετε ερωτήσεις γι' αυτά. -- Ποια είναι η καλύτερη στιγμή για να αγοράσετε κολοκύθες; -- Ποια τιμή μπορώ να περιμένω για μια συσκευασία μικρών κολοκυθών; -- Πρέπει να τις αγοράσω σε καλάθια μισού μπούσελ ή σε κουτί 1 1/9 μπούσελ; -Ας συνεχίσουμε να ερευνούμε αυτά τα δεδομένα. +- Πότε είναι η καλύτερη εποχή για να αγοράσω κολοκύθες; +- Τι τιμή να περιμένω για μια συσκευασία από μικρές κολοκύθες; +- Πρέπει να τις αγοράσω σε καλάθια μισού μπουσέλ ή σε κουτί 1 1/9 μπουσέλ; +Ας συνεχίσουμε να ανακαλύπτουμε αυτά τα δεδομένα. -Στο προηγούμενο μάθημα, δημιουργήσατε ένα Pandas data frame και το συμπληρώσατε με μέρος του αρχικού συνόλου δεδομένων, τυποποιώντας την τιμή ανά μπούσελ. Με αυτόν τον τρόπο, όμως, μαζέψατε μόνο περίπου 400 σημεία δεδομένων και μόνο για τους φθινοπωρινούς μήνες. +Στο προηγούμενο μάθημα, δημιουργήσατε ένα Pandas data frame και το γεμίσατε με μέρος του αρχικού συνόλου δεδομένων, τυποποιώντας τις τιμές ανά μπουσέλ. Κάνοντας αυτό, ωστόσο, μαζέψατε περίπου 400 δεδομένα μόνο για τους φθινοπωρινούς μήνες. -Ρίξτε μια ματιά στα δεδομένα που έχουμε προφορτώσει στο συνοδευτικό notebook αυτού του μαθήματος. Τα δεδομένα είναι προφορτωμένα και αρχικό scatterplot σχεδιάζεται για να δείξει δεδομένα μήνα. Ίσως να πάρουμε λίγες περισσότερες λεπτομέρειες για τη φύση των δεδομένων καθαρίζοντάς τα περισσότερο. +Ρίξτε μια ματιά στα δεδομένα που προφορτώσαμε στο συνοδευτικό notebook αυτού του μαθήματος. Τα δεδομένα είναι προφορτωμένα και ένα αρχικό scatterplot σχεδιάστηκε για να δείξει τα δεδομένα ανά μήνα. Ίσως μπορέσουμε να πάρουμε περισσότερες λεπτομέρειες για τη φύση των δεδομένων καθαρίζοντάς τα περαιτέρω. -## Μια γραμμική γραμμή παλινδρόμησης +## Μια γραμμή γραμμικής παλινδρόμησης -Όπως μάθατε στο Μάθημα 1, ο στόχος μιας άσκησης γραμμικής παλινδρόμησης είναι να μπορέσετε να σχεδιάσετε μια γραμμή για να: +Όπως μάθατε στο Μάθημα 1, ο στόχος μιας άσκησης γραμμικής παλινδρόμησης είναι να σχεδιάσουμε μια γραμμή που: -- **Δείξετε τις σχέσεις μεταξύ μεταβλητών**. Δείξτε τη σχέση μεταξύ των μεταβλητών -- **Κάνετε προβλέψεις**. Κάνετε ακριβείς προβλέψεις για το που θα τοποθετηθεί ένα νέο σημείο δεδομένων σε σχέση με αυτή τη γραμμή. +- **Να δείχνει τις σχέσεις των μεταβλητών**. Να δείχνει τη σχέση μεταξύ των μεταβλητών +- **Να κάνει προβλέψεις**. Να κάνει ακριβείς προβλέψεις για το πού θα εμφανιστεί ένα νέο σημείο σε σχέση με αυτή τη γραμμή. -Είναι τυπικό της **Παλινδρόμησης Ελαχίστων Τετραγώνων** να σχεδιάζετε αυτού του τύπου τη γραμμή. Ο όρος "Ελαχίστων Τετραγώνων" αναφέρεται στη διαδικασία ελαχιστοποίησης του συνολικού σφάλματος στο μοντέλο μας. Για κάθε σημείο δεδομένων μετράμε την κατακόρυφη απόσταση (ονομάζεται υπόλοιπο) μεταξύ του πραγματικού σημείου και της γραμμής παλινδρόμησής μας. +Είναι σύνηθες στην **Παλινδρόμηση Ελαχίστων Τετραγώνων (Least-Squares Regression)** να σχεδιάζουμε αυτό το είδος γραμμής. Ο όρος "Ελαχίστων Τετραγώνων" αναφέρεται στη διαδικασία ελαχιστοποίησης του συνολικού σφάλματος στο μοντέλο μας. Για κάθε σημείο δεδομένων, μετράμε την κάθετη απόσταση (που καλείται υπολειπόμενο, residual) μεταξύ του πραγματικού σημείου και της γραμμής παλινδρόμησης. -Τετρώνουμε αυτές τις αποστάσεις για δύο βασικούς λόγους: +Τετραγωνίζουμε αυτές τις αποστάσεις για δύο βασικούς λόγους: -1. **Μέγεθος έναντι Κατεύθυνσης:** Θέλουμε ένα σφάλμα -5 να θεωρείται το ίδιο με ένα σφάλμα +5. Η τετραγωνική κάνει όλες τις τιμές θετικές. +1. **Μέγεθος αντί για Διεύθυνση:** Θέλουμε να αντιμετωπίσουμε το σφάλμα -5 το ίδιο με το σφάλμα +5. Με το τετράγωνο όλα τα μεγέθη γίνονται θετικά. -2. **Τιμωρία Ακραίων Τιμών:** Το τετράγωνο δίνει μεγαλύτερο βάρος στα μεγαλύτερα σφάλματα, αναγκάζοντας τη γραμμή να παραμείνει πιο κοντά σε σημεία που είναι μακριά. +2. **Τιμωρία των Απομακρυσμένων Τιμών:** Το τετράγωνο δίνει μεγαλύτερο βάρος στα μεγαλύτερα σφάλματα, αναγκάζοντας τη γραμμή να παραμένει πιο κοντά στα σημεία που απέχουν πολύ. -Στη συνέχεια, προσθέτουμε όλες αυτές τις τετραγωνισμένες τιμές. Ο στόχος μας είναι να βρούμε τη συγκεκριμένη γραμμή όπου το τελικό άθροισμα είναι το ελάχιστο (η μικρότερη δυνατή τιμή)—εξού και το όνομα "Ελαχίστων Τετραγώνων". +Στη συνέχεια, προσθέτουμε όλα αυτά τα τετραγωνισμένα σφάλματα μαζί. Στόχος μας είναι να βρούμε τη συγκεκριμένη γραμμή όπου το τελικό άθροισμα είναι ελάχιστο (η μικρότερη δυνατή τιμή)—γι’ αυτό ονομάζεται "Ελαχίστων Τετραγώνων". -> **🧮 Δείξε μου τα μαθηματικά** -> -> Αυτή η γραμμή, που ονομάζεται _γραμμή της καλύτερης εφαρμογής_ μπορεί να εκφραστεί με [μια εξίσωση](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Δείξε μου τα μαθηματικά** +> +> Αυτή η γραμμή, που ονομάζεται _γραμμή καλύτερης προσαρμογής_, μπορεί να εκφραστεί με [μια εξίσωση](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> Το `X` είναι η 'εξηγηματική μεταβλητή'. Το `Y` είναι η 'εξαρτημένη μεταβλητή'. Η κλίση της γραμμής είναι το `b` και το `a` είναι η διασταύρωση y, που αναφέρεται στην τιμή του `Y` όταν `X = 0`. +> `X` είναι η 'εξελικτική μεταβλητή'. `Y` είναι η 'εξαρτημένη μεταβλητή'. Η κλίση της γραμμής είναι `b` και `a` είναι το y-τομή, που αναφέρεται στην τιμή του `Y` όταν `X = 0`. > ->![υπολογισμός της κλίσης](../../../../translated_images/el/slope.f3c9d5910ddbfcf9.webp) +>![calculate the slope](../../../../translated_images/el/slope.f3c9d5910ddbfcf9.webp) > -> Πρώτα, υπολογίστε την κλίση `b`. Infographic από [Jen Looper](https://twitter.com/jenlooper) +> Αρχικά, υπολογίζουμε την κλίση `b`. Infographic από τον/την [Jen Looper](https://twitter.com/jenlooper) > -> Με άλλα λόγια, και αναφερόμενοι στην αρχική ερώτηση των δεδομένων μας για την κολοκύθα: "προβλέψτε την τιμή μιας κολοκύθας ανά μπούσελ ανά μήνα", το `X` θα αναφερόταν στην τιμή και το `Y` στον μήνα πώλησης. +> Με άλλα λόγια, και αναφερόμενοι στην αρχική ερώτηση για το σύνολο δεδομένων κολοκύθας: "πρόβλεψε την τιμή μιας κολοκύθας ανά μπουσέλ ανά μήνα", το `X` θα αναφερόταν στην τιμή και το `Y` στον μήνα της πώλησης. > ->![συμπλήρωση της εξίσωσης](../../../../translated_images/el/calculation.a209813050a1ddb1.webp) +>![complete the equation](../../../../translated_images/el/calculation.a209813050a1ddb1.webp) > -> Υπολογίστε την τιμή του Y. Αν πληρώνετε γύρω στα 4 δολάρια, πρέπει να είναι Απρίλιος! Infographic από [Jen Looper](https://twitter.com/jenlooper) +> Υπολογίστε την τιμή του Y. Αν πληρώνετε περίπου 4 δολάρια, πρέπει να είναι Απρίλιος! Infographic από τον/την [Jen Looper](https://twitter.com/jenlooper) > -> Τα μαθηματικά που υπολογίζουν τη γραμμή πρέπει να δείξουν την κλίση της γραμμής, που επίσης εξαρτάται από τη διασταύρωση, ή πού βρίσκεται το `Y` όταν `X = 0`. +> Τα μαθηματικά που υπολογίζουν τη γραμμή πρέπει να δείξουν την κλίση της γραμμής, η οποία επίσης εξαρτάται από τη τομή, ή όπου βρίσκεται το `Y` όταν `X = 0`. > -> Μπορείτε να δείτε τη μέθοδο υπολογισμού αυτών των τιμών στην ιστοσελίδα [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Επίσης επισκεφτείτε [αυτόν τον Υπολογιστή Ελαχίστων Τετραγώνων](https://www.mathsisfun.com/data/least-squares-calculator.html) για να δείτε πώς οι τιμές επηρεάζουν τη γραμμή. +> Μπορείτε να δείτε τη μέθοδο υπολογισμού αυτών των τιμών στην ιστοσελίδα [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Επίσης επισκεφθείτε [αυτόν τον υπολογιστή ελαχίστων τετραγώνων](https://www.mathsisfun.com/data/least-squares-calculator.html) για να δείτε πώς οι τιμές των αριθμών επηρεάζουν τη γραμμή. -## Συνάφεια (Correlation) +## Συσχέτιση -Ένας ακόμα όρος που πρέπει να κατανοήσετε είναι ο **Συντελεστής συσχέτισης** μεταξύ των δεδομένων μεταβλητών X και Y. Χρησιμοποιώντας ένα scatterplot, μπορείτε γρήγορα να οπτικοποιήσετε αυτόν τον συντελεστή. Ένα διάγραμμα με σημεία διασκορπισμένα σε μια καθαρή γραμμή έχει υψηλή συσχέτιση, ενώ ένα διάγραμμα με σημεία διασκορπισμένα παντού ανάμεσα σε X και Y έχει χαμηλή συσχέτιση. +Ένας ακόμη όρος που πρέπει να κατανοήσουμε είναι ο **Συντελεστής Συσχέτισης** μεταξύ των δεδομένων μεταβλητών X και Y. Χρησιμοποιώντας ένα scatterplot, μπορείτε γρήγορα να οπτικοποιήσετε αυτόν τον συντελεστή. Ένα γράφημα με σημεία δεδομένων διασκορπισμένα σε έναν καλοστρωμένο άξονα έχει υψηλή συσχέτιση, ενώ ένα γράφημα με τα σημεία να είναι σκορπισμένα παντού ανάμεσα σε X και Y έχει χαμηλή συσχέτιση. -Ένα καλό μοντέλο γραμμικής παλινδρόμησης θα έχει υψηλό (πιο κοντά στο 1 παρά στο 0) Συντελεστή Συσχέτισης χρησιμοποιώντας τη μέθοδο Ελαχίστων Τετραγώνων με μια γραμμή παλινδρόμησης. +Ένα καλό μοντέλο γραμμικής παλινδρόμησης θα έχει υψηλό (πλησιέστερα στο 1 παρά στο 0) Συντελεστή Συσχέτισης χρησιμοποιώντας τη μέθοδο Ελαχίστων Τετραγώνων με γραμμή παλινδρόμησης. -✅ Εκτελέστε το notebook που συνοδεύει αυτό το μάθημα και εξετάστε το διάγραμμα διασποράς Μήνας προς Τιμή. Φαίνεται ότι η συσχέτιση των δεδομένων Μήνα με Τιμή για τις πωλήσεις κολοκύθας έχει υψηλή ή χαμηλή συσχέτιση, σύμφωνα με την οπτική σας ερμηνεία του διαγράμματος; Αλλάζει αυτό αν χρησιμοποιήσετε μια πιο λεπτομερή μέτρηση αντί για `Μήνα`, π.χ. *ημέρα του έτους* (δηλαδή, αριθμός ημερών από την αρχή του έτους); +✅ Τρέξτε το notebook που συνοδεύει αυτό το μάθημα και δείτε το scatterplot Μήνα προς Τιμή. Φαίνεται να υπάρχει υψηλή ή χαμηλή συσχέτιση μεταξύ Μήνα και Τιμής για τις πωλήσεις κολοκύθας, σύμφωνα με την οπτική σας ερμηνεία του scatterplot; Αλλάζει κάτι αν χρησιμοποιήσετε πιο λεπτομερή μέτρηση αντί για `Μήνα`, π.χ. *ημέρα του έτους* (δηλαδή, αριθμός ημερών από την αρχή του έτους); -Στον κώδικα παρακάτω, θα υποθέσουμε ότι έχουμε καθαρίσει τα δεδομένα και έχουμε λάβει ένα πλαίσιο δεδομένων που ονομάζεται `new_pumpkins`, παρόμοιο με το ακόλουθο: +Στον παρακάτω κώδικα, θα υποθέσουμε ότι έχουμε καθαρίσει τα δεδομένα και έχουμε ένα data frame που ονομάζεται `new_pumpkins`, παρόμοιο με το ακόλουθο: -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +ID | Μήνας | ΗμέρατουΈτους | Ποικιλία | Πόλη | Συσκευασία | Χαμηλή Τιμή | Υψηλή Τιμή | Τιμή ---|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +70 | 9 | 267 | ΤΥΠΟΥ ΚΕΙΚ | BALTIMORE | 1 1/9 μπουσέλ κουτιά | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | ΤΥΠΟΥ ΚΕΙΚ | BALTIMORE | 1 1/9 μπουσέλ κουτιά | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | ΤΥΠΟΥ ΚΕΙΚ | BALTIMORE | 1 1/9 μπουσέλ κουτιά | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | ΤΥΠΟΥ ΚΕΙΚ | BALTIMORE | 1 1/9 μπουσέλ κουτιά | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | ΤΥΠΟΥ ΚΕΙΚ | BALTIMORE | 1 1/9 μπουσέλ κουτιά | 15.0 | 15.0 | 13.636364 -> Ο κώδικας για τον καθαρισμό των δεδομένων είναι διαθέσιμος στο [`notebook.ipynb`](notebook.ipynb). Έχουμε πραγματοποιήσει τα ίδια βήματα καθαρισμού όπως στο προηγούμενο μάθημα και έχουμε υπολογίσει τη στήλη `DayOfYear` χρησιμοποιώντας την ακόλουθη έκφραση: +> Ο κώδικας για τον καθαρισμό των δεδομένων είναι διαθέσιμος στο [`notebook.ipynb`](notebook.ipynb). Έχουμε εκτελέσει τα ίδια βήματα καθαρισμού όπως στο προηγούμενο μάθημα και έχουμε υπολογίσει την στήλη `DayOfYear` με την ακόλουθη έκφραση: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Τώρα που έχετε κατανοήσει τα μαθηματικά πίσω από τη γραμμική παλινδρόμηση, ας δημιουργήσουμε ένα μοντέλο παλινδρόμησης για να δούμε αν μπορούμε να προβλέψουμε ποιο πακέτο κολοκύθας θα έχει τις καλύτερες τιμές. Κάποιος που αγοράζει κολοκύθες για ένα φθινοπωρινό παρτέρι κολοκύθας θα ήθελε αυτές τις πληροφορίες για να βελτιστοποιήσει τις αγορές του. + +Τώρα που έχετε κατανοήσει τα μαθηματικά πίσω από τη γραμμική παλινδρόμηση, ας δημιουργήσουμε ένα μοντέλο παλινδρόμησης για να δούμε αν μπορούμε να προβλέψουμε ποια συσκευασία κολοκύθας θα έχει τις καλύτερες τιμές. Κάποιος που αγοράζει κολοκύθες για ένα παρτέρι διακοπών μπορεί να θέλει αυτή την πληροφορία για να βελτιστοποιήσει τις αγορές του. ## Αναζήτηση συσχέτισης -[![Μηχανική Μάθηση για αρχάριους - Αναζήτηση συσχέτισης: Το κλειδί για τη γραμμική παλινδρόμηση](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Μηχανική Μάθηση για αρχάριους - Αναζήτηση συσχέτισης: Το κλειδί για τη γραμμική παλινδρόμηση") +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο επισκόπησης για τη συσχέτιση. +> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση της συσχέτισης. -Από το προηγούμενο μάθημα μάλλον έχετε δει ότι η μέση τιμή για διαφορετικούς μήνες μοιάζει ως εξής: +Από το προηγούμενο μάθημα πιθανώς έχετε δει ότι η μέση τιμή για διαφορετικούς μήνες έχει ως εξής: -Μέση τιμή ανά μήνα +Average price by month -Αυτό υποδηλώνει ότι θα πρέπει να υπάρχει κάποια συσχέτιση και μπορούμε να δοκιμάσουμε να εκπαιδεύσουμε ένα γραμμικό μοντέλο παλινδρόμησης για να προβλέψουμε τη σχέση μεταξύ `Month` και `Price`, ή μεταξύ `DayOfYear` και `Price`. Να το scatter plot που δείχνει τη δεύτερη σχέση: +Αυτό υποδηλώνει ότι υπάρχει κάποια συσχέτιση και μπορούμε να προσπαθήσουμε να εκπαιδεύσουμε ένα γραμμικό μοντέλο παλινδρόμησης για να προβλέψουμε τη σχέση ανάμεσα στον `Μήνα` και την `Τιμή`, ή ανάμεσα στην `ΗμέρατουΈτους` και την `Τιμή`. Εδώ είναι το scatter plot που δείχνει τη δεύτερη σχέση: -Scatter plot τιμής έναντι ημέρας του έτους +Scatter plot of Price vs. Day of Year -Ας δούμε αν υπάρχει συσχέτιση χρησιμοποιώντας τη συνάρτηση `corr`: +Ας δούμε αν υπάρχει συσχέτιση χρησιμοποιώντας τη λειτουργία `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Φαίνεται ότι η συσχέτιση είναι αρκετά μικρή, -0.15 ανά `Month` και -0.17 ανά `DayOfMonth`, αλλά μπορεί να υπάρχει μια άλλη σημαντική σχέση. Φαίνεται ότι υπάρχουν διαφορετικά σύνολα τιμών που αντιστοιχούν σε διαφορετικές ποικιλίες κολοκύθας. Για να επιβεβαιώσουμε αυτήν την υπόθεση, ας σχεδιάσουμε κάθε κατηγορία κολοκύθας με διαφορετικό χρώμα. Δίνοντας μια παράμετρο `ax` στη συνάρτηση σχεδίασης `scatter` μπορούμε να σχεδιάσουμε όλα τα σημεία στο ίδιο γράφημα: + +Φαίνεται ότι η συσχέτιση είναι αρκετά μικρή, -0.15 για τον `Μήνα` και -0.17 για την `ΗμέρατουΈτους`, αλλά πιθανόν να υπάρχει άλλη σημαντική σχέση. Φαίνεται ότι υπάρχουν διαφορετικές ομάδες τιμών που αντιστοιχούν σε διαφορετικές ποικιλίες κολοκύθας. Για να επιβεβαιώσουμε αυτή την υπόθεση, ας σχεδιάσουμε κάθε κατηγορία κολοκύθας με διαφορετικό χρώμα. Με τη χρήση της παραμέτρου `ax` στη συνάρτηση σχεδίασης `scatter` μπορούμε να σχεδιάσουμε όλα τα σημεία στο ίδιο γράφημα: ```python ax=None @@ -139,41 +139,41 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Scatter plot of Price vs. Day of Year -Scatter plot τιμής έναντι ημέρας του έτους με χρώματα - -Η έρευνά μας υποδηλώνει ότι η ποικιλία έχει μεγαλύτερη επίδραση στην τελική τιμή από την πραγματική ημερομηνία πώλησης. Αυτό φαίνεται και σε ένα γράφημα ράβδων: +Η έρευνά μας υποδεικνύει ότι η ποικιλία επηρεάζει περισσότερο την τιμή από την ημερομηνία πώλησης. Αυτό φαίνεται και σε ένα ραβδογράφημα: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Bar graph of price vs variety -Γράφημα ράβδων τιμής ανά ποικιλία - -Ας εστιάσουμε προς στιγμή μόνο σε μια ποικιλία κολοκύθας, τον 'τύπο για πίτα', και ας δούμε τι επίδραση έχει η ημερομηνία στην τιμή: +Ας εστιάσουμε προς το παρόν μόνο στην ποικιλία 'pie type' και να δούμε τι επίδραση έχει η ημερομηνία στην τιμή: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot τιμής έναντι ημέρας του έτους για κολοκύθες πίτας +Scatter plot of Price vs. Day of Year -Εάν τώρα υπολογίσουμε τη συσχέτιση μεταξύ `Price` και `DayOfYear` χρησιμοποιώντας τη συνάρτηση `corr`, θα πάρουμε κάτι σαν `-0.27` - που σημαίνει ότι η εκπαίδευση ενός προγνωστικού μοντέλου έχει νόημα. +Αν τώρα υπολογίσουμε τη συσχέτιση μεταξύ `Τιμής` και `ΗμέραςτουΈτους` χρησιμοποιώντας τη συνάρτηση `corr`, θα πάρουμε κάτι σαν `-0.27` – που σημαίνει ότι η εκπαίδευση ενός προγνωστικού μοντέλου έχει νόημα. -> Πριν εκπαιδεύσετε ένα μοντέλο γραμμικής παλινδρόμησης, είναι σημαντικό να βεβαιωθείτε ότι τα δεδομένα μας είναι καθαρά. Η γραμμική παλινδρόμηση δεν λειτουργεί καλά με ελλιπή δεδομένα, οπότε είναι λογικό να απαλλαγούμε από όλα τα κενά κελιά: +> Πριν εκπαιδεύσουμε ένα μοντέλο γραμμικής παλινδρόμησης, είναι σημαντικό να βεβαιωθούμε ότι τα δεδομένα μας είναι καθαρά. Η γραμμική παλινδρόμηση δεν λειτουργεί καλά με κενές τιμές, άρα έχει νόημα να αφαιρέσουμε όλα τα κενά κελιά: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Μια άλλη προσέγγιση θα ήταν να γεμίσετε αυτές τις κενές τιμές με μέσες τιμές από την αντίστοιχη στήλη. + +Μια άλλη προσέγγιση θα ήταν να συμπληρώσουμε τις κενές τιμές με τις μέσες τιμές της αντίστοιχης στήλης. ## Απλή γραμμική παλινδρόμηση -[![Μηχανική Μάθηση για αρχάριους - Γραμμική και πολυωνυμική παλινδρόμηση με Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Μηχανική Μάθηση για αρχάριους - Γραμμική και πολυωνυμική παλινδρόμηση με Scikit-learn") +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο επισκόπησης της γραμμικής και πολυωνυμικής παλινδρόμησης. +> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση της γραμμικής και πολυωνυμικής παλινδρόμησης. Για να εκπαιδεύσουμε το μοντέλο Γραμμικής Παλινδρόμησης, θα χρησιμοποιήσουμε τη βιβλιοθήκη **Scikit-learn**. @@ -182,32 +182,32 @@ from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - + Ξεκινάμε διαχωρίζοντας τις εισερχόμενες τιμές (χαρακτηριστικά) και την αναμενόμενη έξοδο (ετικέτα) σε ξεχωριστά numpy arrays: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Σημειώστε ότι έπρεπε να πραγματοποιήσουμε `reshape` στα δεδομένα εισόδου ώστε το πακέτο γραμμικής παλινδρόμησης να τα κατανοήσει σωστά. Η γραμμική παλινδρόμηση περιμένει έναν πίνακα 2 διαστάσεων ως είσοδο, όπου κάθε γραμμή του πίνακα αντιστοιχεί σε έναν διανυσματικό πίνακα χαρακτηριστικών. Στη περίπτωση μας, αφού έχουμε μόνο ένα χαρακτηριστικό, χρειαζόμαστε έναν πίνακα σχήματος N×1, όπου N είναι το μέγεθος του συνόλου δεδομένων. -> Σημειώστε ότι έπρεπε να κάνουμε `reshape` στα δεδομένα εισόδου ώστε το πακέτο Γραμμικής Παλινδρόμησης να τα κατανοήσει σωστά. Η Γραμμική Παλινδρόμηση περιμένει έναν 2D array ως είσοδο, όπου κάθε γραμμή του πίνακα αντιστοιχεί σε διάνυσμα χαρακτηριστικών εισόδου. Στην περίπτωσή μας, αφού έχουμε μόνο μία είσοδο, χρειάζεται ένας πίνακας σχήματος N×1, όπου το Ν είναι το μέγεθος του συνόλου δεδομένων. - -Στη συνέχεια, πρέπει να χωρίσουμε τα δεδομένα σε σύνολα εκπαίδευσης και δοκιμής, ώστε να μπορέσουμε να επαληθεύσουμε το μοντέλο μετά την εκπαίδευση: +Έπειτα, πρέπει να χωρίσουμε τα δεδομένα σε σύνολα εκπαίδευσης και δοκιμής, ώστε να μπορούμε να επικυρώσουμε το μοντέλο μας μετά την εκπαίδευση: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Τέλος, η εκπαίδευση του πραγματικού μοντέλου Γραμμικής Παλινδρόμησης παίρνει μόνο δύο γραμμές κώδικα. Ορίζουμε το αντικείμενο `LinearRegression`, και το προσαρμόζουμε στα δεδομένα μας χρησιμοποιώντας τη μέθοδο `fit`: + +Τέλος, η εκπαίδευση του πραγματικού μοντέλου γραμμικής παλινδρόμησης γίνεται με μόνο δύο γραμμές κώδικα. Ορίζουμε το αντικείμενο `LinearRegression` και το προσαρμόζουμε στα δεδομένα μας με τη μέθοδο `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Το αντικείμενο `LinearRegression` μετά το `fit`-άρισμα περιέχει όλους τους συντελεστές της παλινδρόμησης, στους οποίους μπορούμε να έχουμε πρόσβαση χρησιμοποιώντας την ιδιότητα `.coef_`. Στην περίπτωσή μας, υπάρχει μόνο ένας συντελεστής, ο οποίος θα πρέπει να είναι περίπου `-0.017`. Αυτό σημαίνει ότι οι τιμές φαίνεται να πέφτουν λίγο με το χρόνο, αλλά όχι πολύ, περίπου 2 σεντ ανά ημέρα. Μπορούμε επίσης να έχουμε πρόσβαση στο σημείο τομής της παλινδρόμησης με τον άξονα Υ χρησιμοποιώντας το `lin_reg.intercept_` - που θα είναι γύρω στο `21` στην περίπτωσή μας, υποδεικνύοντας την τιμή στην αρχή του έτους. +Το αντικείμενο `LinearRegression` μετά το `fit`-άρισμα περιέχει όλους τους συντελεστές της παλινδρόμησης, στους οποίους μπορούμε να έχουμε πρόσβαση χρησιμοποιώντας την ιδιότητα `.coef_`. Στη δική μας περίπτωση, υπάρχει μόνο ένας συντελεστής, ο οποίος θα πρέπει να είναι περίπου `-0.017`. Αυτό σημαίνει ότι οι τιμές φαίνεται να πέφτουν λίγο με τον χρόνο, αλλά όχι πολύ, περίπου 2 λεπτά της μονάδας ανά ημέρα. Μπορούμε επίσης να έχουμε πρόσβαση στο σημείο τομής της παλινδρόμησης με τον άξονα Υ χρησιμοποιώντας το `lin_reg.intercept_` - θα είναι περίπου `21` στην περίπτωσή μας, δείχνοντας την τιμή στην αρχή του έτους. -Για να δούμε πόσο ακριβές είναι το μοντέλο μας, μπορούμε να προβλέψουμε τις τιμές σε ένα σύνολο δεδομένων δοκιμής και στη συνέχεια να μετρήσουμε πόσο κοντά είναι οι προβλέψεις μας στις αναμενόμενες τιμές. Αυτό μπορεί να γίνει χρησιμοποιώντας το μέτρο root mean square error (RMSE), που είναι η τετραγωνική ρίζα του μέσου όρου όλων των τετραγωνισμένων διαφορών μεταξύ αναμενόμενης και προβλεπόμενης τιμής. +Για να δούμε πόσο ακριβές είναι το μοντέλο μας, μπορούμε να προβλέψουμε τιμές σε ένα σύνολο δεδομένων δοκιμής και μετά να μετρήσουμε πόσο κοντά είναι οι προβλέψεις μας στις αναμενόμενες τιμές. Αυτό μπορεί να γίνει χρησιμοποιώντας το μέτρο του ριζικού μέσου τετραγωνικού σφάλματος (RMSE), που είναι η ρίζα του μέσου όλων των τετραγωνικών διαφορών μεταξύ αναμενόμενης και προβλεπόμενης τιμής. ```python pred = lin_reg.predict(X_test) @@ -216,14 +216,14 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Το σφάλμα μας φαίνεται να είναι γύρω στις 2 μονάδες, που είναι ~17%. Όχι και τόσο καλό. Ένας άλλος δείκτης ποιότητας του μοντέλου είναι ο **συντελεστής καθορισμού** (coefficient of determination), ο οποίος μπορεί να ληφθεί ως εξής: +Το σφάλμα μας φαίνεται να είναι περίπου 2 μονάδες, που είναι ~17%. Όχι πολύ καλό. Ένας άλλος δείκτης της ποιότητας του μοντέλου είναι ο **συντελεστής προσδιορισμού**, που μπορεί να ληφθεί ως εξής: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Αν η τιμή είναι 0, σημαίνει ότι το μοντέλο δεν λαμβάνει υπόψη τα εισερχόμενα δεδομένα και λειτουργεί ως ο *χειρότερος γραμμικός προβλέπων*, δηλαδή απλά η μέση τιμή του αποτελέσματος. Η τιμή 1 σημαίνει ότι μπορούμε να προβλέψουμε τέλεια όλες τις αναμενόμενες εξόδους. Στην περίπτωσή μας, ο συντελεστής είναι περίπου 0.06, που είναι αρκετά χαμηλός. +Αν η τιμή είναι 0, σημαίνει ότι το μοντέλο δεν λαμβάνει υπόψη τα εισαγόμενα δεδομένα και λειτουργεί ως ο *χειρότερος γραμμικός προβλέπων*, ο οποίος είναι απλά μια μέση τιμή του αποτελέσματος. Η τιμή 1 σημαίνει ότι μπορούμε να προβλέψουμε τέλεια όλες τις αναμενόμενες εξόδους. Στη δική μας περίπτωση, ο συντελεστής είναι περίπου 0.06, που είναι αρκετά χαμηλός. Μπορούμε επίσης να σχεδιάσουμε τα δεδομένα δοκιμής μαζί με τη γραμμή παλινδρόμησης για να δούμε καλύτερα πώς λειτουργεί η παλινδρόμηση στην περίπτωσή μας: @@ -236,17 +236,17 @@ plt.plot(X_test,pred) ## Πολυωνυμική Παλινδρόμηση -Ένας άλλος τύπος γραμμικής παλινδρόμησης είναι η Πολυωνυμική Παλινδρόμηση. Ενώ μερικές φορές υπάρχει γραμμική σχέση μεταξύ των μεταβλητών - όσο μεγαλύτερη είναι η κολοκύθα σε όγκο, τόσο υψηλότερη η τιμή - κάποιες φορές αυτές οι σχέσεις δεν μπορούν να σχεδιαστούν ως επίπεδο ή ευθεία γραμμή. +Ένας άλλος τύπος γραμμικής παλινδρόμησης είναι η Πολυωνυμική Παλινδρόμηση. Ενώ μερικές φορές υπάρχει γραμμική συσχέτιση μεταξύ μεταβλητών - όσο μεγαλύτερη η κολοκύθα σε όγκο, τόσο υψηλότερη η τιμή - μερικές φορές αυτές οι σχέσεις δεν μπορούν να απεικονιστούν ως επίπεδο ή ευθεία γραμμή. -✅ Εδώ είναι [μερικά ακόμα παραδείγματα](https://online.stat.psu.edu/stat501/lesson/9/9.8) δεδομένων που θα μπορούσαν να χρησιμοποιήσουν Πολυωνυμική Παλινδρόμηση. +✅ Εδώ είναι [μερικά ακόμη παραδείγματα](https://online.stat.psu.edu/stat501/lesson/9/9.8) δεδομένων που θα μπορούσαν να χρησιμοποιήσουν Πολυωνυμική Παλινδρόμηση. -Ρίξτε άλλη μια ματιά στη σχέση μεταξύ της Ημερομηνίας και της Τιμής. Αυτό το διασποράς φαίνεται να πρέπει κατ’ ανάγκη να αναλυθεί με μια ευθεία γραμμή; Δεν μπορεί η τιμή να κυμαίνεται; Σε αυτή την περίπτωση, μπορείτε να δοκιμάσετε πολυωνυμική παλινδρόμηση. +Ρίξε μια ακόμα ματιά στη σχέση μεταξύ Ημερομηνίας και Τιμής. Φαίνεται αυτό το scatterplot να πρέπει απαραίτητα να αναλυθεί με μια ευθεία γραμμή; Δεν μπορούν οι τιμές να κυμαίνονται; Σε αυτή την περίπτωση, μπορείς να δοκιμάσεις την πολυωνυμική παλινδρόμηση. -✅ Τα πολυώνυμα είναι μαθηματικές εκφράσεις που μπορεί να αποτελούνται από μία ή περισσότερες μεταβλητές και συντελεστές. +✅ Οι πολυώνυμοι είναι μαθηματικές εκφράσεις που μπορεί να αποτελούνται από μία ή περισσότερες μεταβλητές και συντελεστές. -Η πολυωνυμική παλινδρόμηση δημιουργεί μια καμπύλη γραμμή για να ταιριάξει καλύτερα δεδομένα που δεν είναι γραμμικά. Στην περίπτωσή μας, αν συμπεριλάβουμε μια μεταβλητή `DayOfYear` υψωμένη στο τετράγωνο στα εισερχόμενα δεδομένα, θα μπορούσαμε να προσαρμόσουμε τα δεδομένα μας με μια παραβολική καμπύλη, που θα έχει ένα ελάχιστο σε ένα συγκεκριμένο σημείο μέσα στο έτος. +Η πολυωνυμική παλινδρόμηση δημιουργεί μια καμπύλη γραμμή για να ταιριάξει καλύτερα σε μη-γραμμικά δεδομένα. Στη δική μας περίπτωση, αν συμπεριλάβουμε μια τετράγωνη μεταβλητή `DayOfYear` στα εισαγόμενα δεδομένα, θα πρέπει να μπορέσουμε να προσαρμόσουμε τα δεδομένα μας με μια παραβολική καμπύλη, που θα έχει ένα ελάχιστο σε κάποιο σημείο μέσα στο έτος. -Η Scikit-learn περιλαμβάνει ένα χρήσιμο [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) για να συνδυάζει διαφορετικά βήματα επεξεργασίας δεδομένων μαζί. Ένα **pipeline** είναι μια αλυσίδα **εκτιμητών (estimators)**. Στην περίπτωσή μας, θα δημιουργήσουμε ένα pipeline που πρώτα προσθέτει πολυωνυμικά χαρακτηριστικά στο μοντέλο μας και στη συνέχεια εκπαιδεύει την παλινδρόμηση: +Το Scikit-learn περιλαμβάνει ένα χρήσιμο [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) για να συνδυάζει διαφορετικά βήματα επεξεργασίας δεδομένων μαζί. Ένα **pipeline** είναι μια αλυσίδα **εκτιμητών**. Στη δική μας περίπτωση, θα δημιουργήσουμε ένα pipeline που πρώτα προσθέτει πολυωνυμικά χαρακτηριστικά στο μοντέλο μας, και μετά εκπαιδεύει την παλινδρόμηση: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Η χρήση του `PolynomialFeatures(2)` σημαίνει ότι θα συμπεριλάβουμε όλα τα πολυώνυμα δευτέρου βαθμού από τα εισερχόμενα δεδομένα. Στην περίπτωσή μας, θα σημαίνει απλά `DayOfYear`2, αλλά δεδομένων δύο εισερχόμενων μεταβλητών X και Y, αυτό θα προσθέσει X2, XY και Y2. Μπορούμε επίσης να χρησιμοποιήσουμε πολυώνυμα υψηλότερου βαθμού αν το επιθυμούμε. +Η χρήση του `PolynomialFeatures(2)` σημαίνει ότι θα συμπεριλάβουμε όλους τους πολυώνυμους δεύτερου βαθμού από τα εισαγόμενα δεδομένα. Στη δική μας περίπτωση αυτό σημαίνει απλά `DayOfYear`2, αλλά δεδομένων δύο εισερχόμενων μεταβλητών X και Y, αυτό θα προσθέσει X2, XY και Y2. Μπορούμε επίσης να χρησιμοποιήσουμε πολυώνυμα υψηλότερου βαθμού αν το θέλουμε. + +Τα pipelines μπορούν να χρησιμοποιηθούν με τον ίδιο τρόπο όπως το αρχικό αντικείμενο `LinearRegression`, δηλαδή μπορούμε να κάνουμε `fit` το pipeline και μετά να χρησιμοποιήσουμε `predict` για να πάρουμε τα αποτελέσματα της πρόβλεψης: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Για να σχεδιάσουμε την ομαλή καμπύλη προσέγγισης, χρησιμοποιούμε το `np.linspace` για να δημιουργήσουμε ένα ομοιόμορφο φάσμα τιμών εισόδου, αντί να σχεδιάσουμε άμεσα πάνω στα μη διατεταγμένα δεδομένα δοκιμής (που θα παρήγαγε μια ζιγκ-ζαγκ γραμμή): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Τα pipelines μπορούν να χρησιμοποιηθούν με τον ίδιο τρόπο όπως το αρχικό αντικείμενο `LinearRegression`, δηλαδή μπορούμε να κάνουμε `fit` στο pipeline και στη συνέχεια να χρησιμοποιήσουμε `predict` για να πάρουμε τα αποτελέσματα της πρόβλεψης. Εδώ είναι το γράφημα που δείχνει τα δεδομένα δοκιμής και την προσεγγιστική καμπύλη: +Εδώ είναι το διάγραμμα που δείχνει τα δεδομένα δοκιμής και την καμπύλη προσέγγισης: Πολυωνυμική παλινδρόμηση -Χρησιμοποιώντας πολυωνυμική παλινδρόμηση, μπορούμε να πετύχουμε ελαφρώς χαμηλότερο MSE και μεγαλύτερο συντελεστή καθορισμού, αλλά όχι σημαντικά. Πρέπει να λάβουμε υπόψη και άλλα χαρακτηριστικά! +Χρησιμοποιώντας την Πολυωνυμική Παλινδρόμηση, μπορούμε να πετύχουμε ελαφρώς χαμηλότερο RMSE και υψηλότερο συντελεστή προσδιορισμού, αλλά όχι σημαντικά. Πρέπει να λάβουμε υπόψη και άλλα χαρακτηριστικά! -> Μπορείτε να δείτε ότι οι ελάχιστες τιμές των κολοκυθών παρατηρούνται κάπου γύρω στο Halloween. Πώς μπορείτε να εξηγήσετε αυτό; +> Μπορείς να δεις ότι οι ελάχιστες τιμές κολοκύθας παρατηρούνται κάπου γύρω από το Halloween. Πώς μπορείς να το εξηγήσεις; -🎃 Συγχαρητήρια, μόλις δημιουργήσατε ένα μοντέλο που μπορεί να βοηθήσει στην πρόβλεψη της τιμής για τις κολοκύθες τύπου πίτας. Πιθανότατα μπορείτε να επαναλάβετε την ίδια διαδικασία για όλους τους τύπους κολοκύθας, αλλά αυτό θα ήταν κουραστικό. Ας μάθουμε τώρα πώς να λαμβάνουμε υπόψη τη ποικιλία κολοκύθας στο μοντέλο μας! +🎃 Συγχαρητήρια, μόλις δημιούργησες ένα μοντέλο που μπορεί να βοηθήσει στην πρόβλεψη της τιμής των πίτων κολοκύθας. Πιθανώς να μπορείς να επαναλάβεις την ίδια διαδικασία για όλους τους τύπους κολοκύθας, αλλά αυτό θα ήταν κουραστικό. Ας μάθουμε τώρα πώς να λαμβάνουμε υπόψη την ποικιλία κολοκύθας στο μοντέλο μας! ## Κατηγορικά Χαρακτηριστικά -Σε έναν ιδανικό κόσμο, θέλουμε να μπορούμε να προβλέπουμε τιμές για διαφορετικές ποικιλίες κολοκύθας χρησιμοποιώντας το ίδιο μοντέλο. Ωστόσο, η στήλη `Variety` είναι κάπως διαφορετική από στήλες όπως το `Month`, επειδή περιέχει μη αριθμητικές τιμές. Τέτοιες στήλες ονομάζονται **κατηγορικές**. +Σε έναν ιδανικό κόσμο, θέλουμε να μπορούμε να προβλέπουμε τιμές για διαφορετικές ποικιλίες κολοκύθας χρησιμοποιώντας το ίδιο μοντέλο. Ωστόσο, η στήλη `Variety` διαφέρει κάπως από στήλες όπως το `Month`, επειδή περιέχει μη αριθμητικές τιμές. Τέτοιες στήλες ονομάζονται **κατηγορικές**. -[![Μηχανική Μάθηση για αρχάριους - Προβλέψεις κατηγορικών χαρακτηριστικών με γραμμική παλινδρόμηση](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![Μηχανική Μάθηση για αρχάριους - Προβλέψεις με κατηγορικά χαρακτηριστικά χρησιμοποιώντας γραμμική παλινδρόμηση](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "Μηχανική Μάθηση για αρχάριους - Προβλέψεις με κατηγορικά χαρακτηριστικά χρησιμοποιώντας γραμμική παλινδρόμηση") -> 🎥 Πατήστε την εικόνα παραπάνω για μια σύντομη βίντεο-επισκόπηση της χρήσης κατηγορικών χαρακτηριστικών. +> 🎥 Κάνε κλικ στην παραπάνω εικόνα για μια σύντομη επισκόπηση βίντεο σχετικά με τη χρήση κατηγορικών χαρακτηριστικών. -Εδώ μπορείτε να δείτε πώς η μέση τιμή εξαρτάται από την ποικιλία: +Εδώ βλέπεις πως η μέση τιμή εξαρτάται από την ποικιλία: Μέση τιμή ανά ποικιλία -Για να λάβουμε υπόψη την ποικιλία, αρχικά πρέπει να την μετατρέψουμε σε αριθμητική μορφή ή να την **κωδικοποιήσουμε**. Υπάρχουν διάφοροι τρόποι να το κάνουμε: +Για να λάβουμε υπόψη την ποικιλία, πρώτα πρέπει να τη μετατρέψουμε σε αριθμητική μορφή, ή να την **κωδικοποιήσουμε**. Υπάρχουν διάφοροι τρόποι που μπορούμε να το κάνουμε: -* Απλή **αριθμητική κωδικοποίηση** θα δημιουργήσει έναν πίνακα διαφορετικών ποικιλιών και στη συνέχεια θα αντικαταστήσει το όνομα της ποικιλίας με έναν δείκτη σε αυτόν τον πίνακα. Αυτό δεν είναι η καλύτερη ιδέα για γραμμική παλινδρόμηση, επειδή η γραμμική παλινδρόμηση λαμβάνει την πραγματική αριθμητική τιμή του δείκτη και την προσθέτει στο αποτέλεσμα, πολλαπλασιάζοντας την με κάποιο συντελεστή. Στην περίπτωσή μας, η σχέση μεταξύ του αριθμού δείκτη και της τιμής είναι σαφώς μη γραμμική, ακόμα και αν φροντίσουμε οι δείκτες να είναι ταξινομημένοι με κάποιο συγκεκριμένο τρόπο. -* Η **one-hot κωδικοποίηση** θα αντικαταστήσει τη στήλη `Variety` με 4 διαφορετικές στήλες, μία για κάθε ποικιλία. Κάθε στήλη θα περιέχει `1` αν η αντίστοιχη γραμμή ανήκει σε μια συγκεκριμένη ποικιλία, και `0` αλλιώς. Αυτό σημαίνει ότι θα υπάρχουν τέσσερις συντελεστές στη γραμμική παλινδρόμηση, ένας για κάθε ποικιλία κολοκύθας, υπεύθυνος για την "αρχική τιμή" (ή μάλλον την "επιπλέον τιμή") για αυτή τη συγκεκριμένη ποικιλία. +* Η απλή **αριθμητική κωδικοποίηση** θα δημιουργήσει έναν πίνακα με τις διαφορετικές ποικιλίες, και μετά θα αντικαταστήσει το όνομα της ποικιλίας με ένα δείκτη σε αυτόν τον πίνακα. Αυτό δεν είναι η καλύτερη ιδέα για την γραμμική παλινδρόμηση, γιατί η γραμμική παλινδρόμηση λαμβάνει την πραγματική αριθμητική τιμή του δείκτη και την προσθέτει στο αποτέλεσμα, πολλαπλασιάζοντας με κάποιο συντελεστή. Στη δική μας περίπτωση, η σχέση μεταξύ του αριθμού δείκτη και της τιμής είναι σαφώς μη γραμμική, ακόμα κι αν φροντίσουμε να τακτοποιήσουμε τους δείκτες με κάποιο συγκεκριμένο τρόπο. +* Η **one-hot κωδικοποίηση** θα αντικαταστήσει τη στήλη `Variety` με 4 διαφορετικές στήλες, μία για κάθε ποικιλία. Κάθε στήλη θα περιέχει `1` αν η αντίστοιχη γραμμή είναι της συγκεκριμένης ποικιλίας, και `0` διαφορετικά. Αυτό σημαίνει ότι θα υπάρχουν τέσσερις συντελεστές στη γραμμική παλινδρόμηση, ένας για κάθε ποικιλία κολοκύθας, υπεύθυνος για την «αρχική τιμή» (ή μάλλον την «πρόσθετη τιμή») για αυτή την ποικιλία. -Ο παρακάτω κώδικας δείχνει πώς μπορούμε να κάνουμε one-hot κωδικοποίηση μιας ποικιλίας: +Ο κώδικας παρακάτω δείχνει πώς μπορούμε να κάνουμε one-hot κωδικοποίηση μιας ποικιλίας: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Για να εκπαιδεύσουμε τη γραμμική παλινδρόμηση χρησιμοποιώντας one-hot κωδικοποιημένη ποικιλία ως είσοδο, απλά πρέπει να ορίσουμε σωστά τα δεδομένα `X` και `y`: +Για να εκπαιδεύσουμε γραμμική παλινδρόμηση χρησιμοποιώντας την one-hot κωδικοποίηση ποικιλίας ως είσοδο, απλώς πρέπει να αρχικοποιήσουμε σωστά τα δεδομένα `X` και `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Ο υπόλοιπος κώδικας είναι ο ίδιος όπως αυτός που χρησιμοποιήσαμε παραπάνω για να εκπαιδεύσουμε τη γραμμική παλινδρόμηση. Αν το δοκιμάσετε, θα δείτε ότι το μέσο τετραγωνικό σφάλμα είναι περίπου το ίδιο, αλλά παίρνουμε πολύ υψηλότερο συντελεστή καθορισμού (~77%). Για να πάρουμε ακόμα πιο ακριβείς προβλέψεις, μπορούμε να λάβουμε υπόψη και περισσότερα κατηγορικά χαρακτηριστικά, καθώς και αριθμητικά χαρακτηριστικά, όπως το `Month` ή το `DayOfYear`. Για να δημιουργήσουμε έναν μεγάλο πίνακα χαρακτηριστικών, μπορούμε να χρησιμοποιήσουμε το `join`: +Ο υπόλοιπος κώδικας είναι ο ίδιος με τον παραπάνω που χρησιμοποιήσαμε για να εκπαιδεύσουμε τη γραμμική παλινδρόμηση. Αν το δοκιμάσεις, θα δεις ότι το μέσο τετραγωνικό σφάλμα είναι περίπου το ίδιο, αλλά λαμβάνουμε πολύ υψηλότερο συντελεστή προσδιορισμού (~77%). Για να κάνουμε τις προβλέψεις ακόμα πιο ακριβείς, μπορούμε να λάβουμε υπόψη περισσότερα κατηγορικά χαρακτηριστικά, καθώς και αριθμητικά χαρακτηριστικά, όπως το `Month` ή το `DayOfYear`. Για να πάρουμε έναν μεγάλο πίνακα χαρακτηριστικών, μπορούμε να χρησιμοποιήσουμε το `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,68 +342,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Εδώ λαμβάνουμε υπόψη επίσης το `City` και τον τύπο `Package`, που μας δίνει MSE 2.84 (10%) και συντελεστή καθορισμού 0.94! +Εδώ επίσης λαμβάνουμε υπόψη `City` και τύπο `Package`, που μας δίνει RMSE 2.84 (10.5%) και συντελεστή προσδιορισμού 0.94! -## Όλα μαζί +## Ταυτόχρονη χρήση όλων τους -Για να φτιάξουμε το καλύτερο μοντέλο, μπορούμε να χρησιμοποιήσουμε συνδυασμένα (one-hot κωδικοποιημένα κατηγορικά + αριθμητικά) δεδομένα από το παραπάνω παράδειγμα μαζί με την πολυωνυμική παλινδρόμηση. Εδώ είναι ο πλήρης κώδικας για τη διευκόλυνσή σας: +Για να φτιάξουμε το καλύτερο μοντέλο, μπορούμε να χρησιμοποιήσουμε συνδυασμένα (one-hot κωδικοποιημένα κατηγορικά + αριθμητικά) δεδομένα από το παραπάνω παράδειγμα μαζί με την πολυωνυμική παλινδρόμηση. Εδώ είναι ο πλήρης κώδικας για τη διευκόλυνσή σου: ```python -# ρύθμιση δεδομένων εκπαίδευσης +# ορίστε τα δεδομένα εκπαίδευσης X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# δημιουργία διαχωρισμού εκπαίδευσης-δοκιμής +# κάντε διαχωρισμό εκπαίδευσης-δοκιμής X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# ρύθμιση και εκπαίδευση της αλυσίδας +# ρυθμίστε και εκπαιδεύστε τη ροή εργασίας pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# πρόβλεψη αποτελεσμάτων για τα δεδομένα δοκιμής +# προβλέψτε τα αποτελέσματα για τα δεδομένα δοκιμής pred = pipeline.predict(X_test) -# υπολογισμός MSE και προσδιορισμού -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# υπολογίστε το RMSE και τον συντελεστή προσδιορισμού +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Αυτό θα μας δώσει τον καλύτερο συντελεστή καθορισμού κοντά στο 97%, και MSE=2.23 (~8% σφάλμα πρόβλεψης). +Αυτό θα μας δώσει τον καλύτερο συντελεστή προσδιορισμού σχεδόν 97%, και RMSE=2.23 (~8% σφάλμα πρόβλεψης). -| Μοντέλο | MSE | Συντελεστής καθορισμού | -|---------|-----|------------------------| -| Γραμμική `DayOfYear` | 2.77 (17.2%) | 0.07 | -| Πολυωνυμική `DayOfYear` | 2.73 (17.0%) | 0.08 | -| Γραμμική `Variety` | 5.24 (19.7%) | 0.77 | -| Γραμμική με όλα τα χαρακτηριστικά | 2.84 (10.5%) | 0.94 | -| Πολυωνυμική με όλα τα χαρακτηριστικά | 2.23 (8.25%) | 0.97 | +| Μοντέλο | RMSE | Συντελεστής προσδιορισμού | +|-------|-----|---------------| +| Γραμμικό `DayOfYear` | 2.77 (17.2%) | 0.07 | +| Πολυωνυμικό `DayOfYear` | 2.73 (17.0%) | 0.08 | +| Γραμμικό `Variety` | 5.24 (19.7%) | 0.77 | +| Όλα τα χαρακτηριστικά Γραμμικό | 2.84 (10.5%) | 0.94 | +| Όλα τα χαρακτηριστικά Πολυωνυμικό | 2.23 (8.25%) | 0.97 | -🏆 Μπράβο! Δημιουργήσατε τέσσερα μοντέλα παλινδρόμησης σε ένα μάθημα και βελτιώσατε την ποιότητα του μοντέλου στο 97%. Στο τελικό κεφάλαιο για την Παλινδρόμηση θα μάθετε για τη λογιστική παλινδρόμηση για την κατηγοριοποίηση. +🏆 Μπράβο! Δημιούργησες τέσσερα μοντέλα Παλινδρόμησης σε ένα μάθημα και βελτίωσες την ποιότητα του μοντέλου στο 97%. Στην τελική ενότητα για την παλινδρόμηση, θα μάθεις για την Λογιστική Παλινδρόμηση για τον καθορισμό κατηγοριών. --- ## 🚀Πρόκληση -Δοκιμάστε διάφορες μεταβλητές σε αυτό το notebook για να δείτε πώς η συσχέτιση σχετίζεται με την ακρίβεια του μοντέλου. +Δοκίμασε διάφορες μεταβλητές σε αυτό το σημειωματάριο για να δεις πώς η συσχέτιση αντιστοιχεί στην ακρίβεια του μοντέλου. -## [Τεστ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/) +## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/) -## Ανασκόπηση & Αυτο-μελέτη +## Ανασκόπηση & Αυτοδιδασκαλία -Σε αυτό το μάθημα μάθαμε για τη γραμμική παλινδρόμηση. Υπάρχουν και άλλοι σημαντικοί τύποι παλινδρόμησης. Διαβάστε για τις τεχνικές Stepwise, Ridge, Lasso και Elasticnet. Ένα καλό μάθημα για να μάθετε περισσότερα είναι το [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +Σε αυτό το μάθημα μάθαμε για τη Γραμμική Παλινδρόμηση. Υπάρχουν και άλλοι σημαντικοί τύποι παλινδρόμησης. Διάβασε για τις τεχνικές Stepwise, Ridge, Lasso και Elasticnet. Ένα καλό μάθημα για να μελετήσεις περισσότερα είναι το [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Εργασία +## Άσκηση -[Κατασκευή μοντέλου](assignment.md) +[Δημιούργησε ένα μοντέλο](assignment.md) --- **Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις μπορεί να περιέχουν σφάλματα ή ανακρίβειες. Το αρχικό έγγραφο στην μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε καμία ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ προσπαθούμε για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το αρχικό έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε καμία ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/2-Regression/3-Linear/solution/notebook.ipynb b/translations/el/2-Regression/3-Linear/solution/notebook.ipynb index 02a5a1d009..89f1cb8da2 100644 --- a/translations/el/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/el/2-Regression/3-Linear/solution/notebook.ipynb @@ -6,12 +6,12 @@ "source": [ "## Γραμμική και Πολυωνυμική Παλινδρόμηση για Τιμολόγηση Κολοκύθας - Μάθημα 3\n", "\n", - "Φορτώστε τις απαραίτητες βιβλιοθήκες και το σύνολο δεδομένων. Μετατρέψτε τα δεδομένα σε ένα dataframe που περιέχει ένα υποσύνολο των δεδομένων:\n", + "Φορτώστε τις απαιτούμενες βιβλιοθήκες και το σύνολο δεδομένων. Μετατρέψτε τα δεδομένα σε ένα dataframe που περιέχει ένα υποσύνολο των δεδομένων:\n", "\n", - "- Επιλέξτε μόνο κολοκύθες που τιμολογούνται ανά bushel\n", + "- Λάβετε μόνο τις κολοκύθες που τιμολογούνται ανά μπούσελ\n", "- Μετατρέψτε την ημερομηνία σε μήνα\n", "- Υπολογίστε την τιμή ως μέσο όρο των υψηλών και χαμηλών τιμών\n", - "- Μετατρέψτε την τιμή ώστε να αντικατοπτρίζει την τιμολόγηση ανά ποσότητα bushel\n" + "- Μετατρέψτε την τιμή ώστε να αντανακλά την τιμολόγηση ανά ποσότητα μπούσελ\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ένα διάγραμμα διασποράς μας υπενθυμίζει ότι έχουμε δεδομένα μόνο από τον Αύγουστο έως τον Δεκέμβριο. Πιθανώς χρειαζόμαστε περισσότερα δεδομένα για να μπορέσουμε να βγάλουμε συμπεράσματα με γραμμικό τρόπο.\n" + "Ένα διάγραμμα διασποράς μας υπενθυμίζει ότι έχουμε δεδομένα μόνο των μηνών από τον Αύγουστο έως και τον Δεκέμβριο. Πιθανόν να χρειαζόμαστε περισσότερα δεδομένα ώστε να μπορέσουμε να βγάλουμε συμπεράσματα με γραμμικό τρόπο.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Ας δούμε αν υπάρχει συσχέτιση:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Φαίνεται ότι η συσχέτιση είναι αρκετά μικρή, αλλά υπάρχει κάποια άλλη πιο σημαντική σχέση - επειδή οι τιμές στον παραπάνω γράφημα φαίνεται να σχηματίζουν αρκετές διακριτές ομάδες. Ας δημιουργήσουμε ένα γράφημα που θα δείχνει τις διαφορετικές ποικιλίες κολοκύθας:\n" + "Φαίνεται ότι η συσχέτιση είναι σχετικά μικρή, αλλά υπάρχει κάποια άλλη πιο σημαντική σχέση - διότι τα σημεία τιμών στο παραπάνω γράφημα φαίνεται να έχουν αρκετές διακριτές συστάδες. Ας φτιάξουμε ένα γράφημα που θα δείχνει διαφορετικές ποικιλίες κολοκύθας:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Προς το παρόν, ας επικεντρωθούμε μόνο σε μία ποικιλία - **τύπος πίτας**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Γραμμική Παλινδρόμηση\n", "\n", - "Θα χρησιμοποιήσουμε το Scikit Learn για να εκπαιδεύσουμε ένα μοντέλο γραμμικής παλινδρόμησης:\n" + "Θα χρησιμοποιήσουμε το Scikit Learn για να εκπαιδεύσουμε μοντέλο γραμμικής παλινδρόμησης:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Η κλίση της γραμμής μπορεί να προσδιοριστεί από τους συντελεστές γραμμικής παλινδρόμησης:\n" + "Η κλίση της γραμμής μπορεί να προσδιοριστεί από τους συντελεστές της γραμμικής παλινδρόμησης:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Πολυωνυμική Παλινδρόμηση\n", "\n", - "Μερικές φορές η σχέση μεταξύ χαρακτηριστικών και αποτελεσμάτων είναι εγγενώς μη γραμμική. Για παράδειγμα, οι τιμές της κολοκύθας μπορεί να είναι υψηλές τον χειμώνα (μήνες=1,2), να πέφτουν το καλοκαίρι (μήνες=5-7) και στη συνέχεια να αυξάνονται ξανά. Η γραμμική παλινδρόμηση δεν μπορεί να βρει αυτή τη σχέση με ακρίβεια.\n", + "Μερικές φορές η σχέση μεταξύ χαρακτηριστικών και αποτελεσμάτων είναι εγγενώς μη γραμμική. Για παράδειγμα, οι τιμές της κολοκύθας μπορεί να είναι υψηλές τον χειμώνα (μήνες=1,2), στη συνέχεια να πέφτουν το καλοκαίρι (μήνες=5-7), και μετά να ανεβαίνουν ξανά. Η γραμμική παλινδρόμηση δεν μπορεί να βρει αυτήν τη σχέση με ακρίβεια.\n", "\n", - "Σε αυτή την περίπτωση, μπορούμε να εξετάσουμε την προσθήκη επιπλέον χαρακτηριστικών. Ένας απλός τρόπος είναι να χρησιμοποιήσουμε πολυώνυμα από τα χαρακτηριστικά εισόδου, κάτι που θα οδηγήσει σε **πολυωνυμική παλινδρόμηση**. Στο Scikit Learn, μπορούμε να προ-υπολογίσουμε αυτόματα πολυωνυμικά χαρακτηριστικά χρησιμοποιώντας pipelines:\n" + "Σε αυτή την περίπτωση, μπορούμε να εξετάσουμε την προσθήκη επιπλέον χαρακτηριστικών. Ένας απλός τρόπος είναι να χρησιμοποιήσουμε πολυώνυμα από τα εισερχόμενα χαρακτηριστικά, που θα έχει ως αποτέλεσμα την **πολυωνυμική παλινδρόμηση**. Στο Scikit Learn, μπορούμε να υπολογίσουμε αυτόματα τα πολυωνυμικά χαρακτηριστικά χρησιμοποιώντας αγωγούς (pipelines): \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Κωδικοποίηση ποικιλιών\n", + "### Παραλλαγές κωδικοποίησης\n", "\n", - "Στον ιδανικό κόσμο, θέλουμε να μπορούμε να προβλέψουμε τις τιμές για διαφορετικές ποικιλίες κολοκύθας χρησιμοποιώντας το ίδιο μοντέλο. Για να λάβουμε υπόψη την ποικιλία, πρέπει πρώτα να τη μετατρέψουμε σε αριθμητική μορφή, ή αλλιώς να την **κωδικοποιήσουμε**. Υπάρχουν διάφοροι τρόποι να το κάνουμε:\n", + "Στον ιδανικό κόσμο, θέλουμε να μπορούμε να προβλέψουμε τις τιμές για διάφορες ποικιλίες κολοκύθας χρησιμοποιώντας το ίδιο μοντέλο. Για να λάβουμε υπόψη την ποικιλία, πρέπει πρώτα να τη μετατρέψουμε σε αριθμητική μορφή, ή να την **κωδικοποιήσουμε**. Υπάρχουν διάφοροι τρόποι να το κάνουμε:\n", "\n", - "* Απλή αριθμητική κωδικοποίηση, η οποία δημιουργεί έναν πίνακα με τις διαφορετικές ποικιλίες και στη συνέχεια αντικαθιστά το όνομα της ποικιλίας με έναν δείκτη σε αυτόν τον πίνακα. Αυτό δεν είναι η καλύτερη ιδέα για γραμμική παλινδρόμηση, επειδή η γραμμική παλινδρόμηση λαμβάνει υπόψη την αριθμητική τιμή του δείκτη, και η αριθμητική τιμή πιθανότατα δεν συσχετίζεται αριθμητικά με την τιμή.\n", - "* Κωδικοποίηση one-hot, η οποία αντικαθιστά τη στήλη `Variety` με 4 διαφορετικές στήλες, μία για κάθε ποικιλία, που θα περιέχει 1 αν η αντίστοιχη γραμμή ανήκει στη συγκεκριμένη ποικιλία, και 0 διαφορετικά.\n", + "* Απλή αριθμητική κωδικοποίηση που θα δημιουργήσει έναν πίνακα διαφορετικών ποικιλιών και στη συνέχεια θα αντικαταστήσει το όνομα της ποικιλίας με ένα δείκτη σε αυτόν τον πίνακα. Αυτό δεν είναι η καλύτερη ιδέα για γραμμική παλινδρόμηση, επειδή η γραμμική παλινδρόμηση λαμβάνει υπόψη την αριθμητική τιμή του δείκτη, και η αριθμητική τιμή πιθανόν να μην σχετίζεται αριθμητικά με την τιμή.\n", + "* Κωδικοποίηση one-hot, που θα αντικαταστήσει τη στήλη `Variety` με 4 διαφορετικές στήλες, μία για κάθε ποικιλία, που θα περιέχουν 1 αν η αντίστοιχη γραμμή ανήκει στην συγκεκριμένη ποικιλία και 0 αλλιώς.\n", "\n", - "Ο παρακάτω κώδικας δείχνει πώς μπορούμε να κωδικοποιήσουμε μια ποικιλία με τη μέθοδο one-hot:\n" + "Ο κώδικας παρακάτω δείχνει πώς μπορούμε να εφαρμόσουμε κωδικοποίηση one-hot σε μια ποικιλία:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Γραμμική Παλινδρόμηση στη Ποικιλία\n", + "### Γραμμική Παλινδρόμηση σε Διάφορα \n", "\n", - "Τώρα θα χρησιμοποιήσουμε τον ίδιο κώδικα όπως παραπάνω, αλλά αντί για `DayOfYear` θα χρησιμοποιήσουμε την ποικιλία μας, η οποία έχει κωδικοποιηθεί με one-hot, ως είσοδο:\n" + "Τώρα θα χρησιμοποιήσουμε τον ίδιο κώδικα όπως παραπάνω, αλλά αντί για το `DayOfYear` θα χρησιμοποιήσουμε τη one-hot-encoded ποικιλία μας ως είσοδο:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Μπορούμε επίσης να δοκιμάσουμε να χρησιμοποιήσουμε άλλες δυνατότητες με τον ίδιο τρόπο και να τις συνδυάσουμε με αριθμητικές δυνατότητες, όπως το `Month` ή το `DayOfYear`:\n" + "Μπορούμε επίσης να δοκιμάσουμε να χρησιμοποιήσουμε άλλα χαρακτηριστικά με τον ίδιο τρόπο και να τα συνδυάσουμε με αριθμητικά χαρακτηριστικά, όπως το `Month` ή το `DayOfYear`:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Πολυωνυμική Παλινδρόμηση\n", "\n", - "Η πολυωνυμική παλινδρόμηση μπορεί επίσης να χρησιμοποιηθεί με κατηγορικά χαρακτηριστικά που έχουν κωδικοποιηθεί με one-hot encoding. Ο κώδικας για την εκπαίδευση πολυωνυμικής παλινδρόμησης θα είναι ουσιαστικά ο ίδιος με αυτόν που έχουμε δει παραπάνω.\n" + "Η πολυωνυμική παλινδρόμηση μπορεί επίσης να χρησιμοποιηθεί με κατηγορικά χαρακτηριστικά που έχουν κωδικοποιηθεί με one-hot encoding. Ο κώδικας για την εκπαίδευση της πολυωνυμικής παλινδρόμησης θα ήταν ουσιαστικά ίδιος με αυτόν που είδαμε παραπάνω.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Αποποίηση ευθύνης**: \nΑυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.\n" + "---\n\n\n**Αποποίηση ευθυνών**: \nΑυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ προσπαθούμε για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρανοήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:19:55+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "el" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sv/.co-op-translator.json b/translations/sv/.co-op-translator.json index 534aa0c9ed..d10ca7bd7a 100644 --- a/translations/sv/.co-op-translator.json +++ b/translations/sv/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "sv" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T21:40:53+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:21:46+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "sv" }, @@ -90,8 +90,8 @@ "language_code": "sv" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:21:59+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:21:19+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "sv" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "sv" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:17:10+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "sv" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T21:10:30+00:00", diff --git a/translations/sv/1-Introduction/4-techniques-of-ML/README.md b/translations/sv/1-Introduction/4-techniques-of-ML/README.md index a2a80827b8..1d561602a9 100644 --- a/translations/sv/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/sv/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Tekniker för maskininlärning -Processen att bygga, använda och underhålla modeller för maskininlärning och den data de använder skiljer sig avsevärt från många andra utvecklingsarbetsflöden. I denna lektion kommer vi att avmystifiera processen och beskriva de huvudsakliga tekniker du behöver känna till. Du kommer att: +Processen att bygga, använda och underhålla maskininlärningsmodeller och den data de använder är en mycket annorlunda process jämfört med många andra utvecklingsarbetsflöden. I denna lektion kommer vi att avmystifiera processen och skissera de viktigaste teknikerna du behöver känna till. Du kommer att: -- Förstå de processer som ligger till grund för maskininlärning på en övergripande nivå. -- Utforska grundläggande begrepp som "modeller", "prediktioner" och "träningsdata". +- Förstå processerna bakom maskininlärning på en övergripande nivå. +- Utforska grundläggande begrepp såsom "modeller", "förutsägelser" och "träningsdata". -## [Quiz före föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz före föreläsning](https://ff-quizzes.netlify.app/en/ml/) -[![ML för nybörjare - Tekniker för maskininlärning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML för nybörjare - Tekniker för maskininlärning") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") > 🎥 Klicka på bilden ovan för en kort video som går igenom denna lektion. ## Introduktion -På en övergripande nivå består hantverket att skapa processer för maskininlärning (ML) av flera steg: +På en övergripande nivå består hantverket att skapa maskininlärningsprocesser (ML) av ett antal steg: -1. **Bestäm frågan**. De flesta ML-processer börjar med att ställa en fråga som inte kan besvaras med ett enkelt villkorsprogram eller en regelbaserad motor. Dessa frågor handlar ofta om att göra prediktioner baserade på en samling data. -2. **Samla in och förbered data**. För att kunna besvara din fråga behöver du data. Kvaliteten och ibland mängden av din data kommer att avgöra hur väl du kan besvara din ursprungliga fråga. Att visualisera data är en viktig del av denna fas. Denna fas inkluderar också att dela upp data i en tränings- och testgrupp för att bygga en modell. -3. **Välj en träningsmetod**. Beroende på din fråga och datans natur behöver du välja hur du vill träna en modell för att bäst reflektera din data och göra korrekta prediktioner baserat på den. Detta är den del av din ML-process som kräver specifik expertis och ofta en betydande mängd experimenterande. -4. **Träna modellen**. Med hjälp av din träningsdata använder du olika algoritmer för att träna en modell att känna igen mönster i datan. Modellen kan använda interna vikter som kan justeras för att prioritera vissa delar av datan över andra för att bygga en bättre modell. -5. **Utvärdera modellen**. Du använder data som modellen aldrig tidigare sett (din testdata) från din insamlade uppsättning för att se hur modellen presterar. -6. **Justera parametrar**. Baserat på modellens prestanda kan du göra om processen med olika parametrar eller variabler som styr beteendet hos de algoritmer som används för att träna modellen. -7. **Prediktera**. Använd nya indata för att testa modellens noggrannhet. +1. **Bestäm frågan**. De flesta ML-processer börjar med att ställa en fråga som inte kan besvaras med ett enkelt villkorsbaserat program eller regelbaserat system. Dessa frågor handlar ofta om förutsägelser baserade på en samling data. +2. **Samla in och förbered data**. För att kunna besvara din fråga behöver du data. Kvaliteten och ibland även mängden av din data avgör hur väl du kan besvara din ursprungliga fråga. Att visualisera data är en viktig del av denna fas. Denna fas inkluderar också att dela upp data i tränings- och testgrupper för att bygga en modell. +3. **Välj en träningsmetod**. Beroende på din fråga och din datas natur behöver du välja hur du vill träna en modell för att bäst spegla din data och göra noggranna förutsägelser utifrån den. Detta är den del av din ML-process som kräver specifik expertis och ofta en betydande mängd experimenterande. +4. **Träna modellen**. Med hjälp av din träningsdata kommer du att använda olika algoritmer för att träna en modell att känna igen mönster i datan. Modellen kan använda interna vikter som kan justeras för att prioritera vissa delar av datan över andra för att bygga en bättre modell. +5. **Utvärdera modellen**. Du använder tidigare aldrig sedd data (din testdata) från din samling för att se hur modellen presterar. +6. **Parameterjustering**. Baserat på modellens prestanda kan du upprepa processen med olika parametrar, eller variabler, som styr algoritmernas beteende vid träningen av modellen. +7. **Förutsägelse**. Använd nya indata för att testa modellens noggrannhet. -## Vilken fråga ska ställas? +## Vilken fråga att ställa -Datorer är särskilt skickliga på att upptäcka dolda mönster i data. Denna förmåga är mycket användbar för forskare som har frågor om ett visst område som inte enkelt kan besvaras genom att skapa en regelbaserad motor. Givet en aktuarieuppgift, till exempel, kan en dataforskare skapa handgjorda regler kring dödligheten hos rökare jämfört med icke-rökare. +Datorer är särskilt skickliga på att upptäcka dolda mönster i data. Denna förmåga är mycket användbar för forskare som har frågor om ett visst område som inte lätt kan besvaras genom att skapa ett villkorsbaserat regelverk. Vid en aktuarieuppgift, till exempel, kan en data scientist kanske konstruera handgjorda regler kring dödligheten för rökare jämfört med icke-rökare. -När många andra variabler tas med i ekvationen kan dock en ML-modell visa sig vara mer effektiv för att förutsäga framtida dödlighetsnivåer baserat på tidigare hälsodata. Ett mer positivt exempel kan vara att göra väderprognoser för april månad på en viss plats baserat på data som inkluderar latitud, longitud, klimatförändringar, närhet till havet, jetströmmens mönster och mer. +När många andra variabler inkluderas i ekvationen kan dock en ML-modell visa sig vara mer effektiv för att förutsäga framtida dödlighet baserat på tidigare hälsodata. Ett mer muntert exempel kan vara att göra väderprognoser för april månad på en given plats baserat på data som inkluderar latitud, longitud, klimatförändringar, närhet till havet, jetströmmens mönster med mera. -✅ Denna [presentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) om vädermodeller ger ett historiskt perspektiv på att använda ML i väderanalys. +✅ Denna [presentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) om vädermodeller erbjuder ett historiskt perspektiv på användning av ML i väderanalys. ## Förberedande uppgifter -Innan du börjar bygga din modell finns det flera uppgifter du behöver slutföra. För att testa din fråga och formulera en hypotes baserad på modellens prediktioner behöver du identifiera och konfigurera flera element. +Innan du börjar bygga din modell finns flera uppgifter du behöver slutföra. För att testa din fråga och forma en hypotes baserat på modellens förutsägelser behöver du identifiera och konfigurera flera element. ### Data -För att kunna besvara din fråga med någon form av säkerhet behöver du en tillräcklig mängd data av rätt typ. Det finns två saker du behöver göra vid denna punkt: +För att kunna besvara din fråga med någon form av säkerhet behöver du en stor mängd data av rätt typ. Det finns två saker du behöver göra vid detta tillfälle: -- **Samla in data**. Med tanke på den tidigare lektionen om rättvisa i dataanalys, samla in din data med omsorg. Var medveten om källorna till denna data, eventuella inneboende fördomar den kan ha, och dokumentera dess ursprung. -- **Förbered data**. Det finns flera steg i processen att förbereda data. Du kan behöva sammanställa data och normalisera den om den kommer från olika källor. Du kan förbättra datans kvalitet och kvantitet genom olika metoder, såsom att konvertera strängar till siffror (som vi gör i [Klustring](../../5-Clustering/1-Visualize/README.md)). Du kan också generera ny data baserat på den ursprungliga (som vi gör i [Klassificering](../../4-Classification/1-Introduction/README.md)). Du kan rensa och redigera datan (som vi gör inför [Webbapplikationslektionen](../../3-Web-App/README.md)). Slutligen kan du behöva slumpa och blanda datan, beroende på dina träningsmetoder. +- **Samla in data**. Med tanke på föregående lektion om rättvisa i dataanalys, samla in din data med omsorg. Var medveten om var datan kommer ifrån, eventuella inneboende bias och dokumentera dess ursprung. +- **Förbered data**. Det finns flera steg i dataförberedelseprocessen. Du kan behöva sammanställa data och normalisera den om den kommer från olika källor. Du kan förbättra datans kvalitet och kvantitet genom olika metoder, såsom att omvandla strängar till siffror (som i [Klustring](../../5-Clustering/1-Visualize/README.md)). Du kan också generera ny data baserat på den ursprungliga (som i [Klassificering](../../4-Classification/1-Introduction/README.md)). Du kan rengöra och redigera datan (vilket vi gör innan lektionen om [Web App](../../3-Web-App/README.md)). Slutligen kan du behöva slumpa och blanda den, beroende på dina träningsmetoder. -✅ Efter att ha samlat in och bearbetat din data, ta en stund för att se om dess struktur tillåter dig att adressera din avsedda fråga. Det kan vara så att datan inte presterar väl i din givna uppgift, som vi upptäcker i våra [Klustringslektioner](../../5-Clustering/1-Visualize/README.md)! +✅ Efter att ha samlat in och bearbetat din data, ta en stund för att se om dess form kommer att tillåta dig att behandla din avsedda fråga. Det kan vara så att datan inte fungerar bra för din givna uppgift, som vi upptäcker i våra [Klustrings](../../5-Clustering/1-Visualize/README.md) lektioner! -### Funktioner och mål +### Egenskaper och mål -En [funktion](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) är en mätbar egenskap hos din data. I många dataset uttrycks det som en kolumnrubrik som "datum", "storlek" eller "färg". Din funktionsvariabel, vanligtvis representerad som `X` i kod, representerar indata som kommer att användas för att träna modellen. +En [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) är en mätbar egenskap hos din data. I många dataset uttrycks den som en kolumnrubrik som 'datum', 'storlek' eller 'färg'. Din feature-variabel, vanligtvis representerad som `X` i kod, är indatavariabeln som används för att träna en modell. -Ett mål är det du försöker förutsäga. Målet, vanligtvis representerat som `y` i kod, representerar svaret på den fråga du försöker ställa till din data: i december, vilken **färg** på pumpor kommer att vara billigast? I San Francisco, vilka områden kommer att ha det bästa fastighets**priset**? Ibland kallas målet också för etikettattribut. +Ett mål är det du försöker förutsäga. Målvariabeln, vanligtvis representerad som `y` i kod, representerar svaret på frågan du ställer till din data: i december, vilken **färg** på pumpor kommer att vara billigast? i San Francisco, vilka bostadsområden kommer att ha det bästa fastighetspriset? Ibland kallas målvariabeln också för en etikettattribut. -### Välja din funktionsvariabel +### Välja din feature-variabel -🎓 **Funktionsval och funktionsutvinning** Hur vet du vilken variabel du ska välja när du bygger en modell? Du kommer förmodligen att gå igenom en process av funktionsval eller funktionsutvinning för att välja rätt variabler för den mest presterande modellen. De är dock inte samma sak: "Funktionsutvinning skapar nya funktioner från funktioner av de ursprungliga funktionerna, medan funktionsval returnerar en delmängd av funktionerna." ([källa](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Feature selection och feature extraction** Hur vet man vilken variabel man ska välja när man bygger en modell? Du kommer troligen att gå igenom en process för feature selection eller feature extraction för att välja rätt variabler för den mest presterande modellen. De är dock inte samma sak: "Feature extraction skapar nya egenskaper från funktioner hos de ursprungliga egenskaperna, medan feature selection returnerar en delmängd av egenskaperna." ([källa](https://wikipedia.org/wiki/Feature_selection)) ### Visualisera din data -En viktig aspekt av dataforskarens verktygslåda är förmågan att visualisera data med hjälp av flera utmärkta bibliotek som Seaborn eller MatPlotLib. Att representera din data visuellt kan hjälpa dig att upptäcka dolda korrelationer som du kan utnyttja. Dina visualiseringar kan också hjälpa dig att upptäcka fördomar eller obalanserad data (som vi upptäcker i [Klassificering](../../4-Classification/2-Classifiers-1/README.md)). +En viktig del i data scientistens verktygslåda är möjligheten att visualisera data med hjälp av flera utmärkta bibliotek som Seaborn eller MatPlotLib. Att representera din data visuellt kan hjälpa dig att upptäcka dolda korrelationer som du kan utnyttja. Dina visualiseringar kan också hjälpa dig att upptäcka bias eller obalanserad data (som vi upptäcker i [Klassificering](../../4-Classification/2-Classifiers-1/README.md)). ### Dela upp din dataset -Innan träning behöver du dela upp din dataset i två eller fler delar av olika storlek som fortfarande representerar datan väl. +Innan träning behöver du dela upp ditt dataset i två eller flera delar av ojämn storlek som ändå representerar datan väl. -- **Träning**. Denna del av datasetet används för att träna din modell. Denna uppsättning utgör majoriteten av den ursprungliga datasetet. -- **Testning**. En testdataset är en oberoende grupp av data, ofta hämtad från den ursprungliga datan, som du använder för att bekräfta prestandan hos den byggda modellen. -- **Validering**. En valideringsuppsättning är en mindre oberoende grupp av exempel som du använder för att justera modellens hyperparametrar eller arkitektur för att förbättra modellen. Beroende på storleken på din data och frågan du ställer kanske du inte behöver bygga denna tredje uppsättning (som vi noterar i [Tidsserieprognoser](../../7-TimeSeries/1-Introduction/README.md)). +- **Träning**. Denna del av datasetet används för att träna modellen. Detta är den största delen av originaldatasetet. +- **Testning**. Ett testdataset är en oberoende grupp data, ofta hämtad från originaldatan, som används för att bekräfta prestandan hos den byggda modellen. +- **Validering**. Ett valideringsdataset är en mindre oberoende grupp exempel som du använder för att finjustera modellens hyperparametrar, eller arkitektur, för att förbättra modellen. Beroende på din datas storlek och frågeställning kan du behöva eller inte behöva skapa denna tredje grupp (som vi noterar i [Tidsserieförutsägelse](../../7-TimeSeries/1-Introduction/README.md)). ## Bygga en modell -Med hjälp av din träningsdata är ditt mål att bygga en modell, eller en statistisk representation av din data, med hjälp av olika algoritmer för att **träna** den. Att träna en modell exponerar den för data och låter den göra antaganden om uppfattade mönster den upptäcker, validerar och accepterar eller förkastar. +Med hjälp av din träningsdata är målet att bygga en modell, eller en statistisk representation av din data, genom att använda olika algoritmer för att **träna** den. Att träna en modell innebär att exponera den för data och låta den göra antaganden om uppfattade mönster den upptäcker, validerar och accepterar eller avvisar. -### Bestäm en träningsmetod +### Välj en träningsmetod -Beroende på din fråga och datans natur kommer du att välja en metod för att träna den. Genom att gå igenom [Scikit-learns dokumentation](https://scikit-learn.org/stable/user_guide.html) - som vi använder i denna kurs - kan du utforska många sätt att träna en modell. Beroende på din erfarenhet kan du behöva prova flera olika metoder för att bygga den bästa modellen. Du kommer sannolikt att gå igenom en process där dataforskare utvärderar modellens prestanda genom att mata in data den inte har sett tidigare, kontrollera noggrannhet, fördomar och andra kvalitetsförsämrande problem, och välja den mest lämpliga träningsmetoden för den aktuella uppgiften. +Beroende på din fråga och din datas natur kommer du att välja en metod för träning. Genomgång av [Scikit-learns dokumentation](https://scikit-learn.org/stable/user_guide.html) – som vi använder i denna kurs – ger möjlighet att utforska många sätt att träna en modell. Beroende på din erfarenhet kan du behöva prova flera metoder för att bygga den bästa modellen. Du kommer sannolikt att genomgå en process där data scientists utvärderar modellens prestanda genom att mata in tidigare aldrig sedd data, kontrollera noggrannhet, bias och andra kvalitetsnedbrytande faktorer, och välja den mest lämpliga träningsmetoden för uppgiften. ### Träna en modell -Med din träningsdata redo är du redo att "anpassa" den för att skapa en modell. Du kommer att märka att i många ML-bibliotek hittar du koden 'model.fit' - det är vid denna tidpunkt som du skickar in din funktionsvariabel som en array av värden (vanligtvis 'X') och en målvariabel (vanligtvis 'y'). +Med din träningsdata redo kan du 'fit'-träna modellen. Du kommer att märka att i många ML-bibliotek finns koden 'model.fit' - det är just vid detta tillfälle du skickar in din feature-variabel som en matris av värden (vanligtvis 'X') och en målvariabel (vanligtvis 'y'). ### Utvärdera modellen -När träningsprocessen är klar (det kan ta många iterationer, eller "epoker", att träna en stor modell) kommer du att kunna utvärdera modellens kvalitet genom att använda testdata för att bedöma dess prestanda. Denna data är en delmängd av den ursprungliga datan som modellen inte tidigare har analyserat. Du kan skriva ut en tabell med mätvärden om modellens kvalitet. +När träningsprocessen är klar (det kan ta många iterationer, eller 'epochs', att träna en stor modell) kan du utvärdera modellens kvalitet genom att använda testdata för att mäta dess prestanda. Denna data är ett underutdrag av originaldatan som modellen tidigare inte analyserat. Du kan skriva ut en tabell med mätvärden som beskriver din modells kvalitet. -🎓 **Modellanpassning** +🎓 **Model fitting** -I maskininlärningens kontext hänvisar modellanpassning till modellens noggrannhet när den försöker analysera data som den inte är bekant med. +Inom maskininlärning avser model fitting hur noggrant modellens underliggande funktion analyserar data som den inte tidigare är bekant med. -🎓 **Underanpassning** och **överanpassning** är vanliga problem som försämrar modellens kvalitet, eftersom modellen anpassar sig antingen inte tillräckligt bra eller för bra. Detta gör att modellen gör prediktioner som antingen är för nära eller för löst kopplade till dess träningsdata. En överanpassad modell förutsäger träningsdata för bra eftersom den har lärt sig datans detaljer och brus för bra. En underanpassad modell är inte noggrann eftersom den varken kan analysera sin träningsdata eller data den inte har "sett" korrekt. +🎓 **Underfitting** och **overfitting** är vanliga problem som försämrar modellens kvalitet, då modellen passar antingen för dåligt eller för bra. Detta gör att modellen förutsäger antingen alltför strikt eller alltför löst i förhållande till sin träningsdata. En överanpassad modell förutsäger träningsdata för bra eftersom den lärt sig datadetaljer och brus alltför väl. En underanpassad modell är inte noggrann eftersom den varken kan analysera sin träningsdata korrekt eller data den inte tidigare 'sett'. -![överanpassad modell](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/sv/overfitting.1c132d92bfd93cb6.webp) > Infografik av [Jen Looper](https://twitter.com/jenlooper) -## Justera parametrar +## Parameterjustering -När din initiala träning är klar, observera modellens kvalitet och överväg att förbättra den genom att justera dess "hyperparametrar". Läs mer om processen [i dokumentationen](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +När din initiala träning är klar, observera modellens kvalitet och överväg att förbättra den genom att justera dess 'hyperparametrar'. Läs mer om processen [i dokumentationen](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Prediktion +## Förutsägelse -Detta är ögonblicket då du kan använda helt ny data för att testa modellens noggrannhet. I en "tillämpad" ML-miljö, där du bygger webbapplikationer för att använda modellen i produktion, kan denna process innebära att samla in användarinmatning (till exempel ett knapptryck) för att ställa in en variabel och skicka den till modellen för inferens eller utvärdering. +Detta är ögonblicket när du kan använda helt nya data för att testa din modells noggrannhet. I en "tillämpad" ML-miljö, där du bygger webbresurser för att använda modellen i produktion, kan denna process innebära att samla in användarinput (till exempel ett knapptryck) för att sätta en variabel och skicka den till modellen för inferens, eller utvärdering. -I dessa lektioner kommer du att upptäcka hur du använder dessa steg för att förbereda, bygga, testa, utvärdera och prediktera - alla gester av en dataforskare och mer, när du utvecklas i din resa att bli en "fullstack"-ML-ingenjör. +I dessa lektioner kommer du att upptäcka hur du använder dessa steg för att förbereda, bygga, testa, utvärdera och förutsäga – alla steg i en data scientists arbete och mer, när du fortsätter din resa för att bli en "fullstack" ML-ingenjör. --- ## 🚀Utmaning -Rita ett flödesschema som reflekterar stegen för en ML-praktiker. Var befinner du dig just nu i processen? Var tror du att du kommer att stöta på svårigheter? Vad verkar enkelt för dig? +Rita ett flödesschema som speglar stegen en ML-utövare går igenom. Var ser du dig själv just nu i processen? Var tror du att du kommer att stöta på svårigheter? Vad verkar enkelt för dig? -## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz efter föreläsning](https://ff-quizzes.netlify.app/en/ml/) -## Granskning & Självstudier +## Repetition & Självstudier -Sök online efter intervjuer med dataforskare som diskuterar sitt dagliga arbete. Här är [en](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Sök på nätet efter intervjuer med data scientists som diskuterar sitt dagliga arbete. Här är [en](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Uppgift -[Intervjua en dataforskare](assignment.md) +[Intervjua en data scientist](assignment.md) --- + **Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file +Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig observera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. + \ No newline at end of file diff --git a/translations/sv/2-Regression/3-Linear/README.md b/translations/sv/2-Regression/3-Linear/README.md index 8f9384b347..6e0b883171 100644 --- a/translations/sv/2-Regression/3-Linear/README.md +++ b/translations/sv/2-Regression/3-Linear/README.md @@ -2,135 +2,135 @@ ## Nybörjarnotering -Linjär regression används när vi vill förutsäga ett **numeriskt värde** (till exempel huspris, temperatur eller försäljning). -Det fungerar genom att hitta en rät linje som bäst representerar sambandet mellan inmatningsfunktionerna och utdata. +Linjära regression används när vi vill förutsäga ett **numeriskt värde** (till exempel huspris, temperatur eller försäljning). +Den fungerar genom att hitta en rät linje som bäst representerar sambandet mellan ingångsegenskaper och utdata. -I denna lektion fokuserar vi på att förstå konceptet innan vi utforskar mer avancerade regressionstekniker. -![Linear vs polynomial regression infographic](../../../../translated_images/sv/linear-polynomial.5523c7cb6576ccab.webp) -> Informationsgrafik av [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [För-lectures quiz](https://ff-quizzes.netlify.app/en/ml/) +I den här lektionen fokuserar vi på att förstå konceptet innan vi utforskar mer avancerade regressionstekniker. +![Linear vs polynomial regression infographic](../../../../translated_images/sv/linear-polynomial.5523c7cb6576ccab.webp) +> Infografik av [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Förföreläsningsquiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Denna lektion finns tillgänglig på R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### Introduktion +> ### [Den här lektionen finns tillgänglig i R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### Introduktion -Hittills har du utforskat vad regression är med exempeldata hämtad från pumpapriser datasetet som vi kommer att använda genom hela denna lektion. Du har också visualiserat det med hjälp av Matplotlib. +Hittills har du utforskat vad regression är med exempeldata från pumpapriser som vi kommer att använda under hela lektionen. Du har också visualiserat det med Matplotlib. -Nu är du redo att gå djupare in i regression för maskininlärning. Medan visualisering låter dig göra data begripligt, kommer den verkliga styrkan i maskininlärning från _träning av modeller_. Modeller tränas på historisk data för att automatiskt fånga databeroenden, och de låter dig förutsäga resultat för ny data som modellen inte har sett tidigare. +Nu är du redo att dyka djupare in i regression för maskininlärning. Medan visualisering låter dig förstå data, kommer den verkliga kraften i maskininlärning från _träning av modeller_. Modeller tränas på historisk data för att automatiskt fånga databas beroenden, och de låter dig förutsäga utfall för ny data som modellen inte sett tidigare. -I denna lektion kommer du att lära dig mer om två typer av regression: _grundläggande linjär regression_ och _polynomregression_, tillsammans med något av matematiken bakom dessa tekniker. Dessa modeller kommer att göra det möjligt för oss att förutsäga pumpapris beroende på olika indata. +I den här lektionen kommer du att lära dig mer om två typer av regression: _grundläggande linjär regression_ och _polynomregression_, tillsammans med en del matte som ligger bakom dessa tekniker. Dessa modeller gör det möjligt för oss att förutsäga pumpapriser beroende på olika indata. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Klicka på bilden ovan för en kort videoöversikt över linjär regression. +> 🎥 Klicka på bilden ovan för en kort videogenomgång av linjär regression. -> Genom hela detta läroplan antar vi minimala matematiska förkunskaper, och strävar efter att göra det tillgängligt för studenter från andra fält, så håll utkik efter anteckningar, 🧮 utropstecken, diagram och andra lärverktyg som hjälper till vid förståelsen. +> Genom hela detta kursmaterial antar vi minimal mattebakgrund, och vill göra det tillgängligt för studenter från andra områden, så följ med på notiser, 🧮 utskick, diagram och andra lärverktyg för att underlätta förståelsen. ### Förkunskaper -Du bör nu vara bekant med strukturen på pumpadatan som vi undersöker. Du hittar den förladdad och förrensad i detta lektions _notebook.ipynb_-fil. I filen visas pumpapriset per skålpund i en ny dataframe. Se till att du kan köra dessa notebooks i kernels i Visual Studio Code. +Du bör nu vara bekant med strukturen för pumpadata som vi undersöker. Du kan hitta den förladdad och förberedd i lektionens _notebook.ipynb_-fil. I filen visas pumpapriset per skäppa i en ny dataram. Se till att du kan köra dessa notebooks i kärnor i Visual Studio Code. ### Förberedelse -Som en påminnelse, laddar du in denna data för att kunna ställa frågor om den. +Som en påminnelse laddar du denna data för att kunna ställa frågor om den. -- När är den bästa tiden att köpa pumpor? -- Vilket pris kan jag förvänta mig för en låda miniature-pumpor? -- Ska jag köpa dem i halva skålpundskorgar eller per 1 1/9 skålpundslåda? +- När är det bästa tillfället att köpa pumpor? +- Vilket pris kan jag förvänta mig för en låda med miniatyrpumpor? +- Bör jag köpa dem i halva skäppor eller i 1 1/9 skäppors lådor? Låt oss fortsätta gräva i denna data. -I föregående lektion skapade du en Pandas dataframe och fyllde den med en del av originaldatasetet, och standardiserade prisningen efter skålpund. Genom att göra det kunde du dock bara samla ungefär 400 datapunkter och bara för höstmånaderna. +I föregående lektion skapade du en Pandas-dataram och fyllde den med en del av den ursprungliga datasetet, där priserna standardiserades per skäppa. Genom att göra detta fick du dock bara cirka 400 datapunkter och endast för höstmånaderna. -Titta på datan som vi förladdat i denna lektions tillhörande notebook. Datan är förladdad och en initial scatterplot plottad för att visa månadens data. Kanske kan vi få lite mer detaljer om datans natur genom att rengöra den mer. +Ta en titt på data som vi förladdat i denna lektions medföljande notebook. Datat är förladdat och en initial scatterplot är ritad för att visa månadsdata. Kanske kan vi få lite mer detaljer om datats natur genom att städa det mer. ## En linjär regressionslinje -Som du lärde dig i Lektion 1 är målet med en linjär regression att kunna rita en linje som: +Som du lärde dig i Lektion 1, är målet med en linjär regressionsövning att kunna rita en linje för att: -- **Visar variabelrelationer**. Visar sambandet mellan variablerna -- **Gör förutsägelser**. Gör korrekta förutsägelser om var en ny datapunkt skulle falla i förhållande till den linjen. - -Det är vanligt med **minsta kvadratmetoden (Least-Squares Regression)** att rita denna typ av linje. Begreppet "Least-Squares" hänvisar till processen att minimera den totala felet i vår modell. För varje datapunkt mäter vi det vertikala avståndet (kallat residual) mellan den verkliga punkten och vår regressionslinje. +- **Visa variabelrelationer**. Visa sambandet mellan variabler +- **Göra förutsägelser**. Göra noggranna förutsägelser om var en ny datapunkt skulle hamna i förhållande till den linjen. -Vi kvadrerar dessa avstånd av två huvudsakliga anledningar: +Det är typiskt för **minsta kvadratmetoden (Least-Squares Regression)** att dra denna typ av linje. Begreppet "Least-Squares" avser processen att minimera den totala felet i vår modell. För varje datapunkt mäter vi det vertikala avståndet (kallat residual) mellan den faktiska punkten och vår regressionslinje. -1. **Storlek över riktning:** Vi vill behandla ett fel på -5 lika som ett fel på +5. Kvadreringen gör alla värden positiva. +Vi kvadrerar dessa avstånd av två huvudsakliga skäl: -2. **Straffa avvikare:** Kvadrering ger högre vikt åt större fel, vilket tvingar linjen att hålla sig närmare punkter som ligger långt bort. +1. **Storlek över riktning:** Vi vill behandla ett fel på -5 lika som ett fel på +5. Kvadrering gör alla värden positiva. -Vi adderar sedan alla dessa kvadrerade värden tillsammans. Vårt mål är att hitta den specifika linjen där denna summa är som minst (det minsta möjliga värdet)—därav namnet "Least-Squares". +2. **Straffa avvikare:** Kvadrering ger större vikt åt större fel, vilket tvingar linjen att ligga närmare punkter som är långt bort. -> **🧮 Visa mig matematiken** -> -> Denna linje, kallad _bästa passande linje_ kan uttryckas med [en ekvation](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +Sedan lägger vi ihop alla dessa kvadrerade värden. Vårt mål är att hitta den specifika linje där denna slutgiltiga summa är som lägst (det minsta möjliga värdet)—därav namnet "minsta kvadrater". + +> **🧮 Visa mig matten** +> +> Denna linje, kallad _bästa passande linje_, kan uttryckas med [en ekvation](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` är den 'förklarande variabeln'. `Y` är den 'beroende variabeln'. Lutningen av linjen är `b` och `a` är y-axelns skärningspunkt, som avser värdet på `Y` när `X = 0`. -> ->![räkna ut lutningen](../../../../translated_images/sv/slope.f3c9d5910ddbfcf9.webp) -> -> Först, räkna ut lutningen `b`. Informationsgrafik av [Jen Looper](https://twitter.com/jenlooper) -> -> Med andra ord, och med hänvisning till vår pumpadata ursprungliga fråga: "förutsäg priset på en pumpa per skålpund per månad", skulle `X` hänvisa till priset och `Y` till försäljningsmånaden. -> ->![komplettera ekvationen](../../../../translated_images/sv/calculation.a209813050a1ddb1.webp) -> -> Beräkna värdet på Y. Om du betalar runt 4 dollar måste det vara april! Informationsgrafik av [Jen Looper](https://twitter.com/jenlooper) -> -> Matematiken som räknar fram linjen måste visa lutningen på linjen, som också beror på interceptet, eller var `Y` är placerad när `X = 0`. -> -> Du kan observera metoden för beräkning av dessa värden på webbplatsen [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Besök även [denna Least-squares-kalkylator](https://www.mathsisfun.com/data/least-squares-calculator.html) för att se hur siffrornas värden påverkar linjen. +> +> `X` är den 'förklarande variabeln'. `Y` är den 'beroende variabeln'. Lutningen av linjen är `b` och `a` är y-axelns skärningspunkt, vilket avser värdet på `Y` när `X = 0`. +> +>![calculate the slope](../../../../translated_images/sv/slope.f3c9d5910ddbfcf9.webp) +> +> Börja med att beräkna lutningen `b`. Infografik av [Jen Looper](https://twitter.com/jenlooper) +> +> Med andra ord, och hämtat från vår pumpadatas ursprungliga fråga: "förutse priset på en pumpa per skäppa efter månad", skulle `X` avse priset och `Y` månad för försäljning. +> +>![complete the equation](../../../../translated_images/sv/calculation.a209813050a1ddb1.webp) +> +> Beräkna värdet av Y. Om du betalar runt 4 dollar måste det vara april! Infografik av [Jen Looper](https://twitter.com/jenlooper) +> +> Den matematik som beräknar linjen måste visa lutningen på linjen, som också är beroende av skärningspunkten, eller var `Y` ligger när `X = 0`. +> +> Du kan studera metoden för beräkning av dessa värden på webbplatsen [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Besök även [denna minsta kvadratberäknare](https://www.mathsisfun.com/data/least-squares-calculator.html) för att se hur talen påverkar linjen. ## Korrelation -En term till som är viktig att förstå är **korrelationskoefficienten** mellan givna X- och Y-variabler. Med hjälp av en scatterplot kan du snabbt visualisera denna koefficient. En plot med datapunkter utspridda i en tydlig linje har hög korrelation, men en plot med datapunkter utspridda överallt mellan X och Y har låg korrelation. +En term till att förstå är **korrelationskoefficienten** mellan givna X och Y variabler. Med en spridningsdiagram kan du snabbt visualisera denna koefficient. Ett diagram med datapunkter utspridda längs en prydlig linje har hög korrelation, medan ett diagram med datapunkter utspridda överallt mellan X och Y har låg korrelation. -En bra linjär regressionsmodell är en som har hög (närmare 1 än 0) korrelationskoefficient med metoden minsta kvadrater och en regressionslinje. +En bra linjär regressionsmodell är en modell med hög (nära 1 snarare än 0) korrelationskoefficient med hjälp av metoden minsta kvadrater och en regressionslinje. -✅ Kör notebook som hör till denna lektion och titta på spridningsdiagrammet Månad till Pris. Verkar datan som kopplar Månad till Pris för pumpaförsäljning ha hög eller låg korrelation, enligt din visuella tolkning av scatterploten? Förändras det om du använder ett finare mått istället för `Month`, t.ex. *dag på året* (dvs. antal dagar sedan årets början)? +✅ Kör notebooken som hör till denna lektion och titta på spridningsdiagrammet Month till Price. Verkar datat som kopplar Månad till Pris för pumpaförsäljningen ha hög eller låg korrelation, enligt din visuella tolkning av spridningsdiagrammet? Ändras det om du använder en mer detaljerad mätning istället för `Month`, t.ex. *dag på året* (det vill säga antal dagar sedan årets början)? -I koden nedan antar vi att vi har rengjort datan och fått en dataframe kallad `new_pumpkins`, liknande följande: +I koden nedan antar vi att vi har rensat datat och fått en dataram som heter `new_pumpkins`, ungefär som följande: -ID | Månad | DagPåÅret | Sort | Stad | Förpackning | Lågt Pris | Högt Pris | Pris ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Koden för att rengöra datan finns tillgänglig i [`notebook.ipynb`](notebook.ipynb). Vi har utfört samma rengöringssteg som i föregående lektion, och har beräknat kolumnen `DayOfYear` med följande uttryck: +> Koden för att rengöra datat finns tillgänglig i [`notebook.ipynb`](notebook.ipynb). Vi har utfört samma rengöringssteg som i föregående lektion och har beräknat `DayOfYear`-kolumnen med följande uttryck: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +Nu när du har förstått matten bakom linjär regression, låt oss skapa en regressionsmodell för att se om vi kan förutsäga vilken pumpapåses förpackning som har de bästa pumpapriserna. Någon som köper pumpor till ett pumpafält inför en högtid kan vilja ha denna information för att optimera sina köp av pumpapaket till fältet. -Nu när du har förstått matematiken bakom linjär regression, låt oss skapa en regressionsmodell för att se om vi kan förutsäga vilken pumpaförpackning som kommer ha de bästa pumpaprisen. Någon som köper pumpor för en höstpumpaplantering kanske vill ha denna information för att kunna optimera köp av pumpapaket till planteringen. - -## Letar efter korrelation +## Leta efter korrelation [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Klicka på bilden ovan för en kort videoöversikt över korrelation. +> 🎥 Klicka på bilden ovan för en kort videogenomgång av korrelation. Från föregående lektion har du förmodligen sett att medelpriset för olika månader ser ut så här: Average price by month -Det antyder att det borde finnas någon korrelation, och vi kan försöka träna en linjär regressionsmodell för att förutsäga sambandet mellan `Month` och `Price`, eller mellan `DayOfYear` och `Price`. Här är ett scatterplot som visar det senare sambandet: +Detta antyder att det borde finnas någon korrelation, och vi kan försöka träna en linjär regressionsmodell för att förutsäga sambandet mellan `Month` och `Price`, eller mellan `DayOfYear` och `Price`. Här är scatterplottet som visar det senare sambandet: Scatter plot of Price vs. Day of Year -Låt oss se om det finns korrelation med funktionen `corr`: +Låt oss se om det finns en korrelation med `corr`-funktionen: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Det ser ut som att korrelationen är ganska liten, -0.15 för `Month` och -0.17 för `DayOfMonth`, men det kan finnas ett annat viktigt samband. Det ser ut som om det finns olika kluster av priser som korrelerar med olika pumpasorter. För att bekräfta denna hypotes, låt oss plotta varje pumpakategori med en annan färg. Genom att skicka en `ax` parameter till `scatter`-plotfunktion kan vi plotta alla punkter på samma graf: + +Det verkar som att korrelationen är ganska liten, -0,15 för `Month` och -0,17 för `DayOfYear`, men det kan finnas ett annat viktigt samband. Det verkar som det finns olika kluster av priser som motsvarar olika pumpasorter. För att bekräfta denna hypotes, låt oss rita varje pumpkategori med en annan färg. Genom att skicka med en `ax`-parameter till `scatter`-plotfunktionen kan vi rita alla punkter i samma diagram: ```python ax=None @@ -139,18 +139,18 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - + Scatter plot of Price vs. Day of Year -Vår undersökning antyder att sorten har större effekt på det totala priset än själva försäljningsdatumet. Vi kan se detta med ett stapeldiagram: +Vår undersökning antyder att sort har större påverkan på det totala priset än det faktiska försäljningsdatumet. Det kan vi se med ett stapeldiagram: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - + Bar graph of price vs variety -Låt oss nu fokusera endast på en pumpasort, 'pie type', och se vilken effekt datumet har på priset: +Låt oss för tillfället fokusera på en pumpasort, "pie type", och se vilken effekt datumet har på priset: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,56 +158,56 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -Om vi nu beräknar korrelationen mellan `Price` och `DayOfYear` med `corr`-funktionen, får vi ungefär `-0.27` – vilket betyder att det är meningsfullt att träna en prediktiv modell. +Om vi nu beräknar korrelationen mellan `Price` och `DayOfYear` med `corr`-funktionen får vi något som `-0.27` – vilket innebär att det är meningsfullt att träna en prediktiv modell. -> Innan du tränar en linjär regressionsmodell är det viktigt att säkerställa att vår data är ren. Linjär regression fungerar inte bra med saknade värden, så det är vettigt att ta bort alla tomma celler: +> Innan vi tränar en linjär regressionsmodell är det viktigt att se till att vårt data är rent. Linjär regression fungerar inte bra med saknade värden, så det är vettigt att ta bort alla tomma celler: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Ett annat tillvägagångssätt kan vara att fylla dessa tomma värden med medelvärden från motsvarande kolumn. + +Ett annat alternativ är att fylla dessa tomma värden med medelvärden från den motsvarande kolumnen. ## Enkel linjär regression [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Klicka på bilden ovan för en kort videoöversikt över linjär och polynomregression. +> 🎥 Klicka på bilden ovan för en kort videogenomgång av linjär och polynomregression. -För att träna vår linjära regressionsmodell kommer vi att använda **Scikit-learn**-biblioteket. +För att träna vår linjära regressionsmodell använder vi biblioteket **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Vi börjar med att separera indata (funktioner) och det förväntade resultatet (etikett) i separata numpy-arrayer: + +Vi börjar med att separera ingångsvärden (egenskaper) och den förväntade utdata (etikett) i separata numpy-arrayer: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Observera att vi var tvungna att göra en `reshape` på indata för att linjär regressionspaketet ska förstå den korrekt. Linjär regression förväntar sig ett 2D-array som indata, där varje rad motsvarar en vektor av ingångsegenskaper. I vårt fall, eftersom vi bara har en ingång, behöver vi en array med formen N×1, där N är datasetets storlek. -> Observera att vi var tvungna att använda `reshape` på indata för att linjär regressionspaketet ska förstå det korrekt. Linjär regression förväntar sig en 2D-array som indata, där varje rad i arrayen motsvarar en vektor av indatafunktioner. I vårt fall, eftersom vi bara har en indata, behöver vi en array med formen N×1, där N är datasetets storlek. - -Därefter behöver vi dela data i tränings- och testdataset, så att vi kan validera vår modell efter träning: +Sedan måste vi dela upp datat i tränings- och testdataset för att kunna validera vår modell efter träning: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Slutligen tar själva träningen av den linjära regressionsmodellen bara två kodrader. Vi definierar `LinearRegression`-objektet och anpassar det till vår data med metoden `fit`: + +Slutligen tar själva träningsdelen av linjär regressionsmodell bara två kodrader. Vi definierar ett `LinearRegression`-objekt och anpassar det till vår data med `fit`-metoden: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression`-objektet efter att ha `fit`ats innehåller alla regressionskoefficienter, som kan nås med `.coef_`-egenskapen. I vårt fall finns det bara en koefficient, som bör vara runt `-0.017`. Det betyder att priserna verkar sjunka lite med tiden, men inte för mycket, cirka 2 cent per dag. Vi kan också nå regressionsens skärningspunkt med Y-axeln med `lin_reg.intercept_` - den kommer att vara runt `21` i vårt fall, vilket indikerar priset i början av året. +Objektet `LinearRegression` efter att ha blivit `fit`-tat innehåller alla koefficienter för regressionen, vilka kan nås med egenskapen `.coef_`. I vårt fall finns det bara en koefficient, som borde vara runt `-0.017`. Det betyder att priser verkar sjunka lite med tiden, men inte för mycket, ungefär 2 cent per dag. Vi kan också nå skärningspunkten för regressionen med Y-axeln med `lin_reg.intercept_` - den kommer att vara runt `21` i vårt fall, vilket indikerar priset i början av året. -För att se hur exakt vår modell är kan vi förutsäga priser på en testdatamängd och sedan mäta hur nära våra förutsägelser är de förväntade värdena. Detta kan göras med metrik som rotmedelkvadratfel (RMSE), som är roten ur medelvärdet av alla kvadrerade skillnader mellan förväntat och förutspått värde. +För att se hur noggrann vår modell är kan vi förutsäga priser på en testdatasats och sedan mäta hur nära våra förutsägelser är de förväntade värdena. Detta kan göras med root mean square error (RMSE) metriken, vilket är roten ur medelvärdet av alla kvadrerade skillnader mellan förväntat och förutspått värde. ```python pred = lin_reg.predict(X_test) @@ -216,13 +216,13 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Vårt fel verkar vara runt 2 poäng, vilket är ~17%. Inte så bra. En annan indikator på modellens kvalitet är **bestämningskoefficienten**, som kan erhållas så här: +Vårt fel verkar ligga runt 2 poäng, vilket är ~17%. Inte så bra. En annan indikator på modellkvalitet är **bestämningskoefficienten**, som kan fås så här: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Om värdet är 0 betyder det att modellen inte tar hänsyn till indata och agerar som den *sämsta linjära förutsägaren*, vilket helt enkelt är ett medelvärde av resultatet. Värdet 1 innebär att vi perfekt kan förutsäga alla förväntade utdata. I vårt fall är koefficienten runt 0,06, vilket är ganska lågt. + Om värdet är 0 betyder det att modellen inte tar hänsyn till indata och agerar som den *sämsta linjära prediktorn*, vilket helt enkelt är medelvärdet av resultatet. Värdet 1 betyder att vi kan perfekt förutsäga alla förväntade utgångar. I vårt fall är koefficienten runt 0.06, vilket är ganska lågt. Vi kan också plotta testdata tillsammans med regressionslinjen för att bättre se hur regression fungerar i vårt fall: @@ -233,19 +233,19 @@ plt.plot(X_test,pred) Linear regression -## Polynomregression +## Polynomial Regression -En annan typ av linjär regression är polynomregression. Ibland finns det ett linjärt samband mellan variabler – ju större pumpa i volym, desto högre pris – men ibland kan dessa samband inte avbildas som ett plan eller en rät linje. +En annan typ av linjär regression är polynomregression. Även om det ibland finns ett linjärt samband mellan variabler - ju större pumpa i volym, desto högre pris - kan dessa samband ibland inte plottas som ett plan eller en rät linje. -✅ Här är [några fler exempel](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan dra nytta av polynomregression +✅ Här är [några fler exempel](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan använda polynomregression -Titta igen på sambandet mellan datum och pris. Verkar denna scatterplot nödvändigtvis behöva analyseras med en rak linje? Kan inte priserna variera? I sådana fall kan du testa polynomregression. +Ta en närmare titt på sambandet mellan Datum och Pris. Verkar denna spridningsdiagram nödvändigtvis måste analyseras med en rak linje? Kan inte priserna fluktuera? I detta fall kan du prova polynomregression. ✅ Polynom är matematiska uttryck som kan bestå av en eller flera variabler och koefficienter -Polynomregression skapar en kurvad linje för att bättre passa icke-linjära data. I vårt fall, om vi inkluderar en kvadrerad `DayOfYear`-variabel i indata, borde vi kunna anpassa vår data med en parabolisk kurva som har ett minimum vid en viss punkt under året. +Polynomregression skapar en böjd linje för att bättre anpassa icke-linjära data. I vårt fall, om vi inkluderar en kvadrerad `DayOfYear`-variabel i indata, borde vi kunna anpassa våra data med en parabolisk kurva, som kommer ha ett minimum vid en viss punkt under året. -Scikit-learn innehåller ett användbart [pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) för att kombinera olika steg för databehandling. En **pipeline** är en kedja av **estimators**. I vårt fall skapar vi en pipeline som först lägger till polynomegenskaper till vår modell och sedan tränar regressionen: +Scikit-learn inkluderar en hjälpsam [pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) för att kombinera olika steg i databehandlingen. En **pipeline** är en kedja av **estimators**. I vårt fall skapar vi en pipeline som först lägger till polynomegenskaper i vår modell och sedan tränar regressionen: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Att använda `PolynomialFeatures(2)` innebär att vi tar med alla andragradspolynom från indata. I vårt fall kommer det bara innebära `DayOfYear`2, men med två indata X och Y skulle detta lägga till X2, XY och Y2. Man kan även använda polynom med högre grad om man vill. +Att använda `PolynomialFeatures(2)` betyder att vi kommer att inkludera alla andra gradens polynom från indatan. I vårt fall betyder det bara `DayOfYear`2, men givet två indatavariabler X och Y, lägger detta till X2, XY och Y2. Vi kan också använda polynom av högre grad om vi vill. + +Pipelines kan användas på samma sätt som det ursprungliga `LinearRegression`-objektet, dvs vi kan `fit` pipelinen och sedan använda `predict` för att få prediktionsresultaten: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +För att plotta den jämna approximationskurvan använder vi `np.linspace` för att skapa ett jämnt intervall av indata, i stället för att plotta direkt på den oordnade testdatan (vilket skulle ge en zick-zack-linje): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelines kan användas på samma sätt som det ursprungliga `LinearRegression`-objektet, dvs. vi kan `fit`a pipelinen och sedan använda `predict` för att få förutsägelserna. Här är grafen som visar testdata och approximationskurvan: +Här är grafen som visar testdata och approximationskurvan: Polynomial regression -Med polynomregression kan vi få något lägre MSE och högre bestämning, men inte signifikant. Vi behöver ta hänsyn till fler funktioner! +Med polynomregression kan vi få något lägre RMSE och högre bestämning, men inte signifikant. Vi behöver ta hänsyn till fler egenskaper! > Du kan se att de lägsta pumpapriserna observeras någonstans runt Halloween. Hur kan du förklara detta? -🎃 Grattis, du skapade just en modell som kan hjälpa till att förutsäga priset på pajpumpor. Du kan förmodligen upprepa samma procedur för alla pumpatyper, men det skulle vara tråkigt. Låt oss nu lära oss hur vi tar pumpasort i beaktande i vår modell! +🎃 Grattis, du har just skapat en modell som kan hjälpa till att förutsäga priset på pajpumpor. Du kan förmodligen göra samma procedur för alla typer av pumpor, men det skulle vara tråkigt. Låt oss nu lära oss hur vi kan ta pumpa-sort i beaktande i vår modell! -## Kategoriska Funktioner +## Kategoriska egenskaper I en ideal värld vill vi kunna förutsäga priser för olika pumpasorter med samma modell. Men kolumnen `Variety` skiljer sig något från kolumner som `Month`, eftersom den innehåller icke-numeriska värden. Sådana kolumner kallas **kategoriska**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Klicka på bilden ovan för en kort videoöversikt om användning av kategoriska funktioner. +> 🎥 Klicka på bilden ovan för en kort videoöversikt om att använda kategoriska egenskaper. -Här kan du se hur medelpriset beror på sort: +Här kan du se hur genomsnittspriset beror på sorten: Average price by variety -För att ta hänsyn till sort behöver vi först konvertera den till numerisk form, eller **koda** den. Det finns flera sätt att göra det: +För att ta hänsyn till sorten behöver vi först konvertera den till numerisk form, eller **koda** den. Det finns flera sätt att göra detta: -* Enkel **numerisk kodning** bygger en tabell med olika sorter och ersätter sedan sortnamnet med ett index i tabellen. Detta är inte bästa metoden för linjär regression, för linjär regression tar det faktiska numeriska värdet på indexet och lägger till det i resultatet, multiplicerat med en koefficient. I vårt fall är sambandet mellan indexnummer och pris tydligt icke-linjärt, även om vi ser till att indexen är ordnade på ett specifikt sätt. -* **One-hot-kodning** ersätter `Variety`-kolumnen med 4 olika kolumner, en för varje sort. Varje kolumn innehåller `1` om motsvarande rad är av den givna sorten och `0` annars. Det innebär att det kommer finnas fyra koefficienter i linjär regression, en för varje pumpasort, ansvariga för "startpris" (eller snarare "tilläggspris") för just den sorten. +* Enkel **numerisk kodning** skapar en tabell över olika sorter och ersätter sedan sortnamnet med ett index i den tabellen. Detta är inte bästa metoden för linjär regression eftersom linjär regression tar det faktiska numeriska värdet på indexet och lägger till det i resultatet multiplicerat med någon koefficient. I vårt fall är sambandet mellan indexnummer och pris tydligt icke-linjärt, även om vi ser till att indexen är ordnade på något specifikt sätt. +* **One-hot encoding** ersätter `Variety` kolumnen med 4 olika kolumner, en för varje sort. Varje kolumn innehåller `1` om motsvarande rad är av en viss sort, och `0` annars. Detta innebär att det finns fyra koefficienter i linjär regression, en för varje pumpasort, som ansvarar för "startpris" (eller snarare "tilläggspris") för just den sorten. -Koden nedan visar hur vi kan one-hot-koda en sort: +Koden nedan visar hur vi kan one-hot koda sorten: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -För att träna linjär regression med one-hot-kodad sort som indata behöver vi bara initiera `X` och `y` korrekt: +För att träna linjär regression med one-hot kodad sort som indata behöver vi bara initiera `X` och `y` korrekt: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Resten av koden är densamma som vi använde tidigare för att träna linjär regression. Om du provar kommer du se att medelkvadratfelet är ungefär detsamma, men bestämningskoefficienten är mycket högre (~77%). För att få ännu mer exakta förutsägelser kan vi ta fler kategoriska funktioner i beaktande, samt numeriska funktioner som `Month` eller `DayOfYear`. För att få en stor matris med funktioner kan vi använda `join`: +Resten av koden är densamma som vi använde ovan för att träna linjär regression. Om du provar detta kommer du se att medelkvadratfelet är ungefär detsamma, men vi får en mycket högre bestämningskoefficient (~77%). För att få ännu mer noggranna förutsägelser kan vi ta hänsyn till fler kategoriska egenskaper samt numeriska egenskaper, som `Month` eller `DayOfYear`. För att få en stor matris av egenskaper kan vi använda `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,21 +341,21 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Här tar vi också med `City` och typ av `Package`, vilket ger oss MSE 2.84 (10%) och bestämning 0.94! +Här tar vi dessutom hänsyn till `City` och `Package`-typ, vilket ger oss RMSE 2.84 (10.5%) och bestämning 0.94! -## Sammanfoga allt +## Att sätta ihop allt -För att göra bästa modell kan vi använda kombinerad (one-hot-kodad kategorisk + numerisk) data från ovanstående exempel tillsammans med polynomregression. Här är den kompletta koden för din bekvämlighet: +För att göra den bästa modellen kan vi använda kombinerad (one-hot kodad kategorisk + numerisk) data från exemplet ovan tillsammans med polynomregression. Här är den kompletta koden för din bekvämlighet: ```python -# ställ in träningsdata +# förbered träningsdata X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# gör tåg-test delning +# gör träningstestuppdelning X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # konfigurera och träna pipelinen @@ -343,44 +365,44 @@ pipeline.fit(X_train,y_train) # förutsäg resultat för testdata pred = pipeline.predict(X_test) -# beräkna MSE och bestämning -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# beräkna RMSE och förklaringsgrad +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Detta bör ge oss bästa bestämningskoefficient på nästan 97%, och MSE=2.23 (~8% förutsägelsefel). +Detta borde ge oss den bästa bestämningskoefficienten på nästan 97% och RMSE=2.23 (~8% fel i förutsägelsen). -| Modell | MSE | Bestämning | -|-------|-----|-------------| +| Modell | RMSE | Bestämning | +|-------|-----|---------------| | `DayOfYear` Linjär | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynom | 2.73 (17.0%) | 0.08 | | `Variety` Linjär | 5.24 (19.7%) | 0.77 | -| Alla funktioner Linjär | 2.84 (10.5%) | 0.94 | -| Alla funktioner Polynom | 2.23 (8.25%) | 0.97 | +| Alla egenskaper Linjär | 2.84 (10.5%) | 0.94 | +| Alla egenskaper Polynom | 2.23 (8.25%) | 0.97 | -🏆 Bra jobbat! Du skapade fyra regressionsmodeller i en lektion och förbättrade modellens kvalitet till 97%. I den sista delen om regression kommer du lära dig om logistisk regression för att bestämma kategorier. +🏆 Bra jobbat! Du skapade fyra regressionsmodeller i en lektion och förbättrade modellkvaliteten till 97%. I den sista delen om regression kommer du att lära dig om logistisk regression för att bestämma kategorier. --- ## 🚀Utmaning -Testa flera olika variabler i denna notebook för att se hur korrelation korrelerar med modellens noggrannhet. +Testa flera olika variabler i denna anteckningsbok för att se hur korrelationen motsvarar modellegenskaper. -## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/) -## Granskning & Självstudier +## Översikt & Självstudier -I denna lektion lärde vi oss om linjär regression. Det finns andra viktiga typer av regression. Läs om Stepwise, Ridge, Lasso och Elasticnet-tekniker. En bra kurs att studera för att lära sig mer är [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +I denna lektion lärde vi oss om linjär regression. Det finns andra viktiga typer av regression. Läs om Stepwise, Ridge, Lasso och Elasticnet tekniker. En bra kurs för vidare studier är [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Uppgift +## Uppgift [Bygg en modell](assignment.md) --- -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig observera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör anses vara den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. +**Ansvarsfriskrivning**: +Detta dokument har översatts med AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig observera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file diff --git a/translations/sv/2-Regression/3-Linear/solution/notebook.ipynb b/translations/sv/2-Regression/3-Linear/solution/notebook.ipynb index 073f488b4c..4e7654228f 100644 --- a/translations/sv/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/sv/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linjär och Polynomisk Regression för Pumpapris - Lektion 3\n", + "## Linjär och polynomregression för pumpaprisättning - Lektion 3\n", "\n", - "Ladda in nödvändiga bibliotek och dataset. Konvertera data till en dataram som innehåller ett urval av data:\n", + "Ladda nödvändiga bibliotek och dataset. Konvertera datan till en dataframe som innehåller ett delmängd av datan:\n", "\n", - "- Ta endast med pumpor som är prissatta per skäppa\n", - "- Konvertera datumet till en månad\n", - "- Beräkna priset som ett genomsnitt av högsta och lägsta priser\n", - "- Konvertera priset för att återspegla prissättningen per skäppmängd\n" + "- Ta endast pumpor prissatta per skäpp\n", + "- Konvertera datum till en månad\n", + "- Beräkna priset som ett genomsnitt av höga och låga priser\n", + "- Konvertera priset för att spegla prissättning per mängden skäpp\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Låt oss se om det finns någon korrelation:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Det verkar som att korrelationen är ganska liten, men det finns någon annan viktigare relation - eftersom prisnivåerna i diagrammet ovan verkar ha flera distinkta kluster. Låt oss skapa ett diagram som visar olika pumpasorter:\n" + "Det ser ut som korrelationen är ganska liten, men det finns någon annan mer viktig relation - eftersom prisnivåerna i diagrammet ovan verkar ha flera distinkta kluster. Låt oss göra ett diagram som visar olika pumpasorter:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "För tillfället, låt oss koncentrera oss endast på en sort - **pajtyp**.\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Linjens lutning kan bestämmas från linjär regressionskoefficienter:\n" + "Lutningen på linjen kan bestämmas från koefficienterna i linjär regression:\n" ] }, { @@ -689,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vi kan använda den tränade modellen för att förutsäga pris:\n" + "Vi kan använda den tränade modellen för att förutsäga priset:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Polynomregression\n", "\n", - "Ibland är förhållandet mellan funktioner och resultatet i grunden icke-linjärt. Till exempel kan pumpapriser vara höga på vintern (månader=1,2), sedan sjunka under sommaren (månader=5-7) och sedan stiga igen. Linjär regression kan inte fånga detta förhållande korrekt.\n", + "Ibland är sambandet mellan egenskaper och resultat inneboende icke-linjärt. Till exempel kan pumpapriser vara höga på vintern (månader=1,2), sedan sjunka över sommaren (månader=5-7), och sedan stiga igen. Linjär regression kan inte hitta detta samband med precision.\n", "\n", - "I sådana fall kan vi överväga att lägga till extra funktioner. Ett enkelt sätt är att använda polynom från indatafunktionerna, vilket resulterar i **polynomregression**. I Scikit Learn kan vi automatiskt förberäkna polynomfunktioner med hjälp av pipelines:\n" + "I detta fall kan vi överväga att lägga till extra egenskaper. Ett enkelt sätt är att använda polynom från indataegenskaper, vilket skulle resultera i **polynomregression**. I Scikit Learn kan vi automatiskt förberäkna polynomegenskaper med pipelines: \n" ] }, { @@ -777,20 +781,23 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kodning av sorter\n", + "### Olika sätt att koda\n", "\n", - "I en idealisk värld vill vi kunna förutsäga priser för olika pumpasorter med samma modell. För att ta hänsyn till sorten måste vi först konvertera den till numerisk form, eller **koda**. Det finns flera sätt att göra detta:\n", + "I den ideala världen vill vi kunna förutsäga priser för olika pumpasorter med samma modell. För att ta hänsyn till sort behöver vi först omvandla den till numerisk form, eller **koda** den. Det finns flera sätt att göra det på:\n", "\n", - "* Enkel numerisk kodning som skapar en tabell över olika sorter och sedan ersätter sortnamnet med ett index i den tabellen. Detta är inte den bästa idén för linjär regression, eftersom linjär regression tar hänsyn till det numeriska värdet av indexet, och det numeriska värdet sannolikt inte korrelerar numeriskt med priset.\n", - "* One-hot-kodning, som ersätter `Variety`-kolumnen med 4 olika kolumner, en för varje sort, som innehåller 1 om den motsvarande raden är av en viss sort, och 0 annars.\n", + "* Enkel numerisk kodning som bygger en tabell över olika sorter, och sedan ersätter sortnamnet med ett index i den tabellen. Detta är inte den bästa idén för linjär regression, eftersom linjär regression tar hänsyn till indexets numeriska värde, och det numeriska värdet sannolikt inte korrelerar numeriskt med priset.\n", + "* One-hot-kodning, som ersätter kolumnen `Variety` med 4 olika kolumner, en för varje sort, som innehåller 1 om motsvarande rad är av given sort, och 0 annars.\n", "\n", "Koden nedan visar hur vi kan one-hot-koda en sort:\n" ] @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Linjär regression på sort\n", + "### Linjär regression på sort \n", "\n", - "Vi kommer nu att använda samma kod som ovan, men istället för `DayOfYear` kommer vi att använda vår one-hot-kodade sort som indata:\n" + "Vi kommer nu att använda samma kod som ovan, men istället för `DayOfYear` kommer vi att använda vår one-hot-kodade sort som input:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polynomregression\n", "\n", - "Polynomregression kan också användas med kategoriska funktioner som är one-hot-kodade. Koden för att träna polynomregression skulle i princip vara densamma som vi har sett ovan.\n" + "Polynomregression kan också användas med kategoriska funktioner som är one-hot-kodade. Koden för att träna polynomregression skulle i huvudsak vara densamma som vi har sett ovan.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Ansvarsfriskrivning**: \nDetta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på sitt originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.\n" + "---\n\n\n**Ansvarsfriskrivning**:\nDetta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var god observera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:11:01+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "sv" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/th/.co-op-translator.json b/translations/th/.co-op-translator.json index 802f277287..ede99afa42 100644 --- a/translations/th/.co-op-translator.json +++ b/translations/th/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "th" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T21:40:20+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:20:28+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "th" }, @@ -90,8 +90,8 @@ "language_code": "th" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T18:17:37+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:20:01+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "th" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "th" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:16:41+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "th" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T21:08:48+00:00", diff --git a/translations/th/1-Introduction/4-techniques-of-ML/README.md b/translations/th/1-Introduction/4-techniques-of-ML/README.md index 31e2e58830..d90c9922df 100644 --- a/translations/th/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/th/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# เทคนิคการเรียนรู้ของเครื่อง +# เทคนิคของการเรียนรู้ของเครื่อง -กระบวนการสร้าง ใช้งาน และดูแลรักษาโมเดลการเรียนรู้ของเครื่องและข้อมูลที่ใช้ เป็นกระบวนการที่แตกต่างจากเวิร์กโฟลว์การพัฒนาหลายประเภท ในบทเรียนนี้ เราจะทำให้กระบวนการนี้เข้าใจง่ายขึ้น และสรุปเทคนิคหลักที่คุณจำเป็นต้องรู้ คุณจะได้: +กระบวนการสร้าง ใช้งาน และดูแลรักษาโมเดลการเรียนรู้ของเครื่องและข้อมูลที่ใช้เป็นกระบวนการที่แตกต่างจากเวิร์กโฟลว์การพัฒนารูปแบบอื่นมาก ในบทเรียนนี้ เราจะอธิบายกระบวนการและวางกรอบเทคนิคหลักที่คุณจำเป็นต้องรู้ คุณจะได้: - เข้าใจกระบวนการพื้นฐานของการเรียนรู้ของเครื่องในระดับสูง -- สำรวจแนวคิดพื้นฐาน เช่น 'โมเดล', 'การทำนาย', และ 'ข้อมูลการฝึก' +- สำรวจแนวคิดพื้นฐาน เช่น 'โมเดล' 'การทำนาย' และ 'ข้อมูลการฝึกอบรม' -## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ml/) +## [แบบทดสอบก่อนการบรรยาย](https://ff-quizzes.netlify.app/en/ml/) [![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ เกี่ยวกับบทเรียนนี้ +> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้นที่ชี้แจงบทเรียนนี้ ## บทนำ -ในระดับสูง งานสร้างกระบวนการเรียนรู้ของเครื่อง (ML) ประกอบด้วยหลายขั้นตอน: +ในภาพรวม การสร้างกระบวนการเรียนรู้ของเครื่อง (ML) ประกอบด้วยขั้นตอนหลายขั้นตอน: -1. **กำหนดคำถาม**. กระบวนการ ML ส่วนใหญ่เริ่มต้นด้วยการตั้งคำถามที่ไม่สามารถตอบได้ด้วยโปรแกรมเงื่อนไขง่าย ๆ หรือเครื่องมือที่ใช้กฎ คำถามเหล่านี้มักเกี่ยวข้องกับการทำนายโดยอิงจากชุดข้อมูล -2. **รวบรวมและเตรียมข้อมูล**. เพื่อที่จะตอบคำถามของคุณ คุณต้องมีข้อมูล คุณภาพและบางครั้งปริมาณของข้อมูลจะกำหนดว่าคุณสามารถตอบคำถามเริ่มต้นได้ดีแค่ไหน การแสดงภาพข้อมูลเป็นส่วนสำคัญในขั้นตอนนี้ ขั้นตอนนี้ยังรวมถึงการแบ่งข้อมูลออกเป็นกลุ่มสำหรับการฝึกและการทดสอบเพื่อสร้างโมเดล -3. **เลือกวิธีการฝึก**. ขึ้นอยู่กับคำถามและลักษณะของข้อมูล คุณต้องเลือกวิธีการฝึกโมเดลเพื่อให้สะท้อนข้อมูลได้ดีที่สุดและทำการทำนายที่แม่นยำ -4. **ฝึกโมเดล**. โดยใช้ข้อมูลการฝึก คุณจะใช้อัลกอริทึมต่าง ๆ เพื่อฝึกโมเดลให้รู้จักรูปแบบในข้อมูล โมเดลอาจใช้น้ำหนักภายในที่สามารถปรับเปลี่ยนได้เพื่อให้ความสำคัญกับบางส่วนของข้อมูลมากกว่าส่วนอื่น ๆ เพื่อสร้างโมเดลที่ดีกว่า -5. **ประเมินโมเดล**. คุณใช้ข้อมูลที่ไม่เคยเห็นมาก่อน (ข้อมูลการทดสอบ) จากชุดข้อมูลที่รวบรวมมาเพื่อดูว่าโมเดลทำงานได้ดีแค่ไหน -6. **ปรับแต่งพารามิเตอร์**. จากประสิทธิภาพของโมเดล คุณสามารถทำกระบวนการใหม่โดยใช้พารามิเตอร์หรือตัวแปรที่แตกต่างกันซึ่งควบคุมพฤติกรรมของอัลกอริทึมที่ใช้ฝึกโมเดล -7. **ทำนาย**. ใช้ข้อมูลใหม่เพื่อทดสอบความแม่นยำของโมเดล +1. **กำหนดคำถาม** กระบวนการ ML ส่วนใหญ่เริ่มต้นด้วยการตั้งคำถามที่ไม่สามารถตอบได้ด้วยโปรแกรมเงื่อนไขง่ายๆ หรือเครื่องยนต์ที่ใช้กฎเบื้องต้น คำถามเหล่านี้มักเกี่ยวข้องกับการทำนายโดยอิงจากชุดข้อมูล +2. **รวบรวมและเตรียมข้อมูล** เพื่อที่จะตอบคำถามของคุณ คุณต้องมีข้อมูล คุณภาพและบางครั้งปริมาณของข้อมูลจะเป็นตัวกำหนดว่าคุณจะตอบคำถามแรกของคุณได้ดีแค่ไหน การแสดงข้อมูลเป็นภาพเป็นส่วนสำคัญของขั้นตอนนี้ ขั้นตอนนี้ยังรวมถึงการแบ่งข้อมูลเป็นกลุ่มสำหรับฝึกอบรมและทดสอบเพื่อสร้างโมเดล +3. **เลือกวิธีการฝึกอบรม** ขึ้นอยู่กับคำถามและลักษณะของข้อมูล คุณต้องเลือกวิธีการฝึกโมเดลที่สะท้อนข้อมูลอย่างดีที่สุดและทำการทำนายที่แม่นยำ ส่วนนี้ของกระบวนการ ML ของคุณต้องใช้ความเชี่ยวชาญเฉพาะและมักต้องมีการทดลองจำนวนมาก +4. **ฝึกโมเดล** โดยใช้ข้อมูลฝึกอบรมของคุณ คุณจะใช้หลายอัลกอริทึมเพื่อฝึกโมเดลให้รู้จำรูปแบบในข้อมูล โมเดลอาจใช้ค่าน้ำหนักภายในที่สามารถปรับเปลี่ยนเพื่อเน้นข้อมูลบางส่วนเหนือส่วนอื่นเพื่อสร้างโมเดลที่ดียิ่งขึ้น +5. **ประเมินโมเดล** คุณใช้ข้อมูลที่ไม่เคยเห็นมาก่อน (ข้อมูลทดสอบ) จากชุดข้อมูลที่รวบรวมมาตรวจสอบประสิทธิภาพของโมเดล +6. **ปรับค่าพารามิเตอร์** จากประสิทธิภาพของโมเดล คุณสามารถทำกระบวนการซ้ำโดยใช้พารามิเตอร์ต่างๆ หรือ ตัวแปรที่ควบคุมพฤติกรรมของอัลกอริทึมที่ใช้ฝึกโมเดล +7. **ทำนาย** ใช้ข้อมูลป้อนเข้าที่ใหม่เพื่อทดสอบความแม่นยำของโมเดล ## คำถามที่ควรถาม -คอมพิวเตอร์มีความสามารถพิเศษในการค้นหารูปแบบที่ซ่อนอยู่ในข้อมูล ความสามารถนี้มีประโยชน์มากสำหรับนักวิจัยที่มีคำถามเกี่ยวกับโดเมนที่ไม่สามารถตอบได้ง่าย ๆ ด้วยการสร้างเครื่องมือที่ใช้กฎเงื่อนไข ตัวอย่างเช่น ในงานด้านประกันภัย นักวิทยาศาสตร์ข้อมูลอาจสร้างกฎที่กำหนดเองเกี่ยวกับอัตราการเสียชีวิตของผู้สูบบุหรี่เทียบกับผู้ไม่สูบบุหรี่ +คอมพิวเตอร์มีความเชี่ยวชาญพิเศษในการค้นหารูปแบบที่ซ่อนอยู่ในข้อมูล ประโยชน์นี้ช่วยนักวิจัยที่มีคำถามเกี่ยวกับโดเมนที่ไม่สามารถตอบได้ง่าย ๆ ด้วยการสร้างเครื่องยนต์กฎที่มีเงื่อนไข ตัวอย่างเช่น ในงานเกี่ยวกับการคำนวณความเสี่ยง นักวิทยาศาสตร์ข้อมูลอาจสร้างกฎเฉพาะเกี่ยวกับอัตราการตายของผู้สูบบุหรี่เทียบกับไม่สูบบุหรี่ได้ -เมื่อมีตัวแปรอื่น ๆ เข้ามาในสมการ โมเดล ML อาจมีประสิทธิภาพมากกว่าในการทำนายอัตราการเสียชีวิตในอนาคตโดยอิงจากประวัติสุขภาพที่ผ่านมา ตัวอย่างที่น่าสนใจมากขึ้นอาจเป็นการทำนายสภาพอากาศสำหรับเดือนเมษายนในสถานที่หนึ่งโดยอิงจากข้อมูลที่รวมถึงละติจูด ลองจิจูด การเปลี่ยนแปลงสภาพภูมิอากาศ ความใกล้ชิดกับมหาสมุทร รูปแบบของกระแสลม และอื่น ๆ +แต่เมื่อมีตัวแปรอื่นๆ เข้ามาเกี่ยวข้อง โมเดล ML อาจมีประสิทธิภาพมากกว่าในการทำนายอัตราการตายในอนาคตโดยอิงจากประวัติสุขภาพที่ผ่านมา ตัวอย่างที่มีความสุขกว่าอาจเป็นการทำนายสภาพอากาศของเดือนเมษายนในสถานที่หนึ่งๆ โดยใช้ข้อมูลที่รวมถึงละติจูด ลองจิจูด การเปลี่ยนแปลงสภาพภูมิอากาศ ความใกล้ชิดกับทะเล รูปแบบของกระแสเจ็ต และอื่นๆ -✅ [สไลด์นี้](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) เกี่ยวกับโมเดลสภาพอากาศให้มุมมองทางประวัติศาสตร์เกี่ยวกับการใช้ ML ในการวิเคราะห์สภาพอากาศ +✅ [สไลด์การบรรยาย](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) เกี่ยวกับโมเดลสภาพอากาศ นำเสนอแง่มุมประวัติศาสตร์ในการใช้ ML วิเคราะห์สภาพอากาศ -## งานก่อนการสร้างโมเดล +## งานเตรียมก่อนการสร้างโมเดล -ก่อนเริ่มสร้างโมเดลของคุณ มีหลายงานที่คุณต้องทำ เพื่อทดสอบคำถามของคุณและสร้างสมมติฐานโดยอิงจากการทำนายของโมเดล คุณต้องระบุและกำหนดองค์ประกอบหลายอย่าง +ก่อนเริ่มสร้างโมเดล คุณต้องทำภารกิจหลายอย่างเพื่อทดสอบคำถามและตั้งสมมติฐานโดยอิงจากการทำนายของโมเดล คุณต้องระบุและกำหนดองค์ประกอบหลายอย่าง ### ข้อมูล -เพื่อที่จะตอบคำถามของคุณด้วยความมั่นใจ คุณต้องมีข้อมูลที่ดีในปริมาณที่เหมาะสม มีสองสิ่งที่คุณต้องทำในขั้นตอนนี้: +เพื่อที่จะตอบคำถามของคุณด้วยความแน่นอน คุณต้องมีข้อมูลจำนวนมากที่เหมาะสม มีสองสิ่งที่คุณต้องทำตอนนี้: -- **รวบรวมข้อมูล**. โดยคำนึงถึงบทเรียนก่อนหน้านี้เกี่ยวกับความยุติธรรมในการวิเคราะห์ข้อมูล รวบรวมข้อมูลของคุณอย่างระมัดระวัง ระวังแหล่งที่มาของข้อมูลนี้ อคติที่อาจมี และบันทึกที่มาของข้อมูล -- **เตรียมข้อมูล**. มีหลายขั้นตอนในกระบวนการเตรียมข้อมูล คุณอาจต้องรวบรวมข้อมูลและปรับให้เป็นมาตรฐานหากมาจากแหล่งที่หลากหลาย คุณสามารถปรับปรุงคุณภาพและปริมาณของข้อมูลผ่านวิธีการต่าง ๆ เช่น การแปลงข้อความเป็นตัวเลข (ดังที่เราทำใน [Clustering](../../5-Clustering/1-Visualize/README.md)) คุณอาจสร้างข้อมูลใหม่โดยอิงจากข้อมูลเดิม (ดังที่เราทำใน [Classification](../../4-Classification/1-Introduction/README.md)) คุณสามารถทำความสะอาดและแก้ไขข้อมูล (ดังที่เราจะทำก่อนบทเรียน [Web App](../../3-Web-App/README.md)) สุดท้าย คุณอาจต้องสุ่มและสับข้อมูล ขึ้นอยู่กับเทคนิคการฝึกของคุณ +- **รวบรวมข้อมูล** จดจำบทเรียนก่อนหน้าเกี่ยวกับความยุติธรรมในการวิเคราะห์ข้อมูล รวบรวมข้อมูลอย่างระมัดระวัง รู้แหล่งที่มาของข้อมูล ความลำเอียงที่อาจมี และบันทึกต้นกำเนิดของข้อมูลไว้ +- **เตรียมข้อมูล** ขั้นตอนหลายขั้นตอนของการเตรียมข้อมูล อาจจำเป็นต้องรวบรวมข้อมูลและปรับข้อมูลให้อยู่ในรูปแบบปกติหากมาจากหลายแหล่ง คุณสามารถปรับปรุงคุณภาพและปริมาณข้อมูลได้ด้วยวิธีต่าง ๆ เช่น การแปลงสตริงเป็นตัวเลข (ตามที่ทำใน [Clustering](../../5-Clustering/1-Visualize/README.md)) คุณอาจสร้างข้อมูลใหม่จากข้อมูลเดิม (เช่นใน [Classification](../../4-Classification/1-Introduction/README.md)) คุณสามารถทำความสะอาดและแก้ไขข้อมูล (เหมือนในบทเรียน [Web App](../../3-Web-App/README.md)) สุดท้าย คุณอาจต้องสุ่มและสลับข้อมูล ขึ้นอยู่กับเทคนิคการฝึกอบรมของคุณ -✅ หลังจากรวบรวมและประมวลผลข้อมูลของคุณ ใช้เวลาสักครู่เพื่อดูว่ารูปร่างของข้อมูลจะช่วยให้คุณตอบคำถามที่ตั้งใจไว้ได้หรือไม่ อาจเป็นไปได้ว่าข้อมูลจะไม่ทำงานได้ดีในงานที่คุณตั้งใจไว้ ดังที่เราค้นพบในบทเรียน [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ หลังจากรวบรวมและประมวลผลข้อมูลแล้ว ให้ลองพิจารณาว่ารูปร่างของข้อมูลจะช่วยให้คุณตอบคำถามของคุณได้หรือไม่ อาจเป็นไปได้ว่าข้อมูลอาจทำงานได้ไม่ดีในงานที่คุณกำหนดไว้ เช่นที่เราได้พบในบทเรียน [Clustering](../../5-Clustering/1-Visualize/README.md) ### คุณลักษณะและเป้าหมาย -[คุณลักษณะ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) คือคุณสมบัติที่สามารถวัดได้ของข้อมูล ในชุดข้อมูลหลายชุดจะแสดงเป็นหัวข้อคอลัมน์ เช่น 'วันที่' 'ขนาด' หรือ 'สี' ตัวแปรคุณลักษณะของคุณ ซึ่งมักแสดงเป็น `X` ในโค้ด แสดงถึงตัวแปรอินพุตที่จะใช้ฝึกโมเดล +[คุณลักษณะ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) คือคุณสมบัติที่สามารถวัดได้ของข้อมูลมักแสดงเป็นชื่อคอลัมน์เช่น 'date' 'size' หรือ 'color' ตัวแปรคุณลักษณะของคุณ ซึ่งมักแสดงในโค้ดเป็น `X` คืออินพุตที่ใช้ฝึกโมเดล -เป้าหมายคือสิ่งที่คุณพยายามทำนาย เป้าหมายซึ่งมักแสดงเป็น `y` ในโค้ด แสดงถึงคำตอบของคำถามที่คุณพยายามถามจากข้อมูล: ในเดือนธันวาคม ฟักทอง **สีอะไร** จะมีราคาถูกที่สุด? ในซานฟรานซิสโก ย่านไหนจะมี **ราคาที่ดิน** ดีที่สุด? บางครั้งเป้าหมายยังถูกเรียกว่าแอตทริบิวต์ป้ายกำกับ +เป้าหมายคือสิ่งที่คุณพยายามทำนาย เป้าหมาย ซึ่งมักแสดงเป็น `y` ในโค้ด คือคำตอบของคำถามที่คุณถามข้อมูล เช่น ในเดือนธันวาคม ลูกฟักทองสีใดจะถูกที่สุด? ในซานฟรานซิสโก ย่านใดจะมีราคาอสังหาริมทรัพย์ที่ดีที่สุด? บางครั้งเป้าหมายก็เรียกว่าคุณสมบัติป้ายชื่อ (label attribute) ### การเลือกตัวแปรคุณลักษณะ -🎓 **การเลือกคุณลักษณะและการสกัดคุณลักษณะ** คุณจะรู้ได้อย่างไรว่าควรเลือกตัวแปรใดเมื่อสร้างโมเดล? คุณอาจต้องผ่านกระบวนการเลือกคุณลักษณะหรือการสกัดคุณลักษณะเพื่อเลือกตัวแปรที่เหมาะสมที่สุดสำหรับโมเดลที่มีประสิทธิภาพสูงสุด อย่างไรก็ตาม ทั้งสองกระบวนการไม่เหมือนกัน: "การสกัดคุณลักษณะสร้างคุณลักษณะใหม่จากฟังก์ชันของคุณลักษณะเดิม ในขณะที่การเลือกคุณลักษณะจะคืนชุดย่อยของคุณลักษณะ" ([แหล่งข้อมูล](https://wikipedia.org/wiki/Feature_selection)) +🎓 **การเลือกคุณลักษณะและการสกัดคุณลักษณะ** คุณจะรู้ได้อย่างไรว่าควรเลือกตัวแปรใดเมื่อสร้างโมเดล? โดยปกติคุณจะผ่านกระบวนการเลือกคุณลักษณะหรือสกัดคุณลักษณะเพื่อเลือกตัวแปรที่เหมาะสมสำหรับโมเดลที่มีประสิทธิภาพสูงสุด อย่างไรก็ตามพวกมันไม่เหมือนกัน: "การสกัดคุณลักษณะจะสร้างคุณลักษณะใหม่จากฟังก์ชันของคุณลักษณะเดิม ในขณะที่การเลือกคุณลักษณะจะคืนชุดย่อยของคุณลักษณะ" ([ที่มา](https://wikipedia.org/wiki/Feature_selection)) -### การแสดงภาพข้อมูล +### แสดงข้อมูลของคุณเป็นภาพ -ส่วนสำคัญของเครื่องมือของนักวิทยาศาสตร์ข้อมูลคือพลังในการแสดงภาพข้อมูลโดยใช้ไลบรารีที่ยอดเยี่ยมหลายตัว เช่น Seaborn หรือ MatPlotLib การแสดงข้อมูลของคุณในรูปแบบภาพอาจช่วยให้คุณค้นพบความสัมพันธ์ที่ซ่อนอยู่ซึ่งคุณสามารถใช้ประโยชน์ได้ การแสดงภาพของคุณอาจช่วยให้คุณค้นพบอคติหรือข้อมูลที่ไม่สมดุล (ดังที่เราค้นพบใน [Classification](../../4-Classification/2-Classifiers-1/README.md)) +เครื่องมือสำคัญของนักวิทยาศาสตร์ข้อมูลคือความสามารถในการแสดงข้อมูลด้วยไลบรารียอดเยี่ยมหลายอย่าง เช่น Seaborn หรือ MatPlotLib การแสดงข้อมูลเป็นภาพอาจช่วยให้คุณค้นพบความสัมพันธ์ที่ซ่อนอยู่ที่สามารถนำไปใช้ประโยชน์ได้ นอกจากนี้ภาพของคุณอาจช่วยให้คุณค้นพบอคติหรือความไม่สมดุลของข้อมูล (ตามที่เราพบใน [Classification](../../4-Classification/2-Classifiers-1/README.md)) -### การแบ่งชุดข้อมูล +### แบ่งชุดข้อมูลของคุณ -ก่อนการฝึก คุณต้องแบ่งชุดข้อมูลของคุณออกเป็นสองส่วนหรือมากกว่าที่มีขนาดไม่เท่ากันแต่ยังคงแสดงข้อมูลได้ดี +ก่อนการฝึกอบรม คุณต้องแบ่งชุดข้อมูลเป็นสองส่วนหรือมากกว่าที่มีขนาดไม่เท่ากันแต่ยังแทนข้อมูลได้ดี -- **การฝึก**. ส่วนนี้ของชุดข้อมูลจะถูกใช้เพื่อฝึกโมเดลของคุณ ชุดนี้ประกอบด้วยส่วนใหญ่ของชุดข้อมูลเดิม -- **การทดสอบ**. ชุดข้อมูลทดสอบเป็นกลุ่มข้อมูลอิสระที่มักรวบรวมจากข้อมูลเดิม ซึ่งคุณใช้เพื่อยืนยันประสิทธิภาพของโมเดลที่สร้างขึ้น -- **การตรวจสอบ**. ชุดตรวจสอบเป็นกลุ่มตัวอย่างอิสระขนาดเล็กที่คุณใช้ปรับแต่งพารามิเตอร์ไฮเปอร์ หรือโครงสร้างของโมเดลเพื่อปรับปรุงโมเดล ขึ้นอยู่กับขนาดของข้อมูลและคำถามที่คุณถาม คุณอาจไม่จำเป็นต้องสร้างชุดที่สามนี้ (ดังที่เราสังเกตใน [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)) +- **ฝึกอบรม** ส่วนของชุดข้อมูลนี้จะนำไปสร้างโมเดล ฝึกโมเดล ชุดนี้คือส่วนใหญ่ของชุดข้อมูลต้นฉบับ +- **ทดสอบ** ชุดข้อมูลทดสอบเป็นกลุ่มข้อมูลอิสระซึ่งมักมาจากข้อมูลต้นฉบับ ใช้เพื่อยืนยันประสิทธิภาพของโมเดลที่สร้างขึ้น +- **ตรวจสอบค่าความถูกต้อง** ชุดตรวจสอบค่าความถูกต้องเป็นกลุ่มตัวอย่างอิสระขนาดเล็กที่ใช้ปรับแต่งไฮเปอร์พารามิเตอร์หรือสถาปัตยกรรมของโมเดลเพื่อปรับปรุงประสิทธิภาพ ขึ้นอยู่กับขนาดข้อมูลและคำถามที่คุณถาม บางครั้งคุณอาจไม่จำเป็นต้องสร้างชุดที่สามนี้ (ตามที่ระบุใน [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)) -## การสร้างโมเดล +## สร้างโมเดล -โดยใช้ข้อมูลการฝึก เป้าหมายของคุณคือการสร้างโมเดล หรือการแสดงทางสถิติของข้อมูลของคุณ โดยใช้อัลกอริทึมต่าง ๆ เพื่อ **ฝึก** โมเดล การฝึกโมเดลจะเปิดโอกาสให้โมเดลได้สัมผัสกับข้อมูลและทำการสันนิษฐานเกี่ยวกับรูปแบบที่ค้นพบ ตรวจสอบ และยอมรับหรือปฏิเสธ +ใช้ข้อมูลฝึกอบรมของคุณ เป้าหมายคือการสร้างโมเดล หรือการแทนข้อมูลแบบทางสถิติ โดยใช้หลายอัลกอริทึมเพื่อ **ฝึก** โมเดล การฝึกโมเดลคือการเปิดเผยโมเดลกับข้อมูลและอนุญาตให้โมเดลทำสมมติฐานเกี่ยวกับรูปแบบที่ค้นพบ ตรวจสอบ และยอมรับหรือปฏิเสธ -### การตัดสินใจเลือกวิธีการฝึก +### เลือกวิธีการฝึกอบรม -ขึ้นอยู่กับคำถามและลักษณะของข้อมูล คุณจะเลือกวิธีการฝึก โดยการสำรวจ [เอกสารของ Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - ซึ่งเราใช้ในหลักสูตรนี้ - คุณสามารถสำรวจวิธีการฝึกโมเดลได้หลายวิธี ขึ้นอยู่กับประสบการณ์ของคุณ คุณอาจต้องลองหลายวิธีเพื่อสร้างโมเดลที่ดีที่สุด คุณอาจต้องผ่านกระบวนการที่นักวิทยาศาสตร์ข้อมูลประเมินประสิทธิภาพของโมเดลโดยป้อนข้อมูลที่ไม่เคยเห็นมาก่อน ตรวจสอบความแม่นยำ อคติ และปัญหาที่ลดคุณภาพ และเลือกวิธีการฝึกที่เหมาะสมที่สุดสำหรับงานที่ทำอยู่ +ขึ้นอยู่กับคำถามและลักษณะของข้อมูล คุณจะเลือกวิธีฝึกอบรม โดยดูจาก [เอกสารของ Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ซึ่งเราใช้ในหลักสูตรนี้ คุณสามารถสำรวจหลายวิธีฝึกอบรมโมเดล ขึ้นอยู่กับประสบการณ์ คุณอาจต้องลองหลายวิธีเพื่อสร้างโมเดลที่ดีที่สุด คุณน่าจะผ่านกระบวนการที่นักวิทยาศาสตร์ข้อมูลประเมินประสิทธิภาพโมเดลโดยป้อนข้อมูลใหม่ที่ไม่เคยเห็นมาก่อน ตรวจสอบความแม่นยำ อคติ และปัญหาเรื่องคุณภาพอื่น ๆ จากนั้นเลือกวิธีฝึกอบรมที่เหมาะสมที่สุดสำหรับงาน -### การฝึกโมเดล +### ฝึกโมเดล -เมื่อมีข้อมูลการฝึก คุณพร้อมที่จะ 'fit' เพื่อสร้างโมเดล คุณจะสังเกตเห็นว่าในไลบรารี ML หลายตัว คุณจะพบโค้ด 'model.fit' - ในเวลานี้คุณจะส่งตัวแปรคุณลักษณะของคุณเป็นอาร์เรย์ของค่า (มักเป็น 'X') และตัวแปรเป้าหมาย (มักเป็น 'y') +พร้อมข้อมูลฝึกอบรมของคุณ คุณพร้อมที่จะ 'ฟิต' ข้อมูลเพื่อสร้างโมเดล คุณจะพบว่าในไลบรารี ML หลายแห่งมีโค้ด 'model.fit' ซึ่งเป็นช่วงเวลาที่คุณส่งตัวแปรคุณลักษณะในรูปแบบอาร์เรย์ (มักเป็น 'X') และตัวแปรเป้าหมาย (มักเป็น 'y') -### การประเมินโมเดล +### ประเมินโมเดล -เมื่อกระบวนการฝึกเสร็จสิ้น (อาจใช้หลายรอบ หรือ 'epochs' ในการฝึกโมเดลขนาดใหญ่) คุณจะสามารถประเมินคุณภาพของโมเดลได้โดยใช้ข้อมูลทดสอบเพื่อวัดประสิทธิภาพของมัน ข้อมูลนี้เป็นชุดย่อยของข้อมูลเดิมที่โมเดลยังไม่เคยวิเคราะห์มาก่อน คุณสามารถพิมพ์ตารางเมตริกเกี่ยวกับคุณภาพของโมเดลได้ +เมื่อกระบวนการฝึกเสร็จสิ้น (อาจต้องใช้หลายรอบหรือ 'epochs' เพื่อฝึกโมเดลขนาดใหญ่) คุณจะสามารถประเมินคุณภาพโมเดลโดยใช้ข้อมูลทดสอบเพื่อวัดประสิทธิภาพ ข้อมูลนี้เป็นส่วนย่อยของข้อมูลต้นฉบับที่โมเดลไม่เคยวิเคราะห์มาก่อน คุณสามารถพิมพ์ตารางเมตริกเกี่ยวกับคุณภาพโมเดลของคุณได้ -🎓 **การปรับโมเดล** +🎓 **การฟิตโมเดล** -ในบริบทของการเรียนรู้ของเครื่อง การปรับโมเดลหมายถึงความแม่นยำของฟังก์ชันพื้นฐานของโมเดลเมื่อพยายามวิเคราะห์ข้อมูลที่ไม่คุ้นเคย +ในบริบทของการเรียนรู้ของเครื่อง การฟิตโมเดลหมายถึงความแม่นยำของฟังก์ชันพื้นฐานของโมเดลขณะที่พยายามวิเคราะห์ข้อมูลที่ไม่เคยรู้จักมาก่อน -🎓 **การปรับไม่ดี** และ **การปรับมากเกินไป** เป็นปัญหาทั่วไปที่ลดคุณภาพของโมเดล เนื่องจากโมเดลปรับตัวไม่ดีพอหรือดีเกินไป สิ่งนี้ทำให้โมเดลทำการทำนายที่สอดคล้องกับข้อมูลการฝึกมากเกินไปหรือหลวมเกินไป โมเดลที่ปรับมากเกินไปจะทำนายข้อมูลการฝึกได้ดีเกินไปเพราะมันเรียนรู้รายละเอียดและเสียงรบกวนของข้อมูลมากเกินไป โมเดลที่ปรับไม่ดีจะไม่แม่นยำเพราะไม่สามารถวิเคราะห์ข้อมูลการฝึกหรือข้อมูลที่ยังไม่เคยเห็นได้อย่างถูกต้อง +🎓 **การฟิตต่ำเกินไป** และ **การฟิตสูงเกินไป** เป็นปัญหาที่พบบ่อยที่ทำให้ประสิทธิภาพโมเดลลดลง เนื่องจากโมเดลฟิตไม่ดีพอหรือฟิตดีเกินไป ทำให้โมเดลทำนายได้ใกล้เกินไปหรือลวกเกินไปกับข้อมูลฝึกอบรม โมเดลที่ฟิตสูงเกินไปจะทำนายข้อมูลฝึกอบรมได้ดีมากเพราะเรียนรู้รายละเอียดและเสียงรบกวนในข้อมูลดีเกินไป โมเดลที่ฟิตต่ำเกินไปไม่แม่นยำเนื่องจากไม่สามารถวิเคราะห์ข้อมูลฝึกหรือข้อมูลที่ไม่เคยเห็นได้อย่างถูกต้อง -![overfitting model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> อินโฟกราฟิกโดย [Jen Looper](https://twitter.com/jenlooper) +![overfitting model](../../../../translated_images/th/overfitting.1c132d92bfd93cb6.webp) +> กราฟิกโดย [Jen Looper](https://twitter.com/jenlooper) -## การปรับแต่งพารามิเตอร์ +## การปรับค่าพารามิเตอร์ -เมื่อการฝึกครั้งแรกเสร็จสิ้น สังเกตคุณภาพของโมเดลและพิจารณาปรับปรุงโดยการปรับ 'พารามิเตอร์ไฮเปอร์' อ่านเพิ่มเติมเกี่ยวกับกระบวนการนี้ [ในเอกสาร](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) +เมื่อการฝึกเบื้องต้นเสร็จสิ้น ให้สังเกตคุณภาพของโมเดลและพิจารณาปรับปรุงโดยการปรับแต่ง 'ไฮเปอร์พารามิเตอร์' อ่านรายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการได้ใน [เอกสาร](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) ## การทำนาย -นี่คือช่วงเวลาที่คุณสามารถใช้ข้อมูลใหม่ทั้งหมดเพื่อทดสอบความแม่นยำของโมเดล ในการตั้งค่า ML ที่ 'นำไปใช้' ซึ่งคุณกำลังสร้างสินทรัพย์เว็บเพื่อใช้โมเดลในระบบผลิต การทำนายอาจเกี่ยวข้องกับการรวบรวมข้อมูลจากผู้ใช้ (เช่น การกดปุ่ม) เพื่อกำหนดตัวแปรและส่งไปยังโมเดลเพื่อการอนุมานหรือการประเมินผล +นี่คือช่วงเวลาที่คุณสามารถใช้ข้อมูลใหม่ทั้งหมดเพื่อทดสอบความแม่นยำของโมเดล ในสภาพแวดล้อมการใช้ ML จริง ที่คุณสร้างเว็บแอปเพื่อใช้โมเดลในงานจริง กระบวนการนี้อาจรวมถึงการรวบรวมข้อมูลผู้ใช้ (เช่น การกดปุ่ม) เพื่อกำหนดตัวแปรและส่งให้โมเดลทำการสรุปหรือประเมิน -ในบทเรียนเหล่านี้ คุณจะค้นพบวิธีใช้ขั้นตอนเหล่านี้เพื่อเตรียม สร้าง ทดสอบ ประเมิน และทำนาย - ทุกขั้นตอนของนักวิทยาศาสตร์ข้อมูลและอื่น ๆ ในขณะที่คุณก้าวหน้าในเส้นทางสู่การเป็นวิศวกร ML 'เต็มรูปแบบ' +ในบทเรียนเหล่านี้ คุณจะค้นพบวิธีใช้ขั้นตอนเหล่านี้เพื่อเตรียมข้อมูล สร้าง ทดสอบ ประเมิน และทำนาย—ซึ่งเป็นท่าทางของนักวิทยาศาสตร์ข้อมูลและอื่น ๆ ขณะที่คุณเดินทางสู่การเป็นวิศวกร ML 'เต็มสแตก' --- ## 🚀ความท้าทาย -วาดแผนภาพแสดงขั้นตอนของนักปฏิบัติ ML ตอนนี้คุณอยู่ในขั้นตอนใดในกระบวนการ? คุณคาดว่าจะพบความยากลำบากที่ไหน? อะไรที่ดูเหมือนง่ายสำหรับคุณ? +วาดแผนภูมิแสดงขั้นตอนของผู้ปฏิบัติการ ML คุณเห็นตัวเองอยู่จุดไหนในกระบวนการนี้? คุณคาดว่าจะพบความยากลำบากที่ไหน? อะไรที่ดูง่ายสำหรับคุณ? -## [แบบทดสอบหลังเรียน](https://ff-quizzes.netlify.app/en/ml/) +## [แบบทดสอบหลังการบรรยาย](https://ff-quizzes.netlify.app/en/ml/) -## ทบทวนและศึกษาด้วยตนเอง +## ทบทวน & การศึกษาด้วยตนเอง -ค้นหาสัมภาษณ์ออนไลน์กับนักวิทยาศาสตร์ข้อมูลที่พูดคุยเกี่ยวกับงานประจำวันของพวกเขา นี่คือ [หนึ่งตัวอย่าง](https://www.youtube.com/watch?v=Z3IjgbbCEfs) +ค้นหาออนไลน์สำหรับสัมภาษณ์นักวิทยาศาสตร์ข้อมูลที่พูดถึงงานประจำวันของพวกเขา นี่คือ [ตัวอย่างหนึ่ง](https://www.youtube.com/watch?v=Z3IjgbbCEfs) -## งานที่ได้รับมอบหมาย +## งานมอบหมาย [สัมภาษณ์นักวิทยาศาสตร์ข้อมูล](assignment.md) --- + **ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์มืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้ \ No newline at end of file +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาด้วย AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้ความถูกต้องสูงสุด โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถูกพิจารณาเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ควรใช้การแปลโดยมนุษย์มืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดขึ้นจากการใช้การแปลนี้ + \ No newline at end of file diff --git a/translations/th/2-Regression/3-Linear/README.md b/translations/th/2-Regression/3-Linear/README.md index d6a0b655c4..f80963d963 100644 --- a/translations/th/2-Regression/3-Linear/README.md +++ b/translations/th/2-Regression/3-Linear/README.md @@ -1,97 +1,96 @@ -# สร้างโมเดลการถดถอย (regression) โดยใช้ Scikit-learn: การถดถอยสี่วิธี +# สร้างแบบจำลองการถดถอยโดยใช้ Scikit-learn: การถดถอย 4 วิธี ## หมายเหตุสำหรับผู้เริ่มต้น -การถดถอยเชิงเส้นใช้เมื่อเราต้องการทำนาย **ค่าตัวเลข** (เช่น ราคาบ้าน อุณหภูมิ หรือยอดขาย) -วิธีทำงานโดยการหาค่ารูปเส้นตรงที่เป็นตัวแทนที่ดีที่สุดสำหรับความสัมพันธ์ระหว่างคุณลักษณะอินพุตและผลลัพธ์ +การถดถอยเชิงเส้นใช้เมื่อเราต้องการทำนายค่า **ตัวเลข** (เช่น ราคาบ้าน อุณหภูมิ หรือยอดขาย) +มันทำงานโดยการหาค่าของเส้นตรงที่แสดงความสัมพันธ์ระหว่างลักษณะข้อมูลนำเข้าและผลลัพธ์ออกมาได้ดีที่สุด -ในบทเรียนนี้ เราจะเน้นทำความเข้าใจแนวคิดก่อนที่จะสำรวจเทคนิคการถดถอยที่ก้าวหน้าขึ้น +ในบทเรียนนี้ เราเน้นไปที่การทำความเข้าใจแนวคิดก่อนจะสำรวจเทคนิคการถดถอยขั้นสูงเพิ่มเติม ![Linear vs polynomial regression infographic](../../../../translated_images/th/linear-polynomial.5523c7cb6576ccab.webp) > อินโฟกราฟิกโดย [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ml/) -> ### [บทเรียนนี้มีเวอร์ชันภาษา R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [บทเรียนนี้มีให้ใช้ใน R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### บทนำ -จนถึงตอนนี้คุณได้สำรวจความหมายของการถดถอยด้วยชุดข้อมูลตัวอย่างจากชุดข้อมูลราคาฟักทองที่เราจะใช้ตลอดบทเรียนนี้แล้ว คุณยังได้แสดงภาพโดยใช้ Matplotlib +จนถึงตอนนี้คุณได้สำรวจความหมายของการถดถอยด้วยตัวอย่างข้อมูลที่เก็บรวบรวมจากชุดข้อมูลราคาฟักทองซึ่งเราจะใช้ตลอดบทเรียนนี้ อีกทั้งคุณยังได้ทำการแสดงผลข้อมูลโดยใช้ Matplotlib -ตอนนี้คุณพร้อมที่จะเจาะลึกเรื่องการถดถอยสำหรับ ML แล้ว ในขณะที่การแสดงภาพช่วยให้เข้าใจข้อมูลได้ แต่พลังที่แท้จริงของ Machine Learning มาจาก _การฝึกโมเดล_ โมเดลจะถูกฝึกด้วยข้อมูลย้อนหลังเพื่อจับความสัมพันธ์ข้อมูลโดยอัตโนมัติ และช่วยให้คุณทำนายผลลัพธ์สำหรับข้อมูลใหม่ที่โมเดลไม่เคยเห็นมาก่อน +ตอนนี้คุณพร้อมที่จะศึกษาลึกลงไปในเรื่องการถดถอยสำหรับ ML แล้ว ในขณะที่การแสดงผลข้อมูลช่วยให้คุณเข้าใจข้อมูลได้ง่ายขึ้น แต่พลังที่แท้จริงของ Machine Learning มาจากการ _ฝึกสอนโมเดล_ โมเดลจะถูกฝึกบนข้อมูลในอดีตเพื่อจดจำความสัมพันธ์ของข้อมูลโดยอัตโนมัติ และช่วยให้คุณทำนายผลสำหรับข้อมูลใหม่ที่โมเดลไม่เคยเห็นมาก่อน -ในบทเรียนนี้ คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับสองประเภทของการถดถอย: _การถดถอยเชิงเส้นพื้นฐาน_ และ _การถดถอยพหุนาม_ พร้อมกับคณิตศาสตร์พื้นฐานที่อยู่เบื้องหลังเทคนิคเหล่านี้ โมเดลเหล่านี้จะช่วยให้เราทำนายราคาฟักทองขึ้นอยู่กับข้อมูลอินพุตที่แตกต่างกัน +ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับการถดถอยสองประเภท: _การถดถอยเชิงเส้นพื้นฐาน_ และ _การถดถอยพหุนาม_ พร้อมกับคณิตศาสตร์เบื้องหลังของเทคนิคเหล่านี้ โมเดลเหล่านี้จะช่วยให้เราทำนายราคาฟักทองขึ้นอยู่กับข้อมูลนำเข้าที่ต่างกัน [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 คลิกที่ภาพด้านบนเพื่อชมวิดีโอสั้นๆ เกี่ยวกับภาพรวมของการถดถอยเชิงเส้น +> 🎥 คลิกที่รูปภาพด้านบนเพื่อชมวิดีโอสั้นๆ แนะนำการถดถอยเชิงเส้น -> ตลอดหลักสูตรนี้ เราสมมุติว่าความรู้ด้านคณิตศาสตร์มีเพียงเล็กน้อย และพยายามทำให้ง่ายสำหรับนักเรียนที่มาจากสาขาอื่น จึงมีบันทึก, 🧮 การเรียกดู, แผนภาพ และเครื่องมือช่วยเรียนอื่นๆ เพื่อช่วยในการเข้าใจ +> ตลอดหลักสูตรนี้ เราจะตั้งพื้นฐานความรู้ทางคณิตศาสตร์ให้น้อยที่สุด และพยายามทำให้เข้าถึงง่ายสำหรับนักเรียนที่มาจากสาขาอื่นๆ ดังนั้นโปรดสังเกตหมายเหตุ 🧮 ข้อสังเกต แผนภาพ และเครื่องมือการเรียนรู้อื่นๆ เพื่อช่วยในการเข้าใจ -### ความรู้เบื้องต้นที่ควรมี +### ความรู้พื้นฐาน -คุณควรคุ้นเคยกับโครงสร้างชุดข้อมูลฟักทองที่เรากำลังวิเคราะห์อยู่แล้ว คุณสามารถพบชุดข้อมูลที่โหลดและทำความสะอาดไว้ล่วงหน้าในไฟล์ _notebook.ipynb_ ของบทเรียนนี้ ในไฟล์นี้ราคาฟักทองจะแสดงเป็นราคาต่อบัชเชิลในกรอบข้อมูลชุดใหม่ ให้แน่ใจว่าคุณสามารถรันโน้ตบุ๊กเหล่านี้บนเคอร์เนลใน Visual Studio Code +ตอนนี้คุณควรจะคุ้นเคยกับโครงสร้างข้อมูลฟักทองที่เรากำลังตรวจสอบแล้ว คุณสามารถหาข้อมูลที่โหลดมาและทำความสะอาดไว้ล่วงหน้าในไฟล์ _notebook.ipynb_ ของบทเรียนนี้ ในไฟล์จะแสดงราคาฟักทองต่อบัชเซลใน DataFrame ใหม่ ตรวจสอบให้แน่ใจว่าคุณสามารถรันโน้ตบุ๊กเหล่านี้ในเคอร์เนลของ Visual Studio Code ได้ ### การเตรียมตัว -เพื่อเตือนความจำ คุณกำลังโหลดข้อมูลนี้เพื่อที่จะตั้งคำถามกับมัน +เพื่อเป็นการเตือนความจำ คุณกำลังโหลดข้อมูลนี้เพื่อที่จะตั้งคำถามเกี่ยวกับมัน -- เวลาใดเหมาะสมที่สุดในการซื้อฟักทอง? -- ราคาที่คาดหวังของฟักทองขนาดจิ๋วเป็นเท่าไร? -- ควรซื้อแบบตะกร้าครึ่งบัชเชิล หรือแบบกล่อง 1 1/9 บัชเชิลดี? +- เวลาไหนเหมาะสมที่สุดในการซื้อฟักทอง? +- ฉันคาดหวังราคาเท่าไหร่สำหรับกล่องฟักทองมินิ? +- ฉันควรซื้อในตะกร้าครึ่งบัชเซลหรือกล่องบัชเซล 1 1/9 ดี? +เรามาลงลึกกับข้อมูลนี้กันต่อ -ลองสำรวจข้อมูลนี้ต่อไป +ในบทเรียนก่อนหน้านี้คุณได้สร้าง Pandas DataFrame และเติมข้อมูลส่วนหนึ่งของชุดข้อมูลต้นฉบับ โดยการปรับราคาต่อบัชเซล แต่ด้วยวิธีนี้คุณสามารถรวบรวมได้เพียงประมาณ 400 จุดข้อมูลและเฉพาะช่วงฤดูใบไม้ร่วงเท่านั้น -ในบทเรียนก่อนหน้า คุณได้สร้าง Pandas DataFrame และเติมข้อมูลบางส่วนจากชุดข้อมูลเดิมโดยการทำให้ราคาเป็นมาตรฐานต่อบัชเชิล แต่ด้วยวิธีนี้คุณได้แค่ประมาณ 400 จุดข้อมูลและเฉพาะในเดือนฤดูใบไม้ร่วงเท่านั้น +ลองดูข้อมูลที่เราโหลดไว้ล่วงหน้าในโน้ตบุ๊กของบทเรียนนี้ ข้อมูลถูกโหลดล่วงหน้าและแสดงกราฟกระจายเบื้องต้นที่แสดงข้อมูลรายเดือน บางทีเราอาจจะได้รายละเอียดเพิ่มเติมเกี่ยวกับลักษณะของข้อมูลโดยการทำความสะอาดข้อมูลเพิ่มเติมอีก -ลองดูข้อมูลที่เรารโหลดไว้ล่วงหน้าในโน้ตบุ๊กที่แนบมากับบทเรียนนี้ ข้อมูลถูกโหลดไว้แล้วและมีการสร้างกราฟกระจายเบื้องต้นแสดงข้อมูลเดือน อาจจะสามารถล้างข้อมูลให้ดีขึ้นเพื่อให้เข้าใจลักษณะข้อมูลได้มากขึ้น +## เส้นถดถอยเชิงเส้น -## เส้นการถดถอยเชิงเส้น +อย่างที่คุณได้เรียนรู้ในบทเรียนที่ 1 เป้าหมายของการฝึกการถดถอยเชิงเส้นคือการสามารถวาดเส้นเพื่อ: -ตามที่คุณได้เรียนรู้ในบทที่ 1 เป้าหมายของการฝึกการถดถอยเชิงเส้นคือการวางเส้นตรงที่: +- **แสดงความสัมพันธ์ระหว่างตัวแปร** แสดงความสัมพันธ์ระหว่างตัวแปรต่าง ๆ +- **ทำการทำนาย** ทำนายได้อย่างแม่นยำว่าจุดข้อมูลใหม่จะตกอยู่ที่ไหนเมื่อเทียบกับเส้นนั้น -- **แสดงความสัมพันธ์ระหว่างตัวแปร** แสดงความสัมพันธ์ระหว่างตัวแปร -- **ทำนายผลลัพธ์** ทำนายค่าที่ถูกต้องว่าจุดข้อมูลใหม่จะอยู่ที่ใดในความสัมพันธ์กับเส้นนั้น +โดยปกติจะใช้วิธี **Least-Squares Regression** ในการวาดเส้นแบบนี้ คำว่า Least-Squares หมายถึงกระบวนการลดข้อผิดพลาดโดยรวมของโมเดลให้ต่ำที่สุด สำหรับทุกจุดข้อมูล เราวัดระยะทางแนวตั้ง (เรียกว่า residual) ระหว่างจุดจริงกับเส้นถดถอยของเรา -โดยปกติสำหรับ **Least-Squares Regression** จะใช้การวาดเส้นแบบนี้ คำว่า "Least-Squares" หมายถึงกระบวนการของการหาค่าความผิดพลาดรวมทั้งหมดให้น้อยที่สุดในโมเดลของเรา สำหรับทุกจุดข้อมูล เราจะวัดระยะทางในแนวดิ่ง (ซึ่งเรียกว่า residual) ระหว่างจุดจริงกับเส้นถดถอยของเรา +เรายกกำลังสองระยะทางเหล่านี้ด้วยเหตุผล 2 ประการหลัก: -เราจะกำหนดค่ายกกำลังสองของระยะทางเหตุผลสำคัญสองประการคือ: +1. **ขนาดมากกว่าทิศทาง:** เราต้องการที่จะมองว่าข้อผิดพลาด -5 กับ +5 มีค่าเท่ากัน การยกกำลังสองจะทำให้ค่าทั้งหมดเป็นบวก +2. **ลงโทษค่าผิดพลาดที่สูงกว่า:** การยกกำลังสองทำให้ข้อผิดพลาดที่ใหญ่กว่าถูกให้น้ำหนักมากขึ้น ทำให้เส้นถดถอยต้องอยู่ใกล้กับจุดที่อยู่ไกลออกไปมากกว่า -1. **ขนาดไม่สนทิศทาง:** เราต้องการให้ความผิดพลาด -5 มีค่าเหมือนกับความผิดพลาด +5 การยกกำลังสองทำให้ค่าทั้งหมดเป็นบวก -2. **ลงโทษค่าเบี่ยงเบนสูง:** การยกกำลังสองทำให้ค่าความผิดพลาดมากถูกเน้นหนักขึ้น บังคับให้เส้นต้องอยู่ใกล้กับจุดที่ห่างไกลมากกว่า - -จากนั้นเราจะนำค่ากำลังสองทั้งหมดมารวมกัน เป้าหมายของเราคือหาค่าเส้นที่ผลบวกนี้มีค่าน้อยที่สุด (ค่าที่เล็กที่สุด) จึงเรียกว่า "Least-Squares" +จากนั้นเราจะนำค่ากำลังสองเหล่านี้ทั้งหมดมาบวกกัน เป้าหมายของเราคือการหาค่าของเส้นที่มีผลรวมค่ากำลังสองน้อยที่สุด (ค่าน้อยสุดที่เป็นไปได้) — จึงเป็นที่มาของคำว่า "Least-Squares" > **🧮 แสดงคณิตศาสตร์ให้ดู** > -> เส้นนี้เรียกว่า _เส้นที่เหมาะสมที่สุด_ สามารถแสดงได้ด้วย [สูตรสมการ](https://en.wikipedia.org/wiki/Simple_linear_regression): +> เส้นนี้เรียกว่า _เส้นที่ทำให้เหมาะสมที่สุด_ (line of best fit) สามารถเขียนแทนด้วย [สมการ](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` -> -> `X` คือ 'ตัวแปรอธิบาย' และ `Y` คือ 'ตัวแปรตาม' ความชันของเส้นคือ `b` และ `a` คือจุดตัดแกน y ซึ่งหมายถึงค่าของ `Y` เมื่อ `X = 0` -> ->![calculate the slope](../../../../translated_images/th/slope.f3c9d5910ddbfcf9.webp) -> -> ขั้นแรกคำนวณความชัน `b` อินโฟกราฟิกโดย [Jen Looper](https://twitter.com/jenlooper) -> -> กล่าวอีกนัยหนึ่ง และอ้างอิงคำถามดั้งเดิมของข้อมูลฟักทอง: "ทำนายราคาฟักทองต่อบัชเชิลตามเดือน" `X` จะหมายถึงราคา และ `Y` จะหมายถึงเดือนของการขาย -> ->![complete the equation](../../../../translated_images/th/calculation.a209813050a1ddb1.webp) -> -> คำนวณค่า Y หากคุณจ่ายเงินประมาณ 4 ดอลลาร์ ต้องเป็นเดือนเมษายนแน่ๆ อินโฟกราฟิกโดย [Jen Looper](https://twitter.com/jenlooper) -> -> คณิตศาสตร์ที่คำนวณเส้นต้องแสดงความชันของเส้นซึ่งขึ้นอยู่กับจุดตัดแกน y หรือที่ที่ `Y` อยู่เมื่อ `X = 0` -> -> คุณสามารถดูวิธีการคำนวณค่านี้ได้จากเว็บไซต์ [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) และสามารถไปที่ [เครื่องมือคำนวณ Least-squares](https://www.mathsisfun.com/data/least-squares-calculator.html) เพื่อดูผลกระทบของค่าตัวเลขต่อเส้นได้ + +> `X` คือ 'ตัวแปรอธิบาย' ส่วน `Y` คือ 'ตัวแปรตาม' ความชันของเส้นคือ `b` และ `a` คือจุดตัดแกน y ซึ่งหมายถึงค่าของ `Y` เมื่อ `X = 0` +> +>![calculate the slope](../../../../translated_images/th/slope.f3c9d5910ddbfcf9.webp) +> +> ขั้นแรก คำนวณความชัน `b` อินโฟกราฟิกโดย [Jen Looper](https://twitter.com/jenlooper) +> +> กล่าวอีกนัยหนึ่ง และอ้างอิงกับคำถามของข้อมูลฟักทอง "ทำนายราคาฟักทองต่อบัชเซลตามเดือน" โดยที่ `X` หมายถึงราคาและ `Y` หมายถึงเดือนที่ขาย +> +>![complete the equation](../../../../translated_images/th/calculation.a209813050a1ddb1.webp) +> +> คำนวณค่า Y ถ้าคุณจ่ายประมาณ 4 ดอลลาร์ นั่นต้องเป็นเดือนเมษายนแน่ๆ! อินโฟกราฟิกโดย [Jen Looper](https://twitter.com/jenlooper) +> +> คณิตศาสตร์ที่ใช้คำนวณเส้นนี้จำเป็นต้องแสดงความชันของเส้น ซึ่งยังขึ้นอยู่กับจุดตัด (intercept) หรือที่ที่ `Y` อยู่เมื่อ `X = 0` +> +> คุณสามารถดูวิธีการคำนวณค่าพวกนี้ได้ที่เว็บ [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) และเข้าใช้ [เครื่องคิดเลข Least-squares](https://www.mathsisfun.com/data/least-squares-calculator.html) เพื่อดูว่าค่าตัวเลขต่างๆ ส่งผลต่อเส้นอย่างไร ## ความสัมพันธ์ (Correlation) -อีกคำหนึ่งที่ต้องเข้าใจคือ **สัมประสิทธิ์สหสัมพันธ์ (Correlation Coefficient)** ระหว่างตัวแปร X และ Y ที่กำหนด ด้วยการใช้กราฟกระจาย คุณจะมองเห็นค่าสัมประสิทธิ์นี้อย่างรวดเร็ว กราฟที่มีจุดกระจายในเส้นตรงเรียงตัวกันอย่างดีจะมีค่าสหสัมพันธ์สูง แต่กราฟที่จุดกระจายกระจัดกระจายไม่เป็นระเบียบระหว่าง X และ Y จะมีค่าสหสัมพันธ์ต่ำ +อีกคำหนึ่งที่ควรทำความเข้าใจคือ **สัมประสิทธิ์สหสัมพันธ์ (Correlation Coefficient)** ระหว่างตัวแปร X และ Y ที่กำหนด โดยการใช้กราฟกระจาย (scatterplot) คุณสามารถเห็นค่าค่าสหสัมพันธ์นี้ได้อย่างรวดเร็ว กราฟที่จุดข้อมูลกระจายตัวอยู่ตามเส้นตรงอย่างสม่ำเสมอจะมีค่าสหสัมพันธ์สูง แต่กราฟที่จุดข้อมูลกระจัดกระจายทั่วทั้งแกน X และ Y จะมีค่าสหสัมพันธ์ต่ำ -โมเดลการถดถอยเชิงเส้นที่ดีจะมีค่าสัมประสิทธิ์สหสัมพันธ์สูง (ใกล้ 1 มากกว่า 0) โดยใช้วิธี Least-Squares Regression กับเส้นถดถอย +โมเดลถดถอยเชิงเส้นที่ดีจะต้องมีค่าสหสัมพันธ์สูง (ใกล้เคียง 1 มากกว่า 0) โดยใช้วิธีการ Least-Squares Regression กับเส้นถดถอย -✅ รันโน้ตบุ๊กที่แนบมากับบทเรียนนี้และดูกราฟกระจายระหว่างเดือนกับราคา ข้อมูลที่สัมพันธ์ระหว่างเดือนและราคาฟักทองมีค่าสหสัมพันธ์สูงหรือต่ำตามการตีความด้วยตาเปล่าของคุณจากกราฟกระจายหรือไม่? ถ้าใช้ค่าที่ละเอียดกว่านี้แทน `Month` เช่น *วันภายในปี* (จำนวนวันนับตั้งแต่ปีเริ่มต้น) จะเปลี่ยนแปลงอย่างไร? +✅ รันโน้ตบุ๊กที่แนบมากับบทเรียนนี้ และดูกราฟกระจาย Month กับ Price ข้อมูลที่สัมพันธ์กันระหว่างเดือนและราคาของยอดขายฟักทองดูเหมือนว่ามีค่าสหสัมพันธ์สูงหรือต่ำ ตามการตีความจากการแสดงผลกราฟกระจายของคุณหรือไม่? ค่านี้เปลี่ยนแปลงหรือไม่ถ้าคุณใช้มาตรวัดที่ละเอียดขึ้นแทน `Month` เช่น *วันในปี* (จำนวนวันตั้งแต่ต้นปี)? -ในโค้ดด้านล่างนี้ เราจะสมมุติว่าข้อมูลถูกทำความสะอาดแล้ว และได้ DataFrame ชื่อ `new_pumpkins` ดังนี้: +ในโค้ดด้านล่างนี้ เราจะสมมติว่าเราได้ทำความสะอาดข้อมูลแล้ว และได้ DataFrame ชื่อ `new_pumpkins` ซึ่งมีลักษณะดังนี้: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +100,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> โค้ดในการทำความสะอาดข้อมูลหาได้ใน [`notebook.ipynb`](notebook.ipynb) เราทำการทำความสะอาดแบบเดียวกับบทก่อนหน้าและคำนวณคอลัมน์ `DayOfYear` ด้วยนิพจน์ต่อไปนี้: +> โค้ดสำหรับการทำความสะอาดข้อมูลอยู่ใน [`notebook.ipynb`](notebook.ipynb) เราได้ดำเนินการทำความสะอาดเหมือนในบทเรียนก่อนหน้า และคำนวณคอลัมน์ `DayOfYear` โดยใช้สมการดังนี้: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -ตอนนี้คุณเข้าใจคณิตศาสตร์เบื้องหลังการถดถอยเชิงเส้นแล้ว มาเราสร้างโมเดลการถดถอยเพื่อดูว่าเราสามารถทำนายได้หรือไม่ว่าชุดฟักทองใดจะมีราคาที่ดีที่สุด ใครก็ตามที่ซื้อฟักทองสำหรับเทศกาลฟักทองอาจต้องการข้อมูลนี้เพื่อการตัดสินใจซื้อชุดฟักทองให้เหมาะสม +ตอนนี้คุณมีความเข้าใจคณิตศาสตร์เบื้องหลังการถดถอยเชิงเส้นแล้ว เรามาสร้างโมเดลการถดถอยเพื่อดูว่าเราสามารถทำนายได้หรือไม่ว่าฟักทองแบบไหนจะมีราคาดีที่สุด ใครที่ซื้อฟักทองสำหรับแปลงฟักทองในช่วงวันหยุดอาจจะต้องการข้อมูลนี้เพื่อวางแผนการซื้อฟักทองให้เหมาะสมกับแปลงดังกล่าว -## การค้นหาความสัมพันธ์ +## การหาค่าสหสัมพันธ์ (Looking for Correlation) [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 คลิกที่ภาพด้านบนเพื่อชมวิดีโอสั้นๆ เกี่ยวกับภาพรวมของความสัมพันธ์ +> 🎥 คลิกที่ภาพด้านบนเพื่อชมวิดีโอสั้นๆ แนะนำเรื่องการหาค่าสหสัมพันธ์ -จากบทเรียนก่อนหน้า คุณอาจจะเห็นว่าราคากลางของแต่ละเดือนมีลักษณะดังนี้: +จากบทเรียนก่อนหน้านี้ คุณอาจเห็นว่าราคาฟักทองเฉลี่ยสำหรับแต่ละเดือนเป็นดังนี้: Average price by month -ซึ่งแสดงว่าต้องมีความสัมพันธ์บางอย่าง และเราสามารถลองฝึกโมเดลการถดถอยเชิงเส้นเพื่อทำนายความสัมพันธ์ระหว่าง `Month` กับ `Price` หรือระหว่าง `DayOfYear` กับ `Price` ได้ นี่คือกราฟกระจายที่แสดงความสัมพันธ์หลัง: +ซึ่งบ่งชี้ว่าควรมีความสัมพันธ์ และเราสามารถลองฝึกโมเดลถดถอยเชิงเส้นเพื่อทำนายความสัมพันธ์ระหว่าง `Month` กับ `Price` หรือระหว่าง `DayOfYear` กับ `Price` ได้ ดังนี้เป็นกราฟกระจายที่แสดงความสัมพันธ์หลัง: Scatter plot of Price vs. Day of Year -ลองดูความสัมพันธ์โดยใช้ฟังก์ชัน `corr`: +มาดูว่ามีความสัมพันธ์หรือไม่โดยใช้ฟังก์ชัน `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -ดูเหมือนว่าค่าสหสัมพันธ์จะค่อนข้างต่ำ คือ -0.15 สำหรับ `Month` และ -0.17 สำหรับ `DayOfMonth` แต่น่าจะมีความสัมพันธ์อื่นที่น่าสนใจ ดูเหมือนว่ามีกลุ่มราคาที่แตกต่างกันตามชนิดฟักทอง เพื่อยืนยันสมมติฐานนี้ ลองพล็อตค่าฟักทองแต่ละประเภทด้วยสีที่แตกต่างกัน โดยส่งพารามิเตอร์ `ax` ไปยังฟังก์ชัน `scatter` เพื่อพล็อตจุดทั้งหมดบนกราฟเดียวกัน: +ดูเหมือนว่าค่าสหสัมพันธ์จะน้อยมาก คือ -0.15 โดย `Month` และ -0.17 โดย `DayOfYear` แต่ดูเหมือนว่าจะมีความสัมพันธ์สำคัญอีกประการหนึ่ง คือ ราคาที่แตกต่างกันมีคลัสเตอร์ที่สัมพันธ์กับพันธุ์ฟักทองต่าง ๆ เพื่อยืนยันสมมติฐานนี้ ให้ลองแสดงแต่ละหมวดหมู่ของฟักทองโดยใช้สีที่ต่างกัน การส่งพารามิเตอร์ `ax` ให้กับฟังก์ชัน `scatter` จะช่วยให้เราสามารถแสดงจุดทั้งหมดบนกราฟเดียวกันได้: ```python ax=None @@ -142,41 +141,41 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): Scatter plot of Price vs. Day of Year -การสืบสวนของเราชี้ว่าชนิดฟักทองมีผลต่อราคามากกว่าวันขายจริง ซึ่งจะเห็นได้ชัดในกราฟแท่ง: +การสำรวจของเราชี้ให้เห็นว่าพันธุ์ฟักทองมีผลกระทบต่อราคามากกว่าวันที่ขายจริง เราสามารถเห็นได้จากกราฟแท่ง: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +Bar graph of price vs variety -ขอให้เรามุ่งความสนใจชั่วคราวไปที่ฟักทองชนิดเดียว คือ 'pie type' และดูผลกระทบของวันที่กับราคาฟักทอง: +มุ่งความสนใจช่วงนี้ไปที่พันธุ์ฟักทองเดียวคือ 'pie type' และดูผลของวันที่มีต่อราคา: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Scatter plot of Price vs. Day of Year -ถ้าเราคำนวณค่าสหสัมพันธ์ระหว่าง `Price` และ `DayOfYear` ด้วยฟังก์ชัน `corr` จะได้ค่าประมาณ `-0.27` ซึ่งหมายความว่าการฝึกโมเดลทำนายเป็นเรื่องสมเหตุสมผล +ถ้าเราคำนวณค่าสหสัมพันธ์ระหว่าง `Price` และ `DayOfYear` โดยใช้ฟังก์ชัน `corr` จะได้ประมาณ `-0.27` ซึ่งหมายความว่าการฝึกโมเดลทำนายนั้นมีเหตุผล -> ก่อนฝึกโมเดลการถดถอยเชิงเส้น สิ่งสำคัญคือให้แน่ใจว่าข้อมูลของเราสะอาด เพราะการถดถอยเชิงเส้นทำงานไม่ดีเมื่อมีค่าว่าง จึงควรลบเซลล์ว่างทั้งหมด: +> ก่อนฝึกโมเดลถดถอยเชิงเส้น ควรแน่ใจว่าข้อมูลของเราสะอาดดี การถดถอยเชิงเส้นทำงานได้ไม่ดีเมื่อมีค่าว่าง จึงควรกำจัดช่องว่างทั้งหมดออก: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -อีกวิธีหนึ่งคือเติมค่าในช่องว่างเหล่านั้นด้วยค่าค่าเฉลี่ยของคอลัมน์นั้น +อีกทางเลือกหนึ่งคือเติมช่องว่างเหล่านั้นด้วยค่าเฉลี่ยของคอลัมน์นั้น ๆ ## การถดถอยเชิงเส้นอย่างง่าย [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 คลิกที่ภาพด้านบนเพื่อชมวิดีโอสั้นๆ เกี่ยวกับภาพรวมของการถดถอยเชิงเส้นและพหุนาม +> 🎥 คลิกที่ภาพด้านบนเพื่อชมวิดีโอแนะนำการถดถอยเชิงเส้นและถดถอยพหุนาม -เพื่อฝึกโมเดล Linear Regression เราจะใช้ไลบรารี **Scikit-learn** +ในการฝึกโมเดลถดถอยเชิงเส้น เราจะใช้ไลบรารี **Scikit-learn** ```python from sklearn.linear_model import LinearRegression @@ -184,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -เริ่มจากแยกค่าอินพุต (คุณลักษณะ) และผลลัพธ์ที่คาดหวัง (ป้ายชื่อ) ออกเป็นอาร์เรย์ numpy แยกกัน: +เราจะเริ่มต้นโดยการแยกค่าข้อมูลนำเข้า (features) และผลลัพธ์ที่ต้องการ (label) เป็น numpy arrays แยกกัน: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> โปรดสังเกตว่าเราต้องทำการ `reshape` กับข้อมูลอินพุตเพื่อให้แพ็กเกจ Linear Regression เข้าใจถูกต้อง Linear Regression ต้องการอาร์เรย์สองมิติที่แต่ละแถวเป็นเวกเตอร์คุณลักษณะอินพุต ในกรณีนี้เนื่องจากเรามีแค่คุณลักษณะเดียว เราจึงต้องการอาร์เรย์รูปทรง N×1 โดยที่ N คือขนาดข้อมูล +> โปรดทราบว่าเราต้องทำ `reshape` กับข้อมูลนำเข้าเพื่อให้แพ็กเกจ Linear Regression เข้าใจอย่างถูกต้อง Linear Regression คาดหวังข้อมูลนำเข้าเป็นอาร์เรย์ 2 มิติ โดยแต่ละแถวคือเวกเตอร์ของลักษณะนำเข้า กรณีของเราเนื่องจากมีข้อมูลนำเข้าเพียงตัวเดียว จึงต้องใช้อาร์เรย์ขนาด N×1 โดยที่ N คือจำนวนขนาดชุดข้อมูล -จากนั้นเราต้องแบ่งข้อมูลออกเป็นชุดฝึก (train) และชุดทดสอบ (test) เพื่อยืนยันโมเดลหลังการฝึก: +จากนั้น เราจำเป็นต้องแบ่งข้อมูลออกเป็นชุดฝึกสอนและชุดทดสอบ เพื่อที่เราจะได้ตรวจสอบโมเดลหลังจากฝึกสอนเสร็จ: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -สุดท้าย การฝึกโมเดล Linear Regression จริงๆ ใช้แค่สองบรรทัดโค้ด เราสร้างอ็อบเจ็กต์ `LinearRegression` และฟิตโมเดลกับข้อมูลโดยใช้เมธอด `fit`: +สุดท้าย การฝึกโมเดล Linear Regression จริงๆ ใช้เพียงสองบรรทัดของโค้ด เรานิยามอ็อบเจ็กต์ `LinearRegression` และทำการ fit กับข้อมูลของเราโดยใช้เมธอด `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -อ็อบเจ็กต์ `LinearRegression` หลังจากที่ได้ `fit` แล้วจะมีค่าสัมประสิทธิ์ทั้งหมดของการถดถอยซึ่งสามารถเข้าถึงได้โดยใช้คุณสมบัติ `.coef_` ในกรณีของเรา มีสัมประสิทธิ์เพียงตัวเดียวซึ่งควรจะประมาณ `-0.017` ซึ่งหมายความว่าราคาดูเหมือนจะลดลงเล็กน้อยตามเวลา แต่ไม่มากนัก ราวๆ 2 เซนต์ต่อวัน เรายังสามารถเข้าถึงจุดตัดของเส้นถดถอยกับแกน Y ได้โดยใช้ `lin_reg.intercept_` ซึ่งในกรณีของเราจะอยู่ประมาณ `21` ซึ่งบ่งชี้ราคาตอนต้นปี +อ็อบเจกต์ `LinearRegression` หลังจากที่ทำการ `fit` แล้ว จะเก็บค่าสัมประสิทธิ์ของการถดถอยทั้งหมดไว้ ซึ่งสามารถเข้าถึงได้โดยใช้คุณสมบัติ `.coef_` ในกรณีของเรา จะมีค่าสัมประสิทธิ์เพียงค่าเดียว ซึ่งควรจะประมาณ `-0.017` ซึ่งหมายความว่าราคามีแนวโน้มที่จะลดลงเล็กน้อยตามเวลาที่ผ่านไป แต่ไม่มาก ประมาณ 2 เซนต์ต่อวัน เรายังสามารถเข้าถึงจุดตัดแกน Y ของเส้นถดถอยได้โดยใช้ `lin_reg.intercept_` ซึ่งในกรณีของเราจะประมาณ `21` บ่งบอกถึงราคาตั้งแต่ต้นปี -เพื่อดูว่าโมเดลของเรามีความแม่นยำแค่ไหน เราสามารถทำนายราคาบนชุดข้อมูลทดสอบ และวัดว่าการทำนายของเราใกล้เคียงกับค่าที่คาดหวังแค่ไหน ซึ่งสามารถทำได้โดยใช้เมตริกค่า root mean square error (RMSE) ซึ่งเป็นรากที่ของค่าเฉลี่ยของความแตกต่างยกกำลังสองทั้งหมดระหว่างค่าที่คาดหวังและค่าที่ทำนาย +เพื่อดูว่าโมเดลของเรามีความแม่นยำเพียงใด เราสามารถทำนายราคาบนชุดข้อมูลทดสอบ จากนั้นวัดความใกล้เคียงระหว่างค่าทำนายกับค่าที่คาดไว้ ซึ่งสามารถทำได้โดยใช้เมตริก root mean square error (RMSE) ซึ่งคือรากที่สองของค่าเฉลี่ยของผลต่างกำลังสองทั้งหมดระหว่างค่าที่คาดหวังและค่าทำนาย ```python pred = lin_reg.predict(X_test) @@ -217,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -ข้อผิดพลาดของเราดูเหมือนจะอยู่ประมาณ 2 จุด ซึ่งราวๆ ~17% ซึ่งไม่ดีนัก อีกตัวบ่งชี้คุณภาพของโมเดลคือ **coefficient of determination** ซึ่งสามารถหาได้ดังนี้: +ข้อผิดพลาดของเราดูเหมือนจะประมาณ 2 จุด ซึ่งประมาณ ~17% ไม่ค่อยดีนัก ตัวชี้วัดอีกอย่างหนึ่งของคุณภาพโมเดลคือ **coefficient of determination** ซึ่งสามารถคำนวณได้ดังนี้: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -ถ้าค่าคือ 0 หมายความว่าโมเดลไม่ได้พิจารณาข้อมูลนำเข้า และทำหน้าที่เหมือน *linear predictor ที่แย่ที่สุด* ซึ่งคือค่าเฉลี่ยของผลลัพธ์ ค่าของ 1 หมายความว่าเราสามารถทำนายเอาต์พุตทั้งหมดได้อย่างสมบูรณ์ ในกรณีของเรา ค่าสัมประสิทธิ์อยู่ที่ประมาณ 0.06 ซึ่งค่อนข้างต่ำ +ถ้าค่าเท่ากับ 0 หมายความว่าโมเดลไม่สนใจข้อมูลอินพุต และทำหน้าที่เป็น *ผู้ทำนายเชิงเส้นที่แย่ที่สุด* ซึ่งก็คือค่าเฉลี่ยของผลลัพธ์ ค่าที่เท่ากับ 1 หมายความว่าเราสามารถทำนายผลลัพธ์ทั้งหมดได้อย่างสมบูรณ์ ในกรณีของเราค่าสัมประสิทธิ์นี้อยู่ที่ประมาณ 0.06 ซึ่งค่อนข้างต่ำ -เรายังสามารถวาดกราฟข้อมูลทดสอบพร้อมกับเส้นถดถอยเพื่อดูว่าเส้นถดถอยทำงานอย่างไรในกรณีของเราได้อีกด้วย: +เรายังสามารถวาดกราฟข้อมูลทดสอบพร้อมกับเส้นถดถอยเพื่อดูว่าเส้นถดถอยทำงานอย่างไรในกรณีของเราได้ดีขึ้น: ```python plt.scatter(X_test,y_test) @@ -234,19 +233,19 @@ plt.plot(X_test,pred) Linear regression -## การถดถอยแบบพหุนาม (Polynomial Regression) +## การถดถอยเชิงพหุนาม (Polynomial Regression) -อีกประเภทหนึ่งของ Linear Regression คือ Polynomial Regression ในบางครั้งความสัมพันธ์ระหว่างตัวแปรเป็นแบบเชิงเส้น เช่น ยิ่งฟักทองมีปริมาตรมาก ราคาก็จะสูงขึ้น แต่บางครั้งความสัมพันธ์เหล่านี้ไม่สามารถแสดงบนระนาบหรือเส้นตรงได้ +ประเภทหนึ่งของ Linear Regression คือ Polynomial Regression บางครั้งความสัมพันธ์ระหว่างตัวแปรเป็นเชิงเส้น เช่น ยิ่งฟักทองมีปริมาตรมาก ราคาก็สูงขึ้น แต่บางครั้งความสัมพันธ์เหล่านี้ไม่สามารถแสดงในรูปแบบระนาบหรือเส้นตรงได้ -✅ นี่คือ [ตัวอย่างเพิ่มเติม](https://online.stat.psu.edu/stat501/lesson/9/9.8) ของข้อมูลที่สามารถใช้ Polynomial Regression +✅ นี่คือ [ตัวอย่างเพิ่มเติม](https://online.stat.psu.edu/stat501/lesson/9/9.8) ของข้อมูลที่สามารถใช้ Polynomial Regression ได้ -ลองดูความสัมพันธ์ระหว่าง Date กับ Price อีกครั้ง พล็อตแบบกระจายนี้ดูเหมือนควรได้รับการวิเคราะห์ด้วยเส้นตรงใช่ไหม? ราคาสามารถเปลี่ยนแปลงขึ้นลงได้หรือเปล่า? ในกรณีนี้คุณสามารถลองใช้ Polynomial Regression ได้ +ลองดูความสัมพันธ์ระหว่าง Date และ Price อีกครั้ง กราฟกระจัดกระจายนี้ดูเหมือนว่าจะต้องวิเคราะห์โดยเส้นตรงเสมอหรือไม่? ราคาสามารถผันผวนได้หรือไม่? ในกรณีนี้ คุณสามารถลองใช้ polynomial regression ได้ -✅ พหุนามคือสมการคณิตศาสตร์ที่อาจประกอบด้วยตัวแปรหนึ่งตัวหรือมากกว่าและสัมประสิทธิ์ +✅ พหุนามคือสมการทางคณิตศาสตร์ที่ประกอบด้วยตัวแปรและสัมประสิทธิ์หนึ่งตัวหรือมากกว่า -Polynomial regression สร้างเส้นโค้งเพื่อให้พอดีกับข้อมูลที่ไม่เชิงเส้นได้ดีขึ้น ในกรณีของเรา ถ้าเราเพิ่มตัวแปร `DayOfYear` กำลังสองลงในการป้อนข้อมูล เราควรจะสามารถพอดีกับข้อมูลของเราด้วยเส้นโค้งพาราโบลาที่มีค่าต่ำสุดในจุดหนึ่งภายในปีได้ +Polynomial regression จะสร้างเส้นโค้งเพื่อให้เหมาะกับข้อมูลที่ไม่เชิงเส้นได้ดีขึ้น ในกรณีของเรา หากเรารวมตัวแปร `DayOfYear` กำลังสองเข้าไปในข้อมูลอินพุต เราจะสามารถฟิตข้อมูลด้วยเส้นโค้งรูปพาราโบลา ซึ่งจะมีจุดต่ำสุดในช่วงเวลาหนึ่งของปี -Scikit-learn มี [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ที่ช่วยรวมขั้นตอนการประมวลผลข้อมูลต่างๆ เข้าด้วยกัน **pipeline** คือสายโซ่ของ **estimators** ในกรณีของเรา เราจะสร้าง pipeline ที่เพิ่มคุณลักษณะพหุนามให้กับโมเดลก่อน แล้วค่อยฝึกถดถอย: +Scikit-learn มี [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ที่ช่วยให้รวมขั้นตอนการประมวลผลข้อมูลต่าง ๆ เข้าด้วยกันได้ **pipeline** คือสายโซ่ของ **estimators** ในกรณีของเรา เราจะสร้าง pipeline ที่เพิ่มคุณสมบัติพหุนามเข้าสู่โมเดลก่อน จากนั้นจึงฝึกเส้นถดถอย: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -การใช้ `PolynomialFeatures(2)` หมายความว่าเราจะรวมพหุนามอันดับสองทั้งหมดจากข้อมูลนำเข้า ในกรณีของเรา จะหมายถึง `DayOfYear`2 เท่านั้น แต่ถ้ามีตัวแปรนำเข้า X และ Y สองตัว จะเพิ่ม X2, XY และ Y2 ลงไปด้วย เราสามารถใช้พหุนามลำดับสูงกว่านี้ได้ถ้าต้องการ +การใช้ `PolynomialFeatures(2)` หมายความว่าเราจะรวมพหุนามของตัวแปรอินพุตที่มีดีกรีสองทั้งหมด ในกรณีของเราหมายถึงแค่ `DayOfYear`2 แต่ถ้ามีตัวแปรอินพุตสองตัวคือ X และ Y จะเพิ่ม X2 , XY และ Y2 นอกจากนี้เรายังสามารถใช้พหุนามที่มีดีกรีสูงกว่าถ้าต้องการ + +Pipeline สามารถใช้เหมือนอ็อบเจกต์ `LinearRegression` ดั้งเดิมได้ เช่น เราสามารถ `fit` pipeline แล้วใช้ `predict` เพื่อรับผลลัพธ์การทำนาย: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +เพื่อวาดกราฟเส้นโค้งประมาณอย่างราบรื่น เราใช้ `np.linspace` เพื่อสร้างช่วงอินพุตที่สม่ำเสมอ แทนการวาดบนข้อมูลทดสอบที่ไม่เรียงลำดับโดยตรง (ซึ่งจะได้เส้นซิกแซก): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline สามารถใช้เหมือนกับอ็อบเจ็กต์ `LinearRegression` เดิม เช่น เราสามารถ `fit` pipeline แล้วใช้ `predict` เพื่อรับผลการทำนาย นี่คือกราฟที่แสดงข้อมูลทดสอบ และเส้นโค้งประมาณค่า: +นี่คือกราฟแสดงข้อมูลทดสอบและเส้นโค้งประมาณ: Polynomial regression -ใช้ Polynomial Regression เราจะได้ค่า MSE ต่ำลงเล็กน้อยและค่าการกำหนดสูงขึ้น แต่ไม่มากนัก เราจำเป็นต้องพิจารณาคุณลักษณะอื่นด้วย! +การใช้ Polynomial Regression จะช่วยลด RMSE ลงเล็กน้อยและเพิ่มค่าค่าสัมประสิทธิ์การกำหนด แต่ไม่มากนัก เราต้องพิจารณาคุณสมบัติอื่น ๆ ด้วย! -> คุณเห็นไหมว่าราคาฟักทองต่ำสุดจะอยู่ช่วงราวๆ ฮาโลวีน คุณอธิบายเรื่องนี้อย่างไร? +> คุณเห็นราคาฟักทองต่ำสุดอยู่บริเวณวันฮาโลวีนใช่ไหม? คุณอธิบายเรื่องนี้อย่างไร? -🎃 ยินดีด้วย คุณเพิ่งสร้างโมเดลที่ช่วยทำนายราคาฟักทองพายได้แล้ว คุณอาจจะทำซ้ำขั้นตอนเดียวกันนี้สำหรับฟักทองชนิดอื่นๆ แต่คงจะน่าเบื่อ เรามาเรียนรู้วิธีนำหลายชนิดฟักทองมาใช้ในโมเดลกัน! +🎃 ยินดีด้วย คุณเพิ่งสร้างโมเดลที่ช่วยทำนายราคาฟักทองพายได้ คุณสามารถทำซ้ำขั้นตอนนี้สำหรับฟักทองชนิดอื่นได้ แต่จะทำงานหนักมาก ตอนนี้เรามาเรียนรู้วิธีจัดการกับพันธุ์ฟักทองในโมเดลของเรากันเถอะ! -## คุณลักษณะเชิงกลุ่ม (Categorical Features) +## คุณสมบัติแบบเชิงหมวดหมู่ (Categorical Features) -ในโลกที่สมบูรณ์แบบ เราต้องการทำนายราคาสำหรับฟักทองชนิดต่างๆโดยใช้โมเดลเดียวกัน อย่างไรก็ตาม คอลัมน์ `Variety` แตกต่างจากคอลัมน์เช่น `Month` เพราะมีค่าที่ไม่ใช่ตัวเลข คอลัมน์เหล่านี้เรียกว่า **เชิงหมวดหมู่ (categorical)** +ในโลกที่สมบูรณ์แบบ เราต้องการทำนายราคาสำหรับฟักทองหลากหลายพันธุ์โดยใช้โมเดลเดียวกัน อย่างไรก็ตาม คอลัมน์ `Variety` จะแตกต่างจากคอลัมน์ เช่น `Month` เพราะมีค่าที่ไม่ใช่ตัวเลข คอลัมน์เหล่านี้เรียกว่า **categorical** [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ เกี่ยวกับการใช้คุณลักษณะเชิงหมวดหมู่ +> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอแนะนำสั้น ๆ เกี่ยวกับการใช้คุณสมบัติแบบเชิงหมวดหมู่ -นี่คือภาพแสดงว่าราคากลางขึ้นอยู่กับชนิดฟักทองอย่างไร: +นี่คือกราฟแสดงว่าราคากลางขึ้นอยู่กับพันธุ์ฟักทองอย่างไร: Average price by variety -เพื่อพิจารณาชนิดฟักทอง เราต้องแปลงค่าให้เป็นตัวเลข หรือที่เรียกว่า **การเข้ารหัส (encoding)** มีหลายวิธีที่เราทำได้: +เพื่อพิจารณาพันธุ์ฟักทอง เราจำเป็นต้องแปลงข้อมูลเป็นรูปแบบตัวเลข หรือที่เรียกว่า **encoding** ซึ่งมีหลายวิธีดังนี้: -* การ **เข้ารหัสเชิงตัวเลขแบบง่ายๆ** จะสร้างตารางของชนิดฟักทองที่แตกต่างกัน แล้วแทนที่ชื่อชนิดด้วยดัชนีในตารางนั้น วิธีนี้ไม่เหมาะกับ Linear Regression เพราะ Linear Regression จะนำค่าตัวเลขของดัชนีไปคำนวณและคูณด้วยสัมประสิทธิ์ ในกรณีของเรา ความสัมพันธ์ระหว่างหมายเลขดัชนีและราคาไม่เป็นเชิงเส้นชัดเจน แม้เราจะจัดเรียงดัชนีให้อยู่ตามลำดับเฉพาะก็ตาม -* การ **เข้ารหัสแบบ one-hot** จะแทนที่คอลัมน์ `Variety` ด้วย 4 คอลัมน์แยกต่างหาก หนึ่งคอลัมน์สำหรับแต่ละชนิด แต่ละคอลัมน์จะมีค่าเป็น `1` ถ้าแถวตรงกับชนิดนั้น และ `0` ในกรณีอื่นๆ ซึ่งหมายความว่าจะมีสี่สัมประสิทธิ์ใน Linear Regression หนึ่งสัมประสิทธิ์สำหรับแต่ละชนิดฟักทอง รับหน้าที่เป็น "ราคาฐาน" (หรือจริงๆ คือ "ราคาที่เพิ่มขึ้น") สำหรับชนิดนั้น +* การ **เข้ารหัสตัวเลขอย่างง่าย** จะสร้างตารางของพันธุ์ต่าง ๆ แล้วแทนชื่อพันธุ์ด้วยดัชนีในตารางนั้น แต่วิธีนี้ไม่เหมาะกับ linear regression เพราะ linear regression จะใช้ค่าตัวเลขจริงของดัชนีและนำไปคูณกับสัมประสิทธิ์ ในกรณีของเรา ความสัมพันธ์ระหว่างดัชนีและราคาชัดเจนว่าไม่เป็นเชิงเส้น แม้เราจะจัดลำดับดัชนีอย่างระมัดระวัง +* การ **เข้ารหัสแบบ one-hot** จะเปลี่ยนคอลัมน์ `Variety` เป็นสี่คอลัมน์ คือแต่ละพันธุ์ มีค่า `1` หากแถวที่สอดคล้องเป็นพันธุ์นั้น และ `0` ถ้าไม่ใช่ หมายความว่าจะมีสี่ค่าสัมประสิทธิ์ในการถดถอยเชิงเส้น สำหรับแต่ละพันธุ์โดยรับผิดชอบต่อ "ราคาตั้งต้น" (หรือ "ราคาพิเศษ") สำหรับพันธุ์นั้น ๆ -ตัวอย่างโค้ดด้านล่างแสดงวิธีการเข้ารหัสชนิดฟักทองแบบ one-hot: +โค้ดด้านล่างนี้แสดงวิธีการ one-hot encode พันธุ์ฟักทอง: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -ในการฝึก Linear Regression โดยใช้ชนิดฟักทองที่เข้ารหัสแบบ one-hot เป็นอินพุต เราเพียงแค่ต้องกำหนดค่า `X` และ `y` ให้ถูกต้อง: +เพื่อฝึก Linear Regression โดยใช้ข้อมูลพันธุ์ที่ถูก one-hot encode เป็นอินพุต เราเพียงแค่ต้องนิยามข้อมูล `X` และ `y` ให้ถูกต้อง: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -ส่วนที่เหลือของโค้ดยังคงเหมือนกับที่เราใช้ด้านบนในการฝึก Linear Regression หากทำตามนี้ คุณจะเห็นว่า mean squared error ประมาณเท่าเดิม แต่ค่าสัมประสิทธิ์การกำหนดเพิ่มขึ้นสูงมาก (~77%) เพื่อให้ได้การทำนายที่แม่นยำขึ้นอีก เราสามารถนำคุณลักษณะเชิงกลุ่มอื่นๆ รวมทั้งคุณลักษณะเชิงตัวเลข เช่น `Month` หรือ `DayOfYear` มารวมกันได้ โดยใช้ `join`: +ส่วนที่เหลือของโค้ดยังคงเหมือนเดิมกับที่เราใช้ฝึก Linear Regression หากลองทำจะพบว่าค่าเฉลี่ยของความผิดพลาดกำลังสองไม่เปลี่ยนแปลงมากนักแต่ค่าสัมประสิทธิ์การกำหนดสูงขึ้นมาก (~77%) เพื่อให้ทำนายได้แม่นยำยิ่งขึ้น เราสามารถนำคุณสมบัติเชิงหมวดหมู่อื่น ๆ เข้ามาร่วมกับคุณสมบัติตัวเลข เช่น `Month` หรือ `DayOfYear` เพื่อรวมคุณสมบัติทั้งหมดเป็นอาเรย์เดียวโดยใช้ `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,62 +341,62 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -ที่นี่เรายังคำนึงถึง `City` และชนิด `Package` ซึ่งทำให้ได้ MSE เป็น 2.84 (10%) และค่าสัมประสิทธิ์การกำหนด 0.94! +ที่นี่เรายังพิจารณา `City` และประเภท `Package` ด้วย ซึ่งให้ผล RMSE 2.84 (10.5%) และค่าสัมประสิทธิ์การกำหนด 0.94! -## รวบรวมทั้งหมดเข้าด้วยกัน +## สรุปรวมทั้งหมด -เพื่อสร้างโมเดลที่ดีที่สุด เราสามารถใช้ข้อมูลรวม (ข้อมูลเชิงกลุ่มแบบ one-hot และเชิงตัวเลข) จากตัวอย่างด้านบนร่วมกับ Polynomial Regression นี่คือโค้ดครบถ้วนเพื่อความสะดวกของคุณ: +เพื่อสร้างโมเดลที่ดีที่สุด เราสามารถใช้ข้อมูลรวม (categorical แบบ one-hot encoded + ตัวเลข) จากตัวอย่างข้างต้นร่วมกับ Polynomial Regression นี่คือตัวอย่างโค้ดครบถ้วนเพื่อความสะดวกของคุณ: ```python -# ตั้งค่าข้อมูลฝึกอบรม +# ตั้งค่าข้อมูลสำหรับการฝึก X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# แบ่งข้อมูลเป็นชุดฝึกและทดสอบ +# แบ่งข้อมูลเป็นชุดฝึกและชุดทดสอบ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# ตั้งค่าและฝึกท่อประมวลผล +# ตั้งค่าและฝึก pipeline pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# ทำนายผลลัพธ์สำหรับข้อมูลทดสอบ +# ทำนายผลสำหรับข้อมูลทดสอบ pred = pipeline.predict(X_test) -# คำนวณ MSE และค่าการกำหนด -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# คำนวณค่า RMSE และค่าตัวกำหนด +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -โมเดลนี้ควรให้ค่าสัมประสิทธิ์การกำหนดที่ดีที่สุดเกือบ 97% และ MSE=2.23 (~8% ความผิดพลาดในการทำนาย) +ซึ่งจะให้ค่าสัมประสิทธิ์การกำหนดที่ดีที่สุดเกือบ 97% และ RMSE=2.23 (~8% ความผิดพลาดในการทำนาย) -| โมเดล | MSE | ค่าสัมประสิทธิ์การกำหนด | -|-------|-----|---------------| +| โมเดล | RMSE | ค่าสัมประสิทธิ์การกำหนด | +|-------|-----|---------------------------| | `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | | `Variety` Linear | 5.24 (19.7%) | 0.77 | -| ทุกคุณลักษณะ Linear | 2.84 (10.5%) | 0.94 | -| ทุกคุณลักษณะ Polynomial | 2.23 (8.25%) | 0.97 | +| คุณสมบัติทั้งหมด Linear | 2.84 (10.5%) | 0.94 | +| คุณสมบัติทั้งหมด Polynomial | 2.23 (8.25%) | 0.97 | -🏆 เยี่ยมมาก! คุณสร้างโมเดล Regression สี่โมเดลในบทเรียนเดียว และเพิ่มคุณภาพของโมเดลถึง 97% ในส่วนสุดท้ายของบทเรียน Regression คุณจะได้เรียนรู้ Logistic Regression สำหรับการจำแนกประเภท +🏆 เยี่ยมมาก! คุณสร้างโมเดล Regression ถึงสี่แบบในบทเรียนเดียวและปรับปรุงคุณภาพโมเดลให้ถึง 97% ในส่วนสุดท้ายของบทเรียนเกี่ยวกับ Regression คุณจะได้เรียนรู้ Logistic Regression เพื่อกำหนดประเภท --- ## 🚀ความท้าทาย -ลองทดสอบตัวแปรหลายๆ ตัวในสมุดงานนี้เพื่อดูว่าความสัมพันธ์ส่งผลต่อความแม่นยำของโมเดลอย่างไร +ทดสอบตัวแปรต่าง ๆ หลายตัวในโน้ตบุ๊กนี้เพื่อดูว่า ความสัมพันธ์เชิงสหสัมพันธ์ส่งผลอย่างไรต่อความแม่นยำของโมเดล -## [แบบทดสอบหลังเรียน](https://ff-quizzes.netlify.app/en/ml/) +## [แบบทดสอบหลังบทเรียน](https://ff-quizzes.netlify.app/en/ml/) ## ทบทวน & ศึกษาด้วยตนเอง -ในบทเรียนนี้ เราได้เรียนรู้เกี่ยวกับ Linear Regression ยังมีเทคนิค Regression ประเภทอื่นที่สำคัญ อ่านเกี่ยวกับเทคนิค Stepwise, Ridge, Lasso และ Elasticnet คอร์สดีๆ ที่แนะนำให้อ่านเพิ่มเติมคือ [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +ในบทเรียนนี้เราได้เรียนรู้เกี่ยวกับ Linear Regression ยังมีประเภทสำคัญอื่น ๆ ของ Regression ได้แก่ Stepwise, Ridge, Lasso และ Elasticnet ศึกษาต่อในหลักสูตรที่ดีได้ที่ [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## การบ้าน +## การบ้าน [สร้างโมเดล](assignment.md) @@ -383,5 +404,5 @@ print('Model determination: ', score) **ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้ข้อมูลถูกต้องที่สุด โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถูกพิจารณาเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญแนะนำให้ใช้บริการแปลมืออาชีพโดยมนุษย์ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้มีความถูกต้อง โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญ แนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใดๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/2-Regression/3-Linear/solution/notebook.ipynb b/translations/th/2-Regression/3-Linear/solution/notebook.ipynb index 1f864da24d..2089ebe028 100644 --- a/translations/th/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/th/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## การวิเคราะห์เชิงเส้นและพหุนามสำหรับการตั้งราคาฟักทอง - บทเรียนที่ 3\n", + "## การถดถอยเชิงเส้นและพหุนามสำหรับการตั้งราคาฟักทอง - บทที่ 3\n", "\n", - "โหลดไลบรารีและชุดข้อมูลที่จำเป็น จากนั้นแปลงข้อมูลให้เป็น DataFrame ที่มีเพียงส่วนย่อยของข้อมูล:\n", + "โหลดไลบรารีและชุดข้อมูลที่จำเป็น แปลงข้อมูลเป็น dataframe ที่มีข้อมูลย่อยบางส่วน:\n", "\n", - "- เลือกเฉพาะฟักทองที่ตั้งราคาเป็นหน่วย bushel\n", - "- แปลงวันที่ให้เป็นเดือน\n", - "- คำนวณราคาให้เป็นค่าเฉลี่ยระหว่างราคาสูงสุดและต่ำสุด\n", - "- แปลงราคาให้สะท้อนถึงการตั้งราคาต่อปริมาณในหน่วย bushel\n" + "- ดึงเฉพาะฟักทองที่ตั้งราคาตามบัชเชิล\n", + "- แปลงวันที่เป็นเดือน\n", + "- คำนวณราคาจากค่าเฉลี่ยของราคาสูงสุดและต่ำสุด\n", + "- แปลงราคาให้สะท้อนการตั้งราคาตามปริมาณบัชเชิล\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "แผนภาพกระจายเตือนเราว่าเรามีข้อมูลรายเดือนเฉพาะตั้งแต่เดือนสิงหาคมถึงเดือนธันวาคม เราอาจต้องการข้อมูลเพิ่มเติมเพื่อที่จะสรุปผลในรูปแบบเชิงเส้น\n" + "แผนภาพกระจายเตือนเราว่าเรามีข้อมูลเฉพาะเดือนสิงหาคมถึงธันวาคมเท่านั้น เราอาจต้องการข้อมูลเพิ่มเติมเพื่อที่จะสรุปผลในลักษณะเชิงเส้นได้\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ลองดูว่ามีความสัมพันธ์กันหรือไม่:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ดูเหมือนว่าความสัมพันธ์จะค่อนข้างน้อย แต่มีความสัมพันธ์อื่นที่สำคัญกว่า - เพราะจุดราคาบนกราฟด้านบนดูเหมือนจะมีการจัดกลุ่มที่แตกต่างกันหลายกลุ่ม ลองสร้างกราฟที่แสดงพันธุ์ฟักทองที่แตกต่างกัน:\n" + "ดูเหมือนว่าความสัมพันธ์จะค่อนข้างน้อย แต่มีความสัมพันธ์อื่นที่สำคัญกว่า - เพราะจุดราคาที่กราฟด้านบนดูเหมือนจะมีหลายกลุ่มชัดเจน มาเขียนกราฟที่แสดงพันธุ์ฟักทองต่างๆ กัน:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ในขณะนี้ มามุ่งเน้นที่ประเภทเดียวกันเท่านั้น - **ชนิดพาย**.\n" + ] }, { "cell_type": "code", @@ -661,7 +665,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "ความชันของเส้นสามารถกำหนดได้จากสัมประสิทธิ์การถดถอยเชิงเส้น:\n" + ] }, { "cell_type": "code", @@ -686,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "เราสามารถใช้โมเดลที่ผ่านการฝึกมาแล้วในการทำนายราคาได้:\n" + ] }, { "cell_type": "code", @@ -714,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### การถดถอยเชิงพหุนาม\n", + "### การถดถอยแบบพหุนาม\n", "\n", - "บางครั้งความสัมพันธ์ระหว่างคุณลักษณะและผลลัพธ์อาจไม่เป็นเชิงเส้นโดยธรรมชาติ ตัวอย่างเช่น ราคาฟักทองอาจสูงในฤดูหนาว (เดือน 1, 2) จากนั้นลดลงในฤดูร้อน (เดือน 5-7) และกลับมาสูงขึ้นอีกครั้ง การถดถอยเชิงเส้นไม่สามารถจับความสัมพันธ์นี้ได้อย่างแม่นยำ\n", + "บางครั้งความสัมพันธ์ระหว่างคุณลักษณะและผลลัพธ์เป็นแบบไม่เชิงเส้นโดยเนื้อแท้ ตัวอย่างเช่น ราคาฟักทองอาจสูงในฤดูหนาว (เดือน=1,2) จากนั้นลดลงในฤดูร้อน (เดือน=5-7) และจากนั้นก็เพิ่มขึ้นอีกครั้ง การถดถอยเชิงเส้นไม่สามารถหา ความสัมพันธ์นี้ได้อย่างแม่นยำ\n", "\n", - "ในกรณีนี้ เราอาจพิจารณาเพิ่มคุณลักษณะเพิ่มเติม วิธีง่ายๆ คือการใช้พหุนามจากคุณลักษณะอินพุต ซึ่งจะนำไปสู่ **การถดถอยเชิงพหุนาม** ใน Scikit Learn เราสามารถคำนวณคุณลักษณะพหุนามล่วงหน้าโดยอัตโนมัติด้วยการใช้ pipelines:\n" + "ในกรณีนี้ เราอาจพิจารณาเพิ่มคุณลักษณะเพิ่มเติม วิธีง่ายๆ คือใช้พหุนามจากคุณลักษณะนำเข้า ซึ่งจะทำให้เกิด **การถดถอยแบบพหุนาม** ใน Scikit Learn เราสามารถคำนวณคุณลักษณะพหุนามล่วงหน้าได้โดยอัตโนมัติด้วยการใช้ pipeline: \n" ] }, { @@ -773,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### การเข้ารหัสชนิดต่าง ๆ\n", + "### Encoding varieties\n", "\n", - "ในโลกที่สมบูรณ์แบบ เราต้องการที่จะสามารถทำนายราคาของฟักทองชนิดต่าง ๆ โดยใช้โมเดลเดียวกัน เพื่อที่จะนำชนิดของฟักทองมาพิจารณา เราจำเป็นต้องแปลงมันให้อยู่ในรูปแบบตัวเลข หรือที่เรียกว่า **การเข้ารหัส** มีหลายวิธีที่เราสามารถทำได้:\n", + "ในโลกอุดมคติ เราต้องการที่จะสามารถทำนายราคาของฟักทองพันธุ์ต่างๆ โดยใช้โมเดลเดียวกัน เพื่อพิจารณาพันธุ์ เราต้องแปลงข้อมูลพันธุ์ให้อยู่ในรูปแบบตัวเลข หรือ **เข้ารหัส** ก่อน มีวิธีการหลายแบบที่เราสามารถทำได้:\n", "\n", - "* การเข้ารหัสตัวเลขแบบง่าย ซึ่งจะสร้างตารางของชนิดฟักทองต่าง ๆ แล้วแทนชื่อชนิดด้วยดัชนีในตารางนั้น วิธีนี้ไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับการวิเคราะห์ถดถอยเชิงเส้น (linear regression) เพราะการวิเคราะห์ถดถอยเชิงเส้นจะนำค่าตัวเลขของดัชนีมาพิจารณา และค่าตัวเลขนั้นอาจไม่มีความสัมพันธ์เชิงตัวเลขกับราคา\n", - "* การเข้ารหัสแบบ One-hot ซึ่งจะเปลี่ยนคอลัมน์ `Variety` ให้เป็น 4 คอลัมน์ที่แตกต่างกัน โดยแต่ละคอลัมน์จะเป็นตัวแทนของชนิดฟักทองแต่ละชนิด และจะมีค่าเป็น 1 หากแถวที่เกี่ยวข้องเป็นชนิดนั้น และมีค่าเป็น 0 หากไม่ใช่\n", + "* การเข้ารหัสตัวเลขง่ายๆ ที่จะสร้างตารางของพันธุ์ต่างๆ แล้วแทนที่ชื่อพันธุ์ด้วยดัชนีในตารางนั้น วิธีนี้ไม่เหมาะกับการถดถอยเชิงเส้น เพราะการถดถอยเชิงเส้นจะเอาค่าตัวเลขของดัชนีมาใช้ ซึ่งค่าตัวเลขนี้อาจไม่มีความสัมพันธ์เชิงตัวเลขกับราคา\n", + "* การเข้ารหัสแบบ one-hot encoding ที่จะแทนคอลัมน์ `Variety` ด้วยคอลัมน์ 4 คอลัมน์สำหรับแต่ละพันธุ์ โดยแต่ละคอลัมน์จะมีค่า 1 ถ้าแถวที่ตรงกันเป็นพันธุ์นั้น และ 0 ถ้าไม่ใช่\n", "\n", - "โค้ดด้านล่างแสดงวิธีที่เราสามารถเข้ารหัสชนิดฟักทองแบบ One-hot:\n" + "โค้ดข้างล่างจะแสดงวิธีการเข้ารหัสแบบ one-hot encoding สำหรับพันธุ์:\n" ] }, { @@ -936,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### การถดถอยเชิงเส้นบนชนิดพันธุ์\n", + "### การถดถอยเชิงเส้นบนพันธุ์\n", "\n", - "ตอนนี้เราจะใช้โค้ดเดิมเหมือนข้างต้น แต่แทนที่จะใช้ `DayOfYear` เราจะใช้ชนิดพันธุ์ที่ผ่านการเข้ารหัสแบบ one-hot เป็นข้อมูลนำเข้า:\n" + "เราจะใช้โค้ดเดียวกับข้างต้น แต่แทนที่จะใช้ `DayOfYear` เราจะใช้พันธุ์ที่เข้ารหัสแบบวัน-ฮอตเป็นอินพุต:\n" ] }, { @@ -986,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "เรายังสามารถลองใช้คุณสมบัติอื่นในลักษณะเดียวกัน และรวมเข้ากับคุณสมบัติทางตัวเลข เช่น `Month` หรือ `DayOfYear`:\n" + "เราสามารถลองใช้คุณสมบัติอื่นๆ ในลักษณะเดียวกัน และผสมผสานกับคุณสมบัติตัวเลข เช่น `Month` หรือ `DayOfYear`:\n" ] }, { @@ -1017,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### การถดถอยเชิงพหุนาม\n", + "### การถดถอยพหุนาม\n", "\n", - "การถดถอยเชิงพหุนามสามารถนำมาใช้กับคุณลักษณะเชิงหมวดหมู่ที่ผ่านการเข้ารหัสแบบ one-hot ได้เช่นกัน โค้ดสำหรับการฝึกการถดถอยเชิงพหุนามจะมีลักษณะเหมือนกับที่เราได้เห็นไปก่อนหน้านี้\n" + "การถดถอยพหุนามสามารถใช้กับคุณลักษณะประเภทตัวแปรตามหมวดหมู่ที่ถูกเข้ารหัสแบบหนึ่งร้อน (one-hot-encoded) ได้เช่นกัน โค้ดสำหรับฝึกอบรมการถดถอยพหุนามจะเหมือนกับที่เราเห็นข้างต้นโดยพื้นฐานแล้ว\n" ] }, { @@ -1066,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**ข้อจำกัดความรับผิดชอบ**: \nเอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษาจากผู้เชี่ยวชาญ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้\n" + "---\n\n\n**ข้อจำกัดความรับผิดชอบ**: \nเอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาด้วย AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้การแปลโดยผู้เชี่ยวชาญมืออาชีพ เราจะไม่มีความรับผิดชอบใด ๆ ต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้\n\n" ] } ], @@ -1096,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:11:52+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "th" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From 55ff23341b1b82d5a1b97f3f18198f483c79480e Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 20:29:15 +0000 Subject: [PATCH 17/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/it/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 108 +++--- .../it/2-Regression/3-Linear/README.md | 235 +++++++------ .../3-Linear/solution/notebook.ipynb | 65 ++-- translations/pl/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 108 +++--- .../pl/2-Regression/3-Linear/README.md | 266 ++++++++------- .../3-Linear/solution/notebook.ipynb | 67 ++-- translations/tr/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 114 +++---- .../tr/2-Regression/3-Linear/README.md | 310 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++-- 12 files changed, 741 insertions(+), 643 deletions(-) diff --git a/translations/it/.co-op-translator.json b/translations/it/.co-op-translator.json index d0c276b164..3fb9b40e0e 100644 --- a/translations/it/.co-op-translator.json +++ b/translations/it/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "it" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T07:33:25+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:26:22+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "it" }, @@ -90,8 +90,8 @@ "language_code": "it" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:25:10+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:25:49+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "it" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "it" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:23:45+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "it" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T07:26:14+00:00", diff --git a/translations/it/1-Introduction/4-techniques-of-ML/README.md b/translations/it/1-Introduction/4-techniques-of-ML/README.md index 95205733e3..12b500f034 100644 --- a/translations/it/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/it/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Tecniche di Machine Learning -Il processo di costruzione, utilizzo e manutenzione dei modelli di machine learning e dei dati che utilizzano è molto diverso rispetto a molti altri flussi di lavoro di sviluppo. In questa lezione, demistificheremo il processo e delineeremo le principali tecniche che devi conoscere. Imparerai a: +Il processo di costruzione, utilizzo e manutenzione di modelli di machine learning e dei dati che utilizzano è un processo molto diverso da molti altri flussi di lavoro di sviluppo. In questa lezione, demistificheremo il processo e delineeremo le principali tecniche che devi conoscere. Tu: -- Comprendere i processi alla base del machine learning a un livello generale. -- Esplorare concetti di base come "modelli", "previsioni" e "dati di addestramento". +- Comprenderai i processi alla base del machine learning a un livello alto. +- Esplorerai concetti di base come 'modelli', 'predizioni' e 'dati di addestramento'. ## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ml/) -[![ML per principianti - Tecniche di Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML per principianti - Tecniche di Machine Learning") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Clicca sull'immagine sopra per un breve video che illustra questa lezione. +> 🎥 Clicca sull'immagine sopra per un breve video che spiega questa lezione. ## Introduzione -A un livello generale, l'arte di creare processi di machine learning (ML) si compone di diversi passaggi: +A un livello alto, l'arte di creare processi di machine learning (ML) è composta da diversi passi: -1. **Decidere la domanda**. La maggior parte dei processi di ML inizia ponendo una domanda che non può essere risolta con un semplice programma condizionale o un motore basato su regole. Queste domande spesso riguardano previsioni basate su una raccolta di dati. -2. **Raccogliere e preparare i dati**. Per rispondere alla tua domanda, hai bisogno di dati. La qualità e, a volte, la quantità dei tuoi dati determineranno quanto bene potrai rispondere alla domanda iniziale. La visualizzazione dei dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento e uno di test per costruire un modello. -3. **Scegliere un metodo di addestramento**. A seconda della tua domanda e della natura dei tuoi dati, devi scegliere come addestrare un modello per riflettere al meglio i dati e fare previsioni accurate. Questa parte del processo di ML richiede competenze specifiche e, spesso, una notevole quantità di sperimentazione. -4. **Addestrare il modello**. Utilizzando i tuoi dati di addestramento, userai vari algoritmi per addestrare un modello a riconoscere schemi nei dati. Il modello potrebbe utilizzare pesi interni che possono essere regolati per privilegiare alcune parti dei dati rispetto ad altre, al fine di costruire un modello migliore. -5. **Valutare il modello**. Utilizzi dati mai visti prima (i tuoi dati di test) dal set raccolto per verificare le prestazioni del modello. -6. **Ottimizzazione dei parametri**. In base alle prestazioni del modello, puoi ripetere il processo utilizzando parametri o variabili diversi che controllano il comportamento degli algoritmi utilizzati per addestrare il modello. -7. **Prevedere**. Usa nuovi input per testare l'accuratezza del modello. +1. **Decidi la domanda**. La maggior parte dei processi di ML inizia con una domanda che non può essere risposta da un semplice programma condizionale o da un motore basato su regole. Queste domande spesso ruotano attorno a predizioni basate su una raccolta di dati. +2. **Raccogli e prepara i dati**. Per poter rispondere alla tua domanda, hai bisogno di dati. La qualità e, a volte, la quantità dei tuoi dati determineranno quanto bene potrai rispondere alla tua domanda iniziale. Visualizzare i dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento e uno di test per costruire un modello. +3. **Scegli un metodo di addestramento**. A seconda della tua domanda e della natura dei tuoi dati, devi scegliere come vuoi addestrare un modello per riflettere al meglio i tuoi dati e fare predizioni accurate. Questa è la parte del tuo processo di ML che richiede competenze specifiche e, spesso, un considerevole numero di sperimentazioni. +4. **Addestra il modello**. Usando i tuoi dati di addestramento, utilizzerai vari algoritmi per addestrare un modello a riconoscere pattern nei dati. Il modello potrebbe sfruttare pesi interni che possono essere regolati per privilegiare certe parti dei dati rispetto ad altre per costruire un modello migliore. +5. **Valuta il modello**. Utilizzi dati che non ha mai visto prima (i dati di test) dal tuo set raccolto per vedere come il modello sta performando. +6. **Ottimizzazione dei parametri**. Basandoti sulle prestazioni del tuo modello, puoi ripetere il processo utilizzando parametri diversi, o variabili, che controllano il comportamento degli algoritmi usati per addestrare il modello. +7. **Predici**. Usa nuovi input per testare la precisione del tuo modello. ## Quale domanda porre -I computer sono particolarmente abili nel scoprire schemi nascosti nei dati. Questa capacità è molto utile per i ricercatori che hanno domande su un determinato dominio che non possono essere facilmente risolte creando un motore basato su regole condizionali. Dato un compito attuariale, ad esempio, un data scientist potrebbe essere in grado di costruire regole artigianali sulla mortalità dei fumatori rispetto ai non fumatori. +I computer sono particolarmente abili nel scoprire pattern nascosti nei dati. Questa utilità è molto utile per i ricercatori che hanno domande su un determinato dominio che non possono essere facilmente risposte creando un motore basato su regole condizionali. Dato un compito attuariale, per esempio, uno scienziato dei dati potrebbe essere in grado di costruire regole artigianali riguardo alla mortalità di fumatori vs non fumatori. -Quando però vengono introdotte molte altre variabili, un modello di ML potrebbe dimostrarsi più efficiente nel prevedere i tassi di mortalità futuri basandosi sulla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una determinata località basandosi su dati che includono latitudine, longitudine, cambiamenti climatici, vicinanza all'oceano, schemi delle correnti a getto e altro. +Quando molte altre variabili sono portate nell'equazione, tuttavia, un modello ML potrebbe rivelarsi più efficiente per predire i tassi di mortalità futuri basati sulla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una data località basandosi su dati che includono latitudine, longitudine, cambiamento climatico, prossimità all'oceano, schemi del getto d'aria e altro. -✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sui modelli meteorologici offre una prospettiva storica sull'uso del ML nell'analisi meteorologica. +✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sui modelli meteo offre una prospettiva storica sull'uso del ML nell'analisi meteorologica. -## Attività preliminari alla costruzione +## Compiti preliminari alla costruzione -Prima di iniziare a costruire il tuo modello, ci sono diverse attività che devi completare. Per testare la tua domanda e formulare un'ipotesi basata sulle previsioni di un modello, devi identificare e configurare diversi elementi. +Prima di iniziare a costruire il tuo modello, ci sono diversi compiti che devi completare. Per testare la tua domanda e formare un'ipotesi basata sulle predizioni di un modello, devi identificare e configurare diversi elementi. ### Dati -Per rispondere alla tua domanda con un certo grado di certezza, hai bisogno di una buona quantità di dati del tipo giusto. Ci sono due cose che devi fare a questo punto: +Per poter rispondere alla tua domanda con una certa certezza, hai bisogno di una buona quantità di dati del tipo giusto. Ci sono due cose che devi fare a questo punto: -- **Raccogliere i dati**. Tenendo a mente la lezione precedente sull'equità nell'analisi dei dati, raccogli i tuoi dati con attenzione. Sii consapevole delle fonti di questi dati, di eventuali bias intrinseci e documenta la loro origine. -- **Preparare i dati**. Ci sono diversi passaggi nel processo di preparazione dei dati. Potresti dover unire i dati e normalizzarli se provengono da fonti diverse. Puoi migliorare la qualità e la quantità dei dati attraverso vari metodi, come convertire stringhe in numeri (come facciamo in [Clustering](../../5-Clustering/1-Visualize/README.md)). Potresti anche generare nuovi dati basandoti sugli originali (come facciamo in [Classificazione](../../4-Classification/1-Introduction/README.md)). Puoi pulire e modificare i dati (come faremo prima della lezione sull'[App Web](../../3-Web-App/README.md)). Infine, potresti anche doverli randomizzare e mescolare, a seconda delle tecniche di addestramento. +- **Raccogliere dati**. Tenendo a mente la lezione precedente sull'equità nell'analisi dei dati, raccogli i tuoi dati con cura. Sii consapevole delle fonti di questi dati, di eventuali bias intrinseci e documenta la loro origine. +- **Preparare i dati**. Ci sono diversi passi nel processo di preparazione dei dati. Potresti dover raccogliere dati e normalizzarli se provengono da fonti diverse. Puoi migliorare la qualità e la quantità dei dati tramite vari metodi come convertire stringhe in numeri (come facciamo in [Clustering](../../5-Clustering/1-Visualize/README.md)). Potresti anche generare nuovi dati, basati su quelli originali (come facciamo in [Classification](../../4-Classification/1-Introduction/README.md)). Puoi pulire e modificare i dati (come faremo prima della lezione [Web App](../../3-Web-App/README.md)). Infine, potresti anche doverli randomizzare e mescolarli, a seconda delle tecniche di addestramento. -✅ Dopo aver raccolto e processato i tuoi dati, prenditi un momento per verificare se la loro struttura ti permetterà di affrontare la domanda che intendi porre. Potrebbe essere che i dati non funzionino bene per il tuo compito, come scopriamo nelle lezioni su [Clustering](../../5-Clustering/1-Visualize/README.md)! +✅ Dopo aver raccolto e processato i tuoi dati, prenditi un momento per vedere se la loro forma ti permetterà di affrontare la tua domanda prevista. Potrebbe risultare che i dati non si comportino bene nel compito assegnato, come scopriamo nelle nostre lezioni di [Clustering](../../5-Clustering/1-Visualize/README.md)! -### Caratteristiche e Target +### Caratteristiche e Obiettivo -Una [caratteristica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) è una proprietà misurabile dei tuoi dati. In molti dataset è espressa come intestazione di colonna, ad esempio 'data', 'dimensione' o 'colore'. La tua variabile caratteristica, solitamente rappresentata come `X` nel codice, rappresenta la variabile di input che verrà utilizzata per addestrare il modello. +Una [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) è una proprietà misurabile dei tuoi dati. In molti dataset è espressa come intestazione di colonna come 'data', 'dimensione' o 'colore'. La tua variabile feature, di solito rappresentata come `X` nel codice, rappresenta la variabile di input che sarà usata per addestrare un modello. -Un target è ciò che stai cercando di prevedere. Il target, solitamente rappresentato come `y` nel codice, rappresenta la risposta alla domanda che stai cercando di porre ai tuoi dati: a dicembre, quale **colore** di zucche sarà il più economico? A San Francisco, quali quartieri avranno il miglior **prezzo** immobiliare? A volte il target è anche chiamato attributo etichetta. +Un obiettivo è ciò che stai cercando di prevedere. L'obiettivo, di solito rappresentato come `y` nel codice, rappresenta la risposta alla domanda che stai cercando di porre ai tuoi dati: a dicembre, quali **colori** di zucche saranno i più economici? A San Francisco, quali quartieri avranno il miglior **prezzo** immobiliare? A volte l'obiettivo è anche chiamato attributo etichetta. -### Selezionare la variabile caratteristica +### Selezionare la variabile feature -🎓 **Selezione delle caratteristiche ed Estrazione delle caratteristiche** Come fai a sapere quale variabile scegliere quando costruisci un modello? Probabilmente attraverserai un processo di selezione delle caratteristiche o estrazione delle caratteristiche per scegliere le variabili giuste per il modello più performante. Tuttavia, non sono la stessa cosa: "L'estrazione delle caratteristiche crea nuove caratteristiche da funzioni delle caratteristiche originali, mentre la selezione delle caratteristiche restituisce un sottoinsieme delle caratteristiche." ([fonte](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Selezione e estrazione delle feature** Come si fa a sapere quale variabile scegliere quando si costruisce un modello? Probabilmente passerai attraverso un processo di selezione o estrazione delle feature per scegliere le variabili giuste per il modello più performante. Tuttavia, non sono la stessa cosa: "L'estrazione delle feature crea nuove feature da funzioni delle feature originali, mentre la selezione delle feature restituisce un sottoinsieme delle feature." ([fonte](https://wikipedia.org/wiki/Feature_selection)) -### Visualizzare i dati +### Visualizza i tuoi dati -Un aspetto importante della cassetta degli attrezzi del data scientist è la capacità di visualizzare i dati utilizzando diverse librerie eccellenti come Seaborn o MatPlotLib. Rappresentare i dati visivamente potrebbe permetterti di scoprire correlazioni nascoste che puoi sfruttare. Le tue visualizzazioni potrebbero anche aiutarti a scoprire bias o dati sbilanciati (come scopriamo in [Classificazione](../../4-Classification/2-Classifiers-1/README.md)). +Un aspetto importante del toolkit dello scienziato dei dati è il potere di visualizzare i dati usando diverse ottime librerie come Seaborn o MatPlotLib. Rappresentare visivamente i tuoi dati potrebbe permetterti di scoprire correlazioni nascoste che puoi sfruttare. Le tue visualizzazioni potrebbero anche aiutarti a scoprire bias o dati sbilanciati (come scopriamo in [Classification](../../4-Classification/2-Classifiers-1/README.md)). -### Suddividere il dataset +### Suddividi il tuo dataset Prima dell'addestramento, devi suddividere il tuo dataset in due o più parti di dimensioni disuguali che rappresentino comunque bene i dati. -- **Addestramento**. Questa parte del dataset viene adattata al tuo modello per addestrarlo. Questo set costituisce la maggior parte del dataset originale. -- **Test**. Un dataset di test è un gruppo indipendente di dati, spesso raccolto dai dati originali, che utilizzi per confermare le prestazioni del modello costruito. -- **Validazione**. Un set di validazione è un gruppo indipendente più piccolo di esempi che utilizzi per ottimizzare i parametri del modello o la sua architettura, al fine di migliorarlo. A seconda della dimensione dei tuoi dati e della domanda che stai ponendo, potresti non aver bisogno di costruire questo terzo set (come notiamo in [Previsioni di Serie Temporali](../../7-TimeSeries/1-Introduction/README.md)). +- **Addestramento**. Questa parte del dataset viene adattata al tuo modello per addestrarlo. Questo set costituisce la maggioranza del dataset originale. +- **Test**. Un dataset di test è un gruppo indipendente di dati, spesso raccolti dal dato originale, che usi per confermare le prestazioni del modello costruito. +- **Validazione**. Un set di validazione è un gruppo indipendente più piccolo di esempi che usi per ottimizzare gli iperparametri del modello, o la sua architettura, per migliorarlo. A seconda delle dimensioni dei tuoi dati e della domanda che stai ponendo, potresti non aver bisogno di costruire questo terzo set (come notiamo in [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)). ## Costruire un modello -Utilizzando i tuoi dati di addestramento, il tuo obiettivo è costruire un modello, o una rappresentazione statistica dei tuoi dati, utilizzando vari algoritmi per **addestrarlo**. Addestrare un modello lo espone ai dati e gli permette di fare supposizioni sugli schemi percepiti che scopre, valida e accetta o rifiuta. +Usando i tuoi dati di addestramento, il tuo obiettivo è costruire un modello, o una rappresentazione statistica dei tuoi dati, usando vari algoritmi per **addestrarlo**. Addestrare un modello lo espone ai dati e gli permette di fare assunzioni sui pattern percepiti che scopre, convalida e accetta o rifiuta. -### Decidere un metodo di addestramento +### Decidi un metodo di addestramento -A seconda della tua domanda e della natura dei tuoi dati, sceglierai un metodo per addestrarlo. Esaminando la [documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - che utilizziamo in questo corso - puoi esplorare molti modi per addestrare un modello. A seconda della tua esperienza, potresti dover provare diversi metodi per costruire il miglior modello. È probabile che attraverserai un processo in cui i data scientist valutano le prestazioni di un modello fornendogli dati mai visti prima, verificando l'accuratezza, i bias e altri problemi che degradano la qualità, e selezionando il metodo di addestramento più appropriato per il compito. +A seconda della tua domanda e della natura dei tuoi dati, scegli un metodo per addestrarlo. Sfogliando la [documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - che usiamo in questo corso - puoi esplorare molti modi di addestrare un modello. A seconda della tua esperienza, potresti dover provare diversi metodi per costruire il miglior modello. Probabilmente passerai attraverso un processo in cui gli scienziati dei dati valutano la prestazione di un modello alimentandolo con dati non visti prima, controllando l'accuratezza, il bias e altri problemi che degradano la qualità, e selezionando il metodo di addestramento più appropriato per il compito. -### Addestrare un modello +### Addestra un modello -Con i tuoi dati di addestramento, sei pronto per "adattarli" per creare un modello. Noterai che in molte librerie di ML troverai il codice 'model.fit' - è in questo momento che invii la tua variabile caratteristica come un array di valori (di solito 'X') e una variabile target (di solito 'y'). +Munito dei tuoi dati di addestramento, sei pronto a 'adattarlo' per creare un modello. Noterai che in molte librerie ML trovi il codice 'model.fit' - è in questo momento che mandi la tua variabile feature come un array di valori (di solito 'X') e una variabile obiettivo (di solito 'y'). -### Valutare il modello +### Valuta il modello -Una volta completato il processo di addestramento (può richiedere molte iterazioni, o 'epoche', per addestrare un modello grande), sarai in grado di valutare la qualità del modello utilizzando dati di test per misurarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Puoi stampare una tabella di metriche sulla qualità del modello. +Una volta completato il processo di addestramento (può richiedere molte iterazioni, o 'epoche', per addestrare un modello grande), sarai in grado di valutare la qualità del modello usando dati di test per misurarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Puoi stampare una tabella di metriche sulla qualità del tuo modello. -🎓 **Adattamento del modello** +🎓 **Model fitting** -Nel contesto del machine learning, l'adattamento del modello si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non ha familiarità. +Nel contesto del machine learning, il model fitting si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non è familiare. -🎓 **Underfitting** e **overfitting** sono problemi comuni che degradano la qualità del modello, poiché il modello si adatta troppo poco o troppo bene. Questo causa previsioni troppo allineate o troppo poco allineate con i dati di addestramento. Un modello overfit prevede i dati di addestramento troppo bene perché ha imparato troppo bene i dettagli e il rumore dei dati. Un modello underfit non è accurato poiché non riesce ad analizzare accuratamente né i dati di addestramento né quelli che non ha ancora "visto". +🎓 **Underfitting** e **overfitting** sono problemi comuni che degradano la qualità del modello, poiché il modello si adatta o troppo poco o troppo bene. Questo fa sì che il modello faccia predizioni troppo strettamente o troppo liberamente allineate con i dati di addestramento. Un modello overfit predice troppo bene i dati di addestramento perché ha imparato troppo bene i dettagli e il rumore dei dati. Un modello underfit non è accurato perché non può né analizzare accuratamente i dati di addestramento né i dati che non ha ancora 'visto'. -![modello overfitting](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/it/overfitting.1c132d92bfd93cb6.webp) > Infografica di [Jen Looper](https://twitter.com/jenlooper) ## Ottimizzazione dei parametri -Una volta completato il tuo addestramento iniziale, osserva la qualità del modello e considera di migliorarlo regolando i suoi 'iperparametri'. Leggi di più sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Una volta completato il primo addestramento, osserva la qualità del modello e considera di migliorarlo modificando i suoi 'iperparametri'. Leggi di più sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Previsione +## Predizione -Questo è il momento in cui puoi utilizzare dati completamente nuovi per testare l'accuratezza del tuo modello. In un contesto di ML "applicato", dove stai costruendo risorse web per utilizzare il modello in produzione, questo processo potrebbe coinvolgere la raccolta di input dell'utente (ad esempio, la pressione di un pulsante) per impostare una variabile e inviarla al modello per l'inferenza o la valutazione. +Questo è il momento in cui puoi usare dati completamente nuovi per testare la precisione del tuo modello. In un contesto ML 'applicato', in cui costruisci asset web per usare il modello in produzione, questo processo potrebbe coinvolgere la raccolta di input dall'utente (ad esempio la pressione di un pulsante) per impostare una variabile e inviarla al modello per inferenza, o valutazione. -In queste lezioni, scoprirai come utilizzare questi passaggi per preparare, costruire, testare, valutare e prevedere - tutti i gesti di un data scientist e altro ancora, mentre progredisci nel tuo percorso per diventare un ingegnere ML "full stack". +In queste lezioni, scoprirai come usare questi passaggi per preparare, costruire, testare, valutare e predire - tutti i gesti di uno scienziato dei dati e altro ancora, mentre avanzi nel tuo percorso per diventare un ingegnere ML 'full stack'. --- ## 🚀Sfida -Disegna un diagramma di flusso che rifletta i passaggi di un praticante di ML. Dove ti trovi attualmente nel processo? Dove prevedi di incontrare difficoltà? Cosa ti sembra facile? +Disegna un diagramma di flusso che riflette i passaggi di un praticante ML. Dove ti vedi attualmente nel processo? Dove prevedi di incontrare difficoltà? Cosa ti sembra facile? ## [Quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/) -## Revisione e Studio Autonomo +## Revisione e Autoapprendimento -Cerca online interviste con data scientist che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Cerca online interviste con scienziati dei dati che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Compito -[Intervista un data scientist](assignment.md) +[Intervista uno scienziato dei dati](assignment.md) --- + **Disclaimer**: -Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per l’accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o inesattezze. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche si raccomanda la traduzione professionale umana. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione. + \ No newline at end of file diff --git a/translations/it/2-Regression/3-Linear/README.md b/translations/it/2-Regression/3-Linear/README.md index 1762af5757..7d6b4389d7 100644 --- a/translations/it/2-Regression/3-Linear/README.md +++ b/translations/it/2-Regression/3-Linear/README.md @@ -1,97 +1,98 @@ -# Costruire un modello di regressione usando Scikit-learn: quattro tipi di regressione +# Costruire un modello di regressione usando Scikit-learn: regressione in quattro modi ## Nota per principianti -La regressione lineare viene usata quando vogliamo prevedere un **valore numerico** (per esempio, prezzo di una casa, temperatura, o vendite). -Funziona trovando una linea retta che rappresenta nel miglior modo possibile la relazione tra le caratteristiche in input e l'output. +La regressione lineare è usata quando vogliamo prevedere un **valore numerico** (per esempio, il prezzo di una casa, la temperatura o le vendite). +Funziona trovando una linea retta che rappresenta al meglio la relazione tra le caratteristiche di input e l'output. In questa lezione, ci concentriamo sulla comprensione del concetto prima di esplorare tecniche di regressione più avanzate. -![Infografica su regressione lineare vs polinomiale](../../../../translated_images/it/linear-polynomial.5523c7cb6576ccab.webp) -> Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded) +![Linear vs polynomial regression infographic](../../../../translated_images/it/linear-polynomial.5523c7cb6576ccab.webp) +> Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded) + ## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ml/) > ### [Questa lezione è disponibile in R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Introduzione -Finora hai esplorato cosa sia la regressione con dati di esempio raccolti dal dataset dei prezzi delle zucche che useremo per tutta questa lezione. Hai anche visualizzato i dati usando Matplotlib. +Finora hai esplorato cos’è la regressione con dati campione raccolti dal dataset dei prezzi delle zucche che utilizzeremo per tutta la lezione. Hai inoltre visualizzato i dati usando Matplotlib. -Ora sei pronto per approfondire la regressione per l’apprendimento automatico. Mentre la visualizzazione ti permette di dare un senso ai dati, la vera potenza del Machine Learning deriva dall’_addestramento dei modelli_. I modelli vengono addestrati su dati storici per catturare automaticamente le dipendenze nei dati, e ti permettono di prevedere risultati per dati nuovi, che il modello non ha mai visto prima. +Ora sei pronto per approfondire la regressione per ML. Mentre la visualizzazione ti permette di interpretare i dati, il vero potere del Machine Learning deriva dall’_addestramento dei modelli_. I modelli sono addestrati su dati storici per catturare automaticamente le dipendenze dei dati, e ti permettono di prevedere i risultati per dati nuovi, che il modello non ha mai visto prima. -In questa lezione, imparerai di più su due tipi di regressione: _regressione lineare base_ e _regressione polinomiale_, insieme ad alcune delle matematiche sottostanti a queste tecniche. Questi modelli ci permetteranno di predire il prezzo delle zucche in base a diversi dati in input. +In questa lezione, imparerai di più su due tipi di regressione: _regressione lineare base_ e _regressione polinomiale_, insieme ad alcune delle basi matematiche che supportano queste tecniche. Questi modelli ci permetteranno di prevedere i prezzi delle zucche in base a diversi dati in input. -[![ML per principianti - Comprendere la regressione lineare](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML per principianti - Comprendere la regressione lineare") +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Clicca sull'immagine sopra per una breve panoramica video sulla regressione lineare. +> 🎥 Clicca sull’immagine sopra per un breve video introduttivo sulla regressione lineare. -> In tutto questo curriculum, presumiamo una conoscenza minima di matematica, e cerchiamo di renderlo accessibile a studenti provenienti da altri campi, quindi fai attenzione a note, 🧮 richiamo di concetti, diagrammi e altri strumenti didattici per aiutare nella comprensione. +> Durante tutto il curriculum, assumiamo una conoscenza minima della matematica, e cerchiamo di renderla accessibile a studenti provenienti da altri ambiti, quindi cerca note, 🧮 richiami, diagrammi e altri strumenti didattici per aiutarti nella comprensione. ### Prerequisiti -Dovresti ora essere familiare con la struttura dei dati delle zucche che stiamo esaminando. Puoi trovarli precaricati e già puliti nel file _notebook.ipynb_ di questa lezione. Nel file, il prezzo delle zucche è mostrato per bushel in un nuovo dataframe. Assicurati di poter eseguire questi notebook nei kernel in Visual Studio Code. +A questo punto dovresti conoscere la struttura dei dati delle zucche che stiamo analizzando. Puoi trovare questi dati precaricati e puliti nel file _notebook.ipynb_ di questa lezione. Nel file, il prezzo della zucca è mostrato per bushel in un nuovo data frame. Assicurati di poter eseguire questi notebook in kernel in Visual Studio Code. ### Preparazione -Come promemoria, stai caricando questi dati per poter porre domande su di essi. +Come promemoria, carichi questi dati per porre domande su di essi. -- Qual è il momento migliore per acquistare zucche? +- Qual è il momento migliore per comprare le zucche? - Quale prezzo posso aspettarmi per una cassa di zucche miniatura? -- Conviene acquistarle in cestini da mezzo bushel o nella scatola da 1 1/9 bushel? +- Dovrei comprarle in cestini da mezzo bushel o in scatole da 1 1/9 bushel? Continuiamo a scavare in questi dati. -Nella lezione precedente, hai creato un dataframe Pandas e l'hai popolato con parte del dataset originale, standardizzando i prezzi per bushel. Facendo così, però, hai potuto raccogliere solo circa 400 punti dati e solo per i mesi autunnali. +Nella lezione precedente, hai creato un data frame Pandas e lo hai popolato con parte del dataset originale, standardizzando i prezzi per bushel. Facendo ciò, però, hai ottenuto solo circa 400 punti dati e solo per i mesi autunnali. -Dai un’occhiata ai dati precaricati nel notebook allegato a questa lezione. I dati sono già caricati e viene mostrato un primo scatterplot per visualizzare i dati mensili. Forse possiamo ottenere qualche dettaglio in più sulla natura dei dati pulendoli ulteriormente. +Dai un’occhiata ai dati precaricati nel notebook che accompagna questa lezione. I dati sono caricati e un primo scatterplot è tracciato per mostrare i dati del mese. Forse possiamo ottenere qualche dettaglio in più sulla natura dei dati pulendoli ulteriormente. ## Una linea di regressione lineare -Come hai appreso nella Lezione 1, l'obiettivo di un esercizio di regressione lineare è poter disegnare una linea per: +Come hai imparato nella Lezione 1, l’obiettivo di un esercizio di regressione lineare è essere in grado di tracciare una linea per: -- **Mostrare le relazioni tra variabili**. Mostrare la relazione tra le variabili -- **Fare previsioni**. Fare previsioni accurate su dove cadrebbe un nuovo punto dati in relazione a quella linea. +- **Mostrare le relazioni tra variabili**. Mostrare la relazione tra variabili +- **Fare previsioni**. Effettuare previsioni accurate su dove cadrebbe un nuovo punto dati rispetto a quella linea. -È tipico della **regressione ai minimi quadrati** tracciare questo tipo di linea. Il termine "minimi quadrati" si riferisce al processo di minimizzazione dell'errore totale nel nostro modello. Per ogni punto dati, misuriamo la distanza verticale (chiamata residuo) tra il punto effettivo e la nostra linea di regressione. +È tipico della **Regressione ai Minimi Quadrati** disegnare questo tipo di linea. Il termine "Minimi Quadrati" si riferisce al processo di minimizzazione dell’errore totale nel nostro modello. Per ogni punto dato, misuriamo la distanza verticale (chiamata residuo) tra il punto reale e la nostra linea di regressione. -Eleviamo al quadrato queste distanze per due motivi principali: +Queste distanze vengono elevate al quadrato per due motivi principali: -1. **Magnitudo oltre alla direzione:** Vogliamo trattare un errore di -5 allo stesso modo di uno di +5. Elevando al quadrato tutti i valori diventano positivi. +1. **Magnitudo rispetto alla direzione:** Vogliamo trattare un errore di -5 allo stesso modo di un errore di +5. Elevando al quadrato tutti i valori diventano positivi. -2. **Pena per gli outlier:** Elevando al quadrato si dà più peso agli errori più grandi, costringendo la linea a stare più vicina ai punti lontani. +2. **Penalizzare gli outlier:** Elevando al quadrato si dà maggior peso agli errori più grandi, costringendo la linea a stare più vicina ai punti lontani. -Poi sommiamo tutti questi valori al quadrato. Il nostro obiettivo è trovare la specifica linea dove questa somma finale è minima (il valore più piccolo possibile)—da qui il nome "minimi quadrati". +Poi sommiamo tutti questi valori al quadrato assieme. Il nostro obiettivo è trovare la linea specifica dove questa somma finale è minima (il valore più piccolo possibile)—da qui il nome "Minimi Quadrati". > **🧮 Mostrami la matematica** > -> Questa linea, chiamata _linea di miglior adattamento_ può essere espressa con [un'equazione](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Questa linea, chiamata _linea di miglior adattamento_, può essere espressa da [un’equazione](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` è la 'variabile esplicativa'. `Y` è la 'variabile dipendente'. La pendenza della linea è `b` e `a` è l'intercetta y, cioè il valore di `Y` quando `X = 0`. +> `X` è la 'variabile esplicativa'. `Y` è la 'variabile dipendente'. La pendenza della linea è `b` e `a` è l’intercetta sull’asse y, che si riferisce al valore di `Y` quando `X = 0`. > ->![calcolare la pendenza](../../../../translated_images/it/slope.f3c9d5910ddbfcf9.webp) +>![calculate the slope](../../../../translated_images/it/slope.f3c9d5910ddbfcf9.webp) > > Per prima cosa, calcola la pendenza `b`. Infografica di [Jen Looper](https://twitter.com/jenlooper) > -> In altre parole, e riferendoci alla nostra domanda originale sui dati delle zucche: "prevedere il prezzo di una zucca per bushel in base al mese", `X` si riferirebbe al prezzo e `Y` al mese di vendita. +> In altre parole, e riferendoci alla domanda originale sui dati delle zucche: "prevedere il prezzo di una zucca per bushel in base al mese", `X` si riferirebbe al prezzo e `Y` al mese di vendita. > ->![completa l'equazione](../../../../translated_images/it/calculation.a209813050a1ddb1.webp) +>![complete the equation](../../../../translated_images/it/calculation.a209813050a1ddb1.webp) > -> Calcola il valore di Y. Se stai pagando circa 4 dollari, deve essere aprile! Infografica di [Jen Looper](https://twitter.com/jenlooper) +> Calcola il valore di Y. Se stai pagando circa 4$, deve essere aprile! Infografica di [Jen Looper](https://twitter.com/jenlooper) > -> La matematica che calcola la linea deve dimostrare la pendenza della linea, che dipende anche dall’intercetta, ovvero dove si trova `Y` quando `X = 0`. +> La matematica che calcola la linea deve dimostrare la pendenza della linea, che dipende anche dall’intercetta, cioè dove si trova `Y` quando `X = 0`. > -> Puoi osservare il metodo di calcolo di questi valori sul sito [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visita anche [questa calcolatrice per i minimi quadrati](https://www.mathsisfun.com/data/least-squares-calculator.html) per vedere come i valori influenzano la linea. +> Puoi osservare il metodo di calcolo di questi valori sul sito [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visita anche [questa calcolatrice dei minimi quadrati](https://www.mathsisfun.com/data/least-squares-calculator.html) per vedere come i valori numerici influenzano la linea. ## Correlazione -Un altro termine da comprendere è il **coefficiente di correlazione** tra le variabili X e Y date. Usando uno scatterplot, puoi visualizzare rapidamente questo coefficiente. Un grafico con punti dati disposti su una linea ordinata ha alta correlazione, mentre un grafico con punti sparsi ovunque tra X e Y ha bassa correlazione. +Un altro termine da comprendere è il **Coefficiente di Correlazione** tra le variabili X e Y date. Usando uno scatterplot, puoi visualizzare rapidamente questo coefficiente. Un grafico con punti dati distribuiti ordinatamente in una linea mostra una forte correlazione, mentre un grafico con punti dati sparsi ovunque tra X e Y mostra una bassa correlazione. -Un buon modello di regressione lineare sarà quello che ha un coefficiente di correlazione alto (più vicino a 1 che a 0) usando il metodo di regressione ai minimi quadrati con una linea di regressione. +Un buon modello di regressione lineare sarà quello che ha un alto Coefficiente di Correlazione (più vicino a 1 che a 0) usando il metodo dei Minimi Quadrati con una linea di regressione. -✅ Esegui il notebook allegato a questa lezione e guarda lo scatterplot da Mese a Prezzo. I dati che associano il mese al prezzo per la vendita delle zucche sembrano avere alta o bassa correlazione, secondo la tua interpretazione visiva dello scatterplot? Cambia qualcosa se usi una misura più dettagliata invece di `Month`, per esempio *giorno dell’anno* (cioè numero di giorni dall’inizio dell’anno)? +✅ Esegui il notebook che accompagna questa lezione e osserva lo scatterplot tra Mese e Prezzo. I dati che associano il Mese al Prezzo per le vendite di zucche sembrano avere alta o bassa correlazione, secondo la tua interpretazione visiva dello scatterplot? Cambia qualcosa se usi una misura più dettagliata invece di `Month`, per esempio *il giorno dell’anno* (cioè numero di giorni dall’inizio dell’anno)? -Nel codice seguente, supponiamo di aver pulito i dati, e ottenuto un dataframe chiamato `new_pumpkins`, simile al seguente: +Nel codice qui sotto, assumiamo che abbiamo pulito i dati e ottenuto un data frame chiamato `new_pumpkins`, simile al seguente: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -99,38 +100,38 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> Il codice per pulire i dati è disponibile in [`notebook.ipynb`](notebook.ipynb). Abbiamo eseguito gli stessi passaggi di pulizia della lezione precedente e abbiamo calcolato la colonna `DayOfYear` con l’espressione seguente: +> Il codice per pulire i dati è disponibile in [`notebook.ipynb`](notebook.ipynb). Abbiamo eseguito gli stessi passaggi di pulizia della lezione precedente, e abbiamo calcolato la colonna `DayOfYear` usando la seguente espressione: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Ora che hai una comprensione della matematica dietro la regressione lineare, creiamo un modello di regressione per vedere se possiamo prevedere quale confezione di zucche avrà i prezzi migliori. Qualcuno che compra zucche per una festa di Halloween potrebbe voler questa informazione per ottimizzare i propri acquisti di zucche. +Ora che hai una comprensione della matematica dietro la regressione lineare, creiamo un modello di regressione per vedere se possiamo prevedere quale confezione di zucche avrà i prezzi migliori. Qualcuno che compra zucche per un campo di zucche per le feste potrebbe voler questa informazione per ottimizzare i suoi acquisti di confezioni. ## Cercare la correlazione -[![ML per principianti - Cercare la correlazione: la chiave per la regressione lineare](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML per principianti - Cercare la correlazione: la chiave per la regressione lineare") +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Clicca sull'immagine sopra per una breve panoramica video sulla correlazione. +> 🎥 Clicca sull’immagine sopra per un breve video introduttivo sulla correlazione. -Dalla lezione precedente probabilmente hai visto che il prezzo medio per diversi mesi si presenta così: +Dalla lezione precedente probabilmente hai visto che il prezzo medio per i diversi mesi somiglia a questo: -Prezzo medio per mese +Average price by month -Questo suggerisce che ci dovrebbe essere qualche correlazione, e possiamo provare ad addestrare un modello di regressione lineare per predire la relazione tra `Month` e `Price`, o tra `DayOfYear` e `Price`. Qui c’è lo scatter plot che mostra quest’ultima relazione: +Questo suggerisce che ci dovrebbe essere qualche correlazione, e possiamo provare a addestrare un modello di regressione lineare per prevedere la relazione tra `Month` e `Price`, o tra `DayOfYear` e `Price`. Ecco lo scatter plot che mostra quest’ultima relazione: -Scatter plot di Prezzo vs. Giorno dell'anno +Scatter plot of Price vs. Day of Year -Vediamo se c’è una correlazione usando la funzione `corr`: +Vediamo se c’è correlazione usando la funzione `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Sembra che la correlazione sia piuttosto bassa, -0.15 rispetto a `Month` e -0.17 rispetto a `DayOfMonth`, ma potrebbe esserci un’altra relazione importante. Sembra che ci siano diversi cluster di prezzi corrispondenti a diverse varietà di zucche. Per confermare questa ipotesi, tracciamo ogni categoria di zucca usando un colore diverso. Passando un parametro `ax` alla funzione di plot `scatter` possiamo disegnare tutti i punti sullo stesso grafico: +Sembra che la correlazione sia piuttosto bassa, -0.15 per `Month` e -0.17 per `DayOfYear`, ma potrebbe esserci un’altra relazione importante. Sembra che ci siano diversi cluster di prezzi corrispondenti a diverse varietà di zucche. Per confermare questa ipotesi, tracciamo ogni categoria di zucca con un colore differente. Passando un parametro `ax` alla funzione di plot `scatter` possiamo disegnare tutti i punti sullo stesso grafico: ```python ax=None @@ -140,40 +141,40 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot di Prezzo vs. Giorno dell'anno +Scatter plot of Price vs. Day of Year -La nostra indagine suggerisce che la varietà ha un effetto maggiore sul prezzo complessivo rispetto alla data reale di vendita. Vediamo questo con un grafico a barre: +La nostra indagine suggerisce che la varietà influenza di più il prezzo complessivo rispetto alla data di vendita effettiva. Possiamo vedere questo anche con un grafico a barre: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Grafico a barre del prezzo per varietà +Bar graph of price vs variety -Concentriamoci per un momento solamente su una varietà di zucca, la 'pie type', e vediamo quale effetto ha la data sul prezzo: +Concentriamoci per ora solo su una varietà di zucca, il 'pie type', e vediamo che effetto ha la data sul prezzo: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot di Prezzo vs. Giorno dell'anno +Scatter plot of Price vs. Day of Year -Se ora calcoliamo la correlazione tra `Price` e `DayOfYear` usando la funzione `corr`, otterremo qualcosa come `-0.27` - il che significa che ha senso addestrare un modello predittivo. +Se ora calcoliamo la correlazione tra `Price` e `DayOfYear` usando la funzione `corr`, otteniamo qualcosa come `-0.27` – il che significa che addestrare un modello predittivo ha senso. -> Prima di addestrare un modello di regressione lineare, è importante assicurarsi che i nostri dati siano puliti. La regressione lineare non funziona bene con valori mancanti, dunque ha senso eliminare tutte le celle vuote: +> Prima di addestrare un modello di regressione lineare, è importante assicurarsi che i dati siano puliti. La regressione lineare non funziona bene con valori mancanti, quindi è sensato eliminare tutte le celle vuote: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Un altro approccio sarebbe quello di riempire quei valori mancanti con la media delle rispettive colonne. +Un altro approccio sarebbe riempire quei valori vuoti con la media dei valori nella colonna corrispondente. ## Regressione Lineare Semplice -[![ML per principianti - Regressione Lineare e Polinomiale usando Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML per principianti - Regressione Lineare e Polinomiale usando Scikit-learn") +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Clicca sull'immagine sopra per una breve panoramica video sulla regressione lineare e polinomiale. +> 🎥 Clicca sull’immagine sopra per un breve video introduttivo sulla regressione lineare e polinomiale. Per addestrare il nostro modello di Regressione Lineare, useremo la libreria **Scikit-learn**. @@ -183,31 +184,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Iniziamo separando i valori input (caratteristiche) e l’output atteso (etichetta) in array numpy separati: +Iniziamo separando i valori di input (caratteristiche) e l’output atteso (etichetta) in array numpy separati: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Nota che abbiamo dovuto eseguire il `reshape` sui dati di input affinché il pacchetto di Regressione Lineare li capisse correttamente. La Regressione Lineare si aspetta un array 2D come input, dove ogni riga dell’array corrisponde a un vettore di caratteristiche in input. Nel nostro caso, poiché abbiamo un solo input, ci serve un array di forma N×1, dove N è la dimensione del dataset. +> Nota che abbiamo dovuto eseguire `reshape` sui dati di input affinché il pacchetto di Regressione Lineare li comprendesse correttamente. La regressione lineare si aspetta un array 2D come input, dove ogni riga dell’array corrisponde a un vettore di caratteristiche in input. Nel nostro caso, dato che abbiamo un solo input, abbiamo bisogno di un array con forma N×1, dove N è la dimensione del dataset. -Poi, dobbiamo dividere i dati in set di addestramento e di test, così possiamo validare il modello dopo l’addestramento: +Poi, dobbiamo dividere i dati in dataset di addestramento e di test, così da poter validare il nostro modello dopo l’addestramento: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Infine, addestrare il modello vero e proprio di Regressione Lineare richiede solo due righe di codice. Definiamo l’oggetto `LinearRegression`, e lo adattiamo ai nostri dati usando il metodo `fit`: +Infine, addestrare il modello vero e proprio di Regressione Lineare richiede solo due righe di codice. Definiamo l’oggetto `LinearRegression` e lo adattiamo ai nostri dati usando il metodo `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -L'oggetto `LinearRegression` dopo aver effettuato il `fit` contiene tutti i coefficienti della regressione, che possono essere accessi utilizzando la proprietà `.coef_`. Nel nostro caso, c'è un solo coefficiente, che dovrebbe essere intorno a `-0.017`. Questo significa che i prezzi sembrano diminuire un po' col passare del tempo, ma non troppo, circa 2 centesimi al giorno. Possiamo anche accedere al punto di intersezione della regressione con l'asse Y usando `lin_reg.intercept_` - sarà intorno a `21` nel nostro caso, indicando il prezzo all'inizio dell'anno. +L'oggetto `LinearRegression` dopo l'addestramento (`fit`) contiene tutti i coefficienti della regressione, ai quali si può accedere tramite la proprietà `.coef_`. Nel nostro caso, c'è un solo coefficiente, che dovrebbe essere intorno a `-0.017`. Ciò significa che i prezzi sembrano calare un po' con il tempo, ma non troppo, circa 2 centesimi al giorno. Possiamo anche accedere al punto di intersezione della regressione con l'asse Y usando `lin_reg.intercept_` - sarà intorno a `21` nel nostro caso, indicando il prezzo all'inizio dell'anno. -Per vedere quanto è accurato il nostro modello, possiamo prevedere i prezzi su un dataset di test e quindi misurare quanto le nostre previsioni siano vicine ai valori attesi. Questo può essere fatto utilizzando la metrica dell'errore quadratico medio (RMSE), che è la radice della media di tutte le differenze quadrate tra valore atteso e valore previsto. +Per vedere quanto è accurato il nostro modello, possiamo prevedere i prezzi su un set di dati di test, e poi misurare quanto le nostre previsioni sono vicine ai valori attesi. Questo può essere fatto usando la metrica dell'errore quadratico medio radice (RMSE), che è la radice della media di tutte le differenze al quadrato tra il valore atteso e quello previsto. ```python pred = lin_reg.predict(X_test) @@ -216,13 +217,13 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Il nostro errore sembra essere intorno a 2 punti, cioè ~17%. Non troppo bene. Un altro indicatore della qualità del modello è il **coefficiente di determinazione**, che può essere ottenuto così: +Il nostro errore sembra essere intorno a 2 punti, ovvero ~17%. Non troppo buono. Un altro indicatore della qualità del modello è il **coefficiente di determinazione**, che si può ottenere così: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Se il valore è 0, significa che il modello non considera i dati di input e agisce come il *peggior predittore lineare*, che è semplicemente un valore medio del risultato. Il valore 1 significa che possiamo prevedere perfettamente tutti i risultati attesi. Nel nostro caso, il coefficiente è intorno a 0.06, cioè abbastanza basso. +Se il valore è 0, significa che il modello non tiene conto dei dati di input, e agisce come il *peggior predittore lineare*, che è semplicemente il valore medio del risultato. Il valore 1 significa che possiamo prevedere perfettamente tutti gli output attesi. Nel nostro caso, il coefficiente è intorno a 0.06, che è abbastanza basso. Possiamo anche tracciare i dati di test insieme alla linea di regressione per vedere meglio come funziona la regressione nel nostro caso: @@ -231,21 +232,21 @@ plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` -Regressione lineare +Linear regression ## Regressione Polinomiale -Un altro tipo di regressione lineare è la Regressione Polinomiale. Sebbene a volte ci sia una relazione lineare tra le variabili - più grande è la zucca in volume, più alto è il prezzo - a volte queste relazioni non possono essere rappresentate come un piano o una linea retta. +Un altro tipo di regressione lineare è la Regressione Polinomiale. Mentre a volte c'è una relazione lineare tra variabili - più grande è la zucca in volume, più alto è il prezzo - a volte queste relazioni non possono essere rappresentate come un piano o linea retta. -✅ Ecco [alcuni esempi in più](https://online.stat.psu.edu/stat501/lesson/9/9.8) di dati che possono richiedere una Regressione Polinomiale +✅ Ecco [alcuni esempi in più](https://online.stat.psu.edu/stat501/lesson/9/9.8) di dati che potrebbero usare la Regressione Polinomiale -Dai un'altra occhiata alla relazione tra Data e Prezzo. Questo scatterplot sembra necessariamente dover essere analizzato da una linea retta? I prezzi non possono fluttuare? In questo caso, puoi provare la regressione polinomiale. +Guarda di nuovo la relazione tra Data e Prezzo. Questo scatterplot sembra dover necessariamente essere analizzato con una linea retta? I prezzi non possono fluttuare? In questo caso, puoi provare la regressione polinomiale. -✅ I polinomi sono espressioni matematiche che possono consistere in una o più variabili e coefficienti +✅ I polinomi sono espressioni matematiche che potrebbero consistere di una o più variabili e coefficienti -La regressione polinomiale crea una linea curva per adattarsi meglio ai dati non lineari. Nel nostro caso, se includiamo una variabile `DayOfYear` al quadrato nei dati di input, dovremmo essere in grado di adattare i dati con una curva parabolica, che avrà un minimo in un certo punto dell'anno. +La regressione polinomiale crea una linea curva per adattarsi meglio ai dati non lineari. Nel nostro caso, se includiamo una variabile quadratica `DayOfYear` nei dati di input, dovremmo essere in grado di adattare i nostri dati con una curva parabolica, che avrà un minimo in un certo punto dell'anno. -Scikit-learn include un utile [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) per combinare insieme diversi passaggi di elaborazione dati. Una **pipeline** è una catena di **stimatori**. Nel nostro caso, creeremo una pipeline che prima aggiunge caratteristiche polinomiali al nostro modello e poi addestra la regressione: +Scikit-learn include una utile [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) per combinare insieme diversi passaggi di elaborazione dei dati. Una **pipeline** è una catena di **stimatori**. Nel nostro caso, creeremo una pipeline che prima aggiunge caratteristiche polinomiali al nostro modello, e poi allena la regressione: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Usare `PolynomialFeatures(2)` significa che includeremo tutti i polinomi di secondo grado dai dati di input. Nel nostro caso significherà solo `DayOfYear`2, ma dati due variabili di input X e Y, questo aggiungerà X2, XY e Y2. Possiamo anche utilizzare polinomi di grado superiore se vogliamo. +Usare `PolynomialFeatures(2)` significa che includeremo tutti i polinomi di secondo grado dai dati di input. Nel nostro caso significa solo `DayOfYear`2, ma dati due input X e Y, aggiungerà X2, XY e Y2. Possiamo anche usare polinomi di grado più alto se vogliamo. + +Le pipeline possono essere usate nello stesso modo dell'oggetto `LinearRegression` originale, cioè possiamo `fit` la pipeline, e poi usare `predict` per ottenere i risultati delle previsioni: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Per tracciare la curva di approssimazione liscia, usiamo `np.linspace` per creare un intervallo uniforme di valori di input, invece di tracciare direttamente sui dati di test non ordinati (che produrrebbe una linea a zigzag): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Le pipeline possono essere utilizzate nello stesso modo dell'oggetto `LinearRegression` originale, cioè possiamo `fit`tare la pipeline e quindi usare `predict` per ottenere i risultati della previsione. Ecco il grafico che mostra i dati di test e la curva di approssimazione: +Ecco il grafico che mostra i dati di test e la curva di approssimazione: -Regressione polinomiale +Polynomial regression -Usando la regressione polinomiale, possiamo ottenere un MSE leggermente più basso e un coefficiente di determinazione più alto, ma non in modo significativo. Dobbiamo prendere in considerazione altre caratteristiche! +Usando la Regressione Polinomiale, possiamo ottenere un RMSE leggermente più basso e una determinazione più alta, ma non in modo significativo. Dobbiamo prendere in considerazione altre caratteristiche! > Puoi vedere che i prezzi minimi delle zucche si osservano intorno a Halloween. Come puoi spiegare questo? -🎃 Congratulazioni, hai appena creato un modello che può aiutare a prevedere il prezzo delle zucche da torta. Probabilmente puoi ripetere la stessa procedura per tutti i tipi di zucca, ma sarebbe tedioso. Impariamo ora come considerare la varietà di zucca nel nostro modello! +🎃 Congratulazioni, hai appena creato un modello che può aiutarti a prevedere il prezzo delle zucche da torta. Probabilmente puoi ripetere la stessa procedura per tutti i tipi di zucche, ma sarebbe laborioso. Impariamo ora come tenere conto della varietà di zucca nel nostro modello! ## Caratteristiche Categoricali -Nel mondo ideale, vogliamo poter prevedere i prezzi per diverse varietà di zucca usando lo stesso modello. Tuttavia, la colonna `Variety` è un po' diversa da colonne come `Month`, perché contiene valori non numerici. Queste colonne sono chiamate **categoriche**. +Nel mondo ideale, vogliamo essere in grado di prevedere i prezzi per diverse varietà di zucche usando lo stesso modello. Tuttavia, la colonna `Variety` è un po' diversa dalle colonne come `Month`, perché contiene valori non numerici. Queste colonne si chiamano **categoriche**. -[![ML per principianti - Previsioni con caratteristiche categoriche e regressione lineare](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML per principianti - Previsioni con caratteristiche categoriche e regressione lineare") +[![ML per principianti - Previsioni con Caratteristiche Categoricali e Regressione Lineare](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Clicca sull'immagine sopra per un breve video di overview sull'uso delle caratteristiche categoriche. +> 🎥 Clicca sull'immagine sopra per una breve panoramica video sull'uso delle caratteristiche categoriche. Qui puoi vedere come il prezzo medio dipende dalla varietà: -Prezzo medio per varietà +Average price by variety -Per considerare la varietà, dobbiamo prima convertirla in forma numerica, o **codificarla**. Ci sono diversi modi per farlo: +Per tenere conto della varietà, dobbiamo prima convertirla in forma numerica, o **codificarla**. Ci sono diversi modi per farlo: -* La semplice **codifica numerica** costruisce una tabella delle diverse varietà e poi sostituisce il nome della varietà con un indice in quella tabella. Questa non è la scelta migliore per regressione lineare, perché questa prende il valore numerico effettivo dell'indice e lo aggiunge al risultato moltiplicandolo per un coefficiente. Nel nostro caso, la relazione tra il numero indice e il prezzo è chiaramente non lineare, anche se facciamo in modo che gli indici siano ordinati in un certo modo. -* La **one-hot encoding** sostituirà la colonna `Variety` con 4 colonne diverse, una per ogni varietà. Ogni colonna conterrà `1` se la riga corrispondente è della data varietà, e `0` altrimenti. Questo significa che ci saranno quattro coefficienti nella regressione lineare, uno per ogni varietà di zucca, responsabili del "prezzo di partenza" (o meglio "prezzo aggiuntivo") per quella particolare varietà. +* La semplice **codifica numerica** costruirà una tabella delle varietà diverse, e poi sostituirà il nome della varietà con un indice in quella tabella. Questa non è l'idea migliore per la regressione lineare, perché la regressione lineare prende il valore numerico effettivo dell'indice, e lo aggiunge al risultato, moltiplicandolo per qualche coefficiente. Nel nostro caso, la relazione tra il numero indice e il prezzo è chiaramente non lineare, anche se ci assicurassimo che gli indici siano ordinati in un certo modo. +* La **codifica one-hot** sostituirà la colonna `Variety` con 4 colonne diverse, una per ogni varietà. Ogni colonna conterrà `1` se la riga corrispondente è di quella data varietà, e `0` altrimenti. Questo significa che ci saranno quattro coefficienti nella regressione lineare, uno per ogni varietà di zucca, responsabile del "prezzo di partenza" (o meglio "prezzo aggiuntivo") per quella particolare varietà. -Il codice sotto mostra come possiamo applicare la codifica one-hot alla varietà: +Il codice qui sotto mostra come possiamo codificare con one-hot una varietà: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -309,7 +332,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Il resto del codice è lo stesso che abbiamo usato sopra per addestrare la regressione lineare. Se provi, vedrai che l’errore quadratico medio è circa lo stesso, ma otteniamo un coefficiente di determinazione molto più alto (~77%). Per avere previsioni ancora più precise, possiamo considerare altre caratteristiche categoriche oltre che caratteristiche numeriche, come `Month` o `DayOfYear`. Per avere un unico grande array di caratteristiche, possiamo usare `join`: +Il resto del codice è lo stesso che abbiamo usato sopra per addestrare la regressione lineare. Se provi, vedrai che l'errore quadratico medio è simile, ma otteniamo un coefficiente di determinazione molto più alto (~77%). Per ottenere previsioni ancora più accurate, possiamo considerare più caratteristiche categoriche, così come caratteristiche numeriche, come `Month` o `DayOfYear`. Per ottenere un unico grande array di caratteristiche, possiamo usare `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,21 +342,21 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Qui consideriamo anche `City` e il tipo di `Package`, che ci dà MSE 2.84 (10%) e coefficiente di determinazione 0.94! +Qui prendiamo in considerazione anche `City` e `Package`, il che ci dà un RMSE di 2.84 (10.5%), e una determinazione di 0.94! ## Mettere tutto insieme -Per creare il miglior modello, possiamo usare i dati combinati (categorici codificati one-hot + numerici) dall'esempio sopra insieme alla regressione polinomiale. Ecco il codice completo per la tua comodità: +Per ottenere il miglior modello, possiamo usare dati combinati (caratteristiche categoriche codificate one-hot + numeriche) dall'esempio sopra insieme alla Regressione Polinomiale. Ecco il codice completo per la tua comodità: ```python -# impostare i dati di addestramento +# configurare i dati di addestramento X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# fare la divisione train-test +# effettuare la divisione train-test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # configurare e addestrare la pipeline @@ -343,44 +366,44 @@ pipeline.fit(X_train,y_train) # prevedere i risultati per i dati di test pred = pipeline.predict(X_test) -# calcolare MSE e coefficiente di determinazione -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# calcolare RMSE e coefficiente di determinazione +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Questo dovrebbe darci il miglior coefficiente di determinazione di quasi 97% e MSE=2.23 (~8% di errore nella previsione). +Questo dovrebbe darci il miglior coefficiente di determinazione di quasi il 97%, e RMSE=2.23 (~8% di errore di previsione). -| Modello | MSE | Coefficiente di determinazione | -|---------|-----|-------------------------------| +| Modello | RMSE | Determinazione | +|---------|------|----------------| | Lineare `DayOfYear` | 2.77 (17.2%) | 0.07 | | Polinomiale `DayOfYear` | 2.73 (17.0%) | 0.08 | | Lineare `Variety` | 5.24 (19.7%) | 0.77 | -| Lineare tutte le caratteristiche | 2.84 (10.5%) | 0.94 | -| Polinomiale tutte le caratteristiche | 2.23 (8.25%) | 0.97 | +| Lineare Tutte le caratteristiche | 2.84 (10.5%) | 0.94 | +| Polinomiale Tutte le caratteristiche | 2.23 (8.25%) | 0.97 | -🏆 Ben fatto! Hai creato quattro modelli di regressione in una lezione e migliorato la qualità del modello fino al 97%. Nella sezione finale su Regressione, imparerai la Regressione Logistica per determinare le categorie. +🏆 Ben fatto! Hai creato quattro modelli di Regressione in una lezione, e migliorato la qualità del modello al 97%. Nella sezione finale sulla Regressione, imparerai la Regressione Logistica per determinare le categorie. --- ## 🚀Sfida -Prova diverse variabili in questo notebook per vedere come la correlazione corrisponde all’accuratezza del modello. +Prova diverse variabili in questo notebook per vedere come la correlazione corrisponde alla precisione del modello. ## [Quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/) -## Revisione & Studio individuale +## Revisione & Autoapprendimento -In questa lezione abbiamo imparato la regressione lineare. Ci sono altri tipi importanti di regressione. Leggi sulle tecniche Stepwise, Ridge, Lasso e Elasticnet. Un buon corso da studiare per approfondire è il [corso Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +In questa lezione abbiamo imparato la Regressione Lineare. Ci sono altri tipi importanti di regressione. Leggi delle tecniche Stepwise, Ridge, Lasso ed Elasticnet. Un buon corso per approfondire è il [corso Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Compito -[Costruisci un modello](assignment.md) +[Costruisci un Modello](assignment.md) --- -**Disclaimer**: -Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Pur impegnandoci per garantire l'accuratezza, si prega di considerare che le traduzioni automatiche possono contenere errori o inesattezze. Il documento originale nella sua lingua madre deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale umana. Non ci assumiamo alcuna responsabilità per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Pur impegnandoci per l'accuratezza, si prega di considerare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale umana. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/2-Regression/3-Linear/solution/notebook.ipynb b/translations/it/2-Regression/3-Linear/solution/notebook.ipynb index eb8e6df69e..7aa4f2a473 100644 --- a/translations/it/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/it/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Regressione Lineare e Polinomiale per la Valutazione delle Zucche - Lezione 3\n", + "## Regressione Lineare e Polinomiale per il Prezzo della Zucca - Lezione 3\n", "\n", "Carica le librerie necessarie e il dataset. Converti i dati in un dataframe contenente un sottoinsieme dei dati:\n", "\n", - "- Considera solo le zucche con prezzo al bushel\n", + "- Prendi solo le zucche valutate al bushel\n", "- Converti la data in un mese\n", - "- Calcola il prezzo come media tra il prezzo massimo e minimo\n", - "- Converti il prezzo per riflettere la valutazione in base alla quantità per bushel\n" + "- Calcola il prezzo come media dei prezzi massimi e minimi\n", + "- Converti il prezzo per riflettere la valutazione in base alla quantità di bushel\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Un diagramma a dispersione ci ricorda che abbiamo dati mensili solo da agosto a dicembre. Probabilmente abbiamo bisogno di più dati per poter trarre conclusioni in modo lineare.\n" + "Un grafico a dispersione ci ricorda che abbiamo dati mensili solo da agosto a dicembre. Probabilmente abbiamo bisogno di più dati per poter trarre conclusioni in modo lineare.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Vediamo se c'è correlazione:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sembra che la correlazione sia piuttosto bassa, ma c'è qualche altra relazione più importante - perché i punti di prezzo nel grafico sopra sembrano avere diversi cluster distinti. Facciamo un grafico che mostrerà le diverse varietà di zucca:\n" + "Sembra che la correlazione sia piuttosto piccola, ma c'è qualche altra relazione più importante - perché i punti prezzo nel grafico sopra sembrano avere diversi gruppi distinti. Facciamo un grafico che mostri le diverse varietà di zucca:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Per il momento, concentriamoci solo su una varietà - **tipo di torta**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Regressione Lineare\n", "\n", - "Utilizzeremo Scikit Learn per addestrare un modello di regressione lineare:\n" + "Useremo Scikit Learn per addestrare un modello di regressione lineare:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "La pendenza della linea può essere determinata dai coefficienti di regressione lineare:\n" + "La pendenza della linea può essere determinata dai coefficienti della regressione lineare:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Possiamo usare il modello addestrato per prevedere il prezzo:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Regressione Polinomiale\n", "\n", - "A volte la relazione tra le caratteristiche e i risultati è intrinsecamente non lineare. Ad esempio, i prezzi delle zucche potrebbero essere alti in inverno (mesi=1,2), poi scendere in estate (mesi=5-7) e risalire successivamente. La regressione lineare non è in grado di individuare questa relazione con precisione.\n", + "A volte la relazione tra le caratteristiche e i risultati è intrinsecamente non lineare. Per esempio, i prezzi della zucca potrebbero essere alti in inverno (mesi=1,2), poi diminuire durante l'estate (mesi=5-7), e poi risalire. La regressione lineare non è in grado di trovare questa relazione in modo accurato.\n", "\n", - "In questo caso, potremmo considerare di aggiungere caratteristiche extra. Un modo semplice è utilizzare polinomi derivati dalle caratteristiche di input, il che porterebbe a una **regressione polinomiale**. In Scikit Learn, possiamo pre-calcolare automaticamente le caratteristiche polinomiali utilizzando le pipeline:\n" + "In questo caso, potremmo considerare di aggiungere caratteristiche extra. Un modo semplice è utilizzare polinomi delle caratteristiche di input, il che porterebbe alla **regressione polinomiale**. In Scikit Learn, possiamo pre-calcolare automaticamente le caratteristiche polinomiali usando le pipeline: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Codifica delle varietà\n", + "### Varietà di codifica\n", "\n", - "In un mondo ideale, vorremmo essere in grado di prevedere i prezzi per diverse varietà di zucche utilizzando lo stesso modello. Per tenere conto della varietà, dobbiamo prima convertirla in forma numerica, o **codificarla**. Ci sono diversi modi per farlo:\n", + "Nel mondo ideale, vogliamo essere in grado di prevedere i prezzi per diverse varietà di zucca utilizzando lo stesso modello. Per tenere conto della varietà, dobbiamo prima convertirla in forma numerica, o **codificare**. Ci sono diversi modi in cui possiamo farlo:\n", "\n", - "* Una semplice codifica numerica che costruirà una tabella delle diverse varietà e poi sostituirà il nome della varietà con un indice in quella tabella. Questa non è la soluzione migliore per la regressione lineare, perché la regressione lineare tiene conto del valore numerico dell'indice, e il valore numerico probabilmente non è correlato numericamente con il prezzo.\n", - "* La codifica one-hot, che sostituirà la colonna `Variety` con 4 colonne diverse, una per ogni varietà, che conterranno 1 se la riga corrispondente appartiene a una determinata varietà, e 0 altrimenti.\n", + "* Codifica numerica semplice che costruirà una tabella di diverse varietà, e poi sostituirà il nome della varietà con un indice in quella tabella. Questa non è la migliore idea per la regressione lineare, perché la regressione lineare tiene conto del valore numerico dell'indice, e il valore numerico probabilmente non sarà correlato numericamente con il prezzo.\n", + "* Codifica one-hot, che sostituirà la colonna `Variety` con 4 colonne diverse, una per ogni varietà, che conterrà 1 se la riga corrispondente è della data varietà, e 0 altrimenti.\n", "\n", - "Il codice seguente mostra come possiamo codificare una varietà con il metodo one-hot:\n" + "Il codice qui sotto mostra come possiamo codificare una varietà con one-hot:\n" ] }, { @@ -940,7 +949,7 @@ "source": [ "### Regressione Lineare sulla Varietà\n", "\n", - "Ora utilizzeremo lo stesso codice di sopra, ma invece di `DayOfYear` useremo la nostra varietà codificata one-hot come input:\n" + "Useremo ora lo stesso codice di sopra, ma invece di `DayOfYear` useremo la nostra varietà codificata one-hot come input:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Possiamo anche provare a utilizzare altre caratteristiche nello stesso modo e combinarle con caratteristiche numeriche, come `Month` o `DayOfYear`:\n" + "Possiamo anche provare a usare altre caratteristiche allo stesso modo, combinandole con caratteristiche numeriche, come `Month` o `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Regressione Polinomiale\n", "\n", - "La regressione polinomiale può essere utilizzata anche con caratteristiche categoriche che sono codificate in one-hot. Il codice per addestrare la regressione polinomiale sarebbe essenzialmente lo stesso di quello che abbiamo visto sopra.\n" + "La regressione polinomiale può essere utilizzata anche con caratteristiche categoriche che sono codificate one-hot. Il codice per addestrare la regressione polinomiale sarebbe essenzialmente lo stesso che abbiamo visto sopra.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Disclaimer**: \nQuesto documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.\n" + "---\n\n\n**Esclusione di responsabilità**: \nQuesto documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T22:47:49+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "it" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pl/.co-op-translator.json b/translations/pl/.co-op-translator.json index a63e416d05..d97107ce4a 100644 --- a/translations/pl/.co-op-translator.json +++ b/translations/pl/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "pl" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T08:21:41+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:27:53+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "pl" }, @@ -90,8 +90,8 @@ "language_code": "pl" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:30:20+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:27:18+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "pl" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "pl" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:24:16+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "pl" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T08:11:46+00:00", diff --git a/translations/pl/1-Introduction/4-techniques-of-ML/README.md b/translations/pl/1-Introduction/4-techniques-of-ML/README.md index 00e8d9823c..69c6a97027 100644 --- a/translations/pl/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/pl/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Techniki uczenia maszynowego -Proces tworzenia, używania i utrzymywania modeli uczenia maszynowego oraz danych, które wykorzystują, różni się znacząco od wielu innych przepływów pracy w programowaniu. W tej lekcji rozwiejemy wątpliwości dotyczące tego procesu i przedstawimy główne techniki, które warto znać. Dowiesz się: +Proces budowania, używania i utrzymywania modeli uczenia maszynowego oraz danych, których używają, różni się znacznie od wielu innych przepływów pracy programistycznej. W tej lekcji rozwiejemy tajemnice tego procesu i przedstawimy główne techniki, które musisz znać. Nauczysz się: -- Jak zrozumieć procesy leżące u podstaw uczenia maszynowego na wysokim poziomie. -- Jak zgłębić podstawowe pojęcia, takie jak „modele”, „predykcje” i „dane treningowe”. +- Rozumieć procesy leżące u podstaw uczenia maszynowego na wysokim poziomie. +- Poznawać podstawowe pojęcia, takie jak „modele”, „prognozy” i „dane treningowe”. -## [Quiz przed lekcją](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ml/) -[![ML dla początkujących - Techniki uczenia maszynowego](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML dla początkujących - Techniki uczenia maszynowego") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć krótki film omawiający tę lekcję. +> 🎥 Kliknij powyższy obraz, aby obejrzeć krótki film omawiający tę lekcję. ## Wprowadzenie -Na wysokim poziomie, proces tworzenia systemów uczenia maszynowego (ML) składa się z kilku kroków: +Na wysokim poziomie, rzemiosło tworzenia procesów uczenia maszynowego (ML) składa się z kilku etapów: -1. **Określenie pytania**. Większość procesów ML zaczyna się od postawienia pytania, na które nie można odpowiedzieć za pomocą prostego programu warunkowego lub silnika opartego na regułach. Pytania te często dotyczą przewidywań opartych na zbiorze danych. -2. **Zbieranie i przygotowanie danych**. Aby móc odpowiedzieć na pytanie, potrzebujesz danych. Jakość, a czasem ilość danych, będzie decydować o tym, jak dobrze możesz odpowiedzieć na swoje pytanie. Wizualizacja danych jest ważnym aspektem tego etapu. Ten etap obejmuje również podział danych na grupy treningowe i testowe w celu budowy modelu. -3. **Wybór metody treningowej**. W zależności od pytania i charakteru danych, musisz wybrać sposób trenowania modelu, aby najlepiej odzwierciedlał dane i dokonywał trafnych przewidywań. To część procesu ML, która wymaga specjalistycznej wiedzy i często dużej ilości eksperymentów. -4. **Trenowanie modelu**. Korzystając z danych treningowych, używasz różnych algorytmów, aby nauczyć model rozpoznawania wzorców w danych. Model może wykorzystywać wewnętrzne wagi, które można dostosować, aby preferować określone części danych nad innymi, co prowadzi do lepszego modelu. -5. **Ocena modelu**. Używasz danych, których model wcześniej nie widział (danych testowych), aby sprawdzić, jak model działa. -6. **Dostrajanie parametrów**. Na podstawie wyników modelu możesz powtórzyć proces, używając różnych parametrów lub zmiennych, które kontrolują zachowanie algorytmów używanych do trenowania modelu. -7. **Przewidywanie**. Użyj nowych danych wejściowych, aby sprawdzić dokładność modelu. +1. **Zdecyduj o pytaniu**. Większość procesów ML zaczyna się od postawienia pytania, na które nie można odpowiedzieć za pomocą prostego programu warunkowego lub silnika opartego na regułach. Pytania te często dotyczą prognoz opartych na zbiorze danych. +2. **Zbierz i przygotuj dane**. Aby odpowiedzieć na swoje pytanie, potrzebujesz danych. Jakość, a czasami ilość danych, określi, jak dobrze możesz odpowiedzieć na pytanie. Wizualizacja danych jest ważnym aspektem tej fazy. Ta faza obejmuje także podział danych na grupę treningową i testową do budowy modelu. +3. **Wybierz metodę treningu**. W zależności od pytania i charakteru danych musisz wybrać, jak chcesz trenować model, aby najlepiej odzwierciedlał dane i wykonywał dokładne prognozy. To część procesu ML, która wymaga specjalistycznej wiedzy i często sporej ilości eksperymentów. +4. **Wytrenuj model**. Korzystając z danych treningowych, zastosujesz różne algorytmy do wytrenowania modelu, aby rozpoznawał wzorce w danych. Model może wykorzystywać wewnętrzne wagi, które można dostosowywać, aby faworyzować pewne części danych i zbudować lepszy model. +5. **Oceń model**. Używasz dotychczas niewidzianych danych (danych testowych) z twojego zbioru, aby sprawdzić, jak model działa. +6. **Dostrajanie parametrów**. Na podstawie wydajności modelu możesz powtórzyć proces, stosując różne parametry lub zmienne, które kontrolują zachowanie algorytmów używanych do trenowania modelu. +7. **Prognozuj**. Użyj nowych danych wejściowych do przetestowania dokładności modelu. -## Jakie pytanie zadać? +## Jakie pytanie zadać -Komputery są szczególnie dobre w odkrywaniu ukrytych wzorców w danych. Ta umiejętność jest bardzo pomocna dla badaczy, którzy mają pytania dotyczące określonej dziedziny, na które nie można łatwo odpowiedzieć, tworząc silnik oparty na regułach warunkowych. Na przykład, w zadaniu aktuarialnym, data scientist może skonstruować ręcznie stworzone reguły dotyczące śmiertelności palaczy w porównaniu z niepalącymi. +Komputery są szczególnie dobre w odkrywaniu ukrytych wzorców w danych. Ta użyteczność jest niezwykle pomocna dla badaczy, którzy mają pytania dotyczące danej dziedziny, na które trudno odpowiedzieć, tworząc warunkowy silnik reguł. Na przykład, przy zadaniu aktuarialnym, data scientist może zbudować ręcznie opracowane reguły dotyczące śmiertelności palaczy w porównaniu z niepalącymi. -Jednak gdy do równania wprowadza się wiele innych zmiennych, model ML może okazać się bardziej efektywny w przewidywaniu przyszłych wskaźników śmiertelności na podstawie historii zdrowotnej. Bardziej optymistycznym przykładem może być przewidywanie pogody na kwiecień w danej lokalizacji na podstawie danych takich jak szerokość geograficzna, długość geograficzna, zmiany klimatyczne, bliskość oceanu, wzorce prądów strumieniowych i inne. +Gdy do równania wprowadzonych zostanie wiele innych zmiennych, model ML może okazać się bardziej efektywny w przewidywaniu przyszłych wskaźników śmiertelności na podstawie historii zdrowotnej. Bardziej optymistycznym przykładem może być prognozowanie pogody na kwiecień dla danego miejsca na podstawie danych, które obejmują szerokość geograficzną, długość geograficzną, zmiany klimatu, bliskość oceanu, wzorce prądów strumieniowych i więcej. -✅ Ta [prezentacja](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) dotycząca modeli pogodowych oferuje historyczną perspektywę wykorzystania ML w analizie pogody. +✅ Ten [pakiet slajdów](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) dotyczący modeli pogodowych oferuje historyczną perspektywę wykorzystania ML w analizie pogodowej. -## Zadania przed budową modelu +## Zadania przedbudowy -Przed rozpoczęciem budowy modelu musisz wykonać kilka zadań. Aby przetestować swoje pytanie i sformułować hipotezę na podstawie przewidywań modelu, musisz zidentyfikować i skonfigurować kilka elementów. +Zanim zaczniesz budować model, musisz wykonać kilka zadań. Aby przetestować swoje pytanie i sformułować hipotezę na podstawie prognoz modelu, musisz zidentyfikować i skonfigurować kilka elementów. ### Dane -Aby móc odpowiedzieć na pytanie z jakąkolwiek pewnością, potrzebujesz odpowiedniej ilości danych o właściwym typie. Na tym etapie musisz zrobić dwie rzeczy: +Aby z dużą pewnością odpowiedzieć na swoje pytanie, potrzebujesz odpowiedniej ilości danych odpowiedniego typu. W tym momencie musisz wykonać dwie rzeczy: -- **Zbierz dane**. Mając na uwadze poprzednią lekcję dotyczącą sprawiedliwości w analizie danych, zbieraj dane ostrożnie. Zwróć uwagę na źródła tych danych, wszelkie wrodzone uprzedzenia, które mogą zawierać, i dokumentuj ich pochodzenie. -- **Przygotuj dane**. Proces przygotowania danych obejmuje kilka kroków. Możesz potrzebować zestawić dane i znormalizować je, jeśli pochodzą z różnych źródeł. Możesz poprawić jakość i ilość danych za pomocą różnych metod, takich jak konwersja ciągów znaków na liczby (jak robimy w [Klasteryzacji](../../5-Clustering/1-Visualize/README.md)). Możesz również wygenerować nowe dane na podstawie oryginalnych (jak robimy w [Klasyfikacji](../../4-Classification/1-Introduction/README.md)). Możesz wyczyścić i edytować dane (jak zrobimy przed lekcją dotyczącą [Aplikacji Webowej](../../3-Web-App/README.md)). Na koniec możesz również potrzebować ich losowego uporządkowania i przetasowania, w zależności od technik treningowych. +- **Zbierz dane**. Mając na uwadze poprzednią lekcję na temat równości w analizie danych, zbieraj dane ostrożnie. Bądź świadomy źródeł tych danych, ewentualnych wbudowanych uprzedzeń oraz dokumentuj ich pochodzenie. +- **Przygotuj dane**. W procesie przygotowania danych jest kilka etapów. Może być konieczne zebranie danych i ich normalizacja, jeśli pochodzą z różnych źródeł. Możesz poprawić jakość i ilość danych poprzez różne metody, takie jak konwersja łańcuchów znaków na liczby (jak robimy w [Klasteryzacji](../../5-Clustering/1-Visualize/README.md)). Możesz także wygenerować nowe dane na bazie oryginalnych (jak robimy w [Klasyfikacji](../../4-Classification/1-Introduction/README.md)). Możesz oczyścić i edytować dane (jak zrobimy przed lekcją [Aplikacja Webowa](../../3-Web-App/README.md)). Na koniec może być także potrzebne losowe uporządkowanie i przetasowanie danych, zależnie od wybranych technik treningowych. -✅ Po zebraniu i przetworzeniu danych, poświęć chwilę, aby sprawdzić, czy ich struktura pozwoli Ci odpowiedzieć na zamierzone pytanie. Może się okazać, że dane nie sprawdzą się dobrze w Twoim zadaniu, jak odkrywamy w naszych lekcjach dotyczących [Klasteryzacji](../../5-Clustering/1-Visualize/README.md)! +✅ Po zebraniu i przetworzeniu danych, poświęć chwilę, by sprawdzić, czy ich forma pozwoli na odpowiedź na planowane pytanie. Może się okazać, że dane nie sprawdzą się dobrze przy danym zadaniu, co odkrywamy w lekcjach [Klasteryzacji](../../5-Clustering/1-Visualize/README.md)! ### Cechy i cel -[Cechy](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) to mierzalne właściwości Twoich danych. W wielu zbiorach danych są one wyrażone jako nagłówki kolumn, takie jak „data”, „rozmiar” czy „kolor”. Zmienna cechy, zwykle reprezentowana jako `X` w kodzie, reprezentuje zmienną wejściową, która będzie używana do trenowania modelu. +[Cechą](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) jest mierzalna właściwość danych. W wielu zbiorach danych jest ona wyrażana jako nagłówek kolumny, taki jak 'data', 'rozmiar' lub 'kolor'. Zmienna cechy, zwykle oznaczana w kodzie jako `X`, reprezentuje zmienną wejściową, która będzie używana do trenowania modelu. -Cel to rzecz, którą próbujesz przewidzieć. Cel, zwykle reprezentowany jako `y` w kodzie, odpowiada na pytanie, które próbujesz zadać swoim danym: w grudniu, jaki **kolor** dyni będzie najtańszy? W San Francisco, które dzielnice będą miały najlepsze **ceny** nieruchomości? Czasami cel nazywany jest również atrybutem etykiety. +Cel to rzecz, którą próbujesz przewidzieć. Cel, zwykle oznaczany w kodzie jako `y`, reprezentuje odpowiedź na pytanie, które zadajesz danym: w grudniu, jakie kolory dyni będą najtańsze? w San Francisco, które dzielnice będą miały najlepsze ceny nieruchomości? Czasem cel nazywany jest też etykietą (label). ### Wybór zmiennej cechy -🎓 **Wybór cech i ekstrakcja cech** Jak wybrać odpowiednią zmienną podczas budowy modelu? Prawdopodobnie przejdziesz przez proces wyboru cech lub ekstrakcji cech, aby wybrać odpowiednie zmienne dla najbardziej wydajnego modelu. Nie są to jednak te same procesy: „Ekstrakcja cech tworzy nowe cechy na podstawie funkcji oryginalnych cech, podczas gdy wybór cech zwraca podzbiór cech.” ([źródło](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Wybór cech i ekstrakcja cech** Skąd wiesz, którą zmienną wybrać przy budowie modelu? Prawdopodobnie przejdziesz przez proces wyboru cech lub ekstrakcji cech, aby wybrać odpowiednie zmienne do najlepszego modelu. Nie są to jednak tożsame procesy: „Ekstrakcja cech tworzy nowe cechy na podstawie funkcji oryginalnych cech, natomiast wybór cech zwraca podzbiór cech.” ([źródło](https://wikipedia.org/wiki/Feature_selection)) -### Wizualizacja danych +### Wizualizuj swoje dane -Ważnym aspektem narzędzi data scientist jest możliwość wizualizacji danych za pomocą kilku doskonałych bibliotek, takich jak Seaborn czy MatPlotLib. Reprezentowanie danych wizualnie może pozwolić Ci odkryć ukryte korelacje, które możesz wykorzystać. Twoje wizualizacje mogą również pomóc w odkryciu uprzedzeń lub niezrównoważonych danych (jak odkrywamy w [Klasyfikacji](../../4-Classification/2-Classifiers-1/README.md)). +Ważnym elementem zestawu narzędzi data scientistów jest możliwość wizualizacji danych przy użyciu znakomitych bibliotek, takich jak Seaborn czy MatPlotLib. Graficzne przedstawienie danych może pozwolić na odkrycie ukrytych korelacji, które można wykorzystać. Wizualizacje mogą także pomóc w wykryciu uprzedzeń lub niezrównoważonych danych (co odkrywamy w [Klasyfikacji](../../4-Classification/2-Classifiers-1/README.md)). ### Podział zbioru danych -Przed treningiem musisz podzielić swój zbiór danych na dwie lub więcej części o nierównych rozmiarach, które nadal dobrze reprezentują dane. +Przed treningiem musisz podzielić zbiór danych na dwie lub więcej części o nierównej wielkości, które nadal dobrze reprezentują dane. -- **Trening**. Ta część zbioru danych jest dopasowana do Twojego modelu, aby go wytrenować. Ten zestaw stanowi większość oryginalnego zbioru danych. -- **Testowanie**. Zestaw testowy to niezależna grupa danych, często pochodząca z oryginalnych danych, którą używasz do potwierdzenia wydajności zbudowanego modelu. -- **Walidacja**. Zestaw walidacyjny to mniejsza niezależna grupa przykładów, którą używasz do dostrajania hiperparametrów modelu lub jego architektury, aby poprawić model. W zależności od rozmiaru danych i pytania, które zadajesz, możesz nie potrzebować budować tego trzeciego zestawu (jak zauważamy w [Prognozowaniu szeregów czasowych](../../7-TimeSeries/1-Introduction/README.md)). +- **Treningowy**. Ta część zbioru danych służy do dopasowania modelu i jego treningu. Ta grupa stanowi większość oryginalnego zbioru danych. +- **Testowy**. Zbiór testowy to niezależna grupa danych, często wyodrębniona z oryginalnego zbioru, którą używasz do potwierdzenia jakości wytrenowanego modelu. +- **Walidacyjny**. Zbiór walidacyjny to mniejsza, niezależna grupa przykładów, którą używasz do dostrojenia hiperparametrów lub architektury, aby poprawić model. W zależności od wielkości twoich danych i pytania, które zadajesz, możesz nie potrzebować tworzyć tego trzeciego zbioru (jak zaznaczamy w [Prognozowaniu szeregów czasowych](../../7-TimeSeries/1-Introduction/README.md)). ## Budowa modelu -Korzystając z danych treningowych, Twoim celem jest zbudowanie modelu, czyli statystycznej reprezentacji danych, używając różnych algorytmów do jego **trenowania**. Trenowanie modelu pozwala mu na analizę danych i dokonywanie założeń dotyczących wzorców, które odkrywa, weryfikuje i akceptuje lub odrzuca. +Korzystając z danych treningowych, twoim celem jest zbudowanie modelu, czyli statystycznej reprezentacji danych, używając różnych algorytmów do jego **wytrenowania**. Trening modelu polega na „ekspozycji” modelu na dane, co pozwala mu dokonywać założeń na temat rozpoznawanych wzorców, które następnie weryfikuje, akceptuje lub odrzuca. -### Wybór metody treningowej +### Wybierz metodę treningu -W zależności od pytania i charakteru danych wybierzesz metodę ich trenowania. Przeglądając [dokumentację Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - którą używamy w tym kursie - możesz odkryć wiele sposobów trenowania modelu. W zależności od doświadczenia możesz musieć wypróbować kilka różnych metod, aby zbudować najlepszy model. Prawdopodobnie przejdziesz przez proces, w którym data scientist ocenia wydajność modelu, podając mu dane, których wcześniej nie widział, sprawdzając dokładność, uprzedzenia i inne problemy obniżające jakość, oraz wybierając najbardziej odpowiednią metodę treningową dla danego zadania. +W zależności od pytania i charakteru danych wybierzesz metodę treningu. Przeglądając [dokumentację Scikit-learn](https://scikit-learn.org/stable/user_guide.html) – której używamy w tym kursie – możesz poznać wiele sposobów trenowania modelu. W zależności od doświadczenia, możesz spróbować kilku różnych metod, aby zbudować najlepszy model. Najczęściej proces ten obejmuje ocenę wydajności modelu przez data scientistów - podają im dane niewidziane wcześniej, sprawdzają dokładność, uprzedzenia i inne problemy obniżające jakość, a następnie wybierają najbardziej odpowiednią metodę treningu. -### Trenowanie modelu +### Wytrenuj model -Mając dane treningowe, jesteś gotowy, aby „dopasować” je do stworzenia modelu. Zauważysz, że w wielu bibliotekach ML znajdziesz kod „model.fit” - to właśnie wtedy przesyłasz zmienną cechy jako tablicę wartości (zwykle „X”) i zmienną celu (zwykle „y”). +Mając dane treningowe, jesteś gotów „dopasować” je, aby stworzyć model. W wielu bibliotekach ML znajdziesz polecenie 'model.fit' - właśnie wtedy przesyłasz swoją zmienną cechy jako tablicę wartości (zwykle 'X') oraz zmienną celu (zwykle 'y'). -### Ocena modelu +### Oceń model -Po zakończeniu procesu treningowego (może to zająć wiele iteracji, czyli „epok”, aby wytrenować duży model), będziesz mógł ocenić jakość modelu, używając danych testowych do oceny jego wydajności. Te dane są podzbiorem oryginalnych danych, których model wcześniej nie analizował. Możesz wydrukować tabelę metryk dotyczących jakości modelu. +Po zakończeniu procesu treningowego (który może wymagać wielu iteracji, zwanych 'epokami', by wytrenować duży model), możesz ocenić jakość modelu, używając danych testowych do pomiaru jego wydajności. Dane te to podzbiór oryginalnych danych, których model wcześniej nie analizował. Możesz wyświetlić tabelę z metrykami jakości swojego modelu. 🎓 **Dopasowanie modelu** -W kontekście uczenia maszynowego dopasowanie modelu odnosi się do dokładności funkcji modelu, gdy próbuje analizować dane, których nie zna. +W kontekście uczenia maszynowego dopasowanie modelu odnosi się do dokładności funkcji leżącej u podstaw modelu podczas próby analizy nieznanych mu danych. -🎓 **Niedopasowanie** i **przeuczenie** to częste problemy, które obniżają jakość modelu, gdy model dopasowuje się albo zbyt słabo, albo zbyt dobrze. Powoduje to, że model dokonuje przewidywań albo zbyt ściśle związanych, albo zbyt luźno związanych z danymi treningowymi. Model przeuczony przewiduje dane treningowe zbyt dobrze, ponieważ nauczył się zbyt dobrze szczegółów i szumów danych. Model niedopasowany nie jest dokładny, ponieważ nie potrafi ani dokładnie analizować danych treningowych, ani danych, których jeszcze „nie widział”. +🎓 **Niedopasowanie** i **przeuczenie** to częste problemy obniżające jakość modelu, gdy model dopasowuje się albo zbyt słabo, albo zbyt mocno. Powoduje to, że prognozy modelu są zbyt dokładnie (overfit) lub zbyt niedokładnie (underfit) dopasowane do danych treningowych. Model overfit przewiduje dane treningowe zbyt dokładnie, ponieważ zbyt dobrze poznał szczegóły i szumy danych. Model underfit jest niedokładny, ponieważ nie potrafi ani poprawnie analizować danych treningowych, ani danych, których wcześniej nie „widział”. -![model przeuczony](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/pl/overfitting.1c132d92bfd93cb6.webp) > Infografika autorstwa [Jen Looper](https://twitter.com/jenlooper) ## Dostrajanie parametrów -Po zakończeniu początkowego treningu, obserwuj jakość modelu i rozważ jego poprawę poprzez dostosowanie „hiperparametrów”. Przeczytaj więcej o tym procesie [w dokumentacji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Gdy wstępny trening jest ukończony, obserwuj jakość modelu i rozważ jego ulepszenie poprzez dostrajanie 'hiperparametrów'. Więcej informacji o tym procesie znajdziesz [w dokumentacji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Przewidywanie +## Prognozowanie -To moment, w którym możesz użyć zupełnie nowych danych, aby przetestować dokładność swojego modelu. W „zastosowanym” środowisku ML, gdzie budujesz zasoby internetowe do użycia modelu w produkcji, proces ten może obejmować zbieranie danych od użytkownika (np. naciśnięcie przycisku), aby ustawić zmienną i przesłać ją do modelu w celu wnioskowania lub oceny. +To moment, w którym możesz użyć całkowicie nowych danych, aby przetestować dokładność modelu. W praktycznym zastosowaniu ML, gdzie budujesz zasoby webowe do użycia modelu w produkcji, proces ten może wiązać się z pozyskaniem danych od użytkownika (np. naciśnięcie przycisku), ustawieniem zmiennej i przesłaniem jej do modelu do inferencji, czyli oceny. -W tych lekcjach odkryjesz, jak używać tych kroków do przygotowania, budowy, testowania, oceny i przewidywania - wszystkie gesty data scientist i więcej, w miarę jak postępujesz w swojej podróży, aby zostać „full stack” inżynierem ML. +W tych lekcjach poznasz, jak korzystać z tych kroków, aby przygotować, zbudować, przetestować, ocenić i prognozować – wszystkie gesty data scientista i jeszcze więcej, na drodze do zostania inżynierem ML 'full stack'. --- ## 🚀Wyzwanie -Narysuj diagram przepływu przedstawiający kroki praktyka ML. Gdzie widzisz siebie teraz w tym procesie? Gdzie przewidujesz, że napotkasz trudności? Co wydaje się łatwe? +Narysuj schemat blokowy odzwierciedlający kroki praktyka ML. Gdzie widzisz siebie obecnie w tym procesie? Gdzie przewidujesz trudności? Co wydaje ci się łatwe? -## [Quiz po lekcji](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) -## Przegląd i samodzielna nauka +## Powtórka i samodzielna nauka -Poszukaj w internecie wywiadów z data scientistami, którzy omawiają swoją codzienną pracę. Oto [jeden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Wyszukaj w internecie wywiady z data scientistami, którzy opowiadają o swojej codziennej pracy. Oto [jeden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Zadanie -[Przeprowadź wywiad z data scientistem](assignment.md) +[Przeprowadź wywiad z data scientistą](assignment.md) --- + **Zastrzeżenie**: -Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o krytycznym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file +Dokument ten został przetłumaczony za pomocą usługi tłumaczeń AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dokładamy starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w języku źródłowym powinien być uznawany za wersję autorytatywną. W przypadku informacji o kluczowym znaczeniu zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. + \ No newline at end of file diff --git a/translations/pl/2-Regression/3-Linear/README.md b/translations/pl/2-Regression/3-Linear/README.md index 19cf0769ba..9cee35f0f0 100644 --- a/translations/pl/2-Regression/3-Linear/README.md +++ b/translations/pl/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Zbuduj model regresji za pomocą Scikit-learn: regresja na cztery sposoby +# Budowanie modelu regresji za pomocą Scikit-learn: cztery sposoby regresji ## Notatka dla początkujących -Regresja liniowa jest stosowana, gdy chcemy przewidzieć **wartość numeryczną** (na przykład cenę domu, temperaturę lub sprzedaż). -Działa poprzez znalezienie prostej linii, która najlepiej reprezentuje zależność między cechami wejściowymi a wyjściem. +Regresja liniowa jest używana, gdy chcemy przewidzieć **wartość liczbową** (na przykład cenę domu, temperaturę lub sprzedaż). +Działa przez znalezienie prostej, która najlepiej reprezentuje zależność między cechami wejściowymi a wyjściem. -W tej lekcji skupiamy się na zrozumieniu koncepcji, zanim przejdziemy do bardziej zaawansowanych technik regresji. -![Infografika regresji liniowej vs. wielomianowej](../../../../translated_images/pl/linear-polynomial.5523c7cb6576ccab.webp) +W tej lekcji skupimy się na zrozumieniu koncepcji, zanim przejdziemy do bardziej zaawansowanych technik regresji. +![Linear vs polynomial regression infographic](../../../../translated_images/pl/linear-polynomial.5523c7cb6576ccab.webp) > Infografika autorstwa [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Quiz przedwykładowy](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ta lekcja jest dostępna w R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Ta lekcja jest też dostępna w R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Wprowadzenie -Do tej pory poznaliście, czym jest regresja na podstawie przykładowych danych z zestawu danych dotyczącego cen dyni, które będziemy wykorzystywać w trakcie tej lekcji. Wizualizowaliście je także za pomocą Matplotlib. +Do tej pory zapoznaliście się z tym, czym jest regresja na podstawie przykładowych danych z zestawu danych o cenach dyni, który będziemy wykorzystywać w całej lekcji. Wizualizowaliście je również za pomocą Matplotlib. -Teraz jesteście gotowi, by zagłębić się bardziej w regresję dla ML. Podczas gdy wizualizacja pozwala zrozumieć dane, prawdziwa siła uczenia maszynowego pochodzi z _trenowania modeli_. Modele są trenowane na danych historycznych, aby automatycznie wychwytywać zależności w danych i umożliwiają przewidywanie wyników dla nowych danych, których model wcześniej nie widział. +Teraz jesteście gotowi, by zagłębić się w regresję w ML. Podczas gdy wizualizacja pozwala zrozumieć dane, prawdziwa moc uczenia maszynowego pochodzi z _trenowania modeli_. Modele są trenowane na danych historycznych, aby automatycznie uchwycić zależności danych, i pozwalają przewidywać wyniki dla nowych danych, których model wcześniej nie widział. -W tej lekcji dowiecie się więcej o dwóch rodzajach regresji: _podstawowej regresji liniowej_ i _regresji wielomianowej_, wraz z wyjaśnieniem matematyki stojącej za tymi technikami. Te modele pozwolą nam przewidzieć ceny dyni w zależności od różnych danych wejściowych. +W tej lekcji poznacie dwa typy regresji: _podstawową regresję liniową_ i _regresję wielomianową_, wraz z częścią matematyki leżącej u podstaw tych technik. Te modele pozwolą nam przewidywać ceny dyni w zależności od różnych danych wejściowych. -[![ML dla początkujących - Zrozumienie regresji liniowej](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML dla początkujących - Zrozumienie regresji liniowej") +[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Kliknij powyższy obrazek, aby obejrzeć krótki przegląd regresji liniowej. +> 🎥 Kliknij powyższy obraz, aby obejrzeć krótki film podsumowujący regresję liniową. -> W całym tym kursie zakładamy minimalną znajomość matematyki i staramy się uczynić ją dostępną dla uczniów z innych dziedzin, więc zwracaj uwagę na notatki, 🧮 wzmianki, diagramy i inne narzędzia wspomagające naukę. +> W całym kursie zakładamy minimalną znajomość matematyki i staramy się uczynić go dostępnym dla studentów z innych dziedzin, więc zwracaj uwagę na notatki, 🧮 uwagi, diagramy i inne narzędzia pomagające zrozumieć materiał. ### Wymagania wstępne -Powinieneś już znać strukturę danych dotyczących dyni, które badamy. Możesz je znaleźć wstępnie załadowane i wyczyszczone w pliku _notebook.ipynb_ towarzyszącym tej lekcji. W tym pliku cena dyni jest wyświetlana za korzec w nowej ramce danych. Upewnij się, że potrafisz uruchomić te notatniki w kernelach w Visual Studio Code. +Powinieneś już znać strukturę danych o dyniach, które badamy. Znajdziesz je wstępnie załadowane i wyczyszczone w pliku _notebook.ipynb_ dołączonym do tej lekcji. W pliku cena dyni jest wyświetlana za kosz (bushel) w nowej ramce danych. Upewnij się, że potrafisz uruchomić te notatniki w kernelach w Visual Studio Code. ### Przygotowanie -Dla przypomnienia, ładujesz te dane, aby móc zadawać im pytania. +Przypominamy, że ładujesz te dane, aby móc zadawać im pytania. -- Kiedy jest najlepszy czas na kupno dyni? -- Jakiej ceny mogę oczekiwać za skrzynkę miniaturowych dyń? -- Czy powinienem kupić je w półkorcowych koszach czy w pudełku o pojemności 1 1/9 korca? -Zanurzmy się dalej w te dane. +- Kiedy jest najlepszy czas na zakup dyń? +- Jaką cenę mogę się spodziewać za opakowanie mini dyń? +- Czy powinienem kupować je w połowie kosza (half-bushel), czy w kartonie 1 1/9 bushel? +Zanurzmy się głębiej w te dane. -W poprzedniej lekcji stworzyłeś ramkę danych Pandas i wypełniłeś ją częścią oryginalnego zestawu danych, standaryzując ceny za korzec. Zrobienie tego pozwoliło zebrać około 400 punktów danych tylko dla miesięcy jesiennych. +W poprzedniej lekcji utworzyłeś ramkę danych Pandas i wypełniłeś ją częścią oryginalnego zestawu, standaryzując ceny za kosz. Jednak uzyskałeś wtedy tylko około 400 punktów danych i tylko za miesiące jesienne. -Spójrz na dane, które wstępnie załadowaliśmy w notatniku towarzyszącym tej lekcji. Dane są już załadowane, a na wykresie rozrzutu wstępnie pokazano dane miesięczne. Być może możemy uzyskać trochę więcej szczegółów o naturze danych, oczyszczając je bardziej. +Spójrz na dane, które wstępnie załadowaliśmy do notatnika towarzyszącego tej lekcji. Dane są wczytane, a na wykresie punktowym pokazano dane miesięczne. Może uda się uzyskać więcej szczegółów na temat charakteru danych, czyszcząc je bardziej. ## Linia regresji liniowej -Jak nauczyliście się w Lekcji 1, celem regresji liniowej jest stworzenie linii, która: +Jak się nauczyłeś w Lekcji 1, celem ćwiczenia z regresji liniowej jest możliwość narysowania linii, która: -- **Pokaże zależności między zmiennymi**. -- **Pozwoli na dokonywanie predykcji** nowych punktów danych względem tej linii. +- **Pokazuje zależności zmiennych**. Pokazuje związek między zmiennymi +- **Dokonuje prognoz**. Dokonuje dokładnych przewidywań, gdzie nowy punkt danych będzie się znajdował względem tej linii. -Typowo dla **Metody najmniejszych kwadratów** rysowana jest właśnie taka linia. Termin "Najmniejszych kwadratów" odnosi się do procesu minimalizowania całkowitego błędu naszego modelu. Dla każdego punktu danych mierzymy pionową odległość (zwaną resztą) pomiędzy rzeczywistym punktem a naszą linią regresji. +Typową metodą do rysowania takiej linii jest **Regresja najmniejszych kwadratów**. Termin "najmniejsze kwadraty" odnosi się do procesu minimalizowania całkowitego błędu w naszym modelu. Dla każdego punktu danych mierzymy pionową odległość (zwaną resztą) między rzeczywistym punktem a naszą linią regresji. -Te odległości kwadratujemy z dwóch głównych powodów: +Kwadratujemy te odległości z dwóch głównych powodów: -1. **Wielkość ważniejsza od kierunku:** Chcemy traktować błąd -5 tak samo jak błąd +5. Kwadrat zamienia wszystkie wartości na dodatnie. +1. **Wielkość zamiast kierunku:** Chcemy traktować błąd -5 tak samo jak błąd +5. Kwadratując, wszystkie wartości stają się dodatnie. -2. **Karanie wartości odstających:** Kwadratowanie nadaje większą wagę większym błędom, zmuszając linię do bycia bliżej punktów odstających. +2. **Karzemy wartości odstające:** Kwadratowanie daje większą wagę większym błędom, zmuszając linię, aby była bliżej punktów odległych. -Następnie sumujemy wszystkie te kwadraty. Naszym celem jest znalezienie właśnie takiej linii, dla której ta suma jest najmniejsza — stąd nazwa "Najmniejszych kwadratów". +Następnie sumujemy wszystkie te wartości kwadratowe. Naszym celem jest znalezienie konkretnej linii, dla której ta suma jest najmniejsza (najmniejsza możliwa wartość) — stąd nazwa "najmniejszych kwadratów". -> **🧮 Pokaż mi matematykę** -> -> Ta linia, zwana _linią najlepszego dopasowania_, może być wyrażona za pomocą [równania](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Pokaż mi matematykę** +> +> Ta linia, nazywana _linią najlepszego dopasowania_, może być wyrażona za pomocą [równania](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` > -> `X` to 'zmienna objaśniająca'. `Y` to 'zmienna zależna'. Nachylenie linii to `b`, a `a` to punkt przecięcia z osią Y, czyli wartość `Y` gdy `X = 0`. +> `X` to 'zmienna objaśniająca'. `Y` to 'zmienna zależna'. Nachylenie linii to `b`, a `a` to punkt przecięcia z osią y, czyli wartość `Y` gdy `X = 0`. > ->![obliczanie nachylenia](../../../../translated_images/pl/slope.f3c9d5910ddbfcf9.webp) +>![calculate the slope](../../../../translated_images/pl/slope.f3c9d5910ddbfcf9.webp) > > Najpierw obliczamy nachylenie `b`. Infografika autorstwa [Jen Looper](https://twitter.com/jenlooper) > -> Innymi słowy, odnosząc się do naszego oryginalnego pytania o dynie: "przewidzieć cenę dyni za korzec w zależności od miesiąca", `X` będzie odpowiadać cenie, a `Y` będzie odpowiadać miesiącowi sprzedaży. +> Innymi słowy, odnosząc się do oryginalnego pytania dla danych o dyniach: "przewidzieć cenę dyni za kosz według miesiąca", `X` oznacza cenę, a `Y` miesiąc sprzedaży. > ->![uzupełnij równanie](../../../../translated_images/pl/calculation.a209813050a1ddb1.webp) +>![complete the equation](../../../../translated_images/pl/calculation.a209813050a1ddb1.webp) > -> Oblicz wartość Y. Jeśli płacisz około 4 dolarów, musi to być kwiecień! Infografika autorstwa [Jen Looper](https://twitter.com/jenlooper) +> Oblicz wartość Y. Jeśli płacisz około 4 dolarów, to musi być kwiecień! Infografika autorstwa [Jen Looper](https://twitter.com/jenlooper) > -> Matematyka obliczająca linię musi uwzględniać nachylenie, które zależy też od punktu przecięcia, czyli wartości `Y` gdy `X = 0`. +> Matematyka obliczająca linię musi uwzględniać nachylenie linii, które zależy również od punktu przecięcia, czyli gdzie `Y` znajduje się gdy `X = 0`. > -> Możesz zobaczyć metodę obliczania tych wartości na stronie [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Odwiedź także [Ten kalkulator najmniejszych kwadratów](https://www.mathsisfun.com/data/least-squares-calculator.html), aby zobaczyć, jak wartości liczb wpływają na linię. +> Możesz zobaczyć sposób obliczeń tych wartości na stronie [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Odwiedź też [ten kalkulator najmniejszych kwadratów](https://www.mathsisfun.com/data/least-squares-calculator.html), aby zobaczyć, jak wartości liczb wpływają na linię. ## Korelacja -Jeszcze jedno pojęcie, które warto poznać, to **współczynnik korelacji** między danymi zmiennymi X i Y. Korzystając z wykresu rozrzutu, można szybko zwizualizować ten współczynnik. Wykres z punktami ułożonymi w porządną linię ma wysoką korelację, natomiast wykres, gdzie punkty są rozrzucone wszędzie pomiędzy X i Y, ma niską korelację. +Jeszcze jedno pojęcie do zrozumienia to **współczynnik korelacji** między danymi zmiennymi X i Y. Na wykresie punktowym można szybko zwizualizować ten współczynnik. Wykres z punktami ułożonymi w zgrabną linię ma wysoką korelację, natomiast wykres z punktami rozrzuconymi wszędzie między X a Y ma niską korelację. -Dobry model regresji liniowej będzie miał wysoki (bliższy 1 niż 0) współczynnik korelacji wyznaczony metodą najmniejszych kwadratów z linią regresji. +Dobry model regresji liniowej będzie miał wysoki (bliższy 1 niż 0) współczynnik korelacji, korzystając z metody regresji najmniejszych kwadratów z linią regresji. -✅ Uruchom notatnik dołączony do tej lekcji i spójrz na wykres rozrzutu Miesiąc a Cena. Czy dane łączące miesiąc z ceną sprzedaży dyni mają wysoką czy niską korelację według Twojej wizualnej interpretacji wykresu rozrzutu? Czy to się zmienia, jeśli użyjesz bardziej szczegółowej miary niż `Miesiąc`, np. *dzień roku* (liczba dni od początku roku)? +✅ Uruchom notatnik towarzyszący tej lekcji i spójrz na wykres rozrzutu Miesiąc do Cena. Czy dane łączące Miesiąc z Ceną za dynie wydają się mieć wysoką czy niską korelację, według Twojej wizualnej interpretacji wykresu? Czy to się zmienia, jeśli użyjesz bardziej szczegółowej miary zamiast `Month`, np. *dnia roku* (czyli liczby dni od początku roku)? -W poniższym kodzie założymy, że wyczyściliśmy dane i uzyskaliśmy ramkę danych o nazwie `new_pumpkins`, podobną do poniższej: +W poniższym kodzie założymy, że dane zostały wyczyszczone i otrzymaliśmy ramkę danych `new_pumpkins`, podobną do następującej: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +70 | 9 | 267 | RODZAJ NA CIASTO | BALTIMORE | Kartony 1 1/9 bushel | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | RODZAJ NA CIASTO | BALTIMORE | Kartony 1 1/9 bushel | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | RODZAJ NA CIASTO | BALTIMORE | Kartony 1 1/9 bushel | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | RODZAJ NA CIASTO | BALTIMORE | Kartony 1 1/9 bushel | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | RODZAJ NA CIASTO | BALTIMORE | Kartony 1 1/9 bushel | 15.0 | 15.0 | 13.636364 -> Kod do oczyszczenia danych jest dostępny w [`notebook.ipynb`](notebook.ipynb). Wykonaliśmy te same kroki czyszczenia, co w poprzedniej lekcji, i obliczyliśmy kolumnę `DayOfYear` według następującego wyrażenia: +> Kod do wyczyszczenia danych jest dostępny w [`notebook.ipynb`](notebook.ipynb). Wykonaliśmy te same kroki czyszczenia co w poprzedniej lekcji i obliczyliśmy kolumnę `DayOfYear` za pomocą następującego wyrażenia: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Teraz, gdy rozumiesz matematykę stojącą za regresją liniową, stwórzmy model regresji, aby sprawdzić, czy potrafimy przewidzieć, która paczka dyń będzie miała najlepsze ceny. Ktoś kupujący dynie na świąteczną plantację może chcieć tych informacji, by zoptymalizować swoje zakupy paczek dyń na plantację. +Teraz, gdy rozumiesz matematykę stojącą za regresją liniową, stwórzmy model regresji, aby zobaczyć, czy możemy przewidzieć, które opakowanie dyń będzie miało najlepsze ceny. Osoba kupująca dynie na świąteczną plantację może chcieć te informacje, aby zoptymalizować swoje zakupy opakowań dyni na tę plantację. ## Szukanie korelacji -[![ML dla początkujących - Szukanie korelacji: klucz do regresji liniowej](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML dla początkujących - Szukanie korelacji: klucz do regresji liniowej") +[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Kliknij powyższy obrazek, aby zobaczyć krótki przegląd korelacji. +> 🎥 Kliknij powyższy obraz, aby obejrzeć krótki film o korelacji. -Z poprzedniej lekcji prawdopodobnie widziałeś, że średnia cena dla różnych miesięcy wygląda tak: +Z poprzedniej lekcji prawdopodobnie zauważyłeś, że średnia cena w różnych miesiącach wygląda tak: -Średnia cena wg miesiąca +Average price by month -To sugeruje, że może istnieć korelacja, i możemy spróbować wytrenować liniowy model regresji, by przewidzieć zależność między `Month` a `Price` lub między `DayOfYear` a `Price`. Oto wykres rozrzutu pokazujący tę drugą zależność: +To sugeruje, że powinno istnieć pewne powiązanie, i możemy spróbować wytrenować model regresji liniowej, aby przewidzieć zależność między `Month` a `Price`, lub między `DayOfYear` a `Price`. Oto wykres punktowy pokazujący tę ostatnią zależność: -Wykres rozrzutu Cena vs. Dzień roku +Scatter plot of Price vs. Day of Year -Sprawdźmy, czy jest korelacja, używając funkcji `corr`: +Sprawdźmy korelację za pomocą funkcji `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Wygląda na to, że korelacja jest dość mała, -0.15 wg `Month` i -0.17 wg `DayOfMonth`, ale mogłaby istnieć inna ważna zależność. Wygląda na to, że istnieją różne grupy cen odpowiadające różnym odmianom dyni. Aby potwierdzić tę hipotezę, nanieśmy każdy gatunek dyń innym kolorem. Przekazując argument `ax` funkcji `scatter`, możemy nanieść wszystkie punkty na tym samym wykresie: +Wygląda na to, że korelacja jest dość mała, -0.15 przy `Month` i -0.17 przy `DayOfYear`, ale może istnieć inna ważna zależność. Wydaje się, że istnieją różne klastry cen odpowiadające różnym odmianom dyni. Aby potwierdzić tę hipotezę, narysujmy każdą kategorię dyni innym kolorem. Przekazując parametr `ax` do funkcji `scatter`, możemy narysować wszystkie punkty na tym samym wykresie: ```python ax=None @@ -140,40 +140,40 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Wykres rozrzutu Cena vs. Dzień roku +Scatter plot of Price vs. Day of Year -Nasze dochodzenie sugeruje, że odmiana dyni ma większy wpływ na cenę niż faktyczna data sprzedaży. Możemy to zobaczyć na wykresie słupkowym: +Nasze badania sugerują, że odmiana ma większy wpływ na ostateczną cenę niż faktyczna data sprzedaży. Widać to także na wykresie słupkowym: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Wykres słupkowy ceny wg odmiany +Bar graph of price vs variety -Skupmy się na razie tylko na jednej odmianie dyni, 'pie type', i zobaczmy jaki wpływ ma data na cenę: +Skupmy się teraz tylko na jednej odmianie dyni, „rodzaj na ciasto” i zobaczmy, jaki wpływ na cenę ma data: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Wykres rozrzutu Cena vs. Dzień roku +Scatter plot of Price vs. Day of Year -Jeśli teraz obliczymy korelację między `Price` a `DayOfYear` funkcją `corr`, otrzymamy wartość około `-0.27` – co oznacza, że trening modelu predykcyjnego ma sens. +Jeśli teraz obliczymy korelację między `Price` a `DayOfYear` używając funkcji `corr`, otrzymamy coś około `-0.27` - co oznacza, że trenowanie modelu predykcyjnego ma sens. -> Przed wytrenowaniem modelu regresji liniowej ważne jest, aby upewnić się, że dane są czyste. Regresja liniowa źle radzi sobie z brakującymi wartościami, więc warto usunąć wszystkie puste komórki: +> Przed trenowaniem modelu regresji liniowej ważne jest, aby nasze dane były czyste. Regresja liniowa nie działa dobrze z brakującymi wartościami, więc warto pozbyć się wszystkich pustych komórek: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Innym podejściem byłoby wypełnienie tych pustych wartości średnimi wartościami z odpowiednich kolumn. +Innym podejściem byłoby zastąpienie pustych wartości średnimi wartościami z danej kolumny. ## Prosta regresja liniowa -[![ML dla początkujących - regresja liniowa i wielomianowa z użyciem Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML dla początkujących - regresja liniowa i wielomianowa z użyciem Scikit-learn") +[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Kliknij powyższy obrazek, aby obejrzeć krótki przegląd regresji liniowej i wielomianowej. +> 🎥 Kliknij powyższy obraz, aby obejrzeć krótki film podsumowujący regresję liniową i wielomianową. Aby wytrenować nasz model regresji liniowej, użyjemy biblioteki **Scikit-learn**. @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Zaczynamy od rozdzielenia wartości wejściowych (cech) i oczekiwanego wyniku (etykiety) do osobnych tablic numpy: +Zaczynamy od rozdzielenia wartości wejściowych (cech) oraz oczekiwanego wyniku (etykiety) do osobnych tablic numpy: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Zauważ, że musieliśmy wykonać `reshape` na danych wejściowych, aby pakiet Linear Regression zrozumiał je poprawnie. Regresja liniowa oczekuje 2-wymiarowej tablicy jako wejścia, gdzie każdy wiersz tablicy odpowiada wektorowi cech wejściowych. W naszym przypadku, ponieważ mamy tylko jedno wejście – potrzebujemy tablicy o kształcie N×1, gdzie N to rozmiar zestawu danych. +> Zauważ, że musieliśmy wykonać `reshape` na danych wejściowych, aby pakiet regresji liniowej poprawnie zrozumiał dane. Regresja liniowa oczekuje tablicy 2-wymiarowej, w której każdy wiersz odpowiada wektorowi cech wejściowych. W naszym przypadku, ponieważ mamy tylko jedno wejście - potrzebujemy tablicy o kształcie N×1, gdzie N to rozmiar zbioru danych. -Następnie musimy podzielić dane na zbiory treningowy i testowy, aby móc zweryfikować model po treningu: +Następnie musimy podzielić dane na zestawy treningowe i testowe, aby po treningu zweryfikować nasz model: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Na koniec wytrenowanie faktycznego modelu regresji liniowej zajmuje tylko dwie linijki kodu. Definiujemy obiekt `LinearRegression` i dopasowujemy go do naszych danych za pomocą metody `fit`: +Na koniec trenowanie właściwego modelu regresji liniowej zajmuje tylko dwie linijki kodu. Definiujemy obiekt `LinearRegression` i dopasowujemy go do naszych danych za pomocą metody `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Obiekt `LinearRegression` po dopasowaniu (`fit`) zawiera wszystkie współczynniki regresji, do których można uzyskać dostęp za pomocą właściwości `.coef_`. W naszym przypadku jest tylko jeden współczynnik, który powinien wynosić około `-0.017`. Oznacza to, że ceny wydają się nieco spadać z czasem, ale niezbyt mocno, około 2 centów dziennie. Możemy również uzyskać punkt przecięcia regresji z osią Y, korzystając z `lin_reg.intercept_` - będzie to około `21` w naszym przypadku, co wskazuje na cenę na początku roku. +Obiekt `LinearRegression` po dopasowaniu (`fit`) zawiera wszystkie współczynniki regresji, do których można uzyskać dostęp za pomocą właściwości `.coef_`. W naszym przypadku jest tylko jeden współczynnik, który powinien mieć wartość około `-0.017`. Oznacza to, że ceny wydają się nieznacznie spadać wraz z upływem czasu, ale niezbyt dużo, około 2 centów dziennie. Możemy również uzyskać punkt przecięcia regresji z osią Y za pomocą `lin_reg.intercept_` - w naszym przypadku będzie to około `21`, co wskazuje na cenę na początku roku. -Aby sprawdzić, jak dokładny jest nasz model, możemy przewidzieć ceny na zbiorze testowym, a następnie zmierzyć, jak bliskie są nasze przewidywania wartościom oczekiwanym. Można to zrobić za pomocą wskaźnika błędu średniokwadratowego (RMSE), który jest pierwiastkiem średniej ze wszystkich kwadratów różnic między wartością oczekiwaną a przewidywaną. +Aby zobaczyć, jak dokładny jest nasz model, możemy przewidzieć ceny na zbiorze testowym, a następnie zmierzyć, jak bliskie są nasze prognozy wartościom oczekiwanym. Można to zrobić za pomocą wskaźnika błędu średniokwadratowego pierwiastkowego (RMSE), który jest pierwiastkiem z średniej wszystkich kwadratów różnic między wartością oczekiwaną a przewidywaną. ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Nasz błąd wydaje się wynosić około 2 punktów, co stanowi ~17%. Niezbyt dobrze. Innym wskaźnikiem jakości modelu jest **współczynnik determinacji**, który można uzyskać w ten sposób: +Nasz błąd wydaje się wynosić około 2 punkty, czyli ~17%. Niezbyt dobrze. Innym wskaźnikiem jakości modelu jest **współczynnik determinacji**, który można otrzymać w ten sposób: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Jeśli wartość jest równa 0, oznacza to, że model nie uwzględnia danych wejściowych i działa jako *najgorszy liniowy predyktor*, którym jest po prostu średnia z wyniku. Wartość 1 oznacza, że możemy idealnie przewidzieć wszystkie wartości oczekiwane. W naszym przypadku współczynnik wynosi około 0.06, co jest dość niskie. +Jeśli wartość wynosi 0, oznacza to, że model nie uwzględnia danych wejściowych i działa jako *najgorszy liniowy predyktor*, którym jest po prostu średnia wartość wyniku. Wartość 1 oznacza, że możemy perfekcyjnie przewidzieć wszystkie oczekiwane wyniki. W naszym przypadku współczynnik wynosi około 0.06, co jest dość niskie. -Możemy również narysować dane testowe razem z linią regresji, aby lepiej zobaczyć, jak działa regresja w naszym przypadku: +Możemy także narysować dane testowe razem z linią regresji, aby lepiej zobaczyć, jak działa regresja w naszym przypadku: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Regresja wielomianowa -Innym typem regresji liniowej jest regresja wielomianowa. Chociaż czasem istnieje liniowa zależność między zmiennymi – im większa dynia pod względem objętości, tym wyższa cena – to czasem tych zależności nie da się przedstawić jako płaszczyzna lub prosta. +Innym typem regresji liniowej jest regresja wielomianowa. Choć czasem między zmiennymi zachodzi liniowa zależność – im większa dynia pod względem objętości, tym wyższa cena – czasami takie zależności nie mogą być przedstawione jako płaszczyzna czy linia prosta. -✅ Oto [kilka innych przykładów](https://online.stat.psu.edu/stat501/lesson/9/9.8) danych, dla których można zastosować regresję wielomianową +✅ Oto [kilka kolejnych przykładów](https://online.stat.psu.edu/stat501/lesson/9/9.8) danych, które mogą wymagać regresji wielomianowej -Spójrz ponownie na zależność między Datą a Ceną. Czy ta wykres rozrzutu koniecznie powinien być analizowany za pomocą prostej? Czy ceny nie mogą się wahać? W takim przypadku można spróbować regresji wielomianowej. +Spójrz jeszcze raz na związek między Datą a Ceną. Czy ten wykres punktowy musi koniecznie być analizowany za pomocą linii prostej? Czy ceny nie mogą się wahać? W takim przypadku można spróbować regresji wielomianowej. -✅ Wielomiany to wyrażenia matematyczne, które mogą się składać z jednej lub więcej zmiennych oraz współczynników +✅ Wielomiany to wyrażenia matematyczne, które mogą składać się z jednej lub więcej zmiennych i współczynników -Regresja wielomianowa tworzy zakrzywioną linię, aby lepiej dopasować dane nieliniowe. W naszym przypadku, jeśli do danych wejściowych dodamy zmienną `DayOfYear` podniesioną do kwadratu, powinniśmy być w stanie dopasować nasze dane krzywą paraboliczną, która będzie miała minimum w pewnym punkcie w ciągu roku. +Regresja wielomianowa tworzy krzywą linię, aby lepiej dopasować dane nieliniowe. W naszym przypadku, jeśli do danych wejściowych dodamy zmienną `DayOfYear`2, powinniśmy być w stanie dopasować dane krzywą paraboliczną, która będzie miała minimum w pewnym momencie w ciągu roku. -Scikit-learn zawiera przydatne [API do łączenia etapów przetwarzania danych](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline). **Pipeline** to łańcuch **estymatorów**. W naszym przypadku stworzymy pipeline, który najpierw doda cechy wielomianowe do naszego modelu, a następnie wytrenuje regresję: +Scikit-learn zawiera przydatne [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) do łączenia różnych etapów przetwarzania danych razem. **Pipeline** to łańcuch **estimatorów**. W naszym przypadku stworzymy pipeline, który najpierw dodaje cechy wielomianowe do naszego modelu, a następnie trenuje regresję: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Użycie `PolynomialFeatures(2)` oznacza, że uwzględnimy wszystkie wielomiany drugiego stopnia z danych wejściowych. W naszym przypadku będzie to po prostu `DayOfYear`2, ale przy dwóch zmiennych wejściowych X i Y doda X2, XY oraz Y2. Możemy również użyć wielomianów wyższego stopnia, jeśli chcemy. +Użycie `PolynomialFeatures(2)` oznacza, że uwzględnimy wszystkie wielomiany drugiego stopnia z danych wejściowych. W naszym przypadku będzie to po prostu `DayOfYear`2, ale mając dwie zmienne wejściowe X i Y, dodane zostaną X2, XY oraz Y2. Możemy także użyć wielomianów wyższych stopni, jeśli chcemy. + +Pipelines można używać w taki sam sposób, jak oryginalny obiekt `LinearRegression`, tzn. możemy wywołać `fit` na pipeline, a następnie użyć `predict`, aby uzyskać wyniki prognozy: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Aby narysować gładką krzywą aproksymacyjną, używamy `np.linspace` do utworzenia jednolitego zakresu wartości wejściowych, zamiast bezpośrednio wykreślać na nieuporządkowanych danych testowych (co dałoby zygzakowatą linię): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline można używać tak samo jak oryginalny obiekt `LinearRegression`, tj. możemy `fit` pipeline, a następnie użyć `predict`, aby uzyskać przewidywania. Oto wykres pokazujący dane testowe i krzywą aproksymacji: +Oto wykres pokazujący dane testowe oraz krzywą aproksymacyjną: Polynomial regression -Korzystając z regresji wielomianowej, możemy uzyskać nieco niższy MSE i wyższy współczynnik determinacji, ale nieznacznie. Musimy uwzględnić inne cechy! +Wykorzystując regresję wielomianową, możemy uzyskać nieco niższe RMSE i wyższy współczynnik determinacji, ale niezbyt znacząco. Musimy wziąć pod uwagę inne cechy! -> Możesz zauważyć, że minimalne ceny dyń są obserwowane około Halloween. Jak to wyjaśnisz? +> Możesz zauważyć, że minimalne ceny dyni występują gdzieś wokół Halloween. Jak możesz to wyjaśnić? -🎃 Gratulacje, właśnie stworzyłeś model, który może pomóc przewidzieć cenę dyń na ciasto. Prawdopodobnie możesz powtórzyć tę samą procedurę dla wszystkich typów dyń, ale byłoby to żmudne. Nauczmy się teraz, jak uwzględnić odmianę dyni w naszym modelu! +🎃 Gratulacje, właśnie stworzyłeś model, który może pomóc przewidzieć cenę dyni na ciasto. Prawdopodobnie możesz powtórzyć tę samą procedurę dla wszystkich rodzajów dyni, ale byłoby to żmudne. Nauczmy się teraz, jak uwzględnić odmianę dyni w naszym modelu! ## Cechy kategoryczne -W idealnym świecie chcielibyśmy móc przewidywać ceny dla różnych odmian dyni przy użyciu tego samego modelu. Jednak kolumna `Variety` jest nieco inna niż kolumny takie jak `Month`, ponieważ zawiera wartości niebędące liczbami. Takie kolumny nazywamy **kategorycznymi**. +W idealnym świecie chcemy móc przewidywać ceny dla różnych odmian dyni przy użyciu tego samego modelu. Jednak kolumna `Variety` jest nieco inna niż kolumny takie jak `Month`, ponieważ zawiera wartości nienumeryczne. Takie kolumny nazywamy **kategorycznymi**. -[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") +[![ML dla początkujących - przewidywania cech kategorycznych za pomocą regresji liniowej](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML dla początkujących - przewidywania cech kategorycznych za pomocą regresji liniowej") -> 🎥 Kliknij powyższy obraz, aby obejrzeć krótki film o użyciu cech kategorycznych. +> 🎥 Kliknij powyższy obraz, aby zobaczyć krótki film o używaniu cech kategorycznych. -Tutaj możesz zobaczyć, jak średnia cena zależy od odmiany: +Tu widać, jak średnia cena zależy od odmiany: Average price by variety -Aby uwzględnić odmianę, najpierw musimy przekonwertować ją na postać numeryczną, czyli ją **zdekodować (zakodować)**. Istnieje kilka sposobów, jak to zrobić: +Aby uwzględnić odmianę, najpierw musimy ją przekonwertować na formę numeryczną, czyli **zakodować**. Istnieje kilka sposobów, aby to zrobić: -* Proste **kodowanie numeryczne** zbuduje tabelę różnych odmian, a następnie zastąpi nazwę odmiany indeksem w tej tabeli. To nie jest najlepszy pomysł dla regresji liniowej, ponieważ regresja liniowa bierze rzeczywistą wartość numeryczną indeksu i dodaje ją do wyniku, mnożąc przez pewien współczynnik. W naszym przypadku zależność między numerem indeksu a ceną jest wyraźnie nieliniowa, nawet jeśli upewnimy się, że indeksy są uporządkowane w konkretny sposób. -* **Kodowanie one-hot** zastąpi kolumnę `Variety` 4 różnymi kolumnami, po jednej dla każdej odmiany. Każda kolumna będzie zawierać `1`, jeśli odpowiadający wiersz jest danej odmiany, i `0` w przeciwnym wypadku. Oznacza to, że w regresji liniowej będzie cztery współczynniki, po jednym dla każdej odmiany dyni, odpowiedzialnych za "cenę startową" (a raczej "dodatkową cenę") dla danej odmiany. +* Proste **kodowanie numeryczne** tworzy tabelę różnych odmian, a następnie zastępuje nazwę odmiany indeksem w tej tabeli. Nie jest to najlepszy pomysł dla regresji liniowej, ponieważ regresja linearna bierze pod uwagę rzeczywistą wartość numeryczną indeksu, mnoży ją przez jakiś współczynnik i dodaje do wyniku. W naszym przypadku zależność między numerem indeksu a ceną jest wyraźnie nieliniowa, nawet jeśli uporządkujemy indeksy w określony sposób. +* **Kodowanie one-hot** zastąpi kolumnę `Variety` przez 4 różne kolumny, każdą dla innej odmiany. Każda kolumna będzie zawierać `1`, jeśli wiersz jest danej odmiany, a `0` w przeciwnym razie. Oznacza to, że w regresji liniowej będą cztery współczynniki, po jednym dla każdej odmiany dyni, odpowiedzialne za "cenę startową" (a raczej "dodatkową cenę") dla tej konkretnej odmiany. -Poniższy kod pokazuje, jak można zakodować odmianę metodą one-hot: +Poniższy kod pokazuje, jak możemy zakodować odmianę one-hot: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Aby wytrenować regresję liniową używając zakodowanej metodą one-hot odmiany jako dane wejściowe, wystarczy poprawnie zainicjalizować dane `X` i `y`: +Aby wytrenować regresję liniową przy użyciu one-hot zakodowanej odmiany jako danych wejściowych, wystarczy poprawnie zainicjalizować dane `X` i `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Reszta kodu jest taka sama, jak używana wcześniej do trenowania regresji liniowej. Jeśli to wypróbujesz, zobaczysz, że średni błąd kwadratowy jest mniej więcej taki sam, ale uzyskujemy znacznie wyższy współczynnik determinacji (~77%). Aby uzyskać jeszcze dokładniejsze przewidywania, możemy uwzględnić więcej cech kategorycznych oraz numerycznych, takich jak `Month` czy `DayOfYear`. Aby uzyskać jedną dużą tablicę cech, możemy użyć `join`: +Reszta kodu jest taka sama, jak użyta wcześniej do trenowania regresji liniowej. Jeśli spróbujesz, zobaczysz, że średni błąd kwadratowy jest mniej więcej taki sam, ale uzyskujemy znacznie wyższy współczynnik determinacji (~77%). Aby uzyskać jeszcze dokładniejsze przewidywania, możemy uwzględnić więcej cech kategorycznych, jak również cechy liczbowe, takie jak `Month` czy `DayOfYear`. Aby utworzyć jedną dużą macierz cech, możemy użyć `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,14 +341,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Tutaj uwzględniamy również `City` i typ `Package`, co daje MSE 2.84 (10%) oraz współczynnik determinacji 0.94! +Tutaj uwzględniamy również `City` i typ `Package`, co daje nam RMSE 2.84 (10.5%) oraz determinację 0.94! -## Łączenie wszystkiego w całość +## Łączenie wszystkiego razem -Aby stworzyć najlepszy model, możemy użyć połączonych (zakodowanych one-hot kategorycznych + numerycznych) danych z powyższego przykładu wraz z regresją wielomianową. Oto kompletny kod dla Twojej wygody: +Aby stworzyć najlepszy model, możemy wykorzystać połączone (one-hot zakodowane kategorie + dane liczbowe) dane z powyższego przykładu wraz z regresją wielomianową. Oto kompletny kod dla wygody: ```python -# przygotuj dane treningowe +# ustaw dane treningowe X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -336,43 +358,43 @@ y = new_pumpkins['Price'] # wykonaj podział na zbiór treningowy i testowy X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# skonfiguruj i wytrenuj pipeline +# skonfiguruj i trenuj potok pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # przewiduj wyniki dla danych testowych pred = pipeline.predict(X_test) -# oblicz MSE i współczynnik determinacji -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# oblicz RMSE i współczynnik determinacji +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -To powinno dać nam najlepszy współczynnik determinacji prawie 97% oraz MSE=2.23 (~8% błąd przewidywania). +Powinno to dać nam najlepszy współczynnik determinacji prawie 97% oraz RMSE=2.23 (~8% błąd prognozy). -| Model | MSE | Współczynnik determinacji | -|-------|-----|----------------------------| -| `DayOfYear` liniowa | 2.77 (17.2%) | 0.07 | -| `DayOfYear` wielomianowa | 2.73 (17.0%) | 0.08 | -| `Variety` liniowa | 5.24 (19.7%) | 0.77 | -| Wszystkie cechy liniowe | 2.84 (10.5%) | 0.94 | -| Wszystkie cechy wielomianowe | 2.23 (8.25%) | 0.97 | +| Model | RMSE | Determinacja | +|-------|-----|---------------| +| `DayOfYear` Liniowy | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Wielomianowy | 2.73 (17.0%) | 0.08 | +| `Variety` Liniowy | 5.24 (19.7%) | 0.77 | +| Wszystkie cechy Liniowy | 2.84 (10.5%) | 0.94 | +| Wszystkie cechy Wielomianowy | 2.23 (8.25%) | 0.97 | -🏆 Świetna robota! Stworzyłeś cztery modele regresji w jednej lekcji i poprawiłeś jakość modelu do 97%. W ostatnim rozdziale o regresji poznasz regresję logistyczną do określania kategorii. +🏆 Świetna robota! Stworzyłeś cztery modele regresji w jednej lekcji i poprawiłeś jakość modelu do 97%. W ostatniej części o regresji nauczysz się o regresji logistycznej do wyznaczania kategorii. --- -## 🚀Wyzwanie +## 🚀Wyzwanko -Przetestuj kilka różnych zmiennych w tym zeszycie, aby zobaczyć, jak korelacja przekłada się na dokładność modelu. +Przetestuj kilka różnych zmiennych w tym notatniku, aby zobaczyć, jak korelacja odpowiada dokładności modelu. ## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) -## Powtórka i samodzielna nauka +## Przegląd i samodzielna nauka -W tej lekcji poznaliśmy regresję liniową. Istnieją także inne ważne typy regresji. Przeczytaj o technikach Stepwise, Ridge, Lasso i Elasticnet. Dobrym kursem do nauki jest [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +W tej lekcji nauczyliśmy się o regresji liniowej. Istnieją inne ważne typy regresji. Przeczytaj o technikach Stepwise, Ridge, Lasso i Elasticnet. Dobrym kursem do nauki jest [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Zadanie @@ -381,6 +403,6 @@ W tej lekcji poznaliśmy regresję liniową. Istnieją także inne ważne typy r --- -**Zastrzeżenie**: -Dokument ten został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w języku źródłowym należy traktować jako autorytatywne źródło. W przypadku informacji krytycznych zaleca się profesjonalne tłumaczenie wykonane przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. +**Oświadczenie**: +Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż staramy się zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uważany za źródło autorytatywne. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za ewentualne nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. \ No newline at end of file diff --git a/translations/pl/2-Regression/3-Linear/solution/notebook.ipynb b/translations/pl/2-Regression/3-Linear/solution/notebook.ipynb index 0ebe616de7..3a88729c66 100644 --- a/translations/pl/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/pl/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Regresja liniowa i wielomianowa w wycenie dyni - Lekcja 3\n", + "## Regresja liniowa i wielomianowa cen dyni - Lekcja 3\n", "\n", - "Załaduj wymagane biblioteki i zestaw danych. Przekształć dane w ramkę danych zawierającą wybrany podzbiór danych:\n", + "Załaduj wymagane biblioteki i zestaw danych. Przekształć dane na dataframe zawierający podzbiór danych:\n", "\n", - "- Uwzględnij tylko dynie wyceniane na podstawie buszla\n", - "- Przekształć datę na miesiąc\n", - "- Oblicz cenę jako średnią cen wysokich i niskich\n", - "- Przekształć cenę, aby odzwierciedlała wycenę według ilości buszli\n" + "- Pobierz tylko dynie wycenione za buszel\n", + "- Konwertuj datę na miesiąc\n", + "- Oblicz cenę jako średnią z cen maksymalnej i minimalnej\n", + "- Przekształć cenę, aby odzwierciedlała wycenę za ilość buszli\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wykres punktowy przypomina nam, że mamy dane miesięczne tylko od sierpnia do grudnia. Prawdopodobnie potrzebujemy więcej danych, aby móc wyciągać wnioski w sposób liniowy.\n" + "Wykres rozrzutu przypomina nam, że mamy dane tylko za miesiące od sierpnia do grudnia. Prawdopodobnie potrzebujemy więcej danych, aby móc wyciągać wnioski w sposób liniowy.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Zobaczmy, czy istnieje korelacja:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wygląda na to, że korelacja jest dość mała, ale istnieje inna, ważniejsza zależność - ponieważ punkty cenowe na powyższym wykresie wydają się tworzyć kilka wyraźnych klastrów. Zróbmy wykres, który pokaże różne odmiany dyni:\n" + "Wygląda na to, że korelacja jest dość mała, ale istnieje jakaś inna, ważniejsza zależność – ponieważ punkty cenowe na powyższym wykresie wydają się tworzyć kilka wyraźnych klastrów. Stwórzmy wykres, który pokaże różne odmiany dyni:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Na razie skupmy się tylko na jednej odmianie - **typ tarty**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Regresja liniowa\n", "\n", - "Użyjemy Scikit Learn do trenowania modelu regresji liniowej:\n" + "Użyjemy Scikit Learn do wytrenowania modelu regresji liniowej:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Możemy użyć wytrenowanego modelu do przewidywania ceny:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### Regresja wielomianowa\n", "\n", - "Czasami zależność między cechami a wynikami jest z natury nieliniowa. Na przykład ceny dyni mogą być wysokie zimą (miesiące=1,2), potem spadać latem (miesiące=5-7), a następnie znów rosnąć. Regresja liniowa nie jest w stanie dokładnie uchwycić tej zależności.\n", + "Czasami związek między cechami a wynikami jest z natury nieliniowy. Na przykład ceny dyni mogą być wysokie zimą (miesiące=1,2), następnie spadać latem (miesiące=5-7), a potem znowu rosnąć. Regresja liniowa nie jest w stanie dokładnie odzwierciedlić tego związku.\n", "\n", - "W takim przypadku możemy rozważyć dodanie dodatkowych cech. Prostym sposobem jest użycie wielomianów z cech wejściowych, co prowadzi do **regresji wielomianowej**. W Scikit Learn możemy automatycznie wstępnie obliczyć cechy wielomianowe, korzystając z potoków:\n" + "W takim przypadku możemy rozważyć dodanie dodatkowych cech. Prosty sposób to użycie wielomianów z cech wejściowych, co skutkuje **regresją wielomianową**. W Scikit Learn możemy automatycznie wstępnie obliczać cechy wielomianowe za pomocą potoków: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Kodowanie odmian\n", + "### Różnorodności kodowania\n", "\n", - "W idealnym świecie chcielibyśmy przewidywać ceny różnych odmian dyni za pomocą tego samego modelu. Aby uwzględnić odmianę, najpierw musimy przekształcić ją na formę numeryczną, czyli **zakodować**. Istnieje kilka sposobów, aby to zrobić:\n", + "W idealnym świecie chcielibyśmy móc przewidywać ceny różnych odmian dyni za pomocą tego samego modelu. Aby uwzględnić odmianę, musimy najpierw przekształcić ją na formę numeryczną, czyli **zakodować**. Istnieje kilka sposobów, aby to zrobić:\n", "\n", - "* Proste kodowanie numeryczne, które tworzy tabelę różnych odmian, a następnie zastępuje nazwę odmiany indeksem z tej tabeli. Nie jest to najlepsze rozwiązanie dla regresji liniowej, ponieważ regresja liniowa uwzględnia wartość numeryczną indeksu, a wartość numeryczna prawdopodobnie nie będzie korelować liczbowo z ceną.\n", - "* Kodowanie one-hot, które zastępuje kolumnę `Variety` czterema różnymi kolumnami, po jednej dla każdej odmiany. Kolumny te zawierają wartość 1, jeśli dany wiersz dotyczy określonej odmiany, i 0 w przeciwnym razie.\n", + "* Proste kodowanie numeryczne, które utworzy tabelę różnych odmian, a następnie zastąpi nazwę odmiany indeksem w tej tabeli. Nie jest to najlepszy pomysł dla regresji liniowej, ponieważ regresja liniowa bierze pod uwagę numeryczną wartość indeksu, a wartość ta prawdopodobnie nie będzie numerycznie skorelowana z ceną.\n", + "* Kodowanie one-hot, które zastąpi kolumnę `Variety` 4 różnymi kolumnami, po jednej dla każdej odmiany, zawierającymi 1, jeśli odpowiedni wiersz dotyczy danej odmiany, oraz 0 w przeciwnym razie.\n", "\n", - "Poniższy kod pokazuje, jak możemy zakodować odmianę za pomocą metody one-hot:\n" + "Poniższy kod pokazuje, jak można zakodować odmianę za pomocą kodowania one-hot:\n" ] }, { @@ -940,7 +949,7 @@ "source": [ "### Regresja liniowa na podstawie odmiany\n", "\n", - "Teraz użyjemy tego samego kodu co powyżej, ale zamiast `DayOfYear` użyjemy naszej zakodowanej metodą one-hot odmiany jako wejścia:\n" + "Teraz użyjemy tego samego kodu co powyżej, ale zamiast `DayOfYear` wykorzystamy naszą zakodowaną metodą one-hot odmianę jako wejście:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Możemy również spróbować użyć innych cech w ten sam sposób i połączyć je z cechami numerycznymi, takimi jak `Month` lub `DayOfYear`:\n" + "Możemy również spróbować użyć innych cech w ten sam sposób i łączyć je z cechami numerycznymi, takimi jak `Month` lub `DayOfYear`:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### Regresja wielomianowa\n", "\n", - "Regresja wielomianowa może być również stosowana z cechami kategorycznymi, które zostały zakodowane metodą one-hot. Kod do trenowania regresji wielomianowej będzie zasadniczo taki sam, jak pokazano powyżej.\n" + "Regresja wielomianowa może być również stosowana z cechami kategorycznymi zakodowanymi metodą one-hot. Kod do trenowania regresji wielomianowej byłby zasadniczo taki sam, jak ten, który widzieliśmy powyżej.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Zastrzeżenie**: \nTen dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.\n" + "---\n\n\n**Zastrzeżenie**: \nTen dokument został przetłumaczony za pomocą usługi tłumaczeń AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy starań, aby tłumaczenie było jak najdokładniejsze, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w języku źródłowym należy traktować jako autorytatywne źródło informacji. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego, ludzkiego tłumaczenia. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-03T19:17:33+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "pl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/tr/.co-op-translator.json b/translations/tr/.co-op-translator.json index 44f0555b51..672a6873b7 100644 --- a/translations/tr/.co-op-translator.json +++ b/translations/tr/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "tr" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T07:55:34+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:29:04+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "tr" }, @@ -90,8 +90,8 @@ "language_code": "tr" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T17:34:37+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:28:38+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "tr" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "tr" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:24:45+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "tr" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T07:45:57+00:00", diff --git a/translations/tr/1-Introduction/4-techniques-of-ML/README.md b/translations/tr/1-Introduction/4-techniques-of-ML/README.md index c8cc10c66f..d3c67a37e0 100644 --- a/translations/tr/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/tr/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Makine Öğrenimi Teknikleri -Makine öğrenimi modellerini oluşturma, kullanma ve bu modellerin kullandığı verileri yönetme süreci, birçok diğer geliştirme iş akışından oldukça farklıdır. Bu derste, süreci açıklığa kavuşturacak ve bilmeniz gereken temel teknikleri özetleyeceğiz. Şunları yapacaksınız: +Makine öğrenimi modelleri ve kullandıkları verileri oluşturma, kullanma ve sürdürme süreci, birçok diğer geliştirme iş akışından çok farklı bir süreçtir. Bu derste, süreci sadeleştirecek ve bilmeniz gereken temel tekniklerin ana hatlarını çizeceğiz. Şunları yapacaksınız: -- Makine öğreniminin temel süreçlerini yüksek seviyede anlayacaksınız. +- Makine öğreniminin temelini oluşturan süreçleri yüksek seviyede anlayacaksınız. - 'Modeller', 'tahminler' ve 'eğitim verisi' gibi temel kavramları keşfedeceksiniz. -## [Ders Öncesi Test](https://ff-quizzes.netlify.app/en/ml/) +## [Ders öncesi quiz](https://ff-quizzes.netlify.app/en/ml/) -[![Yeni Başlayanlar için ML - Makine Öğrenimi Teknikleri](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Yeni Başlayanlar için ML - Makine Öğrenimi Teknikleri") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Yukarıdaki görsele tıklayarak bu dersle ilgili kısa bir videoya ulaşabilirsiniz. +> 🎥 Bu derste ilerlemek için yukarıdaki görsele tıklayın. ## Giriş -Genel olarak, makine öğrenimi (ML) süreçlerini oluşturma sanatı birkaç adımdan oluşur: +Yüksek seviyede, makine öğrenimi (ML) süreçleri oluşturma sanatı birkaç adımdan oluşur: -1. **Soruyu belirleyin**. Çoğu ML süreci, basit bir koşullu program veya kurallara dayalı bir motorla cevaplanamayan bir soruyu sormakla başlar. Bu sorular genellikle bir veri koleksiyonuna dayalı tahminlerle ilgilidir. -2. **Veri toplayın ve hazırlayın**. Sorunuzu cevaplayabilmek için veriye ihtiyacınız var. Verinizin kalitesi ve bazen miktarı, başlangıçtaki sorunuza ne kadar iyi cevap verebileceğinizi belirler. Veriyi görselleştirmek bu aşamanın önemli bir parçasıdır. Bu aşama ayrıca veriyi bir eğitim ve test grubuna ayırmayı içerir. -3. **Eğitim yöntemini seçin**. Sorunuza ve verinizin doğasına bağlı olarak, verinizi en iyi şekilde yansıtacak ve doğru tahminler yapacak bir model eğitme yöntemini seçmeniz gerekir. Bu, ML sürecinizin özel uzmanlık gerektiren ve genellikle önemli miktarda deneme gerektiren kısmıdır. -4. **Modeli eğitin**. Eğitim verinizi kullanarak, çeşitli algoritmalarla bir model eğiterek verideki desenleri tanımasını sağlarsınız. Model, verinin belirli bölümlerini diğerlerine göre önceliklendirmek için ayarlanabilir içsel ağırlıklar kullanabilir. -5. **Modeli değerlendirin**. Topladığınız veri setinden daha önce hiç görülmemiş verileri (test verinizi) kullanarak modelin performansını değerlendirirsiniz. -6. **Parametre ayarı**. Modelinizin performansına bağlı olarak, modeli eğitmek için kullanılan algoritmaların davranışını kontrol eden farklı parametreler veya değişkenler kullanarak süreci yeniden yapabilirsiniz. -7. **Tahmin yapın**. Modelinizin doğruluğunu test etmek için yeni girdiler kullanın. +1. **Soruyu belirleyin**. Çoğu ML süreci, basit bir koşullu program veya kurallara dayalı motorla cevaplanamayan bir soruyu sorarak başlar. Bu sorular genellikle bir veri koleksiyonuna dayanan tahminlerle ilgilidir. +2. **Veri toplayın ve hazırlayın**. Sorunuzu cevaplayabilmek için veriye ihtiyacınız vardır. Verinizin kalitesi ve zaman zaman miktarı, ilk sorunuza ne kadar iyi cevap verebileceğinizi belirler. Veriyi görselleştirmek bu aşamanın önemli bir parçasıdır. Bu aşama ayrıca, bir modeli oluşturmak için veriyi eğitim ve test gruplarına ayırmayı da içerir. +3. **Bir eğitim yöntemi seçin**. Sorunuza ve verinizin doğasına bağlı olarak, verinizi en iyi şekilde yansıtacak ve doğru tahminler yapacak bir modeli nasıl eğitmek istediğinizi seçmeniz gerekir. Bu, ML sürecinizin belirli uzmanlık gerektiren ve genellikle önemli miktarda deney gerektiren kısmıdır. +4. **Modeli eğitin**. Eğitim verilerinizi kullanarak, verideki kalıpları tanımak için çeşitli algoritmalarla bir modeli eğiteceksiniz. Model, verinin bazı bölümlerini diğerlerine göre daha öncelikli kılmak için ayarlanabilen iç ağırlıkları kullanabilir. +5. **Modeli değerlendirin**. Daha önce hiç görmediğiniz veriyi (test verilerinizi) kullanarak modelin performansını kontrol edersiniz. +6. **Parametre ayarlaması yapın**. Modelinizin performansına dayanarak, modeli eğitmek için kullanılan algoritmaların davranışını kontrol eden farklı parametrelerle veya değişkenlerle süreci yeniden yapabilirsiniz. +7. **Tahmin yapın**. Modelinizin doğruluğunu test etmek için yeni girişler kullanın. -## Hangi Soruyu Sormalı? +## Hangi soruyu sormalı -Bilgisayarlar, verilerdeki gizli desenleri keşfetme konusunda oldukça yeteneklidir. Bu yetenek, belirli bir alanda basit bir kurallara dayalı motor oluşturarak kolayca cevaplanamayan soruları olan araştırmacılar için çok faydalıdır. Örneğin, bir aktüeryal görevde, bir veri bilimci sigara içenler ile içmeyenlerin ölüm oranları hakkında el yapımı kurallar oluşturabilir. +Bilgisayarlar, veride gizli kalmış kalıpları keşfetme konusunda özellikle iyidir. Bu fayda, belirli bir alanla ilgili soruları koşullu kurallara dayalı bir motor oluşturmakla kolayca cevaplanamayan araştırmacılar için çok değerlidir. Örneğin, bir aktüeryal görevde, bir veri bilimci sigara içenler ve içmeyenlerin ölüm oranı hakkında el yapımı kurallar oluşturabilir. -Ancak, birçok başka değişken denkleme dahil edildiğinde, bir ML modeli geçmiş sağlık geçmişine dayanarak gelecekteki ölüm oranlarını tahmin etmekte daha verimli olabilir. Daha neşeli bir örnek olarak, bir konumda Nisan ayı için hava durumu tahminleri yapmak, enlem, boylam, iklim değişikliği, okyanusa yakınlık, jet akımı desenleri ve daha fazlasını içeren verilere dayanabilir. +Ancak, birçok başka değişken bu denklemde yer aldığında, ML modeli geçmiş sağlık geçmişine dayalı gelecekteki ölüm oranlarını tahmin etmek için daha verimli olabilir. Daha neşeli bir örnek, enlem, boylam, iklim değişikliği, okyanusa yakınlık, jet akımlarının desenleri ve daha fazlasını içeren verilere dayalı olarak belirli bir konumda Nisan ayı hava tahminleri yapmak olabilir. -✅ Bu [sunum dosyası](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf), hava analizi için ML kullanımı hakkında tarihsel bir perspektif sunmaktadır. +✅ Bu [sunum dizisi](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) hava modelleri hakkında ML kullanımı için tarihsel bir perspektif sunar. -## Model Oluşturmadan Önceki Görevler +## Ön hazırlık görevleri -Modelinizi oluşturmaya başlamadan önce tamamlamanız gereken birkaç görev vardır. Sorunuzu test etmek ve bir modelin tahminlerine dayalı bir hipotez oluşturmak için birkaç unsuru tanımlamanız ve yapılandırmanız gerekir. +Modelinizi oluşturmaya başlamadan önce tamamlamanız gereken birkaç görev vardır. Sorunuzu test etmek ve modelin tahminlerine dayanan bir hipotez oluşturmak için çeşitli unsurları tanımlamanız ve yapılandırmanız gerekir. ### Veri -Sorunuzu herhangi bir kesinlikle cevaplayabilmek için doğru türde yeterli miktarda veriye ihtiyacınız var. Bu noktada yapmanız gereken iki şey var: +Sorunuza belirli bir kesinlikle cevap verebilmek için doğru türde yeterli miktarda veriye ihtiyacınız vardır. Bu noktada yapmanız gereken iki şey vardır: -- **Veri toplayın**. Veri analizi hakkındaki önceki derste adalet konusunu göz önünde bulundurarak, verinizi dikkatlice toplayın. Bu verinin kaynaklarının, sahip olabileceği herhangi bir içsel önyargının farkında olun ve kökenini belgeleyin. -- **Veriyi hazırlayın**. Veri hazırlama sürecinde birkaç adım vardır. Veriler farklı kaynaklardan geliyorsa, verileri birleştirmeniz ve normalleştirmeniz gerekebilir. Verinin kalitesini ve miktarını, dizeleri sayılara dönüştürmek gibi çeşitli yöntemlerle artırabilirsiniz (örneğin [Kümeleme](../../5-Clustering/1-Visualize/README.md) dersinde yaptığımız gibi). Ayrıca, orijinal veriye dayanarak yeni veri üretebilirsiniz (örneğin [Sınıflandırma](../../4-Classification/1-Introduction/README.md) dersinde yaptığımız gibi). Veriyi temizleyebilir ve düzenleyebilirsiniz (örneğin [Web Uygulaması](../../3-Web-App/README.md) dersinden önce yapacağımız gibi). Son olarak, eğitim tekniklerinize bağlı olarak veriyi rastgeleleştirmeniz ve karıştırmanız gerekebilir. +- **Veri toplayın**. Veri analizinde adalet hakkında önceki dersi aklınızda tutarak verinizi dikkatlice toplayın. Bu verinin kaynaklarının farkında olun, sahip olabileceği herhangi bir yerleşik önyargıyı göz önünde bulundurun ve kökenini belgeleyin. +- **Veriyi hazırlayın**. Veri hazırlama sürecinde birkaç adım vardır. Veriler çeşitli kaynaklardan geliyorsa onları toplamanız ve normalleştirmeniz gerekebilir. Verinin kalitesini ve miktarını, [Kümeleme](../../5-Clustering/1-Visualize/README.md) dersinde yaptığımız gibi dizeleri sayılara dönüştürmek gibi çeşitli yöntemlerle artırabilirsiniz. Ayrıca, orijinal veriye dayalı yeni veriler oluşturabilirsiniz ([Sınıflandırma](../../4-Classification/1-Introduction/README.md) dersinde yaptığımız gibi). Veriyi temizleyebilir ve düzenleyebilirsiniz ([Web Uygulaması](../../3-Web-App/README.md) dersinden önceki gibi). Son olarak, eğitim tekniklerinize bağlı olarak veriyi rastgele karıştırmanız ve karıştırmanız gerekebilir. -✅ Verinizi topladıktan ve işledikten sonra, şeklinin hedeflediğiniz soruyu ele almanıza izin verip vermeyeceğini kontrol etmek için bir an durun. Verinin, belirli bir görevde iyi performans göstermeyeceğini [Kümeleme](../../5-Clustering/1-Visualize/README.md) derslerinde keşfettiğimiz gibi fark edebilirsiniz! +✅ Verinizi topladıktan ve işledikten sonra, şeklinin sorunuza cevap vermenize izin verip vermediğine bakmak için bir an durun. Verinin görevde iyi performans göstermeyebileceği gibi durumlarla [Kümeleme](../../5-Clustering/1-Visualize/README.md) derslerinde karşılaşıyoruz! ### Özellikler ve Hedef -Bir [özellik](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection), verinizin ölçülebilir bir özelliğidir. Çoğu veri setinde, 'tarih', 'boyut' veya 'renk' gibi sütun başlıkları olarak ifade edilir. Kodda genellikle `X` olarak temsil edilen özellik değişkeniniz, modeli eğitmek için kullanılacak giriş değişkenini temsil eder. +[Özellik](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection), verinizin ölçülebilir bir niteliğidir. Pek çok veri setinde bu, 'tarih', 'boyut' veya 'renk' gibi bir sütun başlığı olarak ifade edilir. Özellik değişkeniniz, genellikle kodda `X` ile gösterilir, bir modeli eğitmek için kullanılan giriş değişkenini temsil eder. -Bir hedef, tahmin etmeye çalıştığınız şeydir. Kodda genellikle `y` olarak temsil edilen hedef, verinizden sormaya çalıştığınız sorunun cevabını temsil eder: Aralık ayında hangi **renkteki** kabaklar en ucuz olacak? San Francisco'da hangi mahalleler en iyi gayrimenkul **fiyatına** sahip olacak? Hedef bazen etiket özelliği olarak da adlandırılır. +Hedef, tahmin etmeye çalıştığınız şeydir. Hedef, genellikle kodda `y` ile gösterilir, verinizden sormaya çalıştığınız sorunun cevabını temsil eder: Aralık ayında en ucuz balkabağı **rengi** ne olacak? San Francisco'da en iyi gayrimenkul **fiyatına** sahip mahalleler hangileri olacak? Bazen hedef bir etiket (label) özniteliği olarak da adlandırılır. -### Özellik Değişkeninizi Seçmek +### Özellik değişkeninizi seçmek -🎓 **Özellik Seçimi ve Özellik Çıkarımı** Model oluştururken hangi değişkeni seçeceğinizi nasıl bileceksiniz? Muhtemelen en iyi performans gösteren model için doğru değişkenleri seçmek üzere bir özellik seçimi veya özellik çıkarımı sürecinden geçeceksiniz. Ancak, bunlar aynı şey değildir: "Özellik çıkarımı, orijinal özelliklerin fonksiyonlarından yeni özellikler oluştururken, özellik seçimi özelliklerin bir alt kümesini döndürür." ([kaynak](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Özellik Seçimi ve Özellik Çıkarımı** Bir model kurarken hangi değişkeni seçeceğinizi nasıl biliyorsunuz? Muhtemelen en etkili modeli oluşturmak için doğru değişkenleri seçmek üzere bir özellik seçimi veya özellik çıkarımı sürecinden geçeceksiniz. Ancak bu ikisi aynı şey değildir: "Özellik çıkarımı, orijinal özelliklerin fonksiyonlarından yeni özellikler oluştururken, özellik seçimi özelliklerin bir alt kümesini döndürür." ([kaynak](https://wikipedia.org/wiki/Feature_selection)) -### Verinizi Görselleştirin +### Verinizi görselleştirin -Bir veri bilimcinin araç setinin önemli bir yönü, Seaborn veya MatPlotLib gibi birkaç mükemmel kütüphaneyi kullanarak veriyi görselleştirme gücüdür. Verinizi görsel olarak temsil etmek, yararlanabileceğiniz gizli korelasyonları ortaya çıkarmanıza olanak sağlayabilir. Görselleştirmeleriniz ayrıca önyargı veya dengesiz veriyi ortaya çıkarmanıza yardımcı olabilir (örneğin [Sınıflandırma](../../4-Classification/2-Classifiers-1/README.md) dersinde keşfettiğimiz gibi). +Bir veri bilimcisinin araç setinin önemli bir yönü, Seaborn veya MatPlotLib gibi birkaç mükemmel kütüphane kullanarak veriyi görselleştirme gücüdür. Verinizi görsel olarak temsil etmek, kullanabileceğiniz gizli korelasyonları ortaya çıkarabilir. Görselleştirmeleriniz ayrıca önyargıyı veya dengesiz veriyi ortaya çıkarabilir (bunu [Sınıflandırma](../../4-Classification/2-Classifiers-1/README.md) dersinde keşfediyoruz). -### Veri Setinizi Bölün +### Veri setinizi bölün -Eğitimden önce, veri setinizi eşit olmayan boyutlarda iki veya daha fazla parçaya ayırmanız gerekir, ancak bu parçalar yine de veriyi iyi temsil etmelidir. +Eğitime başlamadan önce, veri setinizi eşit olmayan ancak veriyi iyi temsil eden iki veya daha fazla parçaya bölmeniz gerekir. -- **Eğitim**. Veri setinin bu kısmı, modelinizi eğitmek için modele uyarlanır. Bu set, orijinal veri setinin çoğunluğunu oluşturur. +- **Eğitim**. Veri setinin bu kısmı, modeli eğitmek için kullanılır. Bu set orijinal veri setinin çoğunluğunu oluşturur. - **Test**. Test veri seti, genellikle orijinal veriden toplanan bağımsız bir veri grubudur ve oluşturulan modelin performansını doğrulamak için kullanılır. -- **Doğrulama**. Doğrulama seti, modelin hiperparametrelerini veya mimarisini iyileştirmek için kullandığınız daha küçük bağımsız bir örnek grubudur. Verinizin boyutuna ve sorduğunuz soruya bağlı olarak, bu üçüncü seti oluşturmanız gerekmeyebilir (örneğin [Zaman Serisi Tahmini](../../7-TimeSeries/1-Introduction/README.md) dersinde belirttiğimiz gibi). +- **Doğrulama**. Doğrulama seti, modeli iyileştirmek için modelin hiperparametrelerini veya mimarisini ayarlamak için kullanılan daha küçük bağımsız bir örnek grubudur. Verinizin boyutuna ve sorduğunuz soruya bağlı olarak bu üçüncü seti oluşturmanız gerekmeyebilir ([Zaman Serisi Tahmini](../../7-TimeSeries/1-Introduction/README.md) dersinde not ettiğimiz gibi). -## Model Oluşturma +## Model oluşturma -Eğitim verinizi kullanarak, amacınız çeşitli algoritmalar kullanarak verinizin istatistiksel bir temsilini oluşturmak, yani bir model oluşturmaktır. Modeli eğitmek, veriyi analiz etmesine, algıladığı desenler hakkında varsayımlar yapmasına, doğrulamasına ve kabul veya reddetmesine olanak tanır. +Eğitim verinizi kullanarak, modeli **eğitmek** için çeşitli algoritmalar kullanarak verinizin istatistiksel bir temsilini oluşturmayı hedeflersiniz. Bir modeli eğitmek, onu veriye maruz bırakır ve keşfettiği, doğruladığı ve kabul ya da reddettiği algılanan kalıplar hakkında varsayımlarda bulunmasını sağlar. -### Eğitim Yöntemini Belirleyin +### Bir eğitim yöntemi seçin -Sorunuza ve verinizin doğasına bağlı olarak, onu eğitmek için bir yöntem seçersiniz. Bu kursta kullandığımız [Scikit-learn belgelerini](https://scikit-learn.org/stable/user_guide.html) inceleyerek bir modeli eğitmek için birçok yöntemi keşfedebilirsiniz. Deneyiminize bağlı olarak, en iyi modeli oluşturmak için birkaç farklı yöntemi denemeniz gerekebilir. Veri bilimcilerin bir modeli performansını değerlendirmek için daha önce görülmemiş verilerle beslediği, doğruluk, önyargı ve diğer kaliteyi düşüren sorunları kontrol ettiği ve mevcut görev için en uygun eğitim yöntemini seçtiği bir süreçten geçmeniz muhtemeldir. +Sorunuza ve verinizin doğasına bağlı olarak, onu eğitmek için bir yöntem seçeceksiniz. Bu derste kullandığımız [Scikit-learn dokümantasyonu](https://scikit-learn.org/stable/user_guide.html)'nu adım adım inceleyerek bir modeli eğitmenin birçok yolunu keşfedebilirsiniz. Deneyiminize bağlı olarak, en iyi modeli oluşturmak için birkaç farklı yöntemi denemeniz gerekebilir. Veri bilimcilerin, modele hiç görmediği veriyi vererek performansını değerlendirdiği, doğruluğu, önyargıyı ve diğer kaliteyi düşüren sorunları kontrol ettiği ve görev için en uygun eğitim yöntemini seçtiği bir süreci muhtemelen yaşayacaksınız. -### Modeli Eğitin +### Modeli eğitin -Eğitim verinizle donanmış olarak, bir model oluşturmak için onu 'uydurmaya' hazırsınız. Birçok ML kütüphanesinde 'model.fit' kodunu göreceksiniz - bu, özellik değişkeninizi (genellikle 'X') ve hedef değişkeninizi (genellikle 'y') bir değer dizisi olarak gönderdiğiniz zamandır. +Eğitim verinizle hazırlanmış olarak, modeli oluşturmak için 'fit' işlemini gerçekleştirmeye hazırsınız. Pek çok ML kütüphanesinde 'model.fit' kodunu göreceksiniz - bu aşamada genellikle özellik değişkeninizi (`X`) ve hedef değişkeninizi (`y`) değerler dizisi olarak gönderirsiniz. -### Modeli Değerlendirin +### Modeli değerlendirin -Eğitim süreci tamamlandıktan sonra (büyük bir modeli eğitmek için birçok yineleme veya 'epoch' gerekebilir), modelin kalitesini test verilerini kullanarak performansını ölçerek değerlendirebilirsiniz. Bu veri, modelin daha önce analiz etmediği orijinal verinin bir alt kümesidir. Modelinizin kalitesi hakkında bir metrik tablosu yazdırabilirsiniz. +Eğitim süreci tamamlandıktan sonra (büyük bir modeli eğitmek için birçok yineleme veya 'epoch' gerekebilir), test verilerini kullanarak modelin kalitesini değerlendirebilirsiniz. Bu veriler, modelin daha önce analiz etmediği orijinal verinin bir alt kümesidir. Modelinizin kalitesi hakkında metriklerden oluşan bir tablo yazdırabilirsiniz. -🎓 **Model Uydurma** +🎓 **Model uyumu** -Makine öğrenimi bağlamında, model uydurma, modelin tanımadığı veriyi analiz etmeye çalışırken temel fonksiyonunun doğruluğunu ifade eder. +Makine öğrenimi bağlamında model uyumu, modelin bilinmeyen verileri analiz etmeye çalışırken altında yatan fonksiyonunun doğruluğunu ifade eder. -🎓 **Eksik Uydurma** ve **Aşırı Uydurma**, modelin kalitesini düşüren yaygın sorunlardır. Model ya yeterince iyi uydurulmaz ya da çok iyi uydurulur. Bu, modelin tahminlerini ya eğitim verisine çok sıkı ya da çok gevşek bir şekilde hizalamasına neden olur. Aşırı uydurulmuş bir model, verinin ayrıntılarını ve gürültüsünü çok iyi öğrendiği için eğitim verisini çok iyi tahmin eder. Eksik uydurulmuş bir model ise ne eğitim verisini ne de daha önce 'görmediği' veriyi doğru bir şekilde analiz edebilir. +🎓 **Eksik uyum** ve **aşırı uyum** yaygın sorunlardır ve modelin kalitesini düşürür; model ya yeterince iyi uymamış ya da aşırı iyi uymuş olur. Bu, modelin tahminlerini eğitim verisiyle ya çok sıkı ya da çok gevşek hizalanmış şekilde yapmasına neden olur. Aşırı uyumlu model, verinin detaylarını ve gürültüyü çok iyi öğrendiği için eğitim verisini çok iyi tahmin eder. Eksik uyumlu model ise ne eğitim verisini ne de daha önce 'görmediği' veriyi doğru analiz edebilir. -![aşırı uydurma modeli](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> [Jen Looper](https://twitter.com/jenlooper) tarafından hazırlanan infografik +![aşırı uyumlu model](../../../../translated_images/tr/overfitting.1c132d92bfd93cb6.webp) +> Bilgi grafiği: [Jen Looper](https://twitter.com/jenlooper) -## Parametre Ayarı +## Parametre ayarlaması -İlk eğitiminiz tamamlandıktan sonra, modelin kalitesini gözlemleyin ve 'hiperparametrelerini' ayarlayarak iyileştirmeyi düşünün. Süreç hakkında daha fazla bilgi için [belgelere](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) göz atın. +İlk eğitiminiz tamamlandıktan sonra, modelin kalitesini gözlemleyin ve 'hiperparametrelerini' ayarlayarak geliştirmeyi düşünün. Sürecin daha fazlası için [dokümantasyona bakabilirsiniz](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Tahmin -Bu, tamamen yeni verileri kullanarak modelinizin doğruluğunu test edebileceğiniz andır. 'Uygulamalı' bir ML ortamında, modeli üretimde kullanmak için web varlıkları oluşturduğunuzda, bu süreç bir değişkeni ayarlamak ve değerlendirme veya çıkarım için modele göndermek üzere kullanıcı girdisi (örneğin bir düğme basışı) toplamayı içerebilir. +Bu, modelinizin doğruluğunu tamamen yeni verilerle test edebileceğiniz andır. Üretimde modeli kullanmak üzere web varlıkları oluşturduğunuz 'uygulamalı' ML ortamında, bu süreç modelin çıkarım veya değerlendirme için değişkeni ayarlayıp modele göndermek üzere (örneğin bir düğmeye basılması gibi) kullanıcı girdisi toplama içerebilir. -Bu derslerde, bir veri bilimcinin tüm hareketlerini ve daha fazlasını keşfederek, bir 'tam yığın' ML mühendisi olma yolculuğunuzda ilerlerken bu adımları hazırlama, oluşturma, test etme, değerlendirme ve tahmin yapma süreçlerini öğreneceksiniz. +Bu derslerde, bir veri bilimcisinin tüm jestlerini ve daha fazlasını — model hazırlamayı, oluşturmayı, test etmeyi, değerlendirmeyi ve tahmin yapmayı — öğrenerek 'full stack' ML mühendisi olma yolunda ilerleyeceksiniz. --- ## 🚀Meydan Okuma -Bir ML uygulayıcısının adımlarını yansıtan bir akış şeması çizin. Sürecin şu an neresinde olduğunuzu düşünüyorsunuz? Nerede zorluk yaşayacağınızı tahmin ediyorsunuz? Size kolay gelen nedir? +Bir ML uygulayıcısının adımlarını yansıtan bir akış şeması çizin. Şu anda sürecin hangi aşamasında olduğunuzu düşünüyorsunuz? Hangi aşamada zorlanacağınızı tahmin ediyorsunuz? Size kolay gelen şeyler neler? -## [Ders Sonrası Test](https://ff-quizzes.netlify.app/en/ml/) +## [Ders sonrası quiz](https://ff-quizzes.netlify.app/en/ml/) -## Gözden Geçirme ve Kendi Kendine Çalışma +## Gözden Geçirme & Kendi Kendine Çalışma -Günlük işlerini tartışan veri bilimcilerle yapılan röportajları çevrimiçi arayın. İşte [bir tanesi](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Günlük işlerinden bahseden veri bilimcilerle yapılmış çevrimiçi röportajlar arayın. İşte [biri](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Ödev -[Bir veri bilimciyle röportaj yapın](assignment.md) +[Bir veri bilimci ile röportaj yapın](assignment.md) --- + **Feragatname**: -Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +Bu belge, AI çeviri servisi [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğinin farkında olunuz. Orijinal belge, kendi ana dilindeki haliyle yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanılmasıyla ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalar nedeniyle sorumluluk kabul edilmeyecektir. + \ No newline at end of file diff --git a/translations/tr/2-Regression/3-Linear/README.md b/translations/tr/2-Regression/3-Linear/README.md index e102bca196..57f91e98a9 100644 --- a/translations/tr/2-Regression/3-Linear/README.md +++ b/translations/tr/2-Regression/3-Linear/README.md @@ -1,136 +1,137 @@ -# Scikit-learn kullanarak regresyon modeli oluşturma: dört farklı regresyon yöntemi +# Scikit-learn kullanarak regresyon modeli oluşturma: regresyonun dört yolu -## Yeni Başlayanlar için Not +## Yeni Başlayanlar Notu -Doğrusal regresyon, **sayısal bir değeri** (örneğin, ev fiyatı, sıcaklık veya satışlar) tahmin etmek istediğimizde kullanılır. -Bu yöntemde, giriş özellikleri ile çıktı arasındaki ilişkiyi en iyi temsil eden düz bir çizgi bulunur. +Lineer regresyon, **sayısal bir değer** tahmin etmek istediğimizde kullanılır (örneğin, ev fiyatı, sıcaklık veya satışlar). +Girdi özellikleri ile çıktı arasındaki ilişkiyi en iyi temsil eden düz bir çizgi bulmak için çalışır. -Bu derste, daha ileri regresyon tekniklerini keşfetmeden önce temel kavramı anlamaya odaklanacağız. -![Doğrusal ve polinomsal regresyon infografiği](../../../../translated_images/tr/linear-polynomial.5523c7cb6576ccab.webp) -> İnfografik [Dasani Madipalli](https://twitter.com/dasani_decoded) tarafından -## [Ön-ders sınavı](https://ff-quizzes.netlify.app/en/ml/) +Bu derste, daha gelişmiş regresyon tekniklerini keşfetmeden önce kavramı anlamaya odaklanıyoruz. +![Lineer ve polinom regresyon infografiği](../../../../translated_images/tr/linear-polynomial.5523c7cb6576ccab.webp) +> Infografik [Dasani Madipalli](https://twitter.com/dasani_decoded) tarafından -> ### [Bu ders R dilinde de mevcuttur!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +## [Ders Öncesi Quiz](https://ff-quizzes.netlify.app/en/ml/) + +> ### [Bu ders R dilinde de mevcuttur!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Giriş -Şimdiye kadar, balkabağı fiyatlandırma veri setinden toplanan örnek verilerle regresyonun ne olduğu hakkında bilgi edindiniz. Ayrıca Matplotlib kullanarak bunu görselleştirdiniz. +Şimdiye kadar, bu ders boyunca kullanacağımız kabak fiyatlandırma veri kümesinden örnek veri ile regresyonun ne olduğunu keşfettiniz. Ayrıca bunu Matplotlib ile görselleştirdiniz. -Şimdi Makine Öğrenimi için regresyona daha derinlemesine dalmaya hazırsınız. Görselleştirme, veriyi anlamlandırmanıza olanak sağlarken, Makine Öğrenimi'nin gerçek gücü modellerin _eğitilmesinden_ gelir. Modeller geçmiş verilere göre eğitilir ve veri bağımlılıklarını otomatik olarak yakalar, böylece modelin daha önce görmediği yeni veriler için tahmin yapmanızı sağlar. +Artık makine öğrenmesi için regresyona daha derinlemesine dalmaya hazırsınız. Görselleştirme veri anlamanıza olanak sağlarken, Makine Öğrenmesinin gerçek gücü _modellerin eğitilmesi_ üzerinden gelir. Modeller, verilerdeki bağımlılıkları otomatik yakalamak için geçmiş veriler üzerinde eğitilir ve modele daha önce görmediği yeni veriler için sonuçlar tahmin etme olanağı tanır. -Bu derste, _temel doğrusal regresyon_ ve _polinomsal regresyon_ olmak üzere iki regresyon türünü ve bu tekniklerin altında yatan bazı matematikleri öğreneceksiniz. Bu modeller, farklı giriş verilerine bağlı olarak balkabağı fiyatlarını tahmin etmemize olanak sağlayacak. +Bu derste, _temel lineer regresyon_ ve _polinom regresyon_ olmak üzere iki regresyon türünü ve bu tekniklerin altında yatan matematiği öğreneceksiniz. Bu modeller, farklı giriş verilerine bağlı olarak kabak fiyatlarını tahmin etmemize olanak sağlayacak. -[![Yeni başlayanlar için ML - Doğrusal Regresyonu Anlamak](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Yeni başlayanlar için ML - Doğrusal Regresyonu Anlamak") +[![Yeni başlayanlar için ML - Lineer Regresyonu Anlamak](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Yeni başlayanlar için ML - Lineer Regresyonu Anlamak") -> 🎥 Doğrusal regresyon hakkında kısa bir video özeti için yukarıdaki resme tıklayın. +> 🎥 Lineer regresyonun kısa video genel bakışı için yukarıdaki görsele tıklayın. -> Bu müfredat boyunca, matematik bilgimizin minimum düzeyde olduğunu varsayıyoruz ve bu konuyu diğer alanlardan gelen öğrenciler için erişilebilir kılmaya çalışıyoruz. Bu yüzden anlaşılmayı kolaylaştırmak için notlar, 🧮 açıklamalar, diyagramlar ve diğer öğrenme araçlarına dikkat edin. +> Bu müfredat boyunca, matematik bilgisinin minimum seviyede olacağını varsayıyor ve diğer alanlardan gelen öğrenciler için erişilebilir hale getirmeyi amaçlıyoruz. Anlamaya yardımcı notlar, 🧮 çağrılar, diyagramlar ve diğer öğrenme araçlarına dikkat edin. ### Ön Koşul -Artık incelediğimiz balkabağı verisinin yapısına aşina olmalısınız. Bu dersin _notebook.ipynb_ dosyasında önceden yüklenmiş ve önceden temizlenmiş halde bulunmaktadır. Dosyada balkabağı fiyatı bushel başına yeni bir veri çerçevesinde gösterilmektedir. Bu not defterlerini Visual Studio Code'daki çekirdeklerde çalıştırabildiğinizden emin olun. +Artık incelediğimiz kabak verisinin yapısına aşina olmalısınız. Veriyi bu dersin _notebook.ipynb_ dosyasında önceden yüklenmiş ve temizlenmiş bulabilirsiniz. Dosyada kabak fiyatı, bushel başına yeni bir veri çerçevesinde gösterilmiştir. Bu not defterlerini Visual Studio Code'da çekirdeklerde çalıştırabildiğinizden emin olun. ### Hazırlık -Hatırlatma olarak, bu verileri sorular sormak için yüklüyorsunuz. +Hatırlatma olarak, bu veriyi yüklüyorsunuz ki ona sorular sorabilesiniz. -- Balkabaklarını satın almak için en iyi zaman ne zamandır? -- Minyatür balkabaklarından bir kutu için ne kadar fiyat bekleyebilirim? -- Onları yarım bushel sepetlerde mi yoksa 1 1/9 bushel kutularda mı almalıyım? -Veriye daha derinlemesine bakalım. +- Kabakları satın almak için en iyi zaman ne zamandır? +- Mini kabak kasası için hangi fiyatı bekleyebilirim? +- Bunları yarım bushel sepetlerde mi yoksa 1 1/9 bushel kutuda mı almalıyım? +Veri üzerinde kazmaya devam edelim. -Önceki derste, Pandas veri çerçevesi oluşturdunuz ve fiyatlandırmayı bushel bazında standartlaştırarak orijinal veri setinin bir kısmını doldurdunuz. Ancak bu şekilde sadece yaklaşık 400 veri noktası toplayabildiniz ve sadece sonbahar aylarına ait veriler oldu. +Önceki derste, Pandas veri çerçevesi oluşturdunuz ve fiyatlandırmayı bushel bazında standartlaştırarak orijinal veri kümesinin bir kısmı ile doldurdunuz. Ancak bu, sadece yaklaşık 400 veri noktası ve yalnızca sonbahar ayları için veri toplamanıza olanak sağladı. -Bu derse eşlik eden not defterinde önceden yüklenmiş veriye bir göz atın. Veri önceden yüklü ve ay verisini göstermek için ilk bir dağılım grafiği çizildi. Belki veriyi daha da temizleyerek verinin doğası hakkında biraz daha detay alabiliriz. +Bu dersin eşlik eden not defterinde önceden yüklenmiş veriye bir göz atın. Veri yüklü olarak geliyor ve ay verisini göstermek için ilk bir dağılım grafiği çiziliyor. Verinin doğası hakkında biraz daha ayrıntı öğrenmek için onu daha fazla temizleyebiliriz. -## Doğrusal regresyon çizgisi +## Bir lineer regresyon doğrusu -Ders 1'de öğrendiğiniz gibi, doğrusal regresyon egzersizinin amacı bir çizgi çizmek ve: +Ders 1'de öğrendiğiniz gibi, lineer regresyon egzersizinin amacı: -- **Değişken ilişkilerini göstermek**. Değişkenler arasındaki ilişkiyi göstermek -- **Tahmin yapmak**. Yeni bir veri noktasının o çizgiye göre nerede düşeceğini doğru şekilde tahmin etmek +- **Değişken ilişkilerini göstermek**. Değişkenler arasındaki ilişkiyi göstermek +- **Tahmin yapmak**. Yeni bir veri noktasının o çizgiye göre nerede olacağını doğru tahmin etmek -**En Küçük Kareler Regresyonu** genellikle bu tür bir çizgiyi çizer. "En Küçük Kareler" terimi modelimizdeki toplam hatayı minimize etmeyi ifade eder. Her veri noktası için gerçek nokta ile regresyon çizgisi arasındaki dikey mesafe (kalan) ölçülür. +**En Küçük Kareler Regresyonu** ile bu tür bir çizgi çizmek tipiktir. "En Küçük Kareler" terimi, modelimizdeki toplam hatanın en aza indirilmesi sürecini ifade eder. Veri noktasının her biri için gerçek nokta ile regresyon çizgisi arasındaki dikey mesafeyi (rezidü olarak adlandırılır) ölçeriz. -Bu mesafeleri kareye almamızın iki temel sebebi vardır: +Bu mesafeleri iki ana nedenle kare alırız: -1. **Büyüklük, Yönden Önde:** -5 hatasını +5 hatası ile aynı şekilde ele almak istiyoruz. Karekök alma işlemi tüm değerleri pozitif yapar. +1. **Yön yerine büyüklük:** -5 hata ile +5 hata aynı muameleyi görmeli. Kare alma tüm değerleri pozitif yapar. -2. **Aykırı Değerleri Cezalandırma:** Karekök alma büyük hatalara daha fazla ağırlık verir ve çizgiyi uzak noktalara daha yakın tutmaya zorlar. +2. **Aykırı değerleri cezalandırmak:** Kare alma, büyük hatalara daha fazla ağırlık verir, çizginin uzak noktaların yanında kalmasını zorlar. -Sonra bu kareleri toplarız. Amaç, toplam karenin en küçük olduğu çizgiyi bulmaktır — bu yüzden adı "En Küçük Kareler"dir. +Sonra bu kareli değerleri toplarız. Amacımız, bu toplamın en küçük olduğu (en düşük mümkün değer) çizgiyi bulmaktır — bu yüzden "En Küçük Kareler" denir. -> **🧮 Matematiği göster** -> -> En uygun çizgi (line of best fit) şu [denklemle ifade edilir](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Matematiği Göster** +> +> Bu çizgiye _en iyi uyum çizgisi_ adı verilir ve [bir denklemle](https://en.wikipedia.org/wiki/Simple_linear_regression) ifade edilir: +> > ``` > Y = a + bX > ``` -> -> `X` 'açıklayıcı değişken'dir. `Y` 'bağımlı değişken'dir. Çizginin eğimi `b` ve `a`, `X = 0` iken `Y` değerini ifade eden y-kesişimidir. -> ->![eğimi hesapla](../../../../translated_images/tr/slope.f3c9d5910ddbfcf9.webp) -> -> Öncelikle eğimi `b` hesaplayın. İnfografik [Jen Looper](https://twitter.com/jenlooper) tarafından -> -> Başka bir deyişle, balkabağı verimizin orijinal sorusu olan: "ay bazında bushel başına balkabağı fiyatını tahmin et" durumunda, `X` fiyatı ifade ederken, `Y` satış ayını temsil eder. -> ->![denklem tamamla](../../../../translated_images/tr/calculation.a209813050a1ddb1.webp) -> -> Y değerini hesaplayın. Yaklaşık 4$ ödüyorsanız, Nisan olmalı! İnfografik [Jen Looper](https://twitter.com/jenlooper) tarafından -> -> Düzgün çizgiyi hesaplayan matematik, eğimi ve aynı zamanda `X = 0` iken `Y`'nin konumunu gösteren y-kesişimini içermektedir. -> -> Bu değerlerin hesaplama yöntemini [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) sitesinde görebilirsiniz. Ayrıca [bu En Küçük Kareler hesaplayıcısını](https://www.mathsisfun.com/data/least-squares-calculator.html) ziyaret ederek sayı değerlerinin çizgiye etkisini izleyebilirsiniz. +> +> `X`, 'açıklayıcı değişken'dir. `Y`, 'bağımlı değişken'dir. Çizginin eğimi `b` ve `a` ise y-kesişimidir; `X = 0` iken `Y` değerini ifade eder. +> +>![eğim hesaplama](../../../../translated_images/tr/slope.f3c9d5910ddbfcf9.webp) +> +> Önce `b` eğimini hesaplayın. Infografik [Jen Looper](https://twitter.com/jenlooper) tarafından +> +> Başka bir deyişle ve kabak verimizin orijinal sorusuna atıfta bulunursak: "ay bazında bushel başına kabak fiyatını tahmin etme" durumunda, `X` fiyatı, `Y` ise satış ayını ifade eder. +> +>![denklemi tamamla](../../../../translated_images/tr/calculation.a209813050a1ddb1.webp) +> +> `Y` değerini hesaplayın. Yaklaşık 4 dolar ödüyorsanız, kesin Nisan ayıdır! Infografik [Jen Looper](https://twitter.com/jenlooper) tarafından +> +> Çizgiyi hesaplayan matematik, ayrıca kesişim noktasına bağlı olan eğimi veya `X=0` iken `Y`nin yerini gösterir. +> +> Bu değerlerin hesaplama yöntemini [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) sitesinde görebilirsiniz. Ayrıca sayısal değerlerin çizgi üzerindeki etkisini izlemek için [bu En Küçük Kareler hesaplayıcısını](https://www.mathsisfun.com/data/least-squares-calculator.html) ziyaret edin. ## Korelasyon -Bir diğer önemli terim de verilen X ve Y değişkenleri arasındaki **Korelasyon Katsayısıdır**. Bir dağılım grafiği kullanarak bu katsayıyı hızlıca görselleştirebilirsiniz. Veriler düzgün bir çizgi üzerinde ise yüksek korelasyon vardır, ama veriler X ve Y arasında rastgele dağılmışsa korelasyon düşüktür. - -İyi bir doğrusal regresyon modeli, En Küçük Kareler Regresyon yöntemi ile çizilmiş regresyon çizgisi kullanarak yüksek (0'a değil, 1'e yakın) bir Korelasyon Katsayısına sahip olandır. +Anlaşılması gereken bir başka terim, verilen X ve Y değişkenleri arasındaki **Korelasyon Katsayısı**dır. Bir dağılım grafiği kullanarak bu katsayıyı hızlıca görselleştirebilirsiniz. Veri noktalarının düzgün bir çizgi etrafında dağılması yüksek korelasyon, noktaların her yere saçılması ise düşük korelasyonu gösterir. -✅ Bu derse eşlik eden not defterini çalıştırın ve Ay ile Fiyat arasındaki dağılım grafiğine bakın. Dağınık grafik yorumu ile balkabağı satışlarında Ay ile Fiyat arasında yüksek mi yoksa düşük mü bir korelasyon görüyorsunuz? Ay yerine *yılın günü* gibi daha ince bir ölçüm kullandığınızda değişir mi? +İyi bir lineer regresyon modeli, En Küçük Kareler Regresyon yöntemiyle oluşturulmuş ve regresyon çizgisi olan yüksek (0'a değil 1'e yakın) Korelasyon Katsayısına sahip olacaktır. -Aşağıdaki kodda, verinin temizlendiğini ve `new_pumpkins` adında aşağıdakine benzer bir veri çerçevesi elde edildiğini varsayacağız: +✅ Bu dersin eşlik eden not defterini çalıştırın ve Ay ile Fiyat arasındaki dağılım grafiğine bakın. Kabak satışları için Ay ile Fiyat arasındaki veriler, sizce dağılım grafiğinin görsel yorumuna göre yüksek mi yoksa düşük mü korelasyona sahip? Eğer `Month` yerine *yılın günü* gibi daha ince bir ölçüt kullanırsanız değişir mi? -ID | Ay | YılınGünü | Çeşit | Şehir | Paket | Düşük Fiyat | Yüksek Fiyat | Fiyat ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | TURTA TİPİ | BALTIMORE | 1 1/9 bushel karton | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | TURTA TİPİ | BALTIMORE | 1 1/9 bushel karton | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | TURTA TİPİ | BALTIMORE | 1 1/9 bushel karton | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | TURTA TİPİ | BALTIMORE | 1 1/9 bushel karton | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | TURTA TİPİ | BALTIMORE | 1 1/9 bushel karton | 15.0 | 15.0 | 13.636364 +Aşağıdaki kodda, veriyi temizlediğimizi ve aşağıdaki gibi `new_pumpkins` adlı bir veri çerçevesine sahip olduğumuzu varsayalım: -> Veriyi temizlemek için kullanılan kod [`notebook.ipynb`](notebook.ipynb) dosyasında mevcuttur. Önceki derste yapılan aynı temizleme adımları uygulanmıştır ve `DayOfYear` sütunu aşağıdaki ifade ile hesaplanmıştır: +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +> Veriyi temizlemek için kullanılan kod [`notebook.ipynb`](notebook.ipynb) dosyasında mevcuttur. Önceki derste yapılan aynı temizleme işlemlerini yaptık ve `DayOfYear` sütununu aşağıdaki ifade ile hesapladık: +> ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Doğrusal regresyonun matematiğini anladığınıza göre, hangi balkabağı paketinin en iyi fiyatı sağlayacağını tahmin etmek için bir Regresyon modeli oluşturalım. Tatil balkabağı tarlası için balkabağı alan biri, satın alımlarını optimize edebilmek adına bu bilgiye ihtiyaç duyabilir. + +Şimdi lineer regresyonun matematiğini anladığınıza göre, hangi kabak paketinin en iyi fiyatı vereceğini tahmin etmeye çalışmak için bir Regresyon modeli oluşturalım. Tatil zamanı kabak sergisi için kabak satın alan biri, kabak paketlerini en iyi şekilde satın almak için bu bilgiyi isteyebilir. ## Korelasyon Arayışı -[![Yeni başlayanlar için ML - Korelasyon Arayışı: Doğrusal Regresyonun Anahtarı](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Yeni başlayanlar için ML - Korelasyon Arayışı: Doğrusal Regresyonun Anahtarı") +[![Yeni başlayanlar için ML - Korelasyon Arayışı: Lineer Regresyonun Anahtarı](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Yeni başlayanlar için ML - Korelasyon Arayışı: Lineer Regresyonun Anahtarı") -> 🎥 Korelasyon hakkında kısa bir video özeti için yukarıdaki resme tıklayın. +> 🎥 Korelasyonun kısa video özeti için yukarıdaki görsele tıklayın. -Önceki dersten muhtemelen farklı ayların ortalama fiyatının şöyle göründüğünü gördünüz: +Önceki dersten muhtemelen farklı aylar için ortalama fiyatların şöyle göründüğünü gördünüz: -Aylara göre ortalama fiyat +Aya göre ortalama fiyat -Bu, bir miktar korelasyon olduğunu düşündürür ve `Ay` ile `Fiyat` veya `YılınGünü` ile `Fiyat` arasındaki ilişkiyi tahmin etmek için doğrusal regresyon modeli eğitebiliriz. Aşağıda sonuncusu gösteren bir dağılım grafiği bulunmaktadır: +Bu durum biraz korelasyon olması gerektiğini düşündürür ve `Month` ile `Price` arasında veya `DayOfYear` ile `Price` arasında ilişkiyi tahmin etmek için lineer regresyon modeli eğitmeyi deneyebiliriz. İşte ikincisini gösteren dağılım grafiği: -Yılın Günü ve Fiyat Dağılım Grafiği +Gün bazında fiyatın dağılım grafiği -`corr` fonksiyonunu kullanarak korelasyonu kontrol edelim: +`corr` fonksiyonuyla korelasyona bakalım: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Görüldüğü gibi korelasyon oldukça küçük, `Ay` için -0.15, `YılınGünü` için ise -0.17, fakat başka önemli bir ilişki olabilir. Fiyatların farklı balkabağı çeşitlerine göre kümelendiği görünüyor. Bu hipotezi doğrulamak için, her balkabağı kategorisini farklı renkte gösterelim. `scatter` fonksiyonuna bir `ax` parametresi vererek tüm noktaları aynı grafik üzerinde çizebiliriz: + +Görünüşe göre korelasyon oldukça küçük, `Month` için -0.15 ve `DayOfYear` için -0.17, ancak başka önemli bir ilişki olabilir. Farklı kabak çeşitlerine karşılık gelen farklı fiyat kümeleri var gibi duruyor. Bu hipotezi doğrulamak için her kabak kategorisini farklı bir renkle çizelim. `scatter` çizim fonksiyonuna `ax` parametresi vererek tüm noktaları aynı grafikte gösterebiliriz: ```python ax=None @@ -139,75 +140,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +Farklı renkle gün bazında fiyat scatter grafiği -Yılın Günü ve Fiyat Dağılım Grafiği Renkli - -İncelemenize göre, çeşit genel fiyata satış tarihinden daha fazla etki ediyor. Bir çubuk grafik ile de görebiliriz: +Araştırmamız, çeşidin satış tarihinden daha fazla fiyat üzerinde etkisi olduğunu gösteriyor. Bunu bir çubuk grafikle görebiliriz: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +Çeşite göre fiyat çubuk grafik -Fiyat ve Çeşit Çubuk Grafiği - -Şimdi sadece bir balkabağı çeşidi olan 'turta tipi' üzerinde duralım ve tarihin fiyat üzerindeki etkisini görelim: +Şu an için sadece bir kabak çeşidi olan 'pie type'a odaklanalım ve tarihin fiyat üzerindeki etkisine bakalım: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Yılın Günü ve Fiyat Dağılım Grafiği +Pie kabaklarının fiyat ve gün dağılım grafiği -Şimdi `Price` ve `DayOfYear` arasındaki korelasyonu `corr` fonksiyonu ile hesaplayalım; yaklaşık `-0.27` alacağız — bu, tahmin modelleri eğitmenin mantıklı olduğunu gösteriyor. +`corr` fonksiyonu kullanarak `Price` ile `DayOfYear` arasındaki korelasyonu şimdi hesaplasak, yaklaşık `-0.27` alırız - bu da tahmine dayalı model eğitmenin mantıklı olduğunu gösterir. -> Doğrusal regresyon modeli eğitmeden önce verimizin temiz olduğundan emin olmak önemlidir. Doğrusal regresyon eksik değerlerle iyi çalışmaz, bu yüzden boş hücreleri temizlemek mantıklıdır: +> Lineer regresyon modeli eğitmeden önce, verimizin temiz olduğundan emin olmak önemlidir. Lineer regresyon eksik verilerle iyi çalışmaz, bu nedenle tüm boş hücrelerden kurtulmak mantıklıdır: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` + +Başka bir yaklaşım, bu boş değerleri, karşılık gelen sütunun ortalama değerleriyle doldurmaktır. -Başka bir yöntem ise o boş değerleri ilgili sütunun ortalama değerleri ile doldurmaktır. - -## Basit Doğrusal Regresyon +## Basit Lineer Regresyon -[![Yeni başlayanlar için ML - Scikit-learn kullanarak Doğrusal ve Polinomsal Regresyon](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Yeni başlayanlar için ML - Scikit-learn kullanarak Doğrusal ve Polinomsal Regresyon") +[![Yeni başlayanlar için ML - Scikit-learn kullanarak Lineer ve Polinom Regresyon](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Yeni başlayanlar için ML - Scikit-learn kullanarak Lineer ve Polinom Regresyon") -> 🎥 Doğrusal ve polinomsal regresyon hakkında kısa video özeti için yukarıdaki resme tıklayın. +> 🎥 Lineer ve polinom regresyonun kısa video genel bakışı için yukarıdaki görsele tıklayın. -Doğrusal Regresyon modelimizi eğitmek için **Scikit-learn** kütüphanesini kullanacağız. +Lineer Regresyon modelimizi eğitmek için **Scikit-learn** kütüphanesini kullanacağız. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Giriş değerlerini (özellikleri) ve beklenen çıktıyı (etiket) ayrı numpy dizileri olarak ayırarak başlıyoruz: + +Girdi değerlerini (özellikler) ve beklenen çıktıyı (etiket) ayrı numpy dizilerine ayırarak başlıyoruz: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> Dikkat edin, Linear Regression paketinin doğru anlayabilmesi için giriş verisine `reshape` uygulamak zorunda kaldık. Linear Regression, her satırı bir özellik vektörüne karşılık gelen 2D diziyi bekler. Bizim durumumuzda, sadece bir girdi olduğundan, N×1 şeklinde bir dizi gerekir, burada N veri boyutudur. -> Giriş verisini Linear Regression paketinin doğru anlaması için `reshape` işlemi yapmamız gerektiğine dikkat edin. Doğrusal Regresyon, girdi olarak her satırı bir özellik vektörü olan 2D bir dizi bekler. Bizim durumumuzda sadece bir girdi olduğundan, array boyutu N×1 (N veri seti büyüklüğü) olmalıdır. - -Sonra modeli eğitim ve test verisi olarak bölmemiz gerekmektedir, böylece eğitim sonrası modelimizi doğrulayabiliriz: +Sonra veriyi eğitim ve test veri setlerine ayırmamız gerekir, böylece eğitim sonrası modelimizi doğrulayabiliriz: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Son olarak, gerçek Doğrusal Regresyon modelinin eğitilmesi sadece iki satır kod alır. `LinearRegression` nesnesini tanımlıyoruz ve `fit` metodu ile veriye uyduruyoruz: + +Son olarak, Lineer Regresyon modelini gerçek anlamda eğitmek sadece iki satır kod alır. `LinearRegression` nesnesini tanımlarız ve `fit` metodu ile verimize uyarlarız: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit` işleminden sonra `LinearRegression` nesnesi regresyonun tüm katsayılarını içerir ve bunlara `.coef_` özelliği aracılığıyla erişilebilir. Bizim durumumuzda, yalnızca bir katsayı vardır ve bu yaklaşık `-0.017` civarında olmalıdır. Bu, fiyatların zamanla biraz düşme eğiliminde olduğunu gösterir, ancak çok fazla değil, günde yaklaşık 2 sent kadar. Regresyonun Y eksenini kestiği noktaya `lin_reg.intercept_` ile erişebiliriz - bizim örneğimizde bu yaklaşık `21` olacak ve yılın başındaki fiyatı gösterir. +`fit` işleminden sonra `LinearRegression` nesnesi regresyonun tüm katsayılarını içerir ve bunlara `.coef_` özelliği ile erişilebilir. Bizim örneğimizde sadece bir katsayı var ve bu değer yaklaşık `-0.017` civarında olmalı. Bu, fiyatların zamanla biraz düştüğünü, ancak çok fazla olmadığını, günde yaklaşık 2 sent kadar azaldığını gösterir. Regresyonun Y ekseni ile kesişim noktasına ise `lin_reg.intercept_` ile erişebiliriz - bizim durumumuzda bu değer yaklaşık `21` olacak ve yılın başındaki fiyatı gösterir. -Modelimizin ne kadar doğru olduğunu görmek için test veri seti üzerinde fiyatları tahmin edebilir ve ardından tahminlerimizin beklenen değerlere ne kadar yakın olduğunu ölçebiliriz. Bu, beklenen ve tahmin edilen değerler arasındaki tüm kare farkların ortalamasının karekökü olan kök ortalama kare hata (RMSE) metriği kullanılarak yapılabilir. +Modelimizin ne kadar doğru olduğunu görmek için test veri seti üzerinde fiyat tahminleri yapabiliriz ve ardından tahminlerin beklenen değerlerle ne kadar yakın olduğunu ölçebiliriz. Bu, beklenen ve tahmin edilen değerler arasındaki tüm kare farkların ortalamasının karekökü olan root mean square error (RMSE) metriğiyle yapılabilir. ```python pred = lin_reg.predict(X_test) @@ -216,16 +217,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Hatalarımız yaklaşık 2 puan civarında görünüyor, bu da yaklaşık %17. Çok iyi değil. Model kalitesinin diğer bir göstergesi **belirleme katsayısı**dır ve şöyle elde edilir: +Hata yaklaşık 2 puan civarında görünüyor, bu da yaklaşık %17. Çok iyi değil. Model kalitesinin bir diğer göstergesi ise **determination katsayısı**dır ve şöyle elde edilir: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` + Eğer değer 0 ise, model girdi verilerini dikkate almıyor demektir ve *en kötü lineer tahmin edici* gibi davranır, bu da sonuçların sadece ortalama değeridir. 1 değeri ise tüm beklenen çıktıları mükemmel tahmin edebileceğimiz anlamına gelir. Bizde katsayı yaklaşık 0.06 civarında, bu oldukça düşük. -Eğer değer 0 ise, model giriş verilerini hesaba katmaz ve *en kötü doğrusal tahminci* gibi davranır ki bu sadece sonucun ortalamasıdır. Değer 1 olursa, tüm beklenen çıktıları mükemmel şekilde tahmin edebiliriz. Bizim durumumuzda, katsayı yaklaşık 0.06 civarında, yani oldukça düşük. - -Regresyonun nasıl çalıştığını daha iyi görmek için test verilerini regresyon çizgisiyle birlikte de çizebiliriz: +Test verilerini ve regresyon doğrusunu birlikte çizerek regresyonun nasıl çalıştığını daha iyi görebiliriz: ```python plt.scatter(X_test,y_test) @@ -236,17 +236,17 @@ plt.plot(X_test,pred) ## Polinom Regresyonu -Doğrusal regresyonun bir başka türü Polinom Regresyonudur. Bazen değişkenler arasında doğrusal bir ilişki vardır - hacmi ne kadar büyükse balkabağının fiyatı o kadar yüksek olur - bazen bu ilişkiler düz bir çizgi ya da düzlem olarak çizilemez. +Lineer regresyonun diğer bir türü Polinom Regresyonudur. Bazen değişkenler arasında lineer bir ilişki olsa da - hacimce kabak ne kadar büyükse fiyat o kadar yüksek - bazen bu ilişkiler düzlem veya doğru olarak çizilemez. -✅ İşte Polinom Regresyon kullanılabilecek [başka örnekler](https://online.stat.psu.edu/stat501/lesson/9/9.8) +✅ İşte Polinom Regresyonu kullanılabilecek [başka bazı örnekler](https://online.stat.psu.edu/stat501/lesson/9/9.8) -Date ve Price arasındaki ilişkiye bir kez daha bakın. Bu saçılım grafiği mutlaka bir doğruyla mı analiz edilmeli gibi görünüyor? Fiyatlar dalgalanamaz mı? Bu durumda polinom regresyonu deneyebilirsiniz. +Tarih ve Fiyat arasındaki ilişkiye tekrar bakalım. Bu saçılım grafiği mutlaka bir doğru ile mi analiz edilmeli? Fiyatlar dalgalanamaz mı? Bu durumda polinom regresyonu deneyebilirsiniz. -✅ Polinomlar bir veya daha fazla değişken ve katsayı içerebilen matematiksel ifadelerden oluşur. +✅ Polinomlar, bir veya daha fazla değişken ve katsayıdan oluşabilen matematiksel ifadelerdir. -Polinom regresyon, doğrusal olmayan verilere daha iyi uyması için eğri bir çizgi oluşturur. Bizim durumumuzda, giriş verisine karesel `DayOfYear` değişkenini dahil edersek, verimizi yıl içinde belirli bir noktada minimuma sahip parabolik bir eğriyle uyarlayabiliriz. +Polinom regresyon, doğrusal olmayan verilere daha iyi uyum sağlamak için eğri bir doğrusu oluşturur. Bizim durumumuzda, girdi verilerine karesel `DayOfYear` değişkenini eklersek, verilerimizi minimum noktasının yıl içinde belirli bir yerde olduğu parabolik bir eğriyle uydurabiliriz. -Scikit-learn, veri işleme adımlarını birleştirmek için faydalı bir [pipeline API'si](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) içerir. Bir **pipeline** bir dizi **estimator**dir. Bizim durumumuzda önce modele polinom özellikler ekleyen, ardından regresyon eğiten bir pipeline oluşturacağız: +Scikit-learn, veri işleme adımlarını birleştirmek için faydalı bir [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) içerir. Bir **pipeline**, birbirine bağlı **estimator** zinciridir. Bizim örneğimizde, önce modele polinom özellikler ekleyen sonra regresyonu eğiten bir pipeline oluşturacağız: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` kullanmak, giriş verisindeki tüm ikinci dereceden polinomları dahil edeceğimiz anlamına gelir. Bizim durumumuzda bu sadece `DayOfYear`2 anlamına gelir, ancak örneğin iki değişken olan X ve Y için bu X2, XY ve Y2 ekler. İsterseniz daha yüksek dereceli polinomlar da kullanabilirsiniz. +`PolynomialFeatures(2)` kullanımı, girdi verilerinden tüm ikinci dereceden polinomları dahil edeceğimiz anlamına gelir. Bizim örneğimizde sadece `DayOfYear`2 olacak, ancak iki girdi değişkeni X ve Y için bu X2, XY ve Y2 eklemek anlamına gelir. İsterseniz daha yüksek dereceli polinomlar da kullanabilirsiniz. + +Pipeline nesneleri, orijinal `LinearRegression` nesnesi gibi kullanılabilir, yani pipeline'ı `fit` edebilir, ardından `predict` ile tahmin sonuçlarını alabiliriz: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Düzensiz test verileri üzerinde doğrudan çizim yapmak yerine, `np.linspace` ile düzgün bir giriş değeri aralığı oluşturarak düzgün bir yaklaşık eğri çizeriz (aksi halde zikzak çizgi oluşur): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipelinelar, orijinal `LinearRegression` nesnesi ile aynı şekilde kullanılabilir, yani pipeline üzerinde `fit` yapabilir ve sonra `predict` ile tahmin sonuçları alabilirsiniz. İşte test verileri ve yaklaşık eğriyi gösteren grafik: +Aşağıda test verilerini ve yaklaşık eğriyi gösteren grafik var: Polynomial regression -Polinom Regresyon kullanarak MSE'yi biraz daha düşürebilir ve belirleme katsayısını biraz daha yükseltebiliriz, ama çok değil. Diğer özellikleri de hesaba katmamız gerekiyor! +Polinom Regresyon kullanarak biraz daha düşük RMSE ve daha yüksek determination elde etmek mümkün fakat çok büyük bir fark değil. Diğer özellikleri de dikkate almamız gerekiyor! -> Kabak fiyatlarının en düşük olduğu yerin Cadılar Bayramı civarı olduğunu görebilirsiniz. Bunu nasıl açıklarsınız? +> Minimum kabak fiyatlarının genellikle Cadılar Bayramı civarında gözlendiğini görebilirsiniz. Bunu nasıl açıklarsınız? -🎃 Tebrikler, kabak fiyatını tahmin etmeye yardımcı olabilecek bir model yarattınız. Muhtemelen aynı prosedürü tüm kabak çeşitleri için tekrarlayabilirsiniz, ama bu zahmetli olur. Şimdi modelimizde kabak çeşidini nasıl dikkate alacağımızı öğrenelim! +🎃 Tebrikler, turta kabakları fiyatını tahmin etmeye yardımcı olacak bir model oluşturdunuz. Muhtemelen tüm kabak türleri için aynı prosedürü tekrarlayabilirsiniz, ama bu zahmetli olur. Şimdi modelimize kabak çeşidini nasıl dahil edeceğimizi öğrenelim! ## Kategorik Özellikler -İdeal dünyada, farklı kabak çeşitlerinin fiyatlarını aynı modelle tahmin etmek isteriz. Ancak `Variety` sütunu, `Month` gibi sütunlardan biraz farklıdır çünkü sayısal olmayan değerler içerir. Bu tür sütunlara **kategorik** denir. +İdeal dünyada, farklı kabak çeşitlerinin fiyatlarını aynı modelle tahmin edebilmek isteriz. Ancak `Variety` sütunu, `Month` gibi sayısal sütunlardan biraz farklıdır çünkü sayısal olmayan değerler içerir. Bu tür sütunlara **kategorik** denir. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Kategorik özelliklerin kullanımına kısa video özetini izlemek için yukarıdaki görsele tıklayın. +> 🎥 Kategorik özelliklerin kullanımı hakkında kısa video açıklaması için yukarıdaki görsele tıklayın. -Burada ortalama fiyatın çeşide nasıl bağlı olduğunu görebilirsiniz: +Burada ortalama fiyatın çeşide göre nasıl değiştiğini görebilirsiniz: Average price by variety -Çeşidi dikkate almak için önce onu sayısal forma dönüştürmemiz veya **kodlamamız** gerekir. Bunu yapmanın birkaç yolu vardır: +Çeşidi hesaba katmak için önce onu sayısal forma dönüştürmeli veya **kodlamalıyız**. Bunu yapmanın birkaç yolu var: -* Basit **sayısal kodlama** farklı çeşitlerin bir tablosunu oluşturur ve ardından çeşit adını o tablodaki bir indeks ile değiştirir. Bu doğrusal regresyon için en iyi fikir değildir çünkü doğrusal regresyon indeksin gerçek sayısal değerini alır ve sonucu buna göre katsayı ile çarpar. Bizim durumumuzda, indeks numarası ile fiyat arasındaki ilişki açıkça doğrusal değildir, indekslerin belirli bir şekilde sıralandığını varsaysak bile. -* **One-hot kodlama** `Variety` sütununu dört farklı sütunla değiştirir, her biri bir çeşit içindir. Her sütun karşılık gelen satır o çeşide aitse `1`, değilse `0` içerir. Bu, doğrusal regresyonda dört katsayı olacağı anlamına gelir; her kabak çeşidi için biri, o çeşidin "başlangıç fiyatı" (veya "ek fiyat") sorumlusudur. +* Basit **sayısal kodlama**, farklı çeşitler tablosu oluşturur ve sonra o tablodaki indeksi çeşidin adıyla değiştirir. Ancak bu lineer regresyon için en iyi fikir değildir çünkü lineer regresyon indeksin gerçek sayısal değerini alır ve bazı katsayılarla çarpıp sonuca ekler. Bizim durumumuzda indeks numarası ile fiyat arasındaki ilişki açıkça doğrusal değildir, indeksler belli bir sıraya göre ayarlansa bile. +* **One-hot encoding**, `Variety` sütununu her çeşit için bir sütun olmak üzere 4 farklı sütunla değiştirir. Her sütun, karşılık gelen satır o çeşide ait ise `1`, değilse `0` içerir. Bu şekilde lineer regresyonda dört katsayı olur, her kabak çeşidi için "başlangıç fiyatı" (veya daha doğrusu o çeşide ait "ek fiyat") sorumludur. -Aşağıdaki kod kabak çeşidini one-hot kodlama ile nasıl yapabileceğimizi gösterir: +Aşağıdaki kod, çeşidi one-hot encode ile nasıl kodlayabileceğimizi gösteriyor: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -One-hot kodlu çeşidi giriş olarak kullanarak doğrusal regresyon eğitmek için sadece `X` ve `y` verilerini doğru başlatmamız gerekir: +Lineer regresyonu one-hot encode edilmiş çeşit kullanarak eğitmek için `X` ve `y` verilerini doğru şekilde başlatmamız yeterlidir: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Kalan kod, yukarıda doğrusal regresyon eğitmek için kullandığımız ile aynıdır. Denerseniz, ortalama kare hata yaklaşık aynı kalır ama belirleme katsayısı çok daha yüksek olur (~%77). Daha doğru tahminler almak için, daha fazla kategorik özellik ile birlikte `Month` veya `DayOfYear` gibi sayısal özellikleri de dikkate alabiliriz. Tüm özellikleri birleştirmek için `join` kullanılabilir: +Kalan kod, yukarıda lineer regresyonu eğitmek için kullandığımızla aynı. Denersek, ortalama kare hatanın yaklaşık aynı olduğunu ama belirleme katsayısının (~77%) çok daha yüksek olduğunu göreceğiz. Daha doğru tahminler için daha fazla kategorik ve sayısal özellikleri, örneğin `Month` veya `DayOfYear`'i de dikkate alabiliriz. Tüm özellikleri tek büyük bir dizi haline getirmek için `join` kullanabiliriz: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,68 +342,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Burada ayrıca `City` ve `Package` türü de dikkate alınır, bu da MSE'yi 2.84 (%10) ve belirleme katsayısını 0.94 yapar! +Burada ayrıca `City` ve `Package` tipi de hesaba katılıyor ve bu sayede RMSE 2.84 (%10.5), belirleme 0.94 oluyor! ## Hepsini Bir Araya Getirmek -En iyi modeli oluşturmak için, yukarıdaki örnekteki birleşik (one-hot kodlu kategorik + sayısal) verileri Polinom Regresyon ile birlikte kullanabiliriz. İşte kolayınız için tam kod: +En iyi modeli oluşturmak için yukarıdaki örnekteki birleştirilmiş (one-hot encode edilmiş kategorik + sayısal) verileri Polinom Regresyon ile birlikte kullanabiliriz. İşte kolayca kullanmanız için tam kod: ```python -# eğitim verilerini ayarla +# eğitim verisini ayarla X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# eğitim-test bölünmesi yap +# eğitim-test bölümü yap X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# işlem hattını kur ve eğit +# boru hattını kur ve eğit pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # test verisi için sonuçları tahmin et pred = pipeline.predict(X_test) -# MSE ve kararlılığı hesapla -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE ve belirleme hesapla +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -Bu, bize neredeyse %97 belirleme katsayısı ve MSE=2.23 (~%8 tahmin hatası) verecektir. +Bu, neredeyse %97 belirleme katsayısı ve RMSE=2.23 (%8 tahmin hatası) verecektir. -| Model | MSE | Belirleme | +| Model | RMSE | Belirleme | |-------|-----|---------------| -| `DayOfYear` Doğrusal | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Lineer | 2.77 (17.2%) | 0.07 | | `DayOfYear` Polinom | 2.73 (17.0%) | 0.08 | -| `Variety` Doğrusal | 5.24 (19.7%) | 0.77 | -| Tüm özellikler Doğrusal | 2.84 (10.5%) | 0.94 | +| `Variety` Lineer | 5.24 (19.7%) | 0.77 | +| Tüm özellikler Lineer | 2.84 (10.5%) | 0.94 | | Tüm özellikler Polinom | 2.23 (8.25%) | 0.97 | -🏆 Aferin! Bir derste dört regresyon modeli yarattınız ve model kalitesini %97’ye kadar yükselttiniz. Regresyonun son bölümünde kategorileri belirlemek için Lojistik Regresyondan bahsedeceğiz. +🏆 Aferin! Tek derste dört tane Regresyon modeli oluşturdunuz ve model kalitesini %97'ye çıkardınız. Regresyonun final bölümünde, kategorileri belirlemek için Lojistik Regresyon öğrenilecektir. --- -## 🚀Meydan Okuma +## 🚀Challenge -Bu not defterinde çeşitli değişkenlerle deney yaparak korelasyonun model doğruluğuna nasıl karşılık geldiğini görün. +Bu defterde farklı değişkenleri test edin ve korelasyonun model doğruluğuna etkisini görün. ## [Ders sonrası sınav](https://ff-quizzes.netlify.app/en/ml/) ## Tekrar & Kendi Kendine Çalışma -Bu derste Doğrusal Regresyonu öğrendik. Başka önemli regresyon türleri de vardır. Stepwise, Ridge, Lasso ve Elasticnet teknikleri hakkında okuyun. Daha fazla öğrenmek için iyi bir kurs [Stanford İstatistiksel Öğrenme kursu](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning). +Bu derste Lineer Regresyondan bahsettik. Başka önemli Regresyon türleri de vardır. Stepwise, Ridge, Lasso ve Elasticnet tekniklerini okuyun. Daha fazla öğrenmek için iyi bir kaynak [Stanford İstatistiksel Öğrenme kursu](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Ödev -[Model Oluştur](assignment.md) +[Model Oluşturma](assignment.md) --- -**Feragatnamesi**: -Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi yerel dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu oluşabilecek herhangi bir yanlış anlama veya yanlış yorumdan sorumlu değiliz. +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba gösterilse de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen göz önünde bulundurun. Yetkili kaynak olarak orijinal belgenin kendi dilindeki versiyonu kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi tavsiye edilir. Bu çevirinin kullanımı sonucunda oluşabilecek yanlış anlamalar veya yorum hatalarından sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/tr/2-Regression/3-Linear/solution/notebook.ipynb index fa297ac734..0d61ca78e2 100644 --- a/translations/tr/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/tr/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Kabak Fiyatlandırması için Doğrusal ve Polinomial Regresyon - Ders 3\n", + "## Kabak Fiyatlandırması için Lineer ve Polinom Regresyon - Ders 3\n", "\n", - "Gerekli kütüphaneleri ve veri setini yükleyin. Verileri aşağıdaki alt küme içeren bir veri çerçevesine dönüştürün:\n", + "Gerekli kütüphaneleri ve veri setini yükleyin. Veriyi aşağıdaki alt kümeyi içeren bir dataframe'e dönüştürün:\n", "\n", - "- Sadece kile ile fiyatlandırılan kabakları alın\n", - "- Tarihi bir aya dönüştürün\n", - "- Fiyatı, yüksek ve düşük fiyatların ortalaması olarak hesaplayın\n", - "- Fiyatı kile miktarına göre fiyatlandırmayı yansıtacak şekilde dönüştürün\n" + "- Sadece bushel başına fiyatlandırılan kabakları alın\n", + "- Tarihi aya dönüştürün\n", + "- Fiyatı yüksek ve düşük fiyatların ortalaması olarak hesaplayın\n", + "- Fiyatı bushel miktarına göre yansıtacak şekilde dönüştürün\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Bir dağılım grafiği, elimizde yalnızca Ağustos'tan Aralık'a kadar olan ay verilerinin bulunduğunu hatırlatır. Muhtemelen doğrusal bir şekilde sonuçlar çıkarabilmek için daha fazla veriye ihtiyacımız var.\n" + "Bir dağılım grafiği, elimizde sadece Ağustos ile Aralık ayları arasına ait veri olduğunu hatırlatır. Doğrusal bir şekilde sonuç çıkarabilmek için muhtemelen daha fazla veriye ihtiyacımız var.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "İlişki olup olmadığına bakalım:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Görünüşe göre korelasyon oldukça küçük, ancak başka daha önemli bir ilişki var - çünkü yukarıdaki grafikteki fiyat noktaları birkaç belirgin küme oluşturuyor gibi görünüyor. Haydi farklı kabak çeşitlerini gösterecek bir grafik yapalım:\n" + "Görünüşe göre korelasyon oldukça küçük, ancak daha önemli başka bir ilişki var - çünkü yukarıdaki grafikte fiyat noktaları birkaç farklı kümeye sahip gibi görünüyor. Farklı kabak çeşitlerini gösterecek bir grafik yapalım:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Şimdilik, yalnızca bir çeşit - **turta tipi** üzerinde yoğunlaşalım.\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Doğrunun eğimi, doğrusal regresyon katsayılarından belirlenebilir:\n" + "Doğrusal regresyon katsayılarından doğrunun eğimi belirlenebilir:\n" ] }, { @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinom Regresyon\n", + "### Polinom Regresyonu\n", "\n", - "Bazen özellikler ile sonuçlar arasındaki ilişki doğası gereği doğrusal olmayabilir. Örneğin, kabak fiyatları kış aylarında (aylar=1,2) yüksek olabilir, yaz aylarında (aylar=5-7) düşebilir ve ardından tekrar yükselebilir. Doğrusal regresyon bu ilişkiyi doğru bir şekilde bulamaz.\n", + "Bazen özellikler ile sonuçlar arasındaki ilişki doğası gereği doğrusal olmayabilir. Örneğin, kabak fiyatları kışın yüksek olabilir (aylar=1,2), ardından yaz boyunca (aylar=5-7) düşebilir ve sonra yine yükselir. Doğrusal regresyon bu ilişkiyi doğru bir şekilde bulamaz.\n", "\n", - "Bu durumda, ek özellikler eklemeyi düşünebiliriz. Basit bir yöntem, giriş özelliklerinden polinomlar kullanmaktır, bu da **polinom regresyon** ile sonuçlanır. Scikit Learn'de, polinom özelliklerini otomatik olarak önceden hesaplamak için boru hatlarını kullanabiliriz:\n" + "Bu durumda, ek özellikler eklemeyi düşünebiliriz. Basit bir yöntem, giriş özelliklerinden polinomlar kullanmaktır; bu da **polinom regresyonu** ile sonuçlanır. Scikit Learn'de, polinom özelliklerini otomatik olarak önceden hesaplamak için pipeline’lar kullanabiliriz: \n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Çeşitlerin Kodlanması\n", + "### Kodlama çeşitleri\n", "\n", - "İdeal bir dünyada, farklı balkabağı çeşitleri için fiyatları aynı modelle tahmin edebilmek isteriz. Çeşidi hesaba katmak için, önce onu sayısal bir forma dönüştürmemiz, yani **kodlamamız** gerekir. Bunu yapmanın birkaç yolu vardır:\n", + "İdeal dünyada, aynı modeli kullanarak farklı kabak çeşitleri için fiyatları tahmin edebilmek isteriz. Çeşidi dikkate almak için önce onu sayısal forma dönüştürmemiz veya **kodlamamız** gerekir. Bunu yapmanın birkaç yolu vardır:\n", "\n", - "* Basit sayısal kodlama, farklı çeşitlerin bir tablosunu oluşturur ve ardından çeşit adını bu tablodaki bir indeksle değiştirir. Bu, doğrusal regresyon için en iyi fikir değildir, çünkü doğrusal regresyon indeksin sayısal değerini dikkate alır ve bu sayısal değer muhtemelen fiyatla sayısal olarak ilişki kurmaz.\n", - "* Tekil kodlama (one-hot encoding), `Variety` sütununu 4 farklı sütunla değiştirir. Her sütun, ilgili satırın belirli bir çeşide ait olup olmadığını göstermek için 1 veya 0 içerir.\n", + "* Farklı çeşitlerin bir tablosunu oluşturacak basit sayısal kodlama ve ardından çeşit ismini o tablodaki bir indeksle değiştirme. Bu, lineer regresyon için en iyi fikir değildir, çünkü lineer regresyon indeksin sayısal değerini dikkate alır ve sayısal değer büyük olasılıkla fiyatla sayısal olarak korele olmaz.\n", + "* Tek-sıcak kodlama (one-hot encoding), bu `Variety` sütununu her biri bir çeşide ait olan 4 farklı sütunla değiştirir; her sütunda ilgili satır verilen çeşide ait ise 1, değilse 0 bulunur.\n", "\n", - "Aşağıdaki kod, bir çeşidi nasıl tekil kodlayabileceğimizi gösteriyor:\n" + "Aşağıdaki kod, bir çeşidin tek-sıcak kodlanmasının nasıl yapılabileceğini göstermektedir:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Çeşit Üzerinde Doğrusal Regresyon\n", + "### Çeşit Üzerinde Lineer Regresyon\n", "\n", - "Şimdi yukarıdakiyle aynı kodu kullanacağız, ancak `DayOfYear` yerine giriş olarak tek-seçenekli kodlanmış çeşidimizi kullanacağız:\n" + "Şimdi yukarıdaki ile aynı kodu kullanacağız, ancak `DayOfYear` yerine girdimiz olarak tek-sıcak-kodlu çeşidimizi kullanacağız:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Aynı şekilde diğer özellikleri kullanmayı deneyebilir ve bunları `Month` veya `DayOfYear` gibi sayısal özelliklerle birleştirebiliriz:\n" + "Aynı şekilde diğer özellikleri de deneyebilir ve bunları `Month` veya `DayOfYear` gibi sayısal özelliklerle birleştirebiliriz:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinom Regresyon\n", + "### Polinom Regresyonu\n", "\n", - "Polinom regresyon, tekil sıcak kodlanmış kategorik özelliklerle de kullanılabilir. Polinom regresyonu eğitmek için kullanılan kod, yukarıda gördüğümüzle temelde aynı olacaktır.\n" + "Polinom regresyonu, tek-sıcak-kodlanmış kategorik özelliklerle de kullanılabilir. Polinom regresyonu eğitmek için kullanılacak kod temelde yukarıda gördüğümüzle aynı olacaktır.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Feragatname**: \nBu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez.\n" + "---\n\n\n**Feragatname**: \nBu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen göz önünde bulundurun. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucunda oluşabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:12:16+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "tr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From d540bd85cd44213f41c6ca33816c47b04c0a02f9 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 20:35:57 +0000 Subject: [PATCH 18/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/zh-HK/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 114 +++---- .../zh-HK/2-Regression/3-Linear/README.md | 305 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 65 ++-- translations/zh-MO/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 102 +++--- .../zh-MO/2-Regression/3-Linear/README.md | 292 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 73 +++-- translations/zh-TW/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 113 +++---- .../zh-TW/2-Regression/3-Linear/README.md | 254 ++++++++------- .../3-Linear/solution/notebook.ipynb | 65 ++-- 12 files changed, 762 insertions(+), 663 deletions(-) diff --git a/translations/zh-HK/.co-op-translator.json b/translations/zh-HK/.co-op-translator.json index f4a22d3005..244bfe60ad 100644 --- a/translations/zh-HK/.co-op-translator.json +++ b/translations/zh-HK/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "zh-HK" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T09:25:28+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:34:36+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "zh-HK" }, @@ -90,8 +90,8 @@ "language_code": "zh-HK" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:15:19+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:34:13+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "zh-HK" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "zh-HK" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:31:36+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "zh-HK" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T09:17:03+00:00", diff --git a/translations/zh-HK/1-Introduction/4-techniques-of-ML/README.md b/translations/zh-HK/1-Introduction/4-techniques-of-ML/README.md index 8d9681158c..4cce523411 100644 --- a/translations/zh-HK/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/zh-HK/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# 機器學習技術 +# Techniques of Machine Learning -建立、使用和維護機器學習模型及其所需數據的過程,與許多其他開發工作流程有很大的不同。在本課中,我們將揭開這個過程的神秘面紗,並概述您需要了解的主要技術。您將學到: +建立、使用及維護機器學習模型及其數據的流程與許多其他開發工作流程大不相同。在本課程中,我們將揭開這個過程的神秘面紗,並概述您需要了解的主要技巧。您將: -- 從高層次理解機器學習的基本流程。 -- 探索基本概念,例如「模型」、「預測」和「訓練數據」。 +- 在高層次上理解機器學習背後的過程。 +- 探索「模型」、「預測」和「訓練數據」等基本概念。 -## [課前小測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課前測驗](https://ff-quizzes.netlify.app/en/ml/) -[![機器學習初學者 - 機器學習技術](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "機器學習初學者 - 機器學習技術") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 點擊上方圖片觀看一段簡短的影片,了解本課內容。 +> 🎥 點擊上方圖片觀看本課程的短片教學。 -## 簡介 +## 介紹 -從高層次來看,創建機器學習(ML)流程的技術包括以下幾個步驟: +從高層次來看,創建機器學習(ML)流程的工藝包含多個步驟: -1. **確定問題**。大多數機器學習流程始於提出一個無法通過簡單條件程序或基於規則的引擎解答的問題。這些問題通常圍繞基於數據集合進行的預測。 -2. **收集和準備數據**。為了回答您的問題,您需要數據。數據的質量,有時還包括數量,將決定您能多好地回答最初的問題。數據可視化是這個階段的重要部分。這個階段還包括將數據分為訓練組和測試組以構建模型。 -3. **選擇訓練方法**。根據您的問題和數據的性質,您需要選擇如何訓練模型,以便最好地反映數據並對其進行準確預測。這是機器學習過程中需要專業知識且通常需要大量試驗的部分。 -4. **訓練模型**。使用訓練數據,您將使用各種算法訓練模型以識別數據中的模式。模型可能會利用內部權重,這些權重可以調整以優化某些數據部分,從而構建更好的模型。 -5. **評估模型**。使用從未見過的數據(測試數據)來檢查模型的表現。 -6. **參數調整**。根據模型的表現,您可以使用不同的參數或變量重新進行訓練,這些參數或變量控制訓練模型時所用算法的行為。 -7. **進行預測**。使用新輸入測試模型的準確性。 +1. 決定問題。大多數機器學習流程從提出一個無法通過簡單條件程式或規則引擎解答的問題開始。這些問題通常圍繞基於數據集合的預測。 +2. 收集和準備數據。為了能回答您的問題,您需要數據。數據的質量有時還有數量將決定您對初始問題回答的準確程度。視覺化數據是這個階段的一個重要部分。此階段也包括將數據分拆成訓練組和測試組以建立模型。 +3. 選擇訓練方法。根據您的問題和數據特性,您需要選擇如何訓練模型,以最佳反映數據並對其進行準確預測。這部分的機器學習流程需要特定專業知識,且通常需要大量試驗。 +4. 訓練模型。利用訓練資料,您將使用各種演算法來訓練模型,以識別數據中的模式。模型可能利用可調整的內部權重,優先考慮數據的某些部分以建立更好的模型。 +5. 評估模型。您使用從未見過的數據(測試數據)來檢驗模型的表現。 +6. 參數調整。基於模型的表現,您可以使用不同的參數或變量重新進行訓練,這些參數控制用於訓練模型的演算法行為。 +7. 預測。使用新輸入測試模型的準確度。 ## 該問什麼問題 -電腦特別擅長發現數據中的隱藏模式。這對於研究人員來說非常有用,因為他們可能有一些無法通過條件規則引擎輕鬆回答的問題。例如,針對精算任務,數據科學家可能能夠手工構建關於吸煙者與非吸煙者死亡率的規則。 +電腦對於發現數據中隱藏的模式特別在行。這對於研究者來說非常有用,他們在某一領域有問題,無法簡單透過建立條件性規則引擎得到答案。例如,在精算任務中,資料科學家或許能夠圍繞吸煙者與非吸煙者的死亡率構建手工規則。 -然而,當涉及到許多其他變量時,機器學習模型可能更有效地根據過去的健康記錄預測未來的死亡率。一個更令人愉快的例子可能是根據包括緯度、經度、氣候變化、靠近海洋的距離、噴流模式等數據,預測某地四月份的天氣。 +但當許多其他變數加入分析時,機器學習模型在根據過去的健康歷史預測未來死亡率方面可能更有效。一個較為愉快的例子是,基於包含緯度、經度、氣候變化、接近海洋程度、噴射氣流模式等數據,對某地區四月的天氣進行預測。 -✅ 這份[簡報](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供了使用機器學習進行天氣分析的歷史視角。 +✅ 這份[天氣模型簡報](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) 提供了使用機器學習分析天氣的歷史觀點。 -## 構建前的任務 +## 建模前任務 -在開始構建模型之前,您需要完成幾項任務。為了測試您的問題並根據模型的預測形成假設,您需要識別並配置幾個元素。 +開始建立模型前,您需要完成若干任務。為了驗證問題並建立基於模型預測的假設,您需要識別並配置多個元素。 ### 數據 -為了能夠以任何確定性回答您的問題,您需要足夠數量且類型正確的數據。在這個階段,您需要完成以下兩件事: +為了能帶著一定程度的確定性回答問題,您需要大量且正確類型的數據。此時有兩件事您必須完成: -- **收集數據**。記住上一課關於數據分析公平性的內容,謹慎收集數據。注意數據的來源、可能存在的內在偏見,並記錄其來源。 -- **準備數據**。數據準備過程包括多個步驟。如果數據來自不同來源,您可能需要整理並標準化數據。您可以通過各種方法提高數據的質量和數量,例如將字符串轉換為數字(如我們在[聚類](../../5-Clustering/1-Visualize/README.md)中所做的)。您還可以基於原始數據生成新數據(如我們在[分類](../../4-Classification/1-Introduction/README.md)中所做的)。您可以清理和編輯數據(如我們在[Web 應用](../../3-Web-App/README.md)課程之前所做的)。最後,根據您的訓練技術,您可能還需要隨機化和打亂數據。 +- 收集數據。記住前一課關於數據分析公正性的內容,謹慎收集數據。留意數據來源、可能的內在偏差,並記錄其起源。 +- 準備數據。數據準備流程包含多個步驟。若數據來自不同來源,您或許需要整理和正規化數據。可以透過將字串轉換為數字(如我們在[分群](../../5-Clustering/1-Visualize/README.md)中所做)等各種方法提升數據質量及數量。您甚至可能會基於原始數據生成新數據(如在[分類](../../4-Classification/1-Introduction/README.md)中所做)。您也可以對數據進行清理和編輯(如[網頁應用程式](../../3-Web-App/README.md)課程前所示)。最後,根據訓練方法的需求,您可能還需要對數據進行隨機化及洗牌。 -✅ 在收集和處理數據後,花點時間檢查其結構是否能幫助您解決預期問題。正如我們在[聚類](../../5-Clustering/1-Visualize/README.md)課程中發現的那樣,數據可能無法很好地完成給定任務! +✅ 在收集並處理數據後,花點時間檢視數據形態是否足以解答您的問題。如我們在[分群](../../5-Clustering/1-Visualize/README.md)課程所發現,數據可能無法出色地完成所規劃的任務。 ### 特徵與目標 -[特徵](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是數據的一個可測量屬性。在許多數據集中,它通常以列標題的形式表達,例如「日期」、「大小」或「顏色」。特徵變量通常在代碼中表示為 `X`,代表用於訓練模型的輸入變量。 +[特徵](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) 是數據中可測量的屬性。在許多資料集中以欄位標題形式出現,如「日期」、「大小」或「顏色」。您的特徵變數,通常在程式碼中表示為 `X`,代表用於訓練模型的輸入變數。 -目標是您試圖預測的事物。目標通常在代碼中表示為 `y`,代表您試圖從數據中回答的問題。例如:在十二月,哪種**顏色**的南瓜最便宜?在舊金山,哪些街區的房地產**價格**最好?有時目標也被稱為標籤屬性。 +目標是您嘗試預測的對象。目標通常在程式碼中表示為 `y`,代表您希望從數據中回答的問題:例如在十二月,哪種顏色的南瓜最便宜?在舊金山,哪些社區的房地產價格最優惠?目標有時也稱為標籤屬性。 -### 選擇您的特徵變量 +### 選擇特徵變數 -🎓 **特徵選擇與特徵提取** 如何知道在構建模型時選擇哪個變量?您可能需要通過特徵選擇或特徵提取的過程來選擇最合適的變量以構建性能最佳的模型。然而,這兩者並不相同:「特徵提取通過原始特徵的函數創建新特徵,而特徵選擇則返回特徵的子集。」([來源](https://wikipedia.org/wiki/Feature_selection)) +🎓 特徵選擇與特徵提取 您如何知道在建立模型時應選哪些變數?您可能會通過特徵選擇或特徵提取過程來選擇最適合、表現最好模型的變數。但兩者不同:「特徵提取是從原始特徵函數創建新特徵,而特徵選擇是返回特徵的子集。」 ([資料來源](https://wikipedia.org/wiki/Feature_selection)) -### 可視化數據 +### 視覺化數據 -數據科學家工具箱中的一個重要部分是使用 Seaborn 或 MatPlotLib 等優秀庫來可視化數據的能力。通過可視化數據,您可能會發現可以利用的隱藏相關性。您的可視化還可能幫助您發現偏見或數據不平衡(如我們在[分類](../../4-Classification/2-Classifiers-1/README.md)中發現的那樣)。 +數據科學家的工具中,使用如 Seaborn 或 MatPlotLib 等優秀函式庫視覺化數據,具備強大功能。將數據以圖像形式呈現,可能幫助發現您可加以利用的隱藏相關性。視覺化也能協助您偵測偏差或數據不平衡狀況(如我們在[分類](../../4-Classification/2-Classifiers-1/README.md)所發現)。 -### 分割數據集 +### 拆分數據集 -在訓練之前,您需要將數據集分為兩部分或更多部分,這些部分的大小不相等,但仍能很好地代表數據。 +訓練前,您需要將數據集拆分為兩個以上不同大小但仍能代表數據的部分。 -- **訓練集**。這部分數據集用於訓練模型。它構成了原始數據集的大部分。 -- **測試集**。測試數據集是從原始數據中獨立提取的一組數據,用於確認構建的模型的性能。 -- **驗證集**。驗證集是一組較小的獨立數據,用於調整模型的超參數或架構以改進模型。根據數據的大小和您提出的問題,您可能不需要構建這第三組數據(如我們在[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)中提到的那樣)。 +- 訓練組。此部分用於訓練模型,佔原始數據集多數。 +- 測試組。測試數據集是獨立的數據組,通常從原始數據取得,用於驗證建立的模型的效能。 +- 驗證組。驗證集是一小部分獨立樣本,用來調整模型超參數或架構,提升模型表現。依數據大小及問題,有時不需要建立此第三集合(如我們在[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)所述)。 -## 構建模型 +## 建立模型 -使用您的訓練數據,您的目標是使用各種算法**訓練**模型,從而構建數據的統計表示。訓練模型使其接觸數據,並讓其對發現的模式進行假設、驗證並接受或拒絕。 +利用訓練數據,您的目標是透過各種演算法建立模型,亦即對數據的統計表示,進行訓練。訓練模型是令它接觸數據並從所識別、驗證的模式中做出假設並接受或拒絕。 -### 決定訓練方法 +### 選擇訓練方法 -根據您的問題和數據的性質,您將選擇一種訓練方法。通過瀏覽[Scikit-learn 的文檔](https://scikit-learn.org/stable/user_guide.html)(我們在本課程中使用),您可以探索多種訓練模型的方法。根據您的經驗,您可能需要嘗試多種方法以構建最佳模型。您可能會經歷一個過程,數據科學家通過向模型提供未見過的數據來評估其性能,檢查準確性、偏差和其他質量問題,並選擇最適合當前任務的訓練方法。 +根據您的問題與數據特性,您將選擇適當的訓練方法。透過翻閱[Scikit-learn 的文件](https://scikit-learn.org/stable/user_guide.html) — 本課程採用的函式庫 — 您可探索多種訓練模型方式。視經驗有時須嘗試多種方法,資料科學家會透過讓模型面對未見數據,檢查準確度、公正性及其他可能影響品質的問題,挑選最合適的訓練方法。 ### 訓練模型 -有了訓練數據,您可以開始「擬合」數據以創建模型。您會注意到,在許多機器學習庫中,代碼中會出現「model.fit」——這時您將特徵變量作為值的數組(通常是 `X`)以及目標變量(通常是 `y`)傳入。 +有了訓練數據,您就能開始「擬合」模型。您會注意到許多機器學習函式庫中,會用到「model.fit」程式碼 — 此時您將送入特徵變數陣列(通常為 ‘X’)及目標變數(通常為 ‘y’)。 ### 評估模型 -訓練過程完成後(對於大型模型,可能需要多次迭代或「epoch」),您可以使用測試數據來評估模型的質量,檢查其性能。這些數據是原始數據的一部分,模型之前未曾分析過。您可以打印出一個關於模型質量的指標表。 +訓練過程完成後(訓練大型模型可能經歷多次迭代或「時代」),您可藉由測試數據評估模型品質。此數據為模型之前未分析過的原始數據子集。您可以列印包含模型品質指標的表格。 -🎓 **模型擬合** +🎓 模型擬合 -在機器學習的背景下,模型擬合指的是模型的底層函數在嘗試分析未見過的數據時的準確性。 +就機器學習而言,模型擬合意指模型對未知數據分析的底層函數準確程度。 -🎓 **欠擬合**和**過擬合**是常見問題,會降低模型質量。欠擬合的模型無法很好地分析訓練數據或未見過的數據,而過擬合的模型則過於貼合訓練數據,因為它過於詳細地學習了數據的細節和噪聲。 +🎓 欠擬合過擬合是常見損害模型品質的問題,前者擬合不夠,後者擬合過度。這使模型對訓練數據的預測過於精確或不夠精確。過擬合模型對訓練數據預測過好,因為模型過度學習資料細節及噪聲。欠擬合模型則不準確,既無法準確分析訓練數據,也無法分析未知數據。 -![過擬合模型](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> 圖表由 [Jen Looper](https://twitter.com/jenlooper) 提供 +![overfitting model](../../../../translated_images/zh-HK/overfitting.1c132d92bfd93cb6.webp) +> 資訊圖表由 [Jen Looper](https://twitter.com/jenlooper) 提供 ## 參數調整 -完成初步訓練後,觀察模型的質量,並考慮通過調整其「超參數」來改進模型。閱讀更多相關內容:[文檔](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 +初次訓練完成後,觀察模型品質並考慮透過微調「超參數」來改善模型。詳情請參考官方[文件](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 ## 預測 -這是您可以使用全新數據測試模型準確性的時刻。在「應用」機器學習的場景中,當您構建用於生產的網頁資產時,這個過程可能涉及收集用戶輸入(例如按下按鈕)來設置變量,並將其發送到模型進行推斷或評估。 +此時您將使用全新數據測試模型準確度。在「應用」機器學習環境中,當您建置網站資產以在生產環境使用模型時,此過程可能涉及收集用戶輸入(例如按鈕點擊)以設定變數,送入模型進行推理或評估。 -在這些課程中,您將學習如何使用這些步驟來準備、構建、測試、評估和預測——這些都是數據科學家的基本技能,隨著您的進步,您將逐步成為一名「全棧」機器學習工程師。 +在這些課程中,您會發現如何使用這些步驟準備、建構、測試、評估和預測——這些均是資料科學家的核心技能,並更進一步,支持您成為「全端」ML 工程師的旅程。 --- ## 🚀挑戰 -繪製一個反映機器學習從業者步驟的流程圖。您認為自己目前處於哪個步驟?您預測在哪些方面會遇到困難?哪些部分對您來說似乎很容易? +繪製一張反映機器學習從業者步驟的流程圖。您認為自己目前處於流程的哪個階段?您預測會在哪裡遇到困難?有哪些部分對您而言似乎容易? -## [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自學 -在線搜索數據科學家討論日常工作的訪談。這裡有一個[例子](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 +在線上搜尋資料科學家的訪談,了解他們的日常工作。這裡有[一段](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 ## 作業 -[訪問一位數據科學家](assignment.md) +[訪問一位資料科學家](assignment.md) --- + **免責聲明**: -此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤詮釋概不負責。 \ No newline at end of file +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的原文版本應視為權威來源。對於重要資訊,建議使用專業人工翻譯。我們對因使用本翻譯而引起的任何誤解或誤釋概不負責。 + \ No newline at end of file diff --git a/translations/zh-HK/2-Regression/3-Linear/README.md b/translations/zh-HK/2-Regression/3-Linear/README.md index e6a713205e..032f9c95c8 100644 --- a/translations/zh-HK/2-Regression/3-Linear/README.md +++ b/translations/zh-HK/2-Regression/3-Linear/README.md @@ -1,137 +1,136 @@ -# 使用 Scikit-learn 建立迴歸模型:四種迴歸方法 +# 使用 Scikit-learn 建立迴歸模型:四種迴歸方式 -## 初學者注記 +## 初學者筆記 -線性迴歸用於當我們想要預測數值(例如,房價、溫度或銷售額)時。 -線性迴歸透過尋找一條最佳代表輸入特徵和輸出之間關係的直線來運作。 +當我們想要預測數值(例如房屋價格、溫度或銷售額)時,會使用線性迴歸。它是透過尋找最能代表輸入特徵與輸出之間關係的直線來進行預測。 -在本課程中,我們著重於先理解概念,再探索更進階的迴歸技術。 -![線性與多項式回歸資訊圖](../../../../translated_images/zh-HK/linear-polynomial.5523c7cb6576ccab.webp) -> 資訊圖由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作 +本課程將先專注於理解概念,稍後再探討更進階的迴歸技術。 +![線性與多項式迴歸資訊圖](../../../../translated_images/zh-HK/linear-polynomial.5523c7cb6576ccab.webp) +> 資訊圖表由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作 ## [課前小測驗](https://ff-quizzes.netlify.app/en/ml/) -> ### [本課程亦有 R 版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### 介紹 +> ### [本課程也提供 R 語言版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### 導言 -到目前為止,您已經使用南瓜價格資料集探索了什麼是迴歸,並且使用 Matplotlib 做了資料視覺化。 +到目前為止,你已經用南瓜定價資料集探討了迴歸概念,並使用 Matplotlib 進行視覺化。 -現在您已準備深入了解機器學習的迴歸。雖然視覺化可以幫助理解資料,但機器學習的真正威力來自於_訓練模型_。模型是基於歷史資料訓練而成,能自動捕捉資料間的依賴關係,並能對之前沒看過的新資料預測結果。 +現在你準備深入了解 ML 中的迴歸應用。視覺化讓你理解資料,真正的機器學習威力來自於「訓練模型」。模型會基於歷史資料自動捕捉資料關聯,並能對未見過的新資料進行預測。 -在本課中,您將學習兩種迴歸:_基本線性迴歸_及_多項式迴歸_,以及其中一些數學原理。這些模型將讓我們根據不同輸入資料預測南瓜價格。 +本課程將介紹兩種迴歸方式:_基本線性迴歸_和_多項式迴歸_,並涵蓋這些技術背後的數學原理。這些模型將幫助我們依據不同輸入資料預測南瓜價格。 -[![機器學習入門 - 理解線性迴歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "機器學習入門 - 理解線性迴歸") +[![初學者機器學習 - 理解線性迴歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初學者機器學習 - 理解線性迴歸") -> 🎥 點擊上方圖片觀看線性迴歸的簡短影片概述。 +> 🎥 點擊上方圖片觀看線性迴歸的簡短影片介紹。 -> 在整個課程中,我們假設學員的數學知識量少,並力求讓其他領域的學生都能理解,因此會有註解、🧮 重點標註、圖解及其他學習工具協助理解。 +> 本課程假設極少的數學背景,並致力讓非相關領域的學生也能理解,請留意課堂筆記、🧮 數學補充、圖表等學習輔助工具。 -### 先備知識 +### 先修知識 -您應該已熟悉我們正在檢視的南瓜資料結構。這份資料已預先載入並清理好,在本課的 _notebook.ipynb_ 檔案中。檔中南瓜價格以每蒲式耳價格顯示於新的資料框中。請確保您能在 Visual Studio Code 的環境中執行這些筆記本。 +你現在應熟悉我們分析的南瓜資料結構。資料已預先載入並清理,存於本課程的 _notebook.ipynb_。在該檔案中,南瓜價格以「每蒲式耳」價格呈現。請確定你能在 Visual Studio Code 的 kernel 執行這些 notebook。 ### 準備工作 -提醒您,載入這些資料是為了探究一些問題: +提醒你,載入資料是為了向它提出問題: -- 何時購買南瓜最划算? -- 一箱迷你南瓜的價格大約是多少? -- 應該買半蒲式耳的籃子,還是 1又1/9蒲式耳的箱子? -讓我們繼續挖掘這些資料。 +- 什麼時候買南瓜最划算? +- 一箱迷你南瓜大約多少錢? +- 我該買半蒲式耳籃裝還是 1 1/9 蒲式耳箱裝? +讓我們持續深入挖掘資料。 -前一課中,您建立了 Pandas 資料框,並填入原始資料的部分,且將價格以蒲式耳標準化。但如此一來,只收集了約 400 筆資料,且僅涵蓋秋季。 +上一課中,你建立了 Pandas dataframe 並用原始數據部分填充,還根據蒲式耳標準化了價格。不過,那時僅蒐集約 400 筆資料,也只涵蓋秋季月份。 -請看看本課附帶筆記本所載入的資料,我們已有初始散點圖繪出月份資料。也許透過更多清理,我們能獲得這資料本質的更多細節。 +請看看本課 notebook 中預載的資料。資料已預先載入,並藉由散佈圖初步描繪出月份資料。也許我們可以進一步清理,以更細緻了解資料本質。 -## 線性迴歸線 +## 線性迴歸直線 -如您在第一課學到的,線性迴歸的目標是能繪出一條線,以: +如第一課所學,線性迴歸的目的是畫出一條線,用以: -- 展示變數間關係。展現變數的相互關係 -- 進行預測。準確預測新資料點在線上的落點 +- 顯示變數關係。展示變數間的關聯。 +- 進行預測。對新數據點相較這條線的落點做出精準預測。 -最小平方法迴歸通常用於繪製此類線條。所謂「最小平方法」是指最小化模型總誤差的過程。對每個資料點,我們測量該點與迴歸線間的垂直距離(稱為殘差)。 +此類線通常由最小平方法回歸繪出。「最小平方法」指的是最小化模型總誤差的過程。對每筆資料點,測量實際點與迴歸線間的垂直距離(稱作殘差)。 -我們將這些距離平方,主要有兩個原因: +這些距離會被平方,理由有二: -1. 重視誤差大小而非方向:誤差 -5 與誤差 +5 對我們而言應同等重要,平方能將所有誤差轉為正數。 +1. 大小勝過方向:我們希望把 -5 與 +5 的誤差同等對待,平方後皆轉為正值。 -2. 對離群值加重懲罰:平方會加重較大誤差的權重,促使線條貼近偏遠點。 +2. 懲罰離群點:平方強化較大誤差權重,迫使線條更貼近遠離的點。 -接著將所有平方後的誤差相加,希望求出誤差和最小的那條線——這即是「最小平方法」的由來。 +接著將所有平方值加總。目標是找到能使平方誤差加總最低(最小值)的線,因此稱為「最小平方法」。 -> **🧮 為我展示數學推導** +> **🧮 數學公式展現** > -> 這條線稱為_最適合線_,可用[一個方程](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: +> 此線稱為_最佳擬合線_,可用[以下方程式表達](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` -> -> `X` 為「解釋變數」;`Y` 為「應變數」。線的斜率是 `b`,而 `a` 是 y 截距,表示當 `X = 0` 時 `Y` 的數值。 -> ->![計算斜率](../../../../translated_images/zh-HK/slope.f3c9d5910ddbfcf9.webp) -> -> 首先計算斜率 `b`。資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 提供 -> -> 換句話說,針對南瓜資料的原始問題:「根據月份預測每蒲式耳南瓜價格」,`X` 是指價格而 `Y` 是銷售的月份。 -> ->![完成等式](../../../../translated_images/zh-HK/calculation.a209813050a1ddb1.webp) -> -> 計算 Y 的數值。如果您付約 $4,就應該是四月!資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 提供 -> -> 計算該線的數學必須展示斜率,也取決於截距,也就是 `X = 0` 時 `Y` 所在位置。 -> -> 您可參考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站來觀察此計算方法;也可使用 [此最小平方法計算器](https://www.mathsisfun.com/data/least-squares-calculator.html) 來觀察數字如何影響迴歸線。 +> +> `X` 是「解釋變數」,`Y` 是「被解釋變數」。線的斜率是 `b`,`a` 是 y 軸截距,即當 `X = 0` 時的 `Y` 值。 +> +>![計算斜率](../../../../translated_images/zh-HK/slope.f3c9d5910ddbfcf9.webp) +> +> 先計算斜率 `b`。資訊圖表由 [Jen Looper](https://twitter.com/jenlooper) 製作。 +> +> 換句話說,根據我們的南瓜數據的問題:「依月份預測每蒲式耳南瓜價格」,`X` 指價格,`Y` 指銷售月份。 +> +>![完成公式](../../../../translated_images/zh-HK/calculation.a209813050a1ddb1.webp) +> +> 計算 Y 的值。如果你付了約 4 美元,那一定是四月!資訊圖表由 [Jen Looper](https://twitter.com/jenlooper) 製作。 +> +> 計算線條的數學必須反映出斜率,也取決於截距,即當 `X = 0` 時 `Y` 的位置。 +> +> 你可參考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站了解計算方法,也可以使用[這個最小平方法計算器](https://www.mathsisfun.com/data/least-squares-calculator.html) 觀察數值如何影響線條。 ## 相關係數 -另一重要詞彙是給定 `X` 與 `Y` 變數間的相關係數。透過散點圖,您能快速直觀地看見此係數。若資料點沿著一條整齊的線散佈,代表高度相關;若資料點分佈分散在 `X` 和 `Y` 之間,則代表相關性低。 +另一重要概念是給定 X 和 Y 變數間的相關係數。利用散佈圖,能快速看出相關輕重。若資料點沿一條整齊線排列,相關程度高;若資料點在 X、Y 間散布成零散狀,則相關度低。 -一個好的線性迴歸模型,其相關係數用最小平方法計算得到的值應該是高的(接近 1,而非 0)。 +一個良好的線性迴歸模型,會有接近 1(比 0 大得多)的高相關係數,並採用最小平方法找到最適回歸線。 -✅ 執行本課附帶的筆記本並觀察「月份對價格」的散點圖。從這散點圖視覺判斷,與南瓜銷售之月對價格的資料,看起來是高還是低相關?如果改為使用更細緻的時間尺度取代月份,例如「一年中第幾天」(自年初起的天數),結果會改變嗎? +✅ 執行本課附帶的 notebook,觀察「月份對價格」的散佈圖。依你目測,南瓜銷售的「月份/價格」資料是高相關還是低相關?換用更細膩的時間單位,如「年中第幾天」(Day of Year),結果會改變嗎? -接下來的程式中,我們假設資料已清理完畢,並產生類似以下的 `new_pumpkins` 資料框: +下面程式碼示範假設資料已清理乾淨,並取得名為 `new_pumpkins` 的資料框,內容大致如下: -ID | 月份 | 一年中第幾天 | 品種 | 城市 | 包裝 | 最低價 | 最高價 | 價格 ----|-----|--------|------|------|-------|-------|-------|------- -70 | 9 | 267 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | 派用型 | 巴爾的摩 | 1又1/9蒲式耳箱 | 15.0 | 15.0 | 13.636364 +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> 資料清理的程式碼請參見 [`notebook.ipynb`](notebook.ipynb)。我們執行了與上一課相同的清理步驟,並用下式計算出 `DayOfYear` 欄位: +> 清理資料的程式碼可在 [`notebook.ipynb`](notebook.ipynb) 中找到。我們做了和前一課相同的清理步驟,`DayOfYear` 欄位是用以下公式計算的: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -現在您已了解線性迴歸的數學原理,讓我們建立迴歸模型,看看是否能預測出哪種包裝的南瓜價格最划算。想要打造南瓜節慶角落的購買者,會希望知悉這資訊以最佳化南瓜包裝的購買決策。 + +理解線性迴歸背後的數學後,讓我們來建立一個迴歸模型,看看能否預測哪種包裝的南瓜價格較低。要在節慶南瓜園採購南瓜時,這資訊有助於優化選購方案。 ## 尋找相關性 -[![機器學習入門 - 尋找相關性:線性迴歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "機器學習入門 - 尋找相關性:線性迴歸的關鍵") +[![初學者機器學習 - 尋找相關性:線性迴歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初學者機器學習 - 尋找相關性:線性迴歸的關鍵") -> 🎥 點擊上方圖片觀看相關性的簡短影片概述。 +> 🎥 點擊圖片觀看相關性的簡短影片介紹。 -在先前的課堂中,您大概已看到不同月份的平均價格如下: +前一課你可能已見過不同月份平均價格如下圖: 各月份平均價格 -這顯示應該存在某種相關性,我們可以嘗試訓練線性迴歸模型來預測 `Month` 與 `Price` 或 `DayOfYear` 與 `Price` 間的關係。下圖展示後者的散點圖: +這代表應該會有某種相關性,我們可以嘗試訓練線性迴歸模型,去預測 `Month` 與 `Price` 或 `DayOfYear` 與 `Price` 之間的關係。下圖是後者的散佈圖: -價格與一年中第幾天散點圖 +價格與年中日散佈圖 -我們用 `corr` 函式來看看有無相關性: +讓我們用 `corr` 函式檢視相關係數: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -看來相關性非常小,使用 `Month` 為 -0.15,使用 `DayOfMonth` 為 -0.17,但可能還有另一個重要的關係。價格在不同南瓜品種間似乎分成不同群聚。為了驗證此假設,我們用不同顏色來繪製各南瓜類別。透過給 `scatter` 函式傳入 `ax` 參數,可以將所有點繪製在同一張圖上: + +看起來相關性偏低,`Month` 約為 -0.15,`DayOfYear` 約 -0.17,但似乎有其他重要因素。不同南瓜品種對應不同價格群聚。為驗證,將每種南瓜用不同顏色繪圖。傳入 `ax` 參數至 `scatter` 繪圖函式可同時在同張圖上繪出所有點: ```python ax=None @@ -140,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` - -一年中第幾天與價格散點圖(有顏色區分) -研究顯示品種對價格影響比銷售日期更大。我們用長條圖來說明: +價格與年中日散佈圖(彩色品種區分) + +結果顯示品種對價格影響較大,勝過實際銷售日期。下圖柱狀圖呈現此結果: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - -品種與價格長條圖 -暫時只聚焦於一種南瓜品種「派用型」,來看看日期對價格的影響: +不同品種價格柱狀圖 + +暫時只聚焦於南瓜品種中的「派用型」(pie type),觀察日期對價格的影響: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -一天中日期與價格散點圖 +價格與年中日散佈圖(派用型) -如果這時用 `corr` 函式計算 `Price` 與 `DayOfYear` 的相關性,大約是 `-0.27`,意味著訓練預測模型是合理的。 +接著以 `corr` 函式計算 `Price` 與 `DayOfYear` 的相關係數,可能得出約 `-0.27`,顯示訓練預測模型是有意義的。 -> 在訓練線性迴歸前,務必確保資料乾淨。線性迴歸對缺漏值不友善,因此最好去除所有空值儲存格: +> 訓練線性迴歸模型前,務必確認資料是乾淨的。線性迴歸不適用於遺失值,因此應排除所有空白欄位: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -另一個作法是使用相對應欄位的平均值填充這些空值。 + +另一種做法是用該欄位平均值填補空白資料。 ## 簡單線性迴歸 -[![機器學習入門 - 使用 Scikit-learn 線性與多項式迴歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "機器學習入門 - 使用 Scikit-learn 線性與多項式迴歸") +[![初學者機器學習 - 使用 Scikit-learn 的線性與多項式迴歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初學者機器學習 - 使用 Scikit-learn 的線性與多項式迴歸") -> 🎥 點擊上方圖片觀看線性與多項式迴歸的簡短影片概述。 +> 🎥 點擊圖片觀看線性及多項式迴歸的簡短影片介紹。 -我們將使用 **Scikit-learn** 函式庫來訓練線性迴歸模型。 +訓練線性迴歸模型時,我們會使用 **Scikit-learn** 函式庫。 ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -首先將輸入值(特徵)與預期輸出(標籤)分開存成 numpy 陣列: + +我們先將輸入特徵(features)與預期輸出(label)分別存為兩個 numpy 陣列: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> 注意我們必須對輸入資料做 `reshape`,讓線性迴歸模組可正確理解。線性迴歸要求輸入為二維陣列,陣列中每一列代表一組輸入特徵向量。由於我們只有一個輸入特徵,故需為形狀 N×1 的陣列,N 為資料集大小。 -接著,需將資料劃分為訓練集和測試集,以便訓練後驗證模型: +> 注意我們必須對輸入資料做 `reshape`,讓 Linear Regression 套件能識別。線性迴歸期待輸入為二維陣列,每列為一組特徵向量。因為我們只有一個輸入變數,須將陣列形狀調整為 N×1,其中 N 是資料筆數。 + +接著,將資料切分成訓練集與測試集,方便訓練後評估模型: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -最後,訓練線性迴歸模型只需兩行程式:定義 `LinearRegression` 物件,並用 `fit` 方法擬合模型: + +最後,訓練線性迴歸模型只要兩行程式碼。定義 `LinearRegression` 物件,並用 `fit` 方法套用資料: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit` 後的 `LinearRegression` 對象包含了回歸的所有係數,可以通過 `.coef_` 屬性訪問。在我們的情況下,只有一個係數,應該約為 `-0.017`。這意味著價格似乎隨時間略有下降,但不多,大約每天下降 2 分錢。我們還可以使用 `lin_reg.intercept_` 訪問回歸與 Y 軸的交點 — 在我們的情況下將約為 `21`,表示年初的價格。 +`LinearRegression` 對象在 `fit` 之後包含了迴歸的所有係數,可以通過 `.coef_` 屬性訪問。在我們的例子中,只有一個係數,應該約為 `-0.017`。這意味著價格隨時間略有下降,但不多,大約每天下降 2 分錢。我們還可以通過 `lin_reg.intercept_` 訪問迴歸與 Y 軸的截距 — 在我們的例子中約為 `21`,表示年初的價格。 -為了查看我們模型的準確度,我們可以在測試數據集上進行價格預測,然後測量預測值與預期值的接近程度。這可以通過均方根誤差(RMSE)指標完成,該指標是所有預期值與預測值差的平方平均的平方根。 +為了檢視模型的準確度,我們可以在測試數據集上預測價格,然後測量預測結果與期望值的接近程度。這可以使用均方根誤差 (RMSE) 指標計算,即期望值與預測值所有平方差均值的平方根。 ```python pred = lin_reg.predict(X_test) @@ -217,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -我們的誤差約為 2 點,約為 17%。不太理想。另一個模型質量的指標是 決定係數,可以如下獲得: +我們的誤差約為 2 點,約為 17%。表現不是很好。另一個評估模型質量的指標是決定係數,可以這樣獲得: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - 若該值為 0,表示模型未考慮輸入數據,行為就像最差的線性預測器,即結果的均值。值為 1 表示我們可以完美預測所有預期輸出。在我們的情況下,係數約為 0.06,較低。 + 如果值為 0,表示模型沒有考慮輸入數據,表現為最差線性預測器,即結果的平均值。值為 1 表示我們可以完美預測所有預期輸出。在我們的例子中,係數約為 0.06,相當低。 -我們還可以將測試數據與回歸線繪製在一起,以更好地觀察回歸情況: +我們還可以將測試數據與迴歸線一起繪圖,更清楚地觀察迴歸效果: ```python plt.scatter(X_test,y_test) @@ -234,19 +233,19 @@ plt.plot(X_test,pred) Linear regression -## 多項式回歸 +## 多項式迴歸 -另一種線性回歸是多項式回歸。有時變量之間呈線性關係——比如體積越大的南瓜價格越高——但有時這種關係無法用平面或直線表示。 +另一種線性迴歸類型是多項式迴歸。有時候變量之間是線性關係 — 譬如南瓜體積越大,價格越高 — 但有時這些關係無法用平面或直線表示。 -✅ 這裡有[一些額外範例](https://online.stat.psu.edu/stat501/lesson/9/9.8)數據適合用多項式回歸 +✅ 這裡有一些[更多範例](https://online.stat.psu.edu/stat501/lesson/9/9.8)適合使用多項式迴歸的資料 -再看看日期和價格的關係。這個散點圖是否一定要用直線分析?價格難道不會波動嗎?這種情況下,可以嘗試多項式回歸。 +再看看日期與價格的關係。散點圖是否一定要用直線分析?價格難道不會波動?此時可以嘗試多項式迴歸。 -✅ 多項式是由一個或多個變量及係數構成的數學表達式 +✅ 多項式是可能包含一個或多個變量及係數的數學表達式 -多項式回歸產生一條曲線,更好地擬合非線性數據。在我們的案例中,若將平方的 `DayOfYear` 變量加入輸入資料,應能用拋物線曲線擬合數據,曲線在一年中某點處有最小值。 +多項式迴歸會擬合曲線以更好地適應非線性資料。在我們的例子中,如果將平方的 `DayOfYear` 變量加入輸入資料,就能用拋物線擬合數據,且拋物線會在年度中的某點有最小值。 -Scikit-learn 提供了方便的[管道 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)來將不同的數據處理步驟組合起來。管道是一系列的估計器。在這裡,我們創建一個管道,先加入多項式特徵,然後進行回歸訓練: +Scikit-learn 提供了實用的[管道 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline),用來串聯資料處理的各步驟。管道是一連串的估計器。在此,我們會先產生多項式特徵,再培訓迴歸模型: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -使用 `PolynomialFeatures(2)` 表示我們將包含所有二次項多項式。對於一個變量僅為 `DayOfYear` 的平方,但對兩個輸入變量 X 和 Y 則為 X2、XY、Y2。我們也可以使用更高次多項式。 +使用 `PolynomialFeatures(2)` 表示我們將包括輸入數據中所有二次多項式。對我們來說,只有 `DayOfYear`2,但如果有兩個輸入變量 X 與 Y,則會加上 X2、XY 與 Y2。如果想,也可以使用更高次數的多項式。 + +管道的用法與原本的 `LinearRegression` 物件相同,即先 `fit` 管道,接著用 `predict` 得到預測結果: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +為了繪製平滑擬合曲線,我們使用 `np.linspace` 產生均勻分布的輸入值,而非直接在無序的測試資料中繪圖(否則線條會鋸齒狀): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -管道可以像原始的 `LinearRegression` 對象那樣使用,即可 `fit` 管道,然後用 `predict` 獲取預測結果。下面的圖展示了測試數據和擬合的曲線: +以下是測試資料與擬合曲線的圖示: Polynomial regression -使用多項式回歸,我們可以獲得稍低的均方誤差和更高的決定係數,但提升不明顯。需要考慮其他特徵! +使用多項式迴歸,我們可以得到稍低的 RMSE 與較高的決定係數,但幅度有限。我們還需要考慮其他特徵! -> 你可以看到最小南瓜價格出現在萬聖節前後。你如何解釋這種現象? +> 你可以看到最低的南瓜價格出現在萬聖節附近。你怎麼解釋這個現象? -🎃 恭喜,你剛剛建立了一個能幫助預測派南瓜價格的模型。你也可以用同樣的方法針對所有南瓜品種建立模型,但那會很繁瑣。接下來學習如何將南瓜品種納入模型考慮! +🎃 恭喜你剛完成可以預測派用南瓜價格的模型。你大概也可以用同樣流程對其他南瓜種類進行建模,但會很費時。接下來讓我們學習如何將南瓜品種納入模型! ## 類別特徵 -理想狀況下,我們希望用同一模型預測不同南瓜品種的價格。但 `Variety` 欄位與 `Month` 不同,因為它包含非數字值。這類欄位稱為類別特徵(categorical)。 +理想情況下,我們希望能用同一模型預測不同南瓜品種的價格。但 `Variety` 欄位與 `Month` 欄位不同,因為它包含非數字的值。這類欄位稱為類別欄位(categorical)。 [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 點擊上圖觀看簡短影片,了解如何使用類別特徵。 +> 🎥 點擊上圖觀看使用類別特徵的簡短影片。 -這裡展示了平均價格與品種的關係: +這裡可以看到不同品種的平均價格: Average price by variety -要考慮品種,首先要將其轉為數字形式,即編碼。有幾種方法: +為了考慮品種,我們首先要將其轉換成數值形式,即編碼。有幾種方法: -* 簡單的數字編碼會建一個包含各品種的表格,然後用對應索引替換品種名稱。這對線性回歸不是最佳方案,因為線性回歸使用索引的數字值乘以係數再加總,然而指標號碼和價格的關係顯然非線性,即使索引有特定排序也無法保證。 -* 獨熱編碼(One-hot encoding)則把 `Variety` 欄拆成 4 個不同欄位(每個品種一欄)。對應行屬該品種的欄位為 `1`,否則為 `0`。這意味著線性回歸中會有四個係數,分別表示各品種的「起始價格」或「額外價格」。 +* 簡單的 數值編碼 是建立一張不同品種的索引表,再將品種名以該表的索引數替代。這對線性迴歸不算好,因為線性迴歸直接用該數字乘上係數,然後加到結果中。我們的例子中,索引與價格的關係明顯非線性,即使我們確保索引有特定順序。 +* **One-hot 編碼** 會將 `Variety` 欄位拆成四個不同欄位,對應四種品種。每個欄位若該行是此品種則為 `1`,否則為 `0`。這會產生四個線性迴歸係數,分別代表每種南瓜品種的「基準價格」(或者更準確來說,是「額外價格」)。 -下面代碼演示如何獨熱編碼品種: +下面的程式碼展示如何對品種使用 one-hot 編碼: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -要用獨熱編碼的品種作為輸入訓練線性回歸,只要正確初始化 `X` 和 `y` 數據即可: +要用 one-hot 編碼品種的資料訓練線性迴歸,我們只要正確初始化 `X` 和 `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -其餘代碼與之前用於訓練線性回歸的相同。試驗後會看到均方誤差約相同,但決定係數大幅提升至約 77%。要想更精確,也可納入更多類別特徵和數值特徵,如 `Month` 或 `DayOfYear`。為了拼成一個大特徵陣列,可使用 `join`: +其餘程式碼與我們之前用來訓練線性迴歸的相同。如果你嘗試,你會發現均方誤差差不多,但決定係數大幅提升到約 77%。要得到更準確的預測,我們還可以考慮更多類別型特徵及數值型特徵,如 `Month` 或 `DayOfYear`。為了合併成一個特徵陣列,可使用 `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -這裡我們還考慮了 `City` 和 `Package` 類型,結果為 MSE 2.84(約 10%),決定係數 0.94! +這裡我們還加入了 `City` 和 `Package` 類型,結果是 RMSE 2.84(10.5%)與決定係數 0.94! -## 綜合應用 +## 全面整合 -為構建最佳模型,我們可以將上述示例中一熱編碼類別+數值的特徵結合多項式回歸。以下是完整代碼,方便參考: +要做出最佳模型,我們可以用上述合併的(one-hot 編碼類別 + 數值)特徵資料,同時套用多項式迴歸。方便起見,這是完整程式碼: ```python # 設置訓練數據 @@ -334,46 +355,46 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# 進行訓練和測試分割 +# 製作訓練和測試數據分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# 設置並訓練流程 +# 設置及訓練管道 pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # 預測測試數據結果 pred = pipeline.predict(X_test) -# 計算均方誤差和決定係數 -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# 計算均方根誤差及判定係數 +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -預計獲得近乎 97% 的最佳決定係數,以及 MSE=2.23(約 8% 預測誤差)。 +這應該會得到接近 97% 的最高決定係數,RMSE=2.23(約 8% 的預測誤差)。 -| 模型 | MSE | 決定係數 | -|-------|-----|---------------| -| `DayOfYear` 線性 | 2.77 (17.2%) | 0.07 | -| `DayOfYear` 多項式 | 2.73 (17.0%) | 0.08 | -| `Variety` 線性 | 5.24 (19.7%) | 0.77 | -| 所有特徵 線性 | 2.84 (10.5%) | 0.94 | -| 所有特徵 多項式 | 2.23 (8.25%) | 0.97 | +| 模型 | RMSE | 決定係數 | +|-------|-----|---------| +| `DayOfYear` 線性迴歸 | 2.77 (17.2%) | 0.07 | +| `DayOfYear` 多項式迴歸 | 2.73 (17.0%) | 0.08 | +| `Variety` 線性迴歸 | 5.24 (19.7%) | 0.77 | +| 所有特徵 線性迴歸 | 2.84 (10.5%) | 0.94 | +| 所有特徵 多項式迴歸 | 2.23 (8.25%) | 0.97 | -🏆 做得好!本課程你建立了四種回歸模型,並將模型質量提升至 97%。最後一節關於回歸,會介紹用於分類的邏輯迴歸。 +🏆 做得好!你在一課中創建了四個迴歸模型,並將模型質量提升至 97%。在迴歸的最後部分,你將學習用來判別類別的邏輯迴歸。 --- -## 🚀挑戰 +## 🚀 挑戰 -試驗本筆記本中的多種變數,看看相關性如何影響模型準確度。 +在這個筆記本中嘗試幾個不同變量,看看它們的相關性如何對模型準確度造成影響。 -## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) ## 複習與自學 -本課學習了線性回歸。還有其他重要的回歸類型。請閱讀逐步回歸、嶺回歸、套索回歸和彈性網技術。學習更多可參考[史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +本課我們學到了線性迴歸。還有其他重要類型的迴歸。可以閱讀關於逐步、嶺回歸 (Ridge)、套索 (Lasso) 和彈性網路 (Elasticnet) 的技術。推薦研習的課程是[史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## 作業 @@ -383,5 +404,5 @@ print('Model determination: ', score) **免責聲明**: -本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於準確性,請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議聘請專業人工翻譯。對於因使用本翻譯而產生的任何誤解或錯誤詮釋,我們概不負責。 +本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於確保翻譯準確,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件之原文版本應被視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引致的任何誤解或誤譯承擔責任。 \ No newline at end of file diff --git a/translations/zh-HK/2-Regression/3-Linear/solution/notebook.ipynb b/translations/zh-HK/2-Regression/3-Linear/solution/notebook.ipynb index 88453d707b..3fc9b94648 100644 --- a/translations/zh-HK/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/zh-HK/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 南瓜定價的線性回歸與多項式回歸 - 第三課\n", + "## 南瓜定價的線性與多項式回歸 - 課程 3\n", "\n", - "載入所需的庫和數據集。將數據轉換為包含數據子集的數據框:\n", + "載入所需的函式庫和數據集。將數據轉換成包含部分數據的資料框:\n", "\n", - "- 只選取按蒲式耳定價的南瓜\n", + "- 只取以蒲式耳計價的南瓜\n", "- 將日期轉換為月份\n", "- 計算價格為高價與低價的平均值\n", - "- 將價格轉換為按蒲式耳數量計算的價格\n" + "- 將價格轉換以反映蒲式耳數量的定價\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "散佈圖提醒我們,我們只有八月至十二月的月份數據。我們可能需要更多數據才能以線性方式得出結論。\n" + "散點圖提醒我們,我們只有八月至十二月的月份數據。我們可能需要更多數據才能以線性方式得出結論。\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "讓我們看看是否存在相關性:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "看起來相關性相當小,但存在一些其他更重要的關係——因為上圖中的價格點似乎有幾個明顯的群集。讓我們製作一個圖表來顯示不同的南瓜品種:\n" + "看起來相關性相當小,但還有其他更重要的關係——因為上面圖中的價格點似乎有幾個明顯的群集。讓我們畫一張圖來顯示不同的南瓜品種:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "暫時,我哋專注喺一款品種——撻類。\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "可以從線性回歸係數中確定直線的斜率:\n" + "可以從線性回歸係數中確定該直線的斜率:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "我們可以使用訓練好的模型來預測價格:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### 多項式回歸\n", "\n", - "有時候,特徵與結果之間的關係本質上是非線性的。例如,南瓜的價格可能在冬季(月份=1,2)較高,然後在夏季(月份=5-7)下降,接著再次上升。線性回歸無法準確捕捉這種關係。\n", + "有時候,特徵與結果之間的關係本質上是非線性的。例如,南瓜價格可能在冬天(月份=1,2)很高,然後在夏天(月份=5-7)下降,再之後上升。線性回歸無法準確擬合這種關係。\n", "\n", - "在這種情況下,我們可以考慮添加額外的特徵。一個簡單的方法是使用來自輸入特徵的多項式,這樣就會形成**多項式回歸**。在 Scikit Learn 中,我們可以使用管道自動預先計算多項式特徵:\n" + "在這種情況下,我們可以考慮增加額外的特徵。一個簡單的方法是使用輸入特徵的多項式,這將導致多項式回歸。在 Scikit Learn 中,我們可以使用管線自動預先計算多項式特徵:\n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 編碼品種\n", + "### 編碼變化\n", "\n", - "在理想的情況下,我們希望能夠使用同一個模型來預測不同南瓜品種的價格。為了考慮品種,我們首先需要將其轉換為數字形式,或者稱為**編碼**。有幾種方法可以做到:\n", + "在理想情況下,我們希望能使用同一個模型來預測不同南瓜品種的價格。要考慮品種這個因素,首先我們需要將其轉換成數字形式,或稱為編碼。有幾種方法我們可以使用:\n", "\n", - "* 簡單的數字編碼,這種方法會建立一個不同品種的表格,然後用該表格中的索引來替換品種名稱。這對於線性回歸來說並不是最好的方法,因為線性回歸會考慮索引的數值,而這些數值可能與價格並沒有數字上的相關性。\n", - "* 獨熱編碼(One-hot encoding),這種方法會將 `Variety` 欄位替換為4個不同的欄位,每個品種對應一個欄位。如果某一行屬於某個品種,該欄位的值為1,否則為0。\n", + "* 簡單的數值編碼,會建立一個不同品種的表,然後用該表中的索引來替代品種名稱。這對線性迴歸來說不是最佳做法,因為線性迴歸會將索引的數值視為一個量值,而這個數值通常與價格的數值關聯性不大。\n", + "* One-hot 編碼,將 `Variety` 欄位拆成四個不同的欄位,每個代表一種品種,如果該列是該品種則內容為 1,否則為 0。\n", "\n", - "以下的程式碼展示了如何對品種進行獨熱編碼:\n" + "以下程式碼展示了如何對品種進行 one-hot 編碼:\n" ] }, { @@ -940,7 +949,7 @@ "source": [ "### 品種的線性回歸\n", "\n", - "我們現在將使用與上面相同的程式碼,但這次我們將使用我們的單熱編碼品種作為輸入,而不是 `DayOfYear`:\n" + "我們現在將使用與上面相同的代碼,但輸入將不是 `DayOfYear`,而是我們的獨熱編碼品種:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "我們也可以以相同的方式嘗試使用其他功能,並將它們與數值功能結合,例如 `Month` 或 `DayOfYear`:\n" + "我們也可以用同樣的方法嘗試使用其他特徵,並將它們與數值特徵結合,例如 `Month` 或 `DayOfYear`:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 多項式回歸\n", + "### 多項式迴歸\n", "\n", - "多項式回歸亦可用於已進行獨熱編碼的分類特徵。訓練多項式回歸的程式碼基本上與我們之前看到的相同。\n" + "多項式迴歸亦可用於已進行 one-hot 編碼的類別特徵。訓練多項式迴歸的程式碼基本上與上述相同。\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**免責聲明**: \n本文件已使用人工智能翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始語言的文件應被視為權威來源。對於重要資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋概不負責。\n" + "---\n\n\n**免責聲明**: \n本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應被視為權威來源。對於關鍵資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或誤釋承擔責任。\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-03T19:18:47+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "hk" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/zh-MO/.co-op-translator.json b/translations/zh-MO/.co-op-translator.json index e99374e335..86cd3e821f 100644 --- a/translations/zh-MO/.co-op-translator.json +++ b/translations/zh-MO/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "zh-MO" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T09:14:17+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:33:28+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "zh-MO" }, @@ -90,8 +90,8 @@ "language_code": "zh-MO" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:11:02+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:32:58+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "zh-MO" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "zh-MO" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:31:07+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "zh-MO" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T09:07:21+00:00", diff --git a/translations/zh-MO/1-Introduction/4-techniques-of-ML/README.md b/translations/zh-MO/1-Introduction/4-techniques-of-ML/README.md index e5a6d66a76..482ef4fbc3 100644 --- a/translations/zh-MO/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/zh-MO/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # 機器學習技術 -建立、使用和維護機器學習模型及其所需數據的過程,與許多其他開發工作流程有很大的不同。在本課程中,我們將揭開這個過程的神秘面紗,並概述您需要了解的主要技術。您將: +建立、使用和維護機器學習模型及其所用數據的過程,與許多其他開發工作流程截然不同。在本課程中,我們將揭開這個過程的神秘面紗,並概述您需要知道的主要技術。您將會: -- 理解機器學習背後的高層次流程。 -- 探索基本概念,例如「模型」、「預測」和「訓練數據」。 +- 從宏觀層面了解支撐機器學習的過程。 +- 探討基本概念,如「模型」、「預測」和「訓練數據」。 ## [課前測驗](https://ff-quizzes.netlify.app/en/ml/) -[![機器學習入門 - 機器學習技術](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "機器學習入門 - 機器學習技術") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 點擊上方圖片觀看本課程的短視頻。 +> 🎥 點擊上方圖片觀看簡短影片,講解本課程內容。 -## 簡介 +## 介紹 -從高層次來看,創建機器學習(ML)流程的技術包括以下幾個步驟: +從高層次來看,創建機器學習(ML)流程的技藝包括多個步驟: -1. **確定問題**。大多數機器學習流程始於提出一個無法通過簡單的條件程序或基於規則的引擎回答的問題。這些問題通常圍繞基於數據集合的預測。 -2. **收集和準備數據**。為了回答您的問題,您需要數據。數據的質量以及有時候數量將決定您能多好地回答最初的問題。可視化數據是此階段的重要方面。此階段還包括將數據分為訓練組和測試組以建立模型。 -3. **選擇訓練方法**。根據您的問題和數據的性質,您需要選擇如何訓練模型以最好地反映您的數據並進行準確的預測。這是機器學習流程中需要特定專業知識且通常需要大量實驗的部分。 -4. **訓練模型**。使用您的訓練數據,您將使用各種算法訓練模型以識別數據中的模式。模型可能利用內部權重,這些權重可以調整以優化某些數據部分,從而建立更好的模型。 -5. **評估模型**。使用從收集的數據集中從未見過的測試數據來檢查模型的性能。 -6. **參數調整**。根據模型的性能,您可以使用不同的參數或變量重新進行過程,這些參數或變量控制用於訓練模型的算法行為。 -7. **預測**。使用新的輸入測試模型的準確性。 +1. 決定問題。大多數機器學習流程從提出一個無法用簡單條件程式或規則引擎回答的問題開始。這些問題通常圍繞基於一組數據的預測。 +2. 收集與準備數據。為了能回答您的問題,您需要數據。數據的質量,有時還有數量,會決定您回答初始問題的能力。數據可視化是此階段的重要部分。此階段還包括將數據分為訓練組和測試組,以建立模型。 +3. 選擇訓練方法。根據您的問題和數據的特性,您需要選擇如何訓練模型,以最佳反映數據並進行準確預測。這是 ML 流程中需要專門知識,且常需大量實驗的部分。 +4. 訓練模型。使用訓練數據,運用各種算法來訓練模型,讓其識別數據中的模式。模型可能利用可調整的內部權重,強調數據中的某些部分,以建立更好的模型。 +5. 評估模型。使用您未曾見過的數據(測試數據)來檢視模型的表現。 +6. 參數調整。根據模型的表現,您可以使用不同的參數或變量重新訓練,這些參數控制訓練模型的算法行為。 +7. 預測。使用新的輸入測試模型的準確度。 -## 提出問題 +## 該問什麼問題 -電腦特別擅長發現數據中的隱藏模式。這種能力對於研究人員來說非常有用,尤其是當他們面臨無法輕易通過條件規則引擎回答的問題時。例如,針對精算任務,數據科學家可能能夠手工製作規則來分析吸煙者與非吸煙者的死亡率。 +電腦特別擅長發現數據中隱藏的模式。這種功能對於在某領域有問題但無法用條件規則引擎輕易回答的研究者非常有幫助。例如,對於精算任務,數據科學家或許可以手工建立關於吸菸者與非吸菸者死亡率的規則。 -然而,當涉及到許多其他變量時,機器學習模型可能更有效地根據過去的健康歷史預測未來的死亡率。一個更愉快的例子可能是根據包括緯度、經度、氣候變化、靠近海洋、噴流模式等數據,為某地四月的天氣進行預測。 +然而,當引入更多變量時,機器學習模型可能更有效,能根據過去健康記錄預測未來死亡率。一個較樂觀的例子是,根據含有緯度、經度、氣候變化、海洋鄰近度、噴射氣流模式等數據,對特定地點的四月天氣做預測。 -✅ 這份[幻燈片](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供了使用機器學習進行天氣分析的歷史視角。 +✅ 這份[氣象模型簡報](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供有關使用機器學習分析氣象的歷史觀點。 -## 建模前的任務 +## 建模前任務 -在開始建立模型之前,您需要完成幾項任務。為了測試您的問題並根據模型的預測形成假設,您需要識別並配置幾個元素。 +在開始建立模型前,有幾項任務需完成。為了測試問題並基於模型的預測形成假設,您需識別並設定數個要素。 ### 數據 -為了能夠有一定的確定性回答您的問題,您需要足夠數量且類型正確的數據。在這個階段,您需要完成以下兩件事: +為了能用一定的確定性回答您的問題,您需要足夠且類型合適的數據。此階段需做兩件事: -- **收集數據**。記住上一課中關於數據分析公平性的內容,謹慎收集您的數據。注意數據的來源、可能存在的固有偏差,並記錄其來源。 -- **準備數據**。數據準備過程包括多個步驟。如果數據來自不同來源,您可能需要整理並標準化它。您可以通過各種方法提高數據的質量和數量,例如將字符串轉換為數字(如我們在[聚類](../../5-Clustering/1-Visualize/README.md)中所做的)。您可能還會基於原始數據生成新數據(如我們在[分類](../../4-Classification/1-Introduction/README.md)中所做的)。您可以清理和編輯數據(如我們在[Web App](../../3-Web-App/README.md)課程之前所做的)。最後,根據您的訓練技術,您可能還需要隨機化並打亂數據。 +- 收集數據。記得先前課程中對數據分析公平性的說明,請謹慎收集數據。留意數據來源、潛在偏差並記錄其來源。 +- 準備數據。數據準備包含多步驟。若數據來自不同來源,可能需要合併及正規化。您也可以透過多種方法提升數據量和品質,例如把字串轉換成數字(如同我們在[分群](../../5-Clustering/1-Visualize/README.md)課程中所示)。您也可以根據原始資料產生新數據(如在[分類](../../4-Classification/1-Introduction/README.md)中)。還能清理和編輯數據(如在[網頁應用程式](../../3-Web-App/README.md)課程前)。最後,依訓練技術可能需要隨機化和打亂數據。 -✅ 在收集和處理數據後,花點時間檢查其形狀是否能幫助您解決預期問題。可能數據在您的任務中表現不佳,正如我們在[聚類](../../5-Clustering/1-Visualize/README.md)課程中所發現的! +✅ 收集並處理數據後,稍作檢視數據形態是否能回答您的問題。某些任務中數據表現不佳,我們在[分群](../../5-Clustering/1-Visualize/README.md)課程中有所發現! -### 特徵和目標 +### 特徵與目標 -[特徵](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是數據的一個可測量屬性。在許多數據集中,它通常以列標題的形式表達,例如「日期」、「大小」或「顏色」。特徵變量通常在代碼中表示為`X`,代表用於訓練模型的輸入變量。 +[特徵](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是可量化的數據屬性。在多數數據集中以欄位標題表現,如「日期」、「大小」或「顏色」。特徵變量,程式碼中通常以 `X` 表示,為用來訓練模型的輸入變量。 -目標是您試圖預測的事物。目標通常在代碼中表示為`y`,代表您試圖從數據中回答的問題:在十二月,哪種**顏色**的南瓜最便宜?在舊金山,哪些街區的房地產**價格**最好?有時目標也被稱為標籤屬性。 +目標是您希望預測的結果。通常以 `y` 表示,它是您向數據提出問題的答案:十二月時,哪種顏色的南瓜最便宜?在舊金山,哪些社區的房價價格最好?有時目標也稱為標籤屬性。 ### 選擇特徵變量 -🎓 **特徵選擇與特徵提取** 如何在建立模型時選擇變量?您可能需要通過特徵選擇或特徵提取的過程來選擇最合適的變量以構建性能最佳的模型。然而,它們並不完全相同:「特徵提取通過原始特徵的函數創建新特徵,而特徵選擇返回特徵的子集。」([來源](https://wikipedia.org/wiki/Feature_selection)) +🎓 特徵選擇與特徵提取:如何知道建立模型時該選哪個變量?您或許會透過特徵選擇或特徵提取來挑選關鍵變量以建置最有效模型。但兩者並不相同:「特徵提取從原始特徵的函數中創造新特徵,而特徵選擇則挑出特徵的一個子集。」([來源](https://wikipedia.org/wiki/Feature_selection)) ### 可視化數據 -數據科學家工具包中的一個重要方面是使用一些優秀的庫(如Seaborn或MatPlotLib)來可視化數據的能力。以可視化方式表示數據可能幫助您發現可以利用的隱藏相關性。您的可視化還可能幫助您發現偏差或數據不平衡(如我們在[分類](../../4-Classification/2-Classifiers-1/README.md)中所發現的)。 +數據科學家的重要工具之一,是利用 Seaborn 或 MatPlotLib 等優秀函式庫將數據視覺化。視覺呈現數據,有助於您發現可利用的隱藏關聯,亦能幫助揭露偏差或不平衡數據(我們在[分類](../../4-Classification/2-Classifiers-1/README.md)課程中探討過此議題)。 ### 分割數據集 -在訓練之前,您需要將數據集分為兩個或更多不等大小的部分,這些部分仍然能很好地代表數據。 +訓練前,需將數據集拆分為兩個或以上大小不等但仍能代表數據的子集。 -- **訓練**。數據集的這部分用於訓練模型。這部分通常佔原始數據集的大部分。 -- **測試**。測試數據集是獨立的數據組,通常從原始數據中獲得,用於確認已建立模型的性能。 -- **驗證**。驗證集是一個較小的獨立數據組,用於調整模型的超參數或架構以改進模型。根據數據的大小和您提出的問題,您可能不需要建立這第三部分(如我們在[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)中所提到的)。 +- 訓練集:用來擬合模型的數據集,通常占原始數據的大多數。 +- 測試集:獨立的測試數據組,通常從原始數據中取得,用於確認模型表現。 +- 驗證集:較小的獨立數據組,用於調整模型的超參數或結構以優化模型。依據數據大小和問題,有時不必建立此第三個集合(如在[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)中所述)。 ## 建立模型 -使用您的訓練數據,您的目標是使用各種算法建立模型,或數據的統計表示,並對其進行**訓練**。訓練模型使其接觸數據,並讓其對發現的模式進行假設、驗證並接受或拒絕。 +使用訓練數據,運用多種算法,您的目標是建置一個模型,或是數據的統計表徵,並訓練它。模型訓練階段會讓它接觸數據,依發現的模式進行假設、驗證並接受或拒絕。 -### 決定訓練方法 +### 選擇訓練方法 -根據您的問題和數據的性質,您將選擇一種訓練方法。瀏覽[Scikit-learn的文檔](https://scikit-learn.org/stable/user_guide.html)——我們在本課程中使用它——您可以探索多種訓練模型的方法。根據您的經驗,您可能需要嘗試幾種不同的方法以建立最佳模型。您可能會經歷一個過程,數據科學家通過向模型提供未見過的數據來評估其性能,檢查準確性、偏差和其他質量下降問題,並選擇最適合當前任務的訓練方法。 +根據您的問題和數據性質,選擇適合的訓練方法。透過瀏覽 [Scikit-learn 文件](https://scikit-learn.org/stable/user_guide.html) — 本課程使用的套件 — 您能探究多種訓練模型方式。依經驗,您可能需嘗試幾種方法,才能打造最佳模型。數據科學家通常會透過讓模型分析未見過的數據,檢查準確度、偏差和其他品質問題,再挑選最合適的訓練方式。 ### 訓練模型 -有了訓練數據,您就可以「擬合」它來創建模型。您會注意到,在許多機器學習庫中,您會看到代碼`model.fit`——此時您將特徵變量作為值數組(通常是`X`)以及目標變量(通常是`y`)傳入。 +準備好訓練數據後,便可「擬合」數據以建立模型。您會發現多數 ML 函式庫中均有 'model.fit' 代碼,這是將特徵變量(通常是 'X')和目標變量(通常是 'y')傳入模型的時候。 ### 評估模型 -一旦訓練過程完成(對於大型模型,可能需要多次迭代或「epoch」),您將能夠使用測試數據評估模型的質量,以衡量其性能。這些數據是原始數據的一部分,模型之前未曾分析過。您可以打印出關於模型質量的指標表。 +當訓練完成後(大型模型可能需多次迭代或「週期」),您就能使用測試數據評估模型品質。測試數據是原始數據子集,模型之前未接觸過。您可列印模型品質指標表。 -🎓 **模型擬合** +🎓 模型擬合 -在機器學習的背景下,模型擬合指的是模型的底層函數在分析其不熟悉的數據時的準確性。 +在機器學習語境中,模型擬合指模型基礎函數在分析不熟悉數據時的準確度。 -🎓 **欠擬合**和**過擬合**是常見問題,會降低模型的質量,因為模型要麼擬合得不夠好,要麼擬合得太好。這會導致模型的預測要麼過於貼合,要麼過於偏離其訓練數據。過擬合模型因為過於熟悉數據的細節和噪音而對訓練數據預測得過於準確。欠擬合模型則不夠準確,既無法準確分析其訓練數據,也無法準確分析其未見過的數據。 +🎓 欠擬合過擬合 是常見問題,會降低模型質量。欠擬合指模型擬合不佳,無法準確分析訓練數據或未知數據;過擬合則表示模型對訓練數據過度擬合,將細節和雜訊也學會,導致預測過於貼合訓練數據,降低泛化能力。 -![過擬合模型](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> 信息圖由 [Jen Looper](https://twitter.com/jenlooper) 提供 +![overfitting model](../../../../translated_images/zh-MO/overfitting.1c132d92bfd93cb6.webp) +> 資訊圖表由 [Jen Looper](https://twitter.com/jenlooper) 提供 ## 參數調整 -完成初步訓練後,觀察模型的質量,並考慮通過調整其「超參數」來改進它。閱讀更多相關內容[在文檔中](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 +完成初始訓練後,觀察模型品質,考慮透過調整「超參數」來改善。如要了解更多過程,請參考[官方文件](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 ## 預測 -這是您可以使用全新數據測試模型準確性的時刻。在「應用」機器學習設置中,當您構建網頁資產以在生產環境中使用模型時,此過程可能涉及收集用戶輸入(例如按下按鈕)以設置變量並將其發送到模型進行推斷或評估。 +這個階段您可以使用全新數據來測試模型準確度。在應用型機器學習場景中,您建置網頁資產以在正式環境中使用模型,過程可能需要接收用戶輸入(例如按鈕點擊),將變量送入模型進行推論或評估。 -在這些課程中,您將學習如何使用這些步驟來準備、建立、測試、評估和預測——這些都是數據科學家的手勢,隨著您的進步,您將成為「全棧」機器學習工程師。 +在這些課程中,您將學習如何利用這些步驟來準備、建立、測試、評估和預測——執行數據科學家的所有基本動作,並在成長過程中成為一名「全端」機器學習工程師。 --- ## 🚀挑戰 -繪製一個反映機器學習實踐者步驟的流程圖。您認為自己目前處於哪個步驟?您預測在哪些方面會遇到困難?哪些看起來比較容易? +畫出反映機器學習從業者流程步驟的流程圖。您認為自己目前處於哪個階段?您預見會在哪裡遇到困難?哪部分對您來說比較容易? ## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自學 -在線搜索數據科學家討論其日常工作的訪談。這裡有一個[例子](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 +線上搜尋數據科學家的訪談,了解他們的日常工作。這裡有[一段](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 ## 作業 @@ -119,5 +119,7 @@ --- + **免責聲明**: -本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file +本文件係透過人工智能翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原文件以其母語版本為權威資料。對於重要資訊,建議採用專業人工翻譯。我們不對因使用此翻譯而引起的任何誤解或曲解負責。 + \ No newline at end of file diff --git a/translations/zh-MO/2-Regression/3-Linear/README.md b/translations/zh-MO/2-Regression/3-Linear/README.md index 8d33e09613..af9fcd68f3 100644 --- a/translations/zh-MO/2-Regression/3-Linear/README.md +++ b/translations/zh-MO/2-Regression/3-Linear/README.md @@ -1,97 +1,97 @@ -# 使用 Scikit-learn 建立回歸模型:回歸四種方法 +# 使用 Scikit-learn 建立迴歸模型:四種迴歸方式 ## 初學者筆記 -線性回歸用於當我們想預測一個數值(例如,房價、溫度或銷售量)。 -它通過尋找一條最能代表輸入特徵與輸出之間關係的直線來工作。 +當我們想要預測一個數值(例如房價、溫度或銷售額)時,會使用線性迴歸。它透過尋找一條最能代表輸入特徵與輸出之間關係的直線來運作。 + +在本課程中,我們將先著重理解這個概念,再進一步探討更進階的迴歸技術。 +![線性與多項式迴歸圖解](../../../../translated_images/zh-MO/linear-polynomial.5523c7cb6576ccab.webp) +> 圖解由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 提供 -在本課程中,我們專注於理解概念,然後進一步探索更進階的回歸技術。 -![線性回歸與多項式回歸資訊圖](../../../../translated_images/zh-MO/linear-polynomial.5523c7cb6576ccab.webp) -> 資訊圖由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作 ## [課前小測驗](https://ff-quizzes.netlify.app/en/ml/) -> ### [本課程亦提供 R 版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) -### 介紹 +> ### [本課程也提供 R 語言版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +### 介紹 -到目前為止,你已經透過南瓜定價資料集(本課程將持續使用)探討了回歸的意義。你也使用 Matplotlib 將其視覺化。 +到目前為止,你已經探索過什麼是迴歸,並使用整個課程將會用到的南瓜價格資料集做範例。你也已經運用 Matplotlib 視覺化這些資料。 -現在你已準備好深入探討機器學習中的回歸。雖然視覺化可以幫助你理解數據,機器學習的真正力量來自於_訓練模型_。模型在歷史數據上訓練,以自動捕捉數據之間的依賴關係,並允許你對模型未見過的新數據進行預測。 +現在你已經準備深入了解為機器學習用的迴歸。雖然視覺化讓你可以理解資料,但機器學習的真正威力在於_訓練模型_。模型是透過歷史資料訓練,以自動捕捉資料間的依賴關係,並讓你得以對未見過的新資料進行結果預測。 -本課將介紹兩種回歸:_基本線性回歸_與_多項式回歸_,以及一些這些技術背後的數學原理。這些模型將讓我們根據不同輸入資料預測南瓜價格。 +本課程會介紹兩種迴歸方法:_基本線性迴歸_與_多項式迴歸_,並略談其背後的數學原理。這些模型將讓我們依據不同輸入資料預測南瓜價格。 -[![初學者機器學習 - 理解線性回歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初學者機器學習 - 理解線性回歸") +[![機器學習入門-理解線性迴歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "機器學習入門-理解線性迴歸") -> 🎥 點擊上圖觀看線性回歸的短片介紹。 +> 🎥 點擊上方圖片,觀看線性迴歸的短片概述。 -> 整個課程假設對數學知識要求低,並致力於讓來自不同領域的學生都能理解,因此你會看到筆記、🧮 註解、圖解及其他學習工具協助理解。 +> 本課程假設讀者數學基礎不深,並致力於讓來自其他背景的學生也能輕鬆理解,請留意筆記、🧮 計算提示、圖示與其他助學工具。 -### 前置知識 +### 前置條件 -你現在應該熟悉我們正在檢視的南瓜數據架構。你可以在本課程的 _notebook.ipynb_ 中找到事先加載並預先清理好的數據。在該檔中,南瓜價格以每蒲式耳計算並顯示於新的資料框架中。確保你能在 Visual Studio Code 中運行這些 notebook。 +你現在應該已熟悉我們所探討的南瓜資料結構。本課程的 _notebook.ipynb_ 檔案中已預載並預先清理好資料。該檔案將南瓜價格以每蒲式耳價格顯示於新的資料框中。請確保可於 Visual Studio Code 的內核中順利執行這些筆記本。 ### 準備工作 -提醒你,你正在載入這些數據是為了針對它們提出問題。 +提醒你,載入這些資料是為了向它提出問題: -- 何時是購買南瓜的最佳時機? -- 一箱迷你南瓜的價格大約是多少? -- 我應該買半蒲式耳的南瓜籃,還是一箱1 1/9蒲式耳的箱子? -讓我們繼續探索這些數據。 +- 什麼時候買南瓜最好? +- 一箱迷你南瓜價格會是多少? +- 我應該買半蒲式耳籃裝還是一箱 1 1/9 蒲式耳盒裝的? +讓我們繼續深入挖掘這些資料。 -在上一課中,你建立了一個 Pandas 資料框架,並以原始資料的一部分填充,將價格標準化為每蒲式耳價格。然而,這樣你只能取得約400筆數據,且只涵蓋秋季月份。 +前一課你建立了一個 Pandas 資料框,並用原始資料集的一部分填充,將價格標準化為每蒲式耳價格。但這樣只能得到約 400 筆資料,且只涵蓋秋季的幾個月。 -看看我們在本課的 notebook 中預先加載的數據。資料已加載且初步使用散點圖顯示月份數據。也許我們可以透過進一步清理獲得更詳細的資料特性。 +請查看本課程隨課程提供筆記本中預載的資料。資料已預載,且已繪製初始散點圖以顯示月份。也許我們可以透過更進一步的清理,來了解資料的本質。 -## 線性回歸線 +## 線性迴歸線 -如你在第一課中學到,線性回歸的目標是繪製一條線來: +正如你在第一課學到的,線性迴歸的目標是能繪製一條線: -- 展示變量關係。展示變數間的關係 -- 進行預測。準確預測新數據點相較該線會落在哪裡 +- 展現變數關係。展現變數間的關係 +- 做出預測。準確預測新資料點相對於此線的位置 -最小平方回歸常用來繪製這類線條。術語「最小平方」指的是我們想最小化模型中總誤差的過程。對每個數據點,我們量度實際點與回歸線之間的垂直距離(稱為殘差)。 +最常用的做法是最小平方法迴歸(Least-Squares Regression)畫出這樣的一條線。“最小平方法”意指在模型中使誤差總和最小化的過程。對每一資料點,我們會測量該點與迴歸線間的垂直距離(稱為殘差)。 -我們將這些距離平方,原因有兩個: +我們將這些距離平方,有兩個主要原因: -1. 大小勝方向:我們要將-5的誤差與+5的誤差等同對待,平方讓所有值都變成正數。 +1. **只看大小,不看方向:** 我們想讓漏誤為 -5 與 +5 變成同樣的錯誤大小。平方可將所有數值轉為正數。 -2. 懲罰離群值:平方會給較大誤差更重的權重,迫使線條更貼近遠離的點。 +2. **懲罰離群點:** 平方會使離誤差較大的點權重更重,迫使線盡可能接近這些較遠的點。 -接著將所有平方值加總起來。我們的目標是尋找使該總和最小(可能的最小值)的特定直線——因此稱作「最小平方」。 +接著,我們加總所有平方後的誤差,我們的目標是找到使此和達最小值的那條直線(故名「最小平方法」)。 -> **🧮 看數學計算** +> **🧮 數學說明** > -> 這條稱作_最佳擬合線_的直線能用[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: +> 這條線,稱為_最佳擬合線_,其表達式是[一個等式](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` -> -> `X` 是「解釋變數」,`Y` 是「被解釋變數」。線的斜率是 `b`,`a` 是 y 截距,指的是當 `X = 0` 時的 `Y` 值。 -> ->![計算斜率](../../../../translated_images/zh-MO/slope.f3c9d5910ddbfcf9.webp) -> -> 首先計算斜率 `b`。 資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作 -> -> 換句話說,對應我們南瓜資料的原始問題:「根據月份預測每蒲式耳南瓜的價格」,`X` 指價格,`Y` 則是銷售月份。 -> ->![完成方程式](../../../../translated_images/zh-MO/calculation.a209813050a1ddb1.webp) -> -> 計算 `Y` 的值。如果你支付約 4 美元,應該是四月!資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作 -> -> 計算直線的數學必須展示斜率,而斜率也依賴截距,即 `X = 0` 時 `Y` 所在位置。 -> -> 你可以到 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站觀察這些計算方法。也可到[此最小平方計算器](https://www.mathsisfun.com/data/least-squares-calculator.html)觀看數值如何影響直線。 +> +> `X` 是「解釋變數」,`Y` 是「依變數」。線的斜率是 `b`,而 `a` 是 y 截距,也就是當 `X = 0` 時 `Y` 的值。 +> +>![計算斜率](../../../../translated_images/zh-MO/slope.f3c9d5910ddbfcf9.webp) +> +> 首先計算斜率 `b`。圖解由 [Jen Looper](https://twitter.com/jenlooper) 提供 +> +> 換句話說,針對我們南瓜資料的原始問題:「依照月份預測每蒲式耳南瓜價格」,`X` 是價格,`Y` 則是銷售的月份。 +> +>![完成等式](../../../../translated_images/zh-MO/calculation.a209813050a1ddb1.webp) +> +> 計算 Y 的值。如果你付出約 $4,那一定是四月!圖解由 [Jen Looper](https://twitter.com/jenlooper) 提供 +> +> 計算線的數學必須顯示線的斜率,同時取決於截距,即 `X = 0` 時 `Y` 的位置。 +> +> 你可以在 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站看到這些數值的計算方式,也可拜訪[這個最小二乘計算器](https://www.mathsisfun.com/data/least-squares-calculator.html)來觀察數字如何影響線的表現。 -## 相關係數 +## 相關性 -還有一個需要了解的詞彙是給定 X 與 Y 變數間的相關係數。使用散點圖,你可以快速視覺化這個係數。若數據點呈現整齊分布成一條線,代表相關性高;若點散布在 X 與 Y 之間各處,則相關性低。 +另一個要理解的詞是給定 X 和 Y 變數間的相關係數。透過散佈圖,你可以快速視覺化此係數。點呈現筆直排列的散佈圖表示高度相關,但若資料點在 X 與 Y 間亂散則表示相關性低。 -一個好的線性回歸模型會有一個高(接近1而非0)相關係數,使用最小平方回歸法與回歸線。 +一個良好的線性迴歸模型會在最小平方法與迴歸線下,呈現較高(接近 1 而非 0)的相關係數。 -✅ 執行本課程附帶 notebook,查看月份對價格的散點圖。根據你對散點圖的視覺判斷,月份與南瓜銷售價格之間的資料關聯是高還是低?如果換成更細緻的度量,例如該年天數(即距離該年開始日的天數),情況會改變嗎? +✅ 執行本課程附帶的筆記本並查看「月份 vs 價格」的散佈圖。依據你對散佈圖的視覺判斷,南瓜銷售的月份與價格看來關聯性高還是低?如果不用 `Month` 而改用更細緻的量度指標,例如_一年中的日數_(即自年初後流逝的天數),這狀況會改變嗎? -在以下程式中,假設我們已清理了資料,得到了名為 `new_pumpkins` 的資料框架,結構類似: +下方程式碼中,我們假設已整理好資料,取得名為 `new_pumpkins` 的資料框,如下所示: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> 清理數據的程式碼在 [`notebook.ipynb`](notebook.ipynb) 中。我們已完成與上一課相同的清理步驟,並利用以下公式計算 `DayOfYear` 欄位: +> 清理資料的程式碼位於 [`notebook.ipynb`](notebook.ipynb) 檔案中。我們採用了前課的相同步驟,並用以下表達式計算 `DayOfYear` 欄位: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -現在你已了解線性回歸背後的數學,讓我們建立一個迴歸模型,看看是否能預測哪種南瓜包裝的南瓜價格會最好。假如有人想購買南瓜以打造節日南瓜園,這資訊會對他們優化包裝購買策略很有幫助。 + +了解線性迴歸背後的數學後,我們來建立一個迴歸模型,看看是否可以預測哪種南瓜包裝擁有最佳南瓜價格。採買節慶南瓜的人可能想要這些資訊,以便優化購買南瓜包裝的決策。 ## 尋找相關性 -[![初學者機器學習 - 尋找相關性:線性回歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初學者機器學習 - 尋找相關性:線性回歸的關鍵") +[![機器學習入門-尋找相關性:線性迴歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "機器學習入門-尋找相關性:線性迴歸的關鍵") -> 🎥 點擊上圖觀看相關性短片介紹。 +> 🎥 點擊上方影片縮圖,觀看相關性簡介。 -根據上一課,你可能見過不同月份平均價格長這樣: +從前一課你可能已看到不同月份的平均價格長這樣: -按月平均價格 +月份平均價格 -這表示應該有某種相關性,我們可以嘗試訓練線性回歸模型來預測 `Month` 與 `Price` 或 `DayOfYear` 與 `Price` 之間的關係。以下散點圖顯示後者關係: +這暗示著一定存在某種相關性,我們可以嘗試訓練線性迴歸模型來預測 `Month` 與 `Price`,或是 `DayOfYear` 與 `Price` 的關係。下圖為後者的散點圖: -價格與該年天數散點圖 +價格與一年中日數的散佈圖 -讓我們使用 `corr` 函數看看是否存在相關: +讓我們用 `corr` 函式檢視是否存在相關性: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -看起來 `Month` 的相關性大約是 -0.15,`DayOfMonth` 則是 -0.17,都相當小,但可能還有其他重要關係。看來不同南瓜品種的價格形成不同叢集。為證實此假設,我們用不同顏色標示每種南瓜類別。透過傳 `ax` 參數給 `scatter` 繪圖函式,我們可以將所有點畫在同一圖上: + +看來相關性相當小,按 `Month` 計算是 -0.15,按 `DayOfYear` 是 -0.17,但可能有另一個重要關係—不同南瓜品種似乎對價格產生價格群聚現象。為了驗證此猜想,我們以不同顏色標示每種南瓜品種。藉由在 `scatter` 繪圖函式中傳入 `ax` 參數,我們能將所有點畫在同一張圖上: ```python ax=None @@ -139,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +價格與一年中日數的散佈圖(彩色標示) -價格與該年天數散點圖,依顏色區分 - -調查顯示品種比實際銷售日期對整體價格影響更大。我們用長條圖看得更明顯: +研判發現品種對整體價格影響較大,而非實際銷售日期。我們可以用長條圖來看: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +品種與價格的長條圖 -按品種價格長條圖 - -暫時只看一種南瓜品種,稱為「pie type」,來看看日期對價格的影響: +目前我們先專注於一種南瓜品種,『派型』,看看日期對價格的影響: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -價格與該年天數散點圖 +價格與一年中日數的散佈圖(派型) -若用 `corr` 函數計算 `Price` 與 `DayOfYear` 相關性,會得到約 `-0.27`,表示訓練預測模型是有意義的。 +如果用 `corr` 函式計算 `Price` 與 `DayOfYear` 的相關性,大概會得到 `-0.27`,這代表訓練預測模型是有意義的。 -> 在訓練線性回歸模型前,請確定數據是乾淨的。線性回歸對遺失值表現不佳,因此最好清除所有空白欄位: +> 在訓練線性迴歸模型之前,重要的是確保資料清潔。線性迴歸對缺失值表現不佳,因此建議先剔除所有空值: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` + +另一個作法是用對應欄位的平均值填補這些空缺。 -另一方法是用該欄位的平均值填補空白。 +## 簡單線性迴歸 -## 簡單線性回歸 +[![機器學習入門-使用 Scikit-learn 作線性與多項式迴歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "機器學習入門-使用 Scikit-learn 作線性與多項式迴歸") -[![初學者機器學習 - 使用 Scikit-learn 的線性與多項式回歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初學者機器學習 - 使用 Scikit-learn 的線性與多項式回歸") +> 🎥 點擊上方圖片,觀看線性與多項式迴歸簡介。 -> 🎥 點擊上圖觀看線性與多項式回歸短片介紹。 - -我們將使用 **Scikit-learn** 函式庫訓練線性回歸模型。 +我們將採用Scikit-learn套件訓練線性迴歸模型。 ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -首先,我們要將輸入值(特徵)和預期輸出(標籤)分別放進 numpy 陣列: + +首先將輸入特徵與預期輸出(標籤)分別存入 numpy 陣列: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> 注意,我們對輸入資料做了 `reshape`,讓線性迴歸套件能正確識別。線性迴歸期望輸入為 2D 陣列,其中每一列代表一組輸入特徵向量,因為此處只有一個特徵,故需一個大小為 N×1 的陣列,N 為資料筆數。 -> 注意,我們必須將輸入資料 `reshape` 以讓線性回歸套件能正確處理。線性回歸預期輸入是 2 維陣列,每列是輸入特徵向量。在本例中因為只有一個輸入,所以需要一個形狀為 N×1 的陣列,N 是資料集大小。 - -接著,我們需要將資料分成訓練集和測試集,以便在訓練後驗證模型: +接著,我們需要將資料拆分為訓練與測試集,好在訓練後驗證模型成效: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -最後,訓練線性回歸模型只需兩行程式碼。我們定義 `LinearRegression` 物件,然後用 `fit` 方法將其擬合到資料上: + +最後,訓練線性迴歸模型僅需兩行程式碼。我們宣告 `LinearRegression` 物件,並使用 `fit` 方法訓練: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` 物件在 `fit` 後會包含迴歸的所有係數,可以透過 `.coef_` 屬性來存取。在我們的例子中,只有一個係數,應該約為 `-0.017`。這表示價格似乎隨時間略微下降,但不多,每天約下降兩仙。我們也可以使用 `lin_reg.intercept_` 來存取迴歸與 Y 軸的交點——在我們的例子中大約是 `21`,表示年初的價格。 +`LinearRegression` 物件在進行 `fit` 後包含了所有回歸的係數,可以用 `.coef_` 屬性存取。在我們的例子中只有一個係數,大約是 `-0.017`。這表示價格隨時間似乎有輕微下降,但幅度不大,大約每天下降 2 分錢。我們也可以用 `lin_reg.intercept_` 存取回歸線與 Y 軸的交叉點——在我們的例子中約為 `21`,表示年初的價格。 -為了看看我們的模型有多準確,我們可以在測試資料集上預測價格,然後測量預測值與實際值的接近程度。這可以使用均方根誤差(RMSE)指標來完成,即所有預期與預測值平方差均值的平方根。 +要看看我們的模型有多準確,我們可以在測試資料集上預測價格,然後衡量預測值與期望值的接近程度。這可以用均方根誤差 (RMSE) 指標來完成,該指標是所有期望值與預測值平方差的平均後開根號。 ```python pred = lin_reg.predict(X_test) @@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -我們的誤差約為 2 點,約為 17%。不是太好。衡量模型品質的另一個指標是決定係數(coefficient of determination),可以這樣取得: +我們的誤差大約是 2 點,約為 ~17%。這不算太好。另一個衡量模型品質的指標是 決定係數,可用以下程式取得: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -如果值為 0,表示模型不考慮輸入資料,作用如同最差線性預測器,即輸出結果的平均值。值為 1 表示我們可以完美預測所有預期輸出。在我們的例子中,係數約為 0.06,相當低。 +當該值為 0 時,表示模型不考慮輸入資料,僅當作最差線性預測,即結果的平均值。當該值為 1 時,表示我們可以完美預測所有期望輸出。在我們的例子中,決定係數約為 0.06,偏低。 -我們也可以將測試資料與迴歸線一起繪圖,以更清楚看到迴歸在我們的案例中如何運作: +我們也可以將測試資料與回歸線繪圖,以更好地觀察回歸的效果: ```python plt.scatter(X_test,y_test) @@ -233,19 +233,19 @@ plt.plot(X_test,pred) Linear regression -## 多項式迴歸 +## 多項式回歸 -另一種線性迴歸是多項式迴歸。雖然有時變數間存在線性關係——例如南瓜體積越大,價格越高——但有時這些關係無法用平面或直線繪製。 +線性回歸的另一種類型是多項式回歸。有時候變數之間呈線性關係——體積越大的南瓜價格越高——但有時這種關係無法用平面或直線描述。 -✅ 以下是[一些多項式迴歸適用的示例](https://online.stat.psu.edu/stat501/lesson/9/9.8) +✅ 這裡有[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8)可以使用多項式回歸的資料 -再看看日期與價格的關係。這散點圖看起來是否非得用直線分析?價格是否可能波動?這種情況下,可以嘗試多項式迴歸。 +再看一次日期與價格的關係。這個散點圖看起來一定要用直線分析嗎?價格難道不會波動?這時可以嘗試多項式回歸。 -✅ 多項式是由一個或多個變數與係數組成的數學表達式 +✅ 多項式是可能包含一個或多個變數與係數的數學表達式 -多項式迴歸建立一條曲線,以更好地擬合非線性資料。在我們的例子中,如果將平方的 `DayOfYear` 變數納入輸入,我們應該可以用一個二次曲線擬合資料,該曲線在一年中某點有最小值。 +多項式回歸會產生一條曲線,以更貼合非線性資料。在我們的情況下,如果將平方的 `DayOfYear` 變數包含進輸入資料,應該能以一條抛物線擬合資料,該曲線在年中的某個點有一個最小值。 -Scikit-learn 提供一個方便的[管道 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)來結合多個資料處理步驟。管道是由多個預估器串連而成。在我們例子中,我們將建構一個管道,先加入多項式特徵,再進行迴歸訓練: +Scikit-learn 包含方便的[管道 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)來結合不同的資料處理步驟。管道是一連串的估計器。在我們的例子中,我們會建立一個先增加多項式特徵,再訓練迴歸模型的管道: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -使用 `PolynomialFeatures(2)` 表示包含所有二次項多項式。對我們而言,只有 `DayOfYear`2,但若有兩個輸入變數 X 和 Y,則會加入 X2、XY 與 Y2。我們也可以使用更高次多項式。 +使用 `PolynomialFeatures(2)` 表示我們會包含所有二次多項式。就我們例子來說,就是 `DayOfYear`2,但對兩個輸入變數 X 和 Y,會加入 X2、XY 和 Y2。如有需要,也可用更高次方多項式。 + +管道可像原始的 `LinearRegression` 物件一樣使用,也就是我們可以在管道上呼叫 `fit`,然後用 `predict` 取得預測結果: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +要繪製平滑的擬合曲線,我們用 `np.linspace` 產生均勻間距的輸入值範圍,而非直接在無序的測試資料上繪製(那樣會呈現鋸齒狀線): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -管道的使用方式與原始的 `LinearRegression` 物件相同,即可以 `.fit` 管道,之後使用 `.predict` 得到預測結果。以下圖顯示測試資料與擬合曲線: +這是包含測試資料和擬合曲線的圖: Polynomial regression -使用多項式迴歸,我們能取得稍低的 MSE 及較高的決定係數,但改善幅度不大。我們需要考慮其他特徵! +使用多項式回歸,我們能得到稍低的 RMSE 與稍高的決定係數,但差異不大。我們需要考慮其他特徵! -> 你可以看到最低價的南瓜出現在萬聖節附近。你如何解釋這現象? +> 你可以看到,最低的南瓜價格大約出現在萬聖節左右。你怎麼解釋這個現象? -🎃 恭喜,你剛完成一個可幫助預測派用南瓜價格的模型。你可以對其他南瓜種類重複同樣操作,但非常繁瑣。接著讓我們學習如何在模型中考慮南瓜品種! +🎃 恭喜,你剛剛建立了一個可以幫助預測派南瓜價格的模型。你或許也可以用相同程序針對其他南瓜品種建立模型,但那會很繁瑣。現在讓我們學習如何在模型中考慮南瓜品種! ## 類別特徵 -理想狀況下,我們希望同一模型能預測不同南瓜品種的價格。然而,`Variety` 欄位與 `Month` 不同,因它包含非數字值,這類欄位稱為類別型。 +理想狀況下,我們希望用同一個模型預測不同南瓜品種的價格。然而,`Variety` 欄位與 `Month` 等欄位不同,它包含非數值資料。這類欄位稱為類別特徵。 [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 點擊上方圖片觀看使用類別特徵的簡短影片介紹。 +> 🎥 點擊上方圖片觀看使用類別特徵的線性回歸短片概述。 -這裡展示了平均價格如何依品種變化: +這裡顯示平均價格如何依品種變化: Average price by variety -為了考慮品種,我們首先需要將它轉換為數字形式,或稱編碼。有幾種方法: +要考慮品種,我們首先需要將其轉換為數字形式,稱作編碼。有幾種方法: -* 簡單的數字編碼會建立一張不同品種的表,然後用該表的索引取代品種名稱。這對線性迴歸不是好方法,因為模型會把索引數字當作數值處理及乘以係數加入結果,但品種索引與價格的關係明顯非線性,即使確保索引有特定順序也會如此。 -* 獨熱編碼(one-hot encoding)會把 `Variety` 欄位換成4個欄位,每個對應一個品種。若該行品種對應該欄位會為 1,否則為 0。如此在迴歸模型有四個係數,分別對應每種南瓜品種,表示該品種的「起價」(或更準確地說「額外價格」)。 +* 簡單的數值編碼會建立一張各品種的表,然後用該表的索引取代品種名稱。這對線性回歸來說並不理想,因為線性回歸會直接將索引數值乘以係數相加,但在我們案例中索引號碼與價格的關係很明顯是非線性的,即使我們嘗試將索引做某種特定排序。 +* 獨熱編碼則會用 4 個不同欄位取代 `Variety`,每個欄位對應一個品種。如果該列是特定品種,該欄位為 `1`,反之為 `0`。這表示線性回歸會有四個係數,分別對應四個品種,代表該品種的“起始價”(或者說“額外價格”)。 -以下程式碼示範如何對品種進行獨熱編碼: +以下程式示範如何對品種做獨熱編碼: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -要用獨熱編碼品種訓練線性迴歸,只需正確初始化 `X` 與 `y` 資料: +要用獨熱編碼品種作為輸入,訓練線性回歸,只要初始化 `X` 和 `y` 的資料正確即可: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -其他程式碼與前面訓練線性迴歸相同。若嘗試執行,將會發現均方誤差差不多,但決定係數大幅提升(約 77%)。為達更準確預測,我們可以同時考慮更多類別特徵及數值特徵,例如 `Month` 或 `DayOfYear`。若要取得一個完整特徵陣列,可用 `join`: +其餘程式碼與前面訓練線性回歸時相同。你試試看就會發現均方誤差差不多,但決定係數大幅提高到約 77%。若想更精確,可以同時考慮更多類別特徵及數值特徵,例如 `Month` 或 `DayOfYear`。要合併成一個大特徵陣列,可以用 `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -這裡還考慮了 `City` 與 `Package` 類型,得到 MSE 2.84(10%)與決定係數 0.94! +這裡我們也納入 `City` 和 `Package` 類別,得出的 RMSE 是 2.84(10.5%),決定係數為 0.94! ## 綜合應用 -為做出最佳模型,我們可以使用上述結合(獨熱編碼類別+數值)資料,並搭配多項式迴歸。以下是完整程式碼,方便你參考: +要建立最好的模型,我們可以用上述案例的合併(獨熱編碼的類別 + 數值)特徵資料,並搭配多項式回歸。以下是完整程式,方便參考: ```python -# 設置訓練數據 +# 設定訓練數據 X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# 進行訓練-測試劃分 +# 製作訓練-測試分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# 設置並訓練管道 +# 設定並訓練流程 pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# 對測試數據進行預測結果 +# 預測測試數據結果 pred = pipeline.predict(X_test) -# 計算均方誤差和決定係數 -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# 計算均方根誤差及決定係數 +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -這樣可以取得將近 97% 的最高決定係數,以及 2.23(約 8% 預測誤差)的 MSE。 +這應該會給我們接近 97% 的最高決定係數與 RMSE=2.23(約 8% 預測誤差)。 -| 模型 | MSE | 決定係數 | +| 模型 | RMSE | 決定係數 | |-------|-----|---------------| | `DayOfYear` 線性 | 2.77 (17.2%) | 0.07 | | `DayOfYear` 多項式 | 2.73 (17.0%) | 0.08 | | `Variety` 線性 | 5.24 (19.7%) | 0.77 | -| 全特徵線性 | 2.84 (10.5%) | 0.94 | -| 全特徵多項式 | 2.23 (8.25%) | 0.97 | +| 所有特徵 線性 | 2.84 (10.5%) | 0.94 | +| 所有特徵 多項式 | 2.23 (8.25%) | 0.97 | -🏆 做得好!你在一堂課中建立了四個迴歸模型,將模型品質提升至 97%。在迴歸的最後一節中,你將學習用於分類的邏輯斯迴歸。 +🏆 幹得好!在一堂課中建立了四個回歸模型,並將模型品質提升到 97%。在回歸的最後一節,你將學習用於分類判斷的邏輯迴歸。 --- ## 🚀挑戰 -在這個筆記本中測試不同變數,查看相關性與模型準確度的關係。 +在此筆記本中測試不同變數,觀察其相關性與模型準確性的關係。 -## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) ## 複習與自學 -本課我們學習了線性迴歸。還有其他重要的迴歸方法。閱讀關於逐步迴歸、Ridge、Lasso 和 Elasticnet 的技術。推薦深入學習的課程是[史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +本課涵蓋了線性回歸。其他重要的回歸類型還包括階層回歸、嶺回歸、Lasso 與彈性網路。想深入學習可以參考 [Stanford 統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## 作業 +## 作業 [建立模型](assignment.md) --- -**免責聲明**: -本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引起之任何誤解或錯誤解釋負責。 +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議尋求專業人工作翻譯。我們對因使用本翻譯而產生的任何誤解或誤釋不承擔任何責任。 \ No newline at end of file diff --git a/translations/zh-MO/2-Regression/3-Linear/solution/notebook.ipynb b/translations/zh-MO/2-Regression/3-Linear/solution/notebook.ipynb index 1783a08aae..eb1ceb6cb8 100644 --- a/translations/zh-MO/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/zh-MO/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 南瓜定價的線性與多項式回歸 - 第三課\n", + "## 線性與多項式回歸應用於南瓜定價 - 課程 3\n", "\n", - "載入所需的庫和數據集。將數據轉換為包含部分數據的數據框:\n", + "載入所需的函式庫和資料集。將資料轉換為包含資料子集的資料框:\n", "\n", - "- 僅選取按蒲式耳定價的南瓜\n", + "- 僅獲取按蒲式耳定價的南瓜\n", "- 將日期轉換為月份\n", - "- 計算價格為高價與低價的平均值\n", - "- 將價格轉換為反映按蒲式耳數量定價\n" + "- 計算價格為最高價與最低價的平均值\n", + "- 將價格轉換為反映蒲式耳數量的定價\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "散佈圖提醒我們,我們只有從八月到十二月的月度數據。我們可能需要更多的數據才能以線性方式得出結論。\n" + "散點圖提醒我們,我們只有從八月至十二月的月份數據。我們可能需要更多數據才能以線性方式得出結論。\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "讓我們看看是否有相關性:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "看起來相關性相當小,但存在一些其他更重要的關係——因為上圖中的價格點似乎有幾個明顯的群集。我們來製作一個圖表,顯示不同的南瓜品種:\n" + "看起來相關性相當小,但有一些其他更重要的關係——因為上面圖表中的價格點似乎有幾個明顯的群聚。我們來畫一個圖,顯示不同的南瓜品種:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "暫時,我們先專注於一種款式 - 批類型。\n" + ] }, { "cell_type": "code", @@ -582,9 +586,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 線性回歸\n", + "### 線性迴歸\n", "\n", - "我們將使用 Scikit Learn 來訓練線性回歸模型:\n" + "我們將使用 Scikit Learn 來訓練線性迴歸模型:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "可以從線性回歸係數中確定直線的斜率:\n" + "線性回歸係數可以用來確定直線的斜率:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "我們可以使用訓練好的模型來預測價格:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### 多項式回歸\n", "\n", - "有時候,特徵與結果之間的關係本質上是非線性的。例如,南瓜的價格可能在冬季(月份=1,2)很高,然後在夏季(月份=5-7)下降,接著又上升。線性回歸無法準確地捕捉這種關係。\n", + "有時候,特徵與結果之間的關係本質上是非線性的。例如,冬天(月份=1,2)南瓜價格可能較高,然後在夏天(月份=5-7)下降,接著再上升。線性回歸無法準確擬合這種關係。\n", "\n", - "在這種情況下,我們可以考慮添加額外的特徵。一個簡單的方法是從輸入特徵中使用多項式,這樣就會形成**多項式回歸**。在 Scikit Learn 中,我們可以使用管道自動預先計算多項式特徵:\n" + "在這種情況下,我們可以考慮加入額外的特徵。簡單的方法是使用輸入特徵的多項式,這會產生多項式回歸。在 Scikit Learn 中,我們可以使用管線自動預先計算多項式特徵:\n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 編碼品種\n", + "### 編碼種類\n", "\n", - "在理想的情況下,我們希望能夠使用同一個模型來預測不同南瓜品種的價格。為了考慮品種的影響,我們首先需要將其轉換為數字形式,或者說進行**編碼**。有幾種方法可以做到:\n", + "在理想情況下,我們希望能夠使用相同模型來預測不同南瓜品種的價格。為了考慮品種,我們首先需要將其轉換為數值形式,或稱為編碼。我們可以用幾種方法來做:\n", "\n", - "* 簡單的數字編碼,這種方法會建立一個不同品種的表格,然後用該表格中的索引來替換品種名稱。這對於線性回歸來說並不是最好的方法,因為線性回歸會考慮索引的數值,而這些數值很可能與價格之間沒有數值上的相關性。\n", - "* 獨熱編碼(One-hot encoding),這種方法會用4個不同的列來替換`Variety`列,每個列對應一個品種。如果某一行屬於某個特定品種,該列的值為1,否則為0。\n", + "* 簡單的數值編碼,會建立一個不同品種的對照表,然後用該表中的索引來替換品種名稱。這對線性回歸來說不是最好的主意,因為線性回歸會考慮索引的數值,而該數值不一定與價格在數值上相關。\n", + "* 一熱編碼,會將`Variety`欄替換為4個不同的欄位,每個品種一個,如果該欄位的行屬於該品種則為1,否則為0。\n", "\n", - "以下的程式碼展示了如何對品種進行獨熱編碼:\n" + "下面的程式碼展示了如何對品種進行一熱編碼:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 品種的線性回歸\n", + "### 多品種的線性回歸\n", "\n", - "我們現在將使用與上述相同的程式碼,但這次將使用我們的單熱編碼品種作為輸入,而不是 `DayOfYear`。\n" + "我們現在將使用與上面相同的程式碼,但不使用 `DayOfYear`,改為使用我們的多品種one-hot編碼作為輸入:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "我們也可以以相同的方式嘗試使用其他特徵,並將它們與數值特徵結合,例如 `Month` 或 `DayOfYear`:\n" + "我們亦可嘗試以相同方式使用其他特徵,並將它們與數值特徵結合,例如 `Month` 或 `DayOfYear`:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 多項式回歸\n", + "### 多項式迴歸\n", "\n", - "多項式回歸也可以用於經過獨熱編碼的類別型特徵。訓練多項式回歸的程式碼基本上與我們之前看到的相同。\n" + "多項式迴歸亦可用於經過一熱編碼的類別特徵。訓練多項式迴歸的程式碼基本上與上述所見相同。\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**免責聲明**: \n本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。\n" + "---\n\n\n**免責聲明**: \n本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威資料。對於重要資訊,建議使用專業人工翻譯。我們不對因使用此翻譯而引起的任何誤解或誤譯承擔責任。\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-08-29T22:46:58+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "mo" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/zh-TW/.co-op-translator.json b/translations/zh-TW/.co-op-translator.json index 9879b445da..4e64cee66d 100644 --- a/translations/zh-TW/.co-op-translator.json +++ b/translations/zh-TW/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "zh-TW" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T09:53:31+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:35:46+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "zh-TW" }, @@ -90,8 +90,8 @@ "language_code": "zh-TW" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:20:06+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:35:22+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "zh-TW" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "zh-TW" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:32:06+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "zh-TW" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T09:43:09+00:00", diff --git a/translations/zh-TW/1-Introduction/4-techniques-of-ML/README.md b/translations/zh-TW/1-Introduction/4-techniques-of-ML/README.md index dfe7e7608b..949abbc2f2 100644 --- a/translations/zh-TW/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/zh-TW/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,126 @@ # 機器學習技術 -建立、使用和維護機器學習模型及其所使用的數據的過程,與許多其他開發工作流程有很大的不同。在本課中,我們將揭開這一過程的神秘面紗,並概述您需要了解的主要技術。您將學到: +建立、使用以及維護機器學習模型及其所使用的數據的過程,與許多其他開發工作流程有很大的不同。在本課程中,我們將揭開這個過程的神秘面紗,並概述您需要了解的主要技術。您將會: -- 從高層次理解支撐機器學習的過程。 -- 探索基本概念,例如「模型」、「預測」和「訓練數據」。 +- 高層次理解支撐機器學習的過程。 +- 探索基本概念,比如「模型」、「預測」和「訓練數據」。 -## [課前測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課前小測驗](https://ff-quizzes.netlify.app/en/ml/) -[![機器學習初學者 - 機器學習技術](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "機器學習初學者 - 機器學習技術") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 點擊上方圖片觀看一段簡短的影片,了解本課內容。 +> 🎥 點擊上方圖片觀看一個關於本課程的短影片。 ## 簡介 -從高層次來看,創建機器學習(ML)流程的技術包括以下幾個步驟: +在高層次上,創建機器學習(ML)流程的工作包含多個步驟: -1. **確定問題**。大多數機器學習流程始於提出一個無法通過簡單條件程序或基於規則的引擎回答的問題。這些問題通常圍繞基於數據集合進行的預測。 -2. **收集和準備數據**。為了回答您的問題,您需要數據。數據的質量以及有時候的數量,將決定您能多好地回答最初的問題。數據可視化是這一階段的重要部分。這一階段還包括將數據分為訓練組和測試組以構建模型。 -3. **選擇訓練方法**。根據您的問題和數據的性質,您需要選擇如何訓練模型以最佳反映數據並對其進行準確預測。這是機器學習過程中需要特定專業知識且通常需要大量實驗的部分。 -4. **訓練模型**。使用訓練數據,您將使用各種算法訓練模型以識別數據中的模式。模型可能會利用內部權重,這些權重可以調整以優先考慮數據的某些部分,從而構建更好的模型。 -5. **評估模型**。使用從未見過的數據(測試數據)來檢查模型的性能。 -6. **參數調整**。根據模型的性能,您可以使用不同的參數或變量重新進行該過程,這些參數或變量控制訓練模型時所用算法的行為。 -7. **預測**。使用新輸入測試模型的準確性。 +1. 決定問題。多數的機器學習流程從提出一個無法用簡單條件式程式碼或基於規則引擎回答的問題開始。這些問題通常圍繞基於大量數據的預測。 +2. 收集與準備數據。為了能回答您的問題,您需要數據。數據的品質,有時候還有數量,將決定您能多好地回答最初的問題。視覺化數據是此階段的重要方面。這個階段還包括將數據拆分為訓練集和測試集來建構模型。 +3. 選擇訓練方法。根據您的問題和數據的性質,您需要選擇如何訓練模型,才能最佳反映數據並做出準確預測。這是您的機器學習流程中需要專業知識且常常需要大量實驗的部分。 +4. 訓練模型。利用訓練數據,您將使用各種演算法訓練模型,以識別數據中的模式。模型可能會利用可調整的內部權重,讓模型更偏重數據中的某些部份,以建造更佳的模型。 +5. 評估模型。您使用以前未見過的數據(測試數據)來檢驗模型的表現。 +6. 參數調整。根據模型的表現,您可以使用不同的參數或變數重新執行流程,以調控用來訓練模型演算法的行為。 +7. 預測。使用新輸入資料測試模型的準確性。 ## 該問什麼問題 -計算機特別擅長發現數據中的隱藏模式。這對於研究人員來說非常有用,因為他們對某個領域有一些問題,而這些問題無法輕易通過創建基於條件的規則引擎來回答。例如,針對精算任務,數據科學家可能能夠構建手工規則來分析吸煙者與非吸煙者的死亡率。 +電腦特別擅長從數據中發掘隱藏的模式。這項功能對於研究者很有幫助,尤其是在許多問題無法輕易透過條件式規則引擎回答的領域。例如,在保險精算工作中,資料科學家或許能針對吸菸者和非吸菸者的死亡率訂定人工規則。 -然而,當許多其他變量被納入考量時,機器學習模型可能更有效地根據過去的健康歷史預測未來的死亡率。一個更令人愉快的例子可能是根據包括緯度、經度、氣候變化、靠近海洋的距離、噴流模式等數據,預測某地四月份的天氣。 +然而,當多個變數加入考量時,機器學習模型可能會更有效率地根據過去健康紀錄預測未來的死亡率。另一個較為愉快的例子是,根據包含緯度、經度、氣候變遷、近海距離、噴射氣流模式等數據,預測某地四月份的天氣。 -✅ 這份[簡報](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供了使用機器學習進行天氣分析的歷史視角。 +✅ 這份 [關於天氣模型的簡報檔](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) 提供了應用機器學習進行天氣分析的歷史觀點。 -## 構建前的任務 +## 建模前的準備工作 -在開始構建模型之前,您需要完成幾項任務。為了測試您的問題並根據模型的預測形成假設,您需要識別並配置幾個元素。 +在開始建構模型之前,有幾項工作您需要完成。為了測試您的問題並根據模型預測形成假設,您需要識別並配置幾個元素。 ### 數據 -為了能夠以任何確定性回答您的問題,您需要足夠數量且類型正確的數據。在這一點上,您需要完成以下兩件事: +為了能有一定信心回答您的問題,您需要大量並且類型正確的數據。此時您需要進行兩件事情: -- **收集數據**。記住上一課中關於數據分析公平性的內容,謹慎收集數據。注意數據的來源、可能存在的內在偏見,並記錄其來源。 -- **準備數據**。數據準備過程包括多個步驟。如果數據來自不同來源,您可能需要整理並標準化數據。您可以通過各種方法提高數據的質量和數量,例如將字符串轉換為數字(如我們在[聚類](../../5-Clustering/1-Visualize/README.md)中所做的)。您還可以基於原始數據生成新數據(如我們在[分類](../../4-Classification/1-Introduction/README.md)中所做的)。您可以清理和編輯數據(如我們在[Web 應用](../../3-Web-App/README.md)課程之前所做的)。最後,根據您的訓練技術,您可能還需要隨機化和打亂數據。 +- 收集數據。回想上一課關於數據分析公正性的部分,請謹慎收集數據。注意數據來源、可能存在的偏見,並記錄其來源。 +- 準備數據。數據準備的過程包含數個步驟。如果數據來自不同來源,您需要整合並正規化數據。您也能透過將字串轉為數字(如我們在[分群](../../5-Clustering/1-Visualize/README.md)課程所示)等方法改善數據的品質與數量。您可能還會基於原始數據產生新數據(如在[分類](../../4-Classification/1-Introduction/README.md)中示範)。將數據清理及編輯(如我們在[Web App](../../3-Web-App/README.md)課程前所做)也是重要步驟。最後,根據您的訓練技巧,可能還需要對數據做隨機化和打亂。 -✅ 在收集和處理數據後,花點時間檢查其形狀是否能幫助您解決預期問題。可能數據在您的任務中表現不佳,正如我們在[聚類](../../5-Clustering/1-Visualize/README.md)課程中發現的那樣! +✅ 收集及處理數據後,請確認其形態是否足以解決您要提問的問題。就在我們的[分群](../../5-Clustering/1-Visualize/README.md)課程中,我們會發現有時數據在任務中的表現不佳。 ### 特徵與目標 -[特徵](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是數據的一個可測量屬性。在許多數據集中,它表現為列標題,例如「日期」、「大小」或「顏色」。特徵變量通常在代碼中表示為 `X`,代表用於訓練模型的輸入變量。 +[特徵](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) 是數據中的可衡量屬性。在許多資料集中,它以欄位標題表達,如「日期」、「尺寸」或「顏色」。您的特徵變數通常用代碼中的 `X` 表示,代表用來訓練模型的輸入變數。 -目標是您試圖預測的事物。目標通常在代碼中表示為 `y`,代表您試圖從數據中回答的問題。例如:在十二月,哪種**顏色**的南瓜最便宜?在舊金山,哪些街區的房地產**價格**最好?有時目標也被稱為標籤屬性。 +目標是您嘗試預測的事物。目標變數通常代碼中為 `y`,代表您嘗試問數據的問題答案:十二月,哪種 顏色 的南瓜最便宜?在舊金山,哪些社區的房地產 價格 最佳?有時候目標也被稱為標籤屬性。 -### 選擇您的特徵變量 +### 選擇特徵變數 -🎓 **特徵選擇與特徵提取** 如何知道在構建模型時選擇哪個變量?您可能需要經歷特徵選擇或特徵提取的過程,以選擇最適合的變量來構建性能最佳的模型。然而,這兩者並不相同:「特徵提取通過原始特徵的函數創建新特徵,而特徵選擇則返回特徵的子集。」([來源](https://wikipedia.org/wiki/Feature_selection)) +🎓 特徵選擇與特徵提取:建構模型時,您如何知道該選擇哪個變數?您可能會透過特徵選擇或特徵提取過程選出最能提升模型效能的變數。然而兩者不同:「特徵提取是從原始特徵的函數中創造新特徵,而特徵選擇則是從原特徵中選出子集。」([來源](https://wikipedia.org/wiki/Feature_selection)) -### 可視化數據 +### 視覺化數據 -數據科學家工具箱中的一個重要方面是使用多種優秀庫(如 Seaborn 或 MatPlotLib)來可視化數據的能力。以可視化方式表示數據可能幫助您發現可以利用的隱藏相關性。您的可視化還可能幫助您發現偏見或數據不平衡(如我們在[分類](../../4-Classification/2-Classifiers-1/README.md)中發現的那樣)。 +資料科學家工具箱的重要一環是利用優秀的庫,例如 Seaborn 或 MatPlotLib,將數據視覺化。視覺化數據可能讓您發現潛藏的相關性,加以利用。您的視覺化也可能幫助發現偏見或數據不平衡(如[分類](../../4-Classification/2-Classifiers-1/README.md)課程所示)。 -### 分割數據集 +### 拆分資料集 -在訓練之前,您需要將數據集分為兩個或更多不等大小的部分,這些部分仍能很好地代表數據。 +在訓練之前,您需要將資料集拆分為兩個或以上不等大小的部分,且仍能良好代表數據。 -- **訓練集**。這部分數據集用於訓練模型。這部分數據通常佔原始數據集的大多數。 -- **測試集**。測試數據集是從原始數據中獨立提取的一組數據,用於確認構建的模型的性能。 -- **驗證集**。驗證集是一組較小的獨立數據,用於調整模型的超參數或架構,以改進模型。根據數據的大小和您提出的問題,您可能不需要構建這第三組數據(如我們在[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)中所述)。 +- 訓練集。這部分資料用來擬合模型並訓練,佔原始資料集大多數。 +- 測試集。測試資料集是獨立的資料,通常從原始資料中取得,用以驗證建立的模型效能。 +- 驗證集。驗證集是較小且獨立的樣本組,用來調整模型的超參數(或架構),以改善模型表現。根據資料大小和問題,您可能不需要建立此第三個資料集(如[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)課程中所說)。 -## 構建模型 +## 建立模型 -使用訓練數據,您的目標是使用各種算法構建一個模型,或者說是數據的統計表示,來**訓練**它。訓練模型使其接觸數據,並讓它對發現的模式進行假設、驗證並接受或拒絕。 +利用您的訓練資料,目標是使用各種演算法去訓練模型,或對數據建立統計表示。訓練模型的過程是讓模型接觸數據並對所發現、驗證且接受或拒絕的模式做出假設。 ### 決定訓練方法 -根據您的問題和數據的性質,您將選擇一種方法來訓練模型。通過瀏覽[Scikit-learn 的文檔](https://scikit-learn.org/stable/user_guide.html)(我們在本課程中使用的工具),您可以探索多種訓練模型的方法。根據您的經驗,您可能需要嘗試幾種不同的方法來構建最佳模型。您可能會經歷一個過程,數據科學家通過向模型提供未見過的數據來評估其性能,檢查準確性、偏差和其他可能降低質量的問題,並選擇最適合當前任務的訓練方法。 +根據您的問題與數據性質,您會選擇一種訓練方法。瀏覽 [Scikit-learn 的文件](https://scikit-learn.org/stable/user_guide.html) — 這門課程採用的工具 — 您能探索許多訓練模型的方式。依經驗不同,您可能需要嘗試數種方法以建構最佳模型。資料科學家通常會透過讓模型分析未見過的數據,檢查準確性、偏見與其他降低品質的問題,然後選擇最適合此任務的訓練方法。 -### 訓練模型 +### 模型訓練 -有了訓練數據,您可以開始「擬合」數據以創建模型。您會注意到,在許多機器學習庫中,您會看到代碼 `model.fit`——這時您將特徵變量作為值數組(通常是 `X`)以及目標變量(通常是 `y`)傳入。 +帶著訓練資料,您已準備好使用模型的 `fit` 方法擬合數據。您會注意到許多 ML 函式庫中有 `model.fit` 的程式碼 - 這時您會傳入特徵變數(通常為 `X` 的陣列)和目標變數(通常為 `y`)。 ### 評估模型 -一旦訓練過程完成(對於大型模型,可能需要多次迭代或「時期」),您將能夠使用測試數據來評估模型的質量,檢查其性能。這些測試數據是原始數據的一個子集,模型之前未曾分析過。您可以打印出一個關於模型質量的指標表。 +完成訓練過程後(大型模型可能需許多迭代或「epochs」),您能利用測試資料評估模型品質。測試資料是原始資料中模型之前未分析過的一部分。您可以列印出關於模型品質的評估指標表。 -🎓 **模型擬合** +🎓 模型擬合 -在機器學習的背景下,模型擬合指的是模型的底層函數在嘗試分析未熟悉的數據時的準確性。 +在機器學習中,模型擬合指的是模型基底函數用以嘗試分析未曾接觸數據時的精確度。 -🎓 **欠擬合**和**過擬合**是常見問題,會降低模型質量,因為模型要麼擬合得不夠好,要麼擬合得太好。這會導致模型的預測與訓練數據過於緊密或過於鬆散地對齊。過擬合模型對訓練數據的預測過於準確,因為它過於詳細地學習了數據的細節和噪聲。欠擬合模型則不夠準確,因為它既無法準確分析訓練數據,也無法準確分析未見過的數據。 +🎓 欠擬合過擬合 是常見問題,會降低模型品質;欠擬合是模型擬合不夠好,無法準確分析訓練資料或新資料;過擬合則是模型過度擬合訓練資料的細節與噪音,導致對訓練資料預測太精準。 +過擬合模型與訓練資料太過貼合,欠擬合模型則不夠準確。 -![過擬合模型](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> 信息圖由 [Jen Looper](https://twitter.com/jenlooper) 提供 +![overfitting model](../../../../translated_images/zh-TW/overfitting.1c132d92bfd93cb6.webp) +> 資料圖由 [Jen Looper](https://twitter.com/jenlooper) 製作 ## 參數調整 -完成初步訓練後,觀察模型的質量,並考慮通過調整其「超參數」來改進模型。閱讀更多相關過程的[文檔](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 +完成初步訓練後,觀察模型品質,並考慮透過調整「超參數」來改進。關於這個過程的更多內容,請參考[文件說明](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。 ## 預測 -這是您可以使用全新數據測試模型準確性的時刻。在「應用」機器學習設置中,當您構建用於生產的網頁資產時,這一過程可能涉及收集用戶輸入(例如按下按鈕)來設置變量並將其發送到模型進行推理或評估。 +這是您可使用全新數據來測試模型準確性的時刻。在「應用」機器學習場域,您可能會建置網頁資產以在生產環境使用模型,此時流程可能包含收集使用者輸入(例如按鈕點擊),將變數送入模型進行推論或評估。 -在這些課程中,您將學習如何使用這些步驟來準備、構建、測試、評估和預測——這些都是數據科學家的基本操作,隨著您在成為「全棧」機器學習工程師的旅程中不斷進步,您還會學到更多。 +在這些課程中,您將發現如何利用這些步驟準備、建構、測試、評估與預測 — 這些都是資料科學家的基本動作,並且更多,助您向「全端」機器學習工程師的旅程邁進。 --- ## 🚀挑戰 -繪製一個反映機器學習從業者步驟的流程圖。您認為自己目前處於該過程的哪一步?您預測在哪些方面會遇到困難?哪些部分對您來說似乎很簡單? +繪製一張反映機器學習從業人員步驟的流程圖。您認為自己目前處於哪個環節?您預測將會遇到哪裡的困難?哪個部分您覺得比較容易? -## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自學 -在線搜索數據科學家討論日常工作的訪談。這裡有一個[例子](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 +在線上搜尋資料科學家的訪談,了解他們的日常工作。這裡有[一則訪談](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 ## 作業 -[訪談一位數據科學家](assignment.md) +[訪談一位資料科學家](assignment.md) --- -**免責聲明**: -本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file + +**免責聲明**: +本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 所翻譯。雖然我們致力於準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威之來源。對於重要資訊,建議請專業人工翻譯。我們不對因使用本翻譯所引起之任何誤解或誤釋承擔責任。 + \ No newline at end of file diff --git a/translations/zh-TW/2-Regression/3-Linear/README.md b/translations/zh-TW/2-Regression/3-Linear/README.md index 1826146b86..72c5253cc8 100644 --- a/translations/zh-TW/2-Regression/3-Linear/README.md +++ b/translations/zh-TW/2-Regression/3-Linear/README.md @@ -1,96 +1,97 @@ -# 使用 Scikit-learn 建立迴歸模型:四種迴歸方式 +# 使用 Scikit-learn 建立迴歸模型:迴歸四種方法 -## 初學者說明 +## 初學者提醒 -線性迴歸用於我們想預測數值型結果(例如房價、溫度或銷售額)時。它透過尋找一條最能代表輸入特徵與輸出之間關係的直線來工作。 +當我們想要預測數值型的值(例如房價、溫度或銷售額)時,就會用到線性迴歸。 +線性迴歸透過尋找一條最佳代表輸入特徵與輸出之間關係的直線來工作。 -本課程重點放在理解概念,稍後會探討更進階的迴歸技術。 -![Linear vs polynomial regression infographic](../../../../translated_images/zh-TW/linear-polynomial.5523c7cb6576ccab.webp) -> 資訊圖由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 製作 +本課程將先著重了解概念,再探索更進階的迴歸技術。 +![線性與多項式迴歸資訊圖](../../../../translated_images/zh-TW/linear-polynomial.5523c7cb6576ccab.webp) +> 資訊圖表作者 [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [課前測驗](https://ff-quizzes.netlify.app/en/ml/) -> ### [本課程也提供 R 版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [本課程也提供 R 語言版本!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### 介紹 -到目前為止,你已經了解了迴歸是什麼,並使用了本課程中將持續使用的南瓜價格資料集進行了範例資料的探索。你也使用 Matplotlib 進行了視覺化。 +到目前為止,你已經使用我們將在本課中持續使用的南瓜價格資料集探索了迴歸是什麼。你也使用 Matplotlib 視覺化了資料。 -現在,你已經準備好更深入了解機器學習的迴歸。雖然視覺化可以幫助你理解資料,但機器學習的真正強大之處在於_訓練模型_。模型在歷史資料上訓練,能自動捕捉資料間的相依關係,並能為模型沒見過的新資料做出預測。 +現在你已準備好深入探討機器學習中的迴歸。雖然視覺化幫助理解資料,機器學習的真正強大在於_訓練模型_。模型會基於歷史資料自動捕捉資料依賴關係,並允許你對模型未曾見過的新資料進行預測。 -本課將學習兩種迴歸:_基本線性迴歸_與_多項式迴歸_,並了解這些技術背後的一些數學原理。這些模型將允許我們依據不同的輸入資料預測南瓜價格。 +本課將進一步介紹兩種迴歸:_基本線性迴歸_和_多項式迴歸_,並說明這些技術背後的部分數學理論。這些模型將讓我們能依據不同的輸入資料預測南瓜價格。 -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![初學者機器學習 - 理解線性迴歸](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初學者機器學習 - 理解線性迴歸") -> 🎥 點擊上方圖片看關於線性迴歸的短影片概述。 +> 🎥 點擊上方圖片觀看線性迴歸簡介短片。 -> 在整個課程中,我們假設數學知識最小,並致力於讓來自其他領域的學生也能理解,因此請留意筆記、🧮 註解、圖表及其他學習工具以協助理解。 +> 在整個課程中,我們假設數學知識最低限度,並致力於讓來自不同領域的學生都能理解,因此請留意注記、🧮 數學提示、圖解與其他學習工具。 ### 先備知識 -你現在應該已熟悉我們所研究的南瓜資料結構。資料已在本課的 _notebook.ipynb_ 檔中預先載入並清理過。該檔案中,南瓜價格已按每蒲式耳顯示。請確保你能在 Visual Studio Code 的 kernel 中執行這些筆記本。 +你現在應該對我們檢視的南瓜資料結構有所熟悉。本課將在 _notebook.ipynb_ 檔案中預先載入與預先清理該資料。此檔中,南瓜價格會以每蒲式耳價格顯示在新的資料框中。請確保你能在 Visual Studio Code 的 kernel 中執行這些 notebooks。 -### 準備工作 +### 準備 -提醒你,我們載入此資料是為了提出問題: +提醒你,我們載入這些資料是為了向它提出問題: -- 什麼時候買南瓜最划算? -- 一箱迷你南瓜的大致價格是多少? -- 我該買半蒲式耳籃裝還是 1 1/9 蒲式耳箱裝? -讓我們繼續深入這份資料。 +- 何時是買南瓜的最佳時機? +- 我能預期迷你南瓜整箱的價格是多少? +- 我應該買半蒲式耳籃裝,還是 1又1/9蒲式耳箱裝? +讓我們繼續探究這些資料。 -上一課中,你建了一個 Pandas 資料框,並填入原始資料部分內容,統一以蒲式耳價格化。這樣你只蒐集到約 400 筆資料,且只有秋季月份。 +上一課你建立了 Pandas 資料框,並使用了原始資料部分,只蒐集了秋季月份且標準化至每蒲式耳價格,因而僅取得約 400 筆資料。 -看看本課附帶筆記本預先載入的資料。資料已準備好,並繪製了最初的散點圖以顯示月份資料。也許我們可以透過更進一步清理,獲得關於資料性質的更多細節。 +請參考本課附帶 notebook 中預載的資料。資料已預先載入並繪出初始散點圖以顯示月份資料。也許透過更細部的清理,可以更了解該資料特性。 ## 線性迴歸線 -如你在第一課學習的,線性迴歸的目標是能夠繪製出一條線,用以: +正如你在第一課所學,線性迴歸的目標是繪製一條直線,以: -- 顯示變數關係。展示變數間的關聯 -- 做出預測。準確預測新數據點相較於該線的位置 +- 展示變數關聯性:展示變數間的關係 +- 做出預測:準確預測新資料點相對於該條線的位置 -通常使用最小平方回歸繪製這類線條。名詞「最小平方」指的是我們在模型中將誤差總和降到最低的過程。對每個資料點,我們測量該點與回歸線間的垂直距離(稱為殘差)。 +最小平方法迴歸 會繪製這類線。術語「最小平方法」指的是我們透過最小化模型中總誤差的過程。對每個資料點,我們測量實際點和迴歸線間的垂直距離(稱為殘差)。 -我們會將這些距離平方的原因有兩個: +這些距離的平方有兩大理由: -1. 大小勝於方向:希望把誤差 -5 與 +5 視為同樣大小,平方能將所有數值轉為正值。 +1. 誤差大小重於方向:我們希望將-5與+5的誤差視同。平方會把所有值變為正數。 -2. 重懲離群值:平方對較大誤差給予更多權重,促使線條更接近偏離較遠的點。 +2. 懲罰離群點:平方會給予較大的誤差更高權重,迫使直線貼近遠離的點。 -接著,我們將所有平方值相加。目標是找到使這個總和最小的那條線,因此稱為「最小平方」。 +接著加總所有平方值。我們目標是找出使此總和最小的那條直線,故稱「最小平方法」。 -> **🧮 給我數學公式** +> **🧮 數學說明** > -> 這條稱為_最佳擬合線_的直線可以透過[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: +> 此直線稱為_最佳擬合線_,可用[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: > > ``` > Y = a + bX > ``` > -> `X` 是「自變數」,`Y` 是「應變數」。直線的斜率為 `b`,`a` 是截距,指當 `X = 0` 時的 `Y` 值。 +> `X` 為「解釋變數」,`Y` 為「依賴變數」。直線斜率為 `b`,`a` 是截距,指當 `X=0` 時 `Y` 的值。 > >![計算斜率](../../../../translated_images/zh-TW/slope.f3c9d5910ddbfcf9.webp) > -> 首先計算斜率 `b`。資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作 +> 首先計算斜率 `b`。資訊圖表作者 [Jen Looper](https://twitter.com/jenlooper) > -> 換句話說,回到我們南瓜資料的初始問題:「按月份預測南瓜每蒲式耳價格」,`X` 代表價格,`Y` 代表銷售月份。 +> 換句話說,針對我們南瓜資料的問題:「依月份預測每蒲式耳南瓜價格」,`X` 代表價格,`Y` 代表銷售月份。 > >![完成方程式](../../../../translated_images/zh-TW/calculation.a209813050a1ddb1.webp) > -> 計算 Y 值。如果你付了約 4 美元,那一定是四月!資訊圖由 [Jen Looper](https://twitter.com/jenlooper) 製作 +> 計算 Y 的值。如果價格約為 4 美元,那應該是四月!資訊圖表作者 [Jen Looper](https://twitter.com/jenlooper) > -> 計算直線的公式必須呈現斜率,同時也取決於截距,即當 `X=0` 時 `Y` 落在哪裡。 +> 計算該直線的數學公式必須反映斜率,且斜率依賴截距,即當 `X=0` 時 `Y` 的位置。 > -> 你可以參考 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站中這些值的計算方法。也可利用 [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) 觀察數值如何影響直線。 +> 你可至 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站查看這些值的計算方法,亦可使用[此最小平方法計算器](https://www.mathsisfun.com/data/least-squares-calculator.html)觀看數字值如何影響直線。 ## 相關性 -另一個要理解的概念是給定 X 和 Y 變數之間的相關係數。利用散點圖可快速視覺化此係數。若數據點呈現整齊的線狀排列,代表高度相關;若散佈在 X 與 Y 間各處,則相關性低。 +另一句需要了解的術語是給定 X 和 Y 變數間的相關係數。使用散點圖,你可直觀了解此係數。資料點排列整齊成一條線的散點圖代表高度相關,而資料點四散無序的散點圖則相關性較低。 -良好的線性迴歸模型會在最小平方迴歸線中擁有高(較接近 1)相關係數。 +良好的線性迴歸模型將具有用最小平方法計算出的較高(接近 1 而非 0)的相關係數。 -✅ 執行本課附帶的筆記本,觀察「月份對價格」的散點圖。根據你對散點圖的視覺理解,南瓜銷售中月份和價格的相關性是高還是低?若改用較細緻的衡量標準,像是一年中的第幾天(即從年初算起的天數)情況會有改變嗎? +✅ 執行本課附帶的 notebook,觀察「月份對價格」的散點圖。依你對散點圖的視覺判斷,月份與南瓜價格關聯性是高還是低?如果改用更精細的時間測量(例如一年中某天,表示自年初以來的天數)相關性是否改變? -以下程式碼假設資料已清理,並取得名為 `new_pumpkins` 的資料框,如下所示: +以下程式中,我們假設已清理資料,並取得名為 `new_pumpkins` 的資料框,格式類似如下: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -100,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> 清理資料的程式碼可在 [`notebook.ipynb`](notebook.ipynb) 找到。我們執行了與前一課相同的清理步驟,並使用下列表達式計算 `DayOfYear` 欄位: +> 清理資料的程式碼請見 [`notebook.ipynb`](notebook.ipynb)。我們已執行和上一課相同的清理步驟,並用以下表達式計算了 `DayOfYear` 欄位: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -了解線性迴歸的數學後,接著建立一個迴歸模型,看看是否能預測哪種南瓜包裝會有最佳價格。想在南瓜節使用南瓜的人,可能想利用這些資訊優化購買方案。 +現在你了解線性迴歸背後的數學,我們來建立一個迴歸模型,看看是否能預測哪種包裝的南瓜價格最佳。買南瓜裝飾節慶專用的人可能會希望藉此資訊優化他們的購買配置。 -## 探索相關性 +## 尋找相關性 -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![初學者機器學習 - 尋找相關性:線性迴歸的關鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初學者機器學習 - 尋找相關性:線性迴歸的關鍵") -> 🎥 點擊上方圖片看相關性的短影片介紹。 +> 🎥 點擊上方圖片觀看相關性簡介短片。 -你可能已在前一課看到,不同月份的平均價格大致如下: +從上一課你可能看過不同月份的平均價格如下: -Average price by month +依月份顯示的平均價格 -這暗示應該存在某種相關關係,我們可以嘗試用線性迴歸模型來預測 `Month` 與 `Price`,或 `DayOfYear` 與 `Price` 間的關係。下方散點圖展示後者: +這暗示應該存在某種相關性,我們可以嘗試用線性迴歸模型預測`Month`與`Price`、或`DayOfYear`與`Price`的關係。以下是後者的散點圖: -Scatter plot of Price vs. Day of Year +價格對應一年中的天數散點圖 -來看看我們用 `corr` 函數測試相關性結果: +我們來用 `corr` 函數檢視相關性: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -「月份」的相關係數大約是 -0.15,「年份中的某天」約是 -0.17,相關性看起來不大,不過可能還存在其他重要關係。似乎價格分成幾個群集,對應著不同南瓜品種。為驗證此假設,我們用不同顏色繪製南瓜分類。傳入 `ax` 參數給 `scatter` 函數,把所有點繪在同一張圖: +似乎相關係數很小,`Month` 為 -0.15,`DayOfYear` 為 -0.17,但可能存在另一重要關係。看起來不同南瓜品種的價格形成了不同群集。為驗證此假設,我們將用不同顏色繪製每個南瓜類別。並透過傳入 `ax` 參數給 `scatter` 函數,將所有點繪在同一圖表: ```python ax=None @@ -139,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +價格對應一年中的天數並以顏色分品種散點圖 -調查顯示品種對價格整體影響遠大於銷售日期。條形圖更明顯說明: +調查顯示品種比銷售日期對價格影響更大。這點可見於長條圖: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +以南瓜品種為分類的價格長條圖 -暫且只看「派用型」南瓜,觀察日期對價格的影響: +暫時我們只聚焦於「派型」南瓜,觀察日期對價格的影響: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +價格對應一年中的天數(派型南瓜)的散點圖 -此時如果用 `corr` 計算 `Price` 與 `DayOfYear` 的相關係數,會是約 `-0.27`,代表訓練預測模型是可行的。 +若計算 `Price` 與 `DayOfYear` 的相關係數,結果約為 `-0.27`——這表示訓練預測模型是合理的。 -> 在訓練線性迴歸模型前,確保數據乾淨很重要。線性迴歸對缺失值敏感,通常會把空值剔除: +> 在訓練線性迴歸模型之前,請務必確保資料乾淨。線性迴歸對缺失值較不穩定,因此刪除所有空值較為適宜: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -另一種做法是用對應欄的平均值填補缺失值。 +另一種方法是用對應欄位的平均值取代空值。 ## 簡單線性迴歸 -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![初學者機器學習 - 使用 Scikit-learn 的線性與多項式迴歸](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初學者機器學習 - 使用 Scikit-learn 的線性與多項式迴歸") -> 🎥 點擊上方圖片看簡單線性及多項式迴歸的短影片介紹。 +> 🎥 點擊上方圖片觀看線性與多項式迴歸簡介短片。 -我們將用 **Scikit-learn** 函式庫訓練線性迴歸模型。 +我們使用 **Scikit-learn** 函式庫來訓練線性迴歸模型。 ```python from sklearn.linear_model import LinearRegression @@ -182,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -起初,我們將輸入值(特徵)與期望輸出(標籤)分別放入兩個 numpy 陣列: +我們先把輸入值(特徵)與期望輸出(標籤)分開,放入獨立的 numpy 陣列: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> 注意我們對輸入資料做了 `reshape`,讓線性迴歸套件正確識別。它預期輸入為 2 維陣列,每列為一組特徵向量。此處只有一個輸入,故需求是 N×1 形狀,其中 N 是資料集大小。 +> 注意需對輸入資料做 `reshape`,讓線性迴歸套件正確理解。線性迴歸期望輸入為二維陣列,陣列每列為一組輸入特徵向量。我們此例僅有單一輸入,故需為 N×1 的矩陣,其中 N 是資料集大小。 -接下來,我們要將資料分割成訓練集和測試集,以利驗證模型表現: +接著,我們要將資料分割成訓練集與測試集,以便訓練後驗證模型: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -最後,訓練線性迴歸モデル僅需兩行程式碼。我們先建立 `LinearRegression` 物件,再用 `fit` 方法對資料進行擬合: +最後,訓練線性迴歸模型僅要兩行程式。定義 `LinearRegression` 物件,並用 `fit` 方法對資料做擬合: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` 物件在 `fit` 後包含了回歸的所有係數,可以使用 `.coef_` 屬性存取。在我們這個例子中,只有一個係數,約為 `-0.017`。這意味著價格似乎隨時間略微下降,但幅度不大,大約是每天下降兩分錢。我們也可以使用 `lin_reg.intercept_` 存取回歸線與 Y 軸的交點——在我們的例子中會約為 `21`,代表年初的價格。 +`LinearRegression` 物件在完成 `fit` 後,會包含迴歸的所有係數,可以透過 `.coef_` 屬性取得。在我們的例子中,只有一個係數,該係數應該約為 `-0.017`。這表示價格似乎隨時間略微下降,但幅度不大,約為每天 2 分錢。我們也可以透過 `lin_reg.intercept_` 取得迴歸線與 Y 軸的截距點——在我們的例子中,約為 `21`,代表一年的開始時的價格。 -為了檢視模型的準確性,我們可以在測試資料集上預測價格,然後衡量預測值與實際值的接近程度。這可以透過均方根誤差(RMSE)指標完成,其為所有實際值與預測值平方差的平均數的平方根。 +為了檢視我們模型的準確度,我們可以在測試資料集上預測價格,然後衡量預測值與期望值的接近程度。這可以使用均方根誤差 (RMSE) 指標來完成,它是期望值與預測值所有平方差的平均值的平方根。 ```python pred = lin_reg.predict(X_test) @@ -215,15 +216,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -我們的誤差約為 2 點,約佔 ~17%。不是非常理想。模型品質的另一指標是 判定係數,可以用以下方法取得: +我們的誤差約為 2 點,約佔 17%。表現不是很好。另一個模型品質指標是決定係數,可以這樣取得: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - 若值為 0,表示模型未考慮輸入資料,表現為 最差的線性預測器,即結果的平均值。值為 1 表示可以完美預測所有目標輸出。在我們的例子中,判定係數約為 0.06,屬於相當低。 -我們也可以繪製測試資料與回歸線,以更清楚觀看回歸效果: +如果該值為 0,表示模型不考慮輸入資料,並以最差線性預測器運作,簡單來說就是結果的平均值。值為 1 表示我們能完全準確預測所有期望輸出。在我們的例子中,決定係數約為 0.06,十分低。 + +我們也可以將測試資料與迴歸線一起繪圖,來更好地觀察迴歸結果: ```python plt.scatter(X_test,y_test) @@ -232,19 +234,19 @@ plt.plot(X_test,pred) Linear regression -## 多項式回歸(Polynomial Regression) +## 多項式迴歸 -另一類線性回歸是多項式回歸。雖然變數間有時呈線性關係——例如南瓜體積越大,價格越高——有時這些關係無法用平面或直線來描繪。 +另一種線性迴歸稱為多項式迴歸。有時候變數間是線性關係——例如南瓜的體積越大,價格越高,但有時這種關係無法用平面或直線來描述。 -✅ 這裡有[更多的例子](https://online.stat.psu.edu/stat501/lesson/9/9.8)適用於多項式回歸的資料 +✅ 這裡有[更多範例](https://online.stat.psu.edu/stat501/lesson/9/9.8)適合使用多項式迴歸的資料 -再看一次日期與價格的關係。這個散佈圖看起來一定得用直線分析嗎?價格不會波動嗎?此時可以嘗試多項式回歸。 +再看一次日期與價格的關係。這個散佈圖看起來一定要用直線來分析嗎?價格不會波動的嗎?在這種情況下,你可以嘗試多項式迴歸。 -✅ 多項式是可能包含一個或多個變數及係數的數學表達式 +✅ 多項式是可能含有一個或多個變數與係數的數學表達式 -多項式回歸會產生曲線以更好擬合非線性資料。我們若在輸入資料中加入平方的 `DayOfYear` 變數,應該能用拋物線曲線擬合資料,且該曲線在某年內的某點有極小值。 +多項式迴歸會創建曲線,以更好地擬合非線性資料。在我們的例子中,如果將 `DayOfYear` 的平方加入輸入資料,我們應該可以用拋物線擬合數據,該曲線會在年度某個點達到最低點。 -Scikit-learn 提供了方便的 [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) 將不同的資料處理步驟串聯起來。**pipeline** 是一連串的 **estimators**。在我們例子中,建立一個首先加入多項式特徵,接著訓練回歸模型的 pipeline: +Scikit-learn 提供了一個方便的[pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)用來串接不同的資料處理步驟。**pipeline** 是一連串的估計器。在本例中,我們將建立一個 pipeline,先加入多項式特徵,再訓練迴歸: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -使用 `PolynomialFeatures(2)` 意味著會包含所有二階多項式。我們的例子為 `DayOfYear`2,如果有兩個輸入變數 X 與 Y,會加入 X2、XY 與 Y2。當然也可以用更高階多項式。 +使用 `PolynomialFeatures(2)` 表示我們將包含所有二次多項式特徵。對於本例,就是 `DayOfYear`2,但若有兩個輸入變數 X 和 Y,則包含 X2、XY 及 Y2。若需要,也可使用更高階多項式。 + +pipeline 使用方式跟原本的 `LinearRegression` 物件相同,也就是可以 `fit` pipeline,然後用 `predict` 取得預測結果: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +為了繪製平滑的近似曲線,我們使用 `np.linspace` 創建均勻的輸入值範圍,而不是直接在無序的測試資料上繪圖(後者會產生鋸齒狀線條): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -Pipeline 使用方式與原本的 `LinearRegression` 物件相同,可以 `fit` 來訓練,然後用 `predict` 預測。下圖展示測試資料與擬合曲線: +下圖顯示測試資料和近似曲線: Polynomial regression -使用多項式回歸,我們能獲得稍微更低的 MSE 與更高的判定係數,但差異不大。還是要加入其他特徵考量! +使用多項式迴歸,我們可獲得稍低的 RMSE 與較高的決定係數,但改進不大。我們還需要考慮其他特徵! -> 你可以看到南瓜價格的最低點出現在萬聖節左右。你如何解釋這個現象? +> 你可以看到南瓜價格最低點大約出現在萬聖節附近。你怎麼解釋這個現象? -🎃 恭喜,你已建立了可協助預測派用南瓜價格的模型。你可以用同樣流程為所有南瓜種類建立模型,但會很繁瑣。接著讓我們學習如何將南瓜品種納入模型中! +🎃 恭喜,你已經建立了一個能預測派形南瓜價格的模型。你或許可以用相同程序來處理所有南瓜品種,不過那很繁瑣。接著讓我們學習如何在模型中考量南瓜品種! -## 類別變數(Categorical Features) +## 類別特徵 -理想狀況下,我們希望能用同一個模型預測不同南瓜品種的價格。但 `Variety` 欄位與 `Month` 等欄位不同,因為它包含非數值資料。這種欄位稱為 **類別變數(categorical)**。 +理想情況下,我們希望用相同模型預測不同南瓜品種的價格。然而 `Variety` 欄位有別於像 `Month` 這類的欄位,因為它包含非數字值。這類欄位稱為類別特徵。 [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 點擊上方圖片,可觀看使用類別特徵的簡短說明影片。 +> 🎥 點擊上方圖片可觀看關於如何使用類別特徵的短影片。 -這裡展示了平均價格與品種的關係: +這裡可以看到平均價格如何依品種而異: Average price by variety -要考慮品種,我們必須先將它轉成數字形式,或叫做編碼。有幾種方法: +要考慮品種,我們首先需要將其轉為數值形式,也就是編碼。有幾種方法: -* 簡單的數字編碼會建立不同品種的編號表,然後用編號替換品種名稱。對線性回歸來說這不佳,因為數字編碼會被視為數值並乘以係數,造成明顯的非線性關係,尤其即便我們嘗試排序編號仍然不合適。 -* One-hot 編碼會把 `Variety` 欄拆成四個欄位,分別代表四種品種。每欄包含 1 或 0,表示該行是否屬於此品種。線性回歸有四個係數,各自代表各品種的“基本價格”或“額外價格”。 +* 簡單的數字編碼會建立一張品種表,並將品種名稱替換為表中的索引。在線性迴歸中這不是最佳方案,因為線性迴歸使用索引的數值,乘以某個係數後再加入結果。以我們的例子來說,品種索引與價格的關係明顯非線性,即便我們確保索引依某個有意義的順序排列亦然。 +* **獨熱編碼 (One-hot encoding)** 會將 `Variety` 欄替換成 4 個欄位,分別對應每個品種。每個欄位若該行屬於對應品種,值為 `1`,否則為 `0`。這表示線性迴歸中會有四個係數,分別代表各品種的「基本價格」(或可理解為「額外價格」)。 -以下程式碼示範如何對品種做 one-hot 編碼: +以下程式碼示範如何將品種獨熱編碼: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -301,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -若要用 one-hot 編碼的品種訓練線性回歸,只要正確建立 `X` 和 `y` 即可: +要用獨熱編碼品種作為輸入訓練線性迴歸,只要正確初始化 `X` 與 `y` 資料即可: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -其餘程式碼與之前線性回歸訓練過程相同。嘗試執行後會看到均方誤差大致相同,但判定係數明顯提升到約 77%。若要更準確的預測,可以將更多類別特徵和數值特徵(如 `Month` 或 `DayOfYear`)納入。用 `join` 合併成一個大特徵陣列: +其餘程式碼同前面訓練線性迴歸時使用的。如果你嘗試執行,會發現均方誤差差不多,但決定係數大幅提升至約 77%。要讓預測更準確,我們能考慮更多類別特徵和數值特徵,例如 `Month` 或 `DayOfYear`。若要得到一個包含所有特徵的大陣列,可以用 `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,60 +342,60 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -這裡也將 `City` 與 `Package` 類型納入,得到的 MSE 降至 2.84(10%),判定係數提升至 0.94! +這裡我們還加入了 `City` 和包裝方式 `Package`,結果 RMSE 降至 2.84(10.5%),決定係數達到 0.94! -## 綜合建模 +## 組合應用 -為了取得最佳模型,我們可以將前面例子中合併(one-hot 編碼類別 + 數值)資料與多項式回歸結合。以下是完整範例程式碼供您方便使用: +為了打造最佳模型,我們可以將上述例子的組合數據(獨熱編碼類別加上數值特徵)與多項式迴歸結合。以下是完整程式碼: ```python -# 設置訓練資料 +# 設置訓練數據 X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# 進行訓練-測試資料切割 +# 進行訓練測試分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# 設定並訓練流程 +# 設置並訓練流程 pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# 預測測試資料的結果 +# 預測測試數據結果 pred = pipeline.predict(X_test) -# 計算均方誤差和決定係數 -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# 計算均方根誤差和決定係數 +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -這會讓我們得到接近 97% 的判定係數,以及 MSE = 2.23(約 8% 預測誤差)。 +這會給出幾乎 97% 的最佳決定係數,以及 2.23 的 RMSE(約 8% 預測誤差)。 -| 模型 | MSE | 判定係數 | -|-------|-----|----------------| +| 模型 | RMSE | 決定係數 | +|-------|-----|---------------| | `DayOfYear` 線性 | 2.77 (17.2%) | 0.07 | | `DayOfYear` 多項式 | 2.73 (17.0%) | 0.08 | | `Variety` 線性 | 5.24 (19.7%) | 0.77 | -| 所有特徵 線性 | 2.84 (10.5%) | 0.94 | -| 所有特徵 多項式 | 2.23 (8.25%) | 0.97 | +| 全特徵 線性 | 2.84 (10.5%) | 0.94 | +| 全特徵 多項式 | 2.23 (8.25%) | 0.97 | -🏆 做得好!你在這一課建立了四個迴歸模型,並將模型品質提升到 97%。在迴歸的最後一節,我們會學習羅吉斯迴歸(Logistic Regression)來判斷類別。 +🏆 表現非常好!你在一堂課中建立了四個迴歸模型,並將模型質量提升到 97%。在迴歸的最後一個章節,你將學習邏輯迴歸,用來判斷類別。 --- ## 🚀挑戰 -在此筆記本中測試不同變數,看看其相關度與模型準確率的關係。 +在這個筆記本中測試多個不同變數,觀察相關性與模型準確度間的關係。 -## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後小考](https://ff-quizzes.netlify.app/en/ml/) ## 複習與自學 -本課程學習了線性回歸。還有其他重要的迴歸類型,像是逐步回歸、Ridge、Lasso 與 Elasticnet 技術。推薦研讀的優良課程為 [史丹佛統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +這堂課我們學習了線性迴歸。還有其他重要的迴歸類型。請閱讀 Stepwise、Ridge、Lasso 與 Elasticnet 技術。推薦的進階課程是[史丹佛大學統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## 作業 @@ -381,5 +405,5 @@ print('Model determination: ', score) **免責聲明**: -本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保翻譯準確,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。因使用本翻譯所產生之任何誤解或誤用,我們概不負責。 +本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的本地語言版本應視為權威來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用本翻譯所產生的任何誤解或曲解負責。 \ No newline at end of file diff --git a/translations/zh-TW/2-Regression/3-Linear/solution/notebook.ipynb b/translations/zh-TW/2-Regression/3-Linear/solution/notebook.ipynb index e2ce69f9fa..8639df3f01 100644 --- a/translations/zh-TW/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/zh-TW/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 南瓜定價的線性回歸與多項式回歸 - 第三課\n", + "## 南瓜定價的線性與多項式迴歸 - 第三課\n", "\n", - "載入所需的庫和數據集。將數據轉換為包含部分數據的數據框:\n", + "載入所需的函式庫和資料集。將資料轉換為只包含子集的資料框:\n", "\n", - "- 僅選取按蒲式耳定價的南瓜\n", + "- 只取以蒲式耳計價的南瓜\n", "- 將日期轉換為月份\n", - "- 計算價格為高價與低價的平均值\n", - "- 將價格轉換為反映按蒲式耳數量定價\n" + "- 計算價格為最高價和最低價的平均值\n", + "- 將價格轉換為反映每蒲式耳數量的價格\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "散佈圖提醒我們,我們只有從八月到十二月的月份數據。我們可能需要更多數據才能以線性方式得出結論。\n" + "散佈圖提醒我們,我們只有從八月到十二月的月份資料。我們可能需要更多資料,才能以線性方式得出結論。\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "讓我們來看看是否存在相關性:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "看起來相關性相當小,但存在一些其他更重要的關係——因為上圖中的價格點似乎有幾個明顯的群集。讓我們製作一個圖表來顯示不同的南瓜品種:\n" + "看起來相關性相當小,但有一些其他更重要的關係——因為上圖中的價格點似乎有幾個明顯的群聚。讓我們來畫一張圖,展示不同的南瓜品種:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "暫時先集中注意力於一種品種——派類型。\n" + ] }, { "cell_type": "code", @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "可以從線性回歸係數中確定直線的斜率:\n" + "線的斜率可以從線性迴歸係數中決定:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### 多項式回歸\n", "\n", - "有時候,特徵與結果之間的關係本質上是非線性的。例如,南瓜的價格可能在冬季(月份=1,2)較高,然後在夏季(月份=5-7)下降,接著再次上漲。線性回歸無法準確捕捉這種關係。\n", + "有時候特徵與結果之間的關係本質上是非線性的。例如,南瓜的價格可能在冬季(月份=1,2)很高,然後在夏季(月份=5-7)下降,接著又回升。線性回歸無法準確擬合這種關係。\n", "\n", - "在這種情況下,我們可以考慮添加額外的特徵。一個簡單的方法是使用來自輸入特徵的多項式,這樣就會形成**多項式回歸**。在 Scikit Learn 中,我們可以使用管道自動預先計算多項式特徵:\n" + "在這種情況下,我們可以考慮添加額外的特徵。一個簡單的方法是使用輸入特徵的多項式,這將產生多項式回歸。在 Scikit Learn 中,我們可以使用管線自動預先計算多項式特徵:\n" ] }, { @@ -777,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 編碼品種\n", + "### 編碼種類\n", "\n", - "在理想的情況下,我們希望能夠使用相同的模型來預測不同南瓜品種的價格。為了考慮品種的影響,我們首先需要將其轉換為數字形式,或者說進行**編碼**。我們可以採用以下幾種方法:\n", + "在理想情況下,我們希望能夠使用相同的模型來預測不同南瓜品種的價格。為了將品種納入考量,我們首先需要將其轉換為數值形式,或稱為編碼。有幾種方法可以做到這點:\n", "\n", - "* 簡單的數字編碼,這種方法會建立一個不同品種的對應表,然後用該表中的索引來替換品種名稱。這對於線性回歸來說並不是最好的方法,因為線性回歸會考慮索引的數值,而這些數值很可能與價格之間沒有數值上的相關性。\n", - "* One-hot 編碼,這種方法會用 4 個不同的列來替換 `Variety` 列,每個品種對應一列。如果某一行屬於某個品種,則該列的值為 1,否則為 0。\n", + "* 簡單的數值編碼會建立一個不同品種的表格,然後用該表格中的索引來取代品種名稱。這對線性回歸來說不是最佳做法,因為線性回歸會將索引的數值納入考量,而數值很可能與價格的數值沒有關聯。\n", + "* 一次性編碼(One-hot encoding),會用4個不同的欄位來取代 `Variety` 欄位,每個欄位對應一個品種,對於該筆資料是否屬於該品種則用1或0表示。\n", "\n", - "以下的程式碼展示了我們如何對品種進行 One-hot 編碼:\n" + "以下程式碼示範了我們如何對品種進行一次性編碼:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 品種的線性回歸\n", + "### 以品種進行線性回歸\n", "\n", - "我們現在將使用與上述相同的程式碼,但這次將使用我們的單熱編碼品種作為輸入,而不是 `DayOfYear`:\n" + "我們現在將使用與上述相同的程式碼,但輸入不再是 `DayOfYear`,而是我們用一熱編碼(one-hot-encoded)的品種:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "我們也可以以相同的方式嘗試使用其他特徵,並將它們與數值特徵結合,例如 `Month` 或 `DayOfYear`:\n" + "我們也可以嘗試以相同方式使用其他特徵,並將它們與數值特徵結合,例如 `Month` 或 `DayOfYear`:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 多項式回歸\n", + "### 多項式迴歸\n", "\n", - "多項式回歸也可以用於經過獨熱編碼的分類特徵。訓練多項式回歸的程式碼基本上與我們之前看到的相同。\n" + "多項式迴歸也可以用於經過獨熱編碼的類別特徵。訓練多項式迴歸的程式碼基本上與我們上面看到的相同。\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**免責聲明**: \n本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們致力於提供準確的翻譯,請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。\n" + "---\n\n\n**免責聲明**: \n本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保準確性,但請注意自動翻譯可能包含錯誤或不精確之處。原始母語文件應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或曲解承擔責任。\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-03T19:19:14+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "tw" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 From a4a49aa873a6cb2f9189aaea584204d9d043eab7 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Sun, 26 Apr 2026 20:43:52 +0000 Subject: [PATCH 19/19] chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes) --- translations/hi/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 104 +++--- .../hi/2-Regression/3-Linear/README.md | 296 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 75 ++--- translations/ja/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 120 +++---- .../ja/2-Regression/3-Linear/README.md | 305 +++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++-- translations/ko/.co-op-translator.json | 14 +- .../4-techniques-of-ML/README.md | 110 +++---- .../ko/2-Regression/3-Linear/README.md | 306 ++++++++++-------- .../3-Linear/solution/notebook.ipynb | 69 ++-- 12 files changed, 799 insertions(+), 697 deletions(-) diff --git a/translations/hi/.co-op-translator.json b/translations/hi/.co-op-translator.json index bb88f54606..092cfce117 100644 --- a/translations/hi/.co-op-translator.json +++ b/translations/hi/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "hi" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T10:23:54+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:43:41+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "hi" }, @@ -90,8 +90,8 @@ "language_code": "hi" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:46:03+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:43:13+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "hi" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "hi" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:38:37+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "hi" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T10:14:06+00:00", diff --git a/translations/hi/1-Introduction/4-techniques-of-ML/README.md b/translations/hi/1-Introduction/4-techniques-of-ML/README.md index 4f86f37840..a7ca80a847 100644 --- a/translations/hi/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/hi/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # मशीन लर्निंग की तकनीकें -मशीन लर्निंग मॉडल और उनके उपयोग और रखरखाव की प्रक्रिया अन्य विकास वर्कफ़्लो से काफी अलग होती है। इस पाठ में, हम इस प्रक्रिया को सरल बनाएंगे और उन मुख्य तकनीकों को समझाएंगे जिन्हें आपको जानना चाहिए। आप: +मशीन लर्निंग मॉडल बनाने, उपयोग करने, और बनाए रखने की प्रक्रिया और उनके द्वारा उपयोग किए गए डेटा की प्रक्रिया कई अन्य विकास वर्कफ़्लो से बहुत अलग होती है। इस पाठ में, हम इस प्रक्रिया को सरल बनाएंगे और मुख्य तकनीकों का सारांश प्रस्तुत करेंगे जिन्हें आपको जानना आवश्यक है। आप: -- मशीन लर्निंग की प्रक्रियाओं को उच्च स्तर पर समझेंगे। -- 'मॉडल', 'प्रेडिक्शन', और 'ट्रेनिंग डेटा' जैसे मूलभूत अवधारणाओं का अन्वेषण करेंगे। +- उच्च स्तर पर मशीन लर्निंग के पीछे की प्रक्रियाओं को समझेंगे। +- 'मॉडल', 'पूर्वानुमान', और 'प्रशिक्षण डेटा' जैसे मूल अवधारणाओं का अन्वेषण करेंगे। ## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/) -[![मशीन लर्निंग के लिए शुरुआती - मशीन लर्निंग की तकनीकें](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "मशीन लर्निंग के लिए शुरुआती - मशीन लर्निंग की तकनीकें") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ को समझाने वाले एक छोटे वीडियो के लिए। +> 🎥 इस पाठ को समझाने वाला संक्षिप्त वीडियो देखने के लिए ऊपर दिए चित्र पर क्लिक करें। ## परिचय -उच्च स्तर पर, मशीन लर्निंग (ML) प्रक्रियाओं को बनाने की कला में कई चरण शामिल होते हैं: +उच्च स्तर पर, मशीन लर्निंग (ML) प्रक्रियाओं को बनाने की कारीगरी कई चरणों से मिलकर होती है: -1. **प्रश्न तय करें**। अधिकांश ML प्रक्रियाएं एक ऐसे प्रश्न से शुरू होती हैं जिसे एक साधारण कंडीशनल प्रोग्राम या नियम-आधारित इंजन द्वारा उत्तर नहीं दिया जा सकता। ये प्रश्न अक्सर डेटा के संग्रह के आधार पर भविष्यवाणियों के इर्द-गिर्द घूमते हैं। -2. **डेटा एकत्रित और तैयार करें**। अपने प्रश्न का उत्तर देने के लिए, आपको डेटा की आवश्यकता होती है। आपके डेटा की गुणवत्ता और कभी-कभी मात्रा यह निर्धारित करती है कि आप अपने प्रारंभिक प्रश्न का उत्तर कितनी अच्छी तरह दे सकते हैं। इस चरण में डेटा को विज़ुअलाइज़ करना एक महत्वपूर्ण पहलू है। इस चरण में डेटा को ट्रेनिंग और टेस्टिंग समूह में विभाजित करना भी शामिल है ताकि मॉडल बनाया जा सके। -3. **ट्रेनिंग विधि चुनें**। आपके प्रश्न और डेटा की प्रकृति के आधार पर, आपको यह तय करना होगा कि आप मॉडल को कैसे ट्रेन करना चाहते हैं ताकि यह आपके डेटा को सबसे अच्छी तरह से प्रतिबिंबित करे और इसके खिलाफ सटीक भविष्यवाणियां करे। यह आपके ML प्रक्रिया का वह हिस्सा है जो विशेष विशेषज्ञता और अक्सर काफी मात्रा में प्रयोग की आवश्यकता होती है। -4. **मॉडल को ट्रेन करें**। अपने ट्रेनिंग डेटा का उपयोग करके, आप विभिन्न एल्गोरिदम का उपयोग करके मॉडल को डेटा में पैटर्न पहचानने के लिए ट्रेन करेंगे। मॉडल आंतरिक वेट्स का उपयोग कर सकता है जिन्हें डेटा के कुछ हिस्सों को दूसरों पर प्राथमिकता देने के लिए समायोजित किया जा सकता है ताकि बेहतर मॉडल बनाया जा सके। -5. **मॉडल का मूल्यांकन करें**। आप अपने संग्रहित सेट से पहले कभी न देखे गए डेटा (अपने टेस्टिंग डेटा) का उपयोग करके देख सकते हैं कि मॉडल कैसा प्रदर्शन कर रहा है। -6. **पैरामीटर ट्यूनिंग**। आपके मॉडल के प्रदर्शन के आधार पर, आप प्रक्रिया को अलग-अलग पैरामीटर या वेरिएबल का उपयोग करके फिर से कर सकते हैं जो मॉडल को ट्रेन करने के लिए उपयोग किए गए एल्गोरिदम के व्यवहार को नियंत्रित करते हैं। -7. **भविष्यवाणी करें**। नए इनपुट का उपयोग करके अपने मॉडल की सटीकता का परीक्षण करें। +1. **प्रश्न तय करें**। अधिकांश ML प्रक्रियाएं ऐसे प्रश्न पूछने से शुरू होती हैं जिनका उत्तर सरल कंडीशनल प्रोग्राम या नियम-आधारित इंजन द्वारा नहीं दिया जा सकता। ये प्रश्न अक्सर डेटा के संग्रह के आधार पर पूर्वानुमान से संबंधित होते हैं। +2. **डेटा इकट्ठा करें और तैयार करें**। अपने प्रश्न का उत्तर देने के लिए आपको डेटा की आवश्यकता होती है। आपके डेटा की गुणवत्ता और कभी-कभार मात्रा निर्धारित करेगी कि आप अपने प्रारंभिक प्रश्न का कितना अच्छा उत्तर दे सकते हैं। डेटा का दृश्यांकन इस चरण का एक महत्वपूर्ण हिस्सा है। इस चरण में डेटा को प्रशिक्षण और परीक्षण समूहों में विभाजित करना भी शामिल है ताकि मॉडल बनाया जा सके। +3. **प्रशिक्षण विधि चुनें**। आपके प्रश्न और डेटा की प्रकृति के अनुसार, आपको यह चुनना होगा कि आप मॉडल को कैसे प्रशिक्षित करेंगे ताकि यह आपके डेटा को सबसे अच्छी तरह दर्शाए और उसके विरुद्ध सटीक पूर्वानुमान कर सके। यह आपका ML प्रक्रिया का वह हिस्सा है जिसमें विशेषज्ञता और अक्सर काफी प्रयोग की आवश्यकता होती है। +4. **मॉडल प्रशिक्षित करें**। अपने प्रशिक्षण डेटा का उपयोग करके, आप विभिन्न एल्गोरिदम का उपयोग करके मॉडल को डेटा में पैटर्न पहचानने के लिए प्रशिक्षित करेंगे। मॉडल आंतरिक भार (वेट्स) का लाभ उठा सकता है जिन्हें समायोजित किया जा सकता है ताकि डेटा के कुछ हिस्सों को प्राथमिकता देकर बेहतर मॉडल बनाया जा सके। +5. **मॉडल का मूल्यांकन करें**। आप अपने एकत्र किए गए समूह से पहले कभी न देखे गए डेटा (परीक्षण डेटा) का उपयोग करके मॉडल के प्रदर्शन को देखेंगे। +6. **पैरामीटर ट्यूनिंग**। आपके मॉडल के प्रदर्शन के आधार पर, आप मॉडल को प्रशिक्षित करने के लिए उपयोग किए गए एल्गोरिदम के व्यवहार को नियंत्रित करने वाले विभिन्न पैरामीटर या वेरिएबल का उपयोग करके प्रक्रिया को फिर से कर सकते हैं। +7. **पूर्वानुमान करें**। अपने मॉडल की सटीकता जांचने के लिए नए इनपुट का उपयोग करें। -## कौन सा प्रश्न पूछना है +## किस प्रश्न को पूछना चाहिए -कंप्यूटर डेटा में छिपे पैटर्न खोजने में विशेष रूप से कुशल होते हैं। यह उपयोगिता उन शोधकर्ताओं के लिए बहुत मददगार है जिनके पास किसी दिए गए डोमेन के बारे में ऐसे प्रश्न होते हैं जिन्हें आसानी से कंडीशनली-आधारित नियम इंजन बनाकर उत्तर नहीं दिया जा सकता। उदाहरण के लिए, एक एक्चुरियल कार्य को देखते हुए, एक डेटा वैज्ञानिक धूम्रपान करने वालों बनाम गैर-धूम्रपान करने वालों की मृत्यु दर के आसपास हस्तनिर्मित नियम बना सकता है। +कंप्यूटर डेटा में छिपे पैटर्न खोजने में विशेष रूप से कुशल होते हैं। यह उपयोगिता शोधकर्ताओं के लिए बहुत मददगार होती है जिनके पास ऐसे प्रश्न होते हैं जिन्हें कंडीशनली आधारित नियम इंजन बनाकर आसानी से उत्तर नहीं दिया जा सकता। उदाहरण के लिए, एक सांख्यिकी कार्य में, एक डेटा वैज्ञानिक स्मोकर्स और नॉन-स्मोकर्स की मृत्यु दर के बारे में हस्तनिर्मित नियम बना सकता है। -हालांकि, जब कई अन्य वेरिएबल समीकरण में लाए जाते हैं, तो एक ML मॉडल पिछले स्वास्थ्य इतिहास के आधार पर भविष्य की मृत्यु दर की भविष्यवाणी करने में अधिक कुशल साबित हो सकता है। एक अधिक सुखद उदाहरण अप्रैल के महीने में किसी दिए गए स्थान के लिए मौसम की भविष्यवाणी करना हो सकता है, जिसमें अक्षांश, देशांतर, जलवायु परिवर्तन, महासागर के निकटता, जेट स्ट्रीम के पैटर्न और अधिक जैसे डेटा शामिल हैं। +जब अन्य कई चर इस समीकरण में लाए जाते हैं, तो ML मॉडल पिछले स्वास्थ्य इतिहास के आधार पर भविष्य की मृत्यु दर का पूर्वानुमान लगाने में अधिक कुशल साबित हो सकता है। एक और सुखद उदाहरण हो सकता है किसी स्थान में अप्रैल माह के लिए मौसम पूर्वानुमान बनाना, जिसमें अक्षांश, देशांतर, जलवायु परिवर्तन, समुद्र के निकटता, जेट स्ट्रीम के पैटर्न, और अधिक शामिल हो सकते हैं। -✅ यह [स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) मौसम मॉडल पर ML का उपयोग करने के लिए एक ऐतिहासिक दृष्टिकोण प्रदान करता है। +✅ यह [स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) मौसम मॉडल पर ML के उपयोग का ऐतिहासिक दृष्टिकोण प्रदान करता है। -## मॉडल बनाने से पहले के कार्य +## पूर्व-निर्माण कार्य -मॉडल बनाना शुरू करने से पहले, आपको कई कार्य पूरे करने की आवश्यकता होती है। अपने प्रश्न का परीक्षण करने और मॉडल की भविष्यवाणियों के आधार पर एक परिकल्पना बनाने के लिए, आपको कई तत्वों की पहचान और कॉन्फ़िगर करना होगा। +मॉडल बनाने से पहले, आपको कई कार्य पूरे करने होंगे। अपने प्रश्न का परीक्षण करने और मॉडल की भविष्यवाणियों के आधार पर एक अनुमान बनाने के लिए, आपको कई तत्वों की पहचान और कॉन्फ़िगर करना होगा। ### डेटा -अपने प्रश्न का उत्तर किसी भी प्रकार की निश्चितता के साथ देने के लिए, आपको सही प्रकार का पर्याप्त डेटा चाहिए। इस बिंदु पर आपको दो चीजें करनी होंगी: +अपने प्रश्न का किसी प्रकार की निश्चितता के साथ उत्तर देने के लिए, आपको सही प्रकार के पर्याप्त डेटा की आवश्यकता होती है। इस चरण में आपको दो काम करने होंगे: -- **डेटा एकत्रित करें**। डेटा विश्लेषण में निष्पक्षता पर पिछले पाठ को ध्यान में रखते हुए, अपने डेटा को सावधानीपूर्वक एकत्रित करें। इस डेटा के स्रोतों, इसमें मौजूद किसी भी अंतर्निहित पूर्वाग्रहों के बारे में जागरूक रहें और इसकी उत्पत्ति का दस्तावेज़ बनाएं। -- **डेटा तैयार करें**। डेटा तैयारी प्रक्रिया में कई चरण होते हैं। यदि डेटा विभिन्न स्रोतों से आता है, तो आपको इसे एकत्रित और सामान्यीकृत करने की आवश्यकता हो सकती है। आप डेटा की गुणवत्ता और मात्रा को विभिन्न तरीकों से सुधार सकते हैं, जैसे स्ट्रिंग्स को नंबर में बदलना (जैसा कि हम [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) में करते हैं)। आप मूल डेटा के आधार पर नया डेटा भी उत्पन्न कर सकते हैं (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/1-Introduction/README.md) में करते हैं)। आप डेटा को साफ और संपादित कर सकते हैं (जैसा कि हम [वेब ऐप](../../3-Web-App/README.md) पाठ से पहले करेंगे)। अंत में, आप इसे यादृच्छिक और शफल भी कर सकते हैं, यह आपके ट्रेनिंग तकनीकों पर निर्भर करता है। +- **डेटा इकट्ठा करें**। डेटा विश्लेषण में निष्पक्षता पर पिछले पाठ को ध्यान में रखते हुए, सावधानी से डेटा एकत्र करें। डेटा के स्रोतों के प्रति जागरूक रहें, इसमें मौजूद किसी भी अंतर्निहित पक्षपात से अवगत रहें, और इसके स्रोत का दस्तावेजीकरण करें। +- **डेटा तैयार करें**। डेटा तैयारी प्रक्रिया में कई चरण होते हैं। यदि डेटा विभिन्न स्रोतों से आया हो तो आपको डेटा को संयोजित और सामान्यीकृत करने की आवश्यकता हो सकती है। आप विभिन्न विधियों से डेटा की गुणवत्ता और मात्रा बढ़ा सकते हैं, जैसे स्ट्रिंग को संख्याओं में बदलना (जैसा कि हम [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) में करते हैं)। आप मूल डेटा के आधार पर नया डेटा उत्पन्न भी कर सकते हैं (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/1-Introduction/README.md) में करते हैं)। आप डेटा को साफ़ और संपादित भी कर सकते हैं (जैसा कि हम [वेब ऐप](../../3-Web-App/README.md) पाठ से पहले करेंगे)। अंत में, आपको इसे यादृच्छिक (रैंडमाइज़) और शफल करने की आवश्यकता हो सकती है, जो आपकी प्रशिक्षण तकनीकों पर निर्भर करता है। -✅ डेटा एकत्रित और प्रोसेस करने के बाद, एक पल लें और देखें कि क्या इसका आकार आपके इच्छित प्रश्न को संबोधित करने की अनुमति देगा। ऐसा हो सकता है कि डेटा आपके दिए गए कार्य में अच्छा प्रदर्शन न करे, जैसा कि हम अपने [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) पाठ में खोजते हैं! +✅ डेटा एकत्र करने और संसाधित करने के बाद, यह जाँचने के लिए थोड़ा समय निकालें कि क्या इसका स्वरूप आपके लक्ष्यित प्रश्न को संबोधित करने की अनुमति देगा। हो सकता है कि डेटा आपके दिए गए कार्य में अच्छा प्रदर्शन न करे, जैसा कि हम अपने [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) पाठों में देखते हैं! ### फीचर्स और टारगेट -एक [फीचर](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) आपके डेटा की एक मापने योग्य संपत्ति है। कई डेटासेट में इसे 'तारीख', 'आकार' या 'रंग' जैसे कॉलम हेडिंग के रूप में व्यक्त किया जाता है। आपका फीचर वेरिएबल, जिसे आमतौर पर कोड में `X` के रूप में दर्शाया जाता है, वह इनपुट वेरिएबल है जिसका उपयोग मॉडल को ट्रेन करने के लिए किया जाएगा। +एक [फीचर](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) आपके डेटा की एक मापनीय संपत्ति है। कई डेटासेट में इसे कॉलम हेडिंग के रूप में व्यक्त किया जाता है जैसे 'दिनांक', 'आकार' या 'रंग'। आपकी फीचर वेरिएबल, जो आमतौर पर कोड में `X` के रूप में निरूपित होती है, वह इनपुट वेरिएबल होती है जिसका उपयोग मॉडल को प्रशिक्षण देने के लिए किया जाएगा। -एक टारगेट वह चीज़ है जिसे आप भविष्यवाणी करने की कोशिश कर रहे हैं। टारगेट, जिसे आमतौर पर कोड में `y` के रूप में दर्शाया जाता है, आपके डेटा से पूछे जा रहे प्रश्न का उत्तर दर्शाता है: दिसंबर में कौन से **रंग** के कद्दू सबसे सस्ते होंगे? सैन फ्रांसिस्को में कौन से पड़ोस में सबसे अच्छी रियल एस्टेट **कीमत** होगी? कभी-कभी टारगेट को लेबल एट्रिब्यूट भी कहा जाता है। +एक टारगेट वह चीज़ है जिसे आप पूर्वानुमान लगाने की कोशिश कर रहे हैं। टारगेट, जो आमतौर पर कोड में `y` के रूप में निरूपित होता है, वह प्रश्न का उत्तर होता है जो आप अपने डेटा से पूछना चाहते हैं: दिसंबर में, कौन से **रंग** के कद्दू सबसे सस्ते होंगे? सैन फ्रांसिस्को में, कौन से इलाके सबसे अच्छी रियल एस्टेट **कीमत** रखेंगे? कभी-कभी टारगेट को लेबल एट्रिब्यूट भी कहा जाता है। -### अपने फीचर वेरिएबल का चयन करना +### अपनी फीचर वेरिएबल चुनना -🎓 **फीचर चयन और फीचर एक्सट्रैक्शन** जब आप मॉडल बनाते समय वेरिएबल चुनते हैं तो आप कैसे जानते हैं कि कौन सा वेरिएबल चुनना है? आप शायद फीचर चयन या फीचर एक्सट्रैक्शन की प्रक्रिया से गुजरेंगे ताकि सबसे अच्छा प्रदर्शन करने वाले मॉडल के लिए सही वेरिएबल चुने जा सकें। हालांकि, वे समान नहीं हैं: "फीचर एक्सट्रैक्शन मूल फीचर्स के फंक्शन्स से नए फीचर्स बनाता है, जबकि फीचर चयन फीचर्स का एक सबसेट लौटाता है।" ([स्रोत](https://wikipedia.org/wiki/Feature_selection)) +🎓 **फीचर चयन और फीचर एक्सट्रैक्शन** मॉडल बनाते समय आप कैसे जानते हैं कि कौन सा वेरिएबल चुनें? आप सबसे प्रभावी मॉडल के लिए उपयुक्त वेरिएबल चुनने हेतु फीचर चयन या फीचर एक्सट्रैक्शन की प्रक्रिया से गुजरेंगे। हालांकि ये दोनों एक समान नहीं हैं: "फीचर एक्सट्रैक्शन मूल फीचर्स के फंक्शन्स से नए फीचर्स बनाता है, जबकि फीचर चयन फीचर्स के एक उपसमूह को लौटाता है।" ([स्रोत](https://wikipedia.org/wiki/Feature_selection)) -### अपने डेटा को विज़ुअलाइज़ करें +### अपने डेटा का दृश्यांकन करें -डेटा वैज्ञानिक के टूलकिट का एक महत्वपूर्ण पहलू डेटा को विज़ुअलाइज़ करने की शक्ति है, जिसमें Seaborn या MatPlotLib जैसी कई उत्कृष्ट लाइब्रेरी शामिल हैं। अपने डेटा को विज़ुअल रूप से प्रस्तुत करना आपको छिपे हुए संबंधों को उजागर करने की अनुमति दे सकता है जिन्हें आप लाभ उठा सकते हैं। आपके विज़ुअलाइज़ेशन आपको पूर्वाग्रह या असंतुलित डेटा को उजागर करने में भी मदद कर सकते हैं (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/2-Classifiers-1/README.md) में खोजते हैं)। +डेटा वैज्ञानिक के टूलकिट में डेटा को कई उत्कृष्ट लाइब्रेरी जैसे Seaborn या MatPlotLib का उपयोग करके विज़ुअलाइज़ करने की शक्ति एक महत्वपूर्ण पहलू है। अपने डेटा को दृश्यमान रूप में प्रस्तुत करने से आप छिपे हुए सहसंबंधों को खोज सकते हैं जिनका आप लाभ उठा सकते हैं। आपकी विज़ुअलाइज़ेशन मदद कर सकती है पक्षपात या असंतुलित डेटा खोजने में (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/2-Classifiers-1/README.md) में पाते हैं)। ### अपने डेटासेट को विभाजित करें -ट्रेनिंग से पहले, आपको अपने डेटासेट को दो या अधिक असमान आकार के हिस्सों में विभाजित करना होगा जो अभी भी डेटा का अच्छा प्रतिनिधित्व करते हैं। +प्रशिक्षण से पहले, आपको अपने डेटासेट को दो या अधिक असमान आकार के लेकिन डेटा का अच्छा प्रतिनिधित्व करने वाले भागों में विभाजित करना होगा। -- **ट्रेनिंग**। डेटासेट का यह हिस्सा आपके मॉडल को ट्रेन करने के लिए फिट किया जाता है। यह सेट मूल डेटासेट का अधिकांश हिस्सा बनाता है। -- **टेस्टिंग**। एक टेस्ट डेटासेट एक स्वतंत्र डेटा समूह है, जिसे अक्सर मूल डेटा से एकत्रित किया जाता है, जिसका उपयोग आप बनाए गए मॉडल के प्रदर्शन की पुष्टि करने के लिए करते हैं। -- **वैलिडेशन**। एक वैलिडेशन सेट एक छोटा स्वतंत्र उदाहरणों का समूह है जिसका उपयोग आप मॉडल के हाइपरपैरामीटर या आर्किटेक्चर को ट्यून करने के लिए करते हैं ताकि मॉडल को बेहतर बनाया जा सके। आपके डेटा के आकार और आपके द्वारा पूछे गए प्रश्न के आधार पर, आपको इस तीसरे सेट को बनाने की आवश्यकता नहीं हो सकती (जैसा कि हम [टाइम सीरीज फोरकास्टिंग](../../7-TimeSeries/1-Introduction/README.md) में नोट करते हैं)। +- **प्रशिक्षण**। इस डेटासेट के हिस्से का उपयोग मॉडल को प्रशिक्षित करने के लिए किया जाता है। यह सेट मूल डेटासेट का अधिकांश हिस्सा होता है। +- **परीक्षण**। परीक्षण डेटासेट एक स्वतंत्र डेटा समूह होता है, जो अक्सर मूल डेटा से एकत्र किया जाता है, जिसे आप बने मॉडल के प्रदर्शन की पुष्टि करने के लिए उपयोग करते हैं। +- **मान्यकरण**। एक मान्यकरण सेट एक छोटा स्वतंत्र समूह होता है जिसे आप मॉडल के हाइपरपैरामीटर या वास्तुकला को ठीक करने के लिए उपयोग करते हैं ताकि मॉडल में सुधार किया जा सके। आपके डेटा के आकार और प्रश्न के अनुसार, इस तीसरे सेट को बनाना आवश्यक नहीं हो सकता (जैसा कि हम [टाइम सीरीज फोरकास्टिंग](../../7-TimeSeries/1-Introduction/README.md) में नोट करते हैं)। ## मॉडल बनाना -अपने ट्रेनिंग डेटा का उपयोग करते हुए, आपका लक्ष्य विभिन्न एल्गोरिदम का उपयोग करके एक मॉडल, या आपके डेटा का सांख्यिकीय प्रतिनिधित्व बनाना है ताकि इसे **ट्रेन** किया जा सके। मॉडल को ट्रेन करना इसे डेटा के संपर्क में लाता है और इसे खोजे गए पैटर्न के बारे में धारणाएं बनाने, मान्य करने और स्वीकार या अस्वीकार करने की अनुमति देता है। +अपने प्रशिक्षण डेटा का उपयोग करते हुए, आपका लक्ष्य विभिन्न एल्गोरिदम का उपयोग करके अपने डेटा का एक सांख्यिकीय प्रतिनिधित्व या मॉडल बनाना है और उसे **प्रशिक्षित** करना है। मॉडल को प्रशिक्षित करने से वह डेटा के प्रति उजागर होता है और इसमें पाए गए पैटर्न के बारे में अनुमानों को बनाने, सत्यापित करने, और स्वीकार या अस्वीकार करने की अनुमति मिलती है। -### ट्रेनिंग विधि तय करें +### प्रशिक्षण विधि तय करें -आपके प्रश्न और आपके डेटा की प्रकृति के आधार पर, आप इसे ट्रेन करने के लिए एक विधि चुनेंगे। [Scikit-learn के दस्तावेज़](https://scikit-learn.org/stable/user_guide.html) के माध्यम से कदम उठाते हुए - जिसे हम इस पाठ्यक्रम में उपयोग करते हैं - आप मॉडल को ट्रेन करने के कई तरीके खोज सकते हैं। आपके अनुभव के आधार पर, आपको सबसे अच्छा मॉडल बनाने के लिए कई अलग-अलग तरीकों को आजमाना पड़ सकता है। आप एक प्रक्रिया से गुजरने की संभावना रखते हैं जिसमें डेटा वैज्ञानिक मॉडल के प्रदर्शन का मूल्यांकन करते हैं, इसे अनदेखे डेटा खिलाते हैं, सटीकता, पूर्वाग्रह और अन्य गुणवत्ता-घटाने वाले मुद्दों की जांच करते हैं, और दिए गए कार्य के लिए सबसे उपयुक्त ट्रेनिंग विधि का चयन करते हैं। +प्रश्न और आपके डेटा की प्रकृति के अनुसार, आप इसे प्रशिक्षित करने के लिए एक विधि चुनेंगे। [Scikit-learn के प्रलेखन के माध्यम से](https://scikit-learn.org/stable/user_guide.html) - जिसका उपयोग हम इस पाठ्यक्रम में करते हैं - आप मॉडल प्रशिक्षित करने के कई तरीके तलाश सकते हैं। आपके अनुभव के अनुसार, आपको सर्वोत्तम मॉडल बनाने के लिए कई विभिन्न विधियाँ आजमानी पड़ सकती हैं। आप उस प्रक्रिया से गुजरेंगे जिसमें डेटा वैज्ञानिक एक मॉडल के प्रदर्शन का मूल्यांकन करते हैं, उसे अनदेखे डेटा खिलाकर, सटीकता, पक्षपात और अन्य गुणवत्ता-घटाने वाले मुद्दों को जांचकर, और कार्य के लिए सबसे उपयुक्त प्रशिक्षण विधि चुनते हैं। -### मॉडल को ट्रेन करें +### मॉडल प्रशिक्षण करें -अपने ट्रेनिंग डेटा से लैस, आप इसे 'फिट' करने के लिए तैयार हैं ताकि एक मॉडल बनाया जा सके। आप देखेंगे कि कई ML लाइब्रेरी में आपको 'model.fit' कोड मिलेगा - यह वह समय है जब आप अपने फीचर वेरिएबल को मानों के एक एरे के रूप में भेजते हैं (आमतौर पर 'X') और एक टारगेट वेरिएबल (आमतौर पर 'y')। +अपने प्रशिक्षण डेटा के साथ, आप इसे फिट करने के लिए तैयार होते हैं ताकि मॉडल बनाया जा सके। आप पाएंगे कि कई ML लाइब्रेरियों में कोड 'model.fit' होता है - यह वह क्षण होता है जब आप अपनी फीचर वेरिएबल को मानों की सरणी के रूप में (आमतौर पर 'X') और टारगेट वेरिएबल (आमतौर पर 'y') को भेजते हैं। ### मॉडल का मूल्यांकन करें -एक बार ट्रेनिंग प्रक्रिया पूरी हो जाने के बाद (एक बड़े मॉडल को ट्रेन करने में कई पुनरावृत्तियां, या 'epochs', लग सकते हैं), आप टेस्ट डेटा का उपयोग करके मॉडल की गुणवत्ता का मूल्यांकन करने में सक्षम होंगे ताकि इसके प्रदर्शन का आकलन किया जा सके। यह डेटा मूल डेटा का एक उपसमुच्चय है जिसे मॉडल ने पहले कभी विश्लेषण नहीं किया है। आप अपने मॉडल की गुणवत्ता के बारे में मेट्रिक्स की एक तालिका प्रिंट कर सकते हैं। +जब प्रशिक्षण प्रक्रिया पूरी हो जाती है (एक बड़े मॉडल को प्रशिक्षित करने में कई पुनरावृत्तियां, या 'एपोक' लग सकते हैं), आप परीक्षण डेटा का उपयोग करके मॉडल की गुणवत्ता का मूल्यांकन कर पाएंगे। यह डेटा मूल डेटा का एक उपसमुच्चय होता है जिसे मॉडल ने पहले कभी विश्लेषित नहीं किया होता। आप अपने मॉडल की गुणवत्ता पर मेट्रिक्स की तालिका भी प्रिंट कर सकते हैं। 🎓 **मॉडल फिटिंग** -मशीन लर्निंग के संदर्भ में, मॉडल फिटिंग उस मॉडल की अंतर्निहित फ़ंक्शन की सटीकता को संदर्भित करता है क्योंकि यह उस डेटा का विश्लेषण करने का प्रयास करता है जिससे यह परिचित नहीं है। +मशीन लर्निंग के संदर्भ में, मॉडल फिटिंग उस मॉडल के अंतर्निहित फ़ंक्शन की सटीकता को दर्शाती है जो अनजाने डेटा का विश्लेषण करने का प्रयास करता है। -🎓 **अंडरफिटिंग** और **ओवरफिटिंग** आम समस्याएं हैं जो मॉडल की गुणवत्ता को खराब करती हैं, क्योंकि मॉडल या तो पर्याप्त रूप से फिट नहीं होता है या बहुत अधिक फिट होता है। इससे मॉडल या तो अपने ट्रेनिंग डेटा के साथ बहुत अधिक संरेखित भविष्यवाणियां करता है या बहुत कम संरेखित करता है। एक ओवरफिट मॉडल ट्रेनिंग डेटा को बहुत अच्छी तरह से भविष्यवाणी करता है क्योंकि उसने डेटा के विवरण और शोर को बहुत अच्छी तरह से सीखा है। एक अंडरफिट मॉडल सटीक नहीं है क्योंकि यह न तो अपने ट्रेनिंग डेटा का सही तरीके से विश्लेषण कर सकता है और न ही उस डेटा का जिसे उसने अभी तक 'देखा' नहीं है। +🎓 **अंडरफिटिंग** और **ओवरफिटिंग** सामान्य समस्याएं हैं जो मॉडल की गुणवत्ता को कम करती हैं, क्योंकि मॉडल या तो ठीक से फिट नहीं होता या बहुत अधिक फिट हो जाता है। इससे मॉडल की भविष्यवाणियाँ या तो प्रशिक्षण डेटा के बहुत निकट होती हैं या बहुत दूर। एक ओवरफिट मॉडल प्रशिक्षण डेटा को बहुत अच्छी तरह से भविष्यवाणी करता है क्योंकि उसने डेटा के विवरण और शोर को बहुत अच्छी तरह सीख लिया है। एक अंडरफिट मॉडल सटीक नहीं होता क्योंकि वह न तो अपने प्रशिक्षण डेटा को और न ही अभी देखा नहीं गया डेटा को सही ढंग से विश्लेषित कर पाता है। -![ओवरफिटिंग मॉडल](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक +![overfitting model](../../../../translated_images/hi/overfitting.1c132d92bfd93cb6.webp) +> इन्फोग्राफिक [Jen Looper](https://twitter.com/jenlooper) द्वारा ## पैरामीटर ट्यूनिंग -एक बार आपकी प्रारंभिक ट्रेनिंग पूरी हो जाने के बाद, मॉडल की गुणवत्ता का अवलोकन करें और इसे 'हाइपरपैरामीटर' को समायोजित करके सुधारने पर विचार करें। इस प्रक्रिया के बारे में अधिक पढ़ें [दस्तावेज़ में](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)। +एक बार आपकी प्रारंभिक प्रशिक्षण प्रक्रिया पूरी हो जाने के बाद, मॉडल की गुणवत्ता पर नजर डालें और इसके 'हाइपरपैरामीटर' को सुधारने पर विचार करें। प्रक्रिया के बारे में और पढ़ें [प्रलेखन में](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)। -## भविष्यवाणी +## पूर्वानुमान -यह वह क्षण है जब आप पूरी तरह से नए डेटा का उपयोग करके अपने मॉडल की सटीकता का परीक्षण कर सकते हैं। एक 'एप्लाइड' ML सेटिंग में, जहां आप मॉडल को प्रोडक्शन में उपयोग करने के लिए वेब एसेट्स बना रहे हैं, यह प्रक्रिया उपयोगकर्ता इनपुट (जैसे बटन दबाना) को एक वेरिएबल सेट करने और मॉडल को इनफरेंस या मूल्यांकन के लिए भेजने में शामिल कर सकती है। +यह वह क्षण है जब आप पूरी तरह नए डेटा का उपयोग करके अपने मॉडल की सटीकता का परीक्षण कर सकते हैं। एक 'प्रयुक्त' ML सेटिंग में, जहां आप उत्पादन के लिए वेब संसाधन बना रहे होते हैं, यह प्रक्रिया उपयोगकर्ता इनपुट (उदाहरण के लिए, एक बटन प्रेस) एक वेरिएबल सेट करने और उसे पूर्वानुमान या मूल्यांकन के लिए मॉडल को भेजने को शामिल कर सकती है। -इन पाठों में, आप इन चरणों का उपयोग करके तैयार करने, बनाने, परीक्षण करने, मूल्यांकन करने और भविष्यवाणी करने के तरीके खोजेंगे - डेटा वैज्ञानिक के सभी इशारों और अधिक, जैसे-जैसे आप 'फुल स्टैक' ML इंजीनियर बनने की अपनी यात्रा में आगे बढ़ते हैं। +इन पाठों में, आप सीखेंगे कि इन चरणों का उपयोग कैसे करना है — तैयारी, निर्माण, परीक्षण, मूल्यांकन, और पूर्वानुमान लगाना — डेटा वैज्ञानिक के सभी कार्यों और अधिक के रूप में, जब आप एक 'फुल स्टैक' ML इंजीनियर बनने की यात्रा पर आगे बढ़ते हैं। --- ## 🚀चुनौती -एक फ्लो चार्ट बनाएं जो एक ML प्रैक्टिशनर के चरणों को दर्शाता है। आप इस प्रक्रिया में अभी खुद को कहां देखते हैं? आपको कहां कठिनाई का सामना करना पड़ सकता है? आपको क्या आसान लगता है? +एक फ्लो चार्ट बनाएं जो एक ML विशेषज्ञ के चरणों को दर्शाता हो। अब आप प्रक्रिया में खुद को कहाँ देखते हैं? आपको कहाँ कठिनाई होने की उम्मीद है? आपके लिए क्या आसान प्रतीत होता है? ## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/) -## समीक्षा और स्व-अध्ययन +## समीक्षा और स्वअध्ययन -ऑनलाइन खोजें कि डेटा वैज्ञानिक अपने दैनिक कार्य के बारे में चर्चा करते हुए साक्षात्कार में क्या कहते हैं। यहाँ [एक](https://www.youtube.com/watch?v=Z3IjgbbCEfs) है। +ऑनलाइन खोजें उन डेटा वैज्ञानिकों के साक्षात्कार जिनमें वे अपने दैनिक कार्य के बारे में चर्चा करते हैं। यहाँ [एक](https://www.youtube.com/watch?v=Z3IjgbbCEfs) है। ## असाइनमेंट @@ -119,5 +119,7 @@ --- + **अस्वीकरण**: -यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file +यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। + \ No newline at end of file diff --git a/translations/hi/2-Regression/3-Linear/README.md b/translations/hi/2-Regression/3-Linear/README.md index e839e11100..8e49f3bde2 100644 --- a/translations/hi/2-Regression/3-Linear/README.md +++ b/translations/hi/2-Regression/3-Linear/README.md @@ -1,96 +1,97 @@ -# Scikit-learn का उपयोग करके रिग्रेशन मॉडल बनाएं: चार तरीकों से रिग्रेशन +# Scikit-learn का उपयोग करके एक प्रतिगमन मॉडल बनाएं: प्रतिगमन के चार तरीके ## शुरुआती नोट -जब हम एक **सांख्यिकीय मान** की भविष्यवाणी करना चाहते हैं (उदाहरण के लिए, घर की कीमत, तापमान, या बिक्री), तब लाइनियर रिग्रेशन का उपयोग किया जाता है। यह इनपुट फ़ीचर्स और आउटपुट के बीच संबंध का सर्वश्रेष्ठ प्रतिनिधित्व करने वाली एक सीधी रेखा खोजकर काम करता है। +रैखिक प्रतिगमन का उपयोग तब किया जाता है जब हम एक **संख्यात्मक मान** का पूर्वानुमान लगाना चाहते हैं (उदाहरण के लिए, घर का मूल्य, तापमान, या बिक्री)। +यह इनपुट विशेषताओं और आउटपुट के बीच के संबंध का सबसे अच्छा प्रतिनिधित्व करने वाली एक सीधी रेखा खोजकर काम करता है। -इस पाठ में, हम अधिक उन्नत रिग्रेशन तकनीकों का पता लगाने से पहले अवधारणा को समझने पर ध्यान केंद्रित करते हैं। -![Linear vs polynomial regression infographic](../../../../translated_images/hi/linear-polynomial.5523c7cb6576ccab.webp) -> इन्फोग्राफिक द्वारा [Dasani Madipalli](https://twitter.com/dasani_decoded) +इस पाठ में, हम अधिक उन्नत प्रतिगमन तकनीकों का पता लगाने से पहले अवधारणा को समझने पर ध्यान केंद्रित करते हैं। +![रैखिक बनाम बहुपद प्रतिगमन इन्फोग्राफिक](../../../../translated_images/hi/linear-polynomial.5523c7cb6576ccab.webp) +> इन्फोग्राफिक [Dasani Madipalli](https://twitter.com/dasani_decoded) द्वारा ## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/) > ### [यह पाठ R में उपलब्ध है!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### परिचय -अब तक आपने रिग्रेशन क्या है इसका अन्वेषण किया है, जिसमें कद्दू की कीमतों के डेटासेट के साथ नमूना डेटा शामिल है, जिसे हम इस पाठ में प्रयोग करेंगे। आपने इसे Matplotlib का उपयोग करके भी विज़ुअलाइज़ किया है। +अब तक आपने प्रतिगमन क्या है, इसे कद्दू के मूल्य निर्धारण डेटासेट से लिए गए नमूना डेटा के साथ एक्सप्लोर किया है, जिसे हम इस पाठ में लगातार उपयोग करेंगे। आपने इसे Matplotlib का उपयोग करके विज़ुअलाइज़ भी किया है। -अब आप मशीन लर्निंग के लिए रिग्रेशन में गहराई से जाने के लिए तैयार हैं। जबकि विज़ुअलाइज़ेशन आपको डेटा को समझने में मदद करता है, मशीन लर्निंग की असली शक्ति _मॉडल प्रशिक्षण_ से आती है। मॉडल ऐतिहासिक डेटा पर प्रशिक्षित होते हैं ताकि वे डेटा निर्भरताओं को स्वचालित रूप से पकड़ सकें, और ये मॉडल नए डेटा के लिए परिणामों की भविष्यवाणी कर सकते हैं, जिसे मॉडल ने पहले नहीं देखा है। +अब आप एमएल के लिए प्रतिगमन में गहराई से उतरने के लिए तैयार हैं। जबकि विज़ुअलाइज़ेशन आपको डेटा को समझने में मदद करता है, मशीन लर्निंग की असली ताकत _मॉडल का प्रशिक्षण_ है। मॉडल को ऐतिहासिक डेटा पर प्रशिक्षित किया जाता है ताकि वे स्वतः डेटा की निर्भरताओं को पकड़ सकें, और ये आपको नए डेटा के लिए पूर्वानुमान लगाने की अनुमति देते हैं, जिसे मॉडल ने पहले नहीं देखा होता। -इस पाठ में, आप दो प्रकार के रिग्रेशन सीखेंगे: _बुनियादी लाइनियर रिग्रेशन_ और _पॉलीनोमियल रिग्रेशन_, साथ ही इन तकनीकों के कुछ गणितीय पहलू। ये मॉडल हमें अलग-अलग इनपुट डेटा के आधार पर कद्दू की कीमतों की भविष्यवाणी करने की अनुमति देंगे। +इस पाठ में, आप दो प्रकार के प्रतिगमन के बारे में अधिक सीखेंगे: _मूलभूत रैखिक प्रतिगमन_ और _बहुपद प्रतिगमन_, साथ ही इन तकनीकों के पीछे कुछ गणित। ये मॉडल हमें अलग-अलग इनपुट डेटा पर निर्भर करके कद्दू की कीमतों का पूर्वानुमान लगाने की अनुमति देंगे। -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![शुरुआती के लिए ML - रैखिक प्रतिगमन को समझना](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "शुरुआती के लिए ML - रैखिक प्रतिगमन को समझना") -> 🎥 ऊपर दी गई छवि पर क्लिक करें लाइनियर रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए। +> 🎥 रैखिक प्रतिगमन का संक्षिप्त वीडियो अवलोकन देखने के लिए ऊपर की छवि पर क्लिक करें। -> इस पाठ्यक्रम में, हम न्यूनतम गणितीय ज्ञान मानते हैं, और इसे अन्य क्षेत्रों से आने वाले छात्रों के लिए सुलभ बनाने का प्रयास करते हैं, इसलिए समझ में सहायता के लिए नोट्स, 🧮 कॉलआउट्स, आरेख, और अन्य शिक्षण उपकरण देखें। +> इस पाठ्यक्रम में, हम न्यूनतम गणितीय ज्ञान की कल्पना करते हैं, और अन्य क्षेत्रों से आने वाले छात्रों के लिए इसे सुलभ बनाने का प्रयास करते हैं, इसलिए नोट्स, 🧮 कॉलआउट्स, आरेख, और अन्य शिक्षण उपकरणों पर ध्यान दें। -### पूर्वापेक्षाएँ +### पूर्व आवश्यकताएँ -अब तक आप उस कद्दू डेटा की संरचना से परिचित हो जाएंगे, जिसे हम देख रहे हैं। आप इसे इस पाठ के _notebook.ipynb_ फ़ाइल में प्रीलोडेड और पूर्व-साफ किया हुआ पाएंगे। फ़ाइल में, कद्दू की कीमत प्रति बशल नए डेटा फ़्रेम में प्रदर्शित की गई है। सुनिश्चित करें कि आप इन नोटबुक को Visual Studio Code में कर्नेल में चलाने में सक्षम हैं। +अब तक आप उस कद्दू डेटा की संरचना से परिचित होनी चाहिए जिसे हम देख रहे हैं। इसे इस पाठ के _notebook.ipynb_ फ़ाइल में प्रीलोडेड और प्री-क्लीन किया गया है। इस फ़ाइल में, कद्दू की कीमत प्रति बुशल नई डेटा फ्रेम में प्रदर्शित है। सुनिश्चित करें कि आप इन नोटबुक्स को Visual Studio Code के कर्नेल्स में चला सकते हैं। ### तैयारी -स्मरण कराने के लिए, आप यह डेटा इस तरह की प्रश्न पूछने के लिए लोड कर रहे हैं: +एक अनुस्मारक के रूप में, आप इस डेटा को लोड कर रहे हैं ताकि आप इससे प्रश्न पूछ सकें। -- कद्दू खरीदने का सबसे अच्छा समय कब है? -- एक केस मिनिएचर कद्दुओं की क्या कीमत हो सकती है? -- क्या मुझे इन्हें आधे बशल टोकरी में खरीदना चाहिए या 1 1/9 बशल बॉक्स के अनुसार? -आइए इस डेटा में और खुदाई करते रहें। +- कद्दू खरीदने का सबसे अच्छा समय कब है? +- एक केस मिनिएचर कद्दू की कीमत क्या हो सकती है? +- क्या मुझे उन्हें आधे बुशल बास्केट में खरीदना चाहिए या 1 1/9 बुशल बॉक्स के अनुसार? +आइए इस डेटा में और गहराई से जांच करें। -पिछले पाठ में, आपने एक Pandas डेटा फ़्रेम बनाया और इसे मूल डेटा सेट के एक भाग से भरा, कीमत को बशल द्वारा मानकीकृत करते हुए। ऐसा करने से, हालांकि, आप केवल लगभग 400 डेटा पॉइंट और केवल पतझड़ के महीनों के लिए डेटा इकट्ठा कर पाए। +पिछले पाठ में, आपने एक Pandas डेटा फ्रेम बनाया था और मूल डेटासेट के एक हिस्से से इसे भर दिया था, इस प्रकार कीमत को बुशल द्वारा मानकीकृत किया था। हालांकि ऐसा करने के बाद, आप केवल लगभग 400 डेटा पॉइंट्स इकट्ठा कर पाए और वे भी केवल गिरावट के महीनों के लिए। -इस पाठ के साथ आने वाली नोटबुक में हमने जो डेटा प्रीलोड किया है, उस पर नज़र डालें। डेटा प्रीलोड किया गया है और प्रारंभिक स्कैटरप्लॉट चार्ट किया गया है जो महीनों के डेटा को दिखाता है। संभव है कि डेटा की प्रकृति के बारे में थोड़ा और विवरण प्राप्त किया जा सके, इसे और साफ करके। +इस पाठ के साथ आई नोटबुक में हमने जो डेटा प्रीलोड किया है, उस पर एक नज़र डालें। डेटा पूर्व लोडेड है और एक प्रारंभिक स्कैटरप्लॉट बनाया गया है जो महीने के डेटा को दिखाता है। शायद हम इसे और साफ़ करके डेटा की प्रकृति के बारे में थोड़ा अधिक जान सकें। -## एक लाइनियर रिग्रेशन लाइन +## एक रैखिक प्रतिगमन रेखा -जैसा कि आपने पाठ 1 में सीखा, एक लाइनियर रिग्रेशन व्यायाम का लक्ष्य यह है कि एक रेखा प्लाट की जा सके ताकि: +जैसा कि आपने पाठ 1 में सीखा, रैखिक प्रतिगमन अभ्यास का उद्देश्य एक रेखा को प्लॉट करना है ताकि: -- **चर संबंध दिखाएं**। चर के बीच संबंध दिखाएं -- **भविष्यवाणियाँ करें**। यह सही पूर्वानुमान लगाएं कि कोई नया डेटा पॉइंट उस रेखा के संबंध में कहाँ आएगा। +- **चर संबंध दिखाना**। चर के बीच के संबंध को दिखाएं। +- **पूर्वानुमान बनाना**। यह सही पूर्वानुमान लगाना कि कोई नया डेटा पॉइंट उस रेखा के संबंध में कहां आएगा। -यह सामान्य है कि **लीस्ट-स्क्वेयर रिग्रेशन** इस प्रकार की रेखा खींचे। "लीस्ट-स्क्वेयर" शब्द हमारे मॉडल में कुल त्रुटि को कम करने की प्रक्रिया को दर्शाता है। प्रत्येक डेटा पॉइंट के लिए, हम वास्तविक पॉइंट और हमारे रिग्रेशन लाइन के बीच ऊर्ध्वाधर दूरी (जिसे अवशिष्ट कहते हैं) मापते हैं। +यह **Least-Squares Regression** का सामान्य अभ्यास है कि इस प्रकार की रेखा बनाएं। "Least-Squares" शब्द हमारे मॉडल में कुल त्रुटि को न्यूनतम करने की प्रक्रिया को दर्शाता है। हर डेटा पॉइंट के लिए, हम रेखा और वास्तविक पॉइंट के बीच लंबवत दूरी को मापते हैं (जिसे 'अवशेष' कहा जाता है)। हम इन दूरीयों को दो मुख्य कारणों से वर्ग करते हैं: -1. **आकार दिशा से अधिक महत्वपूर्ण:** हम -5 की त्रुटि को +5 की त्रुटि के समान मानना चाहते हैं। वर्गाकरण सभी मानों को सकारात्मक बना देता है। +1. **परिमाण दिशा से अधिक महत्वपूर्ण:** हम -5 की त्रुटि को +5 की त्रुटि के समान समझना चाहते हैं। वर्गीकरण सभी मानों को सकारात्मक कर देता है। -2. **आउटलेयर्स को दंडित करना:** वर्गाकरण बड़ी त्रुटियों को अधिक महत्व देता है, जिससे रेखा उन बिंदुओं के करीब रहती है जो दूर हैं। +2. **आउटलेयर्स को दंडित करना:** वर्ग करने से बड़ी त्रुटियों को अधिक वजन मिलता है, जो रेखा को दूर के पॉइंट्स के करीब बनाए रखता है। -फिर हम इन सभी वर्गीकृत मानों को जोड़ते हैं। हमारा लक्ष्य उस विशेष रेखा को खोजना है जहाँ यह अंतिम योग न्यूनतम हो (संभवतः सबसे छोटे मान पर) — इसलिए इसे "लीस्ट-स्क्वेयर" कहा जाता है। +फिर हम इन वर्गीकृत मूल्यों को एक साथ जोड़ते हैं। हमारा लक्ष्य वह विशिष्ट रेखा ढूंढ़ना है जहां यह अंतिम योग सबसे कम (सबसे छोटा संभव मान) होता है—इसीलिए इसे "Least-Squares" कहा जाता है। -> **🧮 मुझे गणित दिखाओ** +> **🧮 मुझे गणित दिखाइए** > -> इस रेखा को, जिसे _लाइन ऑफ़ बेस्ट फिट_ कहा जाता है, [एक समीकरण](https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त किया जा सकता है: +> इस रेखा, जिसे _लाइन ऑफ बेस्ट फिट_ कहा जाता है, को [एक समीकरण](https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त किया जा सकता है: > > ``` > Y = a + bX > ``` -> -> `X` 'व्याख्यात्मक चर' है। `Y` 'निर्भर चर' है। रेखा का ढलान `b` है और `a` y-अवरोध (y-intercept) है, जो 'X = 0' होने पर `Y` का मान दर्शाता है। > ->![calculate the slope](../../../../translated_images/hi/slope.f3c9d5910ddbfcf9.webp) +> `X` 'व्याख्यात्मक चर' है। `Y` 'निर्भर चर' है। रेखा का उतार `b` है और `a` y-अवरोध है, जो उस समय `Y` का मान दर्शाता है जब `X = 0` होता है। > -> पहले, ढलान `b` की गणना करें। इन्फोग्राफिक द्वारा [Jen Looper](https://twitter.com/jenlooper) +>![ढलान की गणना](../../../../translated_images/hi/slope.f3c9d5910ddbfcf9.webp) > -> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न को ध्यान में रखते हुए: "महीने के अनुसार प्रति बशल कद्दू की कीमत की भविष्यवाणी करें", `X` कीमत को संदर्भित करता है और `Y` बिक्री के महीने को। +> सबसे पहले, ढलान `b` की गणना करें। इन्फोग्राफिक [Jen Looper](https://twitter.com/jenlooper) द्वारा > ->![complete the equation](../../../../translated_images/hi/calculation.a209813050a1ddb1.webp) +> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न की ओर इशारा करते हुए: "महीने के अनुसार प्रति बुशल कद्दू की कीमत का पूर्वानुमान लगाएं", `X` कीमत को संदर्भित करेगा और `Y` बिक्री के महीने को। > -> `Y` के मान की गणना करें। यदि आप लगभग $4 का भुगतान कर रहे हैं, तो वह अप्रैल होना चाहिए! इन्फोग्राफिक द्वारा [Jen Looper](https://twitter.com/jenlooper) +>![समीकरण पूर्ण करें](../../../../translated_images/hi/calculation.a209813050a1ddb1.webp) > -> जो गणित रेखा की गणना करता है, उसे ढलान दर्शानी चाहिए, जो अवरोध पर निर्भर भी होती है, अर्थात `X = 0` होने पर `Y` कहाँ होता है। +> Y का मान निकालें। यदि आप लगभग $4 दे रहे हैं, तो यह अप्रैल होना चाहिए! इन्फोग्राफिक [Jen Looper](https://twitter.com/jenlooper) द्वारा > -> आप इन मानों की गणना की विधि को [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइट पर देख सकते हैं। साथ ही [यह लीस्ट-स्क्वेयर्स कैलकुलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) देखें कि कैसे मान रेखा को प्रभावित करते हैं। +> गणित जो रेखा की गणना करता है, उस रेखा का ढलान दिखाना होगा, जो अवरोध पर भी निर्भर करता है, या जहां `Y` स्थित होता है जब `X = 0` होता है। +> +> आप इन मानों की गणना की विधि को [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइट पर देख सकते हैं। साथ ही इस [Least-squares कैलक्युलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) पर जाकर देख सकते हैं कि नंबरों के मान लाइन को कैसे प्रभावित करते हैं। -## सहसंबंध (Correlation) +## सहसंबंध -एक और शब्द जिसे समझना आवश्यक है, वह है दिए गए X और Y चर के बीच का **सहसंबंध गुणांक**। स्कैटरप्लॉट का उपयोग करके, आप इसे जल्दी से देख सकते हैं। यदि पॉइंट्स एक साफ रेखा में फैलते हैं तो सहसंबंध अधिक होता है, परंतु यदि पॉइंट्स हर जगह फैल गए हैं, तो सहसंबंध कम होता है। +एक और शब्द जिसे समझना जरूरी है वह है दिया गया X और Y चर के बीच **सहसंबंध गुणांक**। एक स्कैटरप्लॉट का उपयोग करके, आप जल्दी से इस गुणांक को विज़ुअलाइज़ कर सकते हैं। एक ऐसा प्लॉट जिसमें डेटा पॉइंट्स एक साफ रेखा में फैले हों, उसका सहसंबंध उच्च होता है, लेकिन जो प्लॉट सभी जगह फैले डेटा पॉइंट्स दिखाता है, उसका सहसंबंध कम होता है। -एक अच्छा लाइनियर रिग्रेशन मॉडल वह होगा जिसका सहसंबंध गुणांक उच्च (0 के बजाय 1 के करीब) होगा, और वह लाइन ऑफ़ रिग्रेशन के साथ लीस्ट-स्क्वेयर्स रिग्रेशन विधि का उपयोग करता हो। +एक अच्छा रैखिक प्रतिगमन मॉडल वह होगा जिसका सहसंबंध गुणांक उच्च (0 के बजाय 1 के करीब) हो, और जो Least-Squares Regression पद्धति के साथ प्रतिगमन रेखा रखता हो। -✅ इस पाठ के साथ आने वाली नोटबुक चलाएं और महीने से कीमत स्कैटरप्लॉट को देखें। कद्दू बिक्री के लिए महीने और कीमत के डेटा का सहसंबंध आपके विज़ुअल विश्लेषण के अनुसार अधिक है या कम? क्या यदि आप `महीना` के बजाय अधिक सूक्ष्म माप का उपयोग करें, जैसे *साल का दिन* (यानी साल की शुरुआत से दिन की संख्या), तो क्या उस स्थिति में सहसंबंध बदल जाता है? +✅ इस पाठ के साथ आई नोटबुक चलाएं और महीने से मूल्य के स्कैटरप्लॉट को देखें। कद्दू बिक्री के लिए महीने और मूल्य को जोड़ने वाला डेटा आपकी स्कैटरप्लॉट की दृश्य व्याख्या के अनुसार उच्च या निम्न सहसंबंध दिखाता है? यदि आप `Month` के बजाय अधिक सूक्ष्म माप जैसे *वर्ष का दिन* (अर्थात वर्ष की शुरुआत से दिनों की संख्या) का उपयोग करते हैं, तो क्या यह परिवर्तन होता है? -नीचे के कोड में, हम मान लेंगे कि हमने डेटा को साफ़ किया है, और एक डेटा फ्रेम `new_pumpkins` प्राप्त किया है, जो निम्नलिखित जैसा है: +नीचे दिए गए कोड में, हम मानते हैं कि हमने डेटा साफ किया है, और `new_pumpkins` नामक एक डेटा फ्रेम प्राप्त किया है, जो निम्नानुसार है: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -100,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> डेटा साफ़ करने के लिए कोड [`notebook.ipynb`](notebook.ipynb) में उपलब्ध है। हमने पिछले पाठ की तरह ही सफाई के चरण किए हैं, और `DayOfYear` कॉलम का मूल्य निम्नलिखित अभिव्यक्ति से निकाला है: +> डेटा साफ करने के लिए कोड [`notebook.ipynb`](notebook.ipynb) में उपलब्ध है। हमने पिछले पाठ की तरह ही सफाई के कदम उठाए हैं, और निम्नलिखित अभिव्यक्ति का उपयोग करके `DayOfYear` कॉलम की गणना की है: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -अब जब आपको लाइनियर रिग्रेशन के पीछे का गणित समझ में आ गया है, तो आइए रिग्रेशन मॉडल बनाएं ताकि हम यह देख सकें कि कौन सा कद्दू पैकेज सबसे अच्छी कीमत देगा। कोई भी जो हॉलीडे कद्दू उद्घाटित करने के लिए कद्दू खरीद रहा है, यह जानकारी उनके पैच के कद्दू पैकेज की खरीद को अनुकूल बनाने में मदद कर सकती है। +अब जब आपके पास रैखिक प्रतिगमन के पीछे के गणित की समझ है, तो चलिए एक प्रतिगमन मॉडल बनाते हैं ताकि देखें कि क्या हम यह पूर्वानुमान लगा सकते हैं कि कद्दू के किस पैकेज की कीमत सबसे अच्छी होगी। कोई ऐसा व्यक्ति जो छुट्टियों के कद्दू पैच के लिए कद्दू खरीद रहा हो, उसे अपने खरीदारी को अनुकूलित करने के लिए यह जानकारी चाहिए होगी। -## सहसंबंध की खोज +## सहसंबंध की तलाश -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![शुरुआती के लिए ML - सहसंबंध की तलाश: रैखिक प्रतिगमन की कुंजी](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "शुरुआती के लिए ML - सहसंबंध की तलाश: रैखिक प्रतिगमन की कुंजी") -> 🎥 ऊपर दी गई छवि पर क्लिक करें सहसंबंध का संक्षिप्त वीडियो अवलोकन देखने के लिए। +> 🎥 सहसंबंध का संक्षिप्त वीडियो अवलोकन देखने के लिए ऊपर की छवि पर क्लिक करें। -पिछले पाठ से आपने शायद देखा होगा कि विभिन्न महीनों के लिए औसत कीमत कुछ इस प्रकार दिखती है: +पिछले पाठ से आपने संभवतः देखा होगा कि अलग-अलग महीनों के लिए औसत कीमत कुछ इस प्रकार दिखती है: -Average price by month +महीने के अनुसार औसत कीमत -यह सुझाव देता है कि कुछ सहसंबंध होना चाहिए, और हम प्रयास कर सकते हैं कि लाइनियर रिग्रेशन मॉडल प्रशिक्षित करें जो `Month` और `Price` के बीच, या `DayOfYear` और `Price` के बीच संबंध की भविष्यवाणी करे। नीचे स्कैटर प्लॉट है जो बाद के संबंध को दिखाता है: +यह सुझाव देता है कि वहाँ कुछ सहसंबंध होना चाहिए, और हम यह प्रयास कर सकते हैं कि `Month` और `Price` या `DayOfYear` और `Price` के बीच संबंध का पूर्वानुमान लगाने के लिए रैखिक प्रतिगमन मॉडल प्रशिक्षण दें। यह रहा वह स्कैटरप्लॉट जो बाद वाले संबंध को दिखाता है: -Scatter plot of Price vs. Day of Year +मूल्य बनाम वर्ष का दिन का स्कैटर प्लॉट -आइए `corr` फ़ंक्शन का उपयोग करके देखें कि क्या सहसंबंध है: +आइए `corr` फ़ंक्शन का उपयोग करके देखें कि सहसंबंध कितना है: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -ऐसा लगता है कि सहसंबंध काफी छोटा है, `Month` के लिए -0.15 और `DayOfMonth` के लिए -0.17, लेकिन एक और महत्वपूर्ण संबंध हो सकता है। ऐसा लगता है कि अलग-अलग कद्दू की किस्मों के लिए कीमतों के अलग-अलग समूह हैं। इस हाइपोथीसिस को पुष्टि करने के लिए, आइए प्रत्येक कद्दू वर्ग को अलग रंग में प्लॉट करें। `scatter` प्लॉटिंग फ़ंक्शन को `ax` पैरामीटर पास करके हम सभी पॉइंट्स को एक ही ग्राफ पर प्लॉट कर सकते हैं: +ऐसा लगता है कि सहसंबंध काफी छोटा है, `Month` के अनुसार -0.15 और `DayOfYear` के अनुसार -0.17, लेकिन एक और महत्वपूर्ण संबंध हो सकता है। ऐसा लगता है कि कीमतों के विभिन्न समूह हैं जो विभिन्न कद्दू किस्मों से संबंधित हैं। इस अनुमान की पुष्टि के लिए, आइए प्रत्येक कद्दू श्रेणी को अलग रंग में प्लॉट करें। `scatter` प्लॉटिंग फ़ंक्शन को एक `ax` पैरामीटर पास करके हम सभी पॉइंट्स को एक ही ग्राफ पर प्लॉट कर सकते हैं: ```python ax=None @@ -139,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +मूल्य बनाम वर्ष के दिन का रंगीन स्कैटर प्लॉट -हमारी जांच से पता चलता है कि किस्म का कुल कीमत पर वास्तविक बिक्री तिथि से अधिक प्रभाव होता है। हम इसे बार ग्राफ से देख सकते हैं: +हमारी जांच से पता चलता है कि किस्म का समग्र कीमत पर वास्तविक बिक्री की तारीख की तुलना में अधिक प्रभाव है। हम इसे बार ग्राफ के साथ देख सकते हैं: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +कीमत बनाम किस्म का बार ग्राफ -अभी के लिए चलिए केवल एक कद्दू किस्म, 'pie type' पर ध्यान केंद्रित करें, और देखें कि तारीख का कीमत पर क्या प्रभाव है: +हम इस समय केवल एक कद्दू किस्म, 'pie type' पर ध्यान केंद्रित करते हैं, और देखते हैं कि तारीख का कीमत पर क्या प्रभाव है: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +मूल्य बनाम वर्ष के दिन का स्कैटर प्लॉट -यदि हम अब `Price` और `DayOfYear` के बीच सहसंबंध `corr` फ़ंक्शन से गणना करें, तो हमें लगभग `-0.27` मिलेगा - जिसका मतलब है कि एक पूर्वानुमान मॉडल प्रशिक्षण करना समझदारी है। +यदि हम अब `Price` और `DayOfYear` के बीच सहसंबंध की गणना `corr` फ़ंक्शन का उपयोग करके करते हैं, तो मान लगभग `-0.27` होगा - जिसका अर्थ है कि एक पूर्वानुमान मॉडल का प्रशिक्षण करना समझ में आता है। -> लाइनियर रिग्रेशन मॉडल प्रशिक्षित करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि हमारा डेटा साफ हो। लाइनियर रिग्रेशन खाली मानों के साथ अच्छा काम नहीं करता है, इसलिए सभी खाली कोशिकाओं को हटाना समझदारी है: +> एक रैखिक प्रतिगमन मॉडल को प्रशिक्षण देने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि हमारा डेटा साफ़ है। रैखिक प्रतिगमन गायब मानों के साथ अच्छा काम नहीं करता, इसलिए सभी खाली कोशिकाओं को हटाना समझदारी है: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -एक अन्य तरीका यह होगा कि उन खाली मानों को संबंधित कॉलम के औसत मान से भर दिया जाए। +एक और तरीका होगा कि उन खाली मूल्यों को संबंधित कॉलम के औसत मान से भर दिया जाए। -## सरल लाइनियर रिग्रेशन +## सरल रैखिक प्रतिगमन -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![शुरुआती के लिए ML - Scikit-learn का उपयोग करके रैखिक और बहुपद प्रतिगमन](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "शुरुआती के लिए ML - Scikit-learn का उपयोग करके रैखिक और बहुपद प्रतिगमन") -> 🎥 ऊपर दी गई छवि पर क्लिक करें लाइनियर और पॉलीनोमियल रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए। +> 🎥 रैखिक और बहुपद प्रतिगमन का संक्षिप्त वीडियो अवलोकन देखने के लिए ऊपर की छवि पर क्लिक करें। -हम अपने लाइनियर रिग्रेशन मॉडल को प्रशिक्षित करने के लिए **Scikit-learn** पुस्तकालय का उपयोग करेंगे। +हमारा रैखिक प्रतिगमन मॉडल प्रशिक्षित करने के लिए, हम **Scikit-learn** पुस्तकालय का उपयोग करेंगे। ```python from sklearn.linear_model import LinearRegression @@ -182,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -हम इनपुट मानों (फ़ीचर्स) और अपेक्षित आउटपुट (लेबल) को अलग-अलग numpy arrays में अलग करते हैं: +हम इनपुट मानों (विशेषताएँ) और अपेक्षित आउटपुट (लेबल) को अलग-अलग numpy ऐरे में अलग करते हैं: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> ध्यान दें कि हमें इनपुट डेटा पर `reshape` करना पड़ा ताकि लाइनियर रिग्रेशन पैकेज इसे सही ढंग से समझ सके। लाइनियर रिग्रेशन 2D-array के रूप में इनपुट की अपेक्षा करता है, जहाँ array की प्रत्येक पंक्ति इनपुट फीचर्स का एक वेक्टर होता है। हमारे मामले में, चूंकि हमारे पास केवल एक इनपुट है, इसलिए हमें N×1 आकार की array चाहिए, जहाँ N डेटासेट का आकार है। +> ध्यान दें कि हमें इनपुट डेटा पर `reshape` करने की आवश्यकता पड़ी ताकि Linear Regression पैकेज इसे सही ढंग से समझ सके। Linear Regression 2D ऐरे को इनपुट के रूप में अपेक्षित करता है, जिसमें ऐरे की प्रत्येक पंक्ति एक इनपुट फीचर के वेक्टर के अनुरूप होती है। हमारे मामले में, क्योंकि हमारे पास केवल एक इनपुट है - हमें N×1 आकार का ऐरे चाहिए, जहां N डेटासेट का आकार है। -फिर, हमें डेटा को ट्रेन और टेस्ट डेटासेट में विभाजित करना होगा ताकि हम प्रशिक्षण के बाद हमारे मॉडल का मान्यकरण कर सकें: +फिर, हमें मॉडल के प्रशिक्षण के बाद इसे मान्य करने के लिए डेटा को प्रशिक्षण और परीक्षण डेटा सेट में विभाजित करना होगा: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -अंत में, वास्तविक लाइनियर रिग्रेशन मॉडल को प्रशिक्षित करना केवल दो पंक्तियों कोड में होता है। हम `LinearRegression` वस्तु परिभाषित करते हैं, और `fit` विधि का उपयोग करके इसे डेटा से फिट करते हैं: +अंत में, वास्तविक Linear Regression मॉडल को प्रशिक्षित करना केवल दो कोड लाइन लेता है। हम `LinearRegression` ऑब्जेक्ट परिभाषित करते हैं, और `fit` मेथड का उपयोग करके इसे हमारे डेटा पर फिट करते हैं: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`LinearRegression` ऑब्जेक्ट `fit` करने के बाद रिग्रेशन के सभी गुणांक (coefficients) रखता है, जिन्हें `.coef_` प्रॉपर्टी का उपयोग करके एक्सेस किया जा सकता है। हमारे मामले में, केवल एक गुणांक है, जो लगभग `-0.017` के आसपास होना चाहिए। इसका मतलब है कि समय के साथ कीमतें थोड़ा गिरती लगती हैं, लेकिन बहुत अधिक नहीं, लगभग 2 सेंट प्रति दिन। हम रिग्रेशन के Y-अक्ष के साथ इंटरसेक्शन पॉइंट को भी `lin_reg.intercept_` का उपयोग कर सकते हैं - यह हमारे मामले में लगभग `21` होगा, जो साल की शुरुआत में कीमत को दर्शाता है। +`fit` करने के बाद `LinearRegression` ऑब्जेक्ट में सभी रिग्रेशन के सहगुण होते हैं, जिन्हें `.coef_` प्रॉपर्टी का उपयोग करके एक्सेस किया जा सकता है। हमारे मामले में, केवल एक सहगुण है, जो लगभग `-0.017` होना चाहिए। इसका मतलब है कि कीमतें समय के साथ थोड़ा गिरती दिखती हैं, लेकिन ज्यादा नहीं, लगभग 2 सेंट प्रति दिन। हम रिग्रेशन के Y-अक्ष के साथ मिलने वाले इंटरसेप्शन पॉइंट को भी `lin_reg.intercept_` का उपयोग करके एक्सेस कर सकते हैं - यह हमारे मामले में लगभग `21` होगा, जो वर्ष की शुरुआत में कीमत को दर्शाता है। -अपने मॉडल की सटीकता देखने के लिए, हम टेस्ट डेटासेट पर कीमतों की भविष्यवाणी कर सकते हैं, और फिर देख सकते हैं कि हमारी भविष्यवाणियाँ अपेक्षित मानों के कितनी करीब हैं। यह रूट मीन स्क्वायर एरर (RMSE) मेट्रिक का उपयोग करके किया जा सकता है, जो कि अपेक्षित और भविष्यवाणी किए गए मानों के बीच सभी वर्गीकृत अंतर का माध्य का मूल है। +देखने के लिए कि हमारा मॉडल कितना सटीक है, हम टेस्ट डेटासेट पर कीमतें अनुमानित कर सकते हैं, और फिर यह माप सकते हैं कि हमारे अनुमान अपेक्षित मूल्यों के कितने करीब हैं। इसे रूट मीन स्क्वायर एरर (RMSE) मीट्रिक का उपयोग करके किया जा सकता है, जो अपेक्षित और अनुमानित मानों के बीच सभी वर्गीकृत अंतरों का माध्य का वर्गमूल होता है। ```python pred = lin_reg.predict(X_test) @@ -214,38 +215,37 @@ pred = lin_reg.predict(X_test) rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` - -हमारी त्रुटि लगभग 2 पॉइंट के आसपास दिखती है, जो ~17% है। बहुत अच्छा नहीं। मॉडल क्वालिटी का एक और संकेतक **निर्धारण गुणांक (coefficient of determination)** है, जिसे इस प्रकार प्राप्त किया जा सकता है: + +हमारी त्रुटि लगभग 2 पॉइंट के आसपास लगती है, जो लगभग 17% है। यह बहुत अच्छी नहीं है। मॉडल गुणवत्ता का एक अन्य संकेतक है **निर्धारण का सहगुणांक**, जिसे इस तरह से प्राप्त किया जा सकता है: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` - -यदि मान 0 है, तो इसका मतलब है कि मॉडल इनपुट डेटा को ध्यान में नहीं लेता, और *सबसे खराब रैखिक पूर्वानुमानक* की तरह व्यवहार करता है, जो कि परिणाम का केवल औसत मान होता है। मान 1 का अर्थ है कि हम सभी अपेक्षित आउटपुट को पूरी तरह से सही भविष्यवाणी कर सकते हैं। हमारे मामले में, गुणांक लगभग 0.06 है, जो काफी कम है। +यदि मान 0 है, तो इसका मतलब है कि मॉडल इनपुट डेटा को ध्यान में नहीं लेता है, और *सबसे खराब रैखिक भविष्यवक्ता* के रूप में कार्य करता है, जो बस परिणाम का औसत मान है। मान 1 का अर्थ है कि हम सभी अपेक्षित आउटपुट को पूरी तरह सही अनुमानित कर सकते हैं। हमारे मामले में, सहगुणांक लगभग 0.06 है, जो काफी कम है। -हम टेस्ट डेटा को रिग्रेशन लाइन के साथ प्लॉट भी कर सकते हैं ताकि यह बेहतर दिख सके कि हमारे मामले में रिग्रेशन कैसे काम करता है: +हम टेस्ट डाटा को रिग्रेशन लाइन के साथ प्लॉट भी कर सकते हैं ताकि बेहतर तरीके से देख सकें कि रिग्रेशन हमारे मामले में कैसे काम करती है: ```python plt.scatter(X_test,y_test) plt.plot(X_test,pred) ``` - + Linear regression ## पॉलीनॉमियल रिग्रेशन -रैखिक रिग्रेशन का एक और प्रकार पॉलीनॉमियल रिग्रेशन है। जबकि कभी-कभी वेरिएबल्स के बीच एक रैखिक संबंध होता है - जैसे कि कद्दू जितना बड़ा होगा, कीमत उतनी ही अधिक होगी - कभी-कभी ये संबंध कोई समतल या सीधी रेखा नहीं हो सकते। +रैखिक रिग्रेशन का एक अन्य प्रकार पॉलीनॉमियल रिग्रेशन है। जबकि कभी-कभी चर के बीच रैखिक संबंध होता है - जैसे कद्दू का आकार बड़ा होने पर कीमत अधिक होती है - कभी-कभी ये संबंध प्लेन या सीधे रेखा के रूप में प्रदर्शित नहीं किए जा सकते। -✅ यहाँ [कुछ और उदाहरण](https://online.stat.psu.edu/stat501/lesson/9/9.8) हैं जिनमें पॉलीनॉमियल रिग्रेशन का उपयोग हो सकता है। +✅ यहाँ [कुछ और उदाहरण](https://online.stat.psu.edu/stat501/lesson/9/9.8) हैं जिनमें पॉलीनॉमियल रिग्रेशन का उपयोग किया जा सकता है। -दिनांक (Date) और कीमत (Price) के बीच संबंध पर एक बार फिर से नज़र डालें। क्या यह स्कैटरप्लॉट ऐसा लगता है कि इसे ज़रूरी तौर पर सीधी रेखा से विश्लेषित किया जाना चाहिए? क्या कीमतें उतार-चढ़ाव नहीं कर सकतीं? इस मामले में, आप पॉलीनॉमियल रिग्रेशन आज़मा सकते हैं। +डेट और कीमत के बीच संबंध पर एक बार फिर ध्यान दें। क्या यह स्कैटरप्लॉट ऐसी रेखा से विश्लेषण किया जाना चाहिए? क्या कीमतें स्थिर नहीं रह सकतीं? इस स्थिति में, आप पॉलीनॉमियल रिग्रेशन कोशिश कर सकते हैं। -✅ पॉलीनॉमियल गणितीय अभिव्यक्तियाँ होती हैं जिनमें एक या अधिक वेरिएबल और गुणांक हो सकते हैं। +✅ पॉलीनॉमियल गणितीय अभिव्यक्तियाँ हैं जो एक या अधिक चर और सहगुणों से मिलकर बनती हैं। -पॉलीनॉमियल रिग्रेशन एक घुमावदार रेखा बनाता है जो गैर-रेखीय डेटा को बेहतर फिट करता है। हमारे मामले में, यदि हम इनपुट डेटा में वर्गीकृत `DayOfYear` वैरिएबल शामिल करें, तो हम अपने डेटा को परवलयाकार (parabolic) वक्र के साथ फिट कर पाएंगे, जिसका एक न्यूनतम बिंदु साल के भीतर कहीं होगा। +पॉलीनॉमियल रिग्रेशन गैर-रैखिक डेटा के लिए बेहतर फिटिंग के लिए एक घुमावदार रेखा बनाता है। हमारे मामले में, यदि हम इनपुट डेटा में `DayOfYear` के वर्ग को शामिल करते हैं, तो हमें अपने डेटा को एक परवलयाकार वक्र से फिट करने में सक्षम होना चाहिए, जिसके वर्ष की एक निश्चित बिंदु पर न्यूनतम होगा। -Scikit-learn में एक उपयोगी [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) शामिल है जो डेटा प्रोसेसिंग के विभिन्न चरणों को एक साथ जोड़ता है। एक **पाइपलाइन** **एस्टिमेटर्स** की श्रृंखला होती है। हमारे मामले में, हम एक पाइपलाइन बनाएंगे जो पहले मॉडल में पॉलीनॉमियल फीचर्स जोड़ता है, और फिर रिग्रेशन को प्रशिक्षित करता है: +Scikit-learn में विभिन्न डेटा प्रोसेसिंग चरणों को संयोजित करने के लिए एक सहायक [पाइपलाइन API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) शामिल है। एक **पाइपलाइन** **एस्टिमेटरों** की श्रृंखला होती है। हमारे मामले में, हम एक पाइपलाइन बनाएंगे जो पहले हमारे मॉडल में पॉलीनॉमियल फीचर्स जोड़ती है, और फिर रिग्रेशन को प्रशिक्षित करती है: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,61 +255,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` - -`PolynomialFeatures(2)` का उपयोग करने का मतलब है कि हम इनपुट डेटा से सभी द्वित्वतीय (second-degree) पॉलीनॉमियल्स शामिल करेंगे। हमारे मामले में इसका मतलब केवल `DayOfYear`2 होगा, लेकिन यदि दो इनपुट वेरिएबल X और Y हों, तो यह X2, XY और Y2 जोड़ देगा। हम उच्च-डिग्री पॉलीनॉमियल भी उपयोग कर सकते हैं यदि चाहें। -पाइपलाइनों का उपयोग मूल `LinearRegression` ऑब्जेक्ट की तरह ही किया जा सकता है, अर्थात हम पाइपलाइन को `fit` कर सकते हैं, और फिर `predict` का उपयोग करके भविष्यवाणी के परिणाम प्राप्त कर सकते हैं। यहाँ ग्राफ है जो टेस्ट डेटा और अनुमानित वक्र दिखाता है: +`PolynomialFeatures(2)` का उपयोग करने का मतलब है कि हम इनपुट डेटा से सभी द्वितीय-डिग्री पॉलीनॉमियल को शामिल करेंगे। हमारे मामले में यह केवल `DayOfYear`2 होगा, लेकिन यदि हमारे पास दो इनपुट चर X और Y हैं, तो यह X2, XY और Y2 जोड़ेगा। हम यदि चाहें तो उच्च डिग्री पॉलीनॉमियल का भी उपयोग कर सकते हैं। + +पाइपलाइनों का उपयोग मूल `LinearRegression` ऑब्जेक्ट की तरह ही किया जा सकता है, यानी हम पाइपलाइन को `fit` कर सकते हैं, और फिर `predict` का उपयोग करके पूर्वानुमान परिणाम प्राप्त कर सकते हैं: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +स्मूद अप्रोक्सिमेशन कर्व को प्लॉट करने के लिए, हम `np.linspace` का उपयोग करते हैं ताकि इनपुट मानों की एक समान श्रेणी बनाई जा सके, बजाय सीधे अनऑर्डर किए गए टेस्ट डेटा पर प्लॉट करने के (जो एक ज़िगज़ैग रेखा उत्पन्न करेगा): + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +यहाँ ग्राफ दिखा रहा है टेस्ट डेटा और अपरोक्ष कर्व: Polynomial regression -पॉलीनॉमियल रिग्रेशन का उपयोग करके, हम थोड़ा नीचे MSE और उच्च निर्धारण प्राप्त कर सकते हैं, लेकिन बहुत अधिक नहीं। हमें अन्य फीचर्स को भी ध्यान में रखना होगा! +पॉलीनॉमियल रिग्रेशन का उपयोग करते हुए, हम थोड़ा कम RMSE और उच्च निर्धारण प्राप्त कर सकते हैं, लेकिन काफी हद तक नहीं। हमें अन्य विशेषताओं को ध्यान में रखना होगा! -> आप देख सकते हैं कि न्यूनतम कद्दू की कीमतें लगभग हैलोवीन के आसपास देखी जाती हैं। आप इसे कैसे समझाएंगे? +> आप देख सकते हैं कि न्यूनतम कद्दू की कीमतें कहीं हैलोवीन के आसपास देखी गई हैं। आप इसे कैसे समझाएंगे? -🎃 बधाई हो, आपने अभी एक ऐसा मॉडल बनाया है जो पैसे कद्दू की कीमत की भविष्यवाणी करने में मदद कर सकता है। आप शायद इसी प्रक्रिया को सभी कद्दू प्रकारों के लिए दोहरा सकते हैं, लेकिन यह मुश्किल होगा। आइए अब सीखते हैं कि मॉडल में कद्दू की किस्म (variety) को कैसे शामिल करें! +🎃 बधाई हो, आपने एक ऐसा मॉडल बनाया है जो पाई कद्दू की कीमत अनुमानित करने में मदद कर सकता है। आप शायद सभी कद्दू प्रकारों के लिए वही प्रक्रिया दोहरा सकते हैं, लेकिन यह थकाऊ हो सकता है। अब चलिए सीखते हैं कि हमारी मॉडल में कद्दू की किस्म को कैसे ध्यान में रखा जाए! -## श्रेणीबद्ध फीचर्स (Categorical Features) +## श्रेणीगत विशेषताएँ -आदर्श दुनिया में, हम चाहते हैं कि हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू किस्मों की कीमतें भविष्यवाणी कर सकें। हालांकि, `Variety` कॉलम `Month` जैसे कॉलमों से थोड़ा अलग है, क्योंकि इसमें गैर-संख्यात्मक (non-numeric) मान होते हैं। ऐसे कॉलम को **श्रेणीबद्ध (categorical)** कहा जाता है। +आदर्श दुनिया में, हम चाहते हैं कि हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू किस्मों के लिए कीमतें अनुमानित कर सकें। हालांकि, `Variety` कॉलम `Month` जैसे कॉलम से थोड़ा अलग है, क्योंकि यह गैर-सांख्यिक मान होते हैं। ऐसे कॉलम को **श्रेणीगत** कहा जाता है। [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 ऊपर दिए गए इमेज पर क्लिक करें एक संक्षिप्त वीडियो अवलोकन के लिए जिसमें श्रेणीबद्ध फीचर्स के उपयोग को बताया गया है। +> 🎥 ऊपर की छवि पर क्लिक करें श्रेणीगत विशेषताओं के उपयोग पर संक्षिप्त वीडियो अवलोकन के लिए। यहाँ आप देख सकते हैं कि औसत कीमत किस्म पर कैसे निर्भर करती है: Average price by variety -किस्म को ध्यान में लेने के लिए, हमें इसे पहले संख्यात्मक रूप में बदलना होगा, या **इन्कोड (encode)** करना होगा। इसे करने के कई तरीके हैं: +किस्म को ध्यान में लेने के लिए, हमें इसे पहले संख्यात्मक रूप में परिवर्तित करना होगा, या इसे **कोडित** करना होगा। इसके कई तरीके हैं: -* सरल **न्यूमरिक इन्कोडिंग** विभिन्न किस्मों की एक तालिका बनाता है, और फिर किस्म के नाम को उस तालिका में एक अनुक्रमांक (index) से बदल देता है। यह रैखिक रिग्रेशन के लिए सबसे अच्छा विचार नहीं है, क्योंकि रिग्रेशन अनुक्रमांक के वास्तविक संख्यात्मक मान को लेता है और इसे कुछ गुणांक से गुणा कर परिणाम में जोड़ता है। हमारे मामले में, अनुक्रमांक नंबर और कीमत के बीच संबंध स्पष्ट रूप से गैर-रेखीय है, भले ही हम सुनिश्चित करें कि अनुक्रमांक किसी विशेष क्रम में हों। -* **वन-हॉट इन्कोडिंग (One-hot encoding)** `Variety` कॉलम को 4 अलग-अलग कॉलमों से प्रतिस्थापित कर देगा, प्रत्येक किस्म के लिए एक। हर कॉलम में `1` होगा यदि संबंधित पंक्ति उस किस्म की है, और अन्यथा `0` होगा। इसका मतलब है कि रैखिक रिग्रेशन में चार गुणांक होंगे, प्रत्येक कद्दू किस्म के लिए एक, जो उस विशेष किस्म के लिए "शुरुआती कीमत" (या बल्कि "अतिरिक्त कीमत") के लिए ज़िम्मेदार होंगे। +* सरल **संख्यात्मक कोडिंग** विभिन्न किस्मों की एक तालिका बनाएगी, और फिर किस्म के नाम को उस तालिका में उसके अनुक्रमांक द्वारा बदल देगी। यह रैखिक रिग्रेशन के लिए सबसे अच्छी विधि नहीं है, क्योंकि रैखिक रिग्रेशन अनुक्रमांक के वास्तविक संख्यात्मक मान को लेता है, और इसे कुछ सहगुणक से गुणा करके परिणाम में जोड़ता है। हमारे मामले में, अनुक्रमांक संख्या और कीमत के बीच संबंध स्पष्ट रूप से गैर-रैखिक है, भले ही हम यह सुनिश्चित करें कि अनुक्रमांक किसी विशिष्ट तरीके से क्रमबद्ध हों। +* **वन-हॉट एन्कोडिंग** `Variety` कॉलम को 4 अलग-अलग कॉलम में बदल देगा, हर एक किस्म के लिए एक। प्रत्येक कॉलम में `1` होगा यदि संबंधित पंक्ति उस किस्म की है, और अन्यथा `0` होगा। इसका मतलब है कि रैखिक रिग्रेशन में चार सहगुण होंगे, हर कद्दू किस्म के लिए एक, जो उस विशेष किस्म के "शुरुआती मूल्य" (या बल्कि "अतिरिक्त मूल्य") के लिए जिम्मेदार होगा। -निचे का कोड दिखाता है कि हम किस तरह से वन-हॉट इन्कोडिंग कर सकते हैं: +निम्नलिखित कोड दिखाता है कि हम किस तरह वन-हॉट एन्कोडिंग कर सकते हैं: ```python pd.get_dummies(new_pumpkins['Variety']) ``` - - ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE -----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -वन-हॉट इन्कोडेड किस्म को इनपुट के रूप में लेकर जब हम रैखिक रिग्रेशन को ट्रेन करते हैं, तो हमें बस सही ढंग से `X` और `y` डेटा को इनिशियलाइज़ करना होता है: +वन-हॉट एन्कोडेड किस्म का उपयोग करके रैखिक रिग्रेशन को प्रशिक्षित करने के लिए, हमें केवल `X` और `y` डेटा को सही तरीके से इनीशियलाइज करना होगा: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` - -बाकी कोड वही है जो हमने ऊपर Linear Regression को ट्रेन करने के लिए इस्तेमाल किया था। यदि आप इसे आज़माएंगे, तो आप देखेंगे कि मेर स्क्वायर्ड एरर लगभग समान है, लेकिन हमें निर्धारण गुणांक (~77%) काफी ज्यादा मिलता है। और भी अधिक सटीक भविष्यवाणियाँ करने के लिए, हम और भी श्रेणीबद्ध फीचर्स और संख्यात्मक फीचर्स, जैसे `Month` या `DayOfYear` को ध्यान में ले सकते हैं। एक बड़ा फीचर्स सेट पाने के लिए, हम `join` का उपयोग कर सकते हैं: + +बाकी कोड वही है जो हमने ऊपर रैखिक रिग्रेशन को प्रशिक्षित करने के लिए उपयोग किया। अगर आप इसे आजमाएंगे, तो आप देखेंगे कि मीन स्क्वायर्ड एरर लगभग समान है, लेकिन हामी अधिक उच्च निर्धारण (लगभग 77%) प्राप्त कर लेते हैं। और अधिक सटीक पूर्वानुमान प्राप्त करने के लिए, हम और श्रेणीगत विशेषताओं के साथ-साथ संख्यात्मक विशेषताओं, जैसे `Month` या `DayOfYear` को भी ध्यान में ले सकते हैं। एक बड़ा फीचर्स ऐरे बनाने के लिए, हम `join` का उपयोग कर सकते हैं: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,12 +340,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] ``` - -यहाँ हम `City` और `Package` प्रकार को भी ध्यान में रखते हैं, जिससे हमें MSE 2.84 (10%) और निर्धारण 0.94 मिलता है! -## सब कुछ एक साथ जोड़ना +यहाँ हम `City` और `Package` प्रकार को भी ध्यान में लेते हैं, जो हमें RMSE 2.84 (10.5%) और निर्धारण 0.94 देता है! + +## सब कुछ एक साथ रखना -सबसे अच्छा मॉडल बनाने के लिए, हम ऊपर के उदाहरण से संयुक्त (वन-हॉट इन्कोडेड श्रेणीबद्ध + संख्यात्मक) डेटा को पॉलीनॉमियल रिग्रेशन के साथ उपयोग कर सकते हैं। आपकी सुविधा के लिए यहाँ पूरा कोड है: +सबसे अच्छा मॉडल बनाने के लिए, हम ऊपर के उदाहरण से मिले संयुक्त (वन-हॉट एन्कोडेड श्रेणीगत + संख्यात्मक) डेटा का उपयोग पॉलीनॉमियल रिग्रेशन के साथ कर सकते हैं। आपकी सुविधा के लिए यहां पूर्ण कोड है: ```python # प्रशिक्षण डेटा सेट करें @@ -333,54 +355,54 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ .join(pd.get_dummies(new_pumpkins['Package'])) y = new_pumpkins['Price'] -# ट्रेन-टेस्ट विभाजन करें +# ट्रेन-टेस्ट स्प्लिट करें X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# पाइपलाइन सेटअप करें और प्रशिक्षित करें +# पाइपलाइन सेटअप और प्रशिक्षण करें pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# टेस्ट डेटा के लिए परिणाम अनुमानित करें +# परीक्षण डेटा के लिए परिणाम अनुमानित करें pred = pipeline.predict(X_test) -# MSE और निर्धारण की गणना करें -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE और निर्धारण गणना करें +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` - -इससे हमें सबसे अच्छा निर्धारण गुणांक लगभग 97% और MSE=2.23 (~8% भविष्यवाणी त्रुटि) मिलेगा। -| मॉडल | MSE | निर्धारण | -|-------|-----|-----------| -| `DayOfYear` रैखिक | 2.77 (17.2%) | 0.07 | -| `DayOfYear` पॉलीनॉमियल | 2.73 (17.0%) | 0.08 | -| `Variety` रैखिक | 5.24 (19.7%) | 0.77 | -| सभी फीचर्स रैखिक | 2.84 (10.5%) | 0.94 | -| सभी फीचर्स पॉलीनॉमियल | 2.23 (8.25%) | 0.97 | +यह हमें लगभग 97% का सर्वोत्तम निर्धारण सहगुण और RMSE=2.23 (~8% पूर्वानुमान त्रुटि) देगा। + +| Model | RMSE | Determination | +|-------|-----|---------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| All features Linear | 2.84 (10.5%) | 0.94 | +| All features Polynomial | 2.23 (8.25%) | 0.97 | -🏆 बहुत बढ़िया! आपने एक पाठ में चार रिग्रेशन मॉडल बनाए, और मॉडल की गुणवत्ता को 97% तक सुधार दिया। रिग्रेशन के अंतिम खंड में, आप लॉजिस्टिक रिग्रेशन के बारे में सीखेंगे जो श्रेणियाँ निर्धारित करता है। +🏆 बहुत बढ़िया! आपने एक पाठ में चार रिग्रेशन मॉडल बनाए, और मॉडल गुणवत्ता को 97% तक सुधार दिया। अंतिम खंड में, आप वर्ग निर्धारित करने के लिए लॉजिस्टिक रिग्रेशन के बारे में जानेंगे। --- ## 🚀चुनौती -इस नोटबुक में कई विभिन्न वेरिएबल्स को टेस्ट करें यह देखने के लिए कि सह-संबंध कैसे मॉडल की सटीकता से संबंधित है। +इस नोटबुक में कई अलग-अलग चर का परीक्षण करें ताकि देखें कि सहसंबंध मॉडल की सटीकता से कैसे मेल खाता है। -## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) +## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/) -## समीक्षा और स्व-अध्ययन +## समीक्षा एवं स्वअध्ययन -इस पाठ में हमने Linear Regression के बारे में सीखा। रिग्रेशन के अन्य महत्वपूर्ण प्रकार भी हैं। Stepwise, Ridge, Lasso और Elasticnet तकनीकों के बारे में पढ़ें। एक अच्छा कोर्स सीखने के लिए है [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +इस पाठ में हमने रैखिक रिग्रेशन के बारे में जाना। अन्य महत्वपूर्ण प्रकार के रिग्रेशन भी हैं। स्टेपवाइज, रिज, लैसो और इलास्टिकनेट तकनीकों के बारे में पढ़ें। अधिक जानने के लिए एक अच्छा कोर्स है [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## असाइनमेंट -[एक मॉडल बनाएं](assignment.md) +[मॉडल बनाएँ](assignment.md) --- **अस्वीकरण**: -इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में दस्तावेज़ को ही अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। +इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियां या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मातृ भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/2-Regression/3-Linear/solution/notebook.ipynb b/translations/hi/2-Regression/3-Linear/solution/notebook.ipynb index 4fee7b8500..e4fda808ff 100644 --- a/translations/hi/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/hi/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## कद्दू की कीमत के लिए रैखिक और बहुपद प्रतिगमन - पाठ 3\n", + "## कद्दू की कीमत के लिए रैखिक और बहुपदीय प्रतिगमन - पाठ 3\n", "\n", - "आवश्यक पुस्तकालयों और डेटा सेट को लोड करें। डेटा को एक डेटा फ्रेम में बदलें जिसमें डेटा का एक उपसमूह हो:\n", + "आवश्यक लाइब्रेरीज़ और डेटासेट लोड करें। डेटा को एक डेटा फ़्रेम में परिवर्तित करें जिसमें डेटा का एक उपसमूह शामिल हो:\n", "\n", - "- केवल उन कद्दुओं को प्राप्त करें जिनकी कीमत बुशल के आधार पर है \n", - "- तारीख को महीने में बदलें \n", - "- कीमत को उच्च और निम्न कीमतों के औसत के रूप में गणना करें \n", - "- कीमत को बुशल मात्रा के आधार पर दर्शाने के लिए परिवर्तित करें \n" + "- केवल उन कद्दू को लें जिनकी कीमत बसल (bushel) के हिसाब से है\n", + "- तिथि को एक महीने में परिवर्तित करें\n", + "- कीमत को उच्च और निम्न कीमतों के औसत के रूप में गणना करें\n", + "- कीमत को बसल मात्रा के अनुसार दर्शाने के लिए परिवर्तित करें\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "एक स्कैटरप्लॉट हमें याद दिलाता है कि हमारे पास केवल अगस्त से दिसंबर तक का मासिक डेटा है। हमें संभवतः निष्कर्ष निकालने के लिए रैखिक रूप में अधिक डेटा की आवश्यकता होगी।\n" + "एक स्कैटरप्लॉट हमें याद दिलाता है कि हमारे पास केवल अगस्त से दिसंबर तक का मासिक डेटा है। संभावित रूप से, रेखीय रूप में निष्कर्ष निकालने के लिए हमें और अधिक डेटा की आवश्यकता होगी।\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "आइए देखें कि क्या कोई सहसंबंध है:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ऐसा लगता है कि सहसंबंध काफी छोटा है, लेकिन कुछ और अधिक महत्वपूर्ण संबंध है - क्योंकि ऊपर दिए गए प्लॉट में मूल्य बिंदु कई अलग-अलग समूहों में दिखाई देते हैं। आइए एक प्लॉट बनाते हैं जो विभिन्न कद्दू की किस्मों को दिखाएगा:\n" + "ऐसा लगता है कि सहसंबंध काफी कम है, लेकिन कुछ अन्य अधिक महत्वपूर्ण संबंध हैं - क्योंकि ऊपर के प्लॉट में कीमत के बिंदु कई अलग-अलग समूह बनाते हुए दिखाई दे रहे हैं। चलिए एक ऐसा प्लॉट बनाते हैं जो विभिन्न कद्दू की किस्मों को दिखाएगा:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "फिलहाल, आइए केवल एक प्रकार - **पाई प्रकार** पर ध्यान केंद्रित करें।\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### रैखिक प्रतिगमन\n", "\n", - "हम Scikit Learn का उपयोग करके रैखिक प्रतिगमन मॉडल को प्रशिक्षित करेंगे:\n" + "हम रैखिक प्रतिगमन मॉडल प्रशिक्षित करने के लिए Scikit Learn का उपयोग करेंगे:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "रेखा की ढलान को रैखिक प्रतिगमन गुणांक से निर्धारित किया जा सकता है:\n" + "रेखीय प्रतिगमन गुणांक से रेखा का ढाल निर्धारण किया जा सकता है:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "हम प्रशिक्षित मॉडल का उपयोग मूल्य अनुमानित करने के लिए कर सकते हैं:\n" + ] }, { "cell_type": "code", @@ -716,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### बहुपद प्रतिगमन\n", + "### पोलिनोमियल रिग्रेशन\n", "\n", - "कभी-कभी विशेषताओं और परिणामों के बीच का संबंध स्वाभाविक रूप से गैर-रेखीय होता है। उदाहरण के लिए, कद्दू की कीमतें सर्दियों में (महीने=1,2) अधिक हो सकती हैं, फिर गर्मियों में (महीने=5-7) गिर सकती हैं, और फिर बढ़ सकती हैं। रैखिक प्रतिगमन इस संबंध को सटीक रूप से नहीं समझ सकता।\n", + "कभी-कभी फीचर्स और परिणामों के बीच संबंध स्वाभाविक रूप से गैर-रेखीय होता है। उदाहरण के लिए, कद्दू के दाम सर्दी में अधिक हो सकते हैं (महीने=1,2), फिर गर्मी में गिर जाते हैं (महीने=5-7), और फिर फिर से बढ़ जाते हैं। रैखिक रिग्रेशन इस संबंध को सटीक रूप से नहीं पकड़ पाती।\n", "\n", - "इस स्थिति में, हम अतिरिक्त विशेषताओं को जोड़ने पर विचार कर सकते हैं। एक सरल तरीका यह है कि इनपुट विशेषताओं से बहुपदों का उपयोग करें, जिससे **बहुपद प्रतिगमन** प्राप्त होगा। Scikit Learn में, हम पाइपलाइनों का उपयोग करके स्वचालित रूप से बहुपद विशेषताओं की पूर्व-गणना कर सकते हैं:\n" + "इस मामले में, हम अतिरिक्त फीचर्स जोड़ने पर विचार कर सकते हैं। एक सरल तरीका इनपुट फीचर्स से बहुपद (polynomials) का उपयोग करना है, जिससे **पोलिनोमियल रिग्रेशन** होगा। Scikit Learn में, हम पाइपलाइन्स का उपयोग करके स्वचालित रूप से बहुपदीय फीचर्स पूर्व-गणना कर सकते हैं: \n" ] }, { @@ -775,22 +781,25 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### विभिन्न प्रकारों को एन्कोड करना\n", + "### एन्कोडिंग विविधताएं\n", "\n", - "आदर्श स्थिति में, हम चाहते हैं कि एक ही मॉडल का उपयोग करके विभिन्न कद्दू की किस्मों की कीमतों का अनुमान लगाया जा सके। किस्म को ध्यान में रखने के लिए, सबसे पहले हमें इसे संख्यात्मक रूप में बदलना होगा, या **एन्कोड** करना होगा। इसे करने के कई तरीके हैं:\n", + "आदर्श दुनिया में, हम चाहते हैं कि एक ही मॉडल का उपयोग करके विभिन्न कद्दू की विविधताओं के लिए कीमतों का पूर्वानुमान लगाया जा सके। विविधता को ध्यान में रखने के लिए, हमें पहले इसे संख्यात्मक रूप में बदलना होगा, या **एन्कोड** करना होगा। इसे करने के कई तरीके हैं:\n", "\n", - "* सरल संख्यात्मक एन्कोडिंग, जो विभिन्न किस्मों की एक तालिका बनाएगी, और फिर किस्म के नाम को उस तालिका में एक इंडेक्स से बदल देगी। यह रैखिक प्रतिगमन (linear regression) के लिए सबसे अच्छा तरीका नहीं है, क्योंकि रैखिक प्रतिगमन इंडेक्स के संख्यात्मक मान को ध्यान में रखता है, और यह संख्यात्मक मान कीमत के साथ संख्यात्मक रूप से मेल खाने की संभावना नहीं रखता।\n", - "* वन-हॉट एन्कोडिंग (One-hot encoding), जो `Variety` कॉलम को 4 अलग-अलग कॉलम से बदल देगी, प्रत्येक किस्म के लिए एक कॉलम। यह कॉलम 1 दिखाएगा यदि संबंधित पंक्ति दी गई किस्म की है, और अन्यथा 0 दिखाएगा।\n", + "* सरल संख्यात्मक एन्कोडिंग जो विभिन्न विविधताओं की एक तालिका बनाएगी, और फिर उस तालिका में विविधता के नाम को एक सूचकांक से बदल देगी। यह रेखीय प्रतिगमन के लिए सबसे अच्छा विचार नहीं है, क्योंकि रेखीय प्रतिगमन सूचकांक के संख्यात्मक मान को ध्यान में रखता है, और संख्यात्मक मान संभवतः कीमत के साथ संख्यात्मक रूप से संबंधित नहीं होगा।\n", + "* वन-हॉट एन्कोडिंग, जो `Variety` कॉलम को 4 अलग-अलग कॉलमों से बदल देगा, प्रत्येक विविधता के लिए एक कॉलम, जो उस पंक्ति के दिए गए विविधता की होने पर 1 रखेगा, और अन्यथा 0।\n", "\n", - "नीचे दिया गया कोड दिखाता है कि हम किस प्रकार एक किस्म को वन-हॉट एन्कोड कर सकते हैं:\n" + "नीचे का कोड दिखाता है कि हम कैसे किसी विविधता को वन-हॉट एन्कोड कर सकते हैं:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### विविधता पर रैखिक प्रतिगमन\n", + "### विविधता पर रेखीय प्रतिगमन\n", "\n", - "अब हम ऊपर दिए गए कोड का ही उपयोग करेंगे, लेकिन `DayOfYear` के बजाय हम अपनी वन-हॉट-एन्कोडेड विविधता को इनपुट के रूप में उपयोग करेंगे:\n" + "अब हम ऊपर दिए गए कोड का ही उपयोग करेंगे, लेकिन `DayOfYear` के बजाय हम इनपुट के रूप में हमारी वन-हॉट-एन्कोडेड विविधता का उपयोग करेंगे:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "हम उसी तरीके से अन्य विशेषताओं का उपयोग करने की कोशिश कर सकते हैं, और उन्हें संख्यात्मक विशेषताओं जैसे `Month` या `DayOfYear` के साथ संयोजित कर सकते हैं:\n" + "हम इसी तरीके से अन्य फीचर्स का उपयोग करने की भी कोशिश कर सकते हैं, और उन्हें संख्यात्मक फीचर्स के साथ जोड़ सकते हैं, जैसे कि `Month` या `DayOfYear`:\n" ] }, { @@ -1019,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### बहुपद प्रतिगमन\n", + "### Polynomial Regression\n", "\n", - "बहुपद प्रतिगमन का उपयोग उन श्रेणीबद्ध विशेषताओं के साथ भी किया जा सकता है जिन्हें वन-हॉट-एन्कोड किया गया हो। बहुपद प्रतिगमन को प्रशिक्षित करने के लिए कोड मूल रूप से वही होगा जैसा हमने ऊपर देखा है।\n" + "बहुपद प्रतिगमन का उपयोग उन श्रेणीबद्ध विशेषताओं के साथ भी किया जा सकता है जिन्हें वन-हॉट-एन्कोडेड किया गया हो। बहुपद प्रतिगमन को प्रशिक्षित करने के लिए कोड मूल रूप से वही होगा जैसा हमने ऊपर देखा है।\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**अस्वीकरण**: \nयह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \n" + "---\n\n\n**अस्वीकरण**: \nयह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनूदित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T01:05:06+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "hi" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ja/.co-op-translator.json b/translations/ja/.co-op-translator.json index d8ea80d593..a5a9579d59 100644 --- a/translations/ja/.co-op-translator.json +++ b/translations/ja/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ja" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-06T09:34:02+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:40:04+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ja" }, @@ -90,8 +90,8 @@ "language_code": "ja" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:34:32+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:39:34+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ja" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ja" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:37:37+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ja" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-06T09:26:24+00:00", diff --git a/translations/ja/1-Introduction/4-techniques-of-ML/README.md b/translations/ja/1-Introduction/4-techniques-of-ML/README.md index 0cb46e2f64..533dec4572 100644 --- a/translations/ja/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ja/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# 機械学習の技術 +# 機械学習の技法 -機械学習モデルとその使用データを構築、利用、維持するプロセスは、他の多くの開発ワークフローとは大きく異なります。このレッスンでは、そのプロセスを解明し、知っておくべき主要な技術を概説します。以下を学びます: +機械学習モデルとそれが利用するデータを構築、使用、維持するプロセスは、多くの他の開発ワークフローとは非常に異なるプロセスです。このレッスンでは、そのプロセスを明らかにし、知っておくべき主要な技術を概説します。あなたは以下を達成します: -- 機械学習の基盤となるプロセスを高いレベルで理解する。 -- 「モデル」、「予測」、「トレーニングデータ」などの基本概念を探る。 +- 機械学習の基礎となるプロセスを高レベルで理解する。 +- 「モデル」「予測」「訓練データ」などの基本概念を探求する。 -## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ml/) +## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/) -[![初心者向けML - 機械学習の技術](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "初心者向けML - 機械学習の技術") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 上の画像をクリックして、このレッスンの短い動画をご覧ください。 +> 🎥 上の画像をクリックすると、このレッスンの解説動画をご覧いただけます。 ## はじめに -機械学習(ML)プロセスを作成する技術は、以下のステップで構成されています: +機械学習(ML)プロセスを作成する技術は、大まかに次のいくつかのステップで構成されます: -1. **質問を決める**。ほとんどのMLプロセスは、単純な条件付きプログラムやルールベースのエンジンでは答えられない質問をすることから始まります。これらの質問は、データの集合に基づいた予測に関することが多いです。 -2. **データを収集し準備する**。質問に答えるためにはデータが必要です。データの質や量が、最初の質問にどれだけうまく答えられるかを決定します。この段階ではデータの可視化が重要です。また、データをトレーニング用とテスト用に分割してモデルを構築することも含まれます。 -3. **トレーニング方法を選ぶ**。質問やデータの性質に応じて、データを最もよく反映し、正確な予測を行うためのトレーニング方法を選ぶ必要があります。この部分は専門知識が必要であり、実験を繰り返すことが多いです。 -4. **モデルをトレーニングする**。トレーニングデータを使用して、さまざまなアルゴリズムを用いてデータのパターンを認識するモデルをトレーニングします。モデルは内部の重みを調整して、データの特定部分を優先することで、より良いモデルを構築することがあります。 -5. **モデルを評価する**。収集したデータの中から未使用のテストデータを使用して、モデルの性能を確認します。 -6. **パラメータ調整**。モデルの性能に基づいて、アルゴリズムの動作を制御する異なるパラメータや変数を使用してプロセスをやり直すことができます。 -7. **予測する**。新しい入力を使用してモデルの精度をテストします。 +1. 問いを決める。多くのMLプロセスは、単純な条件プログラムやルールベースのエンジンでは答えられない問いを設定することから始まります。これらの問いは、多くの場合、データの集合に基づく予測に関するものです。 +2. データ収集と準備。問いに答えるためにはデータが必要です。データの質や時には量が、最初の問いにどれだけ正確に答えられるかを決定します。データの可視化はこの段階の重要な側面です。この段階には、モデル構築のためにデータを訓練用とテスト用に分割することも含まれます。 +3. 訓練方法を選ぶ。問いとデータの性質に応じて、データを最もよく反映し、正確な予測を行うためにモデルを訓練する方法を選択します。これはMLプロセスで最も専門知識を要し、多くの実験を伴う部分です。 +4. モデルを訓練する。訓練データを使って、様々なアルゴリズムでパターンを認識するモデルを訓練します。モデルは内部の重みを調整して、データの特定部分を優先し、よりよいモデルを作ります。 +5. モデルを評価する。収集した中で今まで使っていなかったデータ(テストデータ)を使い、モデルの性能を評価します。 +6. パラメータ調整。モデルの性能に基づいて、アルゴリズムの動作を制御する異なるパラメータや変数を使って再度プロセスを行います。 +7. 予測する。新しい入力を使ってモデルの精度をテストします。 -## 質問を決める +## 問うべき問い -コンピュータはデータ内の隠れたパターンを発見するのが得意です。この能力は、条件付きルールエンジンを作成するだけでは簡単に答えられない質問を持つ研究者にとって非常に役立ちます。例えば、保険数理のタスクでは、データサイエンティストが喫煙者と非喫煙者の死亡率に関する手作りのルールを構築することができるかもしれません。 +コンピュータはデータの中に隠れたパターンを発見するのが得意です。この利点は、条件付きルールエンジンで容易には答えられない領域の問いを持つ研究者にとって非常に有用です。例えば保険数理の課題であれば、データサイエンティストは喫煙者と非喫煙者の死亡率について手作業でルールを構築できるかもしれません。 -しかし、他の多くの変数が加わると、過去の健康履歴に基づいて将来の死亡率を予測するためにMLモデルの方が効率的である可能性があります。より楽しい例としては、緯度、経度、気候変動、海への近さ、ジェット気流のパターンなどのデータを基に、特定の場所で4月の天気を予測することが挙げられます。 +しかし、多くの他の変数が関係してくると、過去の健康履歴に基づいて将来の死亡率を予測するにはMLモデルの方が効率的かもしれません。より楽しい例としては、与えられた場所の4月の天気予報を緯度、経度、気候変動、海との距離、ジェット気流のパターンなどのデータを基に予測することが挙げられます。 -✅ この[スライドデッキ](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)では、天気分析におけるMLの歴史的な視点を提供しています。 +✅ この[スライドデッキ](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)は天気モデルの歴史的観点から、気象解析におけるMLの利用を紹介しています。 -## モデル構築前のタスク +## 構築前の準備タスク -モデルを構築する前に、いくつかのタスクを完了する必要があります。質問をテストし、モデルの予測に基づいて仮説を形成するためには、いくつかの要素を特定し設定する必要があります。 +モデル構築を始める前に、いくつか完了すべきタスクがあります。問いを検証し、モデルの予測に基づく仮説を形成するには、いくつかの要素を特定して設定する必要があります。 ### データ -質問に確実に答えるためには、適切な種類の十分な量のデータが必要です。この時点で以下のことを行う必要があります: +問いにある程度の確度で答えるためには、適切な種類の十分なデータが必要です。この時点で行うべきことは2つあります: -- **データを収集する**。前回のレッスンで学んだデータ分析の公平性を念頭に置き、データを慎重に収集します。このデータの出所、潜在的なバイアス、出所の記録に注意してください。 -- **データを準備する**。データ準備プロセスにはいくつかのステップがあります。異なるソースからのデータを統合し正規化する必要があるかもしれません。データの質と量を向上させるために、文字列を数値に変換する([クラスタリング](../../5-Clustering/1-Visualize/README.md)で行うように)などの方法を使用することがあります。また、元のデータに基づいて新しいデータを生成する([分類](../../4-Classification/1-Introduction/README.md)で行うように)こともあります。データをクリーンアップし編集する([Webアプリ](../../3-Web-App/README.md)レッスンの前に行うように)こともあります。最後に、トレーニング技術に応じてデータをランダム化しシャッフルする必要があるかもしれません。 +- データ収集。以前のレッスンで学んだデータ分析の公平性を念頭に置き、データの収集を行います。このデータの出所や、それに伴う偏りがないか注意深く把握し、それを記録してください。 +- データ準備。データ準備にはいくつかのステップがあります。複数の異なるソースから来たデータをまとめて正規化する必要があるかもしれません。文字列を数値に変換してデータの質や量を改善する方法もあります([クラスタリング](../../5-Clustering/1-Visualize/README.md)での方法を参照)。元のデータを基に新たなデータを生成することもあります([分類](../../4-Classification/1-Introduction/README.md)での例)。データをクリーニングや編集することもあります([Webアプリ](../../3-Web-App/README.md)レッスンの前に行います)。訓練手法に応じて、データをランダム化・シャッフルする必要もあるかもしれません。 -✅ データを収集し処理した後、その形状が意図した質問に対応できるかどうか確認してください。データが特定のタスクでうまく機能しない場合もあります。[クラスタリング](../../5-Clustering/1-Visualize/README.md)のレッスンでそのことを発見します! +✅ データを収集・処理した後、その形状が目的の問いに対応できそうか確認しましょう。場合によっては、与えられた課題において十分に性能を発揮しないこともあります([クラスタリング](../../5-Clustering/1-Visualize/README.md)レッスンで確認します)。 -### 特徴量とターゲット +### 特徴とターゲット -[特徴量](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)はデータの測定可能な属性です。多くのデータセットでは、「日付」、「サイズ」、「色」などの列見出しとして表現されます。特徴量変数は通常コード内で`X`として表され、モデルをトレーニングするために使用される入力変数を表します。 +[特徴量](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)はデータの測定可能な性質です。多くのデータセットでは、「日付」「サイズ」「色」などの列タイトルとして表現されます。特徴変数は通常、コード上で`X`で表され、モデル訓練の入力変数です。 -ターゲットは予測しようとしているものです。ターゲットは通常コード内で`y`として表され、データに対して尋ねようとしている質問の答えを表します。例えば、12月に最も安いカボチャの**色**は何か?サンフランシスコで最も良い不動産**価格**を持つ地域はどこか?ターゲットはラベル属性とも呼ばれることがあります。 +ターゲットは予測したい対象です。コードでは通常`y`で表し、問いに対する答えを示します:12月にどののカボチャが最も安いか?サンフランシスコで不動産の価格が最も良い地区はどこか?ターゲットはラベル属性とも呼ばれます。 -### 特徴量変数の選択 +### 特徴変数の選択 -🎓 **特徴量選択と特徴量抽出** モデルを構築する際にどの変数を選ぶべきかどうやって判断しますか?特徴量選択または特徴量抽出のプロセスを経て、最もパフォーマンスの高いモデルに適した変数を選ぶことになります。ただし、これらは同じものではありません。「特徴量抽出は元の特徴量の関数から新しい特徴量を作成するのに対し、特徴量選択は特徴量のサブセットを返します。」([出典](https://wikipedia.org/wiki/Feature_selection)) +🎓 特徴選択と特徴抽出 モデルを構築するとき、どの変数を選ぶべきかどうやって決めますか?おそらく特徴選択や特徴抽出の過程を経て、最も性能の良いモデルに適した変数を選びます。ただし両者は同じではありません。「特徴抽出は元の特徴から新しい特徴を関数的に生成するもので、特徴選択は特徴の部分集合を返すものです。」([出典](https://wikipedia.org/wiki/Feature_selection)) -### データを可視化する +### データの可視化 -データサイエンティストのツールキットの重要な側面は、SeabornやMatPlotLibなどの優れたライブラリを使用してデータを可視化する力です。データを視覚的に表現することで、活用できる隠れた相関関係を発見することができます。また、偏りや不均衡なデータを発見する助けにもなります([分類](../../4-Classification/2-Classifiers-1/README.md)でそのことを発見します)。 +データサイエンティストのツールキットで重要な側面は、SeabornやMatPlotLibのような優れたライブラリを使ってデータを可視化する力です。データを視覚的に表現することで、活用できる隠れた相関を発見できるかもしれません。可視化はまた、バイアスや不均衡なデータの発見にも役立ちます([分類](../../4-Classification/2-Classifiers-1/README.md)で発見します)。 -### データセットを分割する +### データセットの分割 -トレーニングの前に、データセットを不均等なサイズの2つ以上の部分に分割し、それでもデータをよく表現する必要があります。 +訓練の前に、データセットを異なるサイズの2つ以上の部分に分割し、それぞれが全体のデータをよく代表する必要があります。 -- **トレーニング**。データセットのこの部分はモデルに適合させてトレーニングします。このセットは元のデータセットの大部分を構成します。 -- **テスト**。テストデータセットは、元のデータから収集された独立したデータ群であり、構築されたモデルの性能を確認するために使用されます。 -- **検証**。検証セットは、モデルのハイパーパラメータやアーキテクチャを調整してモデルを改善するために使用される、より小さな独立した例のグループです。データのサイズや質問によっては、この第3のセットを構築する必要がない場合もあります([時系列予測](../../7-TimeSeries/1-Introduction/README.md)でそのことを指摘します)。 +- 訓練用。モデルを訓練するために使うデータセットの部分です。元のデータセットの大部分を占めます。 +- テスト用。独立したデータ群で、しばしば元データの中から集められ、構築したモデルの性能検証に使います。 +- 検証用。モデルのハイパーパラメータや構造を調整するために使う小さい独立したデータ群です。データのサイズや問いにより、この第三のセットは不要な場合もあります([時系列予測](../../7-TimeSeries/1-Introduction/README.md)で述べています)。 -## モデルを構築する +## モデル構築 -トレーニングデータを使用して、さまざまなアルゴリズムを使用してデータを**トレーニング**し、統計的な表現であるモデルを構築することが目標です。モデルをトレーニングすることで、データにさらされ、発見したパターンを検証し、受け入れるか拒否することができます。 +訓練データを使って、様々なアルゴリズムでモデル、すなわちデータの統計的表現を訓練します。モデルの訓練とは、パターンを発見し検証し、受け入れたり却下したりすることによって、モデルをデータに適合させることです。 -### トレーニング方法を決める +### 訓練方法の決定 -質問やデータの性質に応じて、トレーニング方法を選択します。このコースで使用する[Scikit-learnのドキュメント](https://scikit-learn.org/stable/user_guide.html)をステップごとに進むことで、モデルをトレーニングする多くの方法を探ることができます。経験に応じて、最適なモデルを構築するためにいくつかの異なる方法を試す必要があるかもしれません。データサイエンティストがモデルの性能を評価するプロセスを経る可能性が高く、未使用のデータを与え、精度、偏り、その他の品質を低下させる問題を確認し、タスクに最も適したトレーニング方法を選択します。 +問いとデータの性質に応じて、モデルの訓練方法を選びます。このコースで用いる[Scikit-learnのドキュメント](https://scikit-learn.org/stable/user_guide.html)を調べて、多様な方法を学びます。経験に応じて、複数の方法を試し最良のモデルを作るかもしれません。データサイエンティストは未知のデータをモデルに入力して精度やバイアスを検証し、最適な訓練方法を選択するプロセスを経るでしょう。 -### モデルをトレーニングする +### モデルを訓練する -トレーニングデータを手に入れたら、モデルを「適合」させて作成する準備が整います。多くのMLライブラリでは「model.fit」というコードを見つけることができます。この時点で、特徴量変数(通常は「X」)を値の配列として、ターゲット変数(通常は「y」)を送信します。 +訓練データを使いモデルに「適合(fit)」させます。多くのMLライブラリでは`model.fit`というコードを使い、この時点で特徴変数(通常は`X`の配列)とターゲット変数(通常は`y`)をモデルに渡します。 -### モデルを評価する +### モデルの評価 -トレーニングプロセスが完了すると(大きなモデルをトレーニングするには多くの反復、または「エポック」が必要になることがあります)、モデルの品質を評価するためにテストデータを使用して性能を測定することができます。このデータは、モデルが以前に分析していない元のデータのサブセットです。モデルの品質に関するメトリクスの表を出力することができます。 +訓練が終わると(大きなモデルでは多くの繰り返し、つまり「エポック」が必要)、モデルの性能をテストデータで評価できます。このデータはモデルが未解析の元のデータの一部で、モデルの質を測る各種メトリクスを表にして出力できます。 -🎓 **モデルの適合** +🎓 モデルの適合 -機械学習の文脈では、モデルの適合とは、モデルの基礎となる関数が未知のデータを分析しようとする際の精度を指します。 +機械学習の文脈では、モデル適合は未知のデータ分析に対するモデルの基礎関数の正確さを指します。 -🎓 **過学習**と**未学習**は、モデルの品質を低下させる一般的な問題です。モデルがトレーニングデータに対して十分に適合しない、または適合しすぎることで、トレーニングデータに対して予測が正確すぎたり、逆に正確でなかったりします。過学習したモデルは、データの詳細やノイズを過剰に学習してしまうため、トレーニングデータを非常に正確に予測します。一方、未学習のモデルは、トレーニングデータや未知のデータを正確に分析することができません。 +🎓 アンダーフィッティングオーバーフィッティングはモデルの質を悪化させる一般的問題で、モデルがデータに適合しすぎても不足しても起こります。オーバーフィッティングは訓練データの細部やノイズまで学習しすぎたため、訓練データには非常に正確に予測するが未見のデータへの一般化能力が低い状態。アンダーフィッティングはモデルが訓練データも未知データも正確に分析できない状態です。 -![過学習モデル](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> [Jen Looper](https://twitter.com/jenlooper)によるインフォグラフィック +![overfitting model](../../../../translated_images/ja/overfitting.1c132d92bfd93cb6.webp) +> インフォグラフィック by [Jen Looper](https://twitter.com/jenlooper) ## パラメータ調整 -初期トレーニングが完了したら、モデルの品質を観察し、「ハイパーパラメータ」を調整することで改善を検討します。[ドキュメント](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)でプロセスについて詳しく読むことができます。 +初回の訓練プロセスが終わったら、モデルの質を観察し、「ハイパーパラメータ」を調整して改善を検討します。詳しいプロセスは[ドキュメント](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)を参照してください。 ## 予測 -完全に新しいデータを使用してモデルの精度をテストする瞬間です。「応用」MLの設定では、モデルを本番環境で使用するためのWeb資産を構築する場合、このプロセスにはユーザー入力(例えばボタンの押下)を収集して変数を設定し、モデルに推論または評価を送信することが含まれるかもしれません。 +この段階で全く新しいデータを使い、モデルの精度をテストできます。実運用のML環境では、モデルを本番で利用するためにユーザーの入力(ボタン押下など)を変数に設定し、推論や評価のためにモデルに送る処理が関わることもあります。 -これらのレッスンでは、準備、構築、テスト、評価、予測の方法を学び、データサイエンティストとしてのジェスチャーをすべて学びながら、「フルスタック」MLエンジニアになる旅を進めていきます。 +これらのレッスンでは、準備、構築、テスト、評価、予測といったデータサイエンティストの主要な作業を学び、さらに「フルスタック」MLエンジニアとなる旅を進めていきます。 --- ## 🚀チャレンジ -ML実践者のステップを反映したフローチャートを描いてみましょう。現在プロセスのどこにいると思いますか?どこで困難を感じると予測しますか?何が簡単に感じますか? +ML実践者のステップを示すフローチャートを描いてみましょう。今、自分はその中のどこにいると思いますか?どの部分で困難を感じそうですか?どの部分は簡単そうに感じますか? -## [講義後のクイズ](https://ff-quizzes.netlify.app/en/ml/) +## [事後講義クイズ](https://ff-quizzes.netlify.app/en/ml/) -## 復習と自己学習 +## 復習と自主学習 -データサイエンティストが日常の仕事について語るインタビューをオンラインで検索してみましょう。こちらに[一例](https://www.youtube.com/watch?v=Z3IjgbbCEfs)があります。 +データサイエンティストの日常の仕事について語るインタビューをオンラインで探しましょう。こちらが[例](https://www.youtube.com/watch?v=Z3IjgbbCEfs)です。 ## 課題 -[データサイエンティストにインタビューする](assignment.md) +[データサイエンティストへのインタビュー](assignment.md) --- + **免責事項**: -この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な表現が含まれる可能性があります。元の言語で記載された原文が公式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の利用に起因する誤解や誤認について、当社は一切の責任を負いません。 \ No newline at end of file +本書類はAI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご了承ください。原文のネイティブ言語版が権威ある情報源とみなされます。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因するいかなる誤解や誤訳に対しても責任を負いかねます。 + \ No newline at end of file diff --git a/translations/ja/2-Regression/3-Linear/README.md b/translations/ja/2-Regression/3-Linear/README.md index 3e8058f84a..7739be97f2 100644 --- a/translations/ja/2-Regression/3-Linear/README.md +++ b/translations/ja/2-Regression/3-Linear/README.md @@ -1,99 +1,99 @@ -# Scikit-learnを使った回帰モデルの構築:4つの回帰手法 +# Scikit-learnを使って回帰モデルを構築する:回帰の4つの方法 ## 初心者向けノート -線形回帰は、数値的な値(例えば、家の価格、気温、売上高)を予測したいときに使われます。 -入力特徴量と出力の関係を最もよく表す直線を見つけることで動作します。 +線形回帰は、数値的な値(例えば、家の価格、気温、売上など)を予測したいときに使用します。 +これは、入力特徴量と出力の関係を最もよく表す直線を見つけることで機能します。 -このレッスンでは、より高度な回帰手法に進む前に、概念の理解に重点を置きます。 -![線形回帰と多項式回帰のインフォグラフィック](../../../../translated_images/ja/linear-polynomial.5523c7cb6576ccab.webp) +このレッスンでは、高度な回帰手法を探る前に、概念の理解に焦点を当てます。 +![線形回帰と多項式回帰のインフォグラフィック](../../../../translated_images/ja/linear-polynomial.5523c7cb6576ccab.webp) > インフォグラフィック作成者:[Dasani Madipalli](https://twitter.com/dasani_decoded) -## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/) + +## [事前クイズ](https://ff-quizzes.netlify.app/en/ml/) > ### [このレッスンはRでも利用可能です!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) + ### はじめに -これまで、かぼちゃの価格設定データセットから収集したサンプルデータを使って回帰とは何かを探りました。このレッスン全体でこのデータセットを使用します。また、Matplotlibを使って可視化も行いました。 +これまでに、パンプキンプライシングのデータセットから収集したサンプルデータで回帰について探ってきました。このレッスン全体で使うデータセットです。またMatplotlibを使ってそれを視覚化もしました。 -いよいよ機械学習の回帰をより深く掘り下げる準備ができました。可視化によりデータの内容を理解することはできますが、機械学習の真の強みは_モデルのトレーニング_にあります。モデルは過去のデータで学習し、自動的にデータの依存関係を捉え、新しいデータに対して予測を行うことができます。 +今度はMLの回帰についてより深く掘り下げる準備ができました。視覚化はデータを理解するのに役立ちますが、機械学習の真の力は_モデルを訓練すること_にあります。モデルは過去のデータで訓練され、データの依存関係を自動的に捉え、新しいデータ(モデルが見たことのない)に対して結果を予測できるようになります。 -このレッスンでは、_基本的な線形回帰_と_多項式回帰_の2種類の回帰について詳しく学び、それらの手法の背後にある数学も一部扱います。これらのモデルを利用して、さまざまな入力データに基づいたかぼちゃの価格を予測します。 +このレッスンでは、_基本的な線形回帰_ と _多項式回帰_ の2種類の回帰と、それらの技術の基礎となる数学について学びます。これらのモデルを使って、入力データに応じたパンプキンの価格を予測できるようになります。 -[![初心者のための機械学習 - 線形回帰の理解](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初心者のための機械学習 - 線形回帰の理解") +[![初心者向けML - 線形回帰の理解](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初心者向けML - 線形回帰の理解") -> 🎥 上の画像をクリックすると線形回帰の簡単な動画概要が見られます。 +> 🎥 上の画像をクリックすると、線形回帰の短いビデオ概要が視聴できます。 -> このカリキュラム全体を通じて、数学の知識は最小限に抑え、他分野から来た学生でも理解しやすいよう工夫しています。メモ、🧮 コールアウト、図解などの学習支援も随所にあります。 +> このカリキュラム全体では、数学の知識は最小限に抑え、他分野から来た学生でも理解しやすいようにしています。理解に役立つノートや🧮解説、図、その他学習ツールにも注目してください。 ### 前提条件 -かぼちゃデータの構造に既に慣れているはずです。このレッスンの_notebook.ipynb_に前処理済みの状態で組み込まれています。ファイル内ではバッシェル単位のかぼちゃ価格が新しいデータフレームに表示されています。Visual Studio Codeのカーネルでこれらのノートブックが動作するか必ず確認してください。 +これまでに、調査しているパンプキンデータの構造に慣れているはずです。このレッスンの_notebook.ipynb_ファイルには、データが事前に読み込まれ、クリーニング済みで含まれています。パンプキンの価格はバッシェル単位で新しいデータフレームに表示されています。Visual Studio Codeのカーネル上でこれらのノートブックを実行できるようにしてください。 ### 準備 -念のために言えば、このデータを読み込み、そこから質問を立てることが目的です。 - -- かぼちゃを買うベストな時期はいつか? -- ミニかぼちゃのケースの価格はいくらか? -- 半バッシェルのバスケットと1 1/9バッシェルの箱、どちらで買うべきか? -さらにデータを深掘りしていきましょう。 +改めて言いますが、あなたはこのデータを読み込んで、そこから質問をしていきます。 -前回のレッスンで、Pandasのデータフレームを作成し、元のデータセットの一部を抽出、バッシェル単位で価格を標準化しました。しかしその際、約400件のデータポイントしか得られず、対象は秋の月だけでした。 +- パンプキンを買うのに最適な時期はいつか? +- ミニチュアパンプキンのケースはどのくらいの価格になるのか? +- 半バッシェルのバスケットで買うべきか、1 1/9 バッシェルの箱で買うべきか? -このレッスンのノートブックにプリロードされたデータを見てみましょう。データは既に読み込まれ、月ごとの散布図が作成されています。データの性質をもう少し詳しく理解するため、データをさらにクリーニングすることができるかもしれません。 +このデータをさらに掘り下げていきましょう。 -## 線形回帰直線 +前のレッスンで、Pandasのデータフレームを作成し、元のデータセットの一部を取り込み、価格をバッシェルで標準化しました。しかし、この方法では約400のデータポイントと秋の月のみしか集められていませんでした。 -レッスン1で学んだように、線形回帰の目的は直線をプロットして、 +このレッスンに付属のノートブックに事前に読み込まれたデータを見てみましょう。データは事前読み込みされ、初期の散布図も作成されていて、月データが表示されています。もっと詳細にデータの性質を調べるために、さらにクリーニングしてみましょう。 -- 変数間の関係を示すこと。変数間の関係を表現する -- 予測を行うこと。新しいデータ点がその直線に対してどこに位置するかを正確に予測する +## 線形回帰線 -ことです。 +レッスン1で学んだ通り、線形回帰の目的は次のような直線を描くことです: -この種の直線を引くのは通常、最小二乗回帰と呼ばれる手法です。「最小二乗」はモデル内の誤差(残差)を最小化するプロセスを指します。各データポイントに対して、実際の点と回帰直線との垂直距離(残差)を測ります。 +- **変数間の関係を示す。** 変数同士の関係性を示す。 +- **予測を行う。** 新しいデータ点が線上のどこに位置するかを正確に予測する。 -二乗和を使う理由は主に2つです: +このような線を引く代表的な方法は最小二乗法回帰です。「最小二乗」はモデルの全体的な誤差を最小化するプロセスを指します。すべてのデータ点に対し、実際の点と回帰線の縦方向の距離(残差と呼ばれます)を測ります。 -1. 大きさを重視し方向は無視:誤差の-5も+5も同じ扱いにしたいため、全て正の値にするために二乗します。 +これらの距離を二乗する理由は主に2つあります: -2. 外れ値へのペナルティ:大きな誤差により大きな重みを与えることで、遠く離れた点に線が近づくようにします。 +1. **大きさは方向に優先。** -5の誤差と+5の誤差を同じ扱いにしたいためです。二乗することで全ての値が正になります。 +2. **外れ値の罰則。** 二乗すると大きな誤差がより重要視され、線が遠い点に近づくように調整されます。 -これらの二乗値の合計を計算し、その合計が最小となる直線を探します。これが「最小二乗法」の名前の由来です。 +これらの二乗誤差を全て合計し、その合計が最小になる線を見つけるのが「最小二乗法」です。 -> **🧮 数学を見てみましょう** -> -> この直線は_最適適合直線_と呼ばれ、[次の式](https://en.wikipedia.org/wiki/Simple_linear_regression)で表されます: -> +> **🧮 数学を見てみよう** +> +> この線は_最良適合直線_ と呼ばれ、[以下の式](https://en.wikipedia.org/wiki/Simple_linear_regression)で表されます: +> > ``` > Y = a + bX > ``` -> -> `X`は「説明変数」、`Y`は「目的変数」です。直線の傾きは`b`、`a`は切片で、`X=0`のときの`Y`の値を指します。 -> ->![傾きの計算](../../../../translated_images/ja/slope.f3c9d5910ddbfcf9.webp) -> -> まず傾き`b`を計算します。インフォグラフィックは [Jen Looper](https://twitter.com/jenlooper) さん作成 -> -> 言い換えれば、「月ごとのかぼちゃ価格を予測する」というオリジナルの問題に関連するとき、`X`が価格、`Y`が販売月を表します。 -> ->![計算の完成](../../../../translated_images/ja/calculation.a209813050a1ddb1.webp) -> -> `Y`の値を計算します。価格が約4ドルなら4月と推測!インフォグラフィックは [Jen Looper](https://twitter.com/jenlooper) さん作成 -> -> 直線計算の数学は、切片(`X=0`の場合の`Y`の値)に依存する傾きを示す必要があります。 -> -> これらの値の算出方法は [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) のサイトで説明されています。また [この最小二乗計算機](https://www.mathsisfun.com/data/least-squares-calculator.html) で数値が直線に与える影響を確認できます。 +> +> `X` は「説明変数」、`Y` は「従属変数」を表します。傾きは `b`、切片は `a` で、`X=0` の時の `Y` の値を指します。 +> +>![傾きを計算](../../../../translated_images/ja/slope.f3c9d5910ddbfcf9.webp) +> +> まず傾き `b` を計算します。インフォグラフィック作成者:[Jen Looper](https://twitter.com/jenlooper) +> +> 言い換えると、パンプキンデータの元の問い「月ごとにパンプキンのバッシェル単価を予測する」に対して、`X` が価格を、`Y` が販売月を表します。 +> +>![式を完成させる](../../../../translated_images/ja/calculation.a209813050a1ddb1.webp) +> +> `Y` の値を計算します。4ドル程度支払うなら4月に違いありません!インフォグラフィック作成者:[Jen Looper](https://twitter.com/jenlooper) +> +> この式は傾きを算出し、それは切片、つまり `X=0` のときの `Y` の場所にも依存します。 +> +> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) のサイトで計算方法を確認できます。また、[この最小二乗法計算機](https://www.mathsisfun.com/data/least-squares-calculator.html)も見て、数字の値が線にどう影響するかを観察してみてください。 ## 相関 -理解すべきもう一つの用語は、与えられたXとY変数間の相関係数です。散布図を使えば、この係数を素早く視覚的に把握できます。データ点がきれいに一直線上に散らばっている場合は高い相関があり、XとYの間で点がバラバラに散らばっていれば相関は低いです。 +もう一つ理解しておきたい用語は、与えられたXとYの変数間の相関係数です。散布図を使うと、この係数を簡単に視覚化できます。点がきれいな直線上に並んでいる散布図は相関が高く、点がXとYの間にばらけている散布図は相関が低いことを示します。 -良い線形回帰モデルとは、最小二乗法の回帰直線で高い(0より1に近い)相関係数を持つモデルです。 +良い線形回帰モデルは、最小二乗法回帰での相関係数が高い(0に近いより1に近い)ものです。 -✅ このレッスンのノートブックを実行して、月と価格の散布図を見てください。かぼちゃの月と価格の関連は、散布図の視覚的解釈から見ると高い相関でしょうか?それとも低いでしょうか?また、`Month`ではなく、より細かい指標(例えば、年始からの通算日数)を使うとどう変わるか確認してください。 +✅ このレッスンに付属のノートブックを実行し、月と価格の散布図を見てみましょう。パンプキン販売の月と価格のデータは、散布図の視覚的解釈に基づくと相関は高そうですか、それとも低そうですか?`Month` ではなく、もっと細かい尺度(例えば、年始からの日数= *day of the year*)を使うとどう変わりますか? -以下のコードでは、データがクリーニングされ、`new_pumpkins`という名前のデータフレームが得られていると仮定します。以下のようなデータです: +以下のコードでは、データをクリーニングしたうえで、以下のようなデータフレーム `new_pumpkins` が得られていると仮定します: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,38 +101,38 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -> データクリーニングのコードは[`notebook.ipynb`](notebook.ipynb)にあります。前回のレッスンと同様のクリーニング手順を行い、`DayOfYear`カラムは以下の式で算出しています: +> データをクリーニングするコードは [`notebook.ipynb`](notebook.ipynb) にあります。前のレッスンと同様のクリーニング処理を行い、以下の式で `DayOfYear` 列を算出しています: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` + +線形回帰の数学的背景が分かったところで、パンプキンの最適なパッケージ価格を予測できるか試すために、回帰モデルを作成しましょう。ホリデーパンプキンパッチ向けにパンプキンを買う人が、購入パッケージの選択を最適化するための情報が必要かもしれません。 -線形回帰の数学的背景を理解したので、回帰モデルを作成し、どのかぼちゃパッケージが最も価格的に有利か予測できるか試してみましょう。かぼちゃパッチのためにかぼちゃを買う人にとって、この情報はパッチ用のかぼちゃ購入最適化に役立つでしょう。 - -## 相関を探す +## 相関を探る -[![初心者のための機械学習 - 相関関係の探求:線形回帰の鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初心者のための機械学習 - 相関関係の探求:線形回帰の鍵") +[![初心者向けML - 相関の探し方:線形回帰の鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初心者向けML - 相関の探し方:線形回帰の鍵") -> 🎥 上の画像をクリックすると相関関係の簡単な動画概要が見られます。 +> 🎥 上の画像をクリックすると、相関の短いビデオ概要が視聴できます。 -前回のレッスンでは月ごとの平均価格は以下のようでした: +前のレッスンで見たように、月ごとの平均価格は以下のようになっています: 月ごとの平均価格 -これは一定の相関関係があることを示唆しています。そこで、`Month`と`Price`間、もしくは`DayOfYear`と`Price`間の関係性を予測する線形回帰モデルのトレーニングを試みます。以下がその後者の散布図です: +これは、相関が存在するはずだと示唆しています。`Month` と `Price` の関係、または `DayOfYear` と `Price` の関係を線形回帰モデルで予測することができます。以下は後者の散布図です: 価格と年初からの日数の散布図 -`corr`関数で相関を見てみましょう: +`corr` 関数で相関があるか見てみましょう: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -月を使った場合-0.15、日数を使った場合-0.17と相関は小さいように見えますが、別の重要な関係もありそうです。どうやら価格のクラスターはかぼちゃの品種によって異なっているようです。この仮説を確かめるため、品種ごとに色分けしてプロットします。`scatter`関数に`ax`パラメータを渡すことで全ての点を同じグラフ上に描画できます: + +月単位では約-0.15、年初からの日数単位では約-0.17と相関は低めに見えますが、別の重要な関係があるかもしれません。異なるパンプキンの品種によって価格のクラスターができているように見えます。この仮説を確かめるために、品種ごとに異なる色でプロットしてみましょう。`scatter` プロット関数に `ax` パラメータを渡してすべての点を同じグラフ上に描画できます: ```python ax=None @@ -141,75 +141,76 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): df = new_pumpkins[new_pumpkins['Variety']==var] ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` + +価格と年初からの日数の品種別散布図 -価格と年初からの日数の散布図(色分けあり) - -調査の結果、品種が販売日の影響よりも総価格に影響を与えていることが示されました。棒グラフでもわかります: +調査の結果、品種の方が販売日よりも全体の価格に影響を与えていることが分かりました。棒グラフでも確認できます: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` + +品種別価格の棒グラフ -品種ごとの価格の棒グラフ - -ここでは一旦、かぼちゃ品種の一つである「パイタイプ」に焦点を当て、日付が価格に与える影響を見てみましょう: +今は「pie type」というパンプキン品種にだけ注目して、日付が価格に及ぼす影響を見てみましょう: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -価格と年初からの日数の散布図(パイタイプのみ) + +pie typeパンプキン価格と年初からの日数の散布図 -ここで`Price`と`DayOfYear`の相関を`corr`関数で計算すると、約`-0.27`となります。つまり予測モデルを学習する価値があると言えます。 +`Price` と `DayOfYear` の相関を `corr` で計算すると `-0.27` 程度になるので、予測モデルを訓練する意味があると判断できます。 -> 線形回帰モデルをトレーニングする前に、データがクリーンかどうか確認しましょう。線形回帰は欠損値に弱いため、空のセルを削除するのが有効です: +> 線形回帰モデルを訓練する前に、データが綺麗であることを確認することが重要です。線形回帰は欠損値に弱いため、空のセルは除去しておくのが良いでしょう: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -別の方法としては、空のセルを対応する列の平均値で埋める方法もあります。 + +欠損値を、その列の平均値で埋めるアプローチもあります。 ## 単純線形回帰 -[![初心者のための機械学習 - Scikit-learnによる線形回帰と多項式回帰](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初心者のための機械学習 - Scikit-learnによる線形回帰と多項式回帰") +[![初心者向けML - Scikit-learnを使った線形回帰と多項式回帰](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初心者向けML - Scikit-learnを使った線形回帰と多項式回帰") -> 🎥 上の画像をクリックすると線形回帰と多項式回帰の簡単な動画概要が見られます。 +> 🎥 上の画像をクリックすると、線形回帰と多項式回帰の短いビデオ概要が視聴できます。 -線形回帰モデルのトレーニングにはScikit-learnライブラリを使用します。 +線形回帰モデルの訓練には、**Scikit-learn** ライブラリを使います。 ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -まず入力値(特徴量)と期待される出力(ラベル)を別々のnumpy配列に分けます: + +まず、入力値(特徴量)と予測したい出力(ラベル)を別々のNumPy配列に分けます: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` + +> 入力データに`reshape`を用いた点に注意してください。Linear Regressionは2次元配列を入力と想定しており、配列の各行が特徴量ベクトルに対応します。今回は特徴量が1つだけなので、データセットサイズNに対して形状N×1の配列が必要になります。 -> 入力データに`reshape`を施した理由は、線形回帰パッケージが正しく理解するためです。線形回帰は2次元配列を入力として期待しており、配列の各行は入力特徴量のベクトルに対応します。今回は入力がひとつだけなので、形状はN×1となります(Nはデータセットのサイズ)。 - -次に、トレーニング用データとテスト用データに分割し、学習後にモデルの検証ができるようにします: +次に、データを訓練用と検証用に分割します。訓練後にモデルの評価ができるようにするためです: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -最後に、線形回帰モデルのトレーニングはたった2行のコードです。`LinearRegression`オブジェクトを定義し、その`fit`メソッドでデータにフィットさせます: + +最後に、線形回帰モデルの実際の訓練は2行のコードで済みます。`LinearRegression` オブジェクトを定義し、`fit` メソッドでデータに適合させます: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit` 後の `LinearRegression` オブジェクトには回帰のすべての係数が含まれており、`.coef_` プロパティを使ってアクセスできます。今回の場合、係数はひとつだけで、約 `-0.017` です。これは価格が時間とともに少しずつ下がる傾向があることを示しており、1日あたり約2セントの減少を意味します。また、回帰直線のY軸との交点には `lin_reg.intercept_` を使ってアクセスでき、今回の場合は約 `21` で、年初の価格を示しています。 +`fit` 後の `LinearRegression` オブジェクトには回帰のすべての係数が含まれており、これは `.coef_` プロパティを使ってアクセスできます。今回の場合、係数は1つだけで、約 `-0.017` であるはずです。これは、価格が時間の経過とともに少しずつ下がっているように見えますが、1日あたり約2セントとそれほど大きくないことを意味します。また、回帰のY軸との交点には `lin_reg.intercept_` を使ってアクセスでき、今回の場合は約 `21` となり、年の初めの価格を示しています。 -モデルの精度を確認するために、テストデータセットで価格を予測し、その予測値が期待値にどれだけ近いかを測定できます。これは二乗平均平方根誤差(RMSE)という指標を使って行い、期待値と予測値のすべての二乗差の平均の平方根を計算します。 +モデルの精度を確認するために、テストデータセット上で価格を予測し、それから予測値が期待値にどれだけ近いかを測定できます。これは平方根平均二乗誤差(RMSE)という指標を使って行われ、期待値と予測値のすべての二乗差の平均の平方根です。 ```python pred = lin_reg.predict(X_test) @@ -218,16 +219,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -誤差は約2ポイント、すなわち約17%となり、あまり良くありません。モデル品質の別の指標として 決定係数 があります。これは次のように取得できます: +誤差は約2ポイント(約17%)で、あまり良くありません。モデル品質の別の指標として、決定係数 があり、これは次のようにして得られます: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -値が0の場合、モデルは入力データを考慮せず、結果の単純な平均値として振る舞う「最悪の線形予測子」となります。値が1の場合、すべての期待出力を完全に予測できることを意味します。今回の決定係数は約0.06で、かなり低い値です。 +値が0の場合、モデルは入力データを考慮しておらず、結果の平均値を返すだけの最悪の線形予測器として機能していることを意味します。値が1の場合は、すべての期待される出力を完全に予測できることを意味します。今回の場合、決定係数は約0.06と低い値です。 -テストデータと回帰直線を一緒にプロットすると、回帰の仕組みがよりわかりやすくなります: +回帰線とテストデータを一緒にプロットして、回帰がどのように機能しているかをよりよく確認することもできます: ```python plt.scatter(X_test,y_test) @@ -238,17 +239,17 @@ plt.plot(X_test,pred) ## 多項式回帰 -線形回帰の別のタイプとして多項式回帰があります。変数間に必ずしも線形関係があるとは限らず、たとえばカボチャの体積が大きいほど価格が高くなる場合でも、それが平面や直線として表現できないことがあります。 +線形回帰の別のタイプが多項式回帰です。変数間の関係が線形であることもあります — 例えば体積が大きいパンプキンは価格が高い — が、時にはこれらの関係を平面や直線としてプロットできないこともあります。 -✅ こちらに [多項式回帰が有効な他の例](https://online.stat.psu.edu/stat501/lesson/9/9.8) があります +✅ こちらは多項式回帰を使うことができる [他のいくつかの例](https://online.stat.psu.edu/stat501/lesson/9/9.8) です。 -再度、日付と価格の関係を見てみましょう。この散布図は必ずしも直線で分析すべきものに見えますか?価格が変動することはありませんか?この場合、多項式回帰を試すことができます。 +Date と Price の関係をもう一度見てみましょう。この散布図は必ずしも直線で解析すべきものに見えますか?価格は変動してもよいのではありませんか?このような場合には多項式回帰を試すことができます。 -✅ 多項式は一つまたは複数の変数と係数からなる数学的表現です +✅ 多項式は1つ以上の変数と係数から成る数学的な式です。 -多項式回帰は非線形データにより適合するカーブを作ります。今回の場合、入力データに二乗した `DayOfYear` 変数を含めれば、パラボラカーブによりデータを近似でき、年のある時点で最小値を持つ曲線ができます。 +多項式回帰は非線形データにうまく適合するために曲線を作ります。今回の場合、入力データに2乗の `DayOfYear` 変数を含めるなら、1年内のある点で極小となる放物線でデータをフィットさせることができるはずです。 -Scikit-learn にはデータ処理の複数ステップを結合できる便利な [パイプラインAPI](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) があります。パイプラインは一連の推定器から構成されます。ここでは最初に多項式特徴を追加し、その後回帰の学習を行うパイプラインを作成します: +Scikit-learn にはデータ処理の複数のステップを1つにまとめるのに便利な [パイプラインAPI](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) があります。パイプライン推定器のチェーン です。今回の場合、最初に多項式特徴を追加し、その後回帰をトレーニングするパイプラインを作成します: ```python from sklearn.preprocessing import PolynomialFeatures @@ -259,36 +260,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)` を使うと、入力データからすべての2次多項式を含めます。今回の場合は `DayOfYear`2 だけですが、X と Y という2つの入力変数があれば X2、XY、Y2 が追加されます。より高次の多項式も使えます。 +`PolynomialFeatures(2)` を使うことで、入力データのすべての2次多項式を含めることができます。今回の場合は単に `DayOfYear`2 を意味しますが、2つの入力変数 X と Y がある場合は X2、XY、Y2 が追加されます。必要に応じてより高い次数の多項式も使えます。 + +パイプラインは元の `LinearRegression` オブジェクトと同じ方法で使えます。すなわちパイプラインを `fit` し、`predict` を使って予測結果を得られます: -パイプラインは元の `LinearRegression` オブジェクトと同様に使えるので、`fit` で学習し `predict` で予測結果を得られます。以下の図はテストデータと近似曲線です: +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +滑らかな近似曲線をプロットするために、`np.linspace` を使って均一な入力範囲を作成します。これは無秩序なテストデータ上に直接プロットする(ジグザグ線になる)より良い方法です: + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` + +こちらがテストデータと近似曲線を示すグラフです: Polynomial regression -多項式回帰を使うことで、わずかにMSEは下がり、決定係数は上がりますが、大きな変化ではありません。他の特徴量も考慮する必要があります! +多項式回帰を使うと、RMSEが僅かに下がり決定係数が高くなりますが、大幅な改善はありません。他の特徴量を考慮する必要があります! -> 最低のカボチャ価格がハロウィーン付近に現れることがわかります。これはどう説明できますか? +> パンプキンの最低価格がハロウィンあたりで観察されることに気づきましたか?これはどう説明できますか? -🎃 おめでとうございます。パイ用カボチャの価格を予測できるモデルを作成できました。同じ手順をすべてのカボチャの種類に繰り返せるはずですが、それは面倒でしょう。次は品種をモデルに組み込む方法を学びましょう! +🎃 おめでとうございます、これでパイパンプキンの価格を予測するモデルを作成できました。おそらく同じ手順を他のパンプキン種別にも繰り返せますが、それは面倒です。次にモデルにパンプキンの品種を取り込む方法を学びましょう! -## カテゴリカル特徴量 +## カテゴリ特徴 -理想的には、同じモデルで異なるカボチャの品種の価格を予測したいです。ただし `Variety` 列は `Month` のように数値ではなく、数値以外の値を含みます。このような列は カテゴリカル と呼ばれます。 +理想的には、同じモデルを使って異なるパンプキン品種の価格を予測したいです。しかし、`Variety` 列は `Month` などの数値列とは異なり、数値以外の値を含むため、カテゴリ特徴 と呼ばれます。 [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 カテゴリカル特徴を使う方法を簡単に解説した動画は上の画像をクリックしてください。 +> 🎥 上の画像をクリックすると、カテゴリ特徴の使用方法に関する簡単なビデオ概要が見られます。 -ここでは種類ごとの平均価格がどう違うかがわかります: +ここでは品種による平均価格の違いを示しています: Average price by variety -品種を考慮するには、まず数値形式に変換(エンコード)する必要があります。方法はいくつかあります: +品種を考慮するためには、まず数値形式に変換、すなわちエンコードする必要があります。エンコード方法は複数あります: -* 単純な 数値エンコード は異なる品種の一覧を作り、その品種名をインデックスに置き換えます。線形回帰ではこれはあまりよくありません。なぜなら線形回帰がインデックスの数値を実際の値として使い、それに係数を掛けて結果に加えるからです。今回の場合、インデックス番号と価格の関係は明らかに非線形で、インデックスの順序をどう決めてもそうです。 -* ワンホットエンコード は `Variety` 列を4つの別列に置き換え、それぞれが品種の一つを表します。各列には該当品種なら `1`、そうでなければ `0` が入ります。これにより、線形回帰は4つの係数を持ち、それぞれが特定品種の「基準価格」(より正確には「追加価格」)を表します。 +* 単純な数値エンコードは異なる品種をリストにし、品種名をそのリストのインデックスに置き換えます。これは線形回帰にはあまり適していません。線形回帰はインデックスの数値をそのまま取り扱い、係数と乗算して結果に加えるためです。インデックス番号と価格の関係が明らかに非線形であっても、この方法ではその非線形性を反映できません。 +* ワンホットエンコーディング は `Variety` 列を4つの別々の列に置き換えます。各列は対応する品種に対して `1`、そうでなければ `0` となります。これにより、線形回帰においてパンプキンの品種ごとに4つの係数ができ、その品種の「基本価格」(または「価格への追加分」)を表すことになります。 -以下のコードはワンホットエンコードのサンプルです: +以下のコードはワンホットエンコードの例を示しています: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -296,23 +319,23 @@ pd.get_dummies(new_pumpkins['Variety']) ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE ----|-----------|-----------|--------------------------|---------- -70 | 0 | 0 | 0 | 1 -71 | 0 | 0 | 0 | 1 -... | ... | ... | ... | ... -1738 | 0 | 1 | 0 | 0 -1739 | 0 | 1 | 0 | 0 -1740 | 0 | 1 | 0 | 0 -1741 | 0 | 1 | 0 | 0 -1742 | 0 | 1 | 0 | 0 +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738| 0 | 1 | 0 | 0 +1739| 0 | 1 | 0 | 0 +1740| 0 | 1 | 0 | 0 +1741| 0 | 1 | 0 | 0 +1742| 0 | 1 | 0 | 0 -ワンホットエンコードした品種を入力にして線形回帰を学習するには、適切に `X` と `y` データを初期化すればよいです: +ワンホットエンコードした品種を入力として線形回帰をトレーニングするためには、`X` と `y` のデータを正しく初期化するだけで十分です: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -それ以外のコードはこれまでの線形回帰の学習時と同じです。これを試すと平均二乗誤差はほぼ同じながら、決定係数はかなり高く(約77%)なります。さらに精度を上げるには、ほかのカテゴリカル特徴や数値特徴(例:`Month` や `DayOfYear`)も考慮します。特徴量をひとつの大きな配列にまとめるには `join` を使います: +残りのコードは上で使った線形回帰のトレーニングと同じです。実際に試すと、平均二乗誤差はほぼ同じですが、決定係数ははるかに高くなり (約77%)、さらに正確な予測が可能になります。他のカテゴリ特徴や `Month` や `DayOfYear` などの数値特徴も考慮し、特徴量を1つの大きな配列にまとめるために `join` を使うことができます: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -322,11 +345,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -ここでは `City` と `Package` の種類も考慮し、MSEは2.84(10%)、決定係数は0.94となりました! +ここでは `City` と `Package` タイプも加味しており、RMSE は2.84(10.5%)、決定係数は0.94となっています! -## 総合的なモデル作成 +## まとめて使う -最高のモデルを作るため、上記の組み合わせ(ワンホットエンコードしたカテゴリカル+数値)データを多項式回帰と組み合わせます。以下はその完全なコードです: +最良のモデルを作成するには、上述の結合された(ワンホットエンコードされたカテゴリ + 数値)特徴量と多項式回帰を一緒に使います。便宜上、完全なコードを載せます: ```python # トレーニングデータを設定する @@ -339,51 +362,51 @@ y = new_pumpkins['Price'] # トレイン・テスト分割を行う X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# パイプラインを設定し、トレーニングする +# パイプラインの設定とトレーニングを行う pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # テストデータの結果を予測する pred = pipeline.predict(X_test) -# MSEと決定係数を計算する -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSEと決定係数を計算する +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -これで決定係数は約97%、MSEは2.23(予測誤差約8%)となります。 +これで、決定係数はほぼ97%、RMSE=2.23(予測誤差約8%)の最良モデルが得られるはずです。 -| モデル | MSE | 決定係数 | -|-------|-----|----------| +| モデル | RMSE | 決定係数 | +|--------|------|----------| | `DayOfYear` 線形 | 2.77 (17.2%) | 0.07 | | `DayOfYear` 多項式 | 2.73 (17.0%) | 0.08 | | `Variety` 線形 | 5.24 (19.7%) | 0.77 | -| 全特徴量 線形 | 2.84 (10.5%) | 0.94 | -| 全特徴量 多項式 | 2.23 (8.25%) | 0.97 | +| すべての特徴 線形 | 2.84 (10.5%) | 0.94 | +| すべての特徴 多項式 | 2.23 (8.25%) | 0.97 | -🏆 お疲れ様でした!このレッスンで4つの回帰モデルを作り、モデル精度を97%まで高めました。回帰の最後のセクションでは、ロジスティック回帰について学びカテゴリ分類を行います。 +🏆 お見事です!このレッスンで4つの回帰モデルを作成し、モデルの精度を97%まで高めました。回帰の最終セクションでは、カテゴリを判別するためのロジスティック回帰について学びます。 --- ## 🚀チャレンジ -このノートブックで異なる変数をいくつか試し、相関がモデル精度にどう影響するかを調べてみましょう。 +このノートブックでいくつかの異なる変数を試してみて、相関とモデル精度の関係を調べてみてください。 -## [講義後のクイズ](https://ff-quizzes.netlify.app/en/ml/) +## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/) -## 復習と自主学習 +## 復習&自習 -本レッスンでは線形回帰について学びました。ほかにも重要な回帰手法があります。Stepwise、Ridge、Lasso、Elasticnet などの手法を調べてみましょう。深く学びたい場合は [スタンフォード大学の統計学習コース](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) が良い教材です。 +このレッスンでは線形回帰について学びました。他にも重要な種類の回帰があります。Stepwise, Ridge, Lasso, Elasticnet の手法について読んでみましょう。詳しく学びたい方には [スタンフォード統計学習コース](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) が良い教材です。 ## 課題 -[モデル構築](assignment.md) +[モデルを作る](assignment.md) --- **免責事項**: -本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性の向上に努めていますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源として優先されます。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用により生じた誤解や誤訳について、当方は一切の責任を負いかねます。 +本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確さを期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知ください。原文は原語の書類が権威ある情報源とみなされます。重要な情報については専門の人間による翻訳を推奨します。本翻訳の使用により生じたいかなる誤解や誤訳についても一切の責任を負いかねます。 \ No newline at end of file diff --git a/translations/ja/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ja/2-Regression/3-Linear/solution/notebook.ipynb index 1015fdb424..de43c6ce32 100644 --- a/translations/ja/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ja/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## かぼちゃの価格設定における線形回帰と多項式回帰 - レッスン3\n", + "## かぼちゃの価格に対する線形回帰と多項式回帰 - レッスン3\n", "\n", - "必要なライブラリとデータセットを読み込みます。データを以下の条件を満たすデータフレームに変換します:\n", + "必要なライブラリとデータセットを読み込みます。データをデータフレームに変換し、データのサブセットを含めます:\n", "\n", - "- ブッシェル単位で価格が設定されているかぼちゃのみを取得する\n", - "- 日付を月に変換する\n", - "- 価格を高値と安値の平均として計算する\n", - "- 価格をブッシェル単位の数量に基づいた価格に変換する\n" + "- バッシェル単位で価格が付けられたかぼちゃのみ取得\n", + "- 日付を月に変換\n", + "- 価格を最高値と最低値の平均として計算\n", + "- 価格をバッシェル単位の価格に反映するように変換\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "散布図は、8月から12月までの月のデータしかないことを思い出させてくれます。結論を線形的に導き出すには、もっと多くのデータが必要かもしれません。\n" + "散布図は、私たちが持っている月データが8月から12月までであることを思い出させてくれます。線形的に結論を導くためには、おそらくもっと多くのデータが必要です。\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "相関関係があるか見てみましょう:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "相関はかなり小さいようですが、他にもっと重要な関係があるようです。上のプロットの価格ポイントは、いくつかの明確なクラスターを持っているように見えます。異なるカボチャの品種を示すプロットを作りましょう:\n" + "相関はかなり小さいようですが、他にもっと重要な関係があるようです。上のプロットの価格ポイントがいくつかの異なるクラスタに分かれているように見えます。さまざまなカボチャの品種を示すプロットを作成しましょう:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "とりあえず、1つの種類、パイタイプにだけ集中しましょう。\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### 線形回帰\n", "\n", - "Scikit Learn を使用して線形回帰モデルをトレーニングします:\n" + "Scikit Learnを使って線形回帰モデルをトレーニングします:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "線の傾きは線形回帰係数から求めることができます。\n" + "線の傾きは線形回帰の係数から求めることができます:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "訓練済みモデルを使って価格を予測できます:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### 多項式回帰\n", "\n", - "特徴と結果の間の関係が本質的に非線形である場合があります。例えば、カボチャの価格は冬(1月、2月)に高くなり、夏(5月~7月)に下がり、その後再び上昇することがあります。線形回帰ではこの関係を正確に捉えることができません。\n", + "特徴量と結果の関係が本質的に非線形である場合があります。例えば、カボチャの価格は冬(1、2月)に高くなり、その後夏(5~7月)に減少し、再び上昇することがあります。線形回帰ではこの関係を正確に見つけることができません。\n", "\n", - "この場合、追加の特徴を加えることを検討できます。簡単な方法として、入力特徴から多項式を使用することで、**多項式回帰**を実現できます。Scikit Learnでは、パイプラインを使用して多項式特徴を自動的に事前計算することができます。\n" + "この場合、追加の特徴量を追加することを検討できます。簡単な方法は、入力特徴量から多項式を使用することで、これにより多項式回帰が得られます。Scikit Learnでは、パイプラインを使用して多項式特徴量を自動的に前計算できます。\n" ] }, { @@ -775,8 +781,11 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { @@ -785,12 +794,12 @@ "source": [ "### エンコーディングの種類\n", "\n", - "理想的な世界では、同じモデルを使って異なるカボチャの品種の価格を予測できるようにしたいと考えています。品種を考慮するためには、まずそれを数値形式、つまり**エンコード**する必要があります。これにはいくつかの方法があります:\n", + "理想的な世界では、同じモデルを使って異なるかぼちゃの品種の価格を予測できるようにしたいです。品種を考慮に入れるためには、まずそれを数値形式に変換、つまりエンコードする必要があります。エンコードする方法はいくつかあります:\n", "\n", - "* 単純な数値エンコーディングでは、異なる品種のテーブルを作成し、そのテーブル内のインデックスで品種名を置き換えます。しかし、これは線形回帰には最適な方法ではありません。なぜなら、線形回帰はインデックスの数値を考慮しますが、その数値が価格と数値的に相関している可能性は低いからです。\n", - "* ワンホットエンコーディングでは、`Variety`列を4つの異なる列に置き換えます。それぞれの列は特定の品種に対応し、該当する行がその品種の場合は1、そうでない場合は0を含みます。\n", + "* 異なる品種の表を作り、その表内のインデックスで品種名を置き換える単純な数値エンコーディング。この方法は線形回帰には最適ではありません。なぜなら線形回帰はインデックスの数値をそのまま考慮するため、その数値が価格と数値的に相関しない可能性が高いからです。\n", + "* ワンホットエンコーディングは、`Variety`列を4つの異なる列に置き換え、それぞれの品種に対応します。対応する行がその品種であれば1、それ以外は0になります。\n", "\n", - "以下のコードは、品種をワンホットエンコードする方法を示しています:\n" + "以下のコードは、品種をワンホットエンコードする方法を示しています:\n" ] }, { @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 品種に基づく線形回帰\n", + "### 品種に対する線形回帰\n", "\n", - "ここでは、先ほどのコードを再利用しますが、`DayOfYear` の代わりに、ワンホットエンコードされた品種を入力として使用します:\n" + "ここでは、上記と同じコードを使用しますが、`DayOfYear` の代わりにワンホットエンコードした品種を入力として使用します:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "私たちは同じ方法で他の機能を試し、それらを`Month`や`DayOfYear`のような数値的な機能と組み合わせることもできます。\n" + "同じ方法で他の特徴量を使ってみたり、`Month`や`DayOfYear`のような数値特徴量と組み合わせたりすることもできます。\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### 多項式回帰\n", "\n", - "多項式回帰は、ワンホットエンコードされたカテゴリカル特徴にも使用できます。多項式回帰を訓練するコードは、上記で見たものと基本的に同じになります。\n" + "多項式回帰は、ワンホットエンコードされたカテゴリ特徴量にも使用できます。多項式回帰の学習コードは、上記で見たものと本質的に同じです。\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**免責事項**: \nこの文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な表現が含まれる可能性があります。元の言語で記載された原文を公式な情報源としてご参照ください。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因する誤解や誤認について、当社は一切の責任を負いません。\n" + "---\n\n\n**免責事項**: \n本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。精度向上に努めておりますが、自動翻訳には誤りや不正確な箇所が含まれる可能性があります。原文の母国語版が正式な情報源とみなされます。重要な情報については、専門の人間翻訳を推奨します。本翻訳の利用による誤解や誤訳について、一切の責任を負いかねます。\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T01:03:01+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ja" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ko/.co-op-translator.json b/translations/ko/.co-op-translator.json index 09a7e00af7..e370721ed6 100644 --- a/translations/ko/.co-op-translator.json +++ b/translations/ko/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "ko" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T10:48:28+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T20:41:17+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "ko" }, @@ -90,8 +90,8 @@ "language_code": "ko" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T16:41:12+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T20:40:54+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "ko" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "ko" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T20:38:06+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "ko" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T10:40:02+00:00", diff --git a/translations/ko/1-Introduction/4-techniques-of-ML/README.md b/translations/ko/1-Introduction/4-techniques-of-ML/README.md index e928eb920d..530951514b 100644 --- a/translations/ko/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/ko/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ -# 머신 러닝 기법 +# 머신러닝 기법 -머신 러닝 모델을 구축, 사용, 유지 관리하는 과정과 그 모델이 사용하는 데이터는 다른 개발 워크플로우와 매우 다릅니다. 이번 강의에서는 이 과정을 이해하기 쉽게 설명하고, 알아야 할 주요 기법들을 정리합니다. 여러분은 다음을 배우게 됩니다: +머신러닝 모델과 그 모델이 사용하는 데이터를 구축하고 사용하며 유지하는 과정은 다른 많은 개발 워크플로우와 매우 다른 과정입니다. 이번 수업에서는 이 과정을 쉽게 이해할 수 있도록 하고, 알아야 할 주요 기법들을 설명합니다. 여러분은 다음을 배우게 됩니다: -- 머신 러닝의 기본 과정을 높은 수준에서 이해합니다. -- '모델', '예측', '훈련 데이터'와 같은 기본 개념을 탐구합니다. +- 머신러닝의 기본 프로세스를 높은 수준에서 이해하기 +- '모델', '예측', '훈련 데이터'와 같은 기본 개념 탐색하기 -## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/) +## [수업 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/) -[![초보자를 위한 머신 러닝 - 머신 러닝 기법](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "초보자를 위한 머신 러닝 - 머신 러닝 기법") +[![초보자를 위한 머신러닝 - 머신러닝 기법](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "초보자를 위한 머신러닝 - 머신러닝 기법") -> 🎥 위 이미지를 클릭하면 이번 강의를 다루는 짧은 영상을 볼 수 있습니다. +> 🎥 위 이미지를 클릭하면 이번 수업 내용을 다루는 짧은 영상을 볼 수 있습니다. ## 소개 -머신 러닝(ML) 프로세스를 만드는 기술은 다음과 같은 여러 단계로 구성됩니다: +높은 수준에서, 머신러닝(ML) 프로세스를 만드는 작업은 여러 단계로 구성됩니다: -1. **질문 결정하기**. 대부분의 ML 프로세스는 단순한 조건부 프로그램이나 규칙 기반 엔진으로는 답할 수 없는 질문을 던지는 것으로 시작합니다. 이러한 질문은 종종 데이터 집합을 기반으로 한 예측과 관련이 있습니다. -2. **데이터 수집 및 준비**. 질문에 답하기 위해서는 데이터가 필요합니다. 데이터의 품질과 때로는 양이 초기 질문에 얼마나 잘 답할 수 있는지를 결정합니다. 데이터를 시각화하는 것은 이 단계에서 중요한 부분입니다. 이 단계에는 데이터를 훈련 그룹과 테스트 그룹으로 나누어 모델을 구축하는 작업도 포함됩니다. -3. **훈련 방법 선택**. 질문과 데이터의 특성에 따라 데이터를 가장 잘 반영하고 정확한 예측을 할 수 있는 모델을 훈련시키는 방법을 선택해야 합니다. 이 단계는 특정 전문 지식이 필요하며, 종종 상당한 실험이 요구됩니다. -4. **모델 훈련**. 훈련 데이터를 사용하여 다양한 알고리즘을 통해 데이터의 패턴을 인식하도록 모델을 훈련시킵니다. 모델은 데이터의 특정 부분을 우선적으로 고려하여 더 나은 모델을 구축하기 위해 내부 가중치를 조정할 수 있습니다. -5. **모델 평가**. 수집된 데이터 중 이전에 본 적 없는 데이터를 사용하여 모델의 성능을 평가합니다. -6. **매개변수 조정**. 모델의 성능에 따라 알고리즘의 동작을 제어하는 매개변수 또는 변수를 변경하여 프로세스를 다시 실행할 수 있습니다. -7. **예측**. 새로운 입력을 사용하여 모델의 정확성을 테스트합니다. +1. **질문 정하기**. 대부분의 머신러닝 과정은 단순한 조건문 프로그램이나 규칙 기반 엔진으로 답할 수 없는 질문을 던지는 것에서 시작합니다. 이 질문들은 보통 여러 데이터를 기반으로 한 예측과 관련됩니다. +2. **데이터 수집 및 준비**. 질문에 답하려면 데이터가 필요합니다. 데이터의 품질과 때로는 양이 초기 질문에 얼마나 잘 답할 수 있는지를 결정합니다. 데이터 시각화는 이 단계의 중요한 부분입니다. 또한 데이터를 훈련용과 테스트용으로 나누어 모델을 구축하는 것도 포함됩니다. +3. **훈련 방법 선택**. 질문과 데이터의 성격에 따라, 데이터를 가장 잘 반영하고 정확한 예측을 하기 위해 모델을 훈련시키는 방법을 선택해야 합니다. 이 단계는 특정 전문 지식과 많은 실험이 필요한 부분입니다. +4. **모델 훈련**. 훈련 데이터를 사용해 다양한 알고리즘으로 데이터를 인식하는 모델을 훈련시킵니다. 모델은 데이터의 특정 부분을 우선시할 수 있도록 내부 가중치를 조정하여 더 나은 모델을 만들 수 있습니다. +5. **모델 평가**. 수집된 데이터 중 모델이 아직 본 적 없는 테스트 데이터를 사용해 모델의 성능을 평가합니다. +6. **파라미터 조정**. 모델의 성능을 기반으로 다양한 파라미터, 즉 모델 훈련 알고리즘의 동작을 제어하는 변수를 바꿔가며 과정을 반복할 수 있습니다. +7. 예측. 새 입력값을 사용해 모델의 정확성을 테스트합니다. -## 어떤 질문을 할 것인가 +## 어떤 질문을 할까 -컴퓨터는 데이터에서 숨겨진 패턴을 발견하는 데 특히 능숙합니다. 이 유용성은 조건부 기반 규칙 엔진을 만들어 쉽게 답할 수 없는 특정 도메인에 대한 질문을 가진 연구자들에게 매우 유용합니다. 예를 들어, 보험 업무에서는 데이터 과학자가 흡연자와 비흡연자의 사망률에 대한 수작업 규칙을 만들 수 있습니다. +컴퓨터는 데이터 속 숨겨진 패턴을 발견하는 데 특히 뛰어납니다. 이는 조건부 규칙 엔진으로는 쉽게 답할 수 없는 도메인 내 연구자들이 질문에 매우 유용합니다. 예를 들어 보험계리 업무에서, 데이터 과학자는 흡연자와 비흡연자의 사망률에 관한 수작업 규칙을 만들 수도 있습니다. -그러나 많은 다른 변수가 방정식에 포함되면, 과거 건강 기록을 기반으로 미래 사망률을 예측하는 데 ML 모델이 더 효율적일 수 있습니다. 더 긍정적인 예로는 위도, 경도, 기후 변화, 해양 근접성, 제트 기류 패턴 등을 포함한 데이터를 기반으로 특정 지역의 4월 날씨를 예측하는 것이 있습니다. +하지만 여러 변수가 포함되면 과거 건강 기록에 기반한 미래 사망률 예측에 머신러닝 모델이 더 효율적일 수 있습니다. 더 밝은 예로는 위도, 경도, 기후 변화, 바다와의 거리, 제트기류 패턴 등의 데이터를 활용해 특정 지역 4월 날씨 예측을 하는 경우입니다. -✅ 이 [슬라이드 자료](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)는 날씨 분석에서 ML을 사용하는 역사적 관점을 제공합니다. +✅ 이 [슬라이드 데크](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)는 기상 모델에 관한 역사적 관점에서 머신러닝을 활용한 사례를 제공합니다. -## 모델 구축 전 작업 +## 사전 준비 작업 -모델을 구축하기 전에 완료해야 할 몇 가지 작업이 있습니다. 질문을 테스트하고 모델의 예측을 기반으로 가설을 형성하려면 몇 가지 요소를 식별하고 구성해야 합니다. +모델 구축을 시작하기 전에 완료해야 할 여러 작업이 있습니다. 질문을 테스트하고 모델 예측에 기반해 가설을 형성하려면 여러 요소를 식별하고 구성해야 합니다. ### 데이터 -질문에 확실히 답하기 위해서는 적절한 유형의 충분한 데이터가 필요합니다. 이 단계에서 해야 할 두 가지 작업은 다음과 같습니다: +질문에 확실히 답하려면 적절한 유형의 충분한 데이터가 필요합니다. 이 시점에 해야 할 두 가지는: -- **데이터 수집**. 데이터 분석의 공정성에 대한 이전 강의를 염두에 두고 데이터를 신중히 수집합니다. 데이터의 출처, 내재된 편향, 출처를 문서화하는 것에 주의하세요. -- **데이터 준비**. 데이터 준비 과정에는 여러 단계가 포함됩니다. 다양한 출처에서 온 데이터를 통합하고 정규화해야 할 수도 있습니다. 문자열을 숫자로 변환하거나(예: [클러스터링](../../5-Clustering/1-Visualize/README.md)에서 수행) 원본 데이터를 기반으로 새로운 데이터를 생성하거나(예: [분류](../../4-Classification/1-Introduction/README.md)에서 수행) 데이터를 정리하고 편집할 수 있습니다. 또한 훈련 기법에 따라 데이터를 무작위화하고 섞어야 할 수도 있습니다. +- **데이터 수집**. 이전 수업에서 다룬 공정한 데이터 분석을 염두에 두고 조심스럽게 데이터를 수집하세요. 데이터 출처와 내재된 편향, 출처를 문서화하십시오. +- **데이터 준비**. 데이터 준비 과정에는 여러 단계가 있습니다. 서로 다른 출처에서 온 데이터를 정리하고 정규화할 필요가 있을 수 있습니다. 문자열을 숫자로 변환하는 등 다양한 방법으로 데이터 품질과 양을 개선할 수 있으며([클러스터링](../../5-Clustering/1-Visualize/README.md) 수업 참조) 원본 데이터를 기반으로 새 데이터를 생성할 수도 있습니다([분류](../../4-Classification/1-Introduction/README.md) 수업 참조). 데이터를 정리하고 편집할 수도 있으며([웹 앱](../../3-Web-App/README.md) 수업 전 작업), 훈련 기법에 따라 무작위화하고 섞을 수도 있습니다. -✅ 데이터를 수집하고 처리한 후, 데이터의 형태가 의도한 질문을 해결할 수 있는지 확인하세요. 데이터가 주어진 작업에서 잘 작동하지 않을 수도 있습니다. 이는 [클러스터링](../../5-Clustering/1-Visualize/README.md) 강의에서 발견됩니다! +✅ 데이터를 수집하고 처리한 후, 데이터의 형상(shape)이 질문에 잘 답할 수 있을지를 잠시 확인해 보세요. 데이터가 주어진 작업에 잘 작동하지 않을 수도 있다는 점은 [클러스터링](../../5-Clustering/1-Visualize/README.md) 수업에서 다룹니다! -### 특징과 목표 +### 특성과 타깃 -[특징](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)은 데이터의 측정 가능한 속성입니다. 많은 데이터셋에서 '날짜', '크기', '색상'과 같은 열 제목으로 표현됩니다. 특징 변수는 일반적으로 코드에서 `X`로 표현되며, 모델을 훈련시키는 데 사용되는 입력 변수를 나타냅니다. +[특성(feature)](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)은 데이터의 측정 가능한 속성입니다. 많은 데이터셋에서는 'date', 'size', 'color'와 같은 열 제목으로 표현됩니다. 특성 변수는 코드상 보통 `X`로 표기하며, 모델을 훈련시키기 위한 입력 변수를 나타냅니다. -목표는 예측하려는 것입니다. 목표는 일반적으로 코드에서 `y`로 표현되며, 데이터에 대해 질문하려는 것에 대한 답을 나타냅니다. 예를 들어, 12월에 가장 저렴한 **호박 색상**은 무엇인가? 샌프란시스코에서 가장 좋은 부동산 **가격**을 가진 지역은 어디인가? 목표는 때때로 레이블 속성이라고도 합니다. +타깃(target)은 예측하려는 것입니다. 타깃은 코드 내에서 보통 `y`로 표시되며, 예를 들어 12월에 어떤 색깔 호박이 가장 저렴할지, 샌프란시스코에서 어느 동네가 가장 좋은 부동산 가격을 가질지 등 데이터에 묻고자 하는 질문에 대한 답입니다. 때때로 타깃은 레이블(label) 속성이라고도 합니다. -### 특징 변수 선택 +### 특성 변수 선택 -🎓 **특징 선택과 특징 추출** 모델을 구축할 때 어떤 변수를 선택해야 할지 어떻게 알 수 있을까요? 아마도 특징 선택 또는 특징 추출 과정을 거쳐 가장 성능이 좋은 모델을 위한 적절한 변수를 선택하게 될 것입니다. 그러나 이 두 가지는 동일하지 않습니다: "특징 추출은 원래 특징의 함수에서 새로운 특징을 생성하는 반면, 특징 선택은 특징의 하위 집합을 반환합니다." ([출처](https://wikipedia.org/wiki/Feature_selection)) +🎓 **특성 선택과 특성 추출** 모델을 만들 때 어떤 변수를 선택할지 어떻게 알까요? 최적의 성능을 위해 적절한 변수를 찾기 위해 특성 선택(feature selection) 또는 특성 추출(feature extraction) 과정을 거칩니다. 두 개념은 같지 않습니다: "특성 추출은 원래 특성의 함수에서 새로운 특성을 만드는 것이고, 특성 선택은 원래 특성의 서브셋을 선택하는 것입니다." ([출처](https://wikipedia.org/wiki/Feature_selection)) ### 데이터 시각화 -데이터 과학자의 도구 중 중요한 부분은 Seaborn이나 MatPlotLib과 같은 훌륭한 라이브러리를 사용하여 데이터를 시각화하는 능력입니다. 데이터를 시각적으로 표현하면 활용할 수 있는 숨겨진 상관관계를 발견할 수 있습니다. 시각화는 또한 편향이나 불균형 데이터를 발견하는 데 도움을 줄 수 있습니다(예: [분류](../../4-Classification/2-Classifiers-1/README.md) 강의에서 발견). +데이터 과학자의 툴킷에서 중요한 부분은 Seaborn이나 MatPlotLib 같은 훌륭한 라이브러리를 사용해 데이터를 시각화하는 기능입니다. 데이터 시각화는 사용할 수 있는 숨겨진 상관관계를 발견할 수 있게 도와줍니다. 또한 시각화를 통해 편향이나 불균형한 데이터도 찾아낼 수 있습니다([분류](../../4-Classification/2-Classifiers-1/README.md) 수업 참조). ### 데이터셋 분할 -훈련 전에 데이터셋을 불균등한 크기로 두 부분 이상으로 나누어야 합니다. 이 데이터는 여전히 데이터를 잘 대표해야 합니다. +훈련 전에 데이터셋을 크기가 다르지만 데이터를 잘 대표할 수 있도록 두 개 이상의 부분으로 나누어야 합니다. -- **훈련**. 데이터셋의 이 부분은 모델을 훈련시키는 데 사용됩니다. 이 세트는 원래 데이터셋의 대부분을 차지합니다. -- **테스트**. 테스트 데이터셋은 원래 데이터에서 수집된 독립적인 데이터 그룹으로, 구축된 모델의 성능을 확인하는 데 사용됩니다. -- **검증**. 검증 세트는 모델의 하이퍼파라미터 또는 아키텍처를 조정하여 모델을 개선하는 데 사용되는 더 작은 독립적인 예제 그룹입니다. 데이터의 크기와 질문에 따라 이 세 번째 세트를 만들 필요가 없을 수도 있습니다(예: [시계열 예측](../../7-TimeSeries/1-Introduction/README.md) 강의에서 언급). +- **훈련(training)**. 데이터셋의 이 부분은 모델을 훈련시키는 데 적합하며 원본 데이터셋의 대부분을 차지합니다. +- **테스트(testing)**. 테스트 데이터셋은 독립적이고, 보통 원본 데이터에서 가져온 데이터 그룹이며, 구축된 모델의 성능을 확인하는 데 사용합니다. +- **검증(validating)**. 검증 세트는 하이퍼파라미터나 모델 구조를 조정하기 위한 작은 독립적 데이터 그룹입니다. 데이터 크기나 질문에 따라서는 검증 세트를 만들지 않아도 됩니다([시계열 예측](../../7-TimeSeries/1-Introduction/README.md)에서 참고). ## 모델 구축 -훈련 데이터를 사용하여 목표는 다양한 알고리즘을 사용하여 데이터를 **훈련**시켜 모델, 즉 데이터의 통계적 표현을 구축하는 것입니다. 모델 훈련은 데이터를 노출시켜 발견된 패턴을 가정하고, 이를 검증하며, 수용하거나 거부할 수 있도록 합니다. +훈련 데이터를 사용해 여러 알고리즘으로 모델을 훈련시켜 데이터의 통계적 표현인 모델을 만드는 것이 목표입니다. 모델 훈련은 모델이 데이터 속의 패턴을 인식하고 가정하며 이를 검증하고 수용하거나 거부하는 과정을 포함합니다. ### 훈련 방법 결정 -질문과 데이터의 특성에 따라 훈련 방법을 선택합니다. 이 강의에서 사용하는 [Scikit-learn의 문서](https://scikit-learn.org/stable/user_guide.html)를 살펴보면 모델을 훈련시키는 다양한 방법을 탐구할 수 있습니다. 경험에 따라 최적의 모델을 구축하기 위해 여러 가지 방법을 시도해야 할 수도 있습니다. 데이터 과학자들이 모델의 성능을 평가하기 위해 보지 못한 데이터를 제공하고, 정확성, 편향, 기타 품질 저하 문제를 확인하며, 주어진 작업에 가장 적합한 훈련 방법을 선택하는 과정을 거칠 가능성이 높습니다. +질문과 데이터 성격에 따라 훈련 방법을 선택합니다. 이 과정에서 본 강의에 사용되는 [Scikit-learn 문서](https://scikit-learn.org/stable/user_guide.html)에 따라 여러 훈련 방법을 탐색할 수 있습니다. 경험에 따라 최고의 모델을 구축하기 위해 여러 방법을 시도해야 할 수도 있습니다. 데이터 과학자들은 모델에 본 적 없는 데이터를 먹여 정확도, 편향, 기타 품질 저하 문제를 확인하고 가장 적절한 훈련 방법을 찾는 과정을 거칩니다. ### 모델 훈련 -훈련 데이터를 가지고 모델을 '적합'시킬 준비가 되었습니다. 많은 ML 라이브러리에서 'model.fit'이라는 코드를 발견할 수 있습니다. 이 시점에서 특징 변수(일반적으로 'X')와 목표 변수(일반적으로 'y')를 값 배열로 전달합니다. +훈련 데이터를 바탕으로 모델을 '적합(fit)'시키도록 준비합니다. 많은 ML 라이브러리에서 'model.fit' 코드를 볼 수 있는데, 이때 특성 변수(X 배열)와 타깃 변수(y 배열)를 전달합니다. ### 모델 평가 -훈련 과정이 완료되면(큰 모델을 훈련시키는 데는 여러 반복 또는 '에포크'가 필요할 수 있음), 테스트 데이터를 사용하여 모델의 품질을 평가할 수 있습니다. 이 데이터는 모델이 이전에 분석하지 않은 원래 데이터의 하위 집합입니다. 모델의 품질에 대한 메트릭 표를 출력할 수 있습니다. +훈련 과정이 완료되면(대형 모델은 여러 반복 또는 '에포크'가 필요) 테스트 데이터를 사용해 모델 성능을 평가할 수 있습니다. 테스트 데이터는 모델이 본 적 없는 원본 데이터의 일부입니다. 모델 품질에 관한 지표를 표로 출력할 수 있습니다. 🎓 **모델 적합** -머신 러닝의 맥락에서 모델 적합은 모델의 기본 함수가 익숙하지 않은 데이터를 분석하려는 시도의 정확성을 나타냅니다. +머신러닝 맥락에서 모델 적합은 익숙하지 않은 데이터를 분석하는 모델의 기본 함수 정확도를 의미합니다. -🎓 **과소적합**과 **과대적합**은 모델의 품질을 저하시키는 일반적인 문제로, 모델이 훈련 데이터에 대해 너무 잘 맞거나 너무 느슨하게 맞는 경우를 말합니다. 과대적합된 모델은 데이터의 세부 사항과 노이즈를 너무 잘 학습했기 때문에 훈련 데이터를 너무 잘 예측합니다. 과소적합된 모델은 훈련 데이터와 아직 '본 적 없는' 데이터를 정확히 분석할 수 없기 때문에 정확하지 않습니다. +🎓 과대적합(overfitting)과소적합(underfitting)은 모델 품질을 떨어뜨리는 흔한 문제입니다. 과대적합은 모델이 훈련 데이터의 세부사항과 잡음을 너무 잘 학습해 너무 밀접하게 맞춘 상태이고, 과소적합은 훈련 데이터나 본 적 없는 데이터를 모두 정확하게 분석하지 못하는 상태입니다. -![과대적합 모델](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) -> [Jen Looper](https://twitter.com/jenlooper)의 인포그래픽 +![과대적합 모델](../../../../translated_images/ko/overfitting.1c132d92bfd93cb6.webp) +> 인포그래픽 by [Jen Looper](https://twitter.com/jenlooper) -## 매개변수 조정 +## 파라미터 조정 -초기 훈련이 완료되면 모델의 품질을 관찰하고 '하이퍼파라미터'를 조정하여 개선을 고려합니다. 자세한 내용은 [문서](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)를 참조하세요. +초기 훈련이 끝나면 모델 품질을 관찰하고 '하이퍼파라미터'를 조정해 성능을 개선할 수 있습니다. 관련 과정은 [문서](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)에서 더 읽어보세요. ## 예측 -이제 완전히 새로운 데이터를 사용하여 모델의 정확성을 테스트할 수 있는 순간입니다. '적용된' ML 환경에서는 모델을 프로덕션에서 사용하기 위해 웹 자산을 구축하는 과정이 포함될 수 있습니다. 이 과정은 사용자 입력(예: 버튼 클릭)을 수집하여 변수를 설정하고 모델에 추론 또는 평가를 위해 전달하는 것을 포함할 수 있습니다. +이제 완전히 새로운 데이터를 사용해 모델 정확도를 테스트할 차례입니다. 실제 ML 환경에서는 사용자 입력(예: 버튼 클릭)을 받아 변수를 설정하고 모델에 전송해 추론 또는 평가를 수행할 수 있습니다. -이 강의에서는 데이터 과학자로서의 제스처와 더불어 준비, 구축, 테스트, 평가, 예측하는 방법을 배우게 됩니다. 이는 '풀스택' ML 엔지니어로 성장하는 여정에서 중요한 단계입니다. +이번 수업 과정에서 여러분은 데이터 과학자가 하는 모든 과정—준비, 구축, 테스트, 평가, 예측—을 배우고, ‘풀스택’ ML 엔지니어로 가는 여정을 이어갑니다. --- -## 🚀도전 +## 🚀도전 과제 -ML 실무자의 단계들을 반영하는 흐름도를 그려보세요. 현재 프로세스에서 자신이 어디에 있다고 생각하나요? 어려움을 겪을 것으로 예상되는 부분은 어디인가요? 쉬워 보이는 부분은 무엇인가요? +ML 실무자의 단계별 플로우차트를 그려보세요. 지금 현재 자신은 어느 단계에 있다고 생각하나요? 어디서 어려움을 느낄 것 같나요? 어디가 가장 쉽다고 생각하나요? -## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/) +## [수업 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/) -## 복습 및 자기 학습 +## 복습 및 자기 주도 학습 -데이터 과학자가 자신의 일상 업무에 대해 이야기하는 인터뷰를 온라인에서 검색해 보세요. [여기](https://www.youtube.com/watch?v=Z3IjgbbCEfs)에 하나의 예가 있습니다. +데이터 과학자가 일상 업무에 대해 이야기하는 인터뷰를 온라인에서 찾아보세요. 여기에 [하나](https://www.youtube.com/watch?v=Z3IjgbbCEfs) 있습니다. ## 과제 -[데이터 과학자 인터뷰하기](assignment.md) +[데이터 과학자 인터뷰](assignment.md) --- + **면책 조항**: -이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \ No newline at end of file +이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인한 오해나 잘못된 해석에 대해서는 책임지지 않습니다. + \ No newline at end of file diff --git a/translations/ko/2-Regression/3-Linear/README.md b/translations/ko/2-Regression/3-Linear/README.md index 664af28d02..5e3d7c707b 100644 --- a/translations/ko/2-Regression/3-Linear/README.md +++ b/translations/ko/2-Regression/3-Linear/README.md @@ -1,135 +1,136 @@ -# Scikit-learn을 사용하여 회귀 모델 구축: 회귀 네 가지 방법 +# Scikit-learn을 사용하여 회귀 모델 만들기: 회귀 4가지 방법 -## 초보자 참고사항 +## 초보자 노트 -선형 회귀는 **숫자 값**(예: 주택 가격, 온도 또는 판매량)을 예측하려 할 때 사용됩니다. -이는 입력 특성과 출력 간의 관계를 최적으로 나타내는 직선을 찾는 방식으로 작동합니다. +선형 회귀는 **수치 값**(예: 주택 가격, 온도, 또는 매출)을 예측하려 할 때 사용됩니다. +입력 특성과 출력 간의 관계를 가장 잘 나타내는 직선을 찾아 작동합니다. -이 수업에서는 고급 회귀 기법을 다루기 전에 개념 이해에 집중합니다. -![선형 회귀 vs 다항 회귀 인포그래픽](../../../../translated_images/ko/linear-polynomial.5523c7cb6576ccab.webp) -> 인포그래픽: [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [사전 퀴즈](https://ff-quizzes.netlify.app/en/ml/) +이 수업에서는 고급 회귀 기법을 탐구하기 전에 개념 이해에 집중합니다. +![선형 대 다항 회귀 인포그래픽](../../../../translated_images/ko/linear-polynomial.5523c7cb6576ccab.webp) +> 인포그래픽 제공자: [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [수업 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/) -> ### [이 수업은 R 버전으로도 제공됩니다!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [이 수업은 R 버전도 제공됩니다!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### 소개 -지금까지 할로윈 호박 가격 데이터셋에서 샘플 데이터를 사용하며 회귀가 무엇인지 탐색했습니다. Matplotlib를 활용해 시각화도 했죠. +지금까지 호박 가격 데이터셋으로 수집한 샘플 데이터를 사용해 회귀가 무엇인지 탐구해 보았습니다. 또한 Matplotlib을 사용하여 시각화도 했습니다. -이제 머신러닝 회귀에 대해 더 깊이 들어갈 준비가 되었습니다. 시각화는 데이터를 이해하는 데 도움을 주지만, 머신러닝의 진정한 힘은 _모델 학습_에 있습니다. 모델은 역사적 데이터를 기반으로 학습하여 자동으로 데이터 의존성을 포착하고, 모델이 본 적 없는 새 데이터의 결과를 예측할 수 있도록 해줍니다. +이제 ML 회귀를 더 깊게 파고들 준비가 되었습니다. 시각화는 데이터를 이해하는 데 도움을 주지만, 머신러닝의 진짜 힘은 _모델 학습_에 있습니다. 모델은 과거 데이터를 기반으로 학습하여 데이터 간 종속 관계를 자동으로 파악하며, 모델이 본 적 없는 새로운 데이터에 대해서도 결과를 예측할 수 있습니다. -이번 수업에서는 _기본 선형 회귀_와 _다항 회귀_ 두 가지 회귀 유형과 관련 수학을 배웁니다. 이 모델들은 다양한 입력 데이터에 따라 호박 가격을 예측할 수 있게 해줍니다. +이번 수업에서는 _기본 선형 회귀_와 _다항 회귀_ 두 가지 유형과 이 기술들의 수학적 배경을 다룹니다. 이 모델들은 다양한 입력 데이터에 따라 호박 가격을 예측할 수 있게 해줍니다. -[![초보자를 위한 ML - 선형 회귀 이해](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "초보자를 위한 ML - 선형 회귀 이해") +[![ML 초보자를 위한 - 선형 회귀 이해](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML 초보자를 위한 - 선형 회귀 이해") -> 🎥 위 이미지 클릭 시 선형 회귀 짧은 동영상 개요를 볼 수 있습니다. +> 🎥 위 이미지를 클릭하여 선형 회귀에 대한 짧은 영상 개요를 시청하세요. -> 이 교육 과정 전반에 걸쳐 수학 지식을 최소화하고, 타 분야 학생도 이해하기 쉽게 만들고자 합니다. 노트, 🧮 계산 설명, 다이어그램 등 다양한 학습 도구를 참고하세요. +> 이번 커리큘럼 전체에서 수학 지식은 최소한으로 가정하며, 다른 분야 배경의 학생들도 접근하기 쉽도록 노트, 🧮 설명, 도표 등 다양한 학습 도구를 제공합니다. -### 필수 준비 사항 +### 선수 조건 -지금까지 살펴본 할로윈 호박 데이터 구조에 익숙해졌을 것입니다. 본 수업의 _notebook.ipynb_ 파일에는 미리 불러오고 정제한 데이터가 있습니다. 여기서 호박 가격은 부셸 단위로 새 데이터프레임에 표시되어 있습니다. Visual Studio Code의 커널에서 이 노트북들을 실행할 수 있어야 합니다. +지금쯤이면 우리가 검토 중인 호박 데이터 구조에 익숙해야 합니다. 이 수업의 _notebook.ipynb_ 파일에 사전 로드되고 전처리된 데이터가 들어 있습니다. 해당 파일에서는 호박 가격을 버셜 단위로 나타내는 새 데이터프레임이 있습니다. Visual Studio Code 내 커널에서 이 노트북들을 실행할 수 있어야 합니다. ### 준비 -데이터를 불러온 목적은 질문을 던지는 데 있습니다. +다시 상기시키자면, 이 데이터는 질문을 던지기 위해 로드됩니다. -- 언제가 호박을 사기에 가장 좋은 시기일까요? -- 미니어처 호박 한 케이스 가격은 얼마일까요? -- 반 부셸 바구니로 사야 할까요, 아니면 1 1/9 부셸 상자로 사야 할까요? -더 깊이 탐색해 봅시다. +- 호박을 사기에 가장 좋은 시기는 언제인가요? +- 미니어처 호박 한 상자의 예상 가격은 얼마인가요? +- 반 버셜 바구니로 사야 할까요, 아니면 1 1/9 버셜 박스로 사야 할까요? -지난 수업에서는 Pandas 데이터프레임을 만들고 원본 데이터셋 일부로 채우며, 부셸 단위 가격을 표준화했습니다. 하지만 이렇게 하다 보니 가을 몇 개월에 대해서만 약 400개의 데이터 포인트만 얻을 수 있었습니다. +계속 이 데이터를 탐구해 봅시다. -본 수업의 동봉된 노트북에 미리 불러온 데이터를 살펴보세요. 전처리가 완료되었고, 초기 산점도가 월별 데이터를 보여줍니다. 데이터를 더 정제하면 보다 상세한 통찰을 얻을 수 있을지도 모릅니다. +이전 수업에서는 Pandas 데이터프레임을 만들고 원본 데이터셋의 일부를 채우면서 가격을 버셜 당 단위로 표준화했습니다. 그러나 그렇게 하면서 약 400개의 데이터 포인트만 수집했고, 가을철 데이터만 다뤘습니다. -## 선형 회귀 직선 +이번 수업과 함께 제공되는 노트북에 사전 로드된 데이터를 살펴보세요. 데이터가 로드되어 있고, 월별 데이터를 보여주는 초기 산점도가 그려져 있습니다. 데이터를 좀 더 정제해서 데이터의 성격에 대해 더 자세히 알아볼 수 있을지도 모릅니다. -1장에서 배운 바와 같이 선형 회귀 목표는 다음을 할 수 있는 직선을 그리는 것입니다: +## 선형 회귀선 -- **변수 간 관계 표시**: 변수 간 관계를 보여줍니다. -- **예측 수행**: 새 데이터가 그 직선에서 어디에 위치할지 정확히 예측합니다. +수업 1에서 배웠듯, 선형 회귀의 목표는 다음과 같은 선을 그릴 수 있게 하는 것입니다. -일반적으로 최소 제곱 회귀에서 이런 선을 그립니다. "최소 제곱"이란 모델에서 전체 오류를 최소화하는 과정을 의미합니다. 각 데이터 포인트마다 실제 점과 회귀선 사이의 수직 거리(잔차라고 함)를 측정합니다. +- **변수 관계 표시**. 변수들 간의 관계를 보여줍니다. +- 예측하기. 새 데이터가 그 선과 어떤 관계에 있을지 정확히 예측합니다. -여기서 제곱하는 이유는 두 가지입니다: +이 선을 그릴 때 보통 **최소 제곱 회귀** 방식을 사용합니다. "최소 제곱"이라는 용어는 모델의 전체 오차를 최소화하는 과정을 의미합니다. 각 데이터 포인트에서 실제 점과 회귀선 사이의 수직 거리를 잔차(residual)라 부르는데요, -1. **방향 무시, 크기만 고려:** -5와 +5의 오차를 동일하게 취급하기 위해 모든 값을 양수로 만듭니다. -2. **이상치 패널티:** 큰 오차가 더 크게 반영되어 선이 멀리 떨어진 점에 더 가깝게 위치하도록 합니다. +이 거리를 제곱하는 이유는 두 가지입니다: -이렇게 제곱한 값들을 모두 더한 합을 최소화하는 선을 찾는 것이 목표입니다. +1. **크기는 유지하고 방향은 무시**: -5의 오차를 +5와 동일하게 취급하기 위해 모든 값을 양수로 만듭니다. -> **🧮 수학 공식 보여드리기** -> -> 최적 직선은 [다음 식](https://en.wikipedia.org/wiki/Simple_linear_regression)으로 나타낼 수 있습니다: -> +2. **이상치에 가중치 부여**: 큰 오차에 더 많은 페널티를 줘서 선이 멀리 떨어진 점들에 가까이 머무르도록 합니다. + +이 제곱 거리들을 모두 합산하고, 그 합이 가장 작은 특정 선을 찾는 것이 목표입니다. 그래서 "최소 제곱"이라는 이름이 붙었습니다. + +> **🧮 수학적으로 보기** +> 이 선은 _최적 적합선_이라 불리며, 다음과 같은 [방정식](https://en.wikipedia.org/wiki/Simple_linear_regression)으로 표현됩니다: +> > ``` > Y = a + bX > ``` -> -> `X`는 설명 변수, `Y`는 종속 변수입니다. 기울기는 `b`이고, y절편은 `a`로, `X=0`일 때 `Y` 값입니다. -> ->![기울기 계산](../../../../translated_images/ko/slope.f3c9d5910ddbfcf9.webp) -> -> 먼저 기울기 `b`를 계산합니다. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper) -> -> 다시 말해, 본 호박 데이터 질문 "월별 부셸당 호박 가격 예측"에서 `X`는 가격, `Y`는 판매 월을 의미합니다. -> ->![방정식 완성](../../../../translated_images/ko/calculation.a209813050a1ddb1.webp) -> -> `Y` 값을 계산하세요. 약 $4라면 4월일 것입니다! 인포그래픽: [Jen Looper](https://twitter.com/jenlooper) -> -> 기울기뿐 아니라, `X=0`인 경우 `Y` 위치를 의미하는 절편도 계산식에 포함됩니다. -> -> 이 값 계산법은 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 사이트에서 상세히 볼 수 있습니다. [이 최소제곱 계산기](https://www.mathsisfun.com/data/least-squares-calculator.html)로 숫자 변화가 선에 미치는 영향도 확인하세요. - -## 상관 관계 - -더 알아야 할 용어는 주어진 X와 Y 변수 간의 상관계수입니다. 산점도를 통해 쉽게 시각화할 수 있습니다. 데이터 포인트가 정렬된 직선에 가깝게 흩어져 있으면 강한 상관관계이고, 산만히 흩어져 있으면 약한 상관관계입니다. - -좋은 선형 회귀 모델은 최소 제곱 회귀 방식으로 높은(0보다 1에 가까운) 상관계수를 갖습니다. - -✅ 이번 수업 노트북을 실행하여 월별 가격 산점도를 봅시다. 호박 판매의 월별 가격 데이터가 산점도 시각판단상 상관관계가 높은가요, 아니면 낮은가요? `Month` 대신 연중 날짜(즉, 연도 시작부터의 일수) 같은 더 세분화된 변수를 이용하면 결과가 바뀔까요? - -다음 코드는 데이터 정제 후 `new_pumpkins`라는 데이터프레임을 얻었다고 가정합니다: - -ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ----|-------|-----------|---------|------|---------|-----------|------------|------- -70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 -73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 -74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 - -> 데이터 정제 코드는 [`notebook.ipynb`](notebook.ipynb)에서 확인할 수 있습니다. 이전 수업과 같은 정제 단계를 수행했고, 아래 식으로 `DayOfYear` 열을 계산했습니다: -> +> +> 여기서 `X`는 설명 변수이며, `Y`는 종속 변수입니다. 선의 기울기는 `b`, y절편은 `a`로, `X=0`일 때 `Y`의 값을 의미합니다. +> +>![기울기 계산](../../../../translated_images/ko/slope.f3c9d5910ddbfcf9.webp) +> +> 우선 기울기 `b`를 계산합니다. 인포그래픽 제공: [Jen Looper](https://twitter.com/jenlooper) +> +> 다시 말해, 호박 데이터 질문 "월별 버셜당 호박 가격 예측"에서 `X`는 가격을, `Y`는 판매 월을 나타냅니다. +> +>![방정식 완성](../../../../translated_images/ko/calculation.a209813050a1ddb1.webp) +> +> `Y` 값을 계산합니다. 가격이 약 $4라면 아마도 4월일 것입니다! 인포그래픽 제공: [Jen Looper](https://twitter.com/jenlooper) +> +> 이 선을 계산하는 수학은 기울기를 기준으로 하며, 절편 또는 `X=0`일 때 `Y`가 어디에 위치하는지를 반영합니다. +> +> 계산 방법은 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 사이트를 참고하세요. 또한 [이 최소제곱 계산기](https://www.mathsisfun.com/data/least-squares-calculator.html)에서 숫자 값이 선에 어떻게 영향을 미치는지 시각적으로 보실 수 있습니다. + +## 상관관계 + +한 가지 더 이해해야 할 용어는 주어진 X와 Y 변수 간의 상관계수입니다. 산점도를 사용하면 이 계수를 빠르게 시각화할 수 있습니다. 점들이 깔끔한 직선상에 흩어져 있으면 높은 상관관계이고, 점들이 X와 Y 사이에 무작위로 분포하면 상관관계가 낮다고 볼 수 있습니다. + +좋은 선형 회귀 모델은 최소제곱 회귀법을 적용했을 때 상관계수가 높게(0보다는 1에 가까운 값) 나와야 합니다. + +✅ 이 수업과 함께 제공되는 노트북을 실행하여 월별-가격 산점도를 확인해 보세요. 월별과 가격 사이의 호박 판매 데이터가 산점도 시각적 해석에 따라 상관관계가 높아 보이나요, 아니면 낮아 보이나요? 만약 `Month` 대신 연중 며칠째인지(*day of the year*)와 같은 상세한 측정치를 사용하면 결과가 달라지나요? + +아래 코드에서는 데이터가 깨끗이 전처리되어, `new_pumpkins`라는 이름의 데이터프레임이 생성된 것으로 가정하겠습니다. 해당 데이터프레임 예시는 다음과 같습니다: + +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 + +> 데이터 정리 코드는 [`notebook.ipynb`](notebook.ipynb)에 있습니다. 이전 수업과 같은 클리닝 단계를 거쳤으며, `DayOfYear` 컬럼은 다음 표현식을 사용해 계산했습니다: +> ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -선형 회귀의 수학적 이해를 마쳤으니, 어떤 호박 패키지가 최적의 가격을 가질지 예측하는 회귀 모델을 만들어 보겠습니다. 호박 밭을 위해 호박을 구매하는 사람은 최적의 구매를 위해 이 정보를 원할 것입니다. +이제 선형 회귀의 수학적 배경을 이해했으니, 어느 호박 패키지가 가장 좋은 가격을 제공할지 예측하는 회귀 모델을 만들어 봅시다. 명절 호박 농장 주인은 이 정보를 활용해 호박 구매를 최적화할 수 있을 것입니다. -## 상관 관계 찾아보기 +## 상관관계 찾기 -[![초보자를 위한 ML - 상관관계 찾기: 선형 회귀의 핵심](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "초보자를 위한 ML - 상관관계 찾기: 선형 회귀의 핵심") +[![ML 초보자를 위한 - 상관관계 찾기: 선형 회귀의 핵심](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML 초보자를 위한 - 상관관계 찾기: 선형 회귀의 핵심") -> 🎥 위 이미지 클릭 시 상관관계 짧은 동영상 개요 시청 +> 🎥 위 이미지를 클릭해 상관관계에 대한 짧은 영상 개요를 시청하세요. -이전 수업에서 월별 평균 가격이 다음과 같음을 보았을 것입니다: +이전 수업에서 월별 평균 가격이 대략 다음과 같다는 걸 보았습니다: 월별 평균 가격 -월별 가격 차이에서 상관 관계가 있어 보이고, `Month`와 `Price` 또는 `DayOfYear`와 `Price` 간의 관계를 예측하는 선형 회귀 모델을 훈련할 수 있겠습니다. 아래 그래프는 후자를 보여줍니다: +이로 보아 상관관계가 있을 것으로 예상되며, `Month`와 `Price` 사이, 혹은 `DayOfYear`와 `Price` 사이의 관계를 예측하기 위해 선형 회귀 모델을 시도할 수 있습니다. 아래는 후자의 관계를 보여주는 산점도입니다: -가격 vs 연중 일수 산점도 +가격 대 연중일 산점도 -`corr` 함수를 이용해 상관관계가 있는지 확인해 봅시다: +`corr` 함수를 사용해 상관관계를 살펴보면: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -`Month` 상관계수는 -0.15, `DayOfMonth`는 -0.17로 낮은 편입니다. 하지만 호박 품종별로 가격 군집이 다른 관계가 있을 수도 있습니다. 이를 확인하기 위해 각 호박 종류를 다른 색깔로 표시해 봅시다. `scatter` 함수에 `ax` 매개변수를 주어 한 그래프에 모든 점을 표시할 수 있습니다: +상관관계는 `Month` 기준으로 -0.15, `DayOfYear` 기준으로 -0.17로 꽤 작지만, 중요한 또 다른 관계가 있을 수 있습니다. 가격이 서로 다른 호박 품종별로 군집을 이루는 것처럼 보이기 때문입니다. 이 가설을 확인하려면 호박 카테고리별로 다른 색상을 사용하는 산점도를 함께 그려 봅니다. `scatter` 함수에 `ax` 매개변수를 전달해서 모든 점을 하나의 그래프에 그릴 수 있습니다: ```python ax=None @@ -139,42 +140,43 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -가격 vs 연중 일수 산점도 (색상별) +가격 대 연중일 색상별 산점도 -품종이 실제 판매일보다 가격에 더 큰 영향을 미치는 것 같습니다. 막대 그래프로도 볼 수 있습니다: +조사 결과 품종이 실제 판매 날짜보다 가격에 더 큰 영향을 미치는 것으로 보입니다. 막대 그래프로도 볼 수 있습니다: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -품종에 따른 가격 막대그래프 +품종별 가격 막대 그래프 -현재는 'pie type' 품종 하나만 집중해, 날짜가 가격에 미치는 영향을 봅시다: +지금은 '파이 타입' 품종 하나에만 집중하여 날짜가 가격에 미치는 영향을 살펴봅시다: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -가격 vs 연중 일수 산점도 + +연중일 대 가격 산점도 (파이 호박) -`Price`와 `DayOfYear` 상관관계를 `corr` 함수로 계산하면 약 `-0.27`이 나옵니다. 이는 예측 모델 학습이 타당함을 의미합니다. +`corr` 함수를 이용해 `Price`와 `DayOfYear` 간의 상관관계를 계산하면 약 `-0.27`이 나와 예측 모델 학습에 의미가 있음을 알 수 있습니다. -> 선형 회귀 모델을 훈련하기 전, 데이터 정리가 중요합니다. 선형 회귀는 결측치가 있으면 잘 작동하지 않으므로, 빈 셀을 제거하는 것이 좋습니다: +> 선형 회귀 모델을 학습시키기 전에 데이터가 깨끗한지 확인하는 것이 중요합니다. 선형 회귀는 결측값에 취약하기 때문에 빈 셀을 모두 제거하는 것이 좋습니다: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -결측치를 해당 열 평균값으로 채우는 방법도 있습니다. +또는 해당 열의 평균값으로 빈 값을 채우는 방법도 있습니다. ## 단순 선형 회귀 -[![초보자를 위한 ML - Scikit-learn을 사용한 선형 및 다항 회귀](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "초보자를 위한 ML - Scikit-learn을 사용한 선형 및 다항 회귀") +[![ML 초보자를 위한 - Scikit-learn을 사용한 선형 및 다항 회귀](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML 초보자를 위한 - Scikit-learn을 사용한 선형 및 다항 회귀") -> 🎥 위 이미지 클릭 시 선형 및 다항 회귀 짧은 동영상 개요 시청 +> 🎥 위 이미지를 클릭하여 선형 및 다항 회귀에 대한 짧은 영상 개요를 시청하세요. -선형 회귀 모델 훈련에 **Scikit-learn** 라이브러리를 사용하겠습니다. +선형 회귀 모델 학습에는 **Scikit-learn** 라이브러리를 사용합니다. ```python from sklearn.linear_model import LinearRegression @@ -182,31 +184,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -입력값(특징)과 결과값(레이블)을 별개의 numpy 배열로 나눕니다: +입력값(특징)과 출력값(레이블)을 별개의 numpy 배열로 분리합니다: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Linear Regression 패키지가 데이터를 올바로 인식하려면 입력 데이터를 `reshape` 해야 합니다. Linear Regression은 입력을 2D 배열로 기대하며, 배열의 각 행이 입력 특징 벡터입니다. 여기선 입력이 하나뿐이므로, 크기 N×1 배열이어야 합니다(N은 데이터셋 크기). +> 선형 회귀 패키지가 데이터를 제대로 인식하도록 입력 데이터를 `reshape` 했다는 점에 유의하세요. 선형 회귀는 2차원 배열을 입력으로 받으며, 배열의 각 행은 하나의 입력 벡터입니다. 여기서는 입력이 하나뿐이므로 배열의 형태는 N×1이어야 하며, N은 데이터셋 크기입니다. -그다음, 훈련 데이터와 테스트 데이터로 나누어 모델 검증에 사용합니다: +그 다음, 데이터를 훈련용과 테스트용으로 분리하여 학습 후 모델을 검증할 수 있게 합니다: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -마지막으로 Linear Regression 모델을 훈련하는 코드는 단 두 줄입니다. `LinearRegression` 객체를 만들고, `fit` 메서드로 데이터를 학습합니다: +마지막으로 실제 선형 회귀 모델을 학습시키는 코드는 아주 간단합니다. `LinearRegression` 객체를 정의하고, `fit` 메서드로 데이터를 학습시킵니다: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -`fit` 후의 `LinearRegression` 객체는 회귀의 모든 계수를 포함하며 `.coef_` 속성을 사용해 접근할 수 있습니다. 우리 경우에는 계수가 하나뿐이며, 약 `-0.017` 정도일 것입니다. 이는 가격이 시간이 지남에 따라 약간씩 떨어지는 경향이 있지만 하루에 약 2센트 정도로 크게 떨어지지는 않는다는 뜻입니다. 또한 회귀의 Y축과의 교차점은 `lin_reg.intercept_`로 접근할 수 있는데, 우리 경우에는 약 `21`이 되어 연초의 가격을 나타냅니다. +`LinearRegression` 객체는 `fit` 후에 회귀 계수를 모두 포함하며, `.coef_` 속성을 통해 접근할 수 있습니다. 우리의 경우, 계수는 하나이고 대략 `-0.017` 정도일 것입니다. 이는 가격이 시간이 지남에 따라 약간 떨어지는 경향이 있음을 의미하며, 하루에 약 2센트 정도 하락하는 것으로 해석할 수 있습니다. 또한 `lin_reg.intercept_`를 사용하여 회귀선이 Y축과 만나는 교차점을 확인할 수 있는데, 이 값은 우리 예제에서 대략 `21` 정도로 연초 가격을 나타냅니다. -모델의 정확도를 확인하려면 테스트 데이터셋에 대해 가격을 예측하고, 예측값이 기대값과 얼마나 가까운지 측정하면 됩니다. 이는 예상값과 예측값 사이 모든 제곱 차이의 평균의 제곱근인 root mean square error(RMSE) 지표로 측정할 수 있습니다. +모델이 얼마나 정확한지 확인하려면, 테스트 데이터셋에 대해 가격을 예측하고, 예측 값과 실제 값이 얼마나 가까운지 측정할 수 있습니다. 이는 RMSE(root mean square error) 지표를 사용해 할 수 있는데, RMSE는 예상 값과 예측 값의 모든 제곱 차이의 평균의 제곱근입니다. ```python pred = lin_reg.predict(X_test) @@ -215,15 +217,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -오차는 약 2포인트, 즉 약 17% 정도로 보입니다. 그리 좋지 않군요. 모델 품질의 또 다른 지표는 결정 계수(coefficient of determination)로, 다음과 같이 얻을 수 있습니다: +우리의 오류는 대략 2점 정도로, 약 17% 정도입니다. 그렇게 좋지 않네요. 모델 품질의 또 다른 지표는 **결정 계수(coefficient of determination)** 로, 다음과 같이 구할 수 있습니다: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -결정 계수가 0이라면 모델이 입력 데이터를 전혀 고려하지 않고 결과의 단순 평균값만을 예측하는 최악의 선형 예측자임을 의미합니다. 1이라면 모든 기대 출력값을 완벽하게 예측한다는 뜻입니다. 우리 경우 결정 계수는 약 0.06으로 꽤 낮습니다. +값이 0이라면, 모델이 입력 데이터를 전혀 반영하지 않고 결과의 단순 평균으로만 작동하는 최악의 선형 예측기임을 의미합니다. 값이 1이면 모든 예상 결과를 완벽히 예측할 수 있다는 뜻입니다. 우리 경우 결정 계수는 약 0.06으로, 상당히 낮은 편입니다. -테스트 데이터와 회귀선을 함께 그리면 회귀가 어떻게 동작하는지 더 잘 알 수 있습니다: +회귀가 어떻게 작동하는지 더 잘 보기 위해 테스트 데이터와 회귀선을 함께 그려봅시다: ```python plt.scatter(X_test,y_test) @@ -232,19 +234,19 @@ plt.plot(X_test,pred) Linear regression -## 다항 회귀 (Polynomial Regression) +## 다항 회귀(Polynomial Regression) -선형 회귀의 또 다른 유형은 다항 회귀입니다. 때때로 변수들 간에 선형 관계가 존재할 수 있지만 — 예를 들어 호박 부피가 크면 가격이 높아지는 것처럼 — 때로는 관계가 평면이나 직선으로 나타내기 어려울 때가 있습니다. +선형 회귀의 또 다른 유형은 다항 회귀입니다. 변수들 사이에 선형 관계가 있을 때도 있지만, 예를 들어 호박 부피가 클수록 가격이 높아지는 것처럼, 어떤 경우는 이러한 관계가 평면이나 직선으로 표현되지 않을 수도 있습니다. -✅ 여기에 [다항 회귀에 적합한 데이터의 몇 가지 예](https://online.stat.psu.edu/stat501/lesson/9/9.8)가 있습니다. +✅ 다항 회귀가 필요한 [더 많은 예시](https://online.stat.psu.edu/stat501/lesson/9/9.8)를 확인해보세요. -다시 `Date`와 `Price` 관계를 살펴봅시다. 이 산점도가 반드시 직선으로 분석되어야 할까요? 가격이 변동할 수는 없을까요? 이런 경우에는 다항 회귀를 시도할 수 있습니다. +Date와 Price 사이 관계를 다시 보세요. 이 산점도가 꼭 직선으로 분석되어야 할까요? 가격이 오르락내리락 할 수도 있지 않을까요? 이런 경우 다항 회귀를 시도해볼 수 있습니다. -✅ 다항식은 하나 이상의 변수와 계수로 구성된 수학적 표현입니다. +✅ 다항식은 하나 이상의 변수와 계수로 구성될 수 있는 수학 표현식입니다. -다항 회귀는 비선형 데이터를 더 잘 맞추기 위해 곡선을 생성합니다. 우리 경우에 `DayOfYear`의 제곱 변수를 입력 데이터에 포함하면, 연중 특정 시점에 최소값이 있는 포물선 곡선으로 데이터를 맞출 수 있습니다. +다항 회귀는 곡선을 만들어 비선형 데이터에 더 잘 맞춥니다. 우리 경우, 입력 데이터에 제곱된 `DayOfYear` 변수를 포함하면, 연도 내 특정 지점에 최소값을 갖는 포물선 형태를 데이터에 맞출 수 있습니다. -Scikit-learn에는 여러 데이터 처리 단계를 결합하는 데 유용한 [파이프라인 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)가 포함되어 있습니다. 파이프라인추정기(estimators)의 연결 고리입니다. 우리 경우 다항 특성을 먼저 추가하고 회귀를 학습하는 파이프라인을 생성할 것입니다: +Scikit-learn에는 여러 데이터 처리 단계를 결합하는 유용한 [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)가 포함되어 있습니다. 파이프라인은 **추정기(estimator)** 체인입니다. 우리 경우에는 먼저 다항 특성을 추가하고 회귀를 학습하는 파이프라인을 만들 것입니다: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -`PolynomialFeatures(2)`를 사용하면 입력 데이터의 모든 2차 다항식이 포함됩니다. 우리 경우는 `DayOfYear`2가 될 것이며, 만약 두 입력 변수 X, Y가 있다면 X2, XY, Y2가 추가됩니다. 필요하다면 더 높은 차수의 다항식도 사용할 수 있습니다. +`PolynomialFeatures(2)`를 사용하면 입력 데이터에서 모든 2차 다항식을 포함하겠다는 뜻입니다. 우리 예에서는 `DayOfYear`2뿐이지만, 두 변수 X와 Y가 있다면 X2, XY, Y2를 포함할 것입니다. 더 높은 차수 다항식도 사용할 수 있습니다. + +파이프라인은 원래의 `LinearRegression` 객체처럼 사용할 수 있습니다. 즉, 파이프라인을 `fit`한 뒤 `predict`를 통해 예측값을 얻을 수 있습니다: + +```python +pred = pipeline.predict(X_test) + +rmse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +부드러운 근사 곡선을 그리기 위해 `np.linspace`로 균등한 입력 값 범위를 생성합니다. 이는 무작위로 배열된 테스트 데이터 위에 바로 그릴 경우 지그재그 모양이 되기 때문입니다: + +```python +X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1) +y_range = pipeline.predict(X_range) + +plt.scatter(X_test, y_test) +plt.plot(X_range, y_range) +``` -파이프라인은 원래의 `LinearRegression` 객체처럼 사용할 수 있습니다. 즉, 파이프라인을 `fit`하고 `predict`를 사용해 예측 결과를 얻을 수 있습니다. 아래 그래프는 테스트 데이터와 근사 곡선을 보여줍니다: +다음은 테스트 데이터와 근사 곡선을 보여주는 그래프입니다: Polynomial regression -다항 회귀를 사용하면 MSE가 약간 낮아지고 결정 계수가 높아지긴 하지만 크게 차이나진 않습니다. 더 정확한 예측을 위해서는 다른 피처도 고려해야 합니다! +다항 회귀를 사용하면 RMSE는 약간 낮아지고 결정 계수는 약간 올라가지만 큰 차이는 없습니다. 다른 특성들도 고려할 필요가 있습니다! -> 할로윈 무렵 최소 호박 가격이 관찰된다는 점을 알 수 있습니다. 어떻게 설명할 수 있을까요? +> 최소 호박 가격이 할로윈 즈음에 관찰되는 것을 볼 수 있네요. 이를 어떻게 설명할 수 있을까요? -🎃 축하합니다, 당신은 호박 가격을 예측하는 모델을 만들었습니다. 아마도 모든 호박 종류에 대해 같은 절차를 반복할 수 있겠지만 이는 매우 번거롭습니다. 이제 호박 품종을 모델에 반영하는 방법을 배우겠습니다! +🎃 축하합니다! 여러분은 파이 호박 가격 예측에 도움이 되는 모델을 만들었습니다. 모든 호박 종류에 대해 같은 과정을 반복할 수 있지만, 그것은 번거로울 수 있습니다. 이제 호박 품종을 모델에 반영하는 방법을 배워봅시다! -## 범주형 특성 (Categorical Features) +## 범주형 특성(Categorical Features) -이상적으로는 동일한 모델로 다양한 호박 품종의 가격을 예측할 수 있길 원합니다. 하지만 `Variety` 열은 `Month` 같은 열과 달리 수치 데이터가 아닌 값을 포함합니다. 이런 열을 **범주형(categorical)** 이라고 합니다. +이상적인 세계에서는 같은 모델로 다양한 호박 품종의 가격을 예측할 수 있길 원합니다. 하지만 `Variety` 열은 `Month` 같은 숫자형 열과 달리 비숫자 값을 포함하고 있어 범주형 열로 불립니다. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 위 이미지를 클릭하면 범주형 특성 활용에 대한 간단한 동영상을 볼 수 있습니다. +> 🎥 위 이미지 클릭하면 범주형 특성 사용에 관한 짧은 영상 개요를 볼 수 있습니다. 다음은 품종별 평균 가격입니다: Average price by variety -품종을 고려하려면 먼저 품종을 숫자형으로 변환하거나 인코딩해야 합니다. 인코딩하는 방법은 여러 가지가 있습니다: +품종을 반영하려면 먼저 숫자 형태로 변환하거나, 즉 인코딩 해야 합니다. 여러 인코딩 방법이 있습니다: -* 간단한 **숫자 인코딩(numeric encoding)** 은 다른 품종을 테이블로 만들고 품종명을 해당 인덱스로 대체하는 방법입니다. 이는 선형 회귀에는 적합하지 않은데, 선형 회귀는 인덱스의 수치값을 실제 값으로 받아들이고 계수를 곱해 결과에 더하기 때문입니다. 우리 경우 인덱스 번호와 가격의 관계는 명백히 비선형이므로 인덱스 순서가 선형 회귀에 적합하지 않습니다. -* **원-핫 인코딩(one-hot encoding)** 은 `Variety` 열을 각 품종마다 한 개씩 총 4개의 열로 분리합니다. 각 열은 해당 행이 그 품종이면 `1`, 아니면 `0`을 가집니다. 이로 인해 선형 회귀는 네 개의 결정 계수를 갖게 되어 각각 품종마다 "기본 가격"(또는 "추가 가격")을 나타내게 됩니다. +* 간단한 숫자 인코딩은 서로 다른 품종 테이블을 만들고, 품종 이름을 테이블 내 인덱스로 대체합니다. 하지만 선형 회귀에는 최적의 방법이 아닙니다. 선형 회귀는 인덱스의 숫자 값을 실제 수치로 받아들이고 계수를 곱해 결과에 더하기 때문입니다. 인덱스와 가격 사이의 관계는 비선형적일 가능성이 큽니다. +* 원-핫 인코딩은 `Variety` 열을 4개 열로 나누고, 각 품종마다 한 열씩 만듭니다. 해당 행이 특정 품종이면 1, 아니면 0을 넣습니다. 이렇게 하면 각 품종마다 계수가 하나씩 생겨, 각기 다른 "기본 가격"(정확히는 각각 품종의 "추가 가격")을 나타내는 계수가 생깁니다. -다음 코드는 품종을 원-핫 인코딩하는 방법을 보여줍니다: +다음은 품종을 원-핫 인코딩하는 예입니다: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -301,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -원-핫 인코딩된 품종을 입력으로 하여 선형 회귀를 학습시키려면, `X`와 `y` 데이터를 적절히 초기화하기만 하면 됩니다: +원-핫 인코딩한 품종을 입력으로 하여 선형 회귀를 훈련하려면, `X`와 `y` 데이터를 올바르게 초기화하기만 하면 됩니다: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -나머지 코드는 위에서 선형 회귀를 학습할 때 사용한 것과 동일합니다. 시도해 보면 평균 제곱 오차는 비슷하지만 결정 계수가 훨씬 높아져 약 77%에 이릅니다. 더욱 정확한 예측을 위해서는 추가 범주형 특성과 `Month`, `DayOfYear` 같은 숫자 특성도 함께 고려할 수 있습니다. 모든 피처를 하나의 큰 배열로 합치려면 `join`을 사용할 수 있습니다: +나머지 코드는 위에서 쓴 선형 회귀 학습 코드와 같습니다. 실행해 보면 평균 제곱 오차는 비슷하지만 결정 계수가 훨씬 높아진 것을 볼 수 있습니다 (~77%). 더 정확한 예측을 위해서는 더 많은 범주형 특성과 `Month` 혹은 `DayOfYear` 같은 숫자형 특성도 함께 고려해야 합니다. 하나의 큰 특성 배열로 만들려면 `join`을 사용할 수 있습니다: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -318,14 +342,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -여기서는 `City`와 `Package` 타입도 포함하여 MSE 2.84 (10%), 결정 계수 0.94가 나옵니다! +여기서는 `City`와 `Package` 타입도 반영해 RMSE는 2.84 (10.5%), 결정 계수는 0.94가 되었습니다! -## 모두 함께 합치기 +## 모두 합치기 -최종 모델에는 위의 범주형 원-핫 인코딩 데이터와 숫자 데이터를 다항 회귀와 함께 사용합니다. 편의를 위해 전체 코드는 다음과 같습니다: +가장 좋은 모델을 만들기 위해 위 예시에서처럼 (원-핫 인코딩된 범주형 + 숫자형) 데이터를 다항 회귀와 함께 사용할 수 있습니다. 아래는 편의를 위한 완전한 코드입니다: ```python -# 학습 데이터 설정 +# 훈련 데이터 설정 X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -335,43 +359,43 @@ y = new_pumpkins['Price'] # 학습-테스트 분할 수행 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# 파이프라인 설정 및 학습 +# 파이프라인 설정 및 훈련 pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) # 테스트 데이터에 대한 결과 예측 pred = pipeline.predict(X_test) -# MSE 및 결정계수 계산 -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# RMSE 및 결정 계수 계산 +rmse = mean_squared_error(y_test, pred, squared=False) +print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)') score = pipeline.score(X_train,y_train) print('Model determination: ', score) ``` -이렇게 하면 거의 97%의 최고 결정 계수와 MSE=2.23 (약 8% 예측 오차)를 얻을 수 있습니다. +이렇게 하면 결정 계수가 거의 97%에 도달하고, RMSE는 2.23 (예측 오류 약 8%)이 됩니다. -| 모델 | MSE | 결정 계수 | +| 모델 | RMSE | 결정 계수 | |-------|-----|---------------| | `DayOfYear` 선형 | 2.77 (17.2%) | 0.07 | | `DayOfYear` 다항 | 2.73 (17.0%) | 0.08 | | `Variety` 선형 | 5.24 (19.7%) | 0.77 | -| 전체 특성 선형 | 2.84 (10.5%) | 0.94 | -| 전체 특성 다항 | 2.23 (8.25%) | 0.97 | +| 모든 특성 선형 | 2.84 (10.5%) | 0.94 | +| 모든 특성 다항 | 2.23 (8.25%) | 0.97 | -🏆 훌륭합니다! 한 수업에서 네 가지 회귀 모델을 만들고 모델 품질을 97%까지 향상시켰습니다. 마지막 회귀 섹션에서는 범주 분류를 위한 로지스틱 회귀에 대해 배울 것입니다. +🏆 잘했습니다! 한 강의에서 네 가지 회귀 모델을 만들고 모델 품질을 97% 수준으로 끌어올렸습니다. 회귀의 마지막 부분에서는 분류를 위한 로지스틱 회귀를 배울 것입니다. --- ## 🚀도전 과제 -이 노트북에서 여러 변수를 시험하여 상관관계가 모델 정확도에 어떻게 대응하는지 확인해 보세요. +이 노트북에서 여러 변수를 테스트하여 상관관계가 모델 정확도와 어떻게 연결되는지 확인해보세요. ## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/) -## 복습 및 자기 주도 학습 +## 복습 및 자습 -이번 수업에서는 선형 회귀에 대해 배웠습니다. 회귀에는 다른 중요한 유형도 있습니다. 단계별 회귀(Stepwise), 릿지(Ridge), 라쏘(Lasso), 엘라스틱넷(Elasticnet) 기법을 공부해 보세요. 더 자세히 배우고 싶다면 [스탠퍼드 통계학습 과정](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)이 좋은 코스입니다. +이번 강의에서는 선형 회귀를 배웠습니다. 회귀에는 다른 중요한 유형들도 있습니다. 단계별, 릿지, 라쏘, 엘라스틱넷 기법에 대해 공부해보세요. 더 배우고 싶다면 [스탠포드 통계학습 과정](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)을 추천합니다. ## 과제 @@ -381,5 +405,5 @@ print('Model determination: ', score) **면책 조항**: -이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의해 주시기 바랍니다. 원본 문서는 해당 원어로 된 문서가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 당사가 책임지지 않습니다. +이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 양지하시기 바랍니다. 원본 문서는 원어로 된 원본 문서를 권위 있는 출처로 간주해야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ko/2-Regression/3-Linear/solution/notebook.ipynb index 28faf2ebac..ae5550cedf 100644 --- a/translations/ko/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/ko/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 호박 가격 책정을 위한 선형 및 다항 회귀 - 3강\n", + "## 호박 가격 책정을 위한 선형 및 다항 회귀 - 3과\n", "\n", - "필요한 라이브러리와 데이터셋을 로드합니다. 데이터를 다음 조건을 만족하는 데이터프레임으로 변환합니다:\n", + "필요한 라이브러리와 데이터셋을 불러옵니다. 데이터를 데이터프레임으로 변환하되 데이터의 일부만 포함합니다:\n", "\n", - "- 부셸 단위로 가격이 매겨진 호박만 가져오기\n", - "- 날짜를 월로 변환하기\n", - "- 높은 가격과 낮은 가격의 평균으로 가격 계산하기\n", - "- 가격을 부셸 수량 기준으로 변환하기\n" + "- 부셸(bushel)로 가격이 책정된 호박만 가져오기\n", + "- 날짜를 월(month)로 변환하기\n", + "- 가격을 고가와 저가의 평균으로 계산하기\n", + "- 가격이 부셸 단위 가격을 반영하도록 변환하기\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "산점도는 우리가 8월부터 12월까지의 월별 데이터만 가지고 있음을 상기시켜줍니다. 선형적으로 결론을 내리기 위해서는 아마도 더 많은 데이터가 필요할 것입니다.\n" + "산점도는 우리가 8월부터 12월까지의 월 데이터만 가지고 있음을 상기시켜줍니다. 선형적으로 결론을 내리기 위해서는 아마도 더 많은 데이터가 필요할 것입니다.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "상관관계가 있는지 봅시다:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "상관관계는 꽤 작아 보이지만, 더 중요한 다른 관계가 있는 것 같습니다. 위의 플롯에서 가격 지점들이 몇 가지 뚜렷한 클러스터를 형성하는 것처럼 보입니다. 이제 다양한 호박 품종을 보여주는 플롯을 만들어 봅시다:\n" + "상관관계는 꽤 작아 보이지만, 위 플롯의 가격 포인트가 여러 개의 뚜렷한 군집을 가지고 있기 때문에 더 중요한 다른 관계가 있는 것 같습니다. 다양한 호박 품종을 보여주는 플롯을 만들어 봅시다:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "당분간은 한 가지 종류인 파이 타입에만 집중합시다.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### 선형 회귀\n", "\n", - "우리는 Scikit Learn을 사용하여 선형 회귀 모델을 훈련할 것입니다:\n" + "Scikit Learn을 사용하여 선형 회귀 모델을 학습할 것입니다:\n" ] }, { @@ -662,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "선형 회귀 계수로부터 직선의 기울기를 구할 수 있습니다:\n" + "선형 회귀 계수로부터 직선의 기울기를 결정할 수 있습니다:\n" ] }, { @@ -688,7 +692,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "훈련된 모델을 사용하여 가격을 예측할 수 있습니다:\n" + ] }, { "cell_type": "code", @@ -718,9 +724,9 @@ "source": [ "### 다항 회귀\n", "\n", - "특성과 결과 간의 관계가 본질적으로 비선형일 때가 있습니다. 예를 들어, 호박 가격은 겨울(1월, 2월)에 높았다가 여름(5월~7월)에 떨어지고 다시 상승할 수 있습니다. 선형 회귀는 이러한 관계를 정확히 찾아내지 못할 수 있습니다.\n", + "때때로 특성과 결과 간의 관계는 본질적으로 비선형적입니다. 예를 들어, 호박 가격은 겨울(월=1,2)에 높다가 여름(월=5-7)에 떨어졌다가 다시 상승할 수 있습니다. 선형 회귀는 이 관계를 정확하게 찾을 수 없습니다.\n", "\n", - "이 경우 추가적인 특성을 고려할 수 있습니다. 간단한 방법은 입력 특성에서 다항식을 사용하는 것으로, 이를 통해 **다항 회귀**를 수행할 수 있습니다. Scikit Learn에서는 파이프라인을 사용하여 다항 특성을 자동으로 미리 계산할 수 있습니다.\n" + "이 경우, 추가 특징을 고려할 수 있습니다. 간단한 방법은 입력 특징에서 다항식을 사용하는 것으로, 이것은 다항 회귀를 일으킵니다. Scikit Learn에서는 파이프라인을 사용하여 다항 특징을 자동으로 미리 계산할 수 있습니다:\n" ] }, { @@ -775,20 +781,23 @@ "score = pipeline.score(X_train,y_train)\n", "print('Model determination: ', score)\n", "\n", - "plt.scatter(X_test,y_test)\n", - "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" + "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n", + "y_range = pipeline.predict(X_range)\n", + "\n", + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_range, y_range)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 다양한 품종 인코딩\n", + "### 인코딩 종류\n", "\n", - "이상적인 상황에서는 동일한 모델을 사용하여 다양한 호박 품종의 가격을 예측할 수 있기를 원합니다. 품종을 고려하기 위해서는 먼저 이를 숫자 형태로 변환하거나 **인코딩**해야 합니다. 이를 수행하는 방법은 여러 가지가 있습니다:\n", + "이상적인 세상에서는 동일한 모델을 사용하여 다양한 호박 품종의 가격을 예측할 수 있기를 원합니다. 품종을 고려하려면 먼저 이를 숫자 형태로 변환하거나, 인코딩해야 합니다. 이를 수행하는 방법은 여러 가지가 있습니다:\n", "\n", - "* 간단한 숫자 인코딩은 다양한 품종의 테이블을 생성한 다음, 품종 이름을 해당 테이블의 인덱스로 대체하는 방식입니다. 하지만 선형 회귀에는 적합하지 않은 방법입니다. 왜냐하면 선형 회귀는 인덱스의 숫자 값을 고려하는데, 이 숫자 값이 가격과 수치적으로 상관관계가 없을 가능성이 높기 때문입니다.\n", - "* 원-핫 인코딩은 `Variety` 열을 4개의 다른 열로 대체하며, 각 품종에 대해 하나의 열을 생성합니다. 해당 행이 특정 품종에 속하면 1을, 그렇지 않으면 0을 포함합니다.\n", + "* 간단한 숫자 인코딩은 서로 다른 품종의 테이블을 만들고, 품종 이름을 그 테이블 내 인덱스로 대체합니다. 이는 선형 회귀에는 최선의 방법이 아닙니다. 왜냐하면 선형 회귀는 인덱스의 숫자 값을 고려하는데, 숫자 값이 가격과 수치적으로 상관관계가 있을 가능성이 낮기 때문입니다.\n", + "* 원-핫 인코딩은 `Variety` 열을 4개의 서로 다른 열로 대체하는 방법으로, 각 품종마다 하나씩의 열을 가지며, 해당 행이 특정 품종일 경우 1, 그렇지 않으면 0을 포함합니다.\n", "\n", "아래 코드는 품종을 원-핫 인코딩하는 방법을 보여줍니다:\n" ] @@ -938,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 다양한 품종에 대한 선형 회귀\n", + "### 품종에 대한 선형 회귀\n", "\n", - "이제 위와 동일한 코드를 사용할 것이지만, `DayOfYear` 대신 원-핫 인코딩된 품종을 입력으로 사용하겠습니다:\n" + "이제 위의 코드와 동일한 코드를 사용하지만, `DayOfYear` 대신 원-핫 인코딩된 품종을 입력으로 사용할 것입니다:\n" ] }, { @@ -988,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "우리는 또한 동일한 방식으로 다른 기능들을 사용해보고, `Month`나 `DayOfYear`와 같은 수치형 기능들과 결합할 수 있습니다:\n" + "우리는 또한 동일한 방식으로 다른 특징들을 사용해보고, `Month`나 `DayOfYear`와 같은 수치형 특징들과 결합할 수 있습니다:\n" ] }, { @@ -1021,7 +1030,7 @@ "source": [ "### 다항 회귀\n", "\n", - "다항 회귀는 원-핫 인코딩된 범주형 특성과 함께 사용할 수도 있습니다. 다항 회귀를 학습시키는 코드는 위에서 본 것과 본질적으로 동일합니다.\n" + "다항 회귀는 원-핫 인코딩된 범주형 특성에도 사용할 수 있습니다. 다항 회귀를 학습하는 코드는 위에서 본 것과 본질적으로 동일합니다.\n" ] }, { @@ -1068,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**면책 조항**: \n이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \n" + "---\n\n\n**면책 조항**: \n이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원문은 해당 고유 언어로 된 문서를 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인적 번역을 권장합니다. 이 번역 사용으로 인한 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.\n\n" ] } ], @@ -1098,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T01:03:27+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "ko" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2