import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error,r2_score
from sklearn.preprocessing import StandardScaler
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import load_diabetes
diabetes=load_diabetes()
df=pd.DataFrame(diabetes.data,columns=diabetes.feature_names)
df['target']=diabetes.target
df.head()
df.isnull().sum()
X=df.drop('target',axis=1)
y=df['target']
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)
model=LinearRegression()
model.fit(X_train_scaled,y_train)
y_pred=model.predict(X_test_scaled)
y_pred
print("mse\n",mean_squared_error(y_test,y_pred))
print("r2\n",r2_score(y_test,y_pred))
tree_reg=DecisionTreeRegressor(random_state=42)
tree_reg.fit(X_train_scaled,y_train)
y_pred=tree_reg.predict(X_test_scaled)
y_pred
print("mse\n",mean_squared_error(y_test,y_pred))
print("r2\n",r2_score(y_test,y_pred))
ann=Sequential()
ann.add(Dense(units=64,activation='relu',input_shape=(X_train_scaled.shape[1],)))
ann.add(Dense(units=32,activation='relu'))
ann.add(Dense(units=1))
ann.compile(optimizer='adam',loss='mean_squared_error',metrics=['mean_squared_error'])
history=ann.fit(X_train_scaled,y_train,epochs=100,validation_split=0.2,verbose=1)
y_pred=ann.predict(X_test_scaled)
y_pred
print("mse\n",mean_squared_error(y_test,y_pred))
print("r2\n",r2_score(y_test,y_pred))
plt.plot(history.history['mean_squared_error'],label='train')
plt.plot(history.history['val_mean_squared_error'],label='validation')
plt.xlabel('Epochs')
plt.ylabel('Mse')
plt.legend()
plt.show
