# How to build gradient descent and cost function using Python

A general explanation of gradient descent and cost function is that these concepts are utilized in loss function computation and optimization. First, we will explore what is Gradient Descent and Cost Function then we will implement the basic example of these algorithms using Python.

Gradient descent is an optimization method where a function is minimized (or maximized) by iteratively changing the model’s parameters. One common task in machine learning is to find the best model parameters to fit the data. The idea is to update a set of initial parameter values iteratively in a direction opposite to the cost function’s gradient.

#### Cost Function

The cost function, also known as the objective function or the loss function, assesses how well a model’s predictions match the real target values discovered in the training set. The difference between what was predicted and what was observed is measured. The goal of a machine learning algorithm is to minimize the cost function.

### How to create the gradient descent and cost function for a basic linear regression

This is an example of how to create the cost function and gradient descent for a basic linear regression problem using Python:

``````import numpy as np
import matplotlib.pyplot as plt

# Generate some sample data
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 3 + 4 * X + np.random.randn(100, 1)

# Add a bias term to X
X_b = np.c_[np.ones((100, 1)), X]

# Initialize parameters
theta = np.random.randn(2, 1)

# Set learning rate and number of iterations
learning_rate = 0.01
num_iterations = 1000

for iteration in range(num_iterations):
gradients = 2 / 100 * X_b.T.dot(X_b.dot(theta) - y)

# Calculate the predicted values
y_pred = X_b.dot(theta)

# Mean Squared Error (MSE) cost function
mse_cost = np.mean((y_pred - y) ** 2)

# Print the learned parameters and MSE
print("Learned Parameters (theta):")
print(theta)
print("Mean Squared Error (MSE):", mse_cost)

# Plot the data and the regression line
plt.scatter(X, y, label='Actual Data')
plt.plot(X, y_pred, color='red', label='Regression Line')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()
``````
• We generate some sample data (X, y) with some noise and a linear connection in the example above.
• We include a bias term in the feature matrix (X) to account for the y-intercept.
• Random values are used to initialize the parameters (theta).
• The iterations and learning rate of gradient descent are predefined.
• Gradient descent is used to update the parameters and lower the mean squared error (MSE) cost function.
• We compute the expected values (y_pred) using the learned parameters.
• It computes the MSE cost function.
• We plot the real data points along with the regression line.

This is a basic example of using the cost function and gradient descent to solve a straightforward linear regression problem. Use libraries like scikit-learn for more dependable and efficient linear regression and gradient descent implementations in real-world scenarios. 