keras 关于机器学习和框架的问题

xj3cbfub  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(102)

我发现了一个关于训练数据集层的问题:

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列

4dc9hkyq

4dc9hkyq1#

尝试在模型定义之前打印X_train.shape[1],然后在模型拟合之前再次打印,以验证特征数量是否一致,或者只是尝试设置input_dim=5。

相关问题