标签: cross-validation

在DAAG包中交叉验证的线性回归中要看什么值

我在包含151个变量和161个观察值的数据集上执行了以下操作: -

> library(DAAG)
> fit <- lm(RT..seconds.~., data=cadets)
> cv.lm(df = cadets, fit, m = 10)
Run Code Online (Sandbox Code Playgroud)

得到以下结果: -

fold 1 
Observations in test set: 16 
                  7     11     12      24     33    38      52     67     72
Predicted      49.6   44.1   26.4    39.8   53.3 40.33    47.8   56.7   58.5
cvpred        575.0 -113.2  640.7 -1045.8  876.7 -5.93  2183.0 -129.7  212.6
RT..seconds.   42.0   44.0   44.0    45.0   45.0 46.00    49.0   56.0   58.0
CV residual  -533.0  157.2 -596.7  1090.8 -831.7 51.93 -2134.0  185.7 -154.6
Run Code Online (Sandbox Code Playgroud)

我想要做的是将预测结果与实际实验结果进行比较,因此我可以绘制两者相互对应的图表,以显示它们的相似程度.我是正确的假设我会通过使用Predicted行中的值作为我的预测结果而不是cvpred来做到这一点?

我只是问这个问题,因为当我在插入符号包中执行相同的操作时,预测值和观察值之间的差异远远大于彼此:

library(caret)ctrl < …

r cross-validation

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

什么是sklearn.cross_validation.cross_val_score

只是想知道sklearn.cross_validation.cross_val_score到底是什么?文档说它是内部评分方法.它是否提供FPR /精确/召回?

machine-learning scikit-learn cross-validation

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

交叉验证的目的是什么?

我现在正在读一本关于机器学习的书。

NaiveBayesClassifier在作者身上工作非常支持交叉验证方法。

他建议将数据分成十个桶(文件),并在每次保留一个不同的桶时对其中的九个进行训练。

到目前为止,我唯一熟悉的方法是将数据按 50%/50% 的比例拆分为训练集和测试集,然后简单地一次性训练分类器。

有人可以解释使用交叉验证的可能优势吗?

statistics classification cross-validation naivebayes

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

SciKit使用RFECV学习特征选择和交叉验证

我仍然是机器学习的新手,并试图自己解决问题.我正在使用SciKit学习并拥有大约20,000个功能的推文数据集(n_features = 20,000).到目前为止,我的精确度,召回率和f1得分都达到了79%左右.我想使用RFECV进行特征选择并提高模型的性能.我已经阅读了SciKit学习文档,但对如何使用RFECV仍然有点困惑.

这是我到目前为止的代码:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
from sklearn.cross_validation import StratifiedShuffleSplit
from sklearn.cross_validation import cross_val_score
from sklearn.feature_selection import RFECV
from sklearn import metrics

# cross validation
sss = StratifiedShuffleSplit(y, 5, test_size=0.2, random_state=42)
for train_index, test_index in sss:
    docs_train, docs_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]

# feature extraction
count_vect = CountVectorizer(stop_words='English', min_df=3, max_df=0.90, ngram_range=(1,3))
X_CV = count_vect.fit_transform(docs_train)

tfidf_transformer = TfidfTransformer()
X_tfidf = tfidf_transformer.fit_transform(X_CV)

# Create the RFECV object
nb …
Run Code Online (Sandbox Code Playgroud)

machine-learning feature-selection scikit-learn cross-validation naivebayes

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

scikit-learn分类器中的分数函数位于何处?

在内部运行交叉验证时scikit-learn,所有分类器都有一个工厂函数score(),我可以轻松检查分类器的准确性,例如来自http://scikit-learn.org/stable/modules/cross_validation.html

>>> import numpy as np
>>> from sklearn import cross_validation
>>> from sklearn import datasets
>>> from sklearn import svm

>>> iris = datasets.load_iris()
>>> iris.data.shape, iris.target.shape
((150, 4), (150,))
>>> X_train, X_test, y_train, y_test = cross_validation.train_test_split(
...     iris.data, iris.target, test_size=0.4, random_state=0)

>>> X_train.shape, y_train.shape
((90, 4), (90,))
>>> X_test.shape, y_test.shape
((60, 4), (60,))

>>> clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
>>> clf.score(X_test, y_test)                           
0.96...
Run Code Online (Sandbox Code Playgroud)

在深入了解github repo之后scikit-learn,我仍然无法弄清楚函数的clf.score()功能在哪里.

有这个链接,但它不包含score(),https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/svm/classes.py …

python function machine-learning scikit-learn cross-validation

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

python scikit-learn 中 RFECV() 的分数

Scikit-learn 库支持递归特征消除(RFE)及其交叉验证版本(RFECV)。RFECV 对我来说非常有用,它选择小特征,但我想知道 RFE 的交叉验证是如何完成的。

RFE 是减少最不重要的特征的方法。所以我认为 RFECV 会计算交叉验证分数,删除特征 1 乘 1。

但是如果使用交叉验证,我认为每个折叠都会选择其他最不重要的特征,因为数据是不同的。有人知道如何在 RFECV 中删除功能吗?

python scikit-learn cross-validation

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

交叉验证后如何获得支持向量数

这是我使用非线性 SVM 进行数字分类的代码。我应用交叉验证方案来选择超参数cgamma。但是,GridSearch 返回的模型没有n_support_获取支持向量数量的属性。

from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.svm import SVC
from sklearn.cross_validation import ShuffleSplit


# Loading the Digits dataset
digits = datasets.load_digits()

# To apply an classifier on this data, we need to flatten the image, to
# turn the data in a (samples, feature) matrix:
n_samples = len(digits.images)
X = digits.images.reshape((n_samples, -1))
y = digits.target

# Split the dataset …
Run Code Online (Sandbox Code Playgroud)

machine-learning svm scikit-learn cross-validation

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

使用cross_val_score计算训练分数

cross_val_score用来计算回归指标的平均得分。这是一个小片段。

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score 

cross_val_score(LinearRegression(), X, y_reg, cv = 5)
Run Code Online (Sandbox Code Playgroud)

使用这个我得到了一系列的分数。我想知道验证集的分数(在上面的数组中返回)与训练集的分数有何不同,以了解我的模型是过拟合还是欠拟合。

有办法做到这一点的cross_val_score对象吗?

python scikit-learn cross-validation

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

如何在scikit-learn中使用k折交叉验证来获得每折的精确召回率?

假设我有这种情况:

from sklearn import model_selection
from sklearn.linear_model import LogisticRegression

kfold = model_selection.KFold(n_splits=5, random_state=7)
acc_per_fold = model_selection.cross_val_score(LogisticRegression(),
               x_inputs, np.ravel(y_response), cv=kfold, scoring='accuracy')
Run Code Online (Sandbox Code Playgroud)

我还能从中得到model_selection.cross_val_score()什么?有没有办法查看每个实际折痕内部发生的情况?我可以得到每折的精确召回率吗?预测值?如何使用训练有素的模型来对看不见的数据进行预测?

python classification machine-learning scikit-learn cross-validation

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

scikit中的交叉验证指标 - 了解每个数据拆分

请,我只需要为(X_test,y_test)数据的每次拆分明确地获得交叉验证统计信息.

所以,为了尝试这样做我做了:

kf = KFold(n_splits=n_splits)

X_train_tmp = []
y_train_tmp = []
X_test_tmp = []
y_test_tmp = []
mae_train_cv_list = []
mae_test_cv_list = []

for train_index, test_index in kf.split(X_train):

    for i in range(len(train_index)):
        X_train_tmp.append(X_train[train_index[i]])
        y_train_tmp.append(y_train[train_index[i]])

    for i in range(len(test_index)):
        X_test_tmp.append(X_train[test_index[i]])
        y_test_tmp.append(y_train[test_index[i]])

    model.fit(X_train_tmp, y_train_tmp) # FIT the model = SVR, NN, etc.

    mae_train_cv_list.append( mean_absolute_error(y_train_tmp, model.predict(X_train_tmp)) # MAE of the train part of the KFold.

    mae_test_cv_list.append( mean_absolute_error(y_test_tmp, model.predict(X_test_tmp)) ) # MAE of the test part of the KFold.

    X_train_tmp = []
    y_train_tmp = …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn cross-validation

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