Step 2: Split the data into training and testing sets using different random states
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
random_states = [1, 20, 40]
accuracies = []
for random_state in random_states:
# Splitting the data
X = df[['Gender', 'Age', 'Insurance', 'Hypertension', 'Diabetes', 'Handcap', 'SMS_received', 'Year', 'Ldays']]
y = df['NoShow']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=random_state)
# Perform one-hot encoding for categorical variables
X_train = pd.get_dummies(X_train)
X_test = pd.get_dummies(X_test)
# Realign the columns in test data in case some categorical values are missing
X_test = X_test.reindex(columns=X_train.columns, fill_value=0)
# Step 3: Creating and training the Decision Tree classifier
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
# Step 4: Making predictions
y_pred = clf.predict(X_test)
# Step 5: Evaluating the classifier's performance
accuracy = accuracy_score(y_test, y_pred)
accuracies.append(accuracy)
print(f"Classification accuracy for random state {random_state}: {accuracy}")
Step 6: Report the classification accuracies for each test split
average_accuracy = sum(accuracies) / len(accuracies)
print(f"Average classification accuracy across all test splits: {average_accuracy}")