ML_AI_training/JR_day2_tensorflow/lidoML_TF.py

128 lines
2.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 23 09:59:50 2020
@author: tanu
"""
#%%
# LIDO ML: tensorflow
#%%
from sklearn.datasets import load_boston
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
import jrpytensorflow
import tensorflow as tf
import matplotlib.pyplot as plt
boston = load_boston()
#X, y = boston.data, boston.target
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size = 0.2
)
#%%
# P1
X,y = jrpytensorflow.datasets.load_circles()
plt.figure()
plt.scatter(X[:,0], X[:,1], c = y, edgecolor = 'black')
#2)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size = 0.2
)
preprocess = Pipeline(
steps = [
('rescale', MinMaxScaler())
]
)
preprocess.fit(X_train)
X_train = preprocess.transform(X_train)
X_test = preprocess.transform(X_test)
import tensorflow as tf
logModel = tf.keras.models.Sequential([
tf.keras.layers.Dense(1, activation = 'sigmoid')
])
logModel.compile(optimizer = 'sgd',
loss = 'binary_crossentropy')
history = logModel.fit(X, y, epochs = 100)
logModel.summary()
#4) predicted probability: for X
model(X) # tf object
model.predict(X) # array
model(X).numpy().ravel() > 0.5
sum(model(X).numpy().ravel() > 0.5)
#101
sum( ( model(X).numpy().ravel() > 0.5) == y)
#97
# 4*) predicted probability: for X_test
logModel.compile(optimizer = 'sgd',
loss = 'binary_crossentropy')
history = logModel.fit(X_test, y_test, epochs = 100)
logModel.summary()
model(X_test) # tf object
model.predict(X_test) # array
model(X_test).numpy().ravel() > 0.5
sum( model(X_test).numpy().ravel() > 0.5)
#22
sum((model(X_test).numpy().ravel() > 0.5) == y_test)
#21
#%%
# Practical 2
#%%
from tensorflow import keras
def smallModel():
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(20, activation = 'relu'),
tf.keras.layers.Dense(10, activation = 'relu'),
tf.keras.layers.Dense(1, activation = 'softmax')
])
model.compile(optimizer = 'sgd',
loss = 'binary_crossentropy',
metrics = ['accuracy'])
return model
model = smallModel()
model.summary()