Questions tagged «scikit-learn»

用于Python的机器学习库。对于(a)涉及scikit-learn或该问题的关键部分或预期答案的任何主题问题,请使用此标签;&(b)不仅仅是关于如何使用scikit-learn。

2
为什么scikit-learn引导程序功能会对测试集重新采样?
当使用自举进行模型评估时,我一直认为直接购买的样本可以直接用作测试集。但是,对于已弃用的 scikit-learnBootstrap方法来说似乎不是这种情况,该方法似乎是通过从图纸中提取测试数据来构建测试集,并替换了现成的数据子集。这背后的统计原因是什么?在某些特定情况下,该技术比仅对袋外样本进行评估更好,反之亦然吗?

2
嵌套交叉验证的使用
Scikit Learn的“模型选择”页面提到了嵌套交叉验证的使用: >>> clf = GridSearchCV(estimator=svc, param_grid=dict(gamma=gammas), ... n_jobs=-1) >>> cross_validation.cross_val_score(clf, X_digits, y_digits) 并行执行两个交叉验证循环:一个由GridSearchCV估计器设置gamma,另一个由cross_val_score来测量估计器的预测性能。所得分数是对新数据的预测分数的无偏估计。 据我了解,clf.fit将原生使用交叉验证来确定最佳伽玛值。在那种情况下,为什么我们需要使用上面给出的嵌套cv?该说明提到嵌套的cv会生成预测分数的“无偏估计”。难道不是clf.fit吗? 另外,我无法从该cross_validation.cross_val_score(clf, X_digits, y_digits)过程中获得clf最佳估计。您能告诉我该怎么做吗?

2
决策阈值是逻辑回归中的超参数吗?
通过使用由模型生成的类成员资格概率的阈值来确定(二进制)逻辑回归的预测类。据我了解,默认情况下通常使用0.5。 但是改变阈值将改变预测的分类。这是否意味着阈值是超参数?如果是这样,为什么(例如)为什么无法使用scikit-learn的GridSearchCV方法轻松地在阈值网格中进行搜索(就像对正则化参数所做的那样C)。

2
使用BIC估算KMEANS中的k个数
我目前正在尝试为我的玩具数据集(ofc iris(:))计算BIC。我想重现如图所示的结果(图5)。该论文也是我BIC公式的来源。 我对此有2个问题: 符号: ninin_i我 =群集的元素数iii CiCiC_i我 =群集中心坐标iii xjxjx_j我 =分配给群集数据点iii mmm =簇数 1)方程式中定义的方差 (2): ∑i=1ni−m∑j=1ni∥xj−Ci∥2∑i=1ni−m∑j=1ni‖xj−Ci‖2 \sum_i = \frac{1}{n_i-m}\sum_{j=1}^{n_i}\Vert x_j - C_i \Vert^2 据我所知,这是有问题的,并且当簇mmm大于簇中的元素时,方差可能为负。它是否正确? 2)我只是无法使我的代码能够计算出正确的BIC。希望没有错误,但是如果有人可以检查,将不胜感激。整个方程可以在等式中找到。(5)在论文中。我现在正在使用scikit学习所有内容(以证明关键字:P合理)。 from sklearn import cluster from scipy.spatial import distance import sklearn.datasets from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import numpy as np def compute_bic(kmeans,X): """ Computes …

1
如何修复LogisticRegressionCV中的不收敛
我正在使用scikit-learn对一组数据执行交叉验证并进行交叉验证(约有14个参数,且具有> 7000个标准化观测值)。我也有一个目标分类器,其值为1或0。 我的问题是,无论使用什么求解器,我都会不断收到收敛警告... model1 = linear_model.LogisticRegressionCV(cv=10,verbose=1,n_jobs=-1,scoring='roc_auc',solver='newton-cg',penalty='l2') /home/b/anaconda/lib/python2.7/site-packages/scipy/optimize/linesearch.py:285: LineSearchWarning: The line search algorithm did not converge warn('The line search algorithm did not converge', LineSearchWarning) /home/b/anaconda/lib/python2.7/site-packages/sklearn/utils/optimize.py:193: UserWarning: Line Search failed model2 = linear_model.LogisticRegressionCV(cv=10,verbose=1,n_jobs=-1,scoring='roc_auc',solver='sag',penalty='l2') max_iter reached after 2 seconds max_iter reached after 2 seconds max_iter reached after 2 seconds max_iter reached after 2 …

5
如何在大量数据点中进行值的插补?
我的数据集非常大,大约缺少5%的随机值。这些变量相互关联。以下示例R数据集只是一个具有虚拟相关数据的玩具示例。 set.seed(123) # matrix of X variable xmat <- matrix(sample(-1:1, 2000000, replace = TRUE), ncol = 10000) colnames(xmat) <- paste ("M", 1:10000, sep ="") rownames(xmat) <- paste("sample", 1:200, sep = "") #M variables are correlated N <- 2000000*0.05 # 5% random missing values inds <- round ( runif(N, 1, length(xmat)) …
12 r  random-forest  missing-data  data-imputation  multiple-imputation  large-data  definition  moving-window  self-study  categorical-data  econometrics  standard-error  regression-coefficients  normal-distribution  pdf  lognormal  regression  python  scikit-learn  interpolation  r  self-study  poisson-distribution  chi-squared  matlab  matrix  r  modeling  multinomial  mlogit  choice  monte-carlo  indicator-function  r  aic  garch  likelihood  r  regression  repeated-measures  simulation  multilevel-analysis  chi-squared  expected-value  multinomial  yates-correction  classification  regression  self-study  repeated-measures  references  residuals  confidence-interval  bootstrap  normality-assumption  resampling  entropy  cauchy  clustering  k-means  r  clustering  categorical-data  continuous-data  r  hypothesis-testing  nonparametric  probability  bayesian  pdf  distributions  exponential  repeated-measures  random-effects-model  non-independent  regression  error  regression-to-the-mean  correlation  group-differences  post-hoc  neural-networks  r  time-series  t-test  p-value  normalization  probability  moments  mgf  time-series  model  seasonality  r  anova  generalized-linear-model  proportion  percentage  nonparametric  ranks  weighted-regression  variogram  classification  neural-networks  fuzzy  variance  dimensionality-reduction  confidence-interval  proportion  z-test  r  self-study  pdf 

1
PCA和TruncatedSVD的scikit-learn实现之间的区别
我了解主成分分析和奇异值分解在代数/精确水平之间的关系。我的问题是关于scikit-learn的实现。 该文档说:“ [TruncatedSVD]与PCA非常相似,但是直接对样本矢量进行运算,而不是对协方差矩阵进行运算。 ”,这将反映两种方法之间的代数差异。但是,后来又说:“ 此估算器[TruncatedSVD]支持两种算法:快速随机SVD求解器,和“天真”算法,该算法使用ARPACK作为(X * XT)或(XT * X)上的特征求解器,高效。关于PCA,它表示:“使用数据的奇异值分解来投影以减少线性维数……”。PCA实施支持相同的两种算法(随机和ARPACK)求解器以及另一种算法LAPACK。查看代码,我可以看到PCA和TruncatedSVD中的ARPACK和LAPACK都对样本数据X进行了svd,ARPACK能够处理稀疏矩阵(使用svds)。 因此,除了具有不同的属性和方法之外,PCA还可以使用LAPACK进行精确的全奇异值分解,PCA和TruncatedSVD scikit-learn实现似乎是完全相同的算法。第一个问题:这是正确的吗? 第二个问题:即使LAPACK和ARPACK使用scipy.linalg.svd(X)和scipy.linalg.svds(X)作为X样本矩阵,它们也会计算或X的奇异值分解或特征分解∗ X T内部。虽然“随机化”的求解器不需要计算乘积。(这与数值稳定性有关,请参阅为什么通过数据的SVD对数据进行PCA?)。这个对吗?XT∗XXT∗XX^T*XX∗XTX∗XTX*X^T 相关代码:PCA行415。截断SVD行137。
12 pca  scikit-learn  svd  scipy 

1
Scikit预报_proba输出解释
我正在使用python中的scikit-learn库。在下面的代码中,我正在预测概率,但是我不知道如何读取输出。 测试数据 from sklearn.ensemble import RandomForestClassifier as RF from sklearn import cross_validation X = np.array([[5,5,5,5],[10,10,10,10],[1,1,1,1],[6,6,6,6],[13,13,13,13],[2,2,2,2]]) y = np.array([0,1,1,0,1,2]) 分割数据集 X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.5, random_state=0) 计算概率 clf = RF() clf.fit(X_train,y_train) pred_pro = clf.predict_proba(X_test) print pred_pro 输出 [[ 1. 0.] [ 1. 0.] [ 0. 1.]] X_test列表包含3个数组(我有6个样本,test_size = …

2
可以使用Poisson,Gamma或Tweedie分布作为错误分布族来评估Python / scikit-learn中的GLM吗?
试图学习一些Python和Sklearn,但是对于我的工作,我需要运行回归,使用Poisson,Gamma尤其是Tweedie系列的误差分布。 我没有在文档中看到关于它们的任何内容,但是它们在R发行版的几个部分中,因此我想知道是否有人在任何地方看到了Python的实现。如果您可以将我引向Tweedie发行版的SGD实现,那就太酷了!


1
内核近似的Nystroem方法
我一直在阅读有关低阶内核近似的Nyström方法。该方法在scikit-learn [1]中实现,作为一种将数据样本投影到内核特征映射的低秩近似的方法。 据我所知,给定训练集和一个核函数,它通过将SVD应用于来生成核矩阵的低秩近似。和。{xi}ni=1{xi}i=1n\{x_i\}_{i=1}^nn×nn×nn \times nKKKWWWCCC K=[WK21KT21K22]K=[WK21TK21K22]K = \left [ \begin{array}{cc} W & K_{21}^T \\ K_{21} & K_{22} \end{array} \right ] C=[WK21]C=[WK21]C = \left [\begin{array}{cc} W \\ K_{21} \end{array}\right ],W∈Rl×lW∈Rl×lW \in \mathbb{R}^{l\times l} 但是,我不了解如何使用内核矩阵的低秩近似将新样本投影到近似的内核特征空间。我发现的论文(例如[2])并没有太大帮助,因为它们几乎没有说教性。 另外,我对这种方法在训练和测试阶段的计算复杂性感到好奇。 [1] http://scikit-learn.org/stable/modules/kernel_approximation.html#nystroem-kernel-approx [2] http://www.jmlr.org/papers/volume13/kumar12a/kumar12a.pdf

1
为什么选择K会降低我的交叉验证分数?
在使用scikit-learn中的Boston Housing数据集和RandomForestRegressor(带有默认参数)时,我注意到了一些奇怪的事情:随着将折叠数增加到10以上,交叉验证平均得分降低了。我的交叉验证策略如下: cv_met = ShuffleSplit(n_splits=k, test_size=1/k) scores = cross_val_score(est, X, y, cv=cv_met) ... num_cvs变化多端。我设置test_size为1/num_cvs镜像k倍CV的训练/测试拆分大小行为。基本上,我想要类似k-fold CV的东西,但是我也需要随机性(因此ShuffleSplit)。 将该试验重复几次,然后绘制平均得分和标准差。 (请注意,的大小k由圆的面积表示;标准偏差在Y轴上。) 一致地,增加k(从2到44)会导致得分短暂增加,然后k随着进一步增加(超过10倍)而稳步下降!如果有的话,我希望更多的培训数据会导致分数略有提高! 更新资料 更改评分标准以表示绝对错误会导致我预期的行为:评分会随着K折CV中的折叠数增加而提高,而不是接近0(默认值为' r2 ')。问题仍然是,为什么默认得分指标导致均值和STD指标的性能下降,而折叠次数却越来越多。

1
scikit-learn Python中的ElasticNet与R中的Glmnet之间的区别
是否有人尝试验证在同一数据集上的ElasticNetPython和glmnetR 中的scikit-learn中的Elastic Net模型拟合是否产生相同的算术结果?我一直在尝试使用参数的许多组合(因为这两个函数在传递给参数的默认值方面有所不同),并且还对数据进行了缩放,但是在这两种语言之间似乎并没有产生相同的模型。有人遇到过同样的问题吗?

2
使用R的glmnet的Ridge回归和Python的scikit-learn有什么区别?
我正在阅读James,Witten,Hastie,Tibshirani(2013)写的《 R语言中的统计学习及其应用入门》一书中关于Ridge回归/套索的LAB部分§6.6 。 更具体地说,我尝试将scikit-learn Ridge模型应用于R包“ ISLR”中的“ Hitters”数据集。我已经创建了与R代码所示相同的一组功能。但是,我无法接近glmnet()模型的结果。我选择了一个L2调整参数进行比较。(scikit-learn中的“ alpha”参数)。 蟒蛇: regr = Ridge(alpha=11498) regr.fit(X, y) http://nbviewer.ipython.org/github/JWarmenhoven/ISL-python/blob/master/Notebooks/Chapter%206.ipynb R: 请注意,alpha=0in 参数glmnet()表示应采用L2惩罚(Ridge回归)。文档警告不要为输入单个值lambda,但结果与使用向量的ISL中的结果相同。 ridge.mod <- glmnet(x,y,alpha=0,lambda=11498) 是什么导致差异? 编辑:从R中的惩罚包 使用时penalized(),系数与scikit-learn相同。 ridge.mod2 <- penalized(y,x,lambda2=11498) 也许问题可能还会是:“ 进行Ridge回归glmnet()与penalized()进行回归时有什么区别? 用于R包glmnet中的实际Fortran代码的新python包装器 https://github.com/civisanalytics/python-glmnet

1
卡方测试可用于哪种特征选择?
在这里,我问其他人在监督学习中通常使用卡方检验来进行特征选择和结果选择的做法。如果我理解正确,他们是否测试每个功能和结果之间的独立性,并比较每个功能的测试之间的p值? 在http://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test中, 皮尔逊卡方检验是一种统计检验,应用于分类数据集,以评估两组之间观察到的差异是偶然产生的可能性。 ... 独立性测试评估列联表中表示的关于两个变量的成对观测值是否彼此独立(例如,轮询来自不同国籍的人的答复,以查看其国籍是否与答复相关)。 那么,由测试测试其独立性的两个变量是否应该是分类的或离散的(除分类之外允许排序),而不是连续的? 从http://scikit-learn.org/stable/modules/feature_selection.html,他们 执行χ2χ2\chi^2测试到虹膜数据集到只检索最佳的两个特征。 在虹膜数据集中,所有特征都是数字值和连续值,结果是类标签(分类)。卡方独立性检验如何应用于连续要素? 要将卡方独立性检验应用于数据集,我们是否首先通过装仓(即先将要素的连续域离散化为仓,然后将其替换为仓中的要素值)来将连续要素转换为离散要素)? 几个容器中的出现形成多项式特征(每个容器中都发生或不发生),因此卡方独立性检验可以应用于它们,对吗? 顺便说一句,我们可以将卡方独立性检验应用于任何特征和结果吗? 对于结果部分,我们不仅可以通过卡方独立性检验,通过对连续结果进行分箱来选择用于分类的特征,还可以为回归选择特征,对吗? scikit学习网站还说 计算每个非负要素与类之间的卡方统计量。 此分数可用于从X中选择测试卡方统计量具有最高值的n_features特征,该特征必须仅包含非负特征,例如布尔值或频率 (例如,文档分类中的术语计数),相对于类。 为什么测试需要非阴性功能? 如果这些特征没有符号,但是是分类的或离散的,则测试仍然可以应用到它们吗?(请参阅我的第1部分) 如果特征是负的,我们总是可以对它们的域进行归类,并用它们的出现替换它们(就像我对将测试应用于虹膜数据集所猜测的那样,请参阅第2部分),对吗? 注意:我猜Scikit Learn遵循一般原则,这就是我在这里要的。如果没有,那还是可以的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.