Ewo*_*ord 6 python neural-network scikit-learn
我正在学习如何使用scikit-learn开发反向传播神经网络。我仍然对如何在神经网络中实现k倍交叉验证感到困惑。我希望你们能帮助我。我的代码如下:
import numpy as np
from sklearn.model_selection import KFold
from sklearn.neural_network import MLPClassifier
f = open("seeds_dataset.txt")
data = np.loadtxt(f)
X=data[:,0:]
y=data[:,-1]
kf = KFold(n_splits=10)
X_train, X_test, y_train, y_test = X[train], X[test], y[train], y[test]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
MLPClassifier(activation='relu', alpha=1e-05, batch_size='auto',
beta_1=0.9, beta_2=0.999, early_stopping=False,
epsilon=1e-08, hidden_layer_sizes=(5, 2), learning_rate='constant',
learning_rate_init=0.001, max_iter=200, momentum=0.9,
nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False,
warm_start=False)
Run Code Online (Sandbox Code Playgroud)
不要将数据拆分为训练和测试。这由KFold交叉验证自动处理。
from sklearn.model_selection import KFold
kf = KFold(n_splits=10)
clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
for train_indices, test_indices in kf.split(X):
clf.fit(X[train_indices], y[train_indices])
print(clf.score(X[test_indices], y[test_indices]))
Run Code Online (Sandbox Code Playgroud)
KFold验证将您的数据集划分为n个相等的,公平的部分。然后将每个部分分为测试和训练。这样,您就可以对模型的准确性进行相当准确的衡量,因为它是在少量分布均匀的数据上进行测试的。