机器学习实战部分代码记录

import os
import tarfile
import urllib
DOWNLOAD_ROOT = 'https://raw.githubusercontent.com/ageron/handson-ml2/master/'
HOUSING_PATH = os.path.join('datasets', 'housing')
HOUSING_URL = DOWNLOAD_ROOT + 'datasets/housing/housing.tgz'
def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
    os.makedirs(housing_path, exist_ok=True)
    tgz_path = os.path.join(housing_path, 'housing.tgz')
    #     urllib.request.urlretrieve(housing_url,tgz_path)
    housing_tgz = tarfile.open(tgz_path)
    housing_tgz.extractall(path=housing_path)
    housing_tgz.close()
fetch_housing_data()
import pandas as pd


def load_housing_data(housing_path=HOUSING_PATH):
    csv_path = os.path.join(housing_path, 'housing.csv')
    return pd.read_csv(csv_path)
housing = load_housing_data()
housing.head()

longitude latitude housing_median_age total_rooms total_bedrooms population households median_income median_house_value ocean_proximity
0 -122.23 37.88 41.0 880.0 129.0 322.0 126.0 8.3252 452600.0 NEAR BAY
1 -122.22 37.86 21.0 7099.0 1106.0 2401.0 1138.0 8.3014 358500.0 NEAR BAY
2 -122.24 37.85 52.0 1467.0 190.0 496.0 177.0 7.2574 352100.0 NEAR BAY
3 -122.25 37.85 52.0 1274.0 235.0 558.0 219.0 5.6431 341300.0 NEAR BAY
4 -122.25 37.85 52.0 1627.0 280.0 565.0 259.0 3.8462 342200.0 NEAR BAY
housing.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20640 entries, 0 to 20639
Data columns (total 10 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 longitude 20640 non-null float64
1 latitude 20640 non-null float64
2 housing_median_age 20640 non-null float64
3 total_rooms 20640 non-null float64
4 total_bedrooms 20433 non-null float64
5 population 20640 non-null float64
6 households 20640 non-null float64
7 median_income 20640 non-null float64
8 median_house_value 20640 non-null float64
9 ocean_proximity 20640 non-null object
dtypes: float64(9), object(1)
memory usage: 1.6+ MB

housing['ocean_proximity'].value_counts()

<1H OCEAN 9136
INLAND 6551
NEAR OCEAN 2658
NEAR BAY 2290
ISLAND 5
Name: ocean_proximity, dtype: int64

housing.describe()

longitude latitude housing_median_age total_rooms total_bedrooms population households median_income median_house_value
count 20640.000000 20640.000000 20640.000000 20640.000000 20433.000000 20640.000000 20640.000000 20640.000000 20640.000000
mean -119.569704 35.631861 28.639486 2635.763081 537.870553 1425.476744 499.539680 3.870671 206855.816909
std 2.003532 2.135952 12.585558 2181.615252 421.385070 1132.462122 382.329753 1.899822 115395.615874
min -124.350000 32.540000 1.000000 2.000000 1.000000 3.000000 1.000000 0.499900 14999.000000
25% -121.800000 33.930000 18.000000 1447.750000 296.000000 787.000000 280.000000 2.563400 119600.000000
50% -118.490000 34.260000 29.000000 2127.000000 435.000000 1166.000000 409.000000 3.534800 179700.000000
75% -118.010000 37.710000 37.000000 3148.000000 647.000000 1725.000000 605.000000 4.743250 264725.000000
max -114.310000 41.950000 52.000000 39320.000000 6445.000000 35682.000000 6082.000000 15.000100 500001.000000
import matplotlib.pyplot as plt

housing.hist(bins=50, figsize=(20, 15))
plt.show()

png

import numpy as np


def split_train_test(data, test_ratio):
    shuffled_indices = np.random.premutation(len(data))
    test_set_size = int(len(data) * test_ratio)
    test_indices = shuffled_indices[:test_set_size]
    train_indices = shuffled_dices[test_set_size:]
    return data.iloc[train_indices], data.iloc['test_indices']
from zlib import crc32


def test_set_check(identifier, test_ratio):
    return crc32(np.int64(identifier)) & 0xffffffff < test_ratio * 2 ** 32


def split_train_test_by_id(data, test_ratio, id_column):
    ids = data[id_column]
    in_test_set = ids.apply(lambda id_: test_set_check(id_, test_ratio))
    return data.loc[~in_test_set], data.loc[in_test_set]
housing_with_id = housing.reset_index()
train_set, test_set = split_train_test_by_id(housing_with_id, .2, 'index')
from sklearn.model_selection import train_test_split

train_set, test_set = train_test_split(housing, test_size=.2, random_state=42)
housing['income_cat'] = pd.cut(housing['median_income'], bins=[0., 1.5, 3.0, 4.5, 6., np.inf],
                               labels=['1', '2', '3', '4', '5'])
housing['income_cat'].hist()

AxesSubplot:

from sklearn.model_selection import StratifiedShuffleSplit

split = StratifiedShuffleSplit(n_splits=1, test_size=.2, random_state=42)
for train_index, test_index in split.split(housing, housing['income_cat']):
    strat_train_set = housing.loc[train_index]
    strat_test_set = housing.loc[test_index]
strat_test_set['income_cat'].value_counts() / len(strat_test_set)

3 0.350533
2 0.318798
4 0.176357
5 0.114583
1 0.039729
Name: income_cat, dtype: float64

for set_ in (strat_train_set, strat_test_set):
    set_.drop('income_cat', axis=1, inplace=True)
housing = strat_train_set.copy()
housing.plot(kind='scatter', x='longitude', y='latitude')

<AxesSubplot:xlabel='longitude', ylabel='latitude'>

housing.plot(kind='scatter', x='longitude', y='latitude', alpha=.1)

<AxesSubplot:xlabel='longitude', ylabel='latitude'>

housing.plot(kind='scatter', x='longitude', y='latitude', alpha=.4,
             s=housing['population'] / 100, label='population', figsize=(10, 7),
             c='median_house_value', cmap=plt.get_cmap('jet'), colorbar=True, )
plt.legend()

<matplotlib.legend.Legend at 0x1fc4b1b3910>

corr_matrix = housing.corr()
corr_matrix['median_house_value'].sort_values(ascending=False)

median_house_value 1.000000
median_income 0.687160
total_rooms 0.135097
housing_median_age 0.114110
households 0.064506
total_bedrooms 0.047689
population -0.026920
longitude -0.047432
latitude -0.142724
Name: median_house_value, dtype: float64

from pandas.plotting import scatter_matrix

attributes = ['median_house_value', 'median_income', 'total_rooms', 'housing_median_age']
scatter_matrix(housing[attributes], figsize=(12, 8))

array([[<AxesSubplot:xlabel='median_house_value', ylabel='median_house_value'>,
<AxesSubplot:xlabel='median_income', ylabel='median_house_value'>,
<AxesSubplot:xlabel='total_rooms', ylabel='median_house_value'>,
<AxesSubplot:xlabel='housing_median_age', ylabel='median_house_value'>],
[<AxesSubplot:xlabel='median_house_value', ylabel='median_income'>,
<AxesSubplot:xlabel='median_income', ylabel='median_income'>,
<AxesSubplot:xlabel='total_rooms', ylabel='median_income'>,
<AxesSubplot:xlabel='housing_median_age', ylabel='median_income'>],
[<AxesSubplot:xlabel='median_house_value', ylabel='total_rooms'>,
<AxesSubplot:xlabel='median_income', ylabel='total_rooms'>,
<AxesSubplot:xlabel='total_rooms', ylabel='total_rooms'>,
<AxesSubplot:xlabel='housing_median_age', ylabel='total_rooms'>],
[<AxesSubplot:xlabel='median_house_value', ylabel='housing_median_age'>,
<AxesSubplot:xlabel='median_income', ylabel='housing_median_age'>,
<AxesSubplot:xlabel='total_rooms', ylabel='housing_median_age'>,
<AxesSubplot:xlabel='housing_median_age', ylabel='housing_median_age'>]],
dtype=object)

housing.plot(kind='scatter', x='median_income', y='median_house_value', alpha=.1)

<AxesSubplot:xlabel='median_income', ylabel='median_house_value'>

housing['room_per_household'] = housing['total_rooms'] / housing['households']
housing['bedrooms_per_room'] = housing['total_bedrooms'] / housing['total_rooms']
housing['population_per_household'] = housing['population'] / housing['households']
corr_matrix = housing.corr()
corr_matrix['median_house_value'].sort_values(ascending=False)

median_house_value 1.000000
median_income 0.687160
room_per_household 0.146285
total_rooms 0.135097
housing_median_age 0.114110
households 0.064506
total_bedrooms 0.047689
population_per_household -0.021985
population -0.026920
longitude -0.047432
latitude -0.142724
bedrooms_per_room -0.259984
Name: median_house_value, dtype: float64

housing = strat_train_set.drop('median_house_value', axis=1)
housing_labels = strat_train_set['median_house_value'].copy()
housing.dropna(subset=['total_bedrooms'])
housing.drop('total_bedrooms', axis=1)
median = housing['total_bedrooms'].median()
housing['total_bedrooms'].fillna(median, inplace=True)
from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='median')
housing_num = housing.drop('ocean_proximity', axis=1)
imputer.fit(housing_num)

SimpleImputer(strategy='median')

imputer.statistics_

array([-118.51 , 34.26 , 29. , 2119.5 , 433. , 1164. ,
408. , 3.5409])

housing_num.median().values

array([-118.51 , 34.26 , 29. , 2119.5 , 433. , 1164. ,
408. , 3.5409])

X = imputer.transform(housing_num)
housing_tr = pd.DataFrame(X, columns=housing_num.columns, index=housing_num.index)
housing_tr.head()

longitude latitude housing_median_age total_rooms total_bedrooms population households median_income
17606 -121.89 37.29 38.0 1568.0 351.0 710.0 339.0 2.7042
18632 -121.93 37.05 14.0 679.0 108.0 306.0 113.0 6.4214
14650 -117.20 32.77 31.0 1952.0 471.0 936.0 462.0 2.8621
3230 -119.61 36.31 25.0 1847.0 371.0 1460.0 353.0 1.8839
3555 -118.59 34.23 17.0 6592.0 1525.0 4459.0 1463.0 3.0347
housing_cat = housing[['ocean_proximity']]
housing_cat.head(10)

ocean_proximity
17606 <1H OCEAN
18632 <1H OCEAN
14650 NEAR OCEAN
3230 INLAND
3555 <1H OCEAN
19480 INLAND
8879 <1H OCEAN
13685 INLAND
4937 <1H OCEAN
4861 <1H OCEAN
from sklearn.preprocessing import OrdinalEncoder

ordinal_encoder = OrdinalEncoder()
housing_cat_encoded = ordinal_encoder.fit_transform(housing_cat)
housing_cat_encoded[:10]

array([[0.],
[0.],
[4.],
[1.],
[0.],
[1.],
[0.],
[1.],
[0.],
[0.]])

ordinal_encoder.categories_

[array(['<1H OCEAN', 'INLAND', 'ISLAND', 'NEAR BAY', 'NEAR OCEAN'],
dtype=object)]

from sklearn.preprocessing import OneHotEncoder

cat_encoder = OneHotEncoder()
housing_cat_1hot = cat_encoder.fit_transform(housing_cat)
housing_cat_1hot

<16512x5 sparse matrix of type '<class 'numpy.float64'>'
with 16512 stored elements in Compressed Sparse Row format>

housing_cat_1hot.toarray()

array([[1., 0., 0., 0., 0.],
[1., 0., 0., 0., 0.],
[0., 0., 0., 0., 1.],
...,
[0., 1., 0., 0., 0.],
[1., 0., 0., 0., 0.],
[0., 0., 0., 1., 0.]])

cat_encoder.categories_

[array(['<1H OCEAN', 'INLAND', 'ISLAND', 'NEAR BAY', 'NEAR OCEAN'],
dtype=object)]

from sklearn.base import BaseEstimator, TransformerMixin

rooms_ix, bedrooms_ix, population_ix, households_ix = 3, 4, 5, 6


class CombineAttributesAdder(BaseEstimator, TransformerMixin):
    def __init__(self, add_bedrooms_per_room=True):
        self.add_bedrooms_per_room = add_bedrooms_per_room

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        rooms_per_household = X[:, rooms_ix] / X[:, households_ix]
        population_per_household = X[:, population_ix] / X[:, households_ix]
        if self.add_bedrooms_per_room:
            bedrooms_per_room = X[:, bedrooms_ix] / X[:, rooms_ix]
            return np.c_[X, rooms_per_household, population_per_household, bedrooms_per_room]
        else:
            return np.c_[X, rooms_per_household, population_per_household]


attr_adder = CombineAttributesAdder(add_bedrooms_per_room=False)
housing_extra_attribs = attr_adder.transform(housing.values)
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

num_pipeline = Pipeline([
    ('imputer', SimpleImputer(strategy='median')),
    ('attribs_adder', CombineAttributesAdder()),
    ('std_scaler', StandardScaler()),
])
housing_num_tr = num_pipeline.fit_transform(housing_num)
from sklearn.compose import ColumnTransformer

num_attribs = list(housing_num)
cat_attribs = ['ocean_proximity']
full_pipeline = ColumnTransformer([
    ('num', num_pipeline, num_attribs),
    ('cat', OneHotEncoder(), cat_attribs)
])
housing_prepared = full_pipeline.fit_transform(housing)
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVR

lin_reg = LinearRegression()
lin_reg.fit(housing_prepared, housing_labels)

LinearRegression()

some_data = housing.iloc[:5]
some_labels = housing_labels.iloc[:5]
some_data_prepared = full_pipeline.transform(some_data)
print('Predictions:', lin_reg.predict(some_data_prepared))
print('Labels:', list(some_labels))

Predictions: [210644.60459286 317768.80697211 210956.43331178 59218.98886849
189747.55849879]
Labels: [286600.0, 340600.0, 196900.0, 46300.0, 254500.0]

from sklearn.metrics import mean_squared_error

housing_predictions = lin_reg.predict(housing_prepared)
lin_mse = mean_squared_error(housing_labels, housing_predictions)
lin_rmse = np.sqrt(lin_mse)
print(lin_rmse)

68628.19819848922

from sklearn.tree import DecisionTreeRegressor

tree_reg = DecisionTreeRegressor()
tree_reg.fit(housing_prepared, housing_labels)

DecisionTreeRegressor()

housing_predictions = tree_reg.predict(housing_prepared)
tree_mse = mean_squared_error(housing_labels, housing_predictions)
tree_rmse = np.sqrt(tree_mse)
print(tree_rmse)

0.0

from sklearn.model_selection import cross_val_score

scores = cross_val_score(tree_reg, housing_prepared, housing_labels,
                         scoring='neg_mean_squared_error', cv=10)
tree_rmse_scores = np.sqrt(-scores)
def display_scores(scores):
    print('Scores:', scores)
    print('Mean', scores.mean())
    print('Standard deviation:', scores.std())


display_scores(tree_rmse_scores)

Scores: [69416.33669414 67782.13993816 70173.16745941 69579.87557619
70720.40065274 74877.62293583 69906.12004702 70809.23753535
77124.33050805 69199.3466666 ]
Mean 70958.85780134902
Standard deviation: 2695.235929632891

from sklearn.ensemble import RandomForestRegressor

forest_reg = RandomForestRegressor()
forest_reg.fit(housing_prepared, housing_labels)
housing_predictions = forest_reg.predict(housing_prepared)
scores = cross_val_score(forest_reg, housing_prepared, housing_labels,
                         scoring='neg_mean_squared_error', cv=10)
forest_rmse = np.sqrt(-scores)
print(forest_rmse)
display_scores(forest_rmse)

[49362.02006854 47552.12271312 49730.2037848 51917.53461051
49596.27903231 53817.76978951 48752.32564683 48302.67987447
53196.94752373 50079.75977202]
Scores: [49362.02006854 47552.12271312 49730.2037848 51917.53461051
49596.27903231 53817.76978951 48752.32564683 48302.67987447
53196.94752373 50079.75977202]
Mean 50230.76428158405
Standard deviation: 1975.3254877235545

import joblib

joblib.dump(forest_reg, 'my_model.pkl')
my_model_loaded = joblib.load('my_model.pkl')
housing_predictions = my_model_loaded.predict(housing_prepared)
scores = cross_val_score(my_model_loaded, housing_prepared, housing_labels, scoring='neg_mean_squared_error', cv=10)
display_scores(np.sqrt(-scores))

Scores: [49181.28829608 47845.36405697 49989.81779911 52231.00875541
49323.40158566 53263.32357274 48683.3215678 47509.06936157
53165.71411796 49970.30529447]
Mean 50116.2614407759
Standard deviation: 1980.4835966278818

from sklearn.model_selection import GridSearchCV

param_grid = [{'n_estimators': [3, 10, 30],
               'max_features': [2, 4, 6, 8]},
              {'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]}]
forest_reg = RandomForestRegressor()
grid_search = GridSearchCV(forest_reg, param_grid, cv=5, scoring='neg_mean_squared_error', return_train_score=True)
grid_search.fit(housing_prepared, housing_labels)

GridSearchCV(cv=5, estimator=RandomForestRegressor(),
param_grid=[{'max_features': [2, 4, 6, 8],
'n_estimators': [3, 10, 30]},
{'bootstrap': [False], 'max_features': [2, 3, 4],
'n_estimators': [3, 10]}],
return_train_score=True, scoring='neg_mean_squared_error')

grid_search.best_params_

{'max_features': 8, 'n_estimators': 30}

grid_search.best_estimator_

RandomForestRegressor(max_features=8, n_estimators=30)

cvres = grid_search.cv_results_
for mean_score, param in zip(cvres['mean_test_score'], cvres['params']):
    print(np.sqrt(-mean_score), param)

64108.00437308683 {'max_features': 2, 'n_estimators': 3}
56619.59288995137 {'max_features': 2, 'n_estimators': 10}
52743.26513475566 {'max_features': 2, 'n_estimators': 30}
59003.59872504106 {'max_features': 4, 'n_estimators': 3}
52979.42143872364 {'max_features': 4, 'n_estimators': 10}
50765.08215598859 {'max_features': 4, 'n_estimators': 30}
58997.16923009962 {'max_features': 6, 'n_estimators': 3}
52345.68525941587 {'max_features': 6, 'n_estimators': 10}
50112.19025469013 {'max_features': 6, 'n_estimators': 30}
58223.830964284985 {'max_features': 8, 'n_estimators': 3}
52126.89229462948 {'max_features': 8, 'n_estimators': 10}
50048.89679435864 {'max_features': 8, 'n_estimators': 30}
62275.87976603669 {'bootstrap': False, 'max_features': 2, 'n_estimators': 3}
54194.97320824429 {'bootstrap': False, 'max_features': 2, 'n_estimators': 10}
58968.52066842902 {'bootstrap': False, 'max_features': 3, 'n_estimators': 3}
52990.29338851935 {'bootstrap': False, 'max_features': 3, 'n_estimators': 10}
58434.68668390731 {'bootstrap': False, 'max_features': 4, 'n_estimators': 3}
51521.747722087006 {'bootstrap': False, 'max_features': 4, 'n_estimators': 10}

feature_importances = grid_search.best_estimator_.feature_importances_
feature_importances

array([7.05179980e-02, 6.13069723e-02, 4.21406445e-02, 1.55043051e-02,
1.43125791e-02, 1.53049948e-02, 1.41538416e-02, 3.22511331e-01,
7.46060138e-02, 1.12021735e-01, 6.51738277e-02, 7.17147206e-03,
1.80041873e-01, 8.61053676e-05, 2.02918334e-03, 3.11712283e-03])

extra_attribs = ['room_per_hhold', 'pop_per_hhold', 'bedrooms_per_room']
cat_encoder = full_pipeline.named_transformers_['cat']
cat_one_hot_attribs = list(cat_encoder.categories_[0])
attributes = num_attribs + extra_attribs + cat_one_hot_attribs
sorted(zip(feature_importances, attributes), reverse=True)

[(0.32251133116933794, 'median_income'),
(0.18004187339785474, 'INLAND'),
(0.11202173486676632, 'pop_per_hhold'),
(0.07460601380932613, 'room_per_hhold'),
(0.070517997955895, 'longitude'),
(0.06517382768996458, 'bedrooms_per_room'),
(0.06130697234915819, 'latitude'),
(0.04214064450954377, 'housing_median_age'),
(0.015504305074857689, 'total_rooms'),
(0.015304994822925123, 'population'),
(0.014312579143545619, 'total_bedrooms'),
(0.014153841616100137, 'households'),
(0.007171472055845241, '<1H OCEAN'),
(0.0031171228327430364, 'NEAR OCEAN'),
(0.002029183338571615, 'NEAR BAY'),
(8.610536756484587e-05, 'ISLAND')]

final_model = grid_search.best_estimator_
X_test = strat_test_set.drop('median_house_value', axis=1)
y_test = strat_test_set['median_house_value'].copy()
X_test_prepared = full_pipeline.transform(X_test)
final_predictions = final_model.predict(X_test_prepared)
final_mse = mean_squared_error(y_test, final_predictions)
final_rmse = np.sqrt(final_mse)
final_rmse

48146.842147844945

from scipy import stats

confidence = .95
squared_errors = (final_predictions - y_test) ** 2
np.sqrt(
    stats.t.interval(confidence, len(squared_errors) - 1, loc=squared_errors.mean(), scale=stats.sem(squared_errors)))

array([46145.7162622 , 50068.05057387])

from sklearn.datasets import fetch_openml

mnist = fetch_openml('mnist_784', version=1)
mnist.keys()

dict_keys(['data', 'target', 'frame', 'categories', 'feature_names', 'target_names', 'DESCR', 'details', 'url'])

X, y = np.array(mnist.data), np.array(mnist.target)
print(X.shape)
print(y.shape)
print(X)

(70000, 784)
(70000,)
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]

import matplotlib as mpl
import matplotlib.pyplot as plt

some_digit = X[0]
some_digit_image = some_digit.reshape(28, 28)
plt.imshow(some_digit_image, cmap='binary')
plt.axis('off')
plt.show()

png

png

png

png

png

png

X_train, X_test, y_train, y_test = X[:60000], X[6000:], y[:60000], y[60000:]
y_train_5 = (y_train == '5').astype(int)
y_test_5 = (y_test == '5').astype(int)
from sklearn.linear_model import SGDClassifier

sgd_clf = SGDClassifier(random_state=42)
sgd_clf.fit(X_train, y_train_5)

SGDClassifier(random_state=42)

sgd_clf.predict([some_digit])

array([1])

from sklearn.model_selection import cross_val_score

cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring='accuracy')

array([0.95035, 0.96035, 0.9604 ])

from sklearn.base import BaseEstimator


class Never5Classifier(BaseEstimator):
    def fit(self, X, y=None):
        return self

    def predict(self, X):
        return np.zeros((len(X), 1), dtype=bool)
never_5_clf = Never5Classifier()
cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring='accuracy')

array([0.91125, 0.90855, 0.90915])

from sklearn.model_selection import cross_val_predict

y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)
from sklearn.metrics import confusion_matrix

confusion_matrix(y_train_5, y_train_pred)

array([[53892, 687],
[ 1891, 3530]], dtype=int64)

from sklearn.metrics import precision_score, recall_score

precision_score(y_train_5, y_train_pred)

0.8370879772350012

recall_score(y_train_5, y_train_pred)

0.6511713705958311

from sklearn.metrics import f1_score

f1_score(y_train_5, y_train_pred)

0.7325171197343846

y_scores = sgd_clf.decision_function([some_digit])
y_scores

array([2164.22030239])

threshold = 0
y_some_digit_pred = (y_scores > threshold)
y_some_digit_pred

array([ True])

threshold = 8000
y_some_digit_pred = (y_scores > threshold)
y_some_digit_pred

array([False])

y_scores = cross_val_score(sgd_clf, X_train, y_train_5, cv=3)
# from sklearn.metrics import precision_recall_curve
# precisions,recalls,thresholds=precision_recall_curve(y_train_5,y_scores)
# def plot_precision_recall_vs_threshold(precisions,recalls,thresholds):
#     plt.plot(thresholds,precisions[:-1],'b--',label='Precision')
#     plt.plot(thresholds,recalls[:-1],'g-',label='Recall')
# plot_precision_recall_vs_threshold(precisions,recalls,thresholds)
# plt.grid(True)
# plt.show()
# # threshold_90_precision=thresholds[np.argmax(precision>=.9)]
def plot_roc_curve(fpr, tpr, label=None):
    plt.plot(fpr, tpr, linewidth=2, label=label)
    plt.plot([0, 1], [0, 1], 'k--')
# from sklearn.metrics import roc_curve
# fpr,tpr,thresholds=roc_curve(y_train_5,y_scores)
# from sklearn.metrics import roc_auc_score
# roc_auc_score(y_train_5,y_scores)
from sklearn.ensemble import RandomForestClassifier

forest_clf = RandomForestClassifier(random_state=42)
y_probas_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3, method='predict_proba')
from sklearn.metrics import roc_curve

y_scores_forest = y_probas_forest[:, 1]
fpr_forest, tpr_forest, thresholds_forest = roc_curve(y_train_5, y_scores_forest)
plot_roc_curve(fpr_forest, tpr_forest, 'Random Forest')
plt.legend('lower right')
plt.show()

png

from sklearn.metrics import roc_auc_score

roc_auc_score(y_train_5, y_scores_forest)

0.9983436731328145

from sklearn.svm import SVC

svm_clf = SVC()
svm_clf.fit(X_train, y_train)
svm_clf.predict([some_digit])

array(['5'], dtype=object)

some_digit_scores = svm_clf.decision_function([some_digit])
some_digit_scores

array([[ 1.72501977, 2.72809088, 7.2510018 , 8.3076379 , -0.31087254,
9.3132482 , 1.70975103, 2.76765202, 6.23049537, 4.84771048]])

np.argmax(some_digit_scores)

5

svm_clf.classes_

array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype=object)

svm_clf.classes_[5]

'5'

from sklearn.multiclass import OneVsRestClassifier

ovr_clf = OneVsRestClassifier(SVC())
ovr_clf.fit(X_train, y_train)
ovr_clf.predict([some_digit])

array(['5'], dtype='<U1')

len(ovr_clf.estimators_)

10

sgd_clf.fit(X_train, y_train)
sgd_clf.predict([some_digit])

array(['3'], dtype='<U1')

sgd_clf.decision_function([some_digit])

array([[-31893.03095419, -34419.69069632, -9530.63950739,
1823.73154031, -22320.14822878, -1385.80478895,
-26188.91070951, -16147.51323997, -4604.35491274,
-12050.767298 ]])

cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring='accuracy')

array([0.87365, 0.85835, 0.8689 ])

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))
cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring='accuracy')

array([0.87365, 0.85835, 0.8689 ])

y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv=3)
conf_mx = confusion_matrix(y_train, y_train_pred)
conf_mx
plt.matshow(conf_mx, cmap=plt.cm.gray)
plt.show()
row_sums = conf_mx.sum(axis=1, keepdims=True)
norm_conf_mx = conf_mx / row_sums
np.fill_diagonal(norm_conf_mx, 0)
plt.matshow(norm_conf_mx, cmap=plt.cm.gray)
plt.show()
print(y_train)
y_train = y_train.astype(np.int)
print(y_train)
y_train_pred = y_train_pred.astype(int)
import matplotlib


def plot_digits(instances, images_per_row=5, **options):
    size = 28
    images_per_row = min(len(instances), images_per_row)
    images = [instance.reshape(size, size) for instance in instances]
    n_rows = (len(instances) - 1) // images_per_row + 1
    row_images = []
    n_empty = n_rows * images_per_row - len(instances)
    images.append(np.zeros((size, size * n_empty)))
    for row in range(n_rows):
        rimages = images[row * images_per_row: (row + 1) * images_per_row]
        row_images.append(np.concatenate(rimages, axis=1))
    image = np.concatenate(row_images, axis=0)
    plt.imshow(image, cmap=matplotlib.cm.binary, **options)
    plt.axis("off")


cl_a, cl_b = 3, 5
X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]
X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]
X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]
X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]
plt.figure(figsize=(8, 8))
plt.subplot(221);
plot_digits(X_aa[:25], images_per_row=5)
plt.subplot(222);
plot_digits(X_ab[:25], images_per_row=5)
plt.subplot(223);
plot_digits(X_ba[:25], images_per_row=5)
plt.subplot(224);
plot_digits(X_bb[:25], images_per_row=5)
plt.show()
from sklearn.neighbors import KNeighborsClassifier

y_train_large = (y_train >= 7)
y_train_odd = (y_train % 2 == 1)
y_multilabel = np.c_[y_train_large, y_train_odd]
knn_clf = KNeighborsClassifier()
knn_clf.fit(X_train, y_multilabel)
from sklearn.metrics import f1_score

y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_multilabel, cv=3)
f1_score(y_multilabel, y_train_knn_pred, average='macro')
# noise = np.random.randint(0, 100, (len(X_train), 784))
# X_train_mod=X_train+noise
# noise=np.random.randint(0,100,(len(X_test),784))
# X_test_mod=X_test+noise
# y_train_mod=X_train
# y_test_mod=X_test
# knn_clf.fit(X-train_mod,y_train_mod)
# clean_digit=knn_clf.fit([X_test_mod[some_index]])
# plot_digits(clean_digit)
import numpy as np

X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
X_b = np.c_[np.ones((100, 1)), X]
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
theta_best
X_new = np.array([[0], [2]])
X_new_b = np.c_[np.ones((2, 1)), X_new]
y_predict = X_new_b.dot(theta_best)
y_predict
plt.plot(X_new, y_predict, 'r-')
plt.plot(X, y, 'b.')
plt.axis([0, 2, 0, 15])
plt.show()
from sklearn.linear_model import LinearRegression

lin_reg = LinearRegression()
lin_reg.fit(X, y)
lin_reg.intercept_, lin_reg.coef_
theta_best_svd, residuals, rank, s = np.linalg.lstsq(X_b, y, rcond=1e-6)
theta_best_svd
np.linalg.pinv(X_b).dot(y)
eta = 0.1
n_iterations = 1000
m = 100
theta = np.random.randn(2, 1)
for iteration in range(n_iterations):
    gradients = 2 / m * X_b.T.dot(X_b.dot(theta) - y)
    theta = theta - eta * gradients
theta
n_epochs = 50
t0, t1 = 5, 50


def learning_schudule(t):
    return t0 / (t + t1)


theta = np.random.randn(2, 1)
for epoch in range(n_epochs):
    for i in range(m):
        random_index = np.random.randint(m)
        xi = X_b[random_index:random_index + 1]
        yi = y[random_index:random_index + 1]
        gradients = 2 * xi.T.dot(xi.dot(theta) - yi)
        eta = learning_schudule(epoch * m + i)
        theta = theta - eta * gradients
theta
from sklearn.linear_model import SGDRegressor

sgd_reg = SGDRegressor(max_iter=1000, tol=1e-3, penalty=None, eta0=.1)
sgd_reg.fit(X, y.ravel())
sgd_reg.intercept_, sgd_reg.coef_
m = 100
X = 6 * np.random.rand(m, 1) - 3
y = 0.5 * X ** 2 + X + np.random.randn(m, 1)
from sklearn.preprocessing import PolynomialFeatures

poly_feature = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_feature.fit_transform(X)
print(X[0], X_poly[0])
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)
lin_reg.intercept_, lin_reg.coef_
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split


def plot_learning_curves(model, X, y):
    X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=.2)
    train_errors, val_errors = [], []
    for m in range(1, len(X_train)):
        model.fit(X_train[:m], y_train[:m])
        y_train_predict = model.predict(X_train[:m])
        y_val_predict = model.predict(X_val[:m])
        train_errors.append(mean_squared_error(y_train[:m], y_train_predict))
        val_errors.append(mean_squared_error(y_val[:m], y_val_predict))
    plt.plot(np.sqrt(train_errors), 'r-+', linewidth=2, label='train')
    plt.plot(np.sqrt(val_errors), 'b-', linewidth=2, label='val')


lin_reg = LinearRegression()
plot_learning_curves(lin_reg, X, y)
from sklearn.pipeline import Pipeline

polynomial_regression = Pipeline([
    ('poly_feature', PolynomialFeatures(degree=10, include_bias=False)),
    ('lin_reg', LinearRegression())
])
plot_learning_curves(polynomial_regression, X, y)
from sklearn.linear_model import Ridge

ridge_reg = Ridge(alpha=1, solver='cholesky')
ridge_reg.fit(X, y)
ridge_reg.predict([[1.5]])
sgd_reg = SGDRegressor(penalty='l2')
sgd_reg.fit(X, y)
sgd_reg.predict([[1.5]])
from sklearn.linear_model import Lasso

lasso_reg = Lasso(alpha=.1)
lasso_reg.fit(X, y)
lasso_reg.predict([[1.5]])
sgd_reg = SGDRegressor(penalty='l1')
sgd_reg.fit(X, y)
sgd_reg.predict([[1.5]])
from sklearn.linear_model import ElasticNet

elastic_net = ElasticNet(alpha=.1, l1_ratio=.5)
elastic_net.fit(X, y)
elastic_net.predict([[1.5]])
from sklearn.base import clone

poly_scaler = Pipeline([
    ('poly_feature', PolynomialFeatures()),
    ('std_scaler', StandardScaler())
])
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=.2)
X_train_poly_scaled = poly_scaler.fit_transform(X_train)
X_val_poly_scaled = poly_scaler.fit_transform(X_val)
sgd_reg = SGDRegressor(max_iter=1, tol=-np.infty, warm_start=True,
                       penalty=None, learning_rate='constant', eta0=0.0005)
minimum_val_error = float('inf')

best_epoch = None
best_model = None
for epoch in range(1000):
    sgd_reg.fit(X_train_poly_scaled, y_train)
    y_val_predict = sgd_reg.predict(X_val_poly_scaled)
    val_error = mean_squared_error(y_val, y_val_predict)
    if val_error < minimum_val_error:
        minimum_val_error = val_error
        best_epoch = epoch
        best_model = clone(sgd_reg)
print(best_model, best_epoch)
from sklearn import datasets

iris = datasets.load_iris()
list(iris.keys())

['data',
'target',
'frame',
'target_names',
'DESCR',
'feature_names',
'filename']

import numpy as np

X = iris.data[:, 3:]
y = (iris.target == 2).astype(np.int)
from sklearn.linear_model import LogisticRegression

log_reg = LogisticRegression()
log_reg.fit(X, y)
import matplotlib.pyplot as plt

X_new = np.linspace(0, 3, 1000).reshape(-1, 1)
y_proba = log_reg.predict_proba(X_new)
plt.plot(X_new, y_proba[:, 1], 'g-', label='Iris virginica')
plt.plot(X_new, y_proba[:, 0], 'b--', label='Not Iris virginica')
plt.show()
log_reg.predict([[1.7],[1.5]])
from sklearn.linear_model import LogisticRegression
X=iris.data[:,(2,3)]
y=iris.target
softmax_reg=LogisticRegression(multi_class='multinomial',solver='lbfgs',C=10)
softmax_reg.fit(X,y)

LogisticRegression(C=10, multi_class='multinomial')

print(softmax_reg.predict([[5,2]]))
print(softmax_reg.predict_proba([[5,2]]))
import numpy as np
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
iris=datasets.load_iris()
X=iris.data[:,(2,3)]
y=(iris.target==2).astype(np.float64)
svm_clf=Pipeline([
    ('scaler',StandardScaler()),
    ('linear_svc',LinearSVC(C=1,loss='hinge'))
])
svm_clf.fit(X,y)
svm_clf.predict([[5.5,1.7]])
print(cross_val_score(svm_clf,X,y,cv=3).mean())
from sklearn.datasets import make_moons
from sklearn.preprocessing import PolynomialFeatures
X,y=make_moons(n_samples=100,noise=.15)
from sklearn.model_selection import cross_val_score
polynomial_svm_clf=Pipeline([
    ('poly_features',PolynomialFeatures(degree=3)),
    ('scaler',StandardScaler()),
    ('svm_clf',LinearSVC(C=10,loss='hinge'))
])
polynomial_svm_clf.fit(X,y)
print(cross_val_score(polynomial_svm_clf,X,y,cv=3).mean())
from sklearn.svm import SVC
poly_kernel_svm_clf=Pipeline([
    ('scaler',StandardScaler()),
    ('svm_clf',SVC(kernel='poly',degree=3,coef0=1,C=5))
])
poly_kernel_svm_clf.fit(X,y)
print(cross_val_score(poly_kernel_svm_clf,X,y,cv=3).mean())
rbf_kernel_svm_clf=Pipeline([
    ('scaler',StandardScaler()),
    ('svm_clf',SVC(kernel='rbf',gamma=.5,C=.001))
])
rbf_kernel_svm_clf.fit(X,y)
print(cross_val_score(rbf_kernel_svm_clf,X,y,cv=3).mean())
from sklearn.svm import LinearSVR
svm_reg=LinearSVR(epsilon=1.5)
svm_reg.fit(X,y)
print(cross_val_score(svm_reg,X,y,cv=3).mean())
from sklearn.svm import SVR
svm_poly_reg=SVR(kernel='poly',degree=2,C=100,epsilon=0.1)
svm_poly_reg.fit(X,y)
print(svm_poly_reg.score(X,y))
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
iris=load_iris()
X=iris.data[:,(2,3)]
y=iris.target
tree_clf=DecisionTreeClassifier(max_depth=2)
tree_clf.fit(X,y)
print(cross_val_score(tree_clf,X,y,cv=3).mean())
from sklearn.tree import export_graphviz
export_graphviz(
    tree_clf,
    out_file='./iris_tree.dot',
    feature_names=iris.feature_names[2:],
    class_names=iris.target_names,
    rounded=True,
    filled=True,
)
import graphviz
with open('./iris_tree.dot') as f:
    dot_graph=f.read()
dot=graphviz.Source(dot_graph)
dot.view()
print(tree_clf.predict([[5,1.5]]))
print(tree_clf.predict_proba([[5,1.5]]))
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
X,y=make_moons(n_samples=1000,noise=.05)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=.2,shuffle=True)

log_clf=LogisticRegression()
rnd_clf=RandomForestClassifier()
svm_clf=SVC()
voting_clf=VotingClassifier(
    estimators=[('lr',log_clf),('rf',rnd_clf),
                ('svc',svm_clf)],
    voting='hard'
)
voting_clf.fit(X_train,y_train)
from sklearn.metrics import accuracy_score
for clf in (log_clf,rnd_clf,svm_clf,voting_clf):
    clf.fit(X_train,y_train)
    y_pred=clf.predict(X_test)
    print(clf.__class__.__name__,accuracy_score(y_test,y_pred))
from sklearn.ensemble import BaggingClassifier
bag_clf=BaggingClassifier(
    DecisionTreeClassifier(),n_estimators=500,
    max_samples=100,bootstrap=True,n_jobs=-1
)
bag_clf.fit(X_train,y_train)
y_pred=bag_clf.predict(X_test)
bag_clf=BaggingClassifier(
    DecisionTreeClassifier(),n_estimators=500,
    bootstrap=True,n_jobs=-1,oob_score=True
)
bag_clf.fit(X_train,y_train)
print(bag_clf.oob_score_)
from sklearn.metrics import accuracy_score
y_pred=bag_clf.predict(X_test)
accuracy_score(y_test,y_pred)
bag_clf.oob_decision_function_
from sklearn.ensemble import RandomForestClassifier
rnd_clf=RandomForestClassifier(n_estimators=500,max_leaf_nodes=16,
                               max_samples=.99,bootstrap=True,n_jobs=-1)
rnd_clf.fit(X_train,y_train)
print(cross_val_score(rnd_clf,X_test,y_test,cv=3).mean())
from sklearn.datasets import load_iris
iris=load_iris()
rnd_clf=RandomForestClassifier(n_estimators=500,n_jobs=-1)
rnd_clf.fit(iris.data,iris.target)
for name,score in zip(iris.feature_names,rnd_clf.feature_importances_):
    print(name,score)
from sklearn.ensemble import AdaBoostClassifier
ada_clf=AdaBoostClassifier(DecisionTreeClassifier(max_depth=1),n_estimators=200,
                           algorithm='SAMME.R',learning_rate=.5)
ada_clf.fit(X_train,y_train)
print(ada_clf.score(X_test,y_test))
from sklearn.tree import DecisionTreeRegressor
tree_reg1=DecisionTreeRegressor(max_depth=2)
tree_reg1.fit(X,y)
y2=y-tree_reg1.predict(X)
tree_reg2=DecisionTreeRegressor(max_depth=2)
tree_reg2.fit(X,y2)
y3=y2-tree_reg2.predict(X)
tree_reg3=DecisionTreeRegressor(max_depth=2)
tree_reg3.fit(X,y3)
y_pred=sum(tree.predict(X_new)for tree in (tree_reg1,tree_reg2,tree_reg3))
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import accuracy_score
gbrt=GradientBoostingRegressor(max_depth=2,n_estimators=3,learning_rate=1.0)
gbrt.fit(X,y)
print(gbrt.score(X,y))

0.9827942142434103

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X_train,X_val,y_train,y_val=train_test_split(X,y)
gbrt=GradientBoostingRegressor(max_depth=2,n_estimators=120)
gbrt.fit(X_train,y_train)
errors=[mean_squared_error(y_val,y_pred)for y_pred in gbrt.staged_predict(X_val)]
bst_n_estimators=np.argmin(errors)+1
gbrt_best=GradientBoostingRegressor(max_depth=2,n_estimators=bst_n_estimators)
gbrt_best.fit(X_train,y_train)
print(gbrt.score(X_val,y_val))
print(gbrt_best.score(X_val,y_val))

0.9706379704111208
0.9714084367032003

gbrt=GradientBoostingRegressor(max_depth=2,warm_start=True)
min_val_error=float('inf')
error_going_up=0
for n_estimators in range(1,120):
    gbrt.n_estimators=n_estimators
    gbrt.fit(X_train,y_train)
    y_pred=gbrt.predict(X_val)
    val_error=mean_squared_error(y_val,y_pred)
    if val_error<min_val_error:
        min_val_error=val_error
        error_going_up=0
    else:
        error_going_up+=1
        if error_going_up==5:
            break
import xgboost
xgb_reg=xgboost.XGBRegressor()
xgb_reg.fit(X_train,y_train)
y_pred=xgb_reg.predict(X_val)
print(xgb_reg.score(X_val,y_val))
xgb_reg.fit(X_train,y_train,eval_set=[(X_val,y_val)],early_stopping_rounds=2)
y_pred=xgb_reg.predict(X_val)
print(xgb_reg.score(X_val,y_val))

0.9258463360765268
[0] validation_0-rmse:0.74517
[1] validation_0-rmse:0.54556
[2] validation_0-rmse:0.42315
[3] validation_0-rmse:0.34834
[4] validation_0-rmse:0.28781
[5] validation_0-rmse:0.26702
[6] validation_0-rmse:0.24426
[7] validation_0-rmse:0.23158
[8] validation_0-rmse:0.22462
[9] validation_0-rmse:0.22130
[10] validation_0-rmse:0.21973
[11] validation_0-rmse:0.21810
[12] validation_0-rmse:0.21729
[13] validation_0-rmse:0.21667
[14] validation_0-rmse:0.21386
[15] validation_0-rmse:0.21332
[16] validation_0-rmse:0.21294
[17] validation_0-rmse:0.21265
[18] validation_0-rmse:0.21245
[19] validation_0-rmse:0.21229
[20] validation_0-rmse:0.21218
[21] validation_0-rmse:0.21209
[22] validation_0-rmse:0.21214
[23] validation_0-rmse:0.21209
[24] validation_0-rmse:0.21212
[25] validation_0-rmse:0.21209
0.9258543669826482

from sklearn.datasets import load_digits
X_digits,y_digits=load_digits(return_X_y=True)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X_digits,y_digits)
from sklearn.linear_model import LogisticRegression
log_reg=LogisticRegression()
log_reg.fit(X_train,y_train)
log_reg.score(X_test,y_test)

C:\ProgramData\Miniconda3\lib\site-packages\sklearn\linear_model_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(

0.9711111111111111

from sklearn.pipeline import Pipeline
from sklearn.cluster import KMeans
pipeline=Pipeline([
    ('kmeans',KMeans(n_clusters=50)),
    ('log_reg',LogisticRegression()),
])
pipeline.fit(X_train,y_train)

C:\ProgramData\Miniconda3\lib\site-packages\sklearn\linear_model_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(

Pipeline(steps=[('kmeans', KMeans(n_clusters=50)),
('log_reg', LogisticRegression())])

pipeline.score(X_test,y_test)

0.9577777777777777

from sklearn.model_selection import GridSearchCV
param_grid=dict(kmeans__n_clusters=range(2,100))
grid_clf=GridSearchCV(pipeline,param_grid,cv=3,verbose=2,n_jobs=-1)
grid_clf.fit(X_train,y_train)

Fitting 3 folds for each of 98 candidates, totalling 294 fits

C:\ProgramData\Miniconda3\lib\site-packages\sklearn\linear_model_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(

GridSearchCV(cv=3,
estimator=Pipeline(steps=[('kmeans', KMeans(n_clusters=50)),
('log_reg', LogisticRegression())]),
n_jobs=-1, param_grid={'kmeans__n_clusters': range(2, 100)},
verbose=2)

print(grid_clf.best_params_)
print(grid_clf.score(X_test,y_test))

{'kmeans__n_clusters': 91}
0.96

n_labeled=50
log_reg=LogisticRegression()
log_reg.fit(X_train[:n_labeled],y_train[:n_labeled])
log_reg.score(X_test,y_test)

C:\ProgramData\Miniconda3\lib\site-packages\sklearn\linear_model_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(

0.8088888888888889

k=50
kmeans=KMeans(n_clusters=k)
X_digits_dist=kmeans.fit_transform(X_train)
representative_digit_idx=np.argmin(X_digits_dist,axis=0)
X_representative_digits=X_train[representative_digit_idx]
print(X_digits_dist.shape)
print(representative_digit_idx.shape)
print(X_representative_digits.shape)

(1347, 50)
(50,)
(50, 64)

from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
X,y=make_moons(n_samples=1000,noise=.05)
dbscan=DBSCAN(eps=.05,min_samples=5)
dbscan.fit(X)
print(dbscan.labels_)

[ 0 -1 1 2 3 0 2 2 0 3 1 4 -1 2 3 5 2 2 6 1 0 2 6 0
-1 -1 1 2 0 0 1 1 6 1 1 -1 0 1 -1 7 1 0 2 2 8 -1 8 2
6 9 10 4 8 0 -1 1 5 1 4 3 1 5 0 1 6 1 8 1 0 1 1 0
-1 -1 10 10 0 -1 8 0 5 4 11 8 2 1 1 8 5 2 6 2 8 1 10 1
7 5 4 -1 4 6 1 2 0 -1 2 -1 2 1 2 6 0 0 8 -1 1 2 2 10
6 8 0 10 6 1 10 0 2 2 2 11 10 6 1 7 0 1 2 1 2 3 -1 2
1 10 12 7 11 10 12 3 1 1 0 2 1 2 11 10 0 0 1 1 1 0 -1 4
2 8 3 2 10 1 1 1 2 1 2 10 -1 1 1 8 10 2 6 2 12 1 2 10
3 0 2 13 8 10 -1 2 10 6 5 6 -1 3 4 3 6 7 2 1 1 8 3 12
-1 3 6 10 1 2 2 3 -1 4 10 1 1 3 2 1 5 2 1 6 1 1 3 1
2 7 1 2 0 -1 11 1 6 2 10 8 3 7 8 8 3 3 3 0 8 10 10 2
3 3 7 2 2 7 0 1 2 10 2 6 13 2 1 0 -1 12 2 1 6 2 6 2
1 2 -1 1 1 5 3 8 5 1 2 10 1 1 3 1 6 6 -1 10 0 1 0 0
10 8 1 5 0 6 1 1 2 2 -1 1 10 10 1 6 6 3 5 5 1 5 2 0
5 1 1 0 2 2 2 3 1 1 11 10 3 2 10 0 3 1 1 1 6 0 1 1
6 1 7 0 4 0 1 1 2 1 1 6 -1 1 1 6 6 2 1 12 2 1 3 1
1 3 7 -1 1 1 7 0 1 1 2 4 6 -1 1 6 0 10 1 1 3 -1 10 2
1 3 1 2 -1 11 6 10 2 2 1 5 12 5 0 0 7 0 1 1 1 0 10 1
0 2 7 6 1 0 1 -1 -1 -1 1 4 3 -1 1 2 0 0 12 3 1 0 10 2
10 7 6 0 7 1 1 2 1 2 10 2 8 -1 1 5 1 1 0 1 5 1 -1 -1
1 -1 4 2 8 2 8 7 1 2 2 2 2 -1 1 8 11 6 0 3 5 3 6 2
2 1 -1 1 1 1 0 1 2 4 0 0 0 0 6 -1 1 8 1 10 1 2 7 1
1 1 8 2 11 2 3 -1 0 0 10 6 3 1 10 2 7 0 8 0 1 2 6 -1
-1 1 13 2 1 4 8 2 -1 6 -1 1 3 1 1 3 1 10 13 -1 -1 10 6 0
1 10 3 1 8 5 3 2 1 2 2 8 1 1 8 3 8 3 1 3 4 4 5 0
1 2 1 1 2 6 10 1 10 1 2 2 2 2 1 4 1 -1 9 2 2 2 1 12
8 -1 2 2 -1 8 7 1 1 11 7 -1 10 1 -1 -1 11 1 11 -1 10 0 8 1
6 0 3 2 1 8 -1 1 1 1 1 7 7 7 6 1 11 -1 6 3 1 3 3 3
1 1 6 1 2 5 -1 6 2 2 1 0 2 1 0 1 0 6 5 6 7 2 5 6
7 2 1 1 -1 6 4 11 -1 6 1 6 2 3 1 6 1 10 7 1 6 5 -1 2
-1 1 2 2 1 1 1 0 1 1 7 2 1 2 1 6 6 0 1 8 8 3 2 4
1 5 1 2 2 0 8 2 9 6 12 8 10 6 1 3 2 8 11 2 0 13 1 8
6 8 2 2 7 2 1 6 7 7 1 1 2 2 7 6 2 10 6 1 5 1 0 1
-1 4 -1 -1 12 1 -1 2 0 1 1 -1 0 10 2 1 12 12 5 -1 2 1 5 2
2 2 1 0 2 4 3 1 4 2 1 1 1 5 11 3 1 -1 2 0 1 1 7 3
1 1 12 6 1 0 7 13 6 2 10 7 6 1 1 2 0 10 0 1 3 8 1 7
12 -1 1 1 2 12 -1 1 2 -1 2 7 0 0 6 0 1 3 4 1 0 1 1 1
2 1 1 1 10 1 -1 10 1 3 12 0 1 2 13 1 -1 10 0 4 4 -1 1 4
1 8 2 1 8 0 2 1 -1 -1 0 8 -1 12 2 3 3 -1 7 9 2 3 10 8
6 0 2 6 6 10 7 5 -1 0 12 1 2 1 5 5 10 2 -1 1 6 2 1 10
1 2 10 1 2 2 10 -1 1 2 0 8 1 3 3 10 9 1 10 2 12 3 10 12
8 2 2 6 2 3 4 1 1 2 5 10 -1 1 11 2]

from sklearn.neighbors import KNeighborsClassifier
knn=KNeighborsClassifier(n_neighbors=50)
knn.fit(dbscan.components_,dbscan.labels_[dbscan.core_sample_indices_])

KNeighborsClassifier(n_neighbors=50)

X_new=np.array([[-0.5,0],[0,0.5],[1,-0.1],[2,1]])
knn.predict(X_new)

array([2, 8, 5, 7], dtype=int64)

knn.predict_proba(X_new)

array([[0. , 0. , 0.92, 0. , 0. , 0. , 0. , 0. , 0.08, 0. , 0. ,
0. , 0. , 0. ],
[0. , 0.1 , 0. , 0. , 0. , 0. , 0. , 0. , 0.86, 0.04, 0. ,
0. , 0. , 0. ],
[0. , 0.3 , 0. , 0. , 0. , 0.62, 0. , 0. , 0. , 0. , 0.08,
0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.6 , 0. , 0. , 0. ,
0.28, 0. , 0.12]])

y_dist,y_pred_idx=knn.kneighbors(X_new,n_neighbors=1)
y_pred=dbscan.labels_[dbscan.core_sample_indices_][y_pred_idx]
y_pred[y_dist>.2]=-1
y_pred.ravel()

array([-1, 8, 5, -1], dtype=int64)

from sklearn.mixture import GaussianMixture
gm=GaussianMixture(n_components=3,n_init=10)
gm.fit(X)

GaussianMixture(n_components=3, n_init=10)

gm.weights_

array([0.60069666, 0.20005219, 0.19925116])

gm.means_

array([[ 0.50462498, 0.24807532],
[-0.74907842, 0.54917138],
[ 1.75148762, -0.05147541]])

gm.covariances_

array([[[ 0.17416012, -0.10744643],
[-0.10744643, 0.29029869]],

[[ 0.04815635, 0.05878948],
[ 0.05878948, 0.08706883]],

[[ 0.05180877, 0.06056736],
[ 0.06056736, 0.08565656]]])

gm.converged_

True

gm.n_iter_

19

gm.predict(X)

array([2, 0, 0, 1, 0, 2, 1, 1, 2, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 2, 1,
0, 2, 0, 1, 0, 1, 2, 2, 0, 0, 0, 0, 0, 1, 2, 0, 0, 2, 0, 2, 1, 1,
0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 2, 0, 1, 2, 0, 1, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 2, 0, 1, 2, 0, 0, 0, 1, 2, 0, 1, 0, 1, 0,
1, 0, 2, 2, 0, 0, 2, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 2, 1, 1, 1, 2,
0, 0, 0, 2, 2, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
2, 1, 0, 1, 2, 0, 2, 2, 0, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 2, 1, 2, 0, 0,
0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2,
0, 1, 2, 1, 2, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1,
0, 0, 2, 1, 1, 2, 2, 0, 1, 0, 1, 0, 2, 1, 0, 2, 1, 0, 1, 0, 0, 1,
0, 1, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0,
2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 2, 0, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 1, 2, 0, 0, 0, 2, 1, 1, 1, 0, 2, 0, 2, 0, 0, 1, 0, 2,
0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 1, 2, 0, 0, 1, 0, 2, 0, 1, 0,
2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 0, 2, 2, 0, 0, 1, 1,
0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 1, 1,
2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 2, 1, 2, 0, 0, 2, 0, 0,
1, 1, 0, 1, 0, 1, 0, 1, 2, 2, 0, 0, 0, 2, 0, 1, 0, 2, 0, 2, 2, 2,
0, 1, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 2, 1, 0, 1,
0, 1, 0, 2, 0, 1, 0, 1, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 2, 0, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0,
0, 0, 0, 1, 2, 1, 0, 1, 2, 2, 0, 0, 0, 2, 0, 1, 2, 2, 0, 2, 2, 1,
0, 1, 1, 0, 2, 1, 0, 0, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 2, 0, 2, 0,
0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0,
0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 0, 0, 0,
0, 0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 2,
2, 2, 0, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1,
0, 2, 1, 0, 2, 0, 2, 0, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 1, 0, 0, 2,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
0, 2, 0, 0, 2, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1,
1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 2, 2, 0, 0, 0, 0,
1, 1, 2, 1, 0, 0, 2, 2, 2, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 0, 2, 0,
2, 1, 0, 1, 0, 0, 0, 1, 2, 0, 2, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0,
0, 1, 1, 1, 0, 2, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 1, 2,
0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 2, 0, 0, 0, 1, 2, 0,
2, 0, 0, 0, 0, 2, 0, 2, 0, 0, 1, 0, 0, 0, 1, 2, 1, 2, 2, 2, 0, 2,
0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 1,
2, 0, 0, 0, 2, 0, 1, 1, 2, 0, 2, 0, 1, 0, 0, 2, 1, 2, 0, 0, 2, 0,
0, 0, 1, 0, 0, 1, 2, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 2, 0, 0, 2,
0, 0, 1, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0,
0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2, 1], dtype=int64)

gm.predict_proba(X)

array([[1.84639616e-002, 8.13917410e-217, 9.81536038e-001],
[1.00000000e+000, 8.35539101e-033, 9.38289835e-078],
[1.00000000e+000, 3.83854998e-098, 1.23801360e-022],
...,
[9.47959110e-001, 4.18274573e-178, 5.20408905e-002],
[6.21948796e-004, 3.20451428e-201, 9.99378051e-001],
[2.88704784e-004, 9.99711295e-001, 1.51481085e-195]])

X_new,y_new=gm.sample(6)
X_new

array([[ 0.53362824, 0.32275894],
[ 0.3433989 , -0.33954636],
[ 1.09687378, 0.01947112],
[-0.07312629, 0.11767319],
[ 1.69427156, -0.14600702],
[ 2.18025817, 0.7848448 ]])

y_new

array([0, 0, 0, 0, 2, 2])

gm.score_samples(X)

array([-1.39969123e-01, -1.29876232e+00, -1.41875414e+00, -4.83713609e-01,
-1.71664221e+00, -8.53681601e-01, -1.01424807e+00, -1.03690929e-01,
-7.47873678e-02, -1.78820484e+00, -1.40549823e+00, -2.24851888e+00,
-1.83817115e+00, -3.23807961e-01, -1.44986405e+00, -1.49443085e+00,
1.27644775e-01, -3.83351311e-01, -1.96588511e+00, -1.93665669e+00,
-1.05582453e+00, 1.70999894e-02, -1.62287708e+00, -2.82285440e-01,
-2.20091110e+00, -2.01141776e+00, -1.73063443e+00, -8.16133495e-01,
-1.20066629e+00, -3.88579183e-01, -1.62428136e+00, -1.70156426e+00,
-1.67226978e+00, -1.66593573e+00, -1.35593812e+00, -1.91604869e-01,
-1.27592703e-01, -1.82047447e+00, -2.11513488e+00, -4.00303398e-01,
-1.63944382e+00, -7.10178802e-01, -4.64103180e-01, -4.55336793e-01,
-1.31873120e+00, -2.01283848e+00, -1.25468226e+00, -7.18044407e-01,
-2.12661594e+00, -1.20292980e+00, -1.55159227e+00, -1.48319287e+00,
-1.63200641e+00, 1.55583558e-02, -9.75438736e-01, -1.70015764e+00,
-1.23497557e+00, -1.42082045e+00, -1.55598816e+00, -1.56256088e+00,
-1.71829277e+00, -1.68884265e+00, 8.18678762e-02, -1.73084294e+00,
-1.94086559e+00, -2.08238074e+00, -1.67610524e+00, -1.56916941e+00,
-4.18627860e-01, -1.50717245e+00, -1.74206130e+00, 1.15392010e-01,
-1.18625439e+00, -2.03876330e+00, -1.64096373e+00, -1.54075090e+00,
-2.56132961e-01, -1.16512858e+00, -1.77613654e+00, -1.37418649e+00,
-1.48316871e+00, -1.94288222e+00, -2.03881536e+00, -1.25604205e+00,
-4.86532091e-01, -1.50653217e+00, -1.25504184e+00, -1.43467976e+00,
-1.59255032e+00, 1.20840895e-01, -1.62598097e+00, -4.54617598e-01,
-1.53376638e+00, -1.28639060e+00, -1.33562613e+00, -1.66092520e+00,
-9.37294024e-01, -1.41617415e+00, -1.63097718e+00, -9.20908794e-01,
-2.23827207e+00, -1.85003205e+00, -1.46531327e+00, -8.11586647e-02,
-2.30041969e-01, -2.26110002e+00, -4.77097353e-01, -1.74145502e+00,
-1.80307769e+00, -2.03749213e+00, -3.24955538e-01, -1.63835962e+00,
6.00388867e-03, -1.57668876e-02, -1.35206437e+00, -1.91468004e+00,
-5.71312635e-01, -4.24478815e-01, -1.78696458e-02, -1.61565645e+00,
-1.97559424e+00, -1.42613555e+00, 6.00495332e-02, -1.41755801e+00,
-2.01853890e+00, -2.17480516e+00, -1.78138909e+00, -3.11774028e-01,
-4.61671530e-01, -5.55161501e-01, -1.01489297e+00, -1.70253694e+00,
-1.18611951e+00, -1.61213180e+00, -1.62610250e+00, -2.80537309e-01,
-1.60402740e+00, -1.93901439e+00, -5.56012136e-01, -1.65205407e+00,
-3.58495916e-01, -1.60602520e+00, -1.00782453e+00, -1.22801611e+00,
-1.62920732e+00, -1.80444460e+00, -1.78543896e+00, -2.62110651e-01,
-2.75731595e+00, -1.39266577e+00, -1.85834921e+00, -1.88373425e+00,
-1.55085838e+00, -1.78036879e+00, -3.90871991e-01, -4.68715294e-01,
-1.47018078e+00, -2.01289786e-01, -1.56942242e+00, -1.25165924e+00,
-1.77970933e-02, -5.85907690e-01, -1.76858894e+00, -1.77774824e+00,
-1.92767157e+00, -4.15899846e-01, -1.77016381e+00, -2.24913008e+00,
-4.82687417e-01, -1.78739187e+00, -1.44444292e+00, -6.03642673e-01,
-1.86602769e+00, -1.41905093e+00, -1.46176579e+00, -2.14775355e+00,
-5.17013550e-01, -1.70251958e+00, -2.80273523e-01, -1.51480963e+00,
-1.41698284e-02, -1.75771621e+00, -1.56549031e+00, -1.35045298e+00,
-1.54660761e+00, -6.24207610e-01, -1.76001515e+00, -2.03759808e-01,
-1.54467998e+00, -2.19730493e+00, -5.70706324e-01, -1.61805026e+00,
-1.55429480e+00, 5.52510158e-02, -7.20752291e-01, -4.05911128e+00,
-1.74766678e+00, -1.64949873e+00, -1.22460417e+00, -3.91210876e-01,
-1.57230467e+00, -2.04130686e+00, -1.46404336e+00, -1.99653627e+00,
9.43482294e-02, -1.25548150e+00, -2.26054566e+00, -1.45556990e+00,
-1.92341188e+00, -3.00643623e-01, -5.97113172e-01, -1.83595955e+00,
-1.52673350e+00, -1.56275916e+00, -1.32924447e+00, -1.55445131e+00,
-1.88268825e+00, -1.57342820e+00, -2.02861246e+00, -1.71829022e+00,
-1.60328817e+00, 1.19858845e-01, -4.49793702e-01, -1.44976736e+00,
-2.50316539e+00, -2.11341919e+00, -1.64272032e+00, -1.45864695e+00,
-1.96859151e+00, -1.44107309e+00, -1.05715288e+00, -1.93519464e+00,
-1.43943823e+00, -1.35540866e-01, -1.64061001e+00, -1.55224074e+00,
-2.19835399e+00, -1.62272460e+00, -1.61554947e+00, -1.97288238e+00,
3.46564706e-02, -3.73113989e-01, -1.34952757e+00, 1.00242568e-01,
-1.86606072e-01, -5.13287895e-01, -1.43126228e+00, -2.12706083e+00,
-1.79626760e+00, -3.38774630e-01, -1.39778948e+00, -1.34405936e+00,
-1.68035484e+00, -3.82484723e-01, -1.68429143e+00, -1.49797271e+00,
-1.76850746e+00, -1.46683401e+00, -1.35405685e+00, 1.36001125e-01,
-1.29313230e+00, -1.50246982e+00, -1.75565367e+00, -1.83445388e+00,
-1.38954526e+00, -1.83342202e+00, -8.04038347e-01, -8.24020535e-01,
1.01594689e-02, -4.75450121e-01, -1.08317627e-01, -1.58440500e+00,
-1.03208677e+00, -1.80069421e+00, -1.79659400e+00, -2.19190318e+00,
-2.38998436e+00, -4.23588949e-01, -2.19228824e+00, -3.83317491e-02,
-1.06490400e+00, -1.94966513e+00, 5.61558267e-02, -1.81271007e+00,
-1.63246559e+00, -1.43242913e+00, -1.64292584e+00, -5.03771410e-01,
-1.96268862e+00, -1.18564784e+00, -1.85242315e+00, -1.74509354e+00,
-1.68065059e+00, -1.41858477e+00, -1.29771065e+00, -1.41184604e+00,
-1.52034953e+00, -1.54623839e+00, -3.63458838e-03, -1.64041663e+00,
-2.14970426e+00, -1.65686327e+00, -1.53598045e+00, -1.52239160e+00,
-1.88370781e+00, -1.59704426e+00, -2.17634271e+00, -1.85068334e+00,
9.48533034e-02, -1.56163317e+00, -1.82506231e+00, -1.30273105e+00,
-1.76070462e+00, -1.83636063e+00, -1.30848416e+00, -1.58086611e+00,
-9.87547146e-01, -1.56293413e+00, -8.84052262e-01, -1.88681589e+00,
-9.89872421e-01, -2.03149859e-01, -1.76784734e+00, -1.66280933e+00,
-1.52686461e+00, -1.87275735e+00, -1.45354784e+00, -1.97123030e+00,
-2.07097945e+00, -1.40808819e+00, -1.45752348e+00, -1.47830461e+00,
-1.70475893e+00, -1.52123651e+00, -9.59200483e-01, -1.70479577e-01,
-1.45606806e+00, -1.62707914e+00, -1.95701023e+00, 1.04044760e-01,
-6.07873029e-01, -1.87788756e-01, -1.26258110e+00, -1.53913566e+00,
-5.33445422e-01, -1.91400583e+00, -1.24519493e+00, -1.61921466e+00,
-1.54159969e+00, -1.16486794e+00, -1.57301717e+00, -3.22815678e-01,
-1.58558561e+00, -1.77060389e+00, -1.68658254e+00, -1.94784159e+00,
-1.74690579e+00, -4.01453283e-01, -1.42624156e+00, -1.78300336e+00,
-1.60450790e+00, -1.37500427e+00, -4.05215172e-01, -3.21009717e-01,
-1.61185818e+00, -4.03614320e-01, -1.91492046e+00, -1.39686174e+00,
-2.75059747e-01, -1.80375903e+00, -8.22295783e-01, -1.85380492e+00,
-4.47345933e+00, -1.66556682e+00, -7.95958269e-01, -1.77727343e+00,
-1.97635855e+00, -1.47583517e+00, -1.89352833e+00, -1.68125413e+00,
-9.82625428e-01, -1.60620293e+00, -1.70366943e+00, -2.10751273e+00,
-1.83164101e+00, -1.45003856e+00, -9.48065103e-01, -1.31336082e+00,
-1.95958827e+00, -1.93034670e+00, -9.02949977e-02, -3.27089321e-01,
-1.46946815e+00, -1.40756223e+00, -1.37926566e-01, -1.59643729e+00,
-1.80364431e+00, -2.06484772e+00, -1.89892067e+00, -1.85812440e+00,
-4.68142048e-01, -1.61765422e+00, -1.70455367e+00, -1.61652273e+00,
-1.36140706e+00, -2.16147887e+00, -1.45667064e+00, -1.96918346e+00,
-1.74443214e+00, -1.63110434e+00, -1.55329860e+00, 1.85201991e-02,
-1.57445976e+00, -2.47701457e+00, -2.08073496e+00, -1.39035336e+00,
-2.03624832e-01, -3.61601906e-01, -7.27239483e-01, -1.31116432e+00,
-1.30584138e+00, -1.43600285e+00, 6.37537966e-02, -4.01642712e-01,
-2.35052490e-01, -4.43019637e-01, -1.41634071e+00, -1.52605952e+00,
-1.99445652e+00, -4.48276814e-01, -1.83716229e+00, -1.52734307e+00,
-1.42220618e-01, -5.02793522e-01, -2.86811007e-01, -1.60058482e+00,
-1.70206493e+00, 9.01824456e-02, -1.28985947e+00, -1.85531523e+00,
-1.24277768e+00, -1.04665459e+00, -1.64666261e+00, -1.66997149e+00,
-1.59033786e+00, -1.19712256e-01, -1.43770446e+00, -2.49213811e-01,
-7.51062255e-01, 4.70437448e-02, -1.60623020e+00, -1.85043583e+00,
-1.78710565e+00, -6.04512213e-02, -1.46047189e+00, -1.41635843e+00,
-1.46957590e+00, -3.84571896e-01, -1.93551220e+00, -2.60035198e-01,
-2.18139616e-01, -1.52577112e+00, -1.55001597e+00, -6.85239478e-01,
-9.39597556e-01, -7.58009571e-01, -1.72837529e+00, -6.80483977e-01,
-1.49534152e+00, -1.72515667e+00, -1.69499248e+00, -1.61979803e+00,
-1.89776829e+00, -1.68684727e+00, -1.10055567e+00, -1.84853586e+00,
-1.52932088e+00, -1.69156770e+00, -1.84979032e+00, -2.20537102e+00,
-6.49386517e-01, -3.16681487e+00, -2.03700465e+00, -1.28117920e+00,
-1.42384667e+00, -1.32126160e-01, -1.75132098e+00, -3.43238695e-01,
-1.55122023e+00, -9.50303293e-01, -2.24924062e+00, -3.46388984e-01,
-9.23787620e-01, -1.92525443e+00, -1.84019393e+00, -1.44081360e+00,
-1.26284497e+00, -1.83523663e+00, -1.52531966e-01, -1.77253656e+00,
-1.48092078e+00, -1.70761951e+00, -1.67358184e+00, -1.03299419e+00,
-8.92679298e-01, -1.53083388e+00, -2.04303802e+00, -1.71426915e+00,
-1.51177586e+00, -1.90000572e+00, -3.04543867e-01, -2.07896165e+00,
-3.75037440e-01, -2.15965626e+00, -3.23147395e-01, -2.70584285e-01,
-2.55652816e-01, -1.21594004e+00, -2.05511014e+00, -1.19759813e+00,
-1.59854675e+00, -1.34921166e+00, -1.61473283e+00, -1.75686533e+00,
-1.46179259e+00, -1.47511898e-01, -6.21291745e-01, -1.59060864e+00,
-1.87369148e+00, -1.48735694e+00, -1.58904055e+00, 4.09009065e-02,
-1.39969199e+00, -7.01384169e-01, -1.55899601e+00, -5.93668102e-01,
7.82878235e-02, -3.56595917e-01, -1.61326648e+00, -1.68365669e+00,
-1.40540840e+00, -8.93017788e-01, -1.24515163e+00, -1.54716865e+00,
-6.38052625e-01, -1.07887958e-01, -1.32170406e+00, -7.76926246e-01,
-6.32453219e-01, -8.04630249e-01, -1.72867519e+00, -1.01204774e+00,
1.84806080e-02, -1.71449769e+00, -3.01050694e+00, -6.05915379e-02,
-1.69850176e+00, -2.23946966e+00, -1.45201237e+00, -5.89620237e-01,
-1.48892642e+00, -1.77447103e+00, -2.02659746e+00, -1.38323178e+00,
-1.46837830e+00, -1.68846824e+00, -1.59132254e+00, -1.55212741e+00,
-1.65463865e+00, -1.66441755e+00, -2.89650450e+00, -1.21241039e+00,
-1.90584148e+00, -1.45647043e+00, -2.06262936e+00, -8.58553038e-04,
-1.41479389e+00, -1.26432080e+00, -1.63458652e+00, -1.72031082e+00,
-1.38955409e+00, -1.36946635e+00, -1.61793119e+00, -6.92358374e-01,
-1.68182683e+00, 2.44347801e-02, -3.93098308e-01, -1.29127769e+00,
-1.55621779e+00, -6.22442355e-01, -1.33188721e+00, -1.69111673e+00,
-1.39264856e+00, -1.54455237e+00, -2.26936317e+00, -1.54068462e+00,
-2.06022591e+00, -2.27891918e+00, -1.23632958e+00, -1.54604402e-01,
-2.16843485e+00, -7.88099700e-01, -1.41370197e+00, -1.65665631e+00,
1.35805877e-02, -1.77387205e+00, -1.66701310e+00, -1.56274205e+00,
-1.40496542e+00, -1.64868626e+00, -2.13951241e-01, -1.12898703e+00,
-2.61108554e-01, -1.30432480e+00, -1.02899217e+00, -2.32028136e+00,
-1.76323623e+00, -9.71456247e-01, -1.23425637e+00, -5.43118850e-01,
-2.23733299e+00, 7.25565719e-02, -2.04751126e+00, -1.77353933e+00,
-1.68895195e+00, -1.64464302e+00, -4.16854361e-01, -1.82850505e-01,
-1.45206478e+00, -1.63914703e+00, -1.78058115e-01, -1.70372282e+00,
-1.76911842e+00, -1.15445653e+00, -9.27626489e-02, -2.27880448e+00,
-1.67288490e+00, -1.66442093e+00, -1.86578149e+00, -1.86913890e+00,
-9.26343381e-01, -1.52645252e+00, -2.23868481e+00, -1.89111191e+00,
-1.47651731e+00, -7.01743102e-01, -1.49437040e+00, -8.17909579e-01,
-1.81830636e+00, -2.17989999e-01, -1.41823371e+00, -1.01942793e+00,
-1.69465501e+00, -1.31869282e+00, -3.20220549e+00, -1.98676859e+00,
-1.36445213e+00, -1.60473584e+00, -1.74564978e+00, -5.68030935e-01,
-5.64801481e-01, -4.01883578e-01, -1.79459298e+00, -1.68757860e+00,
-1.10141250e+00, -1.20991100e+00, -2.10733886e+00, -1.41480887e+00,
-1.88617826e+00, -1.70737228e+00, -1.67339986e+00, -1.70940870e+00,
-1.59604482e+00, -1.57931666e+00, -1.89974783e+00, -1.32704353e+00,
-1.74118501e-01, -1.50520555e+00, -1.25845631e+00, -1.82158739e+00,
-1.40558422e+00, 4.51090877e-04, -2.10720283e+00, -7.17166122e-01,
-1.42375336e+00, -1.81320809e+00, -5.86399642e-01, -1.64322734e+00,
-7.85737531e-01, -2.01340036e+00, -1.44837372e+00, -1.49447306e+00,
-7.56442970e-01, -8.55966676e-01, -1.45089338e+00, -1.58912567e+00,
-5.75510445e-01, -1.97727332e-01, -2.18427105e+00, -1.58496817e+00,
-1.27520624e+00, -2.14823771e+00, -2.02729264e+00, -1.56205435e+00,
-1.92590081e+00, -1.88289860e+00, -1.57054648e+00, -1.62607926e+00,
-4.65517865e-01, -1.42111769e+00, -1.49865749e+00, -1.68570010e+00,
-1.97054046e+00, -1.69063653e+00, -8.17759727e-01, -1.92514759e+00,
-2.15541249e+00, -1.59024442e+00, -2.66646352e+00, -3.78647756e-01,
-2.05082442e+00, -1.70359201e+00, -3.76532108e-01, 6.56029777e-02,
-1.52283194e+00, -1.74699007e+00, -1.84155348e+00, -2.93432484e-01,
-1.46821740e+00, -1.69754638e+00, -1.43023588e-01, -6.87854868e-01,
-1.91588558e+00, -1.98534983e-03, -1.59481504e+00, -1.51012735e+00,
-2.07310071e+00, -4.40126361e-02, -1.63387875e+00, -1.67260778e+00,
-1.52186725e+00, -1.77932589e+00, -1.50434831e+00, -1.72022864e+00,
-1.37938363e+00, -1.49651560e+00, -1.46646119e+00, -7.12583048e-01,
-1.13355509e+00, -3.70581177e-01, -1.50107041e+00, -6.76294363e-02,
-1.11047632e+00, -1.61031669e+00, -1.40301337e+00, -1.44816669e+00,
-1.75592379e+00, -1.89468217e+00, -1.30151696e+00, -1.63205024e+00,
-6.22715564e-01, -1.97761357e+00, -1.27083793e+00, -1.67494145e+00,
-1.68789313e-01, -3.37540610e+00, -1.50039811e+00, -1.58265204e+00,
-1.87625455e+00, -1.54471688e+00, -2.30786984e-01, -6.18710451e-01,
-3.15594469e-01, -2.24221325e-01, -1.82465679e+00, -1.54961828e+00,
-2.91274177e-01, 1.70244216e-02, -9.19087725e-01, -1.81008460e+00,
-2.35776288e-01, -3.57416165e-01, -3.88751175e-01, -1.72310518e+00,
-8.60083268e-01, -1.62615820e+00, -1.51732047e+00, -1.39162206e+00,
-1.60552264e+00, -2.07685122e+00, -1.60970564e+00, -1.97902464e+00,
-1.20613758e+00, -1.67242832e+00, -1.94905988e+00, -4.17658137e+00,
-1.67278383e+00, -2.19818187e+00, -2.10816797e+00, -2.05149455e-01,
-1.45815657e+00, -1.78907920e+00, -1.13925992e+00, -1.78763170e+00,
-1.84674132e-01, -1.52486433e+00, -6.03012188e-01, -1.68128892e+00,
-1.22565849e+00, -1.69623489e+00, -1.59703404e+00, -1.48585043e+00,
-6.40240133e-01, -1.52545953e+00, -1.34998917e+00, -1.21281148e-01,
-8.51818565e-01, -9.38177969e-01, -1.71324554e+00, -3.07818873e-01,
-6.16548896e-01, -2.29853472e+00, -1.52455695e+00, -1.86552602e+00,
-2.26226777e+00, -3.43207134e-01, -1.94614866e+00, -1.83568851e+00,
-1.88924712e+00, -1.40254521e+00, -1.57566459e+00, -1.55507339e+00,
-1.54498829e+00, -1.21524856e+00, -2.14227678e-02, -3.54575348e-01,
-1.79473013e+00, -1.49100729e+00, -4.00884885e-01, -1.45982294e+00,
-1.70295328e+00, -1.82493690e+00, -1.58369306e+00, -1.95268817e+00,
-1.70606414e+00, -8.62271274e-01, -1.24947505e+00, -2.57436989e+00,
-2.22019987e+00, -1.16847464e-02, -1.77894502e+00, -3.85552767e-01,
-2.14797360e+00, -1.65926440e+00, -1.83389985e+00, -2.54434322e-01,
3.43043697e-02, -1.65206333e+00, -3.28274002e-01, -1.64309542e+00,
-1.75596717e+00, -1.37559484e+00, -1.91026540e+00, -4.79455773e-01,
-1.72054091e+00, -1.01353461e+00, -1.76071822e+00, -1.60686343e+00,
-1.69184622e-01, -1.46070777e+00, -2.14422871e+00, -1.68618830e+00,
-1.02426134e+00, -8.92253232e-02, -5.36729328e-01, -6.00666986e-01,
-3.71545844e-01, -3.07309728e-01, -1.79122932e+00, 1.14672578e-01,
-1.64313944e+00, -1.58504641e+00, -2.25442447e+00, -1.46692725e+00,
-1.40942304e+00, -1.70021099e+00, -1.67200161e+00, -1.47097858e+00,
-6.38306064e-01, -1.64736443e+00, -1.16410553e+00, -1.48686496e+00,
-1.40724205e+00, -1.63365120e+00, -3.59822368e+00, -1.77262993e+00,
-8.32509976e-01, -1.39730680e+00, -1.64170286e+00, -3.56163727e-01,
-1.75292674e+00, -2.93866905e-02, -3.13919042e+00, -2.17182632e+00,
-2.31599119e+00, -1.41313233e+00, -9.50274962e-02, -2.31159299e+00,
-1.73038403e+00, -2.92164450e+00, -6.47821425e-01, -2.23615790e+00,
-1.53384158e+00, -1.51360528e+00, -1.01301387e+00, -2.11110677e+00,
-1.43923154e+00, -2.21184272e-01, -3.48773289e-01, -9.66253962e-01,
-2.29126502e+00, -1.49118166e+00, 1.07749667e-01, -1.41938665e+00,
-1.72886381e+00, -1.62539445e+00, 8.65933733e-02, -1.74053277e+00,
-1.64976987e+00, 2.33070449e-02, -4.55499385e-01, -1.24240587e+00,
1.27365973e-02, -1.59828050e+00, -1.70433217e+00, -1.57550926e+00,
-1.69566884e+00, -1.75548971e+00, -4.01947067e-01, -1.87279557e+00,
-1.78200732e+00, -1.80427720e+00, -1.95593544e-01, -1.43567555e+00,
-1.79447971e+00, -3.61941504e-01, -1.57276137e+00, -1.51161307e+00,
-6.59356007e-01, -1.82419373e+00, -1.42767008e+00, -1.60508134e+00,
-1.57103516e+00, 5.46139507e-02, -1.49717245e+00, -1.76304508e+00,
-1.65951698e+00, -2.62296839e-01, -1.36029724e+00, -1.68746917e+00,
-1.98488925e+00, -8.06033943e-02, -1.58932767e+00, -1.49213192e+00,
-5.77136931e-01, -4.57322175e-01, -1.48213003e+00, -2.37545860e+00,
-1.58238014e+00, 1.41289825e-01, -3.38057036e-01, -1.40518674e+00,
-1.40473774e+00, -1.50908488e+00, -1.55954575e+00, -1.78192124e+00,
-1.27472032e+00, -1.72372215e+00, -1.82035851e+00, -3.06040378e-01,
-1.35170907e+00, -1.57366331e+00, -1.48502689e+00, -1.40898417e+00,
-1.50439415e+00, -1.42946113e-02, -1.18719386e+00, -1.65414506e+00,
1.80360251e-02, -1.61200424e+00, -2.27701647e+00, -1.63683320e+00,
-1.75810213e+00, -2.31202370e+00, -1.50602402e+00, -1.86454162e+00,
-2.18779332e+00, -2.18096629e+00, -1.90889110e+00, -1.16166247e+00])

densities=gm.score_samples(X)
density_threshold=np.percentile(densities,4)
anomalies=X[densities<density_threshold]
from tensorflow import keras
import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import Perceptron

iris=load_iris()
X=iris.data[:,(2,3)]
y=(iris.target==0).astype(np.int)

per_clf=Perceptron()
per_clf.fit(X,y)

y_pred=per_clf.predict([[2,0.5]])
print(y_pred)

[0]

:7: DeprecationWarning: np.int is a deprecated alias for the builtin int. To silence this warning, use int by itself. Doing this will not modify any behavior and is safe. When replacing np.int, you may wish to use e.g. np.int64 or np.int32 to specify the precision. If you wish to review your current use, check the release note link for additional information.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
y=(iris.target==0).astype(np.int)

import tensorflow as tf
from tensorflow import keras 
tf.__version__

'2.5.0'

keras.__version__

'2.5.0'

fashion_mnist=keras.datasets.fashion_mnist
(X_train_full,y_train_full),(X_test_full,y_test_full)=fashion_mnist.load_data()
X_train_full.shape

(60000, 28, 28)

X_train_full.dtype

dtype('uint8')

X_valid,X_train=X_train_full[:5000]/255.0,X_train_full[5000:]/255.0
y_valid,y_train=y_train_full[:5000],y_train_full[5000:]
class_names=['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']
class_names[y_train[0]]

'Coat'

model=keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28,28]))
model.add(keras.layers.Dense(300,activation='relu'))
model.add(keras.layers.Dense(100,activation='relu'))
model.add(keras.layers.Dense(10,activation='softmax'))
model.summary()

Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten (Flatten) (None, 784) 0
_________________________________________________________________
dense (Dense) (None, 300) 235500
_________________________________________________________________
dense_1 (Dense) (None, 100) 30100
_________________________________________________________________
dense_2 (Dense) (None, 10) 1010
=================================================================
Total params: 266,610
Trainable params: 266,610
Non-trainable params: 0
_________________________________________________________________

model.layers

[<tensorflow.python.keras.layers.core.Flatten at 0x2308e9544f0>,
<tensorflow.python.keras.layers.core.Dense at 0x2308e954580>,
<tensorflow.python.keras.layers.core.Dense at 0x230ab471a90>,
<tensorflow.python.keras.layers.core.Dense at 0x230ab6e76a0>]

hidden1=model.layers[1]
hidden1.name

'dense'

model.get_layer('dense') is hidden1

True

weights,biases=hidden1.get_weights()
weights

array([[-0.02355686, -0.06677087, -0.05494346, ..., 0.06829496,
-0.06202614, -0.05456015],
[-0.0363773 , 0.01772781, 0.02173208, ..., 0.01349571,
0.06078388, -0.00125662],
[ 0.03755426, 0.05189237, 0.03913542, ..., 0.07190312,
-0.03818733, 0.04893252],
...,
[ 0.01075952, -0.02351004, -0.02586202, ..., 0.01420517,
-0.0395968 , 0.01179329],
[-0.00385304, 0.03066558, -0.00629197, ..., -0.05352701,
0.05439042, -0.05376611],
[ 0.03835768, -0.02781498, 0.04918657, ..., 0.03433883,
-0.00110853, -0.06175549]], dtype=float32)

weights.shape

(784, 300)

biases

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)

biases.shape

(300,)

model.compile(loss='sparse_categorical_crossentropy',
             optimizer='sgd',
             metrics=['accuracy'])
history=model.fit(X_train,y_train,epochs=30,validation_data=(X_valid,y_valid))

Epoch 1/30
1719/1719 [] - 5s 2ms/step - loss: 0.7183 - accuracy: 0.7615 - val_loss: 0.5105 - val_accuracy: 0.8282
Epoch 2/30
1719/1719 [
] - 3s 1ms/step - loss: 0.4859 - accuracy: 0.8304 - val_loss: 0.4815 - val_accuracy: 0.8298
Epoch 3/30
1719/1719 [] - 3s 2ms/step - loss: 0.4424 - accuracy: 0.8445 - val_loss: 0.4234 - val_accuracy: 0.8554
Epoch 4/30
1719/1719 [
] - 3s 1ms/step - loss: 0.4153 - accuracy: 0.8538 - val_loss: 0.3922 - val_accuracy: 0.8646
Epoch 5/30
1719/1719 [] - 3s 1ms/step - loss: 0.3932 - accuracy: 0.8622 - val_loss: 0.3843 - val_accuracy: 0.8706
Epoch 6/30
1719/1719 [
] - 3s 2ms/step - loss: 0.3777 - accuracy: 0.8676 - val_loss: 0.3685 - val_accuracy: 0.8722
Epoch 7/30
1719/1719 [] - 3s 2ms/step - loss: 0.3651 - accuracy: 0.8710 - val_loss: 0.3569 - val_accuracy: 0.8750
Epoch 8/30
1719/1719 [
] - 3s 2ms/step - loss: 0.3527 - accuracy: 0.8737 - val_loss: 0.3617 - val_accuracy: 0.8740
Epoch 9/30
1719/1719 [] - 3s 2ms/step - loss: 0.3423 - accuracy: 0.8785 - val_loss: 0.3573 - val_accuracy: 0.8764
Epoch 10/30
1719/1719 [
] - 3s 1ms/step - loss: 0.3341 - accuracy: 0.8809 - val_loss: 0.3454 - val_accuracy: 0.8812
Epoch 11/30
1719/1719 [] - 3s 2ms/step - loss: 0.3244 - accuracy: 0.8846 - val_loss: 0.3627 - val_accuracy: 0.8670
Epoch 12/30
1719/1719 [
] - 3s 1ms/step - loss: 0.3172 - accuracy: 0.8872 - val_loss: 0.3356 - val_accuracy: 0.8834
Epoch 13/30
1719/1719 [] - 2s 1ms/step - loss: 0.3099 - accuracy: 0.8879 - val_loss: 0.3301 - val_accuracy: 0.8846
Epoch 14/30
1719/1719 [
] - 2s 1ms/step - loss: 0.3035 - accuracy: 0.8914 - val_loss: 0.3362 - val_accuracy: 0.8810
Epoch 15/30
1719/1719 [] - 2s 1ms/step - loss: 0.2967 - accuracy: 0.8932 - val_loss: 0.3211 - val_accuracy: 0.8856
Epoch 16/30
1719/1719 [
] - 3s 2ms/step - loss: 0.2896 - accuracy: 0.8964 - val_loss: 0.3301 - val_accuracy: 0.8848
Epoch 17/30
1719/1719 [] - 3s 2ms/step - loss: 0.2855 - accuracy: 0.8969 - val_loss: 0.3235 - val_accuracy: 0.8826
Epoch 18/30
1719/1719 [
] - 3s 2ms/step - loss: 0.2788 - accuracy: 0.8997 - val_loss: 0.3126 - val_accuracy: 0.8880
Epoch 19/30
1719/1719 [] - 3s 1ms/step - loss: 0.2744 - accuracy: 0.9012 - val_loss: 0.3251 - val_accuracy: 0.8796
Epoch 20/30
1719/1719 [
] - 3s 1ms/step - loss: 0.2686 - accuracy: 0.9033 - val_loss: 0.3036 - val_accuracy: 0.8922
Epoch 21/30
1719/1719 [] - 3s 1ms/step - loss: 0.2650 - accuracy: 0.9050 - val_loss: 0.3085 - val_accuracy: 0.8888
Epoch 22/30
1719/1719 [
] - 3s 1ms/step - loss: 0.2595 - accuracy: 0.9070 - val_loss: 0.3064 - val_accuracy: 0.8898
Epoch 23/30
1719/1719 [] - 3s 1ms/step - loss: 0.2557 - accuracy: 0.9072 - val_loss: 0.3098 - val_accuracy: 0.8910
Epoch 24/30
1719/1719 [
] - 2s 1ms/step - loss: 0.2511 - accuracy: 0.9098 - val_loss: 0.2986 - val_accuracy: 0.8960
Epoch 25/30
1719/1719 [] - 3s 2ms/step - loss: 0.2470 - accuracy: 0.9114 - val_loss: 0.2954 - val_accuracy: 0.8970
Epoch 26/30
1719/1719 [
] - 3s 2ms/step - loss: 0.2431 - accuracy: 0.9118 - val_loss: 0.3057 - val_accuracy: 0.8942
Epoch 27/30
1719/1719 [] - 3s 1ms/step - loss: 0.2383 - accuracy: 0.9141 - val_loss: 0.3114 - val_accuracy: 0.8916
Epoch 28/30
1719/1719 [
] - 3s 1ms/step - loss: 0.2347 - accuracy: 0.9165 - val_loss: 0.2884 - val_accuracy: 0.9006
Epoch 29/30
1719/1719 [] - 3s 1ms/step - loss: 0.2306 - accuracy: 0.9181 - val_loss: 0.3127 - val_accuracy: 0.8916
Epoch 30/30
1719/1719 [
] - 3s 2ms/step - loss: 0.2267 - accuracy: 0.9195 - val_loss: 0.2955 - val_accuracy: 0.8928

import pandas as pd
import matplotlib.pyplot as plt
pd.DataFrame(history.history).plot(figsize=(8,5))
plt.grid(True)
plt.gca().set_ylim(0,1)
plt.show()

png

model.evaluate(X_test_full,y_test_full)

313/313 [==============================] - 0s 1ms/step - loss: 70.5551 - accuracy: 0.8399

[70.55508422851562, 0.839900016784668]

X_new=X_test_full[:3]
y_proba=model.predict(X_new)
y_proba.round(2)

array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)

y_pred=model.predict_classes(X_new)
y_pred

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\engine\sequential.py:455: UserWarning: model.predict_classes() is deprecated and will be removed after 2021-01-01. Please use instead:* np.argmax(model.predict(x), axis=-1), if your model does multi-class classification (e.g. if it uses a softmax last-layer activation).* (model.predict(x) > 0.5).astype("int32"), if your model does binary classification (e.g. if it uses a sigmoid last-layer activation).
warnings.warn('model.predict_classes() is deprecated and '

array([9, 2, 1], dtype=int64)

import numpy as np
np.array(class_names)[y_pred]

array(['Ankle boot', 'Pullover', 'Trouser'], dtype='<U11')

y_new=y_test_full[:3]
y_new

array([9, 2, 1], dtype=uint8)

fig=plt.figure()
for i in range(0,3):
    ax=fig.add_subplot(1,3,i+1)
    ax.imshow(X_test_full[i].reshape(28,28))
    ax.set_title(class_names[y_new[i]])
plt.show()

png

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
housing=fetch_california_housing()

X_train_full,X_test,y_train_full,y_test=train_test_split(housing.data,housing.target)
X_train,X_valid,y_train,y_valid=train_test_split(X_train_full,y_train_full)
scaler=StandardScaler()
X_train=scaler.fit_transform(X_train)
X_valid=scaler.transform(X_valid)
X_test=scaler.transform(X_test)
from tensorflow import keras
model=keras.models.Sequential([
    keras.layers.Dense(30,activation='relu',input_shape=X_train.shape[1:]),
    keras.layers.Dense(1)
])
model.compile(loss='mean_squared_error',optimizer='sgd')
history=model.fit(X_train,y_train,epochs=20,validation_data=(X_valid,y_valid))
mse_test=model.evaluate(X_test,y_test)
X_new=X_test[:3]
y_pred=model.predict(X_new)

Epoch 1/20
363/363 [] - 2s 1ms/step - loss: 1.4255 - val_loss: 3.3974
Epoch 2/20
363/363 [
] - 0s 1ms/step - loss: 1.1133 - val_loss: 0.5386
Epoch 3/20
363/363 [] - 0s 1ms/step - loss: 0.4615 - val_loss: 0.4735
Epoch 4/20
363/363 [
] - 0s 1ms/step - loss: 0.4296 - val_loss: 0.4581
Epoch 5/20
363/363 [] - 0s 1ms/step - loss: 0.4187 - val_loss: 0.4439
Epoch 6/20
363/363 [
] - 0s 1ms/step - loss: 0.4064 - val_loss: 0.4324
Epoch 7/20
363/363 [] - 0s 1ms/step - loss: 0.4029 - val_loss: 0.4298
Epoch 8/20
363/363 [
] - 0s 1ms/step - loss: 0.3956 - val_loss: 0.4209
Epoch 9/20
363/363 [] - 0s 1ms/step - loss: 0.3941 - val_loss: 0.4178
Epoch 10/20
363/363 [
] - 0s 1ms/step - loss: 0.3949 - val_loss: 0.5311
Epoch 11/20
363/363 [] - 0s 1ms/step - loss: 0.4703 - val_loss: 0.4183
Epoch 12/20
363/363 [
] - 0s 1ms/step - loss: 0.3897 - val_loss: 0.4107
Epoch 13/20
363/363 [] - 0s 1ms/step - loss: 0.3840 - val_loss: 0.4073
Epoch 14/20
363/363 [
] - 0s 1ms/step - loss: 0.3797 - val_loss: 0.4078
Epoch 15/20
363/363 [] - 0s 1ms/step - loss: 0.3774 - val_loss: 0.4030
Epoch 16/20
363/363 [
] - 0s 1ms/step - loss: 0.3801 - val_loss: 0.4064
Epoch 17/20
363/363 [] - 0s 1ms/step - loss: 0.3737 - val_loss: 0.3958
Epoch 18/20
363/363 [
] - 0s 1ms/step - loss: 0.3708 - val_loss: 0.3995
Epoch 19/20
363/363 [] - 0s 1ms/step - loss: 0.3669 - val_loss: 0.3957
Epoch 20/20
363/363 [
] - 0s 1ms/step - loss: 0.3644 - val_loss: 0.3953
162/162 [==============================] - 0s 655us/step - loss: 0.3673

input_=keras.layers.Input(shape=X_train.shape[1:])
hidden1=keras.layers.Dense(30,activation='relu')(input_)
hidden2=keras.layers.Dense(30,activation='relu')(hidden1)
concat=keras.layers.Concatenate()([input_,hidden2])
output=keras.layers.Dense(1)(concat)
model=keras.Model(inputs=[input_],outputs=[output])
input_A=keras.layers.Input(shape=[5],name='wide_input')
input_B=keras.layers.Input(shape=[6],name='deep_input')
hidden1=keras.layers.Dense(30,activation='relu')(input_B)
hidden2=keras.layers.Dense(30,activation='relu')(hidden1)
concat=keras.layers.concatenate([input_A,hidden2])
output=keras.layers.Dense(1,name='output')(concat)
model=keras.Model(inputs=[input_A,input_B],outputs=[output])
model.compile(loss='mse',optimizer=keras.optimizers.SGD(lr=1e-3))
X_train_A,X_train_B=X_train[:,:5],X_train[:,2:]
X_valid_A,X_valid_B=X_valid[:,:5],X_valid[:,2:]
X_test_A,X_test_B=X_test[:,:5],X_test[:,2:]
X_new_A,X_new_B=X_test_A[:3],X_test_B[:3]

history=model.fit((X_train_A,X_train_B),y_train,epochs=20,
                 validation_data=((X_valid_A,X_valid_B),y_valid))
mse_test=model.evaluate((X_test_A,X_test_B),y_test)
y_pred=model.predict((X_new_A,X_new_B))

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:374: UserWarning: The lr argument is deprecated, use learning_rate instead.
warnings.warn(

Epoch 1/20
363/363 [] - 1s 2ms/step - loss: 2.1457 - val_loss: 0.9153
Epoch 2/20
363/363 [
] - 1s 1ms/step - loss: 0.7055 - val_loss: 0.6744
Epoch 3/20
363/363 [] - 1s 1ms/step - loss: 0.6052 - val_loss: 0.6258
Epoch 4/20
363/363 [
] - 1s 1ms/step - loss: 0.5699 - val_loss: 0.5989
Epoch 5/20
363/363 [] - 1s 2ms/step - loss: 0.5455 - val_loss: 0.5791
Epoch 6/20
363/363 [
] - 1s 2ms/step - loss: 0.5275 - val_loss: 0.5643
Epoch 7/20
363/363 [] - 1s 2ms/step - loss: 0.5126 - val_loss: 0.5486
Epoch 8/20
363/363 [
] - 1s 2ms/step - loss: 0.5022 - val_loss: 0.5452
Epoch 9/20
363/363 [] - 1s 2ms/step - loss: 0.4928 - val_loss: 0.5294
Epoch 10/20
363/363 [
] - 1s 2ms/step - loss: 0.4884 - val_loss: 0.5245
Epoch 11/20
363/363 [] - 1s 2ms/step - loss: 0.4810 - val_loss: 0.5187
Epoch 12/20
363/363 [
] - 1s 1ms/step - loss: 0.4780 - val_loss: 0.5186
Epoch 13/20
363/363 [] - 1s 1ms/step - loss: 0.4724 - val_loss: 0.5098
Epoch 14/20
363/363 [
] - 1s 1ms/step - loss: 0.4703 - val_loss: 0.5074
Epoch 15/20
363/363 [] - 1s 1ms/step - loss: 0.4673 - val_loss: 0.5273
Epoch 16/20
363/363 [
] - 1s 1ms/step - loss: 0.4655 - val_loss: 0.5058
Epoch 17/20
363/363 [] - 1s 1ms/step - loss: 0.4624 - val_loss: 0.5019
Epoch 18/20
363/363 [
] - 1s 1ms/step - loss: 0.4601 - val_loss: 0.5051
Epoch 19/20
363/363 [] - 1s 1ms/step - loss: 0.4579 - val_loss: 0.4970
Epoch 20/20
363/363 [
] - 1s 1ms/step - loss: 0.4551 - val_loss: 0.4924
162/162 [==============================] - 0s 752us/step - loss: 0.4655

class WideAndDeepModel(keras.Model):
    def __init__(self,units=30,activation='relu',**kwargs):
        super().__init__(**kwargs)
        self.hidden1=keras.layers.Dense(units,activation=activation)
        self.hidden2=keras.layers.Dense(units,activation=activation)
        self.main_output=keras.layers.Dense(10)
        self.aux_output=keras.layers.Dense(1)
    def call(self,inputs):
        input_A,input_B=inputs
        hidden1=self.hidden1(input_B)
        hidden2=self.hidden2(hidden1)
        concat=keras.layers.concatenate([input_A,hidden2])
        main_output=self.main_output(concat)
        aux_output=self.aux_output(hidden2)
        return main_output,aux_output
model=WideAndDeepModel()
model.save('my_keras_model.h5')

---------------------------------------------------------------------------

NotImplementedError Traceback (most recent call last)

in
----> 1 model.save('my_keras_model.h5')

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\engine\training.py in save(self, filepath, overwrite, include_optimizer, save_format, signatures, options, save_traces)
2109 """
2110 # pylint: enable=line-too-long
-> 2111 save.save_model(self, filepath, overwrite, include_optimizer, save_format,
2112 signatures, options, save_traces)
2113

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\saving\save.py in save_model(model, filepath, overwrite, include_optimizer, save_format, signatures, options, save_traces)
137 if (not model._is_graph_network and # pylint:disable=protected-access
138 not isinstance(model, sequential.Sequential)):
--> 139 raise NotImplementedError(
140 'Saving the model to HDF5 format requires the model to be a '
141 'Functional model or a Sequential model. It does not work for '

NotImplementedError: Saving the model to HDF5 format requires the model to be a Functional model or a Sequential model. It does not work for subclassed models, because such models are defined via the body of a Python method, which isn't safely serializable. Consider saving to the Tensorflow SavedModel format (by setting save_format="tf") or using save_weights.

import os 
root_logdir=os.path.join(os.curdir,'my_logs')
def get_run_logdir():
    import time 
    run_id=time.strftime('run_%Y_%m_%d-%H_%M_%S')
    return os.path.join(root_logdir,run_id)
run_logdir=get_run_logdir()
tensorboard_cb=keras.callbacks.TensorBoard(run_logdir)
model.compile(loss='mse',optimizer=keras.optimizers.SGD(lr=1e-3))
history=model.fit(X_train,y_train,epochs=30,
                  validation_data=(X_valid,y_valid),
                  callbacks=[tensorboard_cb])

Epoch 1/30

---------------------------------------------------------------------------

OperatorNotAllowedInGraphError Traceback (most recent call last)

in
1 tensorboard_cb=keras.callbacks.TensorBoard(run_logdir)
2 model.compile(loss='mse',optimizer=keras.optimizers.SGD(lr=1e-3))
----> 3 history=model.fit(X_train,y_train,epochs=30,
4 validation_data=(X_valid,y_valid),
5 callbacks=[tensorboard_cb])

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
1181 _r=1):
1182 callbacks.on_train_batch_begin(step)
-> 1183 tmp_logs = self.train_function(iterator)
1184 if data_handler.should_sync:
1185 context.async_wait()

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\eager\def_function.py in call(self, args, **kwds)
887
888 with OptionalXlaContext(self._jit_compile):
--> 889 result = self._call(
args, **kwds)
890
891 new_tracing_count = self.experimental_get_tracing_count()

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\eager\def_function.py in _call(self, *args, **kwds)
931 # This is the first call of call, so we have to initialize.
932 initializers = []
--> 933 self._initialize(args, kwds, add_initializers_to=initializers)
934 finally:
935 # At this point we know that the initialization is complete (or less

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\eager\def_function.py in _initialize(self, args, kwds, add_initializers_to)
761 self._graph_deleter = FunctionDeleter(self._lifted_initializer_graph)
762 self._concrete_stateful_fn = (
--> 763 self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access
764 *args, **kwds))
765

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\eager\function.py in _get_concrete_function_internal_garbage_collected(self, *args, **kwargs)
3048 args, kwargs = None, None
3049 with self._lock:
-> 3050 graph_function, _ = self._maybe_define_function(args, kwargs)
3051 return graph_function
3052

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\eager\function.py in _maybe_define_function(self, args, kwargs)
3442
3443 self._function_cache.missed.add(call_context_key)
-> 3444 graph_function = self._create_graph_function(args, kwargs)
3445 self._function_cache.primary[cache_key] = graph_function
3446

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\eager\function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes)
3277 arg_names = base_arg_names + missing_arg_names
3278 graph_function = ConcreteFunction(
-> 3279 func_graph_module.func_graph_from_py_func(
3280 self._name,
3281 self._python_function,

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\framework\func_graph.py in func_graph_from_py_func(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)
997 _, original_func = tf_decorator.unwrap(python_func)
998
--> 999 func_outputs = python_func(*func_args, **func_kwargs)
1000
1001 # invariant: func_outputs contains only Tensors, CompositeTensors,

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\eager\def_function.py in wrapped_fn(args, **kwds)
670 # the function a weak reference to itself to avoid a reference cycle.
671 with OptionalXlaContext(compile_with_xla):
--> 672 out = weak_wrapped_fn().wrapped(
args, **kwds)
673 return out
674

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\framework\func_graph.py in wrapper(*args, **kwargs)
984 except Exception as e: # pylint:disable=broad-except
985 if hasattr(e, "ag_error_metadata"):
--> 986 raise e.ag_error_metadata.to_exception(e)
987 else:
988 raise

OperatorNotAllowedInGraphError: in user code:

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\engine\training.py:855 train_function *
return step_function(self, iterator)
:9 call *
input_A,input_B=inputs
C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\framework\ops.py:520 iter
self._disallow_iteration()
C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\framework\ops.py:513 _disallow_iteration
self._disallow_when_autograph_enabled("iterating over tf.Tensor")
C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\framework\ops.py:489 _disallow_when_autograph_enabled
raise errors.OperatorNotAllowedInGraphError(

OperatorNotAllowedInGraphError: iterating over tf.Tensor is not allowed: AutoGraph did convert this function. This might indicate you are trying to use an unsupported feature.

def build_model(n_hidden=1,n_neurons=30,learning_rate=3e-3,input_shape=[8]):
    model=keras.models.Sequential()
    model.add(keras.layers.InputLayer(input_shape=input_shape))
    for layer in range(n_hidden):
        model.add(keras.layers.Dense(n_neurons,activation='relu'))
    model.add(keras.layers.Dense(1))
    optimizer=keras.optimizers.SGD(lr=learning_rate)
    model.compile(loss='mse',optimizer=optimizer)
    return model
keras_reg=keras.wrappers.scikit_learn.KerasRegressor(build_model)
keras_reg.fit(X_train,y_train,epochs=100,
             validation_data=(X_valid,y_valid),
             callbacks=[keras.callbacks.EarlyStopping(patience=100)])
mse_test=keras_reg.score(X_test,y_test)
y_pred=keras_reg.predict(X_new)

Epoch 1/100
363/363 [] - 1s 1ms/step - loss: 1.4916 - val_loss: 0.7251
Epoch 2/100
363/363 [
] - 0s 1ms/step - loss: 0.7551 - val_loss: 0.6725
Epoch 3/100
363/363 [] - 0s 1ms/step - loss: 0.5897 - val_loss: 0.6069
Epoch 4/100
363/363 [
] - 0s 1ms/step - loss: 0.5414 - val_loss: 0.5725
Epoch 5/100
363/363 [] - 0s 1ms/step - loss: 0.5138 - val_loss: 0.5487
Epoch 6/100
363/363 [
] - 0s 1ms/step - loss: 0.4940 - val_loss: 0.5304
Epoch 7/100
363/363 [] - 0s 1ms/step - loss: 0.4803 - val_loss: 0.5195
Epoch 8/100
363/363 [
] - 0s 1ms/step - loss: 0.4703 - val_loss: 0.5121
Epoch 9/100
363/363 [] - 0s 1ms/step - loss: 0.4624 - val_loss: 0.5025
Epoch 10/100
363/363 [
] - 0s 1ms/step - loss: 0.4567 - val_loss: 0.5012
Epoch 11/100
363/363 [] - 0s 1ms/step - loss: 0.4511 - val_loss: 0.4924
Epoch 12/100
363/363 [
] - 0s 1ms/step - loss: 0.4465 - val_loss: 0.4901
Epoch 13/100
363/363 [] - 0s 1ms/step - loss: 0.4427 - val_loss: 0.4850
Epoch 14/100
363/363 [
] - 0s 1ms/step - loss: 0.4402 - val_loss: 0.4847
Epoch 15/100
363/363 [] - 0s 1ms/step - loss: 0.4366 - val_loss: 0.4747
Epoch 16/100
363/363 [
] - 0s 1ms/step - loss: 0.4339 - val_loss: 0.4742
Epoch 17/100
363/363 [] - 0s 1ms/step - loss: 0.4318 - val_loss: 0.4706
Epoch 18/100
363/363 [
] - 0s 1ms/step - loss: 0.4298 - val_loss: 0.4695
Epoch 19/100
363/363 [] - 0s 1ms/step - loss: 0.4272 - val_loss: 0.4644
Epoch 20/100
363/363 [
] - 0s 1ms/step - loss: 0.4253 - val_loss: 0.4637
Epoch 21/100
363/363 [] - 0s 1ms/step - loss: 0.4224 - val_loss: 0.4618
Epoch 22/100
363/363 [
] - 0s 1ms/step - loss: 0.4210 - val_loss: 0.4601
Epoch 23/100
363/363 [] - 0s 1ms/step - loss: 0.4190 - val_loss: 0.4564
Epoch 24/100
363/363 [
] - 0s 1ms/step - loss: 0.4169 - val_loss: 0.4552
Epoch 25/100
363/363 [] - 0s 1ms/step - loss: 0.4148 - val_loss: 0.4530
Epoch 26/100
363/363 [
] - 0s 1ms/step - loss: 0.4126 - val_loss: 0.4529
Epoch 27/100
363/363 [] - 0s 1ms/step - loss: 0.4110 - val_loss: 0.4495
Epoch 28/100
363/363 [
] - 0s 1ms/step - loss: 0.4101 - val_loss: 0.4480
Epoch 29/100
363/363 [] - 0s 1ms/step - loss: 0.4084 - val_loss: 0.4452
Epoch 30/100
363/363 [
] - 0s 1ms/step - loss: 0.4070 - val_loss: 0.4450
Epoch 31/100
363/363 [] - 0s 1ms/step - loss: 0.4055 - val_loss: 0.4421
Epoch 32/100
363/363 [
] - 0s 1ms/step - loss: 0.4038 - val_loss: 0.4429
Epoch 33/100
363/363 [] - 0s 1ms/step - loss: 0.4028 - val_loss: 0.4411
Epoch 34/100
363/363 [
] - 0s 1ms/step - loss: 0.4021 - val_loss: 0.4392
Epoch 35/100
363/363 [] - 0s 1ms/step - loss: 0.4008 - val_loss: 0.4369
Epoch 36/100
363/363 [
] - 0s 1ms/step - loss: 0.3990 - val_loss: 0.4370
Epoch 37/100
363/363 [] - 0s 1ms/step - loss: 0.3983 - val_loss: 0.4335
Epoch 38/100
363/363 [
] - 0s 1ms/step - loss: 0.3974 - val_loss: 0.4339
Epoch 39/100
363/363 [] - 0s 1ms/step - loss: 0.3963 - val_loss: 0.4306
Epoch 40/100
363/363 [
] - 0s 1ms/step - loss: 0.3954 - val_loss: 0.4300
Epoch 41/100
363/363 [] - 0s 1ms/step - loss: 0.3941 - val_loss: 0.4292
Epoch 42/100
363/363 [
] - 0s 1ms/step - loss: 0.3933 - val_loss: 0.4282
Epoch 43/100
363/363 [] - 0s 1ms/step - loss: 0.3923 - val_loss: 0.4267
Epoch 44/100
363/363 [
] - 0s 1ms/step - loss: 0.3915 - val_loss: 0.4260
Epoch 45/100
363/363 [] - 0s 1ms/step - loss: 0.3903 - val_loss: 0.4237
Epoch 46/100
363/363 [
] - 0s 1ms/step - loss: 0.3899 - val_loss: 0.4246
Epoch 47/100
363/363 [] - 0s 1ms/step - loss: 0.3887 - val_loss: 0.4217
Epoch 48/100
363/363 [
] - 0s 1ms/step - loss: 0.3871 - val_loss: 0.4223
Epoch 49/100
363/363 [] - 0s 1ms/step - loss: 0.3907 - val_loss: 0.4234
Epoch 50/100
363/363 [
] - 0s 1ms/step - loss: 0.3901 - val_loss: 0.4486
Epoch 51/100
363/363 [] - 0s 1ms/step - loss: 0.3862 - val_loss: 0.4260
Epoch 52/100
363/363 [
] - 0s 1ms/step - loss: 0.3850 - val_loss: 0.4192
Epoch 53/100
363/363 [] - 0s 1ms/step - loss: 0.3850 - val_loss: 0.4163
Epoch 54/100
363/363 [
] - 0s 1ms/step - loss: 0.3829 - val_loss: 0.4348
Epoch 55/100
363/363 [] - 0s 1ms/step - loss: 0.3827 - val_loss: 0.4133
Epoch 56/100
363/363 [
] - 0s 1ms/step - loss: 0.3808 - val_loss: 0.4140
Epoch 57/100
363/363 [] - 0s 1ms/step - loss: 0.3810 - val_loss: 0.4134
Epoch 58/100
363/363 [
] - 0s 1ms/step - loss: 0.3797 - val_loss: 0.4110
Epoch 59/100
363/363 [] - 0s 1ms/step - loss: 0.3806 - val_loss: 0.4119
Epoch 60/100
363/363 [
] - 0s 1ms/step - loss: 0.3781 - val_loss: 0.4108
Epoch 61/100
363/363 [] - 0s 1ms/step - loss: 0.3781 - val_loss: 0.4095
Epoch 62/100
363/363 [
] - 0s 1ms/step - loss: 0.3791 - val_loss: 0.4101
Epoch 63/100
363/363 [] - 0s 1ms/step - loss: 0.3764 - val_loss: 0.4078
Epoch 64/100
363/363 [
] - 0s 1ms/step - loss: 0.3751 - val_loss: 0.4078
Epoch 65/100
363/363 [] - 0s 1ms/step - loss: 0.3771 - val_loss: 0.4093
Epoch 66/100
363/363 [
] - 0s 1ms/step - loss: 0.3738 - val_loss: 0.4056
Epoch 67/100
363/363 [] - 0s 1ms/step - loss: 0.3755 - val_loss: 0.4050
Epoch 68/100
363/363 [
] - 0s 1ms/step - loss: 0.3717 - val_loss: 0.4054
Epoch 69/100
363/363 [] - 0s 1ms/step - loss: 0.3717 - val_loss: 0.4019
Epoch 70/100
363/363 [
] - 0s 1ms/step - loss: 0.3727 - val_loss: 0.4300
Epoch 71/100
363/363 [] - 0s 1ms/step - loss: 0.3716 - val_loss: 0.4120
Epoch 72/100
363/363 [
] - 0s 1ms/step - loss: 0.3767 - val_loss: 0.4009
Epoch 73/100
363/363 [] - 0s 1ms/step - loss: 0.3703 - val_loss: 0.3992
Epoch 74/100
363/363 [
] - 0s 1ms/step - loss: 0.3757 - val_loss: 0.3995
Epoch 75/100
363/363 [] - 0s 1ms/step - loss: 0.3680 - val_loss: 0.3992
Epoch 76/100
363/363 [
] - 0s 1ms/step - loss: 0.3706 - val_loss: 0.4016
Epoch 77/100
363/363 [] - 0s 1ms/step - loss: 0.3668 - val_loss: 0.3964
Epoch 78/100
363/363 [
] - 0s 1ms/step - loss: 0.3704 - val_loss: 0.3971
Epoch 79/100
363/363 [] - 0s 1ms/step - loss: 0.3652 - val_loss: 0.3971
Epoch 80/100
363/363 [
] - 0s 1ms/step - loss: 0.3657 - val_loss: 0.3977
Epoch 81/100
363/363 [] - 0s 1ms/step - loss: 0.3670 - val_loss: 0.3967
Epoch 82/100
363/363 [
] - 0s 1ms/step - loss: 0.3649 - val_loss: 0.3966
Epoch 83/100
363/363 [] - 0s 1ms/step - loss: 0.3629 - val_loss: 0.3936
Epoch 84/100
363/363 [
] - 0s 1ms/step - loss: 0.3624 - val_loss: 0.3928
Epoch 85/100
363/363 [] - 0s 1ms/step - loss: 0.3615 - val_loss: 0.3924
Epoch 86/100
363/363 [
] - 0s 1ms/step - loss: 0.3646 - val_loss: 0.3906
Epoch 87/100
363/363 [] - 0s 1ms/step - loss: 0.3613 - val_loss: 0.3891
Epoch 88/100
363/363 [
] - 0s 1ms/step - loss: 0.3604 - val_loss: 0.3881
Epoch 89/100
363/363 [] - 0s 1ms/step - loss: 0.3596 - val_loss: 0.3875
Epoch 90/100
363/363 [
] - 0s 1ms/step - loss: 0.3591 - val_loss: 0.3893
Epoch 91/100
363/363 [] - 0s 1ms/step - loss: 0.3589 - val_loss: 0.3873
Epoch 92/100
363/363 [
] - 0s 1ms/step - loss: 0.3572 - val_loss: 0.3870
Epoch 93/100
363/363 [] - 0s 1ms/step - loss: 0.3687 - val_loss: 0.3858
Epoch 94/100
363/363 [
] - 0s 1ms/step - loss: 0.3570 - val_loss: 0.3861
Epoch 95/100
363/363 [] - 0s 1ms/step - loss: 0.3571 - val_loss: 0.3842
Epoch 96/100
363/363 [
] - 0s 1ms/step - loss: 0.3576 - val_loss: 0.3903
Epoch 97/100
363/363 [] - 0s 1ms/step - loss: 0.3551 - val_loss: 0.3846
Epoch 98/100
363/363 [
] - 0s 1ms/step - loss: 0.3563 - val_loss: 0.3839
Epoch 99/100
363/363 [] - 0s 1ms/step - loss: 0.3547 - val_loss: 0.3808
Epoch 100/100
363/363 [
] - 0s 1ms/step - loss: 0.3538 - val_loss: 0.3819
162/162 [==============================] - 0s 630us/step - loss: 0.3604

from scipy.stats import reciprocal
from sklearn.model_selection import RandomizedSearchCV
import numpy as np
param_distribs={
    'n_hidden':[0,1,2,3],
    'n_neurons':np.arange(1,100),
    'learning_rate':reciprocal(3e-4,3e-2),
}
rnd_search_cv=RandomizedSearchCV(keras_reg,param_distribs,n_iter=1,cv=3)
rnd_search_cv.fit(X_train,y_train,epochs=100,
                 validation_data=(X_valid,y_valid),
                 callbacks=[keras.callbacks.EarlyStopping(patience=10)])

Epoch 1/100
1/242 [..............................] - ETA: 41s - loss: 6.8066

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:374: UserWarning: The lr argument is deprecated, use learning_rate instead.
warnings.warn(

242/242 [] - 1s 2ms/step - loss: 4.2791 - val_loss: 3.2230
Epoch 2/100
242/242 [
] - 0s 2ms/step - loss: 2.5060 - val_loss: 2.1541
Epoch 3/100
242/242 [] - 0s 2ms/step - loss: 1.8183 - val_loss: 1.7112
Epoch 4/100
242/242 [
] - 0s 2ms/step - loss: 1.5347 - val_loss: 1.5219
Epoch 5/100
242/242 [] - 0s 2ms/step - loss: 1.4135 - val_loss: 1.4334
Epoch 6/100
242/242 [
] - 0s 2ms/step - loss: 1.3515 - val_loss: 1.3787
Epoch 7/100
242/242 [] - 0s 2ms/step - loss: 1.3063 - val_loss: 1.3329
Epoch 8/100
242/242 [
] - 0s 2ms/step - loss: 1.2634 - val_loss: 1.2856
Epoch 9/100
242/242 [] - 0s 2ms/step - loss: 1.2208 - val_loss: 1.2406
Epoch 10/100
242/242 [
] - 0s 2ms/step - loss: 1.1806 - val_loss: 1.1991
Epoch 11/100
242/242 [] - 0s 2ms/step - loss: 1.1425 - val_loss: 1.1609
Epoch 12/100
242/242 [
] - 0s 2ms/step - loss: 1.1059 - val_loss: 1.1237
Epoch 13/100
242/242 [] - 0s 2ms/step - loss: 1.0697 - val_loss: 1.0865
Epoch 14/100
242/242 [
] - 0s 2ms/step - loss: 1.0324 - val_loss: 1.0491
Epoch 15/100
242/242 [] - 0s 2ms/step - loss: 0.9940 - val_loss: 1.0107
Epoch 16/100
242/242 [
] - 0s 2ms/step - loss: 0.9564 - val_loss: 0.9740
Epoch 17/100
242/242 [] - 0s 2ms/step - loss: 0.9202 - val_loss: 0.9387
Epoch 18/100
242/242 [
] - 0s 2ms/step - loss: 0.8854 - val_loss: 0.9061
Epoch 19/100
242/242 [] - 0s 2ms/step - loss: 0.8534 - val_loss: 0.8769
Epoch 20/100
242/242 [
] - 0s 2ms/step - loss: 0.8246 - val_loss: 0.8513
Epoch 21/100
242/242 [] - 0s 2ms/step - loss: 0.7996 - val_loss: 0.8291
Epoch 22/100
242/242 [
] - 0s 2ms/step - loss: 0.7779 - val_loss: 0.8092
Epoch 23/100
242/242 [] - 0s 2ms/step - loss: 0.7589 - val_loss: 0.7912
Epoch 24/100
242/242 [
] - 0s 2ms/step - loss: 0.7419 - val_loss: 0.7750
Epoch 25/100
242/242 [] - 0s 2ms/step - loss: 0.7269 - val_loss: 0.7598
Epoch 26/100
242/242 [
] - 0s 2ms/step - loss: 0.7131 - val_loss: 0.7453
Epoch 27/100
242/242 [] - 0s 2ms/step - loss: 0.6998 - val_loss: 0.7315
Epoch 28/100
242/242 [
] - 0s 2ms/step - loss: 0.6872 - val_loss: 0.7187
Epoch 29/100
242/242 [] - 0s 1ms/step - loss: 0.6760 - val_loss: 0.7066
Epoch 30/100
242/242 [
] - 0s 2ms/step - loss: 0.6654 - val_loss: 0.6949
Epoch 31/100
242/242 [] - 0s 2ms/step - loss: 0.6558 - val_loss: 0.6844
Epoch 32/100
242/242 [
] - 0s 2ms/step - loss: 0.6465 - val_loss: 0.6743
Epoch 33/100
242/242 [] - 0s 2ms/step - loss: 0.6379 - val_loss: 0.6652
Epoch 34/100
242/242 [
] - 0s 2ms/step - loss: 0.6296 - val_loss: 0.6558
Epoch 35/100
242/242 [] - 0s 2ms/step - loss: 0.6217 - val_loss: 0.6467
Epoch 36/100
242/242 [
] - 0s 2ms/step - loss: 0.6141 - val_loss: 0.6385
Epoch 37/100
242/242 [] - 0s 2ms/step - loss: 0.6068 - val_loss: 0.6302
Epoch 38/100
242/242 [
] - 0s 2ms/step - loss: 0.5999 - val_loss: 0.6228
Epoch 39/100
242/242 [] - 0s 2ms/step - loss: 0.5932 - val_loss: 0.6159
Epoch 40/100
242/242 [
] - 0s 2ms/step - loss: 0.5866 - val_loss: 0.6081
Epoch 41/100
242/242 [] - 0s 2ms/step - loss: 0.5808 - val_loss: 0.6020
Epoch 42/100
242/242 [
] - 0s 2ms/step - loss: 0.5750 - val_loss: 0.5960
Epoch 43/100
242/242 [] - 0s 2ms/step - loss: 0.5695 - val_loss: 0.5896
Epoch 44/100
242/242 [
] - 0s 2ms/step - loss: 0.5649 - val_loss: 0.5846
Epoch 45/100
242/242 [] - 0s 2ms/step - loss: 0.5601 - val_loss: 0.5791
Epoch 46/100
242/242 [
] - 0s 2ms/step - loss: 0.5560 - val_loss: 0.5747
Epoch 47/100
242/242 [] - 0s 2ms/step - loss: 0.5520 - val_loss: 0.5706
Epoch 48/100
242/242 [
] - 0s 2ms/step - loss: 0.5488 - val_loss: 0.5659
Epoch 49/100
242/242 [] - 0s 2ms/step - loss: 0.5453 - val_loss: 0.5618
Epoch 50/100
242/242 [
] - 0s 2ms/step - loss: 0.5422 - val_loss: 0.5578
Epoch 51/100
242/242 [] - 0s 2ms/step - loss: 0.5395 - val_loss: 0.5550
Epoch 52/100
242/242 [
] - 0s 2ms/step - loss: 0.5368 - val_loss: 0.5508
Epoch 53/100
242/242 [] - 0s 2ms/step - loss: 0.5333 - val_loss: 0.5478
Epoch 54/100
242/242 [
] - 0s 2ms/step - loss: 0.5312 - val_loss: 0.5445
Epoch 55/100
242/242 [] - 0s 2ms/step - loss: 0.5283 - val_loss: 0.5416
Epoch 56/100
242/242 [
] - 0s 2ms/step - loss: 0.5259 - val_loss: 0.5383
Epoch 57/100
242/242 [] - 0s 2ms/step - loss: 0.5237 - val_loss: 0.5371
Epoch 58/100
242/242 [
] - 0s 2ms/step - loss: 0.5212 - val_loss: 0.5325
Epoch 59/100
242/242 [] - 0s 2ms/step - loss: 0.5196 - val_loss: 0.5306
Epoch 60/100
242/242 [
] - 0s 2ms/step - loss: 0.5167 - val_loss: 0.5270
Epoch 61/100
242/242 [] - 0s 2ms/step - loss: 0.5155 - val_loss: 0.5255
Epoch 62/100
242/242 [
] - 0s 2ms/step - loss: 0.5127 - val_loss: 0.5233
Epoch 63/100
242/242 [] - 0s 2ms/step - loss: 0.5112 - val_loss: 0.5208
Epoch 64/100
242/242 [
] - 0s 2ms/step - loss: 0.5092 - val_loss: 0.5181
Epoch 65/100
242/242 [] - 0s 2ms/step - loss: 0.5076 - val_loss: 0.5163
Epoch 66/100
242/242 [
] - 0s 2ms/step - loss: 0.5058 - val_loss: 0.5150
Epoch 67/100
242/242 [] - 0s 2ms/step - loss: 0.5040 - val_loss: 0.5122
Epoch 68/100
242/242 [
] - 0s 2ms/step - loss: 0.5030 - val_loss: 0.5112
Epoch 69/100
242/242 [] - 0s 2ms/step - loss: 0.5012 - val_loss: 0.5084
Epoch 70/100
242/242 [
] - 0s 2ms/step - loss: 0.5002 - val_loss: 0.5073
Epoch 71/100
242/242 [] - 0s 2ms/step - loss: 0.4979 - val_loss: 0.5059
Epoch 72/100
242/242 [
] - 0s 2ms/step - loss: 0.4962 - val_loss: 0.5034
Epoch 73/100
242/242 [] - 0s 2ms/step - loss: 0.4957 - val_loss: 0.5024
Epoch 74/100
242/242 [
] - 0s 2ms/step - loss: 0.4934 - val_loss: 0.5006
Epoch 75/100
242/242 [] - 0s 2ms/step - loss: 0.4927 - val_loss: 0.4992
Epoch 76/100
242/242 [
] - 0s 2ms/step - loss: 0.4909 - val_loss: 0.4981
Epoch 77/100
242/242 [] - 0s 2ms/step - loss: 0.4896 - val_loss: 0.4969
Epoch 78/100
242/242 [
] - 0s 2ms/step - loss: 0.4884 - val_loss: 0.4945
Epoch 79/100
242/242 [] - 0s 2ms/step - loss: 0.4878 - val_loss: 0.4942
Epoch 80/100
242/242 [
] - 0s 2ms/step - loss: 0.4866 - val_loss: 0.4923
Epoch 81/100
242/242 [] - 0s 2ms/step - loss: 0.4849 - val_loss: 0.4911
Epoch 82/100
242/242 [
] - 0s 2ms/step - loss: 0.4840 - val_loss: 0.4898
Epoch 83/100
242/242 [] - 0s 2ms/step - loss: 0.4823 - val_loss: 0.4891
Epoch 84/100
242/242 [
] - 0s 2ms/step - loss: 0.4818 - val_loss: 0.4889
Epoch 85/100
242/242 [] - 0s 2ms/step - loss: 0.4802 - val_loss: 0.4872
Epoch 86/100
242/242 [
] - 0s 2ms/step - loss: 0.4792 - val_loss: 0.4862
Epoch 87/100
242/242 [] - 0s 2ms/step - loss: 0.4781 - val_loss: 0.4856
Epoch 88/100
242/242 [
] - 0s 2ms/step - loss: 0.4769 - val_loss: 0.4847
Epoch 89/100
242/242 [] - 0s 2ms/step - loss: 0.4761 - val_loss: 0.4838
Epoch 90/100
242/242 [
] - 0s 2ms/step - loss: 0.4763 - val_loss: 0.4847
Epoch 91/100
242/242 [] - 0s 2ms/step - loss: 0.4750 - val_loss: 0.4827
Epoch 92/100
242/242 [
] - 0s 2ms/step - loss: 0.4763 - val_loss: 0.4835
Epoch 93/100
242/242 [] - 0s 2ms/step - loss: 0.4733 - val_loss: 0.4817
Epoch 94/100
242/242 [
] - 0s 2ms/step - loss: 0.4744 - val_loss: 0.4826
Epoch 95/100
242/242 [] - 0s 2ms/step - loss: 0.4724 - val_loss: 0.4822
Epoch 96/100
242/242 [
] - 0s 2ms/step - loss: 0.4716 - val_loss: 0.4856
Epoch 97/100
242/242 [] - 0s 2ms/step - loss: 0.4700 - val_loss: 0.4862
Epoch 98/100
242/242 [
] - 0s 2ms/step - loss: 0.4689 - val_loss: 0.4891
Epoch 99/100
242/242 [] - 0s 2ms/step - loss: 0.4690 - val_loss: 0.4880
Epoch 100/100
242/242 [
] - 0s 2ms/step - loss: 0.4677 - val_loss: 0.4881
121/121 [==============================] - 0s 747us/step - loss: 0.4369
Epoch 1/100

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:374: UserWarning: The lr argument is deprecated, use learning_rate instead.
warnings.warn(

242/242 [] - 1s 2ms/step - loss: 3.1659 - val_loss: 1.1699
Epoch 2/100
242/242 [
] - 0s 2ms/step - loss: 0.8536 - val_loss: 0.8334
Epoch 3/100
242/242 [] - 0s 2ms/step - loss: 0.7485 - val_loss: 0.7990
Epoch 4/100
242/242 [
] - 0s 2ms/step - loss: 0.7234 - val_loss: 0.7792
Epoch 5/100
242/242 [] - 0s 2ms/step - loss: 0.7071 - val_loss: 0.7660
Epoch 6/100
242/242 [
] - 0s 2ms/step - loss: 0.6941 - val_loss: 0.7533
Epoch 7/100
242/242 [] - 0s 2ms/step - loss: 0.6826 - val_loss: 0.7432
Epoch 8/100
242/242 [
] - 0s 2ms/step - loss: 0.6721 - val_loss: 0.7358
Epoch 9/100
242/242 [] - 0s 2ms/step - loss: 0.6620 - val_loss: 0.7263
Epoch 10/100
242/242 [
] - 0s 2ms/step - loss: 0.6528 - val_loss: 0.7189
Epoch 11/100
242/242 [] - 0s 2ms/step - loss: 0.6439 - val_loss: 0.7120
Epoch 12/100
242/242 [
] - 0s 2ms/step - loss: 0.6357 - val_loss: 0.7012
Epoch 13/100
242/242 [] - 0s 2ms/step - loss: 0.6273 - val_loss: 0.6927
Epoch 14/100
242/242 [
] - 0s 2ms/step - loss: 0.6192 - val_loss: 0.6853
Epoch 15/100
242/242 [] - 0s 2ms/step - loss: 0.6117 - val_loss: 0.6795
Epoch 16/100
242/242 [
] - 0s 2ms/step - loss: 0.6043 - val_loss: 0.6715
Epoch 17/100
242/242 [] - 0s 2ms/step - loss: 0.5970 - val_loss: 0.6640
Epoch 18/100
242/242 [
] - 0s 2ms/step - loss: 0.5901 - val_loss: 0.6575
Epoch 19/100
242/242 [] - 0s 2ms/step - loss: 0.5834 - val_loss: 0.6497
Epoch 20/100
242/242 [
] - 0s 2ms/step - loss: 0.5770 - val_loss: 0.6439
Epoch 21/100
242/242 [] - 0s 2ms/step - loss: 0.5709 - val_loss: 0.6381
Epoch 22/100
242/242 [
] - 0s 2ms/step - loss: 0.5646 - val_loss: 0.6326
Epoch 23/100
242/242 [] - 0s 2ms/step - loss: 0.5582 - val_loss: 0.6251
Epoch 24/100
242/242 [
] - 0s 2ms/step - loss: 0.5529 - val_loss: 0.6209
Epoch 25/100
242/242 [] - 0s 2ms/step - loss: 0.5472 - val_loss: 0.6155
Epoch 26/100
242/242 [
] - 0s 2ms/step - loss: 0.5416 - val_loss: 0.6088
Epoch 27/100
242/242 [] - 0s 2ms/step - loss: 0.5363 - val_loss: 0.6038
Epoch 28/100
242/242 [
] - 0s 2ms/step - loss: 0.5312 - val_loss: 0.5981
Epoch 29/100
242/242 [] - 0s 2ms/step - loss: 0.5263 - val_loss: 0.5946
Epoch 30/100
242/242 [
] - 0s 2ms/step - loss: 0.5214 - val_loss: 0.5888
Epoch 31/100
242/242 [] - 0s 2ms/step - loss: 0.5168 - val_loss: 0.5829
Epoch 32/100
242/242 [
] - 0s 2ms/step - loss: 0.5122 - val_loss: 0.5785
Epoch 33/100
242/242 [] - 0s 2ms/step - loss: 0.5075 - val_loss: 0.5755
Epoch 34/100
242/242 [
] - 1s 2ms/step - loss: 0.5035 - val_loss: 0.5697
Epoch 35/100
242/242 [] - 0s 2ms/step - loss: 0.4993 - val_loss: 0.5648
Epoch 36/100
242/242 [
] - 0s 2ms/step - loss: 0.4951 - val_loss: 0.5592
Epoch 37/100
242/242 [] - 0s 2ms/step - loss: 0.4912 - val_loss: 0.5547
Epoch 38/100
242/242 [
] - 0s 2ms/step - loss: 0.4872 - val_loss: 0.5499
Epoch 39/100
242/242 [] - 0s 2ms/step - loss: 0.4832 - val_loss: 0.5468
Epoch 40/100
242/242 [
] - 0s 2ms/step - loss: 0.4796 - val_loss: 0.5410
Epoch 41/100
242/242 [] - 0s 2ms/step - loss: 0.4760 - val_loss: 0.5372
Epoch 42/100
242/242 [
] - 0s 2ms/step - loss: 0.4723 - val_loss: 0.5333
Epoch 43/100
242/242 [] - 0s 2ms/step - loss: 0.4689 - val_loss: 0.5297
Epoch 44/100
242/242 [
] - 0s 2ms/step - loss: 0.4653 - val_loss: 0.5251
Epoch 45/100
242/242 [] - 0s 2ms/step - loss: 0.4620 - val_loss: 0.5210
Epoch 46/100
242/242 [
] - 0s 2ms/step - loss: 0.4589 - val_loss: 0.5172
Epoch 47/100
242/242 [] - 0s 2ms/step - loss: 0.4557 - val_loss: 0.5135
Epoch 48/100
242/242 [
] - 0s 2ms/step - loss: 0.4529 - val_loss: 0.5104
Epoch 49/100
242/242 [] - 0s 2ms/step - loss: 0.4501 - val_loss: 0.5085
Epoch 50/100
242/242 [
] - 0s 2ms/step - loss: 0.4479 - val_loss: 0.5045
Epoch 51/100
242/242 [] - 0s 2ms/step - loss: 0.4453 - val_loss: 0.5011
Epoch 52/100
242/242 [
] - 0s 2ms/step - loss: 0.4431 - val_loss: 0.4987
Epoch 53/100
242/242 [] - 0s 2ms/step - loss: 0.4410 - val_loss: 0.4972
Epoch 54/100
242/242 [
] - 0s 2ms/step - loss: 0.4394 - val_loss: 0.4936
Epoch 55/100
242/242 [] - 0s 2ms/step - loss: 0.4376 - val_loss: 0.4909
Epoch 56/100
242/242 [
] - 0s 2ms/step - loss: 0.4357 - val_loss: 0.4882
Epoch 57/100
242/242 [] - 0s 2ms/step - loss: 0.4338 - val_loss: 0.4860
Epoch 58/100
242/242 [
] - 0s 2ms/step - loss: 0.4324 - val_loss: 0.4839
Epoch 59/100
242/242 [] - 0s 2ms/step - loss: 0.4310 - val_loss: 0.4821
Epoch 60/100
242/242 [
] - 0s 2ms/step - loss: 0.4298 - val_loss: 0.4803
Epoch 61/100
242/242 [] - 0s 2ms/step - loss: 0.4286 - val_loss: 0.4783
Epoch 62/100
242/242 [
] - 0s 2ms/step - loss: 0.4276 - val_loss: 0.4771
Epoch 63/100
242/242 [] - 0s 2ms/step - loss: 0.4264 - val_loss: 0.4751
Epoch 64/100
242/242 [
] - 0s 2ms/step - loss: 0.4256 - val_loss: 0.4736
Epoch 65/100
242/242 [] - 0s 2ms/step - loss: 0.4248 - val_loss: 0.4728
Epoch 66/100
242/242 [
] - 0s 2ms/step - loss: 0.4244 - val_loss: 0.4714
Epoch 67/100
242/242 [] - 0s 2ms/step - loss: 0.4232 - val_loss: 0.4703
Epoch 68/100
242/242 [
] - 0s 2ms/step - loss: 0.4227 - val_loss: 0.4690
Epoch 69/100
242/242 [] - 0s 2ms/step - loss: 0.4222 - val_loss: 0.4675
Epoch 70/100
242/242 [
] - 0s 2ms/step - loss: 0.4216 - val_loss: 0.4667
Epoch 71/100
242/242 [] - 0s 2ms/step - loss: 0.4210 - val_loss: 0.4661
Epoch 72/100
242/242 [
] - 0s 2ms/step - loss: 0.4206 - val_loss: 0.4651
Epoch 73/100
242/242 [] - 0s 2ms/step - loss: 0.4199 - val_loss: 0.4654
Epoch 74/100
242/242 [
] - 0s 2ms/step - loss: 0.4193 - val_loss: 0.4637
Epoch 75/100
242/242 [] - 0s 2ms/step - loss: 0.4185 - val_loss: 0.4643
Epoch 76/100
242/242 [
] - 0s 2ms/step - loss: 0.4184 - val_loss: 0.4621
Epoch 77/100
242/242 [] - 0s 2ms/step - loss: 0.4183 - val_loss: 0.4619
Epoch 78/100
242/242 [
] - 0s 2ms/step - loss: 0.4174 - val_loss: 0.4605
Epoch 79/100
242/242 [] - 0s 2ms/step - loss: 0.4174 - val_loss: 0.4608
Epoch 80/100
242/242 [
] - 0s 2ms/step - loss: 0.4165 - val_loss: 0.4596
Epoch 81/100
242/242 [] - 0s 2ms/step - loss: 0.4161 - val_loss: 0.4585
Epoch 82/100
242/242 [
] - 0s 2ms/step - loss: 0.4156 - val_loss: 0.4591
Epoch 83/100
242/242 [] - 0s 2ms/step - loss: 0.4150 - val_loss: 0.4573
Epoch 84/100
242/242 [
] - 0s 2ms/step - loss: 0.4155 - val_loss: 0.4571
Epoch 85/100
242/242 [] - 0s 2ms/step - loss: 0.4142 - val_loss: 0.4559
Epoch 86/100
242/242 [
] - 0s 2ms/step - loss: 0.4137 - val_loss: 0.4556
Epoch 87/100
242/242 [] - 0s 2ms/step - loss: 0.4133 - val_loss: 0.4548
Epoch 88/100
242/242 [
] - 0s 2ms/step - loss: 0.4130 - val_loss: 0.4542
Epoch 89/100
242/242 [] - 0s 2ms/step - loss: 0.4125 - val_loss: 0.4533
Epoch 90/100
242/242 [
] - 0s 2ms/step - loss: 0.4119 - val_loss: 0.4521
Epoch 91/100
242/242 [] - 0s 2ms/step - loss: 0.4116 - val_loss: 0.4517
Epoch 92/100
242/242 [
] - 0s 2ms/step - loss: 0.4106 - val_loss: 0.4510
Epoch 93/100
242/242 [] - 0s 2ms/step - loss: 0.4107 - val_loss: 0.4503
Epoch 94/100
242/242 [
] - 0s 2ms/step - loss: 0.4099 - val_loss: 0.4492
Epoch 95/100
242/242 [] - 0s 2ms/step - loss: 0.4098 - val_loss: 0.4485
Epoch 96/100
242/242 [
] - 0s 2ms/step - loss: 0.4089 - val_loss: 0.4483
Epoch 97/100
242/242 [] - 0s 2ms/step - loss: 0.4085 - val_loss: 0.4478
Epoch 98/100
242/242 [
] - 0s 2ms/step - loss: 0.4080 - val_loss: 0.4463
Epoch 99/100
242/242 [] - 0s 2ms/step - loss: 0.4076 - val_loss: 0.4454
Epoch 100/100
242/242 [
] - 0s 2ms/step - loss: 0.4072 - val_loss: 0.4450
121/121 [==============================] - 0s 747us/step - loss: 0.4233
Epoch 1/100

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:374: UserWarning: The lr argument is deprecated, use learning_rate instead.
warnings.warn(

242/242 [] - 1s 2ms/step - loss: 3.6634 - val_loss: 1.9298
Epoch 2/100
242/242 [
] - 0s 2ms/step - loss: 1.5225 - val_loss: 1.4331
Epoch 3/100
242/242 [] - 0s 2ms/step - loss: 1.2191 - val_loss: 1.2023
Epoch 4/100
242/242 [
] - 0s 2ms/step - loss: 1.0433 - val_loss: 1.0543
Epoch 5/100
242/242 [] - 0s 2ms/step - loss: 0.9250 - val_loss: 0.9539
Epoch 6/100
242/242 [
] - 0s 2ms/step - loss: 0.8425 - val_loss: 0.8837
Epoch 7/100
242/242 [] - 0s 2ms/step - loss: 0.7837 - val_loss: 0.8336
Epoch 8/100
242/242 [
] - 0s 2ms/step - loss: 0.7402 - val_loss: 0.7931
Epoch 9/100
242/242 [] - 0s 2ms/step - loss: 0.7063 - val_loss: 0.7606
Epoch 10/100
242/242 [
] - 0s 2ms/step - loss: 0.6794 - val_loss: 0.7336
Epoch 11/100
242/242 [] - 0s 2ms/step - loss: 0.6573 - val_loss: 0.7118
Epoch 12/100
242/242 [
] - 0s 2ms/step - loss: 0.6389 - val_loss: 0.6916
Epoch 13/100
242/242 [] - 0s 2ms/step - loss: 0.6227 - val_loss: 0.6743
Epoch 14/100
242/242 [
] - 0s 2ms/step - loss: 0.6083 - val_loss: 0.6603
Epoch 15/100
242/242 [] - 0s 2ms/step - loss: 0.5964 - val_loss: 0.6460
Epoch 16/100
242/242 [
] - 0s 2ms/step - loss: 0.5854 - val_loss: 0.6334
Epoch 17/100
242/242 [] - 0s 2ms/step - loss: 0.5757 - val_loss: 0.6229
Epoch 18/100
242/242 [
] - 0s 2ms/step - loss: 0.5668 - val_loss: 0.6131
Epoch 19/100
242/242 [] - 0s 2ms/step - loss: 0.5587 - val_loss: 0.6039
Epoch 20/100
242/242 [
] - 0s 2ms/step - loss: 0.5511 - val_loss: 0.5955
Epoch 21/100
242/242 [] - 0s 2ms/step - loss: 0.5436 - val_loss: 0.5892
Epoch 22/100
242/242 [
] - 0s 2ms/step - loss: 0.5375 - val_loss: 0.5806
Epoch 23/100
242/242 [] - 0s 2ms/step - loss: 0.5313 - val_loss: 0.5745
Epoch 24/100
242/242 [
] - 0s 2ms/step - loss: 0.5259 - val_loss: 0.5679
Epoch 25/100
242/242 [] - 0s 2ms/step - loss: 0.5209 - val_loss: 0.5630
Epoch 26/100
242/242 [
] - 0s 2ms/step - loss: 0.5164 - val_loss: 0.5567
Epoch 27/100
242/242 [] - 0s 2ms/step - loss: 0.5122 - val_loss: 0.5520
Epoch 28/100
242/242 [
] - 0s 2ms/step - loss: 0.5084 - val_loss: 0.5479
Epoch 29/100
242/242 [] - 0s 2ms/step - loss: 0.5050 - val_loss: 0.5442
Epoch 30/100
242/242 [
] - 0s 2ms/step - loss: 0.5017 - val_loss: 0.5407
Epoch 31/100
242/242 [] - 0s 2ms/step - loss: 0.4986 - val_loss: 0.5367
Epoch 32/100
242/242 [
] - 0s 2ms/step - loss: 0.4958 - val_loss: 0.5341
Epoch 33/100
242/242 [] - 0s 2ms/step - loss: 0.4928 - val_loss: 0.5303
Epoch 34/100
242/242 [
] - 0s 2ms/step - loss: 0.4904 - val_loss: 0.5279
Epoch 35/100
242/242 [] - 0s 2ms/step - loss: 0.4878 - val_loss: 0.5243
Epoch 36/100
242/242 [
] - 0s 2ms/step - loss: 0.4856 - val_loss: 0.5225
Epoch 37/100
242/242 [] - 0s 2ms/step - loss: 0.4836 - val_loss: 0.5198
Epoch 38/100
242/242 [
] - 0s 2ms/step - loss: 0.4819 - val_loss: 0.5175
Epoch 39/100
242/242 [] - 0s 2ms/step - loss: 0.4797 - val_loss: 0.5151
Epoch 40/100
242/242 [
] - 0s 2ms/step - loss: 0.4777 - val_loss: 0.5131
Epoch 41/100
242/242 [] - 0s 2ms/step - loss: 0.4760 - val_loss: 0.5110
Epoch 42/100
242/242 [
] - 0s 2ms/step - loss: 0.4745 - val_loss: 0.5092
Epoch 43/100
242/242 [] - 0s 2ms/step - loss: 0.4727 - val_loss: 0.5072
Epoch 44/100
242/242 [
] - 0s 2ms/step - loss: 0.4712 - val_loss: 0.5062
Epoch 45/100
242/242 [] - 0s 2ms/step - loss: 0.4697 - val_loss: 0.5034
Epoch 46/100
242/242 [
] - 0s 2ms/step - loss: 0.4682 - val_loss: 0.5026
Epoch 47/100
242/242 [] - 0s 2ms/step - loss: 0.4667 - val_loss: 0.5006
Epoch 48/100
242/242 [
] - 0s 2ms/step - loss: 0.4656 - val_loss: 0.4996
Epoch 49/100
242/242 [] - 0s 2ms/step - loss: 0.4640 - val_loss: 0.4975
Epoch 50/100
242/242 [
] - 0s 2ms/step - loss: 0.4630 - val_loss: 0.4968
Epoch 51/100
242/242 [] - 0s 2ms/step - loss: 0.4616 - val_loss: 0.4960
Epoch 52/100
242/242 [
] - 0s 2ms/step - loss: 0.4605 - val_loss: 0.4942
Epoch 53/100
242/242 [] - 0s 2ms/step - loss: 0.4590 - val_loss: 0.4924
Epoch 54/100
242/242 [
] - 0s 2ms/step - loss: 0.4582 - val_loss: 0.4914
Epoch 55/100
242/242 [] - 0s 2ms/step - loss: 0.4569 - val_loss: 0.4912
Epoch 56/100
242/242 [
] - 0s 2ms/step - loss: 0.4556 - val_loss: 0.4910
Epoch 57/100
242/242 [] - 0s 2ms/step - loss: 0.4547 - val_loss: 0.4890
Epoch 58/100
242/242 [
] - 0s 2ms/step - loss: 0.4530 - val_loss: 0.4870
Epoch 59/100
242/242 [] - 0s 2ms/step - loss: 0.4527 - val_loss: 0.4859
Epoch 60/100
242/242 [
] - 0s 2ms/step - loss: 0.4514 - val_loss: 0.4861
Epoch 61/100
242/242 [] - 0s 2ms/step - loss: 0.4505 - val_loss: 0.4843
Epoch 62/100
242/242 [
] - 0s 2ms/step - loss: 0.4494 - val_loss: 0.4843
Epoch 63/100
242/242 [] - 0s 2ms/step - loss: 0.4486 - val_loss: 0.4825
Epoch 64/100
242/242 [
] - 0s 2ms/step - loss: 0.4476 - val_loss: 0.4815
Epoch 65/100
242/242 [] - 0s 2ms/step - loss: 0.4467 - val_loss: 0.4814
Epoch 66/100
242/242 [
] - 0s 2ms/step - loss: 0.4460 - val_loss: 0.4796
Epoch 67/100
242/242 [] - 0s 2ms/step - loss: 0.4450 - val_loss: 0.4791
Epoch 68/100
242/242 [
] - 0s 2ms/step - loss: 0.4444 - val_loss: 0.4777
Epoch 69/100
242/242 [] - 0s 2ms/step - loss: 0.4436 - val_loss: 0.4768
Epoch 70/100
242/242 [
] - 0s 2ms/step - loss: 0.4428 - val_loss: 0.4768
Epoch 71/100
242/242 [] - 0s 2ms/step - loss: 0.4419 - val_loss: 0.4752
Epoch 72/100
242/242 [
] - 0s 2ms/step - loss: 0.4411 - val_loss: 0.4750
Epoch 73/100
242/242 [] - 0s 2ms/step - loss: 0.4408 - val_loss: 0.4746
Epoch 74/100
242/242 [
] - 0s 2ms/step - loss: 0.4400 - val_loss: 0.4738
Epoch 75/100
242/242 [] - 0s 2ms/step - loss: 0.4393 - val_loss: 0.4729
Epoch 76/100
242/242 [
] - 0s 2ms/step - loss: 0.4384 - val_loss: 0.4734
Epoch 77/100
242/242 [] - 0s 2ms/step - loss: 0.4377 - val_loss: 0.4716
Epoch 78/100
242/242 [
] - 0s 2ms/step - loss: 0.4373 - val_loss: 0.4717
Epoch 79/100
242/242 [] - 0s 2ms/step - loss: 0.4364 - val_loss: 0.4702
Epoch 80/100
242/242 [
] - 0s 2ms/step - loss: 0.4355 - val_loss: 0.4703
Epoch 81/100
242/242 [] - 0s 2ms/step - loss: 0.4350 - val_loss: 0.4695
Epoch 82/100
242/242 [
] - 0s 2ms/step - loss: 0.4342 - val_loss: 0.4685
Epoch 83/100
242/242 [] - 0s 2ms/step - loss: 0.4338 - val_loss: 0.4679
Epoch 84/100
242/242 [
] - 0s 2ms/step - loss: 0.4328 - val_loss: 0.4683
Epoch 85/100
242/242 [] - 0s 2ms/step - loss: 0.4323 - val_loss: 0.4677
Epoch 86/100
242/242 [
] - 0s 2ms/step - loss: 0.4316 - val_loss: 0.4659
Epoch 87/100
242/242 [] - 0s 2ms/step - loss: 0.4310 - val_loss: 0.4664
Epoch 88/100
242/242 [
] - 0s 2ms/step - loss: 0.4305 - val_loss: 0.4644
Epoch 89/100
242/242 [] - 0s 2ms/step - loss: 0.4300 - val_loss: 0.4643
Epoch 90/100
242/242 [
] - 0s 2ms/step - loss: 0.4295 - val_loss: 0.4639
Epoch 91/100
242/242 [] - 0s 2ms/step - loss: 0.4286 - val_loss: 0.4639
Epoch 92/100
242/242 [
] - 0s 2ms/step - loss: 0.4282 - val_loss: 0.4629
Epoch 93/100
242/242 [] - 0s 2ms/step - loss: 0.4276 - val_loss: 0.4622
Epoch 94/100
242/242 [
] - 0s 2ms/step - loss: 0.4266 - val_loss: 0.4631
Epoch 95/100
242/242 [] - 0s 2ms/step - loss: 0.4264 - val_loss: 0.4625
Epoch 96/100
242/242 [
] - 0s 2ms/step - loss: 0.4258 - val_loss: 0.4619
Epoch 97/100
242/242 [] - 0s 2ms/step - loss: 0.4254 - val_loss: 0.4602
Epoch 98/100
242/242 [
] - 0s 2ms/step - loss: 0.4248 - val_loss: 0.4597
Epoch 99/100
242/242 [] - 0s 2ms/step - loss: 0.4242 - val_loss: 0.4592
Epoch 100/100
242/242 [
] - 0s 2ms/step - loss: 0.4239 - val_loss: 0.4585
121/121 [] - 0s 722us/step - loss: 0.4419
Epoch 1/100
363/363 [
] - 1s 2ms/step - loss: 4.3867 - val_loss: 2.6200
Epoch 2/100
363/363 [] - 1s 2ms/step - loss: 1.9286 - val_loss: 1.7429
Epoch 3/100
363/363 [
] - 1s 2ms/step - loss: 1.4824 - val_loss: 1.5074
Epoch 4/100
363/363 [] - 1s 2ms/step - loss: 1.3664 - val_loss: 1.4423
Epoch 5/100
363/363 [
] - 1s 2ms/step - loss: 1.3349 - val_loss: 1.4199
Epoch 6/100
363/363 [] - 1s 2ms/step - loss: 1.3261 - val_loss: 1.4115
Epoch 7/100
363/363 [
] - 1s 2ms/step - loss: 1.3233 - val_loss: 1.4076
Epoch 8/100
363/363 [] - 1s 1ms/step - loss: 1.3224 - val_loss: 1.4061
Epoch 9/100
363/363 [
] - 1s 1ms/step - loss: 1.3220 - val_loss: 1.4051
Epoch 10/100
363/363 [] - 1s 2ms/step - loss: 1.3216 - val_loss: 1.4044
Epoch 11/100
363/363 [
] - 1s 1ms/step - loss: 1.3214 - val_loss: 1.4034
Epoch 12/100
363/363 [] - 1s 2ms/step - loss: 1.3212 - val_loss: 1.4024
Epoch 13/100
363/363 [
] - 1s 2ms/step - loss: 1.3211 - val_loss: 1.4022
Epoch 14/100
363/363 [] - 1s 2ms/step - loss: 1.3209 - val_loss: 1.4021
Epoch 15/100
363/363 [
] - 1s 2ms/step - loss: 1.3207 - val_loss: 1.4015
Epoch 16/100
363/363 [] - 1s 2ms/step - loss: 1.3205 - val_loss: 1.4014
Epoch 17/100
363/363 [
] - 1s 2ms/step - loss: 1.3204 - val_loss: 1.4008
Epoch 18/100
363/363 [] - 1s 1ms/step - loss: 1.3203 - val_loss: 1.4005
Epoch 19/100
363/363 [
] - 1s 2ms/step - loss: 1.3201 - val_loss: 1.4000
Epoch 20/100
363/363 [] - 1s 2ms/step - loss: 1.3199 - val_loss: 1.4003
Epoch 21/100
363/363 [
] - 1s 2ms/step - loss: 1.3198 - val_loss: 1.3999
Epoch 22/100
363/363 [] - 1s 2ms/step - loss: 1.3197 - val_loss: 1.3996
Epoch 23/100
363/363 [
] - 1s 2ms/step - loss: 1.3195 - val_loss: 1.3992
Epoch 24/100
363/363 [] - 1s 2ms/step - loss: 1.3194 - val_loss: 1.3994
Epoch 25/100
363/363 [
] - 1s 2ms/step - loss: 1.3192 - val_loss: 1.3991
Epoch 26/100
363/363 [] - 1s 2ms/step - loss: 1.3190 - val_loss: 1.3988
Epoch 27/100
363/363 [
] - 1s 2ms/step - loss: 1.3188 - val_loss: 1.3985
Epoch 28/100
363/363 [] - 1s 2ms/step - loss: 1.3185 - val_loss: 1.3985
Epoch 29/100
363/363 [
] - 1s 2ms/step - loss: 1.3182 - val_loss: 1.3980
Epoch 30/100
363/363 [] - 1s 2ms/step - loss: 1.3177 - val_loss: 1.3974
Epoch 31/100
363/363 [
] - 1s 2ms/step - loss: 1.3172 - val_loss: 1.3971
Epoch 32/100
363/363 [] - 1s 2ms/step - loss: 1.3163 - val_loss: 1.3960
Epoch 33/100
363/363 [
] - 1s 1ms/step - loss: 1.3149 - val_loss: 1.3942
Epoch 34/100
363/363 [] - 1s 1ms/step - loss: 1.3121 - val_loss: 1.3910
Epoch 35/100
363/363 [
] - 1s 1ms/step - loss: 1.3066 - val_loss: 1.3844
Epoch 36/100
363/363 [] - 1s 1ms/step - loss: 1.2974 - val_loss: 1.3727
Epoch 37/100
363/363 [
] - 1s 1ms/step - loss: 1.2795 - val_loss: 1.3503
Epoch 38/100
363/363 [] - 1s 1ms/step - loss: 1.2476 - val_loss: 1.3142
Epoch 39/100
363/363 [
] - 1s 1ms/step - loss: 1.2030 - val_loss: 1.2653
Epoch 40/100
363/363 [] - 1s 1ms/step - loss: 1.1476 - val_loss: 1.2033
Epoch 41/100
363/363 [
] - 1s 1ms/step - loss: 1.0792 - val_loss: 1.1216
Epoch 42/100
363/363 [] - 1s 1ms/step - loss: 0.9848 - val_loss: 1.0072
Epoch 43/100
363/363 [
] - 1s 1ms/step - loss: 0.8852 - val_loss: 0.9142
Epoch 44/100
363/363 [] - 1s 2ms/step - loss: 0.8163 - val_loss: 0.8533
Epoch 45/100
363/363 [
] - 1s 2ms/step - loss: 0.7689 - val_loss: 0.8091
Epoch 46/100
363/363 [] - 1s 1ms/step - loss: 0.7333 - val_loss: 0.7742
Epoch 47/100
363/363 [
] - 1s 2ms/step - loss: 0.7046 - val_loss: 0.7445
Epoch 48/100
363/363 [] - 1s 2ms/step - loss: 0.6801 - val_loss: 0.7185
Epoch 49/100
363/363 [
] - 1s 1ms/step - loss: 0.6581 - val_loss: 0.6946
Epoch 50/100
363/363 [] - 1s 2ms/step - loss: 0.6382 - val_loss: 0.6733
Epoch 51/100
363/363 [
] - 1s 2ms/step - loss: 0.6206 - val_loss: 0.6542
Epoch 52/100
363/363 [] - 1s 2ms/step - loss: 0.6052 - val_loss: 0.6370
Epoch 53/100
363/363 [
] - 1s 2ms/step - loss: 0.5913 - val_loss: 0.6216
Epoch 54/100
363/363 [] - 1s 2ms/step - loss: 0.5787 - val_loss: 0.6082
Epoch 55/100
363/363 [
] - 1s 1ms/step - loss: 0.5675 - val_loss: 0.5960
Epoch 56/100
363/363 [] - 1s 2ms/step - loss: 0.5572 - val_loss: 0.5851
Epoch 57/100
363/363 [
] - 1s 1ms/step - loss: 0.5480 - val_loss: 0.5754
Epoch 58/100
363/363 [] - 1s 2ms/step - loss: 0.5397 - val_loss: 0.5671
Epoch 59/100
363/363 [
] - 1s 2ms/step - loss: 0.5325 - val_loss: 0.5586
Epoch 60/100
363/363 [] - 1s 1ms/step - loss: 0.5259 - val_loss: 0.5515
Epoch 61/100
363/363 [
] - 1s 1ms/step - loss: 0.5196 - val_loss: 0.5455
Epoch 62/100
363/363 [] - 1s 1ms/step - loss: 0.5140 - val_loss: 0.5399
Epoch 63/100
363/363 [
] - 1s 1ms/step - loss: 0.5085 - val_loss: 0.5356
Epoch 64/100
363/363 [] - 1s 1ms/step - loss: 0.5035 - val_loss: 0.5291
Epoch 65/100
363/363 [
] - 1s 2ms/step - loss: 0.4994 - val_loss: 0.5252
Epoch 66/100
363/363 [] - 1s 1ms/step - loss: 0.4953 - val_loss: 0.5209
Epoch 67/100
363/363 [
] - 1s 2ms/step - loss: 0.4914 - val_loss: 0.5180
Epoch 68/100
363/363 [] - 1s 1ms/step - loss: 0.4878 - val_loss: 0.5132
Epoch 69/100
363/363 [
] - 1s 1ms/step - loss: 0.4849 - val_loss: 0.5094
Epoch 70/100
363/363 [] - 1s 1ms/step - loss: 0.4816 - val_loss: 0.5069
Epoch 71/100
363/363 [
] - 1s 2ms/step - loss: 0.4786 - val_loss: 0.5040
Epoch 72/100
363/363 [] - 1s 2ms/step - loss: 0.4758 - val_loss: 0.5002
Epoch 73/100
363/363 [
] - 1s 2ms/step - loss: 0.4732 - val_loss: 0.4978
Epoch 74/100
363/363 [] - 1s 2ms/step - loss: 0.4705 - val_loss: 0.4963
Epoch 75/100
363/363 [
] - 1s 1ms/step - loss: 0.4679 - val_loss: 0.4938
Epoch 76/100
363/363 [] - 1s 2ms/step - loss: 0.4659 - val_loss: 0.4907
Epoch 77/100
363/363 [
] - 1s 2ms/step - loss: 0.4636 - val_loss: 0.4876
Epoch 78/100
363/363 [] - 1s 1ms/step - loss: 0.4613 - val_loss: 0.4858
Epoch 79/100
363/363 [
] - 1s 2ms/step - loss: 0.4591 - val_loss: 0.4839
Epoch 80/100
363/363 [] - 1s 2ms/step - loss: 0.4571 - val_loss: 0.4817
Epoch 81/100
363/363 [
] - 1s 2ms/step - loss: 0.4551 - val_loss: 0.4807
Epoch 82/100
363/363 [] - 1s 1ms/step - loss: 0.4532 - val_loss: 0.4775
Epoch 83/100
363/363 [
] - 1s 2ms/step - loss: 0.4516 - val_loss: 0.4754
Epoch 84/100
363/363 [] - 1s 2ms/step - loss: 0.4498 - val_loss: 0.4745
Epoch 85/100
363/363 [
] - 1s 2ms/step - loss: 0.4482 - val_loss: 0.4722
Epoch 86/100
363/363 [] - 1s 2ms/step - loss: 0.4465 - val_loss: 0.4710
Epoch 87/100
363/363 [
] - 1s 2ms/step - loss: 0.4445 - val_loss: 0.4699
Epoch 88/100
363/363 [] - 1s 2ms/step - loss: 0.4433 - val_loss: 0.4678
Epoch 89/100
363/363 [
] - 1s 2ms/step - loss: 0.4420 - val_loss: 0.4662
Epoch 90/100
363/363 [] - 1s 2ms/step - loss: 0.4403 - val_loss: 0.4649
Epoch 91/100
363/363 [
] - 1s 2ms/step - loss: 0.4390 - val_loss: 0.4644
Epoch 92/100
363/363 [] - 1s 2ms/step - loss: 0.4378 - val_loss: 0.4614
Epoch 93/100
363/363 [
] - 1s 2ms/step - loss: 0.4363 - val_loss: 0.4606
Epoch 94/100
363/363 [] - 1s 2ms/step - loss: 0.4350 - val_loss: 0.4591
Epoch 95/100
363/363 [
] - 1s 2ms/step - loss: 0.4336 - val_loss: 0.4577
Epoch 96/100
363/363 [] - 1s 2ms/step - loss: 0.4325 - val_loss: 0.4571
Epoch 97/100
363/363 [
] - 1s 2ms/step - loss: 0.4311 - val_loss: 0.4548
Epoch 98/100
363/363 [] - 1s 2ms/step - loss: 0.4297 - val_loss: 0.4552
Epoch 99/100
363/363 [
] - 1s 2ms/step - loss: 0.4290 - val_loss: 0.4526
Epoch 100/100
363/363 [==============================] - 1s 2ms/step - loss: 0.4278 - val_loss: 0.4527

RandomizedSearchCV(cv=3,
estimator=<tensorflow.python.keras.wrappers.scikit_learn.KerasRegressor object at 0x000001EA37733970>,
n_iter=1,
param_distributions={'learning_rate': <scipy.stats._distn_infrastructure.rv_frozen object at 0x000001EA5ED8B490>,
'n_hidden': [0, 1, 2, 3],
'n_neurons': array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])})

rnd_search_cv.best_params_

{'learning_rate': 0.0009150976178101991, 'n_hidden': 3, 'n_neurons': 4}

rnd_search_cv.best_score_

-0.434011846780777

model=rnd_search_cv.best_estimator_.model
model=keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28,28]),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(300,activation='elu',kernel_initializer='he_normal'),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(100,activation='elu',kernel_initializer='he_normal'),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(10,activation='softmax')
])
model.summary()

Model: "sequential_13"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten (Flatten) (None, 784) 0
_________________________________________________________________
batch_normalization (BatchNo (None, 784) 3136
_________________________________________________________________
dense_43 (Dense) (None, 300) 235500
_________________________________________________________________
batch_normalization_1 (Batch (None, 300) 1200
_________________________________________________________________
dense_44 (Dense) (None, 100) 30100
_________________________________________________________________
batch_normalization_2 (Batch (None, 100) 400
_________________________________________________________________
dense_45 (Dense) (None, 10) 1010
=================================================================
Total params: 271,346
Trainable params: 268,978
Non-trainable params: 2,368
_________________________________________________________________

[(var.name,var.trainable)for var in model.layers[1].variables]

[('batch_normalization/gamma:0', True),
('batch_normalization/beta:0', True),
('batch_normalization/moving_mean:0', False),
('batch_normalization/moving_variance:0', False)]

model.layers[1].updates

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py:1331: UserWarning: layer.updates will be removed in a future version. This property should not be used in TensorFlow 2.0, as updates are applied automatically.
warnings.warn('layer.updates will be removed in a future version. '

[]

model=keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28,28]),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(300,kernel_initializer='he_normal',use_bias=False),
    keras.layers.BatchNormalization(),
    keras.layers.Activation('elu'),
    keras.layers.Dense(100,kernel_initializer='he_normal',use_bias=False),
    keras.layers.BatchNormalization(),
    keras.layers.Activation('elu'),
    keras.layers.Dense(10,activation='softmax')
])
optimizer=keras.optimizers.SGD(clipvalue=1.0)
model.compile(loss='mse',optimizer=optimizer)
import tensorflow as tf
tf.constant([[1,2,3],[4,5,6]])

<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[1, 2, 3],
[4, 5, 6]])>

tf.constant(42)

<tf.Tensor: shape=(), dtype=int32, numpy=42>

t=tf.constant([[1,2,3],[4,5,6]])
t.shape

TensorShape([2, 3])

t[:,1:]

<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
array([[2, 3],
[5, 6]])>

t[...,1,tf.newaxis]

<tf.Tensor: shape=(2, 1), dtype=int32, numpy=
array([[2],
[5]])>

t+10

<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[11, 12, 13],
[14, 15, 16]])>

tf.square(t)

<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[ 1, 4, 9],
[16, 25, 36]])>

t@tf.transpose(t)

<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
array([[14, 32],
[32, 77]])>

import numpy as np
a=np.array([2,4,5])
tf.constant(a)

<tf.Tensor: shape=(3,), dtype=int32, numpy=array([2, 4, 5])>

t.numpy()

array([[1, 2, 3],
[4, 5, 6]])

tf.square(t)

<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[ 1, 4, 9],
[16, 25, 36]])>

tf.constant(2.)+tf.constant(40)

---------------------------------------------------------------------------

InvalidArgumentError Traceback (most recent call last)

in
----> 1 tf.constant(2.)+tf.constant(40)

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\ops\math_ops.py in binary_op_wrapper(x, y)
1232 # r_binary_op_wrapper use different force_same_dtype values.
1233 x, y = maybe_promote_tensors(x, y, force_same_dtype=False)
-> 1234 return func(x, y, name=name)
1235 except (TypeError, ValueError) as e:
1236 # Even if dispatching the op failed, the RHS may be a tensor aware

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\util\dispatch.py in wrapper(args, **kwargs)
204 """Call target, and fall back on dispatchers if there is a TypeError."""
205 try:
--> 206 return target(
args, **kwargs)
207 except (TypeError, ValueError):
208 # Note: convert_to_eager_tensor currently raises a ValueError, not a

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\ops\math_ops.py in _add_dispatch(x, y, name)
1563 return gen_math_ops.add(x, y, name=name)
1564 else:
-> 1565 return gen_math_ops.add_v2(x, y, name=name)
1566
1567

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py in add_v2(x, y, name)
520 return _result
521 except _core._NotOkStatusException as e:
--> 522 _ops.raise_from_not_ok_status(e, name)
523 except _core._FallbackException:
524 pass

C:\ProgramData\Miniconda3\lib\site-packages\tensorflow\python\framework\ops.py in raise_from_not_ok_status(e, name)
6895 message = e.message + (" name: " + name if name is not None else "")
6896 # pylint: disable=protected-access
-> 6897 six.raise_from(core._status_to_exception(e.code, message), None)
6898 # pylint: enable=protected-access
6899

C:\ProgramData\Miniconda3\lib\site-packages\six.py in raise_from(value, from_value)

InvalidArgumentError: cannot compute AddV2 as input #1(zero-based) was expected to be a float tensor but is a int32 tensor [Op:AddV2]

t2=tf.constant(40.,dtype=tf.float64)
tf.constant(2.0)+tf.cast(t2,tf.float32)

<tf.Tensor: shape=(), dtype=float32, numpy=42.0>

v=tf.Variable([[1.,2.,3.],[4.,5.,6.]])
v

<tf.Variable 'Variable:0' shape=(2, 3) dtype=float32, numpy=
array([[1., 2., 3.],
[4., 5., 6.]], dtype=float32)>

v.assign(2*v)

<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=float32, numpy=
array([[ 2., 4., 6.],
[ 8., 10., 12.]], dtype=float32)>

v[0,1].assign(42)

<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=float32, numpy=
array([[ 2., 42., 6.],
[ 8., 10., 12.]], dtype=float32)>

v[:,2].assign([0.,1.])

<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=float32, numpy=
array([[100., 42., 0.],
[ 8., 10., 1.]], dtype=float32)>

v.scatter_nd_update(indices=[[0,0],[1,2]],updates=[100.,200.])

<tf.Variable 'UnreadVariable' shape=(2, 3) dtype=float32, numpy=
array([[100., 42., 0.],
[ 8., 10., 200.]], dtype=float32)>

\(L_\delta(y,f(x))=\)

def huber_fn(y_true,y_pred):#Huber损失——平滑平均绝对误差
    error=y_true-y_pred
    is_small_error=tf.abs(error)<1
    squared_loss=tf.square(error)/2
    linear_loss=tf.abs(error)-.5
    return tf.where(is_small_error,squared_loss,linear_loss)
model.compile(loss=huber_fn,optimizer='nadam')
model.fit(X_train,y_train,[...])
def create_huber(threshold=1.0):
    def huber_fn(y_true,y_pred):
        error=y_true-y_pred
        is_small_error=tf.abs(error)<threshold
        squared_loss=tf.square(error)/2
        linear_model=threshold*tf.abs(error)-threshold**2/2
        return tf.where(is_small_error,squared_loss,linear_loss)
    return huber_fn
model.compile(loss=create_huber(2.0),optimizer='nadam')

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in
7 return tf.where(is_small_error,squared_loss,linear_loss)
8 return huber_fn
----> 9 model.compile(loss=create_huber(2.0),optimizer='nadam')

NameError: name 'model' is not defined

from tensorflow import keras
class HuberLoss(keras.losses.Loss):
    def __init__(self,threshold=1.0):
        self.threshold=threshold
        super().__init__()
    def call(self,y_true,y_pred):
        error=y_true-y_pred
        is_small_error=tf.abs(error)<self.threshold
        squared_loss=tf.square(error)/2
        linear_loss=self.threshold*tf.abs(error)-self.threshold**2/2
        return tf.where(is_small_error,squared_loss,linear_loss)
    def get_config(self):
        base_config=super().get_config()
        return {**base_config,'threshold':self.threshold}
model.compile(loss=HuberLoss(2.),optimizer='nadam')

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in
----> 1 model.compile(loss=HuberLoss(2.),optimizer='nadam')

NameError: name 'model' is not defined

def my_softplus(z):
    return tf.math.log(tf.exp(z)+1.0)

def my_glorot_initializer(shape,dtype=tf.float32):
    stddev=tf.sqrt(2./(shape[0]+shape[1]))
    return tf.random.normal(shape,stddev=stddev,dtype=dtype)

def my_l1_regularizer(weights):
    return tf.reduce_sum(tf.abs(0.01*weights))

def my_positive_weights(weights):
    return tf.where(weights<0.,tf.zeros_like(weights),weights)
layer=keras.layers.Dense(30,activation=my_softplus,
                        kernel_initializer=my_glorot_initializer,
                        kernel_regularizer=my_l1_regularizer,
                        kernel_constraint=my_positive_weights)
class MyL1Regularizer(keras.regularizers.Regularizer):
    def __init__(self,factor):
        self.factor=factor
    def __call__(sellf,weights):
        return tf.reduce_sum(tf.abs(self.factor*weights))
    def get_config(self):
        return {'factor':self.factor}
    
exponential_layer=keras.layers.Lambda(lambda x:tf.exp(x))
class MyDense(keras.layers.Layer):
    def __init__(self,units,activation=None):
        super().___init__()
        self.units=units
        self.activation=keras.activations.get(activation)
    def build(self,batch_input_shape):
        self.kernel=self.add_weight(
        name='kernel',shape=[batch_input_shape[-1],self.units],
        initializer='glorot_normal')
        self.bias=self.add_weights(
        name='bias',shape=[self.units],initializer='zeros')
        super().build(batch_input_shape)
    def call(self,x):
        return self.activation(X@self.kernel+self.bias)
    def conpute_output_shape(self,batch_input_shape):
        return tf.TensorShape(batch_input_shape.as_list()[:-1]+[self.units])
    def get_config(self):
        base_config=super().get_config()
        return {**base_config,'units':self.units,
               'activation':keras.activations.seriable(self.activation)}
class MyMultiLayer(keras.layers.Layer):
    def call(self,X):
        X1,X2=X
        return [X1+X2,X1*X2,X1/X2]
    def compute_output_shape(self,batch_input_shape):
        b1,b2=batch_input_shape
        return [b1,b2,b3]
from tensorflow import keras
class MyGaussianNoise(keras.layers.Layer):
    def __init__(self,stddev,**kwargs):
        super().__init__(**kwargs)
        self.stddev=stddev
    def call(self,X,training=None):
        if training:
            noise=tf.random.normal(tf.shape(X),stddev=self.stddev)
            return X+noise
        else:
            return X
    def compute_output_shape(self,batch_iuput_shape):
        return batch_input_shape
class ResidualBlock(keras.layers.Layer):
    def __init__(self,n_layers,n_neurons):
        super().__init__()
        self.hidden=[keras.layers.Dense(n_neurons,activationo='elu',
                                       kernel_initializer='he_normal') for _ in range(n_layers)]
    def call(self,inputs):
        Z=inputs
        for layer in self.hidden:
            Z=layer(Z)
        return inputs+Z
class ResidualRegressor(keras.Model):
    def __init__(self,output_dim):
        self.hidden1=keras.layers.Dense(30,activation='elu',
                                       kernel_initializer='he_normal')
        self.block1=ResidualBlock(2,30)
        self.block2=ResidualBlock(2,30)
        self.out=keras.layers.Dense(output_dim)
    def call(self,inputs):
        Z=self.hidden1(inputs)
        for _ in range(1+3):
            Z=self.block1(Z)
        Z=self.block2(Z)
        return self.out(Z)
class ReconstructingRegressor(keras.Model):
    def __init__(self,output_dim):
        super().__init__()
        self.hidden=[keras.layers.Dense(30,activation='elu',
                                       kernel_initializer='he_normal')for _ in range(5)]
        self.out=keras.layers.Dense(output_dim)
    def build(self,batch_input_shape):
        n_inputs=batch_input_shape[-1]
        sef.reconstruct=keras.layers.Dense(n_inputs)
        super().build(batch_input_shape)
    def call(self,inputs):
        Z=inputs
        for layer in self.hidden:
            Z=layer(Z)
        reconstruction=self.reconstruct(Z)
        recon_loss=tf.reduce_mean(tf.square(reconstruction-inputs))
        self.add_loss(0.05*recon_loss)
        return self.out(Z)
def f(w1,w2):#定义函数
    return 3*w1**2+2*w1*w2
w1,w2=5,3
eps=1e-6
(f(w1+eps,w2)-f(w1,w2))/eps#计算微分

36.000003007075065

(f(w1,w2+eps)-f(w1,w2))/eps

10.000000003174137

import tensorflow as tf
w1,w2=tf.Variable(5.),tf.Variable(3.)#使用TensorFlow定义两个变量
with tf.GradientTape() as tape:#使用tf.GradientTape上下文,该上下文将自动记录设计变量的每个操作
    z=f(w1,w2)
gradients=tape.gradient(z,[w1,w2])#最后用tape对两个变量[w1,w2]计算结果z的梯度
print(gradients)

[<tf.Tensor: shape=(), dtype=float32, numpy=36.0>, <tf.Tensor: shape=(), dtype=float32, numpy=10.0>]

posted @ 2021-09-19 09:46  里列昂遗失的记事本  阅读(174)  评论(0)    收藏  举报