from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import numpy as np
# Sample data: features represent task characteristics, labels represent task type (0=deductive,1=inductive,2=abductive)
X = np.array([[1,0,0],[0,1,0],[0,0,1],[1,0,1],[0,1,1],[1,1,0],[0,0,0],[1,1,1]])
y = np.array([0,1,2,0,1,0,2,1])
# Split data for task-type classifier
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
# Train simple classifier to predict task type
task_classifier = LogisticRegression(max_iter=1000)
task_classifier.fit(X_train, y_train)
# Simulated reasoning functions
def deductive_reasoning(task):
# Works best on deductive tasks
return 'correct' if task == 0 else 'incorrect'
def inductive_reasoning(task):
# Works best on inductive tasks
return 'correct' if task == 1 else 'incorrect'
def abductive_reasoning(task):
# Works best on abductive tasks
return 'correct' if task == 2 else 'incorrect'
# Test agent on test set
correct = 0
for features, true_task in zip(X_test, y_test):
predicted_task = task_classifier.predict([features])[0]
if predicted_task == 0:
result = deductive_reasoning(true_task)
elif predicted_task == 1:
result = inductive_reasoning(true_task)
else:
result = abductive_reasoning(true_task)
if result == 'correct':
correct += 1
accuracy = correct / len(y_test) * 100
# Accuracy per task type
from collections import defaultdict
counts = defaultdict(int)
corrects = defaultdict(int)
for features, true_task in zip(X_test, y_test):
predicted_task = task_classifier.predict([features])[0]
if predicted_task == 0:
result = deductive_reasoning(true_task)
elif predicted_task == 1:
result = inductive_reasoning(true_task)
else:
result = abductive_reasoning(true_task)
counts[true_task] += 1
if result == 'correct':
corrects[true_task] += 1
accuracy_per_task = {k: (corrects[k]/counts[k]*100 if counts[k]>0 else 0) for k in counts}
print(f'Overall accuracy: {accuracy:.2f}%')
print(f'Accuracy per task type: {accuracy_per_task}')