[scikit-learn] ANN Scikit-learn 0.18 released
Raghav R V
ragvrv at gmail.com
Mon Oct 3 12:23:35 EDT 2016
Hi Brown,
Thanks for the email. There is a working PR here at
https://github.com/scikit-learn/scikit-learn/pull/7388
Would you be kind to take a look at it and comment how helpful the proposed
API is for your use case?
Thanks
On Mon, Oct 3, 2016 at 6:05 AM, Brown J.B. <jbbrown at kuhp.kyoto-u.ac.jp>
wrote:
> Hello community,
>
> Congratulations on the release of 0.19 !
> While I'm merely a casual user and wish I could contribute more often, I
> thank everyone for their time and efforts!
>
> 2016-10-01 1:58 GMT+09:00 Andreas Mueller <t3kcit at gmail.com>:
>
> We've got a lot in the works already for 0.19.
>>>
>>> * multiple metrics for cross validation (#7388 et al.)
>>>
>>
> I've done something like this in my internal model building and selection
> libraries.
> My solution has been to have
> -each metric object be able to explain a "distance from optimal"
> -a metric collection object, which can be built by either explicit
> instantiation or calculation using data
> -a pareto curve calculation object
> -a ranker for the points on the pareto curve, with the ability to select
> the N-best points.
>
> While there are certainly smarter interfaces and implementations, here is
> an example of one of my doctests that may help get this PR started.
> My apologies that my old docstring argument notation doesn't match the
> commonly used standards.
>
> Hope this helps,
> J.B. Brown
> Kyoto University
>
> 26 class TrialRanker(object):
>
> 27 """An object for handling the generic mechanism of selecting
> optimal
> 28 trials from a colletion of trials."""
>
> 43 def SelectBest(self, metricSets, paretoAlg,
>
> 44 preProcessor=None):
>
> 45 """Select the best [metricSets] by using
> the
> 46 [paretoAlg] pareto selection object. Note that it is
> actually
> 47 the [paretoAlg] that specifies how many optimal [metricSets]
> to
> 48 select.
>
> 49
>
> 50 Data may be pre-processed into a form necessary for the
> [paretoAlg]
> 51 by using the [preProcessor] that is a
> MetricSetConverter.
> 52
>
> 53 Return: an EvaluatedMetricSet if [paretoAlg] selects only
> one
> 54 metric set, otherwise a list of EvaluatedMetricSet
> objects.
> 55
>
> 56 >>> from pareto.paretoDecorators import
> MinNormSelector
> 57 >>> from pareto import OriginBasePareto
>
> 58 >>> pAlg = MinNormSelector(OriginBasePare
> to())
> 59
>
> 60 >>> from metrics.TwoClassMetrics import Accuracy,
> Sensitivity
> 61 >>> from metrics.metricSet import
> EvaluatedMetricSet
> 62 >>> met1 = EvaluatedMetricSet.BuildByExpl
> icitValue(
> 63 ... [(Accuracy, 0.7), (Sensitivity,
> 0.9)])
> 64 >>> met1.SetTitle("Example1")
>
> 65 >>> met1.associatedData = range(5) # property
> set/get
> 66 >>> met2 = EvaluatedMetricSet.BuildByExpl
> icitValue(
> 67 ... [(Accuracy, 0.8), (Sensitivity,
> 0.6)])
> 68 >>> met2.SetTitle("Example2")
>
> 69 >>> met2.SetAssociatedData("abcdef") # explicit method
> call
> 70 >>> met3 = EvaluatedMetricSet.BuildByExpl
> icitValue(
> 71 ... [(Accuracy, 0.5), (Sensitivity,
> 0.5)])
> 72 >>> met3.SetTitle("Example3")
>
> 73 >>> met3.associatedData = float
>
> 74
>
> 75 >>> from metrics.metricSet.converters import
> OptDistConverter
> 76
>
> 77 >>> ranker = TrialRanker() # pAlg selects
> met1
> 78 >>> best = ranker.SelectBest((met1,met2,m
> et3),
> 79 ... pAlg,
> OptDistConverter())
> 80 >>> best.VerboseDescription(True)
>
> 81 >>> str(best)
>
> 82 'Example1: 2 metrics; Accuracy=0.700;
> Sensitivity=0.900'
> 83 >>> best.associatedData
>
> 84 [0, 1, 2, 3, 4]
>
> 85
>
> 86 >>> pAlg = MinNormSelector(OriginBasePareto(),
> nSelect=2)
> 87 >>> best = ranker.SelectBest((met1,met2,m
> et3),
> 88 ... pAlg,
> OptDistConverter())
> 89 >>> for metSet in best:
>
> 90 ... metSet.VerboseDescription(True
> )
> 91 ... str(metSet)
>
> 92 ... str(metSet.associatedData)
>
> 93 'Example1: 2 metrics; Accuracy=0.700;
> Sensitivity=0.900'
> 94 '[0, 1, 2, 3, 4]'
>
> 95 'Example2: 2 metrics; Accuracy=0.800;
> Sensitivity=0.600'
> 96 'abcdef'
>
> 97
>
> 98 >>> from metrics.TwoClassMetrics import
> PositivePredictiveValue
> 99 >>> met4 = EvaluatedMetricSet.BuildByExpl
> icitValue(
> 100 ... [(Accuracy, 0.7), (PositivePredictiveValue,
> 0.5)])
> 101 >>> best = ranker.SelectBest((met1,met2,m
> et3,met4),
> 102 ... pAlg,
> OptDistConverter())
> 103 Traceback (most recent call last):
>
> 104 ...
>
> 105 ValueError: Metric sets contain differing
> Metrics.
>
>
>
>
> _______________________________________________
> scikit-learn mailing list
> scikit-learn at python.org
> https://mail.python.org/mailman/listinfo/scikit-learn
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-learn/attachments/20161003/1f71f227/attachment-0001.html>
More information about the scikit-learn
mailing list