【发布时间】:2020-07-28 18:06:18
【问题描述】:
我正在使用keras 学习深度学习,并尝试将结果(准确性)与机器学习算法(sklearn)(即random forest,k_neighbors)进行比较
似乎使用keras 我得到的结果最差。
我正在研究简单的分类问题:iris dataset
我的 keras 代码看起来:
samples = datasets.load_iris()
X = samples.data
y = samples.target
df = pd.DataFrame(data=X)
df.columns = samples.feature_names
df['Target'] = y
# prepare data
X = df[df.columns[:-1]]
y = df[df.columns[-1]]
# hot encoding
encoder = LabelEncoder()
y1 = encoder.fit_transform(y)
y = pd.get_dummies(y1).values
# split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
# build model
model = Sequential()
model.add(Dense(1000, activation='tanh', input_shape = ((df.shape[1]-1),)))
model.add(Dense(500, activation='tanh'))
model.add(Dense(250, activation='tanh'))
model.add(Dense(125, activation='tanh'))
model.add(Dense(64, activation='tanh'))
model.add(Dense(32, activation='tanh'))
model.add(Dense(9, activation='tanh'))
model.add(Dense(y.shape[1], activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train)
score, acc = model.evaluate(X_test, y_test, verbose=0)
#results:
#score = 0.77
#acc = 0.711
我已经厌倦了添加层和/或更改每层的单元数和/或更改激活函数(到 relu),结果似乎不高于 0.85。
使用 sklearn random forest 或 k_neighbors 我得到的结果(在同一数据集上)高于 0.95。
我错过了什么?
使用
sklearn时,我几乎没有付出任何努力并获得了不错的结果,使用keras,我进行了很多升级,但不如sklearn的结果。这是为什么呢?如何使用
keras获得相同的结果?
【问题讨论】:
标签: tensorflow machine-learning keras scikit-learn neural-network