import json import torch import torch.nn as nn import torch.optim as optim from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # Define a simple neural network model class AvailableLettersClassifier(nn.Module): def __init__(self, input_size): super(AvailableLettersClassifier, self).__init__() self.fc1 = nn.Linear(input_size, 16) self.fc2 = nn.Linear(16, 1) def forward(self, x): x = torch.relu(self.fc1(x)) x = torch.sigmoid(self.fc2(x)) return x # Load the data from the JSON file with open('parsed_data.json', 'r') as file: data = json.load(file) # Process the data and split into features and labels features = [] labels = [] for entry in data: available_letters = entry["Available Letters"] features.append(available_letters) labels.append(int(entry["Winner"])) # Convert features and labels to PyTorch tensors features = torch.tensor(features, dtype=torch.float32) labels = torch.tensor(labels, dtype=torch.float32).view(-1, 1) # Split the data into training and testing sets features_train, features_test, labels_train, labels_test = train_test_split(features, labels, test_size=0.2, random_state=42) # Standardize the features scaler = StandardScaler() features_train = scaler.fit_transform(features_train) features_test = scaler.transform(features_test) # Instantiate the model and optimizer input_size = features.shape[1] model = AvailableLettersClassifier(input_size) optimizer = optim.Adam(model.parameters(), lr=0.001) criterion = nn.BCELoss() # Binary Cross-Entropy loss for binary classification # Training loop epochs = 100 for epoch in range(epochs): optimizer.zero_grad() outputs = model(torch.tensor(features_train, dtype=torch.float32)) loss = criterion(outputs, labels_train) loss.backward() optimizer.step() # Evaluate the model model.eval() with torch.no_grad(): test_outputs = model(torch.tensor(features_test, dtype=torch.float32)) predicted_labels = (test_outputs >= 0.5).float() accuracy = torch.sum(predicted_labels == labels_test) / len(labels_test) print(f"Accuracy: {accuracy.item() * 100:.2f}%") [ { "Original Alphabet": "ABCDEFGHIKLMNOPQRSTUVWXY", "Good Letters": "ABCEFHJKMNOPQRUVWXYZ", "Remaining Letters": "DGILST", "Available Alphabet": "ABCEFHKMNOPQRUVWXY", "Identifier": "10" }, { "Original Alphabet": "AEFGHIJKLMNOPQRSTUWXYZ", "Good Letters": "ABDEFHIJKMNPQRSUWXYZ", "Remaining Letters": "GLOT", "Available Alphabet": "AEFHIJKMNPQRSUWXYZ", "Identifier": "11" }, { "Original Alphabet": "ABCDEFGHIJKLMNOPRSTUVWXY", "Good Letters": "ABCDEFHIJKMOPQSVWXYZ", "Remaining Letters": "GLNRTU", "Available Alphabet": "ABCDEFHIJKMOPSVWXY", "Identifier": "12" }, { "Original Alphabet": "ABCDEGHIKLMNOPRSTUVWXY", "Good Letters": "ABCDGHIKLMNOPRTUVWXY", "Remaining Letters": "ES", "Available Alphabet": "ABCDGHIKLMNOPRTUVWXY", "Identifier": "13" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTUVWXY", "Good Letters": "BCDFGHIKLMNOPRSTUVXY", "Remaining Letters": "AEW", "Available Alphabet": "BCDFGHIKLMNOPRSTUVXY", "Identifier": "14" }, { "Original Alphabet": "ABCDEFGHIJKLNOPRSTUVWXY", "Good Letters": "ABCDEFGHKLNOPRTUVWXY", "Remaining Letters": "IJS", "Available Alphabet": "ABCDEFGHKLNOPRTUVWXY", "Identifier": "15" }, { "Original Alphabet": "ABCDEFGHIKLMNOPQRSTUVWYZ", "Good Letters": "ACEFGHIJKLNOPQRSVWXZ", "Remaining Letters": "BDMTUY", "Available Alphabet": "ACEFGHIKLNOPQRSVWZ", "Identifier": "16" }, { "Original Alphabet": "ABCDEFGHIJLMNOPRSTUVXY", "Good Letters": "ABCFGHIJKLMOPQSTUVXY", "Remaining Letters": "DENR", "Available Alphabet": "ABCFGHIJLMOPSTUVXY", "Identifier": "17" }, { "Original Alphabet": "ABCDEGHIKLMNOPRSTUVWYZ", "Good Letters": "ABCDEFGHIJKMOPRSUVYZ", "Remaining Letters": "LNTW", "Available Alphabet": "ABCDEGHIKMOPRSUVYZ", "Identifier": "18" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTUVWX", "Good Letters": "ABCDEFHIJKLMNOPRUVWX", "Remaining Letters": "GST", "Available Alphabet": "ABCDEFHIKLMNOPRUVWX", "Identifier": "19" }, { "Original Alphabet": "ABCDEFGHIJLMNOPQRSTUVY", "Good Letters": "ACDFGHIJLMPQRSTUVWXY", "Remaining Letters": "BENO", "Available Alphabet": "ACDFGHIJLMPQRSTUVY", "Identifier": "1" }, { "Original Alphabet": "ABCDEFGHIKLMNOPQRSTUVXY", "Good Letters": "ABDEFHLMNOPQRSUVWXYZ", "Remaining Letters": "CGIKT", "Available Alphabet": "ABDEFHLMNOPQRSUVXY", "Identifier": "20" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTUVWX", "Good Letters": "BCEFGHIKMNOPQRSUVWXY", "Remaining Letters": "ADLT", "Available Alphabet": "BCEFGHIKMNOPRSUVWX", "Identifier": "21" }, { "Original Alphabet": "ABCDEFHIKLMNOPQRSTUVWY", "Good Letters": "BCDEFHIJKMNOPQRSUVWY", "Remaining Letters": "ALT", "Available Alphabet": "BCDEFHIKMNOPQRSUVWY", "Identifier": "22" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTUVWXY", "Good Letters": "ABCDFHIKMNOPQRTUVWXY", "Remaining Letters": "EGLS", "Available Alphabet": "ABCDFHIKMNOPRTUVWXY", "Identifier": "23" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTUVWX", "Good Letters": "ABCDEFGHKMNRSTUVWXYZ", "Remaining Letters": "ILOP", "Available Alphabet": "ABCDEFGHKMNRSTUVWX", "Identifier": "24" }, { "Original Alphabet": "ADEFGHIJKLMNOPRSTUVWXYZ", "Good Letters": "ADFGHIJLMNOPRSTUVWXZ", "Remaining Letters": "EKY", "Available Alphabet": "ADFGHIJLMNOPRSTUVWXZ", "Identifier": "25" }, { "Original Alphabet": "ABCDEFGHIJKLMNOPRSTUVWY", "Good Letters": "ABCDEFGHJKLMNOPQRTUW", "Remaining Letters": "ISVY", "Available Alphabet": "ABCDEFGHJKLMNOPRTUW", "Identifier": "26" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTUVWXYZ", "Good Letters": "ABCDFGIJKOPQRSTUWXYZ", "Remaining Letters": "EHLMNV", "Available Alphabet": "ABCDFGIKOPRSTUWXYZ", "Identifier": "2" }, { "Original Alphabet": "ABCDEFGHILMNOPQRSTUVWXY", "Good Letters": "ABCDEFGHIJMOPQRTVWYZ", "Remaining Letters": "LNSUX", "Available Alphabet": "ABCDEFGHIMOPQRTVWY", "Identifier": "3" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTVWYZ", "Good Letters": "BCDEFGHIJKLMOPSTVWXZ", "Remaining Letters": "ANRY", "Available Alphabet": "BCDEFGHIKLMOPSTVWZ", "Identifier": "4" }, { "Original Alphabet": "ABCDEFHIJKLMNOPRSTUVWYZ", "Good Letters": "ABCDEFGHJKLMNOPRUVXY", "Remaining Letters": "ISTWZ", "Available Alphabet": "ABCDEFHJKLMNOPRUVY", "Identifier": "5" }, { "Original Alphabet": "ACDEFGHIKLMNOPRSTUVWXY", "Good Letters": "ABDEFGHIKMNOPRSUVXYZ", "Remaining Letters": "CLTW", "Available Alphabet": "ADEFGHIKMNOPRSUVXY", "Identifier": "6" }, { "Original Alphabet": "ABCDEFGHIKLMNOPRSTUVWXYZ", "Good Letters": "ACEFIJKLMNOPQSTUVXYZ", "Remaining Letters": "BDGHRW", "Available Alphabet": "ACEFIKLMNOPSTUVXYZ", "Identifier": "7" }, { "Original Alphabet": "ABCDEFGHIJKLMNOPRSTUVWY", "Good Letters": "BCEFGHIJKMNPQRTUVWYZ", "Remaining Letters": "ADLOS", "Available Alphabet": "BCEFGHIJKMNPRTUVWY", "Identifier": "8" }, { "Original Alphabet": "ABCDEFGHIKLMNOPQRSTUVWYZ", "Good Letters": "ABEGHIJKLMNOQRUVWXYZ", "Remaining Letters": "CDFPST", "Available Alphabet": "ABEGHIKLMNOQRUVWYZ", "Identifier": "9" } ]