import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, r2_score
# -----------------------------
# STEP 1: Create Sample Expense Data
# -----------------------------
# Example: Monthly total expenses (can be replaced with CSV input)
data = {
"Month": [
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
],
"Expense": [21000, 19500, 22000, 25000, 24500, 26000, 27500, 28500, 29500, 31000, 32500, 34000]
}
df = pd.DataFrame(data)
df["Month_Number"] = np.arange(1, len(df) + 1)
# -----------------------------
# STEP 2: Train the Model
# -----------------------------
X = df[["Month_Number"]]
y = df["Expense"]
model = LinearRegression()
model.fit(X, y)
# -----------------------------
# STEP 3: Forecast Next 3 Months
# -----------------------------
future_months = np.arange(len(df) + 1, len(df) + 4).reshape(-1, 1)
future_predictions = model.predict(future_months)
# Combine results
forecast_df = pd.DataFrame({
"Month_Number": future_months.flatten(),
"Predicted_Expense": future_predictions
})
print("\n🔮 Expense Forecast:")
print(forecast_df)
# -----------------------------
# STEP 4: Visualize Results
# -----------------------------
plt.figure(figsize=(10, 6))
plt.plot(df["Month_Number"], df["Expense"], marker='o', label="Actual Expenses")
plt.plot(forecast_df["Month_Number"], forecast_df["Predicted_Expense"], marker='o', linestyle='--', color='orange', label="Predicted")
plt.title("Expense Forecasting Tool")
plt.xlabel("Month")
plt.ylabel("Expense (₹)")
plt.legend()
plt.grid(True)
plt.show()
# -----------------------------
# STEP 5: Evaluate Model
# -----------------------------
predictions = model.predict(X)
print("\n📊 Model Evaluation:")
print("MAE:", round(mean_absolute_error(y, predictions), 2))
print("R² Score:", round(r2_score(y, predictions), 3))
No comments:
Post a Comment