使用张量流进行k折交叉验证

时间:2018-03-06 06:26:57

标签: python tensorflow machine-learning neural-network deep-learning

我创建了一个人工神经网络。我正在尝试使用k-fold交叉验证技术来计算模型的准确性,但是在编译完最后一行之后它没有进一步发展,它在那里停留超过20分钟。我无法弄清楚我哪里出错了。有人可以帮我这件事吗?以下是我使用的代码。

提前致谢。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:13].values
y = dataset.iloc[:, 13].values

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
X=X[:,1:]

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from keras.models import Sequential #required to initialize ann
from keras.layers import Dense #required to build the layers of ann

def build_classifier():
    classifier=Sequential()
    classifier.add(Dense(kernel_initializer="uniform", activation="relu", input_dim=11, units=6))
    classifier.add(Dense(kernel_initializer="uniform", activation="relu", units=6))
    classifier.add(Dense(kernel_initializer="uniform", activation="sigmoid",units=1))
    classifier.compile(optimizer='adam', loss='binary_crossentropy',metrics=['accuracy'])
    return classifier
classifier=KerasClassifier(build_fn=build_classifier, batch_size=10, nb_epoch=100)
accuracies=cross_val_score(estimator=classifier,X=X_train,y=y_train,cv=10,n_jobs=-1)

1 个答案:

答案 0 :(得分:0)

我在使用完全相同的代码时遇到了相同的问题。 Windows似乎存在“ n_jobs”问题,如果通过“ accurcies = ..”将其删除,它将开始工作。只是可能需要很长时间,但它会起作用并显示每个时代都在更新。