我有一个目录,其中包含图像的子文件夹(根据标签).我想在Keras中使用ImageDataGenerator时将这些数据拆分为train和test set.尽管keras中的model.fit()具有用于指定拆分的参数validation_split,但我找不到与model.fit_generator()相同的参数.怎么做 ?
train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=32,
class_mode='binary')
model.fit_generator(
train_generator,
samples_per_epoch=nb_train_samples,
nb_epoch=nb_epoch,
validation_data=??,
nb_val_samples=nb_validation_samples)
Run Code Online (Sandbox Code Playgroud)
我没有单独的验证数据目录,需要将其从训练数据中分离出来
我想将我的数据分成火车和测试集,我应该在拆分之前或之后对数据进行规范化吗?在构建预测模型时是否有任何区别?提前致谢.
split regression machine-learning normalization train-test-split
我正在关注张量流的IRIS示例.
我现在的情况是我将所有数据都放在一个CSV文件中,而不是分开,我想对该数据应用k-fold交叉验证.
我有
data_set = tf.contrib.learn.datasets.base.load_csv(filename="mydata.csv",
target_dtype=np.int)
Run Code Online (Sandbox Code Playgroud)
如何使用多层神经网络对此数据集执行k-fold交叉验证,与IRIS示例相同?
我有以下数据:
pd.DataFrame({'Group_ID':[1,1,1,2,2,2,3,4,5,5],
'Item_id':[1,2,3,4,5,6,7,8,9,10],
'Target': [0,0,1,0,1,1,0,0,0,1]})
Group_ID Item_id Target
0 1 1 0
1 1 2 0
2 1 3 1
3 2 4 0
4 2 5 1
5 2 6 1
6 3 7 0
7 4 8 0
8 5 9 0
9 5 10 1
Run Code Online (Sandbox Code Playgroud)
我需要根据“Group_ID”将数据集拆分为训练集和测试集,以便 80% 的数据进入训练集,20% 进入测试集。
也就是说,我需要我的训练集看起来像:
Group_ID Item_id Target
0 1 1 0
1 1 2 0
2 1 3 1
3 2 4 0
4 2 5 1
5 2 6 1 …Run Code Online (Sandbox Code Playgroud) grouping machine-learning python-3.x pandas train-test-split
实际上,有两个事实的矛盾是问题的可能答案:
传统的答案是在拆分后进行,因为如果之前进行过,则可能会从测试集泄漏信息。
矛盾的答案是,如果仅从整个数据集中选择的训练集用于特征选择,那么特征选择或特征重要性得分顺序可能会随着 Train_Test_Split 的 random_state 的变化而动态变化。如果任何特定工作的特征选择发生变化,则无法进行特征重要性的泛化,这是不可取的。其次,如果仅使用训练集进行特征选择,则测试集可能包含某些实例集,这些实例与仅在训练集上进行的特征选择相悖/矛盾,因为未分析整体历史数据。此外,只有在给定一组实例而不是单个测试/未知实例时,才能评估特征重要性分数。
我很好奇,如果在最新的2.0.1版本中有类似于sklearn的 http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedShuffleSplit.html for apache-spark.
到目前为止,我只能找到https://spark.apache.org/docs/latest/mllib-statistics.html#stratified-sampling,它似乎不适合将严重不平衡的数据集拆分为火车/测试样本.
不知道如何解决.任何帮助非常感谢.我看到了矢量化:不是一个有效的集合,但不确定我是否理解这一点
train = df1.iloc[:,[4,6]]
target =df1.iloc[:,[0]]
def train(classifier, X, y):
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
classifier.fit(X_train, y_train)
print ("Accuracy: %s" % classifier.score(X_test, y_test))
return classifier
trial1 = Pipeline([
('vectorizer', TfidfVectorizer()),
('classifier', MultinomialNB()),
])
train(trial1, train, target)
Run Code Online (Sandbox Code Playgroud)
错误如下:
----> 6 train(trial1, train, target)
<ipython-input-140-ac0e8d32795e> in train(classifier, X, y)
1 def train(classifier, X, y):
----> 2 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
3
4 classifier.fit(X_train, y_train)
5 print ("Accuracy: %s" % classifier.score(X_test, y_test)) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用train_test_splitscikit-learn 中的函数将我的数据集拆分为训练集和测试集,但出现此错误:
In [1]: y.iloc[:,0].value_counts()
Out[1]:
M2 38
M1 35
M4 29
M5 15
M0 15
M3 15
In [2]: xtrain, xtest, ytrain, ytest = train_test_split(X, y, test_size=1/3, random_state=85, stratify=y)
Out[2]:
Traceback (most recent call last):
File "run_ok.py", line 48, in <module>
xtrain,xtest,ytrain,ytest = train_test_split(X,y,test_size=1/3,random_state=85,stratify=y)
File "/home/aurora/.pyenv/versions/3.6.0/lib/python3.6/site-packages/sklearn/model_selection/_split.py", line 1700, in train_test_split
train, test = next(cv.split(X=arrays[0], y=stratify))
File "/home/aurora/.pyenv/versions/3.6.0/lib/python3.6/site-packages/sklearn/model_selection/_split.py", line 953, in split
for train, test in self._iter_indices(X, y, groups):
File "/home/aurora/.pyenv/versions/3.6.0/lib/python3.6/site-packages/sklearn/model_selection/_split.py", line 1259, in _iter_indices
raise ValueError("The least …Run Code Online (Sandbox Code Playgroud) 所以我有一个包含子文件夹的主文件夹,子文件夹又包含数据集的图像,如下所示。
-main_db
---CLASS_1
-----img_1
-----img_2
-----img_3
-----img_4
---CLASS_2
-----img_1
-----img_2
-----img_3
-----img_4
---CLASS_3
-----img_1
-----img_2
-----img_3
-----img_4
我需要将这个数据集分成两部分,即训练数据(70%)和测试数据(30%)。下面是我想要实现的层次结构
-main_db
---training_data
-----CLASS_1
-------img_1
-------img_2
-------img_3
-------img_4
---CLASS_2
-------img_1
-------img_2
-------img_3
-------img_4
---testing_data
-----CLASS_1
-------img_5
-------img_6
-------img_7
-------img_8
---CLASS_2
-------img_5
-------img_6
-------img_7
-------img_8
任何帮助表示赞赏。谢谢
我试过这个模块。但这对我不起作用。该模块根本没有被导入。
https://github.com/jfilter/split-folders
这正是我想要的。
我正在使用命令行工具训练 NER 模型python -m spacy train。我用来gold.docs_to_json将带注释的文档转换为JSON 可序列化格式。
命令行训练工具同时使用训练集和开发集。我不确定命令行工具为我管理训练/开发拆分提供了多少帮助。
我认为问题(1)和(2)的答案都是“否”,但我想仔细检查一下。
从实践来看,即使您正在训练生产模型进行固定次数的迭代,您也始终必须传递非空开发集。现在我只是传递了我的训练数据的副本,但看起来很奇怪,所以我想知道是否还缺少其他一些程序。
有关训练的 spaCy 文档主要讨论编写您自己的迭代循环。我已经做了足够多的工作,我确信如果我编写自己的代码,我可以完成上述任何工作,但对于这些基本的训练操作,我宁愿不编写代码,而只使用命令行工具来完成所有操作。
train-test-split ×10
python ×3
pandas ×2
python-3.x ×2
scikit-learn ×2
apache-spark ×1
grouping ×1
keras ×1
pipeline ×1
regression ×1
spacy ×1
split ×1
tensorflow ×1