我正在尝试建立一个回归模型,使用数据集https://www.kaggle.com/shubhammehta21/movie-lens-small-latest-dataset预测电影的“评分” 。然而,在训练模型之后,预测会为所有测试特征输出相同的值。我已经阅读了以前建议调整学习率的类似功能,没有。特征并检查模型预测与训练模型是否相同。这些都不适合我。
我加载数据并处理它:
links= pd.read_csv('../input/movie-lens-small-latest-dataset/links.csv')
movies=pd.read_csv('../input/movie-lens-small-latest-dataset/movies.csv')
...
dataset=movies.merge(ratings,on='movieId').merge(tags,on='movieId').merge(links,on='movieId')
to_drop='title','genres','timestamp_x','timestamp_y','userId_y','imdbId','tmdbId']
dataset.drop(columns=to_drop,inplace=True)
dataset=pd.get_dummies(dataset)
该代码显示了我如何构建回归模型。我尝试调整神经元和层数,但这并没有影响输出。
from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.optimizers import Adam
model = Sequential()
model.add(Dense(13, input_dim=1586, kernel_initializer='zero', activation='relu'))
model.add(Dense(6, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal',activation='linear'))
# Compile model
adam = Adam(lr=0.001)
model.compile(loss='mean_squared_error', optimizer=adam,metrics=['mse','mae'])
model.summary()
history = model.fit(train_dataset,train_labels,batch_size=30, epochs=10,verbose=1, validation_split=0.3)
score = model.evaluate(validation_dataset,validation_labels)
print("Test score:", score)
每当我尝试预测测试数据集时:
model.predict(test_dataset)
它预测的值
3.97
在所有价值观上。我期待一个介于 0 - 5 之间的值范围。