
# !pip install numpy pandas matplotlib seaborn scikit-learn scipy
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import CategoricalNB
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import LabelEncoder

# Tennis weather dataset
data = pd.DataFrame({
    'Outlook': ['Sunny', 'Sunny', 'Sunny', 'Overcast', 'Overcast', 'Overcast', 'Rainy', 'Rainy', 'Rainy', 'Rainy'],
    'Temperature': ['Hot', 'Hot', 'Mild', 'Cool', 'Mild', 'Hot', 'Mild', 'Mild', 'Cool', 'Hot'],
    'Humidity': ['High', 'Normal', 'Low', 'Normal', 'Low', 'Normal', 'High', 'Low', 'Low', 'High'],
    'Windy': [False, False, True, True, False, True, False, True, True, False],
    'PlayTennis': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'No', 'No']
})


label_encoder = LabelEncoder()
for col in ['Outlook', 'Temperature', 'Humidity', 'Windy', 'PlayTennis']:
    data[col] = label_encoder.fit_transform(data[col])

X = data[['Outlook', 'Temperature', 'Humidity', 'Windy']]
y = data['PlayTennis']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = CategoricalNB()

model.fit(X_train, y_train)

y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

