Questions tagged «scikit-learn»

scikit-learn是一个用于Python的机器学习库,它为数据分析和数据挖掘提供了简单有效的工具,重点是机器学习。每个人都可以使用它,并且可以在各种情况下重复使用。它基于NumPy和SciPy。该项目是开源的并且可以商业使用(BSD许可证)。

3
Python-sklearn.pipeline.Pipeline到底是什么?
我不知道如何sklearn.pipeline.Pipeline工作。 在文档中有一些解释。例如,它们的意思是: 带有最终估算器的变换管线。 为了使我的问题更清楚,什么是steps?它们如何运作? 编辑 多亏了答案,我可以使我的问题更清楚: 当我调用管道并通过时,需要两个转换器和一个估计器,例如: pipln = Pipeline([("trsfm1",transformer_1), ("trsfm2",transformer_2), ("estmtr",estimator)]) 我叫这个怎么办? pipln.fit() OR pipln.fit_transform() 我不知道估算器如何成为变压器以及如何装配变压器。

13
从sklearn导入时出现ImportError:无法导入名称check_build
尝试从sklearn导入时出现以下错误: >>> from sklearn import svm Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> from sklearn import svm File "C:\Python27\lib\site-packages\sklearn\__init__.py", line 16, in <module> from . import check_build ImportError: cannot import name check_build 我正在使用python 2.7,scipy-0.12.0b1 superpack,numpy-1.6.0 superpack,scikit-learn-0.11我有一台Windows 7机器 我已经检查了几个有关此问题的答案,但没有一个给出解决此错误的方法。

8
当期望一维数组时,传递了列向量y
我需要适应RandomForestRegressor的sklearn.ensemble。 forest = ensemble.RandomForestRegressor(**RF_tuned_parameters) model = forest.fit(train_fold, train_y) yhat = model.predict(test_fold) 该代码始终有效,直到我对数据进行了一些预处理(train_y)。错误消息显示: DataConversionWarning:当期望1d数组时,传递了列向量y。请将y的形状更改为(n_samples,),例如使用ravel()。 模型= forest.fit(train_fold,train_y) 以前train_y是一个Series,现在是numpy数组(它是列向量)。如果我应用train_y.ravel(),则它成为行向量,并且没有错误消息出现,通过预测步骤需要很长时间(实际上,它永远不会完成...)。 在RandomForestRegressor我发现的文档中,train_y应将其定义为“ y : array-like, shape = [n_samples] or [n_samples, n_outputs] 如何解决此问题的想法?”。

2
scikit-learn中的class_weight参数如何工作?
我在理解class_weightscikit-learn的Logistic回归中的参数如何运行时遇到很多麻烦。 情况 我想使用逻辑回归对非常不平衡的数据集进行二进制分类。这些类别分别标记为0(负)和1(正),观察到的数据比例约为19:1,大多数样本的结果均为负。 第一次尝试:手动准备训练数据 我将我拥有的数据分为不相交的数据集进行训练和测试(大约80/20)。然后,我手工对训练数据进行了随机采样,得到的训练数据比例与19:1不同。从2:1-> 16:1。 然后,我对这些不同的训练数据子集进行了逻辑回归训练,并根据不同的训练比例绘制了召回率(= TP /(TP + FN))。当然,召回率是根据不连续的TEST样本(观察到的比例为19:1)计算的。注意,尽管我在不同的训练数据上训练了不同的模型,但我在相同(不相交)的测试数据上计算了所有模型的召回率。 结果符合预期:以2:1的训练比例召回率约为60%,到16:1时召回率很快下降。比例为2:1-> 6:1,召回率在5%以上。 第二次尝试:网格搜索 接下来,我想测试不同的正则化参数,因此我使用了GridSearchCV并制作了一个包含C参数值和参数值的网格class_weight。要将我的n:m否定:肯定的训练样本比例转换成class_weight我的词典语言,我认为我只是指定了几个字典,如下所示: { 0:0.67, 1:0.33 } #expected 2:1 { 0:0.75, 1:0.25 } #expected 3:1 { 0:0.8, 1:0.2 } #expected 4:1 并且我还包括None和auto。 这次的结果是完全错误的。class_weight除了的每个值,我所有的召回都很小(<0.05)auto。因此,我只能假设我对如何设置class_weight字典的理解是错误的。有趣的是,class_weight对于的所有值,网格搜索中“自动” 的值约为59%C,我猜想它与1:1平衡吗? 我的问题 您如何正确使用class_weight训练数据与实际提供的数据取得不同的平衡?具体来说,我传递给哪个字典class_weight来使用n:m比例的负数:正数训练样本? 如果您将各种class_weight字典传递给GridSearchCV,则在交叉验证期间,它将根据字典重新平衡训练折叠数据,但使用真实给定的样本比例来计算我在测试折叠上的得分函数吗?这很关键,因为任何度量标准仅对来自观察到的比例的数据有用。 就比例而言,auto价值是class_weight什么?我阅读了文档,并假设“与数据频率成反比地平衡数据”只是意味着将其设为1:1。这样对吗?如果没有,有人可以澄清吗?


5
使用Pandas Data Frame运行OLS回归
我有一个pandas数据框,我希望能够从B和C列中的值预测A列的值。这是一个玩具示例: import pandas as pd df = pd.DataFrame({"A": [10,20,30,40,50], "B": [20, 30, 10, 40, 50], "C": [32, 234, 23, 23, 42523]}) 理想情况下,我会有类似的东西,ols(A ~ B + C, data = df)但是当我查看算法库中的示例时,看起来好像scikit-learn是用行而不是列的列表将数据提供给模型。这将要求我将数据重新格式化为列表内的列表,这似乎首先使使用熊猫的目的遭到了破坏。在熊猫数据框中的数据上运行OLS回归(或更通用的任何机器学习算法)的最有效方法是什么?

4
如何使用scikit learning计算多类案例的精度,召回率,准确性和f1-得分?
我正在研究情绪分析问题,数据看起来像这样: label instances 5 1190 4 838 3 239 1 204 2 127 所以,我的数据是不平衡的,因为1190 instances标有5。对于使用scikit的SVC进行的分类Im 。问题是我不知道如何以正确的方式平衡我的数据,以便准确计算多类案例的精度,查全率,准确性和f1得分。因此,我尝试了以下方法: 第一: wclf = SVC(kernel='linear', C= 1, class_weight={1: 10}) wclf.fit(X, y) weighted_prediction = wclf.predict(X_test) print 'Accuracy:', accuracy_score(y_test, weighted_prediction) print 'F1 score:', f1_score(y_test, weighted_prediction,average='weighted') print 'Recall:', recall_score(y_test, weighted_prediction, average='weighted') print 'Precision:', precision_score(y_test, weighted_prediction, average='weighted') print '\n …



10
sklearn:调用LinearRegression.fit()时发现数组的样本数不一致
只是想做一个简单的线性回归,但我对此错误感到困惑: regr = LinearRegression() regr.fit(df2.iloc[1:1000, 5].values, df2.iloc[1:1000, 2].values) 产生: ValueError: Found arrays with inconsistent numbers of samples: [ 1 999] 这些选择必须具有相同的尺寸,并且它们应该是numpy数组,所以我缺少什么?
102 scikit-learn 

7
如何检查scikit学习安装了哪个版本的nltk?
在shell脚本中,我正在检查是否已安装此软件包,如果未安装,请先安装它。因此,使用shell脚本: import nltk echo nltk.__version__ 但它会在以下位置停止shell脚本 import在行 在Linux终端中尝试以这种方式查看: which nltk 没有任何东西以为已安装。 还有没有其他方法可以在shell脚本中验证此软件包的安装,如果未安装,请同时安装。

3
scikit中的RandomForestClassifier与ExtraTreesClassifier学习
谁能解释scikit learning中RandomForestClassifier和ExtraTreesClassifier之间的区别。我花了很多时间阅读本文: P. Geurts,D。Ernst。和L. Wehenkel,“极随机树”,Machine Learning,63(1),3-42,2006 看来这些是ET的区别: 1)在拆分时选择变量时,将从整个训练集中抽取样本,而不是从训练集中的引导样本中抽取样本。 2)每次从样本中的值范围中完全随机选择分割。 这两件事的结果是更多的“叶子”。

5
方法“ train_test_split”中的参数“ stratify”(scikit学习)
我正在尝试train_test_split从scikit Learn软件包中使用,但是我在使用parameter时遇到了麻烦stratify。以下是代码: from sklearn import cross_validation, datasets X = iris.data[:,:2] y = iris.target cross_validation.train_test_split(X,y,stratify=y) 但是,我一直遇到以下问题: raise TypeError("Invalid parameters passed: %s" % str(options)) TypeError: Invalid parameters passed: {'stratify': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …


7
scikit-learn中的分层训练/测试拆分
我需要将数据分为训练集(75%)和测试集(25%)。我目前使用以下代码进行操作: X, Xt, userInfo, userInfo_train = sklearn.cross_validation.train_test_split(X, userInfo) 但是,我想对训练数据集进行分层。我怎么做?我一直在研究该StratifiedKFold方法,但不允许我指定75%/ 25%的划分,而是仅对训练数据集进行分层。

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.