我发现了一个关于训练数据集层的问题:
ValueError: Input 0 of layer "sequential_4" is incompatible with the layer: expected shape=(None, 7), found shape=(None, 5)
字符串
下面是我的代码:
import pandas as pd
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import Adam
from keras.regularizers import l2
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import numpy as np
def carica_dataset():
dataset = pd.read_csv("dataset.csv")
return dataset
def carica_modello():
dataset = carica_dataset()
dataset = pd.get_dummies(dataset, columns=['Località'])
print(dataset)
X = dataset.drop(columns=['Prezzo'])
y = dataset['Prezzo']
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=X_train.shape[1], kernel_regularizer=l2(0.1)))
model.add(Dropout(0.5))
model.add(Dense(32, activation='relu', kernel_regularizer=l2(0.1)))
model.add(Dropout(0.5))
model.add(Dense(16, activation='relu', kernel_regularizer=l2(0.1)))
model.add(Dropout(0.5))
model.add(Dense(8, activation='relu', kernel_regularizer=l2(0.1)))
model.add(Dropout(0.5))
model.add(Dense(1, activation='linear', kernel_regularizer=l2(0.1)))
adam = Adam()
model.compile(loss='mean_squared_error', optimizer=adam, metrics=['accuracy'])
model.fit(X_train, y_train, epochs=100, batch_size=64)
return model
dataset = carica_dataset()
model = carica_modello()
fields = {
'Superficie': float,
'Numero di stanze da letto': int,
'Numero di bagni': int,
'Anno di costruzione': int,
'Località': str
}
user_data = {}
for key,value in fields.items():
while True:
try:
user_input = input(f"inserisci il valore di: {key}")
user_data[key] = value(user_input)
break
except ValueError:
print(f"inserisci un valore valido per {key}")
dataframe = pd.DataFrame([user_data])
dataframe = pd.get_dummies(dataframe, columns=['Località'])
valori = dataframe.values
prediction = model.predict(valori)[0][0]
print(f'La predizione del prezzo è: {prediction} €')
型
我试着改变层数,但每次都发现同样的问题,我该怎么办?
我的数据集有6列-1,这是我需要预测的列,所以5列
1条答案
按热度按时间4dc9hkyq1#
尝试在模型定义之前打印X_train.shape[1],然后在模型拟合之前再次打印,以验证特征数量是否一致,或者只是尝试设置input_dim=5。