Точность модели Tensorflow низкая - PullRequest
0 голосов
/ 05 марта 2020

Итак, моя главная цель - использовать данные за 2018 год и попытаться предсказать данные за 2019 год. Я использую модель GRU и у меня есть следующий код. У меня есть несколько проблем, я не уверен, что код на самом деле правильный или я что-то упустил, а также для model.fit я должен использовать validation_split = 0.1 или validation_data = X_test, y_test, так как я использую другой фрейм данных для тестирования.

Что касается точности, она очень мала и не имеет никакого смысла, и я понятия не имею, почему.

enter image description here

import pandas as pd
import tensorflow as tf
from keras.layers.core import Dense
from keras.layers.recurrent import GRU
from keras.models import Sequential
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback


df = pd.read_csv('IF 10 PERCENT.csv',index_col=None)



#Loading Second Dataframe


df2 = pd.read_csv('2019 10minutes IF 10 PERCENT.csv',index_col=None)


tbc=TensorBoardColab() # Tensorboard




X_train= df[['WindSpeed_mps','AmbTemp_DegC','RotorSpeed_rpm','RotorSpeedAve','NacelleOrientation_Deg','MeasuredYawError','Pitch_Deg','WindSpeed1','WindSpeed2','WindSpeed3','GeneratorTemperature_DegC','GearBoxTemperature_DegC']]
X_train=X_train.values

y_train= df['Power_kW']
y_train=y_train.values

X_test= df2[['WindSpeed_mps','AmbTemp_DegC','RotorSpeed_rpm','RotorSpeedAve','NacelleOrientation_Deg','MeasuredYawError','Pitch_Deg','WindSpeed1','WindSpeed2','WindSpeed3','GeneratorTemperature_DegC','GearBoxTemperature_DegC']]
X_test=X_test.values

y_test= df2['Power_kW']
y_test=y_test.values

# conversion to numpy array



# scaling values for model


x_scale = MinMaxScaler()
y_scale = MinMaxScaler()

X_train= x_scale.fit_transform(X_train)
y_train= y_scale.fit_transform(y_train.reshape(-1,1))
X_test=x_scale.fit_transform(X_test)
y_test=y_scale.fit_transform(y_test.reshape(-1,1))



X_train = X_train.reshape((-1,1,12)) 
X_test = X_test.reshape((-1,1,12))


# splitting train and test




# creating model using Keras
model = Sequential()
model.add(GRU(units=512, return_sequences=True, input_shape=(1,12)))
model.add(GRU(units=256, return_sequences=True))
model.add(GRU(units=256))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(loss=['mse'], optimizer='adam',metrics=['accuracy']) 
model.summary() 

#model.fit(X_train, y_train, batch_size=250, epochs=10, validation_split=0.1, verbose=1, callbacks=[TensorBoardColabCallback(tbc)])  
model.fit(X_train, y_train, batch_size=250, epochs=10, validation_data=(X_test,y_test), verbose=1, callbacks=[TensorBoardColabCallback(tbc)])

score = model.evaluate(X_test, y_test)
print('Score: {}'.format(score))
print('Accuracy: {}'.format(acc))
y_predicted = model.predict(X_test)
y_predicted = y_scale.inverse_transform(y_predicted)
y_t
est = y_scale.inverse_transform(y_test)
plt.plot(y_predicted, label='Predicted')
plt.plot(y_test, label='Measurements')
plt.legend()
plt.show()

Спасибо

1 Ответ

3 голосов
/ 05 марта 2020

Мне кажется, что вы пытаетесь решить проблему регрессии здесь. если это так, то нет смысла измерять accuracy как метри c, так как точность измеряет точное совпадение метки. MSE должно быть довольно хорошо для регрессии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...