from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# Sample data
X = [[1], [2], [3], [4], [5]] # Input features
y = [2, 4, 6, 8, 10] # Target values

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Show the split
print(f'Dati di training: {X_train} -> {y_train}')
print(f'Dati di test: {X_test} -> {y_test}')

# Train a linear regression model
model = LinearRegression()
model.fit(X_train, y_train)

# Show the relationship the model has learned (y = coef * x + intercept)
print(f'Relazione trovata: y = {model.coef_[0]:.2f} * x + {model.intercept_:.2f}')

# Make predictions on the test set
predictions = model.predict(X_test)
print(f'Mean Squared Error: {mean_squared_error(y_test, predictions)}')

# Use the model on a brand-new, never-seen value
nuovo_valore = [[10]]
previsione = model.predict(nuovo_valore)
print(f'Previsione per x=10: {previsione[0]:.2f}')