问题标签 [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.
python-2.7 - scikit学习多核和伽玛值?
我将使用具有多项式内核的 scikit SVC,格式如下:(1 + xTn.xm)^4。含义(xTn.xm 的乘积的一加),次数为 4。xTn 是转置的 xn 值。当我查看 scikit 文档时,他们指定了 SVC 的参数:
参数“degree”是相关的,我应该使用 4。参数 coef0 是相关的,我应该使用值 1。它正确吗?在“Poly”案例中,伽玛非常不清楚。我应该为伽玛使用哪个值?
svm - SVM 整数特征
我在 Python 的机器学习 scikit-learn 包中使用 SVM 分类器。我的特征是整数。当我调用 fit 函数时,我收到用户警告“Scaler 假定浮点值作为输入,得到 int32”,SVM 返回它的预测,我计算混淆矩阵(我有 2 个类)和预测精度。我试图避免用户警告,所以我将这些功能保存为浮点数。确实,警告消失了,但我得到了一个完全不同的混淆矩阵和预测准确性(令人惊讶的是准确度要低得多)有人知道它为什么会发生吗?更可取的是,我应该将特征作为浮点数还是整数发送?谢谢!
python-2.7 - 如何在 scikit_learn 的 KFold 中使用 shuffle
我正在使用 scikit-learn 提供的 KFold 函数运行 10 倍 CV,以选择一些内核参数。我正在实施这个(grid_search)过程:
如果我在 KFold 生成中不使用 shuffle,如果我重复相同的运行并且“最佳结果”是可重复的,我会得到非常相同的平均结果(cv_errors)。如果我使用随机播放,如果我多次重复相同的运行并且“最佳值”不可重复,我会得到不同的平均值(cv-errors)。我可以理解,对于每个 KFold 通道,我应该得到不同的 cv_errors,但最终的平均值应该是相同的。带有 shuffle 的 KFold 是如何真正起作用的?每次调用 KFold 时,它都会打乱我的索引并生成训练/测试数据。它如何为“培训/测试”选择不同的折叠方式?它是否有随机方式来选择不同的折叠进行训练/测试?任何与“洗牌”有关的情况和不是的情况?
machine-learning - unigrams & bigrams (tf-idf) 不如 unigrams (ff-idf) 准确?
这是一个关于 ngram 线性回归的问题,使用 Tf-IDF(词频 - 逆文档频率)。为此,我使用 numpy 稀疏矩阵和 sklearn 进行线性回归。
使用 unigrams 时,我有 53 个案例和 6000 多个特征。预测基于使用 LeaveOneOut 的交叉验证。
当我创建一个仅包含 unigram 分数的 tf-idf 稀疏矩阵时,我得到的预测比创建 unigram+bigram 分数的 tf-idf 稀疏矩阵时要好一些。我添加到矩阵中的列越多(三元组、四元组、五元组等的列),回归预测的准确性就越低。
这很常见吗?这怎么可能?我会认为功能越多越好。
python - 区分过拟合与良好预测
这些是关于如何计算和减少机器学习中的过度拟合的问题。我认为许多机器学习新手都会有同样的问题,所以我试着用我的例子和问题说清楚,希望这里的答案可以帮助其他人。
我有一个非常小的文本样本,我正在尝试预测与它们相关的值。我已经使用 sklearn 来计算 tf-idf,并将它们插入到回归模型中进行预测。这给了我 26 个具有 6323 个特征的样本 - 不是很多。我知道:
将 6323 个特征 (X) 和相关分数 (y) 的这 26 个样本插入到LinearRegression
模型中,可以得到很好的预测。这些是使用留一法交叉验证获得的,来自cross_validation.LeaveOneOut(X.shape[0], indices=True)
:
非常好!使用 ngrams (n=300) 而不是 unigrams (n=1) 会出现类似的结果,这显然是不对的。任何文本中都没有出现 300 个单词,因此预测应该失败,但它不会:
问题 1:这可能意味着预测模型过度拟合数据。我只知道这一点,因为我为我知道不能产生好的结果的 ngrams (n=300) 选择了一个极值。但如果我没有这方面的知识,你通常如何判断模型过度拟合?换句话说,如果使用了合理的度量(n=1),你怎么知道好的预测是过度拟合的结果,而模型只是运行良好?
问题 2:防止过度拟合(在这种情况下)以确保预测结果好坏的最佳方法是什么?
问题3:如果LeaveOneOut
使用交叉验证,模型怎么可能过拟合得到好的结果?过度拟合意味着预测准确性会受到影响 - 那么为什么它不会影响对被遗漏文本的预测呢?我能想到的唯一原因:在主要为 0 的 tf-idf 稀疏矩阵中,文本之间有很强的重叠,因为有很多术语是 0 - 然后回归认为文本高度相关。
请回答任何问题,即使您不知道所有问题。谢谢!
python - numpy/pandas:如何将一系列零和一的字符串转换为矩阵
我有一个以这种格式到达的数据:
在元组格式中,它看起来像这样:
归根结底,我需要使用 Y 和 X 训练一个分类器(例如 sklearn.linear_model.logistic.LogisticRegression)。
将一串零和一串变成类似 np.array 的最直接的方法是什么,以便我可以通过分类器运行它?似乎这里应该有一个简单的答案,但我一直无法想到/谷歌一个。
几点注意事项:
- 我已经在使用 numpy/pandas/sklearn,所以这些库中的任何东西都是公平的游戏。
- 对于我正在做的很多事情,将 other_info 列放在 DataFrame 中很方便
- 字符串很长(约 20,000 列),但总数据框不是很高(约 500 行)。
python - 弹性网是如何使用的?
这是关于回归正则化的初学者问题。大多数关于 Elastic Net 和 Lasso Regression 的在线信息都复制了 Wikipedia 中的信息或 Zou 和 Hastie 的 2005 年原始论文(Regularization and variable selection via the elastic net)。
简单理论的资源?对于那些没有统计倾向的人来说,是否有一个简单易懂的解释来说明它的作用、何时以及为什么需要再瓜化,以及如何使用它?我知道如果您能理解原始论文是理想的来源,但是否有更简单的问题和解决方案?
如何在sklearn中使用?有没有一步一步的例子说明为什么选择弹性网(在山脊、套索或简单的 OLS 上)以及如何计算参数?sklearn 上的许多只是将 alpha 和 rho 参数直接包含在预测模型中,例如:
但是,他们没有解释这些是如何计算的。你如何计算套索或网络的参数?
scikit-learn - 通过 sklearn python 包定义和使用球树列表
我已经定义了一个球树对象列表,如下所示,其中input1
是一个形状为 (100, 320) 的 NumPy 数组。
我将 的元素之一input1
作为示例查询,sample_index
假设在范围内。
鉴于 ' sample_query distance[0]
' 是input1
.
为什么当我将一个球树对象附加到球树列表“bt”时,“sample_query”和 bt[0] 的最近邻距离会发生变化?当我将一个对象附加到列表 bt 时,我希望对象 bt[0] 不会被修改。我的预期正确吗?
python - 如何使用 scikit-learn 的 SVM 和直方图作为特征?
我希望将 scikit-learn 的 SVM 与卡方内核一起使用,如此处所示。在这种情况下,内核位于直方图上,这就是我的数据所表示的内容。但是,我找不到与直方图一起使用的示例。这样做的正确方法是什么?
将直方图视为向量是否正确,其中向量中的每个元素都对应于直方图的一个 bin?
先感谢您
python - 具有硬边距和 C 值的 svm
我必须创建带有 RBF 内核和硬边距的 svm 分类器。如果我理解正确,那么边距的类型是由 C 参数控制的。也就是说,C 参数越大,我得到的硬边距就越大。是否有一个典型的 C 值可以模拟一个非常强大的“硬边距”?或者有没有其他方法可以模拟强大的硬保证金?当然,我们总是可以讨论为什么我们需要模拟硬边距。但在这种情况下,我需要效仿它!