import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv('insurance.csv')
X = df.drop(['sex', 'children', 'smoker', 'region'], axis = 1)
X = X.values
y = df['charges']
y = y.values.reshape(1331,1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 75)
from keras import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(5, activation = 'sigmoid'))
model.add(Dense(4, activation = 'sigmoid'))
model.add(Dense(1, activation = 'sigmoid'))
from keras import optimizers
sgd = optimizers.SGD(lr=0.1)
model.compile(sgd, 'mse')
model.fit(X_train, y_train, 32, 100, shuffle=False)
这是我的代码,我输入的数据都是数值的,我尝试了不同的超参数,但似乎没有任何效果。 任何帮助将非常感激。 我只是不知道这里出了什么问题。
答案 0 :(得分:1)
如果您确实处于回归设置中(由您对损失的选择(MSE)隐含),而不是处于分类中,则代码中的基本错误是激活了最后一层,应该是linear
:
model.add(Dense(1, activation = 'linear'))
当然,您的方法可能还有其他问题,包括模型本身的体系结构(没有任何类型的“保证”,无论您将什么模型体系结构放入数据中,都会产生不错的效果。结果,您的模型看起来太简单了),其他层的激活函数(通常今天从relu
开始)等等,但是如果不了解您的数据就无法说更多。