fork download
  1. import numpy as np
  2.  
  3.  
  4. def mean_normalization(Dataset):
  5. max_first = np.max(Dataset[:, 1])
  6. max_second = np.max(Dataset[:, 2])
  7. min_first = np.min(Dataset[:, 1])
  8. min_second = np.min(Dataset[:, 2])
  9. mean_first = np.mean(Dataset[:, 1])
  10. mean_second = np.mean(Dataset[:, 2])
  11. for data in Dataset:
  12. data[1] = (data[1] - mean_first) / (max_first - min_first)
  13. data[2] = (data[2] - mean_second) / (max_second - min_second)
  14. return Dataset, [max_first, min_first, mean_first, max_second, min_second, mean_second]
  15.  
  16.  
  17. def sigmoid(x):
  18. return 1 / (1 + np.exp(-x))
  19.  
  20.  
  21. # Call for each training set, Individually.
  22.  
  23. def compute_cost(X, y, theta):
  24. m = len(y)
  25. h = sigmoid(np.dot(X, theta))
  26. cost = (1 / m) * (np.dot(-y.T, np.log(h)) - np.dot((1 - y).T, np.log(1 - h)))
  27. return cost
  28.  
  29.  
  30. # Call for each training set, Individually.
  31.  
  32.  
  33. def gradient_descent(X, y, theta, learning_rate, num_iterations):
  34. m = len(y)
  35. cost_history = []
  36. for i in range(num_iterations):
  37. theta = theta - (learning_rate / m) * (X.T @ (sigmoid(X @ theta) - y))
  38. cost_history.append([compute_cost(X, y, theta)])
  39. return cost_history, theta
  40.  
  41.  
  42. def prediction(data, optimum_theta):
  43. data[1] = (data[1] - max_min_list[2]) / (max_min_list[0] - max_min_list[1])
  44. data[2] = (data[2] - max_min_list[5]) / (max_min_list[3] - max_min_list[4])
  45. sigmoid_value = sigmoid(data @ optimum_theta)
  46. if sigmoid_value >= 0.5:
  47. print("Student will be admitted.")
  48. else:
  49. print("Student will be rejected.")
  50.  
  51.  
  52. def initial_data():
  53. dataset = np.loadtxt("Datasets/data1.txt", dtype=str)
  54. Dataset = []
  55. result = []
  56.  
  57. for data in dataset:
  58. data = data.split(",")
  59. Dataset.append([1, float(data[0]), float(data[1])])
  60. result.append([float(data[2])])
  61. Dataset = np.array(Dataset, dtype=np.float64)
  62. result = np.array(result, dtype=np.float64)
  63. Dataset, max_min_list = mean_normalization(Dataset)
  64. return Dataset, result, max_min_list
  65.  
  66.  
  67. def accuracy(X, y, theta, cutoff):
  68. pred = [sigmoid(np.dot(X, theta)) >= cutoff]
  69. acc = np.mean(pred == y)
  70. print(acc * 100)
  71.  
  72.  
  73. X, y, max_min_list = initial_data()
  74. m, n = X.shape
  75. learning_rate = 0.1
  76. num_iterations = 400
  77. theta = np.zeros((n, 1))
  78. cost_history, optimum_theta = gradient_descent(X, y, theta, learning_rate, num_iterations)
  79. predict = np.array([1, 82.3, 93.3])
  80. prediction(predict, optimum_theta)
  81.  
  82.  
Runtime error #stdin #stdout #stderr 0.29s 36928KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 73, in <module>
  File "./prog.py", line 53, in initial_data
  File "/usr/local/lib/python3.7/dist-packages/numpy/lib/npyio.py", line 962, in loadtxt
    fh = np.lib._datasource.open(fname, 'rt', encoding=encoding)
  File "/usr/local/lib/python3.7/dist-packages/numpy/lib/_datasource.py", line 266, in open
    return ds.open(path, mode, encoding=encoding, newline=newline)
  File "/usr/local/lib/python3.7/dist-packages/numpy/lib/_datasource.py", line 624, in open
    raise IOError("%s not found." % path)
OSError: Datasets/data1.txt not found.