i am practicing to use sklearn for decision tree, i am using the play tennis data set 

play_ is the target column.
as per my pen and paper calculation of entropy and Information Gain, the root node should be outlook_ column because it has the highest entropy.
But somehow, my current decision tree has humidity as the root node, and look likes this: 

my current code in python:
from sklearn.cross_validation import train_test_split 
from sklearn.tree import DecisionTreeClassifier 
from sklearn.metrics import accuracy_score 
from sklearn import tree 
from sklearn.preprocessing import LabelEncoder
import pandas as pd 
import numpy as np 
df = pd.read_csv('playTennis.csv') 
lb = LabelEncoder() 
df['outlook_'] = lb.fit_transform(df['outlook']) 
df['temp_'] = lb.fit_transform(df['temp'] ) 
df['humidity_'] = lb.fit_transform(df['humidity'] ) 
df['windy_'] = lb.fit_transform(df['windy'] )   
df['play_'] = lb.fit_transform(df['play'] ) 
X = df.iloc[:,5:9] 
Y = df.iloc[:,9]
X_train, X_test , y_train,y_test = train_test_split(X, Y, test_size = 0.3, random_state = 100) 
clf_entropy = DecisionTreeClassifier(criterion='entropy')
clf_entropy.fit(X_train.astype(int),y_train.astype(int)) 
y_pred_en = clf_entropy.predict(X_test)
print("Accuracy is :{0}".format(accuracy_score(y_test.astype(int),y_pred_en) * 100))
 
    