为什么会这样呢?
GradientBoostingClassifier(loss='ls')
Run Code Online (Sandbox Code Playgroud)
失败了:
raise ValueError("``n_classes`` must be 1 for regression")
ValueError: ``n_classes`` must be 1 for regression
Run Code Online (Sandbox Code Playgroud)
它与...完美配合loss='deviance'?
我在Ubuntu 64位中使用scikit-learn-0.11和scipy-0.11.0rc1这发生了对二进制类'YES''NO'的数据集进行分类.
在连接到集群中的笔记本电脑的交互原型开发,我想定义一个类,无论是在客户端可用的__main__会话,并通过传递这样的情况下围绕集群引擎节点上交互方式更新到能够移动该类的实例LoadBalanced视图的参数.以下演示了典型的用户会话:
首先设置并行集群环境:
>>> from IPython.parallel import Client
>>> rc = Client()
>>> lview = rc.load_balanced_view()
>>> rc[:]
<DirectView [0, 1, 2]>
Run Code Online (Sandbox Code Playgroud)
在笔记本单元格中,让我们定义我们交互式编辑的组件的代码片段:
>>> class MyClass(object):
... def __init__(self, parameter):
... self.parameter = parameter
...
... def update_something(self, some_data):
... # do something smart here with some_data & internal state
...
... def compute_something(self, other_data):
... # do something smart here with other data & internal state
... return something
...
Run Code Online (Sandbox Code Playgroud)
在下一个单元格中,让我们创建一个脚本来构建此类的实例,然后使用集群环境的负载平衡视图来评估各种输入参数上的组件:
>>> def process(obj, some_data, other_data):
... …Run Code Online (Sandbox Code Playgroud) 在我的scikits-learn Pipeline中,我想将自定义词汇表传递给CountVectorizer():
text_classifier = Pipeline([
('count', CountVectorizer(vocabulary=myvocab)),
('tfidf', TfidfTransformer()),
('clf', LinearSVC(C=1000))
])
Run Code Online (Sandbox Code Playgroud)
但是,据我所知,据我所知
text_classifier.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
Pipeline使用CountVectorizer()的fit_transform()方法,它忽略了myvocab.我怎么能修改我的管道来使用myvocab?谢谢!
我正在做多类分类,类别不平衡。
我注意到 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倍简历:
第一次运行:
F1: 0.706029106029
Precision: 0.731531531532
Recall: 0.702702702703
precision recall f1-score support
0 0.44 0.67 0.53 6
1 0.80 0.50 0.62 8
2 0.78 0.78 0.78 23
avg / total 0.73 0.70 0.71 37
Run Code Online (Sandbox Code Playgroud)
第二次运行:
F1: 0.787944219523
Precision: 0.841165413534
Recall: 0.815789473684
precision recall f1-score support
0 1.00 0.29 0.44 7
1 0.75 0.86 0.80 7
2 0.82 0.96 0.88 24
avg …Run Code Online (Sandbox Code Playgroud) 我有一个大的(100K×30K)和svmlight格式的(非常)稀疏数据集,我按如下方式加载:
import numpy as np
from scipy.cluster.vq import kmeans2
from scipy.spatial.distance import pdist, squareform
from sklearn.datasets import load_svmlight_file
X,Y = load_svmlight_file("somefile_svm.txt")
Run Code Online (Sandbox Code Playgroud)
它返回一个稀疏的scipy数组X.
我只需要计算所有训练点的成对距离
D = pdist(X)
Run Code Online (Sandbox Code Playgroud)
不幸的是,scipy.spatial.distance中的距离计算实现仅适用于密集矩阵.由于数据集的大小,使用pdist作为不可行
D = pdist(X.todense())
Run Code Online (Sandbox Code Playgroud)
任何有关此问题的稀疏矩阵距离计算实现或变通方法的指针都将非常受欢迎.
非常感谢
我读到sklearn中的内置集合方法使用决策树作为基本分类器.是否可以使用自定义分类器?
我正在使用scikit-learn来集中文本文档.我正在使用CountVectorizer,TfidfTransformer和MiniBatchKMeans这两个类来帮助我做到这一点.新文本文档一直添加到系统中,这意味着我需要使用上面的类来转换文本并预测集群.我的问题是:我应该如何将数据存储在磁盘上?我应该简单地挑选矢量化器,变换器和kmeans对象吗?我应该保存数据吗?如果是这样,我如何将它添加回矢量器,变换器和kmeans对象?
任何帮助将不胜感激
我正在使用scikit-image读取图像:
img = skimage.io.imread(filename)
Run Code Online (Sandbox Code Playgroud)
对 进行一些操作后img,我想将它保存到内存文件(a la StringIO)以传递给另一个函数,但它看起来skimage.io.imsave需要文件名,而不是文件句柄。
imsave如果可能的话,我想避免击中磁盘(然后从另一个成像库读取)。有没有一种很好的方法来使用imsave(或其他一些 scikit-image-friendly 功能)StringIO?
所以我读了scikit-learn包webpate:
我可以使用逻辑回归来拟合数据,在获得LogisticRegression实例后,我可以使用它来对新数据点进行分类.到现在为止还挺好.
有没有办法设置LogisticRegression()实例的系数?因为在我获得训练的系数后,我想使用相同的API来分类新的数据点.
或者也许其他人推荐另一个拥有更好API的python机器学习包?
谢谢
我正在尝试此代码段.我正在使用scikits.learn 0.8.1
from scikits.learn import linear_model
import numpy as np
num_rows = 10000
X = np.zeros([num_rows,2])
y = np.zeros([num_rows,1])
# assume here I have filled in X and y appropriately with 0s and 1s from the dataset
clf = linear_model.LogisticRegression()
clf.fit(X, y)
Run Code Online (Sandbox Code Playgroud)
我得到了这个 - >
/usr/local/lib/python2.6/dist-packages/scikits/learn/svm/liblinear.so in scikits.learn.svm.liblinear.train_wrap (scikits/learn/svm/liblinear.c:992)()
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?
您是否能够使用字符串数据训练DecisionTreeClassifier?
当我尝试使用String数据时,我得到一个ValueError:无法将转换器字符串浮动
clf = DecisionTreeClassifier()
clf.fit([['asdf', '1'], ['asdf', '0']], ['2', '3'])
我想在 python 中使用 svm 分类器找出错误率,我采取的方法是:
1-svm.predict(test_samples).mean()
Run Code Online (Sandbox Code Playgroud)
但是,这种方法不起作用。sklearn 的评分函数也给出了平均准确度......但是,我不能使用它,因为我想完成交叉验证,然后找到错误率。请在 sklearn 中建议一个合适的函数来找出错误率。
有没有办法使用scikit-learn执行顺序k-means聚类?我似乎找不到合适的方法来添加新数据,而无需重新拟合所有数据.
谢谢
python ×12
scikit-learn ×11
scikits ×7
data-mining ×2
in-memory ×1
ipython ×1
nlp ×1
numpy ×1
regression ×1
scikit-image ×1
stringio ×1
svm ×1