contextera

Thursday, March 23, 2017

Google charts

We had a requirement where we need to come up with UI mock-ups.

During this process we came up with a JS fiddle which I thought are worth sharing.

This assumes a pre defined JSON structure coming from the server whose CPU and RAM need to be monitored.

These charts are drawn using Google Charts SDK at https://developers.google.com/chart/interactive/docs/gallery

CPU and Memory monitoring :



You can play around the code at https://jsfiddle.net/8vsm3wkr/5/

Wednesday, March 15, 2017

Working on Classification algorithm



After a long time Today I got a chance to work on Classification in Python. I selected the world favorite Iris dataset.

One of my teams submitted a very interesting idea as part of a Hackathon and they needed help on Classification logic. I am not revealing the idea itself as that team might file for a patent.

The code below is what I wrote to demo how they can use classification to solve their problem.

I used the Iris dataset available at https://archive.ics.uci.edu/ml/datasets/Iris  as a sample dataset.

To give a brief about this dataset, Iris is a flower and this dataset has details of about 150 such flowers samples.

Each sample (each row) in this dataset has the following 5 columns
  1. sepal length in cm
  2. sepal width in cm
  3. petal length in cm 
  4. petal width in cm 
  5. class : Which can be any one of  "Iris Setosa",  "Iris Versicolour" or "Iris Virginica"

In the dataset there were some rows where "Versicolor" is used instead of "Versicolour" basically due to the US and British style of spelling the word "Colour".

Due to this I had to handle this in my code.

Now, coming to the classification logic itself, like any classification problem, I used this dataset to train my model. This model basically predicts the flower class given the 4 parameters [sepal length, sepal width, petal length, petal width].

Finally below is the code that did the classification


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import pandas as pd 


def get_iris_data():

 url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
 col_names = ["sepal length", "sepal width", "petal length", "petal width", "classification"]

 iris = pd.read_csv(url, header=None, names=col_names)
 #print iris.head()
 return iris

def classify(training_features, training_classification, test_features):
 from sklearn.linear_model import SGDClassifier

 classifier = SGDClassifier(loss="hinge", penalty="l2")
 classifier.fit(training_features, training_classification)
 pred_class = classifier.predict([test_features])
 return pred_class

def print_class(ind):
 if ind == 1 :
  return "Iris-setosa"
  
 elif ind == 2:
  return "Iris-versicolour" 
  
 elif ind == 3:
  return "Iris-virginica"

def get_numeric_classification(iris_classification):
 
 trans_classification = []
 for iclass in iris_classification:
  
  if iclass == "Iris-setosa":
   trans_classification.append(1)
  elif (iclass == "Iris-versicolour" or iclass == "Iris-versicolor"):
   trans_classification.append(2)
  elif iclass == "Iris-virginica":
   trans_classification.append(3)

 return trans_classification


# Get the Iris Dataset
iris = get_iris_data()

# Except for "classfication" we are considering all other columns to build our model.
train_columns = ["sepal length", "sepal width", "petal length","petal width"];

# Seperate out the features that we are using to build our model from the main dataset
iris_features = iris[train_columns]

# Separate out the classification column that we will be using to train our model
iris_classification = iris.classification

# Since the classification algo can not take strings, we are transforming our classification into integers
iris_transformed_classification = get_numeric_classification(iris_classification)

# Sample test data
test_data = [1.1, 2.3, 4.5, 2.8]

# The predicted class of the sample test data
pred_class = classify(iris_features, iris_transformed_classification, test_data)

print pred_class

# Transforming back the predicted class into the actual classification
print print_class(pred_class)

Thursday, January 12, 2017

OpenGraph Node Module


Today I tried this Node module OpenGraph and it worked seamlessly.

We just need to do the following steps

Install Open Graph Module

npm install open-graph

Once installed, you can invoke it through your JS code as follows

var openGraph = require('open-graph');
openGraph("http://github.com/samholmes/node-open-graph/raw/master/test.html", function(err, metaTags){
    console.log(metaTags);
});
Output JSON
This will print the meta data tags present in the 
input URL.
The result for this example is
 
{
  title: 'OG Testing',
  type: 'website',
  url: 'http://github.com/samholmes/node-open-graph/raw/master/test.html',
  site_name: 'irrelavent',
  description: 'This is a test bed for Open Graph protocol.',
  image: 
  { 
     url: 'http://google.com/images/logo.gif',
     width: '100',
     height: '100'
  }
}
 
 
One thing that I feel would be very useful is 
to handle sites 
which doesn't have Open Graph meta data tags. 
The author of this module already had this 
in his TODO list. Sounds easy right, then why 
not give it a shot.



Tuesday, January 20, 2015

Technora - Startups | Entrepreneurs | Technology

I started writing a blog on Indian Entrepreneurship, Startups etc. You can find it at www.technora.in

I added a section "Just Baked" for those startups which come up with new products and want to reach out to people. We welcome all of you to submit your startup products or refer a startup that you like at Just Baked, and we would be more than happy to do post on it.

The aim of this site is to help the fellow entrepreneurs to get to their target audience and get appropriate feedback on their products.

Monday, December 10, 2012

Blogger preview icon similar to sencha loading icon

Another observation. When i did a preview of my earlier blog post, blogspot displayed a nice image http://www.blogger.com/img/gear.gif
which looked like the one extjs sencha http://www.sencha.com/ uses
I am trying to learn extjs for my office project and was able to identify this

GMail was down for a while

Login option on Wikipedia pages

I was trying to see how Google news works and came across a link to wikipedia on the same topic. I was surprised to see a link to "Create Account", "Log In" on the top right hand side of the page. Just sharing the info