Mine indeed also gets an accuracy of 94.4 if K is set to 1.
I scanned the code but could not find to what they set K in the
Rust/F# version, so I just picked 10 instead of just taking 1
neighbor.
Taking only 1 is not quite *K*-NN :P.

Jan-Pieter.

2014-06-11 14:36 GMT+02:00 Thomas Costigliola <[email protected]>:
> Here is my simple solution. It's not as reusable as Jan-Pieter's but I
> think it highlights the simplicity of the core solution on the line with
> "K=.". It prints 94.4% accuracy, which matches the blog post.
>
> I'm using the CSV parser is from Zach Elliott (
> http://www.jsoftware.com/pipermail/programming/2012-October/029686.html)
>
> mj =. 256 $ 0 NB. X - Other
>
> mj =. 1 (a.i.a.)}mj NB. C - Char
>
> mj =. 2 (a.i.',')}mj NB. D - Delim
>
> mj =. 3 (a.i.'"')}mj NB. Q - Quote
>
> mj =. 4 (a.i.'''')}mj NB. S - Single Quote
>
>
>
> sj =. _2] \"1 }.".;._2 (0 : 0)
>
> NB. X C D Q S
>
> 0 0 1 1 2 1 3 1 4 1 NB. 0 - Other
>
> 0 0 1 0 2 2 1 0 1 0 NB. 1 - Char
>
> 0 0 1 1 1 2 3 1 4 1 NB. 2 - Delim
>
> 0 0 3 0 3 0 5 0 3 0 NB. 3 - Quote
>
> 0 0 4 0 4 0 4 0 6 0 NB. 4 - SQuote
>
> 0 0 0 0 2 2 3 0 0 0 NB. 5 - Second Quote
>
> 0 0 0 0 2 2 0 0 4 0 NB. 6 - Second SQuote
>
> )
>
>
> parse_csv =. (0;sj;mj)&;:
>
>
> read_data=: [:({."1;}."1)@}. 0&do S:0 @: parse_csv ;._2 @: (1!:1) @ <
>
>
> NB. ---------------------------------------------------------
>
>
> 'TN T'=. read_data jpath'~home/trainingsample.csv'
>
> 'SN S'=. read_data jpath'~home/validationsample.csv'
>
>
> distance=. [:+/*:@:-
>
> imin=. i.<./
>
>
> K=. S ([:imin distance"1)"1 _ T
>
>
> M=. SN ,. K { TN
>
> ]P=: (# %~ [:+/=/"1) M NB. Accuracy
>
>
>
>
> On Wed, Jun 11, 2014 at 6:33 AM, Joe Bogner <[email protected]> wrote:
>
>> Thank you. For an unscientific, rough benchmark, it runs in 12.4 seconds on
>> my machine vs the F# version which runs in 44 seconds. I was surprised. In
>> other unrelated use cases, I was finding .NET to be faster than J. This an
>> example where J really shines.   Your code is compact and readable too. I
>> will study it and may try my own implementation. Thanks for the link to the
>> PDF as well.
>>
>>
>> On Wed, Jun 11, 2014 at 2:22 AM, Jan-Pieter Jacobs <
>> [email protected]> wrote:
>>
>> > 2014-06-11 4:07 GMT+02:00 Joe Bogner <[email protected]>:
>> > > Thanks Jan-Pieter, how would I recreate the results of the calculating
>> > the
>> > > % correct with yours? I will give it a shot on my own still later.. I
>> > > pasted some code to help jumpstart the reading of the array of data:
>> > >
>> >
>> > Thanks for the info!
>> >
>> > I just tried the classification of the data and this is what I get:
>> >
>> > NB. transformed your loader into a reusable verb.
>> > parsefile =: 3 : 0
>> > file =. fread y
>> > header_end =. >: file i. LF
>> > arr =. ". ];._2 header_end }. file
>> > )
>> >
>> > NB. Load training and validation labels and data
>> > Train      =: parsefile jpath '~temp/trainingsample.csv'
>> > Validation =: parsefile jpath '~temp/validationsample.csv'
>> >
>> > NB. separate labels (1st column) from data (the rest)
>> > 'TrainLabels TrainData'          =: ({."1 ; }."1) Train
>> > 'ValidationLabels ValidationData'=: ({."1 ; }."1) Validation
>> >
>> > NB. Classify one against all:
>> > predicted =: 10 nnClass oaa TrainLabels;TrainData;ValidationData
>> >
>> > NB. Assess the accuracy of our result:
>> > OA =: 100 * (+/%#)@:=
>> >
>> > predicted OA ValidationLabels
>> > 93.6
>> >
>> > I'd like to recommend the book that started me on implementing this all:
>> > Elements of Statistical Learning
>> > Trevor Hastie, Robert Tibshirani, Jerome Friedman
>> > PDF Freely (legally too) available via
>> > http://statweb.stanford.edu/~tibs/ElemStatLearn/
>> >
>> > In the future, I'd be interested toying around with more advanced
>> > classifiers, like Support Vector Machines.
>> >
>> > Jan-Pieter
>> > ----------------------------------------------------------------------
>> > For information about J forums see http://www.jsoftware.com/forums.htm
>> >
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to