- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用卷积神经网络(CNN)进行图像分类。我想使用 KFold 交叉验证进行数据训练和测试。我是新手,我不太明白该怎么做。
我已经在单独的代码中尝试了 KFold 交叉验证和 CNN。而且我不知道如何组合它。
我使用包含 3 个类的 iris_data.csv 作为输入示例。
import pandas as pd
import numpy as np
from sklearn.model_selection import KFold
from sklearn.preprocessing import MinMaxScaler
from sklearn.svm import SVR
dataset = pd.read_csv('iris_data.csv')
x = dataset.iloc[:,0:3]
y = dataset.iloc[:, 4]
scaler = MinMaxScaler(feature_range=(0, 1))
x = scaler.fit_transform(x)
cv = KFold(n_splits=10, shuffle=False)
for train_index, test_index in cv.split(x):
print("Train Index: ", train_index, "\n")
print("Test Index: ", test_index)
x_train, x_test, y_train, y_test = x[train_index], x[test_index], y[train_index], y[test_index]
这里是 CNN 代码示例。
import numpy as np
import tensorflow as tf
from keras.models import Model
from keras.layers import Input, Activation, Dense, Conv2D, MaxPooling2D, Flatten
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import Adam
from keras.callbacks import TensorBoard
# Images Dimensions
img_width, img_height = 200, 200
# Data Path
train_data_dir = 'data/train'
validation_data_dir = 'data/validation'
# Parameters
nb_train_samples = 100
nb_validation_samples = 50
epochs = 50
batch_size = 10
# TensorBoard Callbacks
callbacks = TensorBoard(log_dir='./Graph')
# Training Data Augmentation
train_datagen = ImageDataGenerator(
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
# Rescale Testing Data
test_datagen = ImageDataGenerator(rescale=1. / 255)
# Train Data Generator
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')
# Testing Data Generator
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')
# Feature Extraction Layer KorNet
inputs = Input(shape=(img_width, img_height, 3))
conv_layer = Conv2D(16, (5, 5), strides=(3,3), activation='relu')(inputs)
conv_layer = MaxPooling2D((2, 2))(conv_layer)
conv_layer = Conv2D(32, (5, 5), strides=(3,3), activation='relu')(conv_layer)
conv_layer = MaxPooling2D((2, 2))(conv_layer)
# Flatten Layer
flatten = Flatten()(conv_layer)
# Fully Connected Layer
fc_layer = Dense(32, activation='relu')(flatten)
outputs = Dense(3, activation='softmax')(fc_layer)
model = Model(inputs=inputs, outputs=outputs)
# Adam Optimizer and Cross Entropy Loss
adam = Adam(lr=0.0001)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])
# Print Model Summary
print(model.summary())
model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size,
callbacks=[callbacks])
model.save('./models/model.h5')
model.save_weights('./models/weights.h5')
我希望将 KFold 交叉验证的结果用作 CNN 的训练和测试数据。
最佳答案
就做这样的事情
from keras.models import Sequential
from sklearn.model_selection import KFold
import numpy
dataset = numpy.loadtxt("iris_data.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:3]
Y = dataset[:,4]
# define 10-fold cross validation test harness
kfold = KFold(n_splits=10, shuffle=True, random_state=seed)
cvscores = []
for train, test in kfold.split(X, Y):
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
.
.
.
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X[train], Y[train], epochs=150, batch_size=10, verbose=0)
# evaluate the model
scores = model.evaluate(X[test], Y[test], verbose=0)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
cvscores.append(scores[1] * 100)
print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores), numpy.std(cvscores)))
看到这个https://machinelearningmastery.com/evaluate-performance-deep-learning-models-keras/
关于python - 如何使用 KFold 交叉验证输出作为 CNN 输入进行图像处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56156229/
我将 X 和 y 中的特征分开,然后在使用 k 折交叉验证拆分后预处理我的火车测试数据。之后,我将训练数据拟合到我的随机森林回归模型并计算置信度分数。为什么要在拆分后进行预处理?因为人们告诉我这样做更
我想用 Kfold 检查我的模型的准确性。我希望在每次迭代之间重置模型权重,因此我不会继续计算之前的迭代权重。下面的代码够了吗?或者模型是否存在于 keras 后端循环之外? from keras.m
我今天刚刚构建了我的第一个随机森林分类器,我正在努力提高它的性能。我正在阅读有关交叉验证对于避免数据过度拟合并因此获得更好结果的重要性。我使用 sklearn 实现了 StratifiedKFold,
源起: 1.我要做交叉验证,需要每个训练集和测试集都保持相同的样本分布比例,直接用sklearn提供的KFold并不能满足这个需求。 2.将生成的交叉验证数据集保存成CSV文件,而不是直接用sk
我试图理解 sklearn 的 GridSearchCV 。我对 GridsearchCV 中交叉验证的使用有一些基本问题,然后我该如何进一步使用 GridsearchCV 的建议 假设我声明了一个
嗯,我试图了解如何以及在算法中的哪个点应用 Kfold CV 和 GridSearchCV。另外,如果我理解正确的话,GridSearchCV 用于超参数调整,即参数的哪些值将给出最佳结果,而 Kfo
我正在关注 Kaggle 上的一个内核,主要是我在关注A kernel for Credit Card Fraud Detection . 我到达了需要执行 KFold 以便找到逻辑回归的最佳参数的步
我正在看这个教程:https://www.dataquest.io/mission/74/getting-started-with-kaggle 我到了第 9 部分,进行预测。在名为泰坦尼克号的数据框
在使用 cross_validation.KFold(n, n_folds=folds) 之后,我想访问用于训练和测试单折的索引,而不是遍历所有折。 让我们来看示例代码: from sklearn i
我正在尝试使用卷积神经网络(CNN)进行图像分类。我想使用 KFold 交叉验证进行数据训练和测试。我是新手,我不太明白该怎么做。 我已经在单独的代码中尝试了 KFold 交叉验证和 CNN。而且我不
我想我已经将训练数据分成 5 个 kold,有没有办法让我标记/识别这 5 个分割中的每一个,以便我可以将每个分割发送到我的算法中以计算它们自己的准确性? from sklearn.model_sel
使用 sklearn,当您创建一个新的 KFold 对象并且 shuffle 为真时,它将产生一个不同的、新的随机折叠索引。但是,给定 KFold 对象的每个生成器都会为每个折叠提供相同的索引,即使
我正在尝试对我的数据集运行交叉验证。数据看起来很干净,但是当我尝试运行它时,我的一些数据被 NaN 替换了。我不确定为什么。有人以前见过这个吗? y, X = np.ravel(df_test['la
我有一个只有 1 列的特征框,名为 X,其中包含浮点值和一个带有二进制类(1 或 0)的标签向量 y。 当我执行 X.isnull().sum() 时,它输出 0 并且标签向量也是如此。但是当我尝试像
我正在关注 Jeff Heaton 深度学习类(class) Course link 并继续进行练习。在第一个编程作业的问题 5 中,在最后一个任务中,他要求将 KFold(5) 交叉验证的输入数据的
我在具有非连续行索引的 df(数据框)上使用 python 中 sklearn 包中的 kfold 函数。 这是代码: kFold = KFold(n_splits=10, shuffle=True,
似乎 KFold 每次迭代对象时都会生成相同的值,而 Shuffle Split 每次都会生成不同的索引。这个对吗?如果是这样,一个比另一个有什么用途? cv = cross_validation.K
这个问题在这里已经有了答案: difference between StratifiedKFold and StratifiedShuffleSplit in sklearn (3 个回答) 10 个
我一直在使用泰坦尼克号数据集训练随机森林模型。许多文章指出我们不需要对 RF 分类器进行交叉验证,但很少有人说可以使用交叉验证。我尝试了这两种方法,但我不知道如何得出分数,并且我怀疑如果在没有交叉验证
我有一组数据,我想用它们来训练神经网络,尽管我相信我的问题涉及任何类型的机器学习。 我的数据分为两类,但是第一类的示例比第二类的示例多得多。在我继续根据我的数据训练神经网络之前,我打算将数据分成 3
我是一名优秀的程序员,十分优秀!