ml_project/train_model.ipynb
User Name 95826b438c init
2025-06-07 23:27:56 +02:00

333 lines
52 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "f821f560-6593-48df-8406-2149a30d262a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Hours_Studied</th>\n",
" <th>Test_Score</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4.370861</td>\n",
" <td>45.417391</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>9.556429</td>\n",
" <td>104.945142</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>7.587945</td>\n",
" <td>80.631574</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>6.387926</td>\n",
" <td>60.994745</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2.404168</td>\n",
" <td>19.549604</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hours_Studied Test_Score\n",
"0 4.370861 45.417391\n",
"1 9.556429 104.945142\n",
"2 7.587945 80.631574\n",
"3 6.387926 60.994745\n",
"4 2.404168 19.549604"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.metrics import mean_squared_error, r2_score\n",
"import joblib\n",
"\n",
"# Set random seed for reproducibility\n",
"np.random.seed(42)\n",
"\n",
"# Generate random data for hours studied (Feature1) and test scores (Target)\n",
"n_samples = 500\n",
"X1 = np.random.uniform(1, 10, n_samples) # Random hours studied\n",
"noise = np.random.normal(0, 5, n_samples) # Random noise\n",
"y = 10 * X1 + noise # Linear relationship with noise\n",
"\n",
"\n",
"# Create a DataFrame for easy manipulation\n",
"data = pd.DataFrame({'Hours_Studied': X1, 'Test_Score': y})\n",
"data.head()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9028518c-f769-4763-92f5-3fd7f93a1b80",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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AB06dIBKpUKvXr0AAL169cKUKVOM7jds2DCMHTtW//OFCxcwePBgBAUFIS4uDmvXrjVbg+nvefbsWdx7770IDw9HREQEhg4ditOnT+ufr6ysxLRp0xAeHo7IyEg8++yz4DQfImUw2CEixRw8eBD33nsvRowYgaNHj2L27NmYNWuWPpCRY8aMGZg8eTKOHTuGfv36YeLEiSgrK8OuXbtw9OhRLFy4EHXr1rX42htuuAE+Pj746quvUFlZafGa/fv3AwC2bduG7OxsbNiwQfLaxo4di7Nnz2Lnzp346quvsGzZMly4cMHq9RUVFejXrx9CQ0Pxyy+/YM+ePahbty769++P8vJyAMBbb72Fjz/+GB999BF2796N/Px8bNy4UfKaiMg6HmMRkSTfffedWXBhGki8/fbb6NOnD2bNmgUAaNGiBTIyMvDGG28Y7YxIMWXKFNx11136n//++28MHz4cbdq0AQDceOONVl/boEEDvPvuu3j22WcxZ84cdO7cGbfddhtGjx6tf90NN9wAAIiMjJR15HTixAn88MMP2L9/P7p06QIA+PDDD9GqVSurr/niiy+g0+nwwQcfQKVSAQBWr16N8PBw/N///R9uv/12LF68GDNnztT/zitWrMCPP/4oeV1EZB13dohIkttuuw1paWlGfz744AOja44dO4akpCSjx5KSknDy5EmrOyzWdO7c2ejnp556CvPmzUNSUhJefvll/P777zZfP3HiROTk5GDt2rVITEzEl19+idatW2Pr1q2y1mHq2LFjqFOnDjp16qR/rGXLlggPD7f6miNHjuDUqVMIDQ1F3bp1UbduXURERKC0tBSZmZkoLCxEdnY2unXrpn9NnTp1zD4DInIMgx0ikiQkJATNmjUz+tOgQQPZ91GpVGa5KBUVFRbfz9AjjzyCv/76Cw888ACOHj2Kzp0747333rP5XqGhoRg8eDDmz5+PI0eO4JZbbsG8efNsvsbHx0fS+uS4cuUKOnXqZBYsnjhxAqNGjXLq3kRkH4MdIlJMq1atsGfPHqPH9uzZgxYtWsDX1xdA1fFRdna2/vmTJ0+ipKRE0v0bNWqExx9/HBs2bMDTTz+NVatWSV6bSqVCy5YtUVxcDADw9/cHYH4UZ7q+yspKpKen639u2bIlrl27hoMHD+ofO378uM0qr44dO+LkyZOIiooyCxjVajXUajW0Wi327dunf43pexCR4xjsEJFinn76aWzfvh1z587FiRMn8Mknn2DJkiWYPn26/prevXtjyZIlOHz4MH777Tc8/vjjksrKp0yZgh9//BFZWVk4dOgQdu7caTVPJi0tDUOHDsVXX32FjIwMnDp1Ch9++CE++ugjDB06FAAQFRWFoKAgpKSkIDc3F4WFhfr1bdmyBVu2bMGff/6JJ554wiiQuemmm9C/f3889thj2LdvHw4ePIhHHnkEQUFBVtc+evRo1K9fH0OHDsUvv/yCrKws/N///R+eeuop/PPPPwCAyZMn47XXXsM333yDP//8ExMmTPDI/kVENRGDHSJSTMeOHbF+/Xp8/vnnSEhIwEsvvYRXXnnFKDn5rbfeQqNGjXDLLbdg1KhRmD59OoKDg+3eu7KyEhMnTkSrVq3Qv39/tGjRAsuWLbN4bcOGDREbG4s5c+agW7du6NixI9555x3MmTMHL7zwAoCqnJh3330X77//PmJiYvRB0EMPPYQxY8bgwQcfxK233oobb7wRt912m9H9V69ejZiYGNx6662466678OijjyIqKsrq2oODg7Fr1y40btwYd911F1q1aoWHH34YpaWlCAsLA1AVKD7wwAMYM2YMEhMTERoaijvvvNPu50JE9qkENnIgIiIiL8adHSIiIvJqDHaIiIjIqzHYISIiIq/GYIeIiIi8GoMdIiIi8moMdoiIiMirMdghIiIir8Zgh4iIiLwagx0iIiLyagx2iIiIyKsx2CEiIiKvxmCHiIiIvNr/A58qet4kkEFXAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Hours_Studied Test_Score\n",
"Hours_Studied 1.000000 0.983399\n",
"Test_Score 0.983399 1.000000\n"
]
}
],
"source": [
"# Scatter plot to visualize the relationship\n",
"plt.scatter(data['Hours_Studied'], data['Test_Score'])\n",
"plt.title('Hours Studied vs Test Score')\n",
"plt.xlabel('Hours Studied')\n",
"plt.ylabel('Test Score')\n",
"plt.show()\n",
"\n",
"# Check the correlation between features and target\n",
"corr_matrix = data.corr()\n",
"print(corr_matrix)\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "4567dd61-0a38-4fae-a10d-9fc5faaacd5d",
"metadata": {},
"outputs": [],
"source": [
"# Split the dataset into independent variables (X) and dependent variable (y)\n",
"X = data[['Hours_Studied']]\n",
"y = data['Test_Score']\n",
"\n",
"# Split the dataset into training and testing sets\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
"\n",
"# Scale the features using StandardScaler\n",
"scaler = StandardScaler()\n",
"X_train_scaled = scaler.fit_transform(X_train)\n",
"X_test_scaled = scaler.transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1a58967d-808e-4105-85ae-c18a493b3250",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficient: [27.31629308]\n",
"Intercept: 55.31588683514129\n"
]
}
],
"source": [
"# Instantiate the linear regression model\n",
"model = LinearRegression()\n",
"\n",
"# Train the model on the training data\n",
"model.fit(X_train_scaled, y_train)\n",
"\n",
"# Check the model's coefficients and intercept\n",
"print(\"Coefficient: \", model.coef_)\n",
"print(\"Intercept: \", model.intercept_)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e36d353d-30de-4893-8936-8e2e59b9670f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predicted Test Score for 6 hours of study: 60.03282292232381\n"
]
}
],
"source": [
"# Example of predicting a single value using a new data point\n",
"new_data = np.array([[6]]) # Example value for hours studied\n",
"new_data_df = pd.DataFrame(new_data, columns=['Hours_Studied']) \n",
"\n",
"# Scale the new data\n",
"new_data_scaled = scaler.transform(new_data_df)\n",
"\n",
"# Predict the test score\n",
"single_prediction = model.predict(new_data_scaled)\n",
"\n",
"print(f\"Predicted Test Score for 6 hours of study: {single_prediction[0]}\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "f1d05789-67f0-4db5-b42a-05a63ec7e63c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean Squared Error: 26.105427937987933\n",
"R-squared: 0.9645671742510007\n"
]
}
],
"source": [
"# Predict on the test set\n",
"y_pred = model.predict(X_test_scaled)\n",
"\n",
"\n",
"# Calculate Mean Squared Error (MSE) and R-squared (R²)\n",
"mse = mean_squared_error(y_test, y_pred)\n",
"r2 = r2_score(y_test, y_pred)\n",
"\n",
"print(f\"Mean Squared Error: {mse}\")\n",
"print(f\"R-squared: {r2}\")\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "c8714b02-ed56-4c59-9729-24d1343bc46c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['scaler.pkl']"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Save the trained model to a file\n",
"joblib.dump(model, 'linear_regression_model.pkl')\n",
"joblib.dump(scaler, 'scaler.pkl')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "a568161c-3337-4743-ba01-8ab6f310bc4b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predicted Test Score for 6 hours of study: 60.03282292232381\n"
]
}
],
"source": [
"# Load the saved model and scaler\n",
"loaded_model = joblib.load('linear_regression_model.pkl')\n",
"loaded_scaler = joblib.load('scaler.pkl')\n",
"\n",
"# New data for prediction (e.g., 6 hours of study)\n",
"new_data = np.array([[6]])\n",
"new_data_df = pd.DataFrame(new_data, columns=['Hours_Studied'])\n",
"\n",
"# Scale the new data using the loaded scaler\n",
"new_data_scaled = loaded_scaler.transform(new_data_df)\n",
"\n",
"# Make the prediction using the loaded model\n",
"single_prediction = loaded_model.predict(new_data_scaled)\n",
"\n",
"# Output the predicted test score\n",
"print(f\"Predicted Test Score for 6 hours of study: {single_prediction[0]}\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e073c96f-b079-4052-9ecd-e557f75c6cca",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}