import numpy as np
# Initialize model parameters
theta0 = 0.5
theta1 = 0.2
# Define the learning rate and number of iterations
alpha = 0.01
num_iterations = 1000
# Define the dataset
hours_studied = np.array([2, 4, 6, 8, 10])
scores = np.array([90, 85, 95, 88, 92])
# Repeat steps 3-6 for the specified number of iterations
for i in range(num_iterations):
predicted_scores = theta0 + theta1 * hours_studied
error = predicted_scores - scores
gradient_theta0 = (1 / len(hours_studied)) * np.sum(error)
gradient_theta1 = (1 / len(hours_studied)) * np.sum(error * hours_studied)
theta0 -= alpha * gradient_theta0
theta1 -= alpha * gradient_theta1
# Evaluate the model using a confusion matrix
predicted_scores = theta0 + theta1 * hours_studied
predicted_scores = np.round(predicted_scores)
# Create a binary classification problem
binary_scores = np.where(scores > 90, 1, 0)
binary_predicted_scores = np.where(predicted_scores > 90, 1, 0)
confusion_matrix = np.array([[0, 0], [0, 0]])
for i in range(len(hours_studied)):
if binary_predicted_scores[i] == binary_scores[i]:
if binary_scores[i] == 1:
confusion_matrix[0, 0] += 1
else:
confusion_matrix[1, 1] += 1
else:
if binary_scores[i] == 1:
confusion_matrix[0, 1] += 1
else:
confusion_matrix[1, 0] += 1
print("Final Model Parameters:")
print("theta0:", theta0)
print("theta1:", theta1)
print("\nConfusion Matrix:")
print(confusion_matrix)
print("\nAccuracy:", (confusion_matrix[0, 0] + confusion_matrix[1, 1]) / len(hours_studied))