当前位置: 首页 > 知识库问答 >
问题:

ValueError:检查目标时出错:预期dense\u 3具有形状(1,),但获得具有形状(2,)的数组

公冶俊达
2023-03-14

当我使用澳大利亚数据集编写降雨预测代码时,我在拟合ann模型并运行10的纪元值时遇到了错误。我使用numpy、熊猫、matplotlib、seborn等库作为导入。对于模型的运行,我使用Keras进行密集和顺序搜索。我还使用标准标量来标准化x的值。我得到了这一行的错误-ann.fit(x_train,y_train,batch_size=10,nb_epoch=10,详细=1)下面是我的错误-ValueError:检查目标时的错误:期望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个答案

范承教
2023-03-14

你有密码

y=df[['RainToday','RainTomorrow']]

y应该是一列。您正在尝试预测明天是否会下雨。今天下雨是一个应该在X_train的功能。我建议您去一个使用此数据集的优秀教程。它位于此处。

 类似资料: