where was this code i wonder
This commit is contained in:
1 parent
8239b42a21
commit
4d11cb476f
5 files changed
+150
No files matched your search
@@ -0,0 +1,36 @@
|
|||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
file_path = r"C:\Users\Student\Downloads\Practice_1\Advertising.csv"
|
||||||
|
required_columns = ['TV', 'radio', 'newspaper', 'sales']
|
||||||
|
def load_data(file_path = file_path, required_columns = required_columns):
|
||||||
|
"""
|
||||||
|
Load and validate the dataset.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
file_path (str): Path to the CSV file.
|
||||||
|
required_columns (list): List of required column names.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
DataFrame: Loaded and validated dataset.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
data = pd.read_csv(file_path)
|
||||||
|
# Verify the required columns exist
|
||||||
|
for col in required_columns:
|
||||||
|
if col not in data.columns:
|
||||||
|
raise ValueError(f"Column '{col}' is missing from the dataset.")
|
||||||
|
return data
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Error: File not found. Please check the file path.")
|
||||||
|
return None
|
||||||
|
except ValueError as e:
|
||||||
|
print(e)
|
||||||
|
return None
|
||||||
|
|
||||||
|
from itertools import repeat as _r
|
||||||
|
from functools import partial as _p
|
||||||
|
|
||||||
|
loop = _p(_r, None)
|
||||||
|
|
||||||
|
del _r
|
||||||
|
del _p
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
# import pandas as pd
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
import common
|
||||||
|
|
||||||
|
def normalize_features(X):
|
||||||
|
return (X - np.mean(X, axis=0)) / np.std(X, axis=0)
|
||||||
|
|
||||||
|
def gradient_descent(X, y, alpha, iterations):
|
||||||
|
m = len(y)
|
||||||
|
theta = np.zeros(X.shape[1])
|
||||||
|
cost_history = []
|
||||||
|
|
||||||
|
for _ in common.loop(iterations):
|
||||||
|
predictions = X.dot(theta)
|
||||||
|
errors = predictions - y
|
||||||
|
cost = (1/(2*m)) * np.sum(errors**2)
|
||||||
|
cost_history.append(cost)
|
||||||
|
gradients = (1/m) * X.T.dot(errors)
|
||||||
|
theta -= alpha * gradients
|
||||||
|
|
||||||
|
return theta, cost_history
|
||||||
|
|
||||||
|
# Main Script
|
||||||
|
data = common.load_data()
|
||||||
|
|
||||||
|
if data is None:
|
||||||
|
print("no data")
|
||||||
|
exit()
|
||||||
|
|
||||||
|
# Extract features and target
|
||||||
|
X = data[['TV', 'radio', 'newspaper']].values
|
||||||
|
y = data['sales'].values
|
||||||
|
|
||||||
|
# Normalize features
|
||||||
|
X = normalize_features(X)
|
||||||
|
|
||||||
|
# Add intercept term
|
||||||
|
X = np.c_[np.ones(X.shape[0]), X]
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Set hyperparameters
|
||||||
|
alpha = 0.01 # Learning rate
|
||||||
|
iterations = 1000 # Number of iterations
|
||||||
|
|
||||||
|
# Perform Gradient Descent
|
||||||
|
theta, cost_history = gradient_descent(X, y, alpha, iterations)
|
||||||
|
|
||||||
|
# Plot cost function
|
||||||
|
plt.plot(np.arange(iterations), cost_history)
|
||||||
|
plt.xlabel('Iteration')
|
||||||
|
plt.ylabel('Cost')
|
||||||
|
plt.title('Cost Function vs Iteration')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
print(f"Final parameters: {theta}")
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
# import pandas as pd
|
||||||
|
import numpy as np
|
||||||
|
import common
|
||||||
|
# Load data
|
||||||
|
data = common.load_data()
|
||||||
|
if data is None:
|
||||||
|
print("no data")
|
||||||
|
exit()
|
||||||
|
|
||||||
|
# Prepare the data
|
||||||
|
X = data[['TV', 'radio', 'newspaper']].values # Update column names as per the dataset
|
||||||
|
y = data['sales'].values
|
||||||
|
|
||||||
|
# Add intercept term
|
||||||
|
X = np.c_[np.ones(X.shape[0]), X]
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Normal Equation
|
||||||
|
theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
|
||||||
|
|
||||||
|
print("Parameters calculated using Normal Equation:", theta)
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
import numpy as np
|
||||||
|
import common
|
||||||
|
from p1 import X, y
|
||||||
|
|
||||||
|
def gradient_descent_with_regularization(X, y, theta, alpha, lambda_, iterations):
|
||||||
|
m = len(y)
|
||||||
|
for _ in common.loop(iterations):
|
||||||
|
predictions = X @ theta
|
||||||
|
errors = predictions - y
|
||||||
|
gradient = (X.T @ errors + lambda_ * theta) / m
|
||||||
|
gradient[0] -= (lambda_/m) * theta[0] # Exclude bias term from regularization
|
||||||
|
theta -= alpha * gradient
|
||||||
|
return theta
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
theta = np.zeros(X.shape[1])
|
||||||
|
alpha = 0.01 # Learning rate
|
||||||
|
lambda_ = 1.0 # Regularization strength
|
||||||
|
iterations = 1000
|
||||||
|
theta = gradient_descent_with_regularization(X, y, theta, alpha, lambda_, iterations)
|
||||||
|
print("Regularized parameters using Gradient Descent:", theta)
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
from p2 import X, y
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
def normal_equation_with_regularization(X, y, lambda_):
|
||||||
|
m, n = X.shape
|
||||||
|
I = np.eye(n) # Identity matrix
|
||||||
|
I[0, 0] = 0 # Don't regularize the bias term
|
||||||
|
theta = np.linalg.inv(X.T @ X + lambda_ * I) @ X.T @ y
|
||||||
|
return theta
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
theta = normal_equation_with_regularization(X, y, lambda_ = 1.)
|
||||||
|
print("Regularized parameters using Normal Equation:", theta)
|
||||||
Reference in new issue
Block a user