| import pandas as pd
|
| import numpy as np
|
| import tensorflow as tf
|
| from sklearn.model_selection import train_test_split
|
| from sklearn.preprocessing import StandardScaler
|
| import joblib
|
|
|
|
|
| url = "https://raw.githubusercontent.com/stedy/Machine-Learning-with-R-datasets/master/insurance.csv"
|
| df = pd.read_csv(url)
|
|
|
|
|
| df['sex'] = df['sex'].map({'female': 0, 'male': 1})
|
| df['smoker'] = df['smoker'].map({'no': 0, 'yes': 1})
|
|
|
| df = pd.get_dummies(df, columns=['region'])
|
|
|
|
|
| X = df.drop('charges', axis=1)
|
| y = df['charges']
|
|
|
| X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
|
|
|
|
| scaler = StandardScaler()
|
| X_train_scaled = scaler.fit_transform(X_train)
|
| X_test_scaled = scaler.transform(X_test)
|
|
|
|
|
| joblib.dump(scaler, 'scaler.pkl')
|
|
|
|
|
| model = tf.keras.Sequential([
|
| tf.keras.layers.Dense(128, activation='relu', input_shape=(X_train_scaled.shape[1],)),
|
| tf.keras.layers.Dropout(0.2),
|
| tf.keras.layers.Dense(64, activation='relu'),
|
| tf.keras.layers.Dense(32, activation='relu'),
|
| tf.keras.layers.Dense(1)
|
| ])
|
|
|
|
|
| model.compile(optimizer='adam', loss='mae', metrics=['mse'])
|
| model.fit(X_train_scaled, y_train, epochs=150, batch_size=32, validation_split=0.1, verbose=1)
|
|
|
|
|
| model.save('insurance_model.h5')
|
| print("Model and Scaler saved successfully!") |