它给出了内存错误,但内存容量从未达到。我在 SSH 上有 60 GB 的内存,完整的数据集处理消耗了 30 GB,我正在尝试用 k 倍训练自动编码器。如果没有 k 倍,训练效果很好。原始数据集包含 hdf5 中的 250,000 条数据。对于 K-fold,如果我使用的总数据少于 100000,它就可以工作。我已经将其转换为 float32 但仍然不起作用。我也尝试过 echo 1 但会自动终止 python 程序
基于Sklearn 文档:
StratifiedKFold?KFold已被使用?我正在根据组值拆分训练和测试集中的一些数据。我怎样才能做到这一点以获得平衡的数据?
为了解决一个二元分类任务,我有 100 个样本,每个样本都有一个唯一的 ID,一个主题和一个标签(1 或 0)。
为了避免在人物识别任务中退化,我需要同一主题不能同时出现在训练和测试集中。
受试者的数量少于样本的数量 (57),某些受试者仅出现在一个样本中,而其他许多具有相同或不同的标签。
我可以简单地使用 sklearn 的 gropKfold 来做到这一点,但我希望我的数据是平衡的(或至少接近平衡)
我尝试使用以下代码:
n_shuffles = 2
group_k_fold = GroupKFold(n_splits=5)
for i in range(n_shuffles):
X_shuffled, y_shuffled, groups_shuffled = shuffle(idx, labels, subjects, random_state=i)
splits = group_k_fold.split(X_shuffled, y_shuffled, groups_shuffled)
for train_idx, val_idx in splits:
X = perezDataFrame.loc[perezDataFrame['ID'].isin(X_shuffled[train_idx]),AU_names].values
X = preprocessing.normalize(X, norm='l2')
y = perezDataFrame.loc[perezDataFrame['ID'].isin(X_shuffled[train_idx]),'label'].values
XTest = perezDataFrame.loc[perezDataFrame['ID'].isin(X_shuffled[val_idx]),AU_names].values
XTest = preprocessing.normalize(XTest, norm='l2')
yTest = perezDataFrame.loc[perezDataFrame['ID'].isin(X_shuffled[val_idx]),'label'].values
Run Code Online (Sandbox Code Playgroud)
其中 idx、主题和标签分别是 ID、主题和标签的列表。
但数据非常不平衡。
我也试过这个:
for i in range(5):
GSP = GroupShuffleSplit(n_splits =10, test_size =0.20, train_size=0.80 …Run Code Online (Sandbox Code Playgroud) 我是 pytorch 的新手,正在尝试实现一个前馈神经网络来对 mnist 数据集进行分类。我在尝试使用交叉验证时遇到了一些问题。我的数据具有以下形状
x_train::
torch.Size([45000, 784])和
y_train:torch.Size([45000])
我尝试使用 sklearn 中的 KFold。
kfold =KFold(n_splits=10)
这是我的训练方法的第一部分,我将数据分成几部分:
for train_index, test_index in kfold.split(x_train, y_train):
x_train_fold = x_train[train_index]
x_test_fold = x_test[test_index]
y_train_fold = y_train[train_index]
y_test_fold = y_test[test_index]
print(x_train_fold.shape)
for epoch in range(epochs):
...
Run Code Online (Sandbox Code Playgroud)
y_train_fold变量的索引是正确的,它只是:
[ 0 1 2 ... 4497 4498 4499],但它不是 for x_train_fold,而是[ 4500 4501 4502 ... 44997 44998 44999]。测试折叠也是如此。
对于第一次迭代,我希望变量x_train_fold是前 4500 张图片,换句话说,具有 shape torch.Size([4500, 784]),但它具有 shapetorch.Size([40500, 784])
关于如何做到这一点的任何提示?
我正在编写代码来解决一个简单的问题,即预测库存中物品丢失的概率。
我正在使用XGBoost预测模型来做到这一点。
我将数据分成两个 .csv 文件,一个是训练数据,另一个是测试数据
这是代码:
import pandas as pd
import numpy as np
train = pd.read_csv('C:/Users/pedro/Documents/Pedro/UFMG/8o periodo/Python/Trabalho Final/train.csv', index_col='sku').fillna(-1)
test = pd.read_csv('C:/Users/pedro/Documents/Pedro/UFMG/8o periodo/Python/Trabalho Final/test.csv', index_col='sku').fillna(-1)
X_train, y_train = train.drop('isBackorder', axis=1), train['isBackorder']
import xgboost as xgb
xg_reg = xgb.XGBRegressor(objective ='reg:linear', colsample_bytree = 0.3, learning_rate = 0.1,
max_depth = 10, alpha = 10, n_estimators = 10)
xg_reg.fit(X_train,y_train)
y_pred = xg_reg.predict(test)
# Create file for the competition submission
test['isBackorder'] = y_pred
pred = test['isBackorder'].reset_index()
pred.to_csv('competitionsubmission.csv',index=False)
Run Code Online (Sandbox Code Playgroud)
这是我尝试测量问题准确性的函数(使用 RMSE …
我正在使用不同的交叉验证方法。我首先在我的代码上使用 k Fold 方法,效果非常好,但是当我使用repeatedstratifiedkfold方法时,它给了我这个错误
TypeError: Singleton array array(None, dtype=object) cannot be considered a valid collection.
Run Code Online (Sandbox Code Playgroud)
任何人都可以在这方面帮助我吗?以下是产生该问题的最少代码。
import numpy as np
from sklearn.model_selection import RepeatedStratifiedKFold
ss = RepeatedStratifiedKFold(n_splits=5, n_repeats=2, random_state=0)
X = np.random.rand(100, 5)
y = np.random.rand(100, 1)
for train_index, test_index in ss.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
Run Code Online (Sandbox Code Playgroud)
这是完整的引用 -
start
Traceback (most recent call last):
File "C:\Users\full details of final year project\AZU\test_tace_updated.py", line 81, in <module>
main()
File "C:\Users\AZU\test_tace_updated.py", line 54, in main …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 cross_val_score 和 KFold 来评估在数据预处理中的不同点使用 StandardScaler 的影响,特别是在执行交叉验证之前缩放整个训练数据集是否会导致数据泄漏,以及与缩放相比有何影响来自管道内的数据(因此仅将其应用于训练折叠)。
我目前的流程如下:
实验A
实验B
获得的分数是相同的(大约小数点后 13 位),我对此表示怀疑,因为实验 B 在交叉验证过程中肯定会引入数据泄漏。
我看过帖子指出,在交叉验证之前是否对整个训练集进行缩放并不重要,如果这是真的,我想了解为什么,如果这不是真的,我想了解为什么分数数据泄露了还能这么相似吗?
请参阅下面我的测试代码:
import numpy as np
import pandas as pd
from sklearn.pipeline import Pipeline
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
from sklearn.model_selection import KFold, StratifiedKFold
from sklearn.model_selection import cross_val_score, cross_val_predict …Run Code Online (Sandbox Code Playgroud) 我正在研究我的数据集上的一些 cross_validation 分数cross_val_score,特别KFold
是我的代码如下所示:
cross_val_score(estimator=model, X=X, y=y, scoring='r2', cv=KFold(shuffle=True))
Run Code Online (Sandbox Code Playgroud)
shuffle=True我的问题是,将 :放入: 中是否是一种常见行为,KFold如果我这样做,则 r2 分数的回报为:
[0.5934, 0.60432, 0.45689, 0.6875, 0.5678]
Run Code Online (Sandbox Code Playgroud)
如果我把shuffle=False它返回
[0.3987, 0,4576, 0.3234, 0.4567. 0.3233]
Run Code Online (Sandbox Code Playgroud)
我不希望用于迭代训练的相同点在下一次迭代中重新考虑,最终得到交叉验证的乐观分数。我应该如何解释我使用 获得更好的分数shuffle=True?
我正在遵循TowardsDataScience 的教程,使用 Huggingface Trainer 进行文本分类。为了获得更强大的模型,我想要进行 K 折交叉验证,但我不确定如何使用 Huggingface Trainer 来完成此操作。Trainer 是否有内置功能,或者如何在此处进行交叉验证?
提前致谢!
python cross-validation bert-language-model k-fold huggingface-transformers
我的目标是应用 k 折交叉验证来训练 VGG19 模型。为此,我使用以下代码从目录中读取图像:
DIR = "/Images"
data_dir = pathlib.Path(os.getcwd() + '\\Images')
train_ds = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(224, 224),
batch_size=32)
val_ds = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(224, 224),
batch_size=32)
Run Code Online (Sandbox Code Playgroud)
并且在不使用 kfold 交叉验证的情况下它也能正常工作。但是当我想使用 K 折交叉验证时,我必须train_ds分别使用标签和图像,并且我找不到解决方案,除非我需要使用另一种方法读取图像。因此,我决定使用ImageDataGenerator和来读取图像flow_from_directory。但据我了解,为了使用 加载图像flow_from_directory,我必须有两个单独的子集 astraning和testin 图像,而我的情况下没有traning和test文件夹。这两种方法有什么解决方案吗?
此外,使用第一种方法,即tf.keras.utils.image_dataset_from_directory,将找到的图像数量与 不同flow_from_directory。这是第一个方法的输出:
找到属于 4 个类别的 1060 个文件。使用848个文件进行训练。
这是第二种方法的输出:
img_gen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1.0 / 255,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
vertical_flip=True)
Wheat_data …Run Code Online (Sandbox Code Playgroud) k-fold ×10
python ×7
scikit-learn ×6
hdf5 ×1
keras ×1
mnist ×1
pandas ×1
python-3.x ×1
pytorch ×1
tensorflow ×1
xgboost ×1