Uploaded by saimor.roro

регрессия

advertisement
Решение задачи регрессии
Задачи
2
Набор данных Boston Housing
https://archive.ics.uci.edu/ml/machine-learningdatabases/housing/
3
Набор данных Boston Housing
4
Набор данных Boston Housing
5
Boston Housing в Keras
import numpy as np
from keras.datasets import boston_housing
from keras.model import Sequential
from keras.layers import Dense
#Задаем seed для повторяемости результатов
numpy.random.seed(42)
#Загружаем данные
(x_train, y_ train), (x_test, y_ test) = boston_housing.load_data()
6
Стандартизация данных
Количество данных в наборе Boston Housing достаточно маленькое, всего лишь 506 записей, поэтому
нам нужно помочь нейронной сети работать с этим набором данных и привести все признаки одной
шкале для этого используется стандартизация данных
Стандартизация данных
Среднее значение 0, дисперсия 1
Алгоритм стандартизации
Вычитаем среднее значение
Делим на стандартное отклонение
Реализация на Python:
mean = x_train.mean(axis =0)
std x_train.std (axis=0)
x_train -= main
x_train /= std
x_test -= mean
x_test /= std
7
Создаем нейронную сеть
model = Sequential()
model. add(Dense(128, activation='relu',
input_shape=(x_train. shape[1], )))
model. add(Dense(1))
model. compile(optimizer='adam", loss='mse", metrics=['mae‘])
mse - Mean squared error (среднеквадратичная ошибка)
mae - Mean absolute error (средняя абсолютная ошибка)
Пример сети с двумя полносвязными
слоями
8
Пояснения
Applies the rectified linear unit activation
function. With default values, this returns the
standard ReLU activation: max(x, 0), the
element-wise maximum of 0 and the input
tensor.
9
Обучаем нейронную сеть
model. fit(x_train, y_train, epochs=100, batch size=1, verbose=0)
Epoch 1/100
Os - loss: 2.3545 - mean_absolute_error: 1.1522
Epoch 2/100
Os - loss: 2.3227 - mean_absolute_error: 1.1134
Epoch 3/100
…
Epoch 99/100
Os - loss: 1.7014 - mean_absolute_error: 0.9610
Epoch 100/100
0s - loss: 1.6848 - mean_absolute_error: 0.9688
10
Пояснения
Batch size = 500
Iterations = 4
Epoch = 1
11
Оцениваем качество обучения
•
mse, mae = model. evaluate(x_test, y_test, verbose=0)
print (mae)
2.35782532598
12
Используем сеть для предсказаний
стоимости недвижимости
pred = model. predict(x_test)
print(pred[1][0], y_test[1])
18.0534 18.8
print(pred[50][0], y_test[50])
34.4995 35.4
print(pred[100][0], y_test[100])
32.7579 26.7
13
Download