Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. import numpy as np
  2. from collections import Counter
  3.  
  4.  
  5. class DummyDecisionTree:
  6. def __init__(self, max_features=None):
  7. self._class_weights = None
  8. self._Ys = None
  9.  
  10. def fit(self, X, Y):
  11. total = 0
  12. self._class_weights = np.zeros(len(set(Y)))
  13. self._Ys = []
  14. for i, (v, weight) in enumerate(Counter(Y).items()):
  15. total += weight
  16. self._Ys.append(v)
  17. self._class_weights[i] = weight
  18. self._class_weights /= total
  19.  
  20. def predict(self, X):
  21. assert self._Ys is not None
  22. total = X.shape[0]
  23. return np.random.choice(self._Ys, size=(total, 1),
  24. p=self._class_weights)
  25.  
  26. def score(self, X, Y):
  27. Yhat = self.predict(X)
  28. right = (Y.reshape(-1, 1) == Yhat).sum()
  29. return right / total
  30.  
  31. if __name__ == '__main__':
  32. from sklearn.datasets import load_iris
  33.  
  34. dataset = load_iris()
  35. X, Y = dataset['data'], dataset['target']
  36. total = X.shape[0]
  37. train_size = int(total * 0.7)
  38. indexes = np.arange(total)
  39. np.random.shuffle(indexes)
  40. train_index, test_index = indexes[:train_size], indexes[train_size:]
  41. X_train, Y_train = X[train_index, :], Y[train_index]
  42. X_test, Y_test = X[test_index, :], Y[test_index]
  43. tree = DummyDecisionTree()
  44. tree.fit(X_train, Y_train)
  45. print(tree.score(X_test, Y_test))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement