 So, how many people here know F sharp program before in F sharp, not a single person, ok. So, I think and machine learning experiences like what do you know, ok you know like what kind of work you have done in logistic regression in R, here you do not have experience in machine learning or F sharp, ok. So, what we will do is for the first time first 45 minutes or so, we will give a introduction to the language and that will serve both purpose. And then later we will show some examples like what is how machine learning basically kind of very top level overview and then we can so one or two demos about a classifier and logistic regression. So, we will build a classifier to first a kind of separate tell a dog and cat apart and then we will use that same to kind of do identify people and stuff like that. So, let us start with F sharp and sit down actually. So, F sharp is a language on dot net CLR platform and it is basically there are several reasons behind it coming into picture it kind of reduces the typing a lot. If you are coming from like I hope people are here for doing Java or C sharp, ok. So, you can you will be able to relate and that at first the syntax might seem very weird, but once we go along with the flow you will find that it is easy to understand and make sense as with any language human or programming. So, it is taking too long to so, I mean it is too long. This functional approach is basically writing everything is a transformation. So, like you start with some list and then do some operations to get another list and that map reduce concept will be you know very much pre pre well and here actually. So, let us so go to new and I will start a new project for some reason it is slow ok. So, we will select visual F sharp and we will I will select something called a tutorial because that comes loaded with lot of stuffs so, that I do not have to write it myself. So, let us say I want to create a integer list. So, I will say list 1 equal to 1 2 3 4 and that is little bit weird for C sharp guys you get semicolon at the end, but here you give semicolon in between and there is no semicolon needed at the end. So, you do that and select that line and say right click and say n 2 interactive execute in interactive. So, what it says is I get a integer list so, the type is coming here as in list now if I suddenly say let array 1 I give the this kind of a bar at the end and say 1 3 4 another bar. So, that is now becoming an array so, it is an integer array so, the syntax is like that to create an integer array and if you notice that I never said it is an integer array or it is a float array or anything. So, now if I suddenly put a 3 point here I do not need to give the 0 I should probably it is giving. So, now if I say it see it is not allowing me because it is saying so, it is type check is happening and it inferred that 3.0 is a float and I am trying to put 1 and 4 who are integers inside a float array so, that is not going to happen. So, here I have to say 1.0 and 4.0 and then if I do that here it comes as a float array as expected. No, you have given a dot right so, 3.0 you said now what if you say 3.0 1 you know few you have given a dot that is a symbol of decimal so, it is a float. But others are not float how can compiler assume that you though that you have intended then to be float. Yes, exactly because I will show you an example let us say I have a divide by float condition here. So, I say let say numerator is equal to 3 and say let denominator is equal to 4.0 now in C sharp you can say let div is equal to numerator divided by denominator right it is not going to execute here because it expects both to be converted in the same type it is very strict in that. So, if I say float here sorry thank you that is all the purpose now when I first saw this kind of syntax it occurred to me why there is no bracket I mean why whether the brackets have gone. So then I took some classes and realized that the in functional programming you have to drop the most used operator. So, the most used operator is brace unless it is absolutely needed you do not give it. So, float is a function which takes numerator divided by denominator numerator not divided now if I intended this then I have to give a bracket otherwise I do not need to give it. So, that kind of awkward to see it, but it is a how it is. So, it is coming back to like our map reduced of. So, let us say I have a nums of so this also is another syntax. So, this gives me a list of 10 integers and let me so once I execute it in the interactive interactive is here. So, it is 1 to 10 it is better to have it here so I can see what is happening. Now I want my nums to be square so let tuples equal to nums list dot map so what does is do is I have a num and it is basically creating a tuple of the first element and the second element that is squared. So, I am trying to create a parabola let us say so this will be so here comes the output here. So, the tuples output is like this now I want to access the second element and I want to create a sum. So, let us say here the tuple second element is 1, 4, 9 and all I want to create the sum I want to find the sum of all the second elements. So, FST comes with two special function called FST and SND that is short for FST and first and second as in key value pairs with key and value. So, I can say tuples dot list dot sum by so sum by is basically I am trying to project a list and then doing the summation. So, I say fun I do not have to do anything I just have to say SND so what is happening is it is taking sum is equal to this. What does this mean is it will project it as the second elements are projected and then the sum is being taken. So, there are several functions if you say list dot you can see several such functions are there. So, what we heavily use in our today's talk will be map because we want to map things and we will heavily use the sum and map and basically sum by. So, I think any question at this point we will stop for a few minutes. So, as you see there are several other functions that are listed in array because now another thing I want to mention here is that since array 1 is an array I cannot have a list dot map fun t is equal to whatever t plus 2 I mean oops now why this is can you tell why this is not working array 1 is an array, but I am trying to invoke a list method on top of it. So, it is not going to work. So, I have to change it to array now this seems a little bit of weird because these are anyway collections and coming back from C sharp background everything is innumerable or I can always do something. So, I think then I there is something called sequence that will also not t plus 1 because it is a float. So, I think one point we will do so sequence will work sequence is the synonymous with innumerable. So, those matching has been done yes, so arrays as he as in the traditional case also like arrays are mostly useful when you want to get to a particular location first and good that you ask that question I was running short of ideas to show what next. So, let us say I want to access the second element so I can do that with a dot of 1 instead of a just 1 like that dot operator we will tell the so basically what it will show it will show 3, 3.0 and you can select any line and say alt enter and that will come on the interactive. So, it is basically a repel loop read evaluate and print loop. So, you get it is a exploratory pattern like you get to do something and see the outcome immediately. Now, let us talk about something something little bit more complicated and keep this here. So, let us say I want to declare a type so I have an integer array and I want to go in the future those many days say 1, 3, 4 I want to go in the future those many days and call those days day 1, day 2, day 3 like that. So, I will say type entry equals to name string semicolon float day in future float so that gives me a type. Now what I can do is I can take this array 1 and I can do an array dot map so right now if I say font t, t is nothing but an float so what I will do is I will create a symbol I will say say may be t dot 2 string I will say so I will say may be day plus t dot 2 string and then I will say sorry name equal to is not required then t this is day in future. So, now if I run this so I get this second level name record level name is not defined I did define name I did not I did not execute this statement yes. So, now it comes back here saying that name is day 1 and the value is 1 and so. So, this is very useful as you say it is a kind of projection so I have something and I want to project it to some other things it may sound very abstract but it is very important. So, let us say I have a I have a list of records that has to be normalized say you are a patient and I am a patient both of us took some tests and we you have been diagnosed with a disease and sorry may not God forbid and so whether I have that disease or not will be based on the proximity of your records and mine. So, if we plot your records in n dimension and my records in n dimension the distance between these two points will tell us how close what is my chances of getting that disease right. So, there you see this name can be the tag of the disease and the values the float list can be our this thing. So, we will use it heavily in our when you do nearest neighbor or you know classification then we will use this algorithm in this context any question so far very silent people either I am not doing well. So, what more constructs will be useful. Also a function how to call a function and how to define a function those two are very important things to know like we decide like we created like variables like this let us say we created x1 equal to 1 this is a variable we create. Now we can create a function like that we say square of x is equal to x into x and we say this is 3 may be for the sake of proving the fact then we called sqr x1 and we run 3 of them in the so at the end we see I think I should pull it down little bit. So, x is equal to 3 notice this very carefully this is very interesting to see it is showing the functions type. So, the like every variable has a type every function has a type basically that is the type of the transformation you are taking an integer and you are getting back another integer. So, that is why so the val square square is the variable that is a function which takes an integer and gives back another integer. Now let us take little bit more complicated stuff let us say we do not also we say square tuple which takes a tuple of a and b and returns a into a plus b into b. So, this takes an integer integer and the syntax would be little bit funny. So, I will write it down here and let us see whether I get it right or not it will come as int into int and return of will be int because it is basically a tuple of integer and integer and we will returning an integer. So, yeah I miss the variable names, but I got it close. So, a int and b int and int. Now, why this is important is that we can pass a function as a higher order function. So, this is a simple function both are simple functions because both of them are taking values that are actually you know default to the language variables types that are default to language. Now, if I say late complex square and that has nothing to do with complex number, but just for the sake of making it sounding it complex, we say g a b and we say g a into g b sorry equal to. So, what will be the type it will say I am getting an integer and I am applying it sorry oops. See g has been identified as a function see the power of inference of this compiler. So, it has inferred that g is a function which takes an integer and returns an integer and then basically we are actually returning a product of another integer. Now, we will call this now we will do the fun thing which is passing it the function. So, complex square now can take square and say 2 and 3, 2 and 4. So, what will be the result one second it is not happy sorry it is expecting a tuple, but I have given as not a tuple. So, I have to compile it again sorry. So, it is taking an integer and return taking an integer function and couple of integers and invoking that function on both of these integers and multiplying it back. So, the output will be see I am no look at this pattern. So, when I can say g of a I how can I say g of a can I let us say this can be very I know it may be difficult to understand. So, g I am saying g and a if g would have been some integer or float can I say like 5 if I say 5, 6 and 7 does it make any sense. But if I say some functions a square of function a square of 7 that does make sense. So, no unless it is like that is the choice that they have made to take it as integer unless you make it explicit. So, yeah so you can say that you can say here. So, you can say here you can specify the function you can say float taking and float is the return. Then you will not be able to use square because square takes an integer and returns an integer. So, you can always annotate and help the compiler saying hey this is the type I want you to use this type. Yeah as a default thing because most of the time they have seen the usage is like that. So, let us say I will keep it simple and as it was. So, the output will be how much? 2 by 2 into 2. So, that is the how to use higher order functions as a function arguments. So, you will get to see lot of these things that are you know inside the language when you see F sharp code you will see lot of such when I first saw these statements I thought what is going on no brackets nothing very complicated to understand at first. Then you will not be able to say let us say let us say we come here and we say float we make g to return a float then it will throw a compiler error. If I say that so it is now taking sorry it is now taking an integer and returning a float no it will not throw a compiler error I will have to annotate it also as a float because so it is a taking a float and a float and here I have not given any type. So, this is the integer and the float and here square is scribing it is saying I need a float. So, I that only way to do that I can say 2 dot and 4 dot then it will be sufficient then your answer will be 64 dot 0 not quite let us see expecting a float to float float to it okay let us see okay no here it is a square needs to be annotated here. So, here it is not compiling because g if you let us do the mistake one more time see see the type of this complex so square method it is expecting that g will be an integer and taking an integer and returning an integer because we have not annotated it and if that is why it is not working here. So, if we annotate it if we say okay do not worry g will be a float and returning a float and here g float to float take two floats and then return the float. So, the complex square function takes three arguments first of them returns one float given one float and then two floats then it should work 64 dots here absolutely otherwise that everything breaks yes thing that thing is important is one second. So, shall we go back I mean is this enough introduction or can we start a little bit machine learning now or you guys need a tea break or something already or you we can continue for some more time okay please please actually actually the language designer don sim tells that it is like python with the type system type system behind it but yeah the productivity that python brings you can also like that is also there but it is also heavily inspired by Haskell and OCaml and ML yeah it is descendant of SML and this is the Microsoft heavily investing in this particular platform and right now this F sharp runs on every conceivable platform that you have like you know it runs on windows of course windows all kinds of windows phones windows this your desktop you know small handheld devices then more through mono it runs on Ubuntu also I mean all platforms is covered even it runs on few cameras so you can apply like little bit of logic to design filters on photos taken and since if the size is very less footprint is less the language compiler is very you know easy to okay my answer will be biased because I am very much in for static typing because so I think static typing is the best thing because it helps you to you know it saves you from doing mistakes at the compile time so maybe you write you write you write you have a list of list in python and you put what not in that and later you realize you are kind of relying on yourself to not commit mistakes which is not good in my opinion because because after what is the use case and what is the design for yeah like I will I can know I know the answer for this use case that float and all division use case so you probably know that this land rover failed right NASA so they the cockpit system designer were using SI systems and persons on the ground they were using some another system what is that yeah foot foot and inches and centimeter and all that so there was a huge mismatch and because of that the F sharp language has a feature called units of measure so I can actually attach a unit of measure to a particular float so if I say float not float say let mileage equal to 23.2 and you can say miles I think I have to do I am not very comfortable during doing that but basically you will not be able to do calculations that results in a numeric value but so every numeric value in a scientific calculation either has a unit or does not have a unit so whenever it has a unit you have to write guiding clauses so that you actually you are not multiplying mileage with age that does not make sense so those kind of situations was the motivation for units of measure and as I said static typing also is a huge huge you know is required for tooling because why you see like visual studio provides lot of tooling because it knows lot of things about your code already because your code is statically typed I think those two I mean you can choose to be different but another motivation of the language design sorry another motivation for the simplest language design is like how how easily we can get the things done like if you see I will show you an example let us say I have two variables like a is equal to say 40 and let b is equal to 12 I want to swap them so the easiest way is to create another variable store one of these variables and do that I can write a swap method that takes m and n and returns n and m how cool is that when I saw that I thought it's super cool okay sorry I don't know python I mean they they have to write something to probably have that statically typing yeah of course and another thing is that's all the c-sharp api is written had to be compatible I mean if there is a reason for doing this also like all the c-sharp code like if I write a library in f-sharp today it has to be you know available for consumption from a c-sharp point so there you cannot have something which is drastically different it will break lot of things okay enough said let's go to this machine learning my internet is not worth it's bad don't do let's no service where is wi-fi here I never used it before this one it's already connected a few it also came I don't know what to use they'll disconnect this thing so I try to keep it very funny so all I wanted is that people take the hints not the like grads so this little bit about me and I wrote three books and I am writing a book on f-sharp and machine learning right now and I have a github account I forgot to put up it here it's the same one as the handle is same so one second my slides so today we will be talk will be I thought we will do the in talking on like these are the frameworks you can take a note of course you will this slide will be uploaded to the content so f-sharp and then we will be using accord.net and weka-sharp so weka is if you're familiar with java there's a framework called weka and so there is a port on f-sharp.net that somebody has written so that way you can communicate with weka let's call weka-sharp and math net has so you know api that is available on nougat and github and fsplot is a fantastic plotting library so what it does is it takes your tuples and all and it uses high charts and generate those high charts for you almost like you know very simple manner so these are the giants we will I thought we'll so why f-sharp I mean the last point is I think most important for me because it gets lot more than less typing and it's very active right now and you can it's open source the compiler is open source and you can propose the new features and all these things and it's ubiquitously available suddenly dotnet's ubiquitous availability it is now available on even mono and all actually give me a second my slides are all jumbled up I think this is sufficient we can do so why care about machine learning so this slide I try to put up like what I saw as like what is machine learning doing to us so it's doing lot of things you see it's doing recommendations mostly that whenever you see a video on youtube it says okay you can watch this video that's recommendations and facebook and twitter you get friend requests that okay you might follow this guy or this may be your friend you may know this person and amazon and flipkart they are doing product recommendations people who bought this also bought this and all that stuff and there is lot of effort on matching people on dating apps so you if you like this person you might like this person or those you too may be similar I mean I find that very interesting because that's pure geometry problem solving like closest point match then anomaly detection is very much useful in you know lot of situations like fraudulent you know fraud discovery and all that and classification of course it's the like you whether we are doing dealing with a spam or a ham or that email context and then we decide whether you can apply the same algorithm to find out what is the person at the door like it's like security surveillance cameras utilize same algorithms and then you can do clustering to identify business segments like automatically you can tell that okay your customers has these are the your elite set of customers these are your normal set of customers and what is there so like what may be big basket is doing right now is like a segmentation so they know what you want to buy and that's scary but here they know and so these are the motivations to learn I mean this is the right time to learn about it because once you know something you will feel that how why you are getting that recommendations and why it is happening and how it is happening here is a simple example of k nearest neighbor so there is a algorithm in machine learning this is one of the simplest algorithm so what it tells is that and it's you know even if it's very simple it is very useful so what it tells is you represent your you know subject in a vector okay and then represent other subjects in the same vector representation and if those subjects are closed in n dimensions then you have a match so I mean I will leave you to read this and if something does not make sense please tell me I'll keep it here for a minute does make sense I mean do you understand English is not my first language please forget yeah so class I was expecting that so class is the like suppose we represent a photo an image with a set of values and another image with another set same another set of values so that image is the class so if we have one dog image dogs photo and we have another dog's photo then we can say that image the class is the dog the word dog because they are both same category and if we have another cat image that's another class like a cat or in case of say cancer data we have cases with our benign cases and we have cases which are malignant cases but the tag is either b or m so that is the class or it's sometimes called as tag also okay yeah then that the maximum vote wins means that the class that has the maximum number of voting wins classification so let's say you have we are all familiar with two dimension right so you say two dimension board so if I have one one that is in the coordinate geometry on the first quadrant on the right if I say minus one minus one that is on the fourth third quadrant on the down so the distance is more if I say one zero and one one what the distance is small so one one and one zero falls in the first quadrant now if you tell take that example and say okay first quadrant is my class second quadrant is my class third quadrant is my class so if I give you another point say three four so three four is nearer to one one and one zero than two minus one minus one so three four is belonging to the first quadrant class now if you extrapolate that understanding to n dimension then you see like in n dimensions whatever point that is closest to you that makes sense right okay so what I did is I after writing this I thought I will do a highlighting of the keywords so now that same sentence but I have highlighted the keywords so what you have to do this is sort by the distance the distance is a Euclidean distance or some kind of distance measure of two points then you first take the first k points and count elements by each class and the top one swings so you say and now the same program is written in a sharp in a function so here you see it takes an list of entries it's an entry list where the entry list is nothing but a list of string and float float array tuple and we are passing a k as an integer yeah yeah yeah one second a plus I don't know okay okay we'll do the same thing in this thing only I mean it's not a very big code we can write it anyway I think I have it somewhere so I'll just copy it's from taken from my book only so I will copy can you see it now sir so this is the entry so that is the type of the entry you can see right yeah and this is the KNN you you can see right yeah so we'll copy this I mean it should be if we execute it it will make much more sense at least one example should go so this is my entry so entry is nothing but a entry is nothing but a label which is the class and values is a float array so I want to represent my subject in that float array and this is the KNN it's not distance function is not defined so that's why it was asking for it so copy this guy as distance let me make it bigger and still visible right so this is another opportunity to show that fsharp has another kind of operators I think this will be yeah so this is the power operator that other languages that we seen before does not have so what I am doing here is taking the first one that first pair second pair taking the difference we're basically calculating the Euclidean distance and all this logic here is just trying to take care of that if the values in one element array is less than the other so we'll do the calculation till they match up in length okay so now I will now I will cook up some data just for the sake of it so we'll say let first data let's okay let's data equal to we'll create say x and a float array 3.45.6 3.7 that is my first float array and then I take that one create another tuple and say this is y only thing is I will make y is much smaller so I'll say okay 0.34 0.56 0.37 and this is my list 0.37 it's there no no it's actually does not matter it's a squared Euclidean sorry okay yeah yeah okay there is a function this pow no this what we did here is we raise it to point to 2.0 instead we will just say 0.5 or there is a function called pow n p o w n so we can do that so this is my data okay and I want to train let's say this is my data and I want to train only on this 4 but I will make it little bit more data for this guy let's say x is further apart and this is further low and then so this is my data that my training data on which I will in the maybe in a matter of clarity we can say training data okay so training data is like that oh another very important thing I forgot to tell is that f sharp works on off side rules like python so off side rules is like everything has to be indented properly that's how it decides the scope okay so it's now telling me that possible indentation error so I'll probably fix it or you can leave it it's not very warning right now now I create another variable say test data which I do not know the level don't know right and I I have the I have the data for it also so I will say it is maybe 45.3 23 let's say 34.23 and maybe 65.67 so that is my data that I have so this is the tuple that I have now I want to use the KNN that I have written to determine the class of this guy so what I can say is I say KNN and I give training data okay I give the test data and I say K is an integer so I want to take the first two K no it's an entry list so it is proving I am not an entry list yeah yeah just a list yeah so now I have to either copy because it's a little bit more code to so loaded is yeah in fact we don't need entry list because I don't want to fix it right now we can change it to string float that list then some other problems is X dot level okay it will be FSTX and X dot values will be SNDX right so I take that one okay distance is not defined it is asking okay distance distance is defined this so this is defined and now I should be able to call it I say KNN no no no they are the function names so if you say FST on a tuple it gives you the first element of the tuple if you say SND of a tuple it gives you the second element but there is no THR or FOR like that because yeah so you say let classifications equals to this now if I run this hopefully it will return test data is not defined okay sorry test data is defined classification so classification is saying X2 that means that out of two nearest neighbors that it has both has the class of X so it is also X is that clear no no no see see here so I have given it's a list of string and float array pairs right and here I said don't know so give me the tag of this and I said I have four training data and out of four training data I said let's say pick the first pick the first two nearest neighbors and show me their class so if like as many more in that class it will be like that class so out of two instances two are of type X so 100% match is suggesting that it's a type of X only and you can see visually also you see the values of X are further away from 0 and so this value is also further away from 0 and that is proving the point now let's say we change it to further you know closer to 0 and we should see it's a Y so the test data is different right now what happened 0 still showing X because there is not enough training data so that's what you land up to when you don't have enough training data so let's say it's still showing X now let's increase the sorry I closed it it would run everything one more time till here list of X and 2 that's what sometimes happens when you have very less testing test data but let's see I want to run this example is it should work so I will run you through I don't want to write it again since I have written it here already so these are the two examples so in cag there is a website called caggle you are you familiar with that website caggle so if you don't go there there is a challenge to identify cats and dogs sorry so and I did that using this KNN so the images that you see are this cat 456 so there is levels leveled images and there is not level images so your task is to identify these things using the same approach so what I did is I represented the image as a histogram of color so I saw that the texture of a cat is much different than a texture of a dog so if you take a color histogram then their differences will be you know different and they should be matching so this that's what this guy is does and at the end we get this type of results so what I could not show here right now is like this type of results is like so dog four and cat one means out of five nearest neighbor four were identified as dogs four were given told as a dog and one is told as cat the ones known level was cat and four known levels was dog so that means the confidence is more that it's a dog and for the cat also that three images defined where nearest neighbor was cat and that's how nearest neighbors work I thought I can actually run this and see what happens let's see let me try to run this no no I use the entire image yes yeah it's a good idea to crop it yes all images are of different sizes and that is the reason why I had to kind of normalize the the float that arrays were of different sizes so that so what I did here is like I took the normalized value like if two are so the distance function if you take a look at the distance function so the distance function takes the length of the two values and whichever is less we go till that but I agree with you you should either be at the center because most of the time the subject of interest is at the center and sometimes the object is like the owner is holding the cat so that is very difficult to identify those are corner cases and I left it yes yes so this is a rudimentary implementation but the idea is to get the point let's see whether it runs I think it was not to be mint as a so let's see did it run on the tutorial so we get that functions covered distance this is a wrong code so we fix that so distance is okay distance covered k and n I have to do some kind of dog cat train notice that so f sharp does not allow tabs so it has to be space so okay hopefully possible in correcting intention okay yes possible because we don't want it to be this is no main here because we are doing it on the tutorial style yes okay so yeah fantastic so this loaded so the known dog loaded entries are like that known cat known entries are like that so these are represented as the float array and these numbers actually are the how many times that image appeared that color appeared in that particular image so that is the is program and then we do the loaded so this will give us the least for every so this level is basically every file name in the directory starts with either scat dot or dog dot so to pick the level I have to just take the first three simple so that's what is this doing so it is creating the training data for us so level and the values is the histogram on the image array image values actually and illegal path in character okay yeah absolutely sure okay so stop due to error what error possibility is that I am opening this or I don't think so please compile okay let's try going sometimes it happens though okay let's clear it here okay this is the reason okay let's case one okay thank you for being patient hopefully hopefully everything is right okay so till this long we have to execute reset reset interactive session okay it stopped due to error nothing to do with my code I think so one more time yeah come up interactive is doing a lot of things because there are a lot of images so it is taking quite a while late in the interest of time let's cancel it and and let's say that we were only interested because only interested in say take 500 and so you are sorting and randomly and taking the first 500 examples we might get all the 500 cats then that way the cats will be identified correctly and no dogs will identify correctly but that will cut it short and let's see that okay you're done so now it's loaded I am sorry I did a wrong thing instead of sort by I used map so everything just came as a grid so should be sort by so I was not expecting to come back so fast don't like to wait I'll make it even more simple I'll make it say let's say 10 elements first 10 not 500 because it's going to take a lot of time to load everything okay so everything is done till known cat and now let's go back to our code and so I'm changing projects here okay and so let's take an exam so loaded let's see how quickly it comes back it's now running for the first 10 should come back meanwhile while it is coming back let's see it's taking more time than I expected I think we'll have to go back to this we recorded video that I had so so here is example what what would have happened so here the this is the digit recognition so it ran against the so it comes back like that it's a nine like that so in this case it would have come back and say I think it's a dog on the think we are almost done so let's break for QA you don't need to clap but yeah I think yeah that's so that's what I could not speak because the initial time we spent on F sharp so this there is a framework called I will point you to those locations so there is a this framework called accord.net machine learning framework okay so this has you know whatever you said like logistic regression multiple logistic regression so logistic regression is basically trying to predict 0 or 1 and linear regression is trying to predict a real value when you have multiple let's say I have several parameters that determine the price of petrol and how long what will happen to petrol price like 60 days later if you want to predict you can use linear regression that is a single value you are trying to predict but then you can do lots of like petrol prices in multiple cities inside India that will be multiple linear regression because you have a set of input values that determine the cost of petrol and then you have a set of output values that will be the petrol values in the multiple cities and then there is clustering algorithms like k-means or k-nearest you know Gaussian mixed models and accord is one of the very good framework for that and yeah I have done accord used accord for linear regression and logistic regression and then you can use this one this is also very important and interesting so the original I will open both pages so WECA is a this is a University of WECA though they implemented this this is a very prevalent you know machine learning framework in Java and they have all sorts of you know things that you can imagine that you will need and WECA sharp is a F sharp wrapper on WECA so it is simple to it is simple to create so basically here you see he is creating a so he is creating a dataset out of a file and then running a j48 it is a decision tree algorithm on top and then getting the classifications so it is pretty simple looking compared to Java so he has wrapped all these things inside I also use this framework for the decision tree then another framework that is coming out of Microsoft research called infer.net infer.net is a Gaussian inference framework so that helps you to do with like and they have a component called infer.net fun so which is a functional way to represent Bernoulli's and Gaussian distributions and you can do lot of those kinds of modeling absolutely beyond the territory of this talk because so scikit-learn is a much more comprehensive if you ask me than this so these are focused on a particular accord.net is kind of scikit-learn for.net but it is not as comprehensive as scikit-learn is and R's language is not so easy to pick up so that way these things can and this does not the barrier of entry is very less for these frameworks because they are written in a language that you understand I mean we understand as .net programmers and you can actually write and code and get the feedback immediate feedback and that kind of helps to boost it yes so accord has a framework called deep learning is has support for deep learning so here you go I mean I will probably point you to that and Google will know it better than me so here is a demo also that person has given a demo like deep neural network using accord and so all sorts of things yes so that is not the not f sharp there is something called reactive extensions rx that is similar to your akka akka framework in java right so that is called reactive extensions and that is now being available for all the platforms java you know android rx android has come up and so that gives you the you know ways to orchestrate when you are getting lot of data and you can actually write your composition on those data in real time and if you are asking for like real time data inside like spark and all I do not know but yeah you can build such things and I am sure these things are being built right now somewhere but as a framework I do not know but the pieces that would be required to build such a framework is rx and of course f sharp and other this machine learning frameworks that are available accord.net is kind of state of the art right now for .net now another thing is I want to mention since you asked this that f sharp runs on cloud and there is a framework that is built called embrace okay I will point you to that so what it does is you can write your f sharp code as if you are writing it for your laptop and then you know run it on the azure platform that is connected to embrace okay so you do not like from the memory usage point and all that like developing the algorithm does not require lot of resources so once you this bias variance tradeoffs and all will help you to decide that whether you need more data or your algorithm is going wrong for some other else whether it may be it is a because you are doing wrong feature selections and that kind of you know decision that you can take with a very low end systems like a 6 GB RAM and you do not need a server class machine for that but once you decide that okay now you want to go up and launch it and you can always have the opportunity to host it on a embrace and azure and as long as you use it your volume goes and so I do not you know very you know supportive for on premise device like that does that make sense which one no f sharp is a language so it does what you tells it to do tell you to you know to do so like any other language if you ask it to store it on disk it will do that it is up to the programmer right if you want to scream it that's up to you to write it so embrace is framework scripting computing and data jobs in the cloud so there are some excellent channel line videos that you can see that feel like open your you know window for this and I like the name embrace the cloud so okay any more questions or we are done okay we are done thank you