问题标签 [scikit-learn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2139 浏览

python - 将 scikits.learn.hmm.GaussianHMM 拟合到可变长度的训练序列

我想让 scikits.learn.hmm.GaussianHMM 适合不同长度的训练序列。然而,拟合方法通过执行来防止使用不同长度的序列

它仅适用于形状相同的数组列表。有人对如何进行有提示吗?

0 投票
8 回答
101333 浏览

python - 是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

0 投票
1 回答
2181 浏览

python - Scikits-learn:将自定义词汇与 Pipeline 一起使用

在我的 scikits-learn 管道中,我想将自定义词汇表传递给 CountVectorizer():

但是,据我所知,当我打电话时

Pipeline 使用 CountVectorizer() 的 fit_transform() 方法,忽略 myvocab。如何修改我的管道以使用 myvocab?谢谢!

0 投票
2 回答
1648 浏览

python - Scikit-learn 是否发布了 python GIL?

我想在不同的线程中训练多个一类 SVM。有人知道 scikit 的 SVM 是否发布了 GIL?我在网上没有找到任何答案。

谢谢

0 投票
1 回答
15917 浏览

python - Python scikits - 缓冲区的维数错误(预期为 1,得到 2)

我正在尝试这个代码片段。我正在使用 scikits.learn 0.8.1

我得到这个-->

这里有什么问题?

0 投票
0 回答
1459 浏览

python - Scikits.learn 0.8 predict_proba() 只输出统一概率

我正在使用漂亮的 Python scikits.learn包来训练一些分类器,以使用定向梯度直方图功能进行基于部分的人脸识别。我已经成功地训练了一个线性 SVM 来识别一个特定的面部部分,但是我在这个predict_proba()函数上遇到了奇怪的问题。

我使用以下培训代码:

但是当我运行时predict_proba([test_vector]),我只看到[[ 0.5 0.5 ]]输出,即我的两个二进制类之间的统一概率。

不过,奇怪的是,当我只使用该predict()函数时,它的性能相当不错,当然不能只是简单地为所有事物分配统一的概率。在测试图像上,我在正确的面部部分周围得到了更密集的“1”分类,然后是场景周围其他地方的一些预期的嘈杂“1”分类,但正如预期的那样,主要是所有“0”分类。

什么可能导致此故障predict_proba()

0 投票
1 回答
6345 浏览

python - scikit-learn 中的 10*10 折交叉验证?

scikit-learn 中 10*10fold CV 的正确方法?(通过将 random_state 更改为 10 个不同的数字)

因为我没有在or中找到任何random_state参数,并且对于相同的数据,分隔符总是相同的。Stratified K-FoldK-FoldK-Fold

如果ShuffleSplit是正确的,一个问题是它被提及

注意:与其他交叉验证策略相反,随机拆分并不能保证所有折叠都不同,尽管这对于相当大的数据集仍然很有可能

10*10 倍 CV 总是这样吗?

0 投票
1 回答
3533 浏览

python - F1 小于 Scikit-learn 中的精度和召回率

我正在做多类分类,类别不平衡。

我注意到 f1 总是小于准确率和召回率的直接调和平均值,在某些情况下,f1 甚至小于准确率和召回率。

仅供参考,我要求metrics.precision_score(y,pred)精确等等。

我知道微观/宏观平均值的差异,并通过使用来自precision_recall_fscore_support().

不确定这是由于使用了宏观平均还是其他原因?


更新详细结果如下:

n_samples:75,n_features:250

MultinomialNB(alpha=0.01, fit_prior=True)

2倍简历:

第一次运行:

第二次运行:

总体:


来自Scholarpedia的关于微观/宏观平均的定义:

在多标签分类中,计算跨类别总分的最简单方法是对所有二元任务的分数进行平均。结果分数称为宏观平均召回率、精度、F1 等。另一种平均方法是首先对所有类别的 TP、FP、TN、FN 和 N 求和,然后计算上述每个指标。结果分数称为微平均。宏观平均对每个类别赋予相同的权重,并且通常由系统在稀有类别(大多数)上的表现主导,呈幂律分布。微平均为每个文档赋予相同的权重,并且通常由系统在最常见类别上的性能支配。


这是 Github 中的一个当前开放问题,#83。


以下示例演示了微观、宏观和加权(Scikit-learn 中的当前)平均可能有何不同:

混淆矩阵:

上面的F5是F0.5的简写...

0 投票
1 回答
2437 浏览

python - 如何从 scikits.learn 分类器中提取信息然后在 C 代码中使用

我已经在 Python 中使用 scikits.learn 训练了一堆 RBF SVM,然后对结果进行了腌制。这些是用于图像处理任务的,我想做的一件事是在一些测试图像的每个像素上运行每个分类器。也就是说,从以像素 (i,j) 为中心的窗口中提取特征向量,在该特征向量上运行每个分类器,然后移动到下一个像素并重复。这对于 Python 来说太慢了。

澄清:当我说“这太慢了......”时,我的意思是即使 scikits.learn 使用的 Libsvm 底层代码也太慢了。我实际上正在为 GPU 编写一个手动决策函数,因此每个像素的分类是并行发生的。

我是否可以使用 Pickle 加载分类器,然后获取某种描述如何从特征向量计算决策的属性,然后将该信息传递给我自己的 C 代码?在线性 SVM 的情况下,我可以只提取权重向量和偏置向量,并将它们作为输入添加到 C 函数中。但是对于 RBF 分类器来说,等效的事情是什么,我如何从 scikits.learn 对象中获取这些信息?

补充:第一次尝试解决方案。

看起来分类器对象具有support_vectors_包含支持向量作为数组的每一行的属性。还有一个属性dual_coef_是 1 bylen(support_vectors_)系数数组。从关于非线性 SVM 的标准教程中,看来应该执行以下操作:

  • v从被测数据点计算特征向量。这将是一个与 的行长度相同的向量support_vectors_
  • 对于 中的每一行isupport_vectors_计算该d[i]支持向量与 之间的平方欧几里得距离v
  • 计算哪里t[i]是RBF 参数。gamma * exp{-d[i]}gamma
  • 总结dual_coef_[i] * t[i]一下iintercept_将 scikits.learn 分类器的属性值添加到该总和中。
  • 如果总和为正,则归为 1。否则,归为 0。

补充:在此文档链接的第 9 页上,它提到intercept_分类器的属性确实包含偏差项。我已更新上述步骤以反映这一点。

0 投票
2 回答
14529 浏览

python - sklearn (scikit-learn) 逻辑回归包——设置训练的分类系数。

所以我阅读了 scikit-learn 包 webpate:

http://scikit-learn.sourceforge.net/dev/modules/generated/sklearn.linear_model.LogisticRegression.html

我可以使用逻辑回归来拟合数据,在获得 LogisticRegression 的实例后,我可以使用它对新的数据点进行分类。到现在为止还挺好。

有没有办法设置 LogisticRegression() 实例的系数?因为在我获得训练好的系数后,我想使用相同的 API 对新的数据点进行分类。

或者也许其他人推荐了另一个具有更好 API 的 Python 机器学习包?

谢谢