#python #pandas #tensorflow #keras #sequential
Вопрос:
Когда я пишу код для прогнозирования осадков с использованием набора данных Австралии, я получаю ошибку во время подгонки модели ann и запуска значения эпохи для 10 .В качестве импорта я использую такие библиотеки, как numpy , pandas , matplotlib, seaborn .Для запуска модели я использую Keras для плотного и последовательного поиска.Я также использую стандартный скаляр для нормализации значения x. Я получаю ошибку в этой строке — энн.fit(x_train,y_train, batch_size = 10, nb_epoch = 10, подробный = 1) Ниже приведена моя ошибка — Ошибка значения: Ошибка при проверке цели: ожидалось, что dense_3 будет иметь форму (1,), но получил массив с формой (2,) Ниже приведен мой код-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('weatherAUS.csv')
df.head()
df.columns
plt.figure(figsize=(14,6))
df['MaxTemp'].plot()
plt.figure(figsize=(12,7))
sns.boxplot(x='RainToday',y='MaxTemp',data = df,palette ='winter')
df['Rainfall'].plot(kind= 'hist', bins=30, color='orange', figsize= (16,7))
from sklearn.model_selection import train_test_split
df.info()
df.dropna(inplace= True)
X=df[['Rainfall','MaxTemp','MinTemp']]
y=df[['RainToday','RainTomorrow']]
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2, random_state= 41)
#normalization to X values
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
xtrain = scaler.fit_transform(x_train)
xtest = scaler.transform(x_test)
import keras
from keras.layers import Dense
from keras.models import Sequential
ann = Sequential()
ann.add(Dense(units=32, init='uniform', activation='relu', input_dim = 3))
ann.add(Dense(units=16, init='uniform', activation='relu'))
ann.add(Dense(units=1, init='uniform', activation='sigmoid'))
ann.compile(optimizer ='adam', loss= 'mean_squared_error', metrics= ['accuracy'])
ann.fit(x_train,y_train, batch_size = 10, nb_epoch = 10, verbose = 1)
Y_pred = ann.predict(x_test)
Y_pred = [1 if y>=0.5 else 0 for y in Y_pred]
print(Y_pred)
Ответ №1:
у вас есть код
y=df[['RainToday','RainTomorrow']]
y должен быть одним столбцом. Вы пытаетесь предсказать, будет ли завтра дождь. RainToday-это функция, которая должна быть в X_train. Я предлагаю вам пройти отличный учебник, в котором используется этот набор данных. Он находится здесь.