2012-02-01 91 views
6
  • 我适合逻辑回归模型,并使用训练基于训练数据集的模型以下
import scikits as sklearn 
from sklearn.linear_model import LogisticRegression 
lr = LogisticRegression(C=0.1, penalty='l1') 
model = lr.fit(training[:,0:-1], training[:,-1) 
  • 我有一个交叉验证数据集,其中包含一个与输入矩阵相关的标签,可以作为

CV [: - 1]SciPy的/ numpy的/ scikits - 计算精度/召回分数基于两个阵列

  • 我跑我的交叉验证数据集对训练的模型,返回我的0和1的列表基于预测

cv_predict = model.predict(cv [:,0:-1])

问题

我想根据acutal标签和预测标签计算精度和召回分数。有没有一种标准的方法来使用numpy/scipy/scikits?

谢谢

回答

21

是有,请参阅文档:http://scikit-learn.org/stable/modules/classes.html#classification-metrics

你也应该有一个看看sklearn.metrics.classification_report实用程序:

>>> from sklearn.metrics import classification_report 
>>> from sklearn.linear_model import SGDClassifier 
>>> from sklearn.datasets import load_digits 

>>> digits = load_digits() 
>>> n_samples, n_features = digits.data.shape 
>>> n_split = n_samples/2 

>>> clf = SGDClassifier().fit(digits.data[:n_split], digits.target[:n_split]) 

>>> predictions = clf.predict(digits.data[n_split:]) 
>>> expected = digits.target[n_split:] 

>>> print classification_report(expected, predictions) 
      precision recall f1-score support 

      0  0.90  0.98  0.93  88 
      1  0.81  0.69  0.75  91 
      2  0.94  0.98  0.96  86 
      3  0.94  0.85  0.89  91 
      4  0.90  0.93  0.91  92 
      5  0.92  0.92  0.92  91 
      6  0.92  0.97  0.94  91 
      7  1.00  0.85  0.92  89 
      8  0.71  0.89  0.79  88 
      9  0.89  0.83  0.86  92 

avg/total  0.89  0.89  0.89  899 
+0

这是真棒,谢谢@ogrisel – daydreamer 2012-02-01 13:43:31