title: Getting a 100% Training Accuracy, but 60% Testing accuracy
body: <p>I am trying different classifiers with different parameters and stuff on a dataset provided to us as part of a course project. We have to try and get the best performance on the dataset. The dataset is actually a reduced version of the <a href="https://archive.ics.uci.edu/ml/datasets/online+news+popularity" rel="nofollow noreferrer">online news popularity</a></p>
  
  <p>I have tried the SVM, Random Forest, SVM with cross-validation with k = 5 and they all seem to give approximately 100% training accuracy, while the testing accuracy is between 60-70. I think the testing accuracy is fine, but the training accuracy bothers me.
  I would say maybe it was a case of overfitting data but none of my classmates seem to be getting similar results so maybe the problem is with my code.</p>
  
  <p>Here is the code for my cross-validation and random forest classifier. I  would be very grateful if you help me find out why I am getting such a high Training accuracy</p>
  
  <pre><code>def crossValidation(X_train, X_test, y_train, y_test, numSplits):
      skf = StratifiedKFold(n_splits=5, shuffle=True)
      Cs = np.logspace(-3, 3, 10)
      gammas = np.logspace(-3, 3, 10)
  
      ACC = np.zeros((10, 10))
      DEV = np.zeros((10, 10))
  
      for i, gamma in enumerate(gammas):
          for j, C in enumerate(Cs):
              acc = []
              for train_index, dev_index in skf.split(X_train, y_train):
                  X_cv_train, X_cv_dev = X_train[train_index], X_train[dev_index]
                  y_cv_train, y_cv_dev = y_train[train_index], y_train[dev_index]
                  clf = SVC(C=C, kernel='rbf', gamma=gamma, )
                  clf.fit(X_cv_train, y_cv_train)
                  acc.append(accuracy_score(y_cv_dev, clf.predict(X_cv_dev)))
  
              ACC[i, j] = np.mean(acc)
              DEV[i, j] = np.std(acc)
  
      i, j = np.argwhere(ACC == np.max(ACC))[0]
      clf1 = SVC(C=Cs[j], kernel='rbf', gamma=gammas[i], decision_function_shape='ovr')
      clf1.fit(X_train, y_train)
      y_predict_train = clf1.predict(X_train)
      y_pred_test = clf1.predict(X_test)
      print("Train Accuracy :: ", accuracy_score(y_train, y_predict_train))
      print("Test Accuracy  :: ", accuracy_score(y_test, y_pred_test))
  
  
  def randomForestClassifier(X_train, X_test, y_train, y_test):
      """
  
      clf = RandomForestClassifier()
      clf.fit(X_train, y_train)
      y_predict_train = clf.predict(X_train)
      y_pred_test = clf.predict(X_test)
      print("Train Accuracy :: ", accuracy_score(y_train, y_predict_train))
      print("Test Accuracy  :: ", accuracy_score(y_test, y_pred_test))
  </code></pre>