首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras:为什么训练时准确率不会改变

Keras:为什么训练时准确率不会改变
EN

Stack Overflow用户
提问于 2017-11-30 08:25:57
回答 1查看 4.1K关注 0票数 1

我尝试在Keras中运行churn_modeling.csv文件,但我不知道模型学习。下面是我的代码:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
import pandas as pd 
import numpy as np 

#read from CSV file ,convert categorial value to one-hot-encoding and convert the result to numpy array
df=pd.read_csv("churn_modelling.csv")
X=pd.get_dummies(df, columns=['Geography','Gender'])
X=X[['CreditScore','Age','Tenure','Balance','NumOfProducts','HasCrCard','IsActiveMember','EstimatedSalary','Geography_France','Geography_Germany','Geography_Spain','Gender_Female','Gender_Male','Exited']]
dataset=X.as_matrix()


X_train=dataset[:,0:13]
Y_train=dataset[:,13]

model=Sequential()
model.add(Dense(26, input_dim=13,  activation='relu'))
#model.add(Dense(15, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
sgd = SGD(lr=0.02)
model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy'])

model.fit(X_train,Y_train, validation_split=0.05, epochs=10, batch_size=200)

这是我得到的输出:对9500个样本进行训练,对500个样本进行验证

代码语言:javascript
复制
Epoch 1/10
9500/9500 [==============================] - 0s - loss: 3.7996 - acc: 0.7637 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 2/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 3/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 4/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 5/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 6/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 7/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 8/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 9/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260
Epoch 10/10
9500/9500 [==============================] - 0s - loss: 3.3085 - acc: 0.7947 - val_loss: 2.8045 - val_acc: 0.8260

即使我运行100个时期的程序,我仍然得到相同的结果val_acc: 0.8260。谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-12-04 04:25:04

似乎如果重新缩放训练集,准确率略有提高86%。我使用了以下代码:

代码语言:javascript
复制
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
rescaledX_train = scaler.fit_transform(X_train)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47564039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档