ftr price data iloc data columns ftr колонки data iloc data columns ft

 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
ftr = 'price'
x = data.iloc[:, data.columns != ftr] # колонки
y = data.iloc[:, data.columns == ftr] # что нужно предсказать
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.20, random_state=0)
# --------------
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
norm_X_train = scaler.fit_transform(x_train)
norm_X_test = scaler.fit_transform(x_test)
norm_X_train = pd.DataFrame(data=norm_X_train,columns=x_train.columns)
norm_X_test = pd.DataFrame(data=norm_X_test,columns=x_test.columns)
#---------------------
def build_model():
model = keras.Sequential([
layers.Dense(110, activation="relu", input_shape=[len(norm_X_train.keys())]), # входной
layers.Dense(110, activation='relu'),
layers.Dense(110, activation='relu'),
layers.Dense(110, activation='relu'),
layers.Dense(1) # выходной
])
model.compile(loss='mse',
optimizer='adam',
metrics=['mae', 'mse'])
return model
#-----------------------
model = build_model()
model.summary()
#------------------------
# это вот показывает просто рандомные циферки и тип, который нейросеть будет выдавать на выходе
example_batch = x_train[:10]
example_result = model.predict(example_batch)
example_result
#------------------------
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=20) # если за 20 эпох ничо не поменялось - остановится
history = model.fit(norm_X_train,
y_train,
epochs=1000,
batch_size=200,
validation_split = 0.2,
verbose=1,
callbacks=[early_stop] # применение останавливалки
)