标签: cross-validation

R插入符号/如何在rfe工作中对列车进行交叉验证

rfecaret库中的功能有疑问.在插入符号主页链接上,他们提供以下RFE算法: 算法

对于这个例子,我使用rfe具有3倍交叉验证的功能和具有线性SVM和5倍交叉验证的列车功能.

library(kernlab)
library(caret)
data(iris)

# parameters for the tune function, used for fitting the svm
trControl <- trainControl(method = "cv", number = 5)

# parameters for the RFE function
rfeControl <- rfeControl(functions = caretFuncs, method = "cv",
                     number= 4, verbose = FALSE )

rf1 <- rfe(as.matrix(iris[,1:4]), as.factor(iris[,5]) ,sizes = c( 2,3) ,  
           rfeControl = rfeControl, trControl = trControl, method = "svmLinear")
Run Code Online (Sandbox Code Playgroud)
  • 从上面的算法我假设该算法可以使用2个嵌套的交叉验证:
    1. rfe 将数据(150个样本)分成3倍
    2. train功能将在训练集(100个样本)上运行,具有5倍交叉验证以调整模型参数 - …

r cross-validation rfe r-caret

9
推荐指数
1
解决办法
3166
查看次数

使用插入包应用k-fold交叉验证模型

首先我要说的是,我已经阅读了很多关于交叉验证的帖子,似乎有很多混乱.我的理解就是这样:

  1. 执行k倍交叉验证,即10倍,以了解10倍的平均误差.
  2. 如果可接受,则在完整数据集上训练模型.

我正在尝试使用rpartR 构建一个决策树并利用该caret包.以下是我正在使用的代码.

# load libraries
library(caret)
library(rpart)

# define training control
train_control<- trainControl(method="cv", number=10)

# train the model 
model<- train(resp~., data=mydat, trControl=train_control, method="rpart")

# make predictions
predictions<- predict(model,mydat)

# append predictions
mydat<- cbind(mydat,predictions)

# summarize results
confusionMatrix<- confusionMatrix(mydat$predictions,mydat$resp)
Run Code Online (Sandbox Code Playgroud)

我有一个关于插入火车应用的问题.我已经阅读了插入符号列表部分的简短介绍,其中说明了在重新采样过程中确定了"最佳参数集".

在我的例子中,我是否正确编码了?我是否需要rpart在代码中定义参数或我的代码是否足够?

r cross-validation rpart r-caret

9
推荐指数
2
解决办法
4万
查看次数

Scikit - 结合缩放和网格搜索

我是 scikit 的新手,在结合数据比例和网格搜索方面有两个小问题。

  1. 高效洁牙机

考虑使用 Kfolds 进行交叉验证,我希望每次我们在 K-1 折叠上训练模型时,数据缩放器(例如使用 preprocessing.StandardScaler())仅适用于 K-1 折叠,然后应用于剩下的折叠。

我的印象是以下代码将适合整个数据集上的缩放器,因此我想修改它以使其按照先前描述的方式运行:

classifier = svm.SVC(C=1)    
clf = make_pipeline(preprocessing.StandardScaler(), classifier)
tuned_parameters = [{'C': [1, 10, 100, 1000]}]
my_grid_search = GridSearchCV(clf, tuned_parameters, cv=5)
Run Code Online (Sandbox Code Playgroud)
  1. 取回内部定标器配件

当 refit=True 时,“在”网格搜索之后,在整个数据集上重新拟合模型(使用最佳估计器),我的理解是将再次使用管道,因此缩放器将适合整个数据集。理想情况下,我想重用它来扩展我的“测试”数据集。有没有办法直接从 GridSearchCV 中检索它?

python scikit-learn cross-validation grid-search

9
推荐指数
1
解决办法
3323
查看次数

sklearn中的交叉验证+决策树

尝试使用sklearn和panads创建具有交叉验证的决策树.

我的问题是在下面的代码中,交叉验证分割数据,然后我将其用于训练和测试.我将尝试通过在不同的最大深度设置下重新创建n次来找到树的最佳深度.在使用交叉验证时,我应该使用k folds CV,如果是这样,我将如何在我的代码中使用它?

import numpy as np
import pandas as pd
from sklearn import tree
from sklearn import cross_validation

features = ["fLength", "fWidth", "fSize", "fConc", "fConc1", "fAsym", "fM3Long", "fM3Trans", "fAlpha", "fDist", "class"]

df = pd.read_csv('magic04.data',header=None,names=features)

df['class'] = df['class'].map({'g':0,'h':1})

x = df[features[:-1]]
y = df['class']

x_train,x_test,y_train,y_test = cross_validation.train_test_split(x,y,test_size=0.4,random_state=0)

depth = []
for i in range(3,20):
    clf = tree.DecisionTreeClassifier(max_depth=i)
    clf = clf.fit(x_train,y_train)
    depth.append((i,clf.score(x_test,y_test)))
print depth
Run Code Online (Sandbox Code Playgroud)

这里是我正在使用的数据的链接,以防任何人. https://archive.ics.uci.edu/ml/datasets/MAGIC+Gamma+Telescope

machine-learning decision-tree cross-validation

9
推荐指数
1
解决办法
2万
查看次数

K使用keras折叠交叉验证

由于神经网络的运行时间很长,似乎没有认真对待网络中的k折交叉验证.我有一个小数据集,我有兴趣使用此处给出的示例进行k折交叉验证.可能吗?谢谢.

cross-validation keras

9
推荐指数
1
解决办法
8759
查看次数

sklearn cross_val_score的精度低于手动交叉验证

我工作的一个文本分类的问题,我已经设置了像这样(我已经离开了为简洁的数据处理步骤,但他们会产生一种叫做数据帧data的柱子Xy):

import sklearn.model_selection as ms
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.ensemble import RandomForestClassifier

sim = Pipeline([('vec', TfidfVectorizer((analyzer="word", ngram_range=(1, 2))),
                ("rdf", RandomForestClassifier())])
Run Code Online (Sandbox Code Playgroud)

现在我尝试通过对2/3的数据进行训练并在剩余的1/3上对其进行评分来验证此模型,如下所示:

train, test = ms.train_test_split(data, test_size = 0.33)
sim.fit(train.X, train.y)
sim.score(test.X, test.y)
# 0.533333333333
Run Code Online (Sandbox Code Playgroud)

我想为三个不同的测试集做三次,但使用cross_val_score给我的结果要低得多.

ms.cross_val_score(sim, data.X, data.y)
# [ 0.29264069  0.36729223  0.22977941]
Run Code Online (Sandbox Code Playgroud)

据我所知,该阵列中的每个分数都应该通过对2/3数据的训练产生,并使用该sim.score方法对剩余的1/3进行评分.那他们为什么都这么低?

python python-3.x scikit-learn cross-validation

9
推荐指数
1
解决办法
2563
查看次数

在SciKit-Learn中使用XGBoost进行交叉验证的网格搜索和早期停止

我对sci-kit学习相当新,并一直试图超级参数调整XGBoost.我的目标是使用早期停止和网格搜索来调整模型参数并使用早期停止来控制树的数量并避免过度拟合.

当我使用交叉验证进行网格搜索时,我希望在早期停止标准中也使用交叉验证.到目前为止我的代码看起来像这样:

import numpy as np
import pandas as pd
from sklearn import model_selection
import xgboost as xgb

#Import training and test data
train = pd.read_csv("train.csv").fillna(value=-999.0)
test = pd.read_csv("test.csv").fillna(value=-999.0)

# Encode variables
y_train = train.price_doc
x_train = train.drop(["id", "timestamp", "price_doc"], axis=1)

# XGBoost - sklearn method
gbm = xgb.XGBRegressor()

xgb_params = {
'learning_rate': [0.01, 0.1],
'n_estimators': [2000],
'max_depth': [3, 5, 7, 9],
'gamma': [0, 1],
'subsample': [0.7, 1],
'colsample_bytree': [0.7, 1]
}

fit_params = {
'early_stopping_rounds': 30,
'eval_metric': 'mae',
'eval_set': …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn cross-validation grid-search xgboost

9
推荐指数
1
解决办法
1961
查看次数

从 K 折交叉验证中选择哪个模型

我正在阅读有关交叉验证以及如何使用它来选择最佳模型和估计参数的内容,但我并没有真正理解它的含义。

假设我建立一个线性回归模型并进行 10 倍交叉验证,我认为这 10 个中的每一个都会有不同的系数值,现在我应该从 10 个不同的系数中选择哪个作为我的最终模型或估计参数。

或者我们使用交叉验证只是为了找到平均误差(在我们的例子中是 10 个模型的平均值)并与另一个模型进行比较?

validation statistics machine-learning cross-validation statistics-bootstrap

9
推荐指数
2
解决办法
1万
查看次数

Scikit-Learn:在交叉验证期间避免数据泄漏

我刚刚阅读了k-fold交叉验证,并意识到我无意中使用当前的预处理设置泄漏数据.

通常,我有一个火车和测试数据集.我在整个火车数据集上做了一堆数据插补和一次热编码,然后运行k-fold交叉验证.

泄漏是因为,如果我正在进行5倍交叉验证,我将训练80%的列车数据,并在剩余的20%的列车数据上进行测试.

我真的应该根据80%的火车来估算20%(而我之前使用的是100%的数据).

1)这是考虑交叉验证的正确方法吗?

2)我一直在研究这个Pipelinesklearn.pipeline,它似乎对做一堆变换很有用,然后最终将模型拟合到结果数据中.但是,我正在做一些像" float64用平均值列出缺失数据"这样的东西,"用模式归还所有其他数据",等等.

这种插补没有明显的变压器.我该如何将这一步添加到Pipeline?我会创建自己的子类BaseEstimator吗?

这里的任何指导都会很棒!

pipeline scikit-learn cross-validation

9
推荐指数
1
解决办法
1309
查看次数

错误:分类指标无法处理多类多输出和多标签指标目标的混合

我是机器学习的新手。

我正在尝试进行多标签文本分类。我有这些文档的原始标签以及分类结果(使用 mlknn 分类器)表示为一种热编码(19000 文档 x 200 标签)。现在我正在尝试使用 f1_score micro 和 macro 来评估分类,但是我收到了这个错误(在第 3 行)ValueError: Classification metrics can't handle a mix of multiclass-multioutput and multilabel-indicator targets,我不知道如何解决它。这是我的代码:

1. y_true = np.loadtxt("target_matrix.txt")
2. y_pred = np.loadtxt("classification_results.txt")

3. print (f1_score(y_true, y_pred, average='macro'))
4. print (f1_score(y_true, y_pred, average='micro'))
Run Code Online (Sandbox Code Playgroud)

我还尝试使用cross_val_score分类来立即进行评估,但遇到了另一个错误(来自cross_val_score行):

File "_csparsetools.pyx", line 20, in scipy.sparse._csparsetools.lil_get1
File "_csparsetools.pyx", line 48, in scipy.sparse._csparsetools.lil_get1
IndexError: column index (11) out of bounds
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

X = np.loadtxt("docvecs.txt", delimiter=",")
y = np.loadtxt("target_matrix.txt", dtype='int')

cv_scores …
Run Code Online (Sandbox Code Playgroud)

python cross-validation multilabel-classification

9
推荐指数
1
解决办法
1万
查看次数