Questions tagged «scikit-learn»

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

1
如何分割数据集以进行交叉验证,学习曲线和最终评估?
分割数据集的合适策略是什么? 我要求反馈对以下方法(不是像个别参数test_size或n_iter,但如果我用X,y,X_train,y_train,X_test,和y_test适当的,如果顺序是有道理的): (从scikit-learn文档扩展此示例) 1.加载数据集 from sklearn.datasets import load_digits digits = load_digits() X, y = digits.data, digits.target 2.分为训练和测试集(例如80/20) from sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) 3.选择估算器 from sklearn.svm import SVC estimator = SVC(kernel='linear') 4.选择交叉验证迭代器 from sklearn.cross_validation import ShuffleSplit cv = ShuffleSplit(X_train.shape[0], n_iter=10, test_size=0.2, random_state=0) 5.调整超参数 …

1
Scikit学习中的一键式与虚拟编码
编码分类变量有两种不同的方法。假设一个分类变量具有n个值。一键编码将其转换为n个变量,而伪编码将其转换为n-1个变量。如果我们有k个分类变量,每个分类变量都有n个值。一种热编码以kn个变量结束,而伪编码以kn-k个变量结束。 我听说对于一键编码,拦截会导致共线性问题,这会使模型不可靠。有人称其为“ 虚拟变量陷阱 ”。 我的问题: Scikit-learn的线性回归模型允许用户禁用拦截。因此,对于一键编码,我应该始终设置fit_intercept = False吗?对于虚拟编码,fit_intercept应该始终设置为True吗?我在网站上没有看到任何“警告”。 由于一键编码会生成更多变量,因此它是否比伪编码具有更大的自由度?

5
如何解释SVM功能权重?
我试图解释通过拟合线性SVM给出的可变权重。 (我正在使用scikit-learn): from sklearn import svm svm = svm.SVC(kernel='linear') svm.fit(features, labels) svm.coef_ 我在文档中找不到任何具体说明如何计算或解释这些权重的信息。 体重的迹象与上课有关系吗?


2
逻辑回归:Scikit学习与统计模型
我试图理解为什么这两个库的逻辑回归的输出会给出不同的结果。 我使用从加州大学洛杉矶分校idre数据集教程,预测admit基础上gre,gpa和rank。rank被视为分类变量,因此先将其rank_1删除后转换为虚拟变量。还添加了一个拦截列。 df = pd.read_csv("https://stats.idre.ucla.edu/stat/data/binary.csv") y, X = dmatrices('admit ~ gre + gpa + C(rank)', df, return_type = 'dataframe') X.head() > Intercept C(rank)[T.2] C(rank)[T.3] C(rank)[T.4] gre gpa 0 1 0 1 0 380 3.61 1 1 0 1 0 660 3.67 2 1 0 0 0 800 4.00 3 1 …

3
使用scikit-learn进行多项式回归
我正在尝试使用scikit-learn进行多项式回归。从我的理解中,多项式回归是线性回归的特例。我希望可以对scikit的广义线性模型之一进行参数化以适合高阶多项式,但是我认为没有选择的余地。 我确实设法使用了支持向量回归器和多核。这对我的数据子集效果很好,但是要适应较大的数据集需要花费很长时间,因此我仍然需要更快地找到某些东西(即使以某种精度进行交易)。 我在这里错过明显的东西吗?

1
sklearn分类报告中的数字是什么意思?
下面是从sklearn的sklearn.metrics.classification_report文档中提取的示例。 我不明白的是,为什么我认为班级是预测变量的标签,为什么每个班级都有f1-得分,精度和召回率值?我认为f1分数可以告诉您模型的整体准确性。另外,支持专栏告诉我们什么?我找不到任何相关信息。 print(classification_report(y_true, y_pred, target_names=target_names)) precision recall f1-score support class 0 0.50 1.00 0.67 1 class 1 0.00 0.00 0.00 1 class 2 1.00 0.67 0.80 3 avg / total 0.70 0.60 0.61 5

1
自由度可以是非整数吗?
当我使用GAM时,它给了我剩余的DF为(代码的最后一行)。这意味着什么?超越GAM示例,通常,自由度可以是非整数吗?26.626.626.6 > library(gam) > summary(gam(mpg~lo(wt),data=mtcars)) Call: gam(formula = mpg ~ lo(wt), data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -4.1470 -1.6217 -0.8971 1.2445 6.0516 (Dispersion Parameter for gaussian family taken to be 6.6717) Null Deviance: 1126.047 on 31 degrees of freedom Residual Deviance: 177.4662 on 26.6 degrees of …
27 r  degrees-of-freedom  gam  machine-learning  pca  lasso  probability  self-study  bootstrap  expected-value  regression  machine-learning  linear-model  probability  simulation  random-generation  machine-learning  distributions  svm  libsvm  classification  pca  multivariate-analysis  feature-selection  archaeology  r  regression  dataset  simulation  r  regression  time-series  forecasting  predictive-models  r  mean  sem  lavaan  machine-learning  regularization  regression  conv-neural-network  convolution  classification  deep-learning  conv-neural-network  regression  categorical-data  econometrics  r  confirmatory-factor  scale-invariance  self-study  unbiased-estimator  mse  regression  residuals  sampling  random-variable  sample  probability  random-variable  convergence  r  survival  weibull  references  autocorrelation  hypothesis-testing  distributions  correlation  regression  statistical-significance  regression-coefficients  univariate  categorical-data  chi-squared  regression  machine-learning  multiple-regression  categorical-data  linear-model  pca  factor-analysis  factor-rotation  classification  scikit-learn  logistic  p-value  regression  panel-data  multilevel-analysis  variance  bootstrap  bias  probability  r  distributions  interquartile  time-series  hypothesis-testing  normal-distribution  normality-assumption  kurtosis  arima  panel-data  stata  clustered-standard-errors  machine-learning  optimization  lasso  multivariate-analysis  ancova  machine-learning  cross-validation 

2
精确调用曲线(PR曲线的AUC)和平均精确度(AP)下的面积
平均精度(AP)是精度调用曲线(PR曲线的AUC)下的面积吗? 编辑: 这里有一些关于PR AUC和AP差异的评论。 AUC通过精度的梯形插值获得。另一种通常通常等效的指标是平均精度(AP),以info.ap返回。这是每次召回新的阳性样本时获得的精度平均值。如果精度是由常数段内插的,则它与AUC相同,并且是TREC最常使用的定义。 http://www.vlfeat.org/overview/plots-rank.html 此外,scikit-learn中的auc和average_precision_score结果不相同。这很奇怪,因为在文档中我们有: 根据预测分数计算平均精度(AP)该分数对应于精度调用曲线下的面积。 这是代码: # Compute Precision-Recall and plot curve precision, recall, thresholds = precision_recall_curve(y_test, clf.predict_proba(X_test)[:,1]) area = auc(recall, precision) print "Area Under PR Curve(AP): %0.2f" % area #should be same as AP? print 'AP', average_precision_score(y_test, y_pred, average='weighted') print 'AP', average_precision_score(y_test, y_pred, average='macro') print 'AP', …

4
使用scikit-learn(或任何其他python框架)集成不同类型的回归器
我正在尝试解决回归任务。我发现3个模型对于不同的数据子集运行良好:LassoLARS,SVR和Gradient Tree Boosting。我注意到,当我使用所有这三个模型进行预测,然后制作“真实输出”和这3个模型的输出的表格时,我看到每次至少有一个模型确实接近真实输出,尽管另外两个可能相对较远。 当我计算出最小可能的误差时(如果我从每个测试示例的“最佳”预测变量中获取预测结果),我得到的误差要比任何模型的误差都要小得多。因此,我考虑过尝试将这3种不同模型的预测结合到某种整体中。问题是,如何正确执行此操作?我的所有3个模型都是使用scikit-learn构建和调整的,是否提供了某种可用于将模型打包到集合中的方法?这里的问题是,我不想只是对所有三个模型的平均预测,我想通过加权来做到这一点,应该根据特定示例的属性确定加权。 即使scikit-learn不提供此类功能,如果有人知道如何解决该任务-为数据中的每个示例计算每种模型的权重,也将是一件很好的事情。我认为这可以通过在所有这三个模型之上构建一个单独的回归器来完成,该回归器将尝试为这三个模型中的每个模型输出最佳权重,但是我不确定这是否是最佳方法。

2
为什么Python的scikit-learn LDA无法正常工作,它如何通过SVD计算LDA?
我使用来自scikit-learn机器学习库(Python)的线性判别分析(LDA)进行降维,并对结果有些好奇。我现在想知道LDA scikit-learn正在做什么,以便使结果看起来不同于例如手动方法或R中完成的LDA。如果有人可以在这里给我一些见解,那将是非常不错的。 基本上最令人担忧的是,该图scikit-plot显示了两个变量之间的相关性,其中应该有一个相关性0。 为了进行测试,我使用了虹膜数据集,前两个线性判别式如下所示: IMG-1。通过scikit-learn进行LDA 这基本上与我在scikit-learn 文档中找到的结果一致。 现在,我逐步进行了LDA,并得到了不同的预测。我尝试了不同的方法,以了解发生了什么事情: IMG-2。基于原始数据的LDA(无中心,无标准化) 如果我先对数据进行标准化(z分数归一化;单位方差),这将是分步方法。我只用均值中心进行了相同的操作,这应该导致相同的相对投影图像(并且确实如此)。 IMG-3。均值居中或标准化后的逐步LDA IMG-4。R中的LDA(默认设置) 我将数据居中的IMG-3中的LDA(这将是首选方法)看起来也与我在R中执行LDA的人在帖子中找到的LDA完全相同 参考代码 我不想将所有代码粘贴到这里,但是我将其作为IPython笔记本上传到这里,该笔记本分为我用于LDA投影的几个步骤(请参见下文)。 步骤1:计算d维平均向量mi=1ni∑x∈Dinxkmi=1ni∑x∈Dinxk\mathbf m_i = \frac{1}{n_i} \sum\limits_{\mathbf x \in D_i}^n \; \mathbf x_k 步骤2:计算散点矩阵 2.1类内散布矩阵由以下等式计算:SWSWS_W SW=∑i=1cSi=∑i=1c∑x∈Din(x−mi)(x−mi)TSW=∑i=1cSi=∑i=1c∑x∈Din(x−mi)(x−mi)TS_W = \sum\limits_{i=1}^{c} S_i = \sum\limits_{i=1}^{c} \sum\limits_{\mathbf x \in D_i}^n (\mathbf x - \mathbf m_i)\;(\mathbf x - \mathbf m_i)^T 2.2类间散布矩阵由以下公式计算: 其中是整体平均值。SBSBS_B SB=∑i=1cni(mi−m)(mi−m)TSB=∑i=1cni(mi−m)(mi−m)TS_B …

2
Scikit学习中的平均绝对百分比误差(MAPE)
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为交叉验证的主题。 2年前关闭。 我们如何使用Python和scikit-learn计算预测的平均绝对百分比误差(MAPE)? 从文档中,我们只有以下4个用于回归的度量函数: metrics.explained_variance_score(y_true,y_pred) metrics.mean_absolute_error(y_true,y_pred) metrics.mean_squared_error(y_true,y_pred) metrics.r2_score(y_true,y_pred)

5
过度拟合:没有银弹吗?
我的理解是,即使遵循正确的交叉验证和模型选择程序,如果人们对模型的搜索足够困难,就会出现过度拟合的情况,除非对模型的复杂性,期限施加了限制。此外,很多时候人们尝试从数据中学习对模型复杂性的惩罚,这会破坏他们可以提供的保护。 我的问题是:以上陈述有多少真相? 我经常听到ML的实践者说:“ 在我的公司/实验室,我们总是尝试使用每种可用的模型(例如,从caret或scikit-learn之类的库中获得),看看哪种模型最合适。” 我经常争论说,即使他们认真对待交叉验证并以他们想要的任何方式保留保留集,这种方法也很容易过拟合。此外,他们搜索的难度越大,就越容易适应。换句话说,过度优化是一个真正的问题,没有启发式方法可以帮助您系统地与之抗衡。我这样想是不是错了?

2
如何在多标签分类器上使用scikit-learn的交叉验证功能
我正在一个5个类的数据集上测试不同的分类器,每个实例可以属于一个或多个这些类,因此我正在使用scikit-learn的多标签分类器sklearn.multiclass.OneVsRestClassifier。现在,我想使用进行交叉验证sklearn.cross_validation.StratifiedKFold。这将产生以下错误: Traceback (most recent call last): File "mlfromcsv.py", line 93, in <module> main() File "mlfromcsv.py", line 77, in main test_classifier_multilabel(svm.LinearSVC(), X, Y, 'Linear Support Vector Machine') File "mlfromcsv.py", line 44, in test_classifier_multilabel scores = cross_validation.cross_val_score(clf_ml, X, Y_list, cv=cv, score_func=metrics.precision_recall_fscore_support, n_jobs=jobs) File "/usr/lib/pymodules/python2.7/sklearn/cross_validation.py", line 1046, in cross_val_score X, y = check_arrays(X, …

2
numpy和sklearn中的PCA产生不同的结果
我误会了吗。这是我的代码 使用sklearn import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from sklearn import decomposition from sklearn import datasets from sklearn.preprocessing import StandardScaler pca = decomposition.PCA(n_components=3) x = np.array([ [0.387,4878, 5.42], [0.723,12104,5.25], [1,12756,5.52], [1.524,6787,3.94], ]) pca.fit_transform(x) 输出: array([[ -4.25324997e+03, -8.41288672e-01, -8.37858943e-03], [ 2.97275001e+03, -1.25977271e-01, 1.82476780e-01], [ 3.62475003e+03, …

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.