<s>[INST] import numpy as np

from sklearn.model_selection import cross_val_score
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# Defining the Decision Tree Classifier
tree = DecisionTreeClassifier(random_state=0)

# Creating the training and testing sets
X_train, X_test, y_train, y_test = train_test_split(data['features'], data['label'], test_size=0.2, random_state=0)
X_train1, X_val, y_train1, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=0)
# Training the model
tree.fit(X_train1, y_train1)
# Evaluate the model
y_pred = tree.predict(X_test)
print("Accuracy on test set:", accuracy_score(y_test, y_pred))
# Evaluate the model with cross-validation
scores = cross_val_score(tree, X_train1, y_train1, cv=5)
print("Cross-validation Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
It looks like I am getting great accuracy by spliting data into train and test sets and then doing cross validation on training set. But, I am getting overfitting because my cross-validation accuracy is less than my test accuracy. 

How can I improve?[/INST]