Who will win the next match?





We all love a good game. Like all other games, the game of Cricket is about skill and preparation of individual players, coordination and teamwork of the whole team, evolving tactics and overall strategy adopted by each team in each match, and of course some luck. It is hard to predict what will happen in the next ball, the next over, the next inning, or in next match. This inability to predict and the uncertainty of the outcome is what makes these games fun. But are these games really completely random? Is there some predictability to these games? Don’t we as cricket lovers and knowledgeable about all the past games make a prediction about which team might win even before the start of the game? Let’s see if an AI system can do the same!

What if an AI system that has “watched” all the previous games can actually predict with some confidence who will win the next match given mainly the team composition of the two teams and some context of the match. 

This challenge is about building such a prediction system. It is also a challenge on how you think from first principles about the art of iteratively engineering features and building models – the core to any AI system building.

The Data

You are given the following three data files for this challenge.

DELIVERIES– data contains a ball-by-ball log of past 500 IPL matches. Each row corresponds to each ball delivered in each over of each inning of each match along with (a) the metadata associated with the ball (e.g. batsman, bowler, etc.) and (b) the outcome of the ball (e.g. runs, extras, dismissal etc.). (See Appendix A for details).

MATCHES– for each of those 500 matches in the DELIVERIES data, this file contains (a) additional meta-data about the match (e.g. city and stadium), (b) who won that match, and (c) by what margin (e.g. a number of runs/wickets). (See Appendix B for details)

PREDICT– this is the test data where you are given a set of 136 matches along with the team and composition of each of the two teams. (See Appendix C for details).

The Challenge

Your challenge is to build a model given the DELIVERIES and MATCHES dataset to predict the winning team in any given match. The input to the model is the set of players of the two teams and the output is a probability that the first of the two teams will win this match (SeeAppendix D for a sample output file). Let’s see how well you can predict the winning team in a cricket match. DELIVERIES The deliveries file contains the ball-by-ball log of what happened in each delivery in 500 past IPL matches over the last ten years. It is a CSV file with the following columns:

Appendix A

Screen Shot 2018-05-17 at 1.28.56 AM


For each of the 500 matches, this file gives some meta-data and outcome of the match.

Appendix B

Screen Shot 2018-05-17 at 1.30.21 AM.png


For the 136 matches, you are given the following meta-data.

Appendix C

Screen Shot 2018-05-17 at 1.31.46 AM.png

Screen Shot 2018-05-17 at 1.32.20 AM.png

Data Set – Download Data Set

Screen Shot 2018-05-17 at 1.34.46 AM


Your goal is to predict whether team1 will win or lose this game. Your output should be a two-column CSV file with the following columns:

Appendix D

Screen Shot 2018-05-17 at 1.35.52 AM.png

Evaluation Metric

Your score will be a percentage of team wins that your machine learning model correctly classifies. This metric is known as accuracy.

Accuracy = (Total number of correct responses / Total number of responses) * 100

Final Submission

You can use any ML library and environment to build the models and generate the final predictions. You need to submit the following to be considered for the Challenge:

  • OUTPUT file as described in Appendix D
  •  List of features you used in your model – a reasonable description of each feature
  • A brief description of the model you used and the hyper-parameters of this model
  • Your code for both generating features, training models, and scoring the test data



Build a chatbot in ten minutes with Watson


Getting started on Bluemix

To get started with Conversation, you’ll need a Bluemix account. If you don’t have one already, you can sign up here (and get a free 30-day trial!). Once you have signed in, navigate to the catalog, scroll down to the Watson services, and select the Conversation tile. For this example, the Free plan will provide everything you need.

After you create an instance of the service, select it from the services section of your dashboard:


This will bring up a window with some links and information. Click on the Launch tool button to get started:


At this point, it’s time to create a workspace. One workspace corresponds to one bot—it contains all the configuration information that gives your bot its unique personality. In this step you can give it a name, write a description, and choose from one of five languages currently supported:


Configuring intents

The first thing you’ll see when you open your new workspace is the intents tab. Intents are things that the chat users are looking to do: change passwords, get status updates, make complaints, etc. What’s really neat about managing intents is that you are actually training the system to understand what is needed without depending on the exact words. You give multiple training examples that correspond to specific actions or requests.

Creating new intents is easy. First, click on the Add intents button. Pick a simple name for the intent (we’ll use this later). All you have to do to finish is add examples of user requests that fit the category.

For this bot, start with the basics: hello and goodbye. You’re going to train some intents to recognize opening and closing statements in a conversation. Here’s what I trained on for #greetings:

And here is what I used for #goodbyes:


Once you have those pieces, start training for more specific requests. As this is a customer service bot, you can expect some form of customer complaint. Train for that with the intent #complaint:


This covers the generic requests for help. But you’ll need something to handle the next step—the specific task that the user is requesting help for. You’re only going to include one example in this bot (remember, it’s super simple). Here are the training examples for #return:


Almost finished with this step! The final piece is training an intent to catch everything else that someone might say. These examples should be varied both in length and content. Here is my #anything_else intent:


Preparing entities

Once you’ve finished training your intents, move to the Entities tab. Entities are the specific pieces of information we want to extract from the user response. You’ll want to group entities that might trigger a similar response in your dialog. In this customer service example, we want to put together a list of potential items that the customer may wish to return. Here are my @returnItems:


Dialog flow

When your intents and entities are specified, you can move on to constructing the dialog flow. This is the most complicated piece of your bot, because conversations can go anywhere! You want to focus on providing answers for the tasks you can help with, and providing feedback when the conversation gets out of scope. The super simple customer service chat bot will be able to respond to greetings and goodbyes, as well as give direction when a customer has a complaint, including specific feedback when the customer is looking to return an item.

Once you are in the Dialog tab, click Start and you will see the first node. Type “#greetings” into the Enter a condition field, and “Hello!” into the Watson says field.


This bot is set up to respond only after the user has said something to kick it off. If you would prefer to have it initiate the conversation, you could replace the “#greetings” with “conversation_start”.

At this point, you can begin to test your bot. In the upper right corner of your workspace, there is a speech bubble with three dots. When you click on this, a chat window slides in from the right. This is a test interface for your currently constructed dialog. You can test the classification ability of your intents by trying out some greetings that weren’t included in your training examples:


You can see that this test tool not only gives the response you set in the dialog node earlier, it also lets you see which intent best matches the input text. This is very useful for debugging!

Now it’s time to build the rest of your dialog. Your initial node has two plus signs, one to the right and one at the bottom. These represent two different ways to expand on the conversation. Clicking the plus sign at the bottom will create a parallel track of the conversation, clicking the one on the right will create a dependent track of the conversation.

Start by clicking the plus sign on the bottom of the #greetings node. In your new node, put “#complaint” in the condition field, and “Sorry to hear that, what can I help you with?” in the response.


Next, you’ll want to create a node for the specific complaint of wanting to return something. When I did this initially, I clicked the plus sign on the right side of the #complaint node, assuming the specific request to return something would happen after making a basic complaint statement. In my testing, I realized that it is likely a user would request to return something without ever making a generic complaint statement. A return request shouldn’t be dependent on a complaint statement, so I revised the dialog to make returns a parallel track:


There’s a lot going on here, so I’ll explain one node at a time. The first node (#return) does not have a response. This is because you want the response to be specific to the item being returned. Unlike the situation mentioned previously, this time you do have a true dependency and should use the plus sign on the right side of the #return node. I created the @returnItems:parrot node to handle the situation where the user is requesting to return a parrot, the @returnItems:(video cassette) node to handle the user returning a movie, and the true node to handle all other returns.

If I had only done this, the conversation would stop once the #return condition was satisfied. To keep it going to the next level, I clicked on the three dots at the top right corner of the #return node, selected Continue from…, and then clicked on the @returnItems:parrot condition. Because it is at the top, it will be evaluated first, followed by the other two conditions in the order. For more about the Continue from… functionality, please check out the documentation.

After the #return node, create two more parallel tracks (at the first level) for #goodbyes and #anything_else. This will cover all the use cases your bot can handle!


Testing and revising

When you’ve finished configuring your bot, you’ll want to test to make sure it does the job it’s supposed to. Using the testing tool discussed earlier, act as if you are a user who needs support help. Make sure you try out some statements that aren’t exactly the same as your training data. Here’s an example of a conversation that went as expected:


Here’s an example where the return request wasn’t properly recognized:


To improve your bot, add this statement to the list of examples in the #return intent. As soon as you make this change, you’ll see this banner in your test tool to let you know the system is updating:


When the updates are complete, you’ll see this:


If you test again, the system will now recognize requests for switching as returns:


Next steps

You now have a trained chat bot. The next step is to embed this into an application and connect with other services. To do this, you’ll want to use the Conversation API. I won’t go into all the details here, but we’ve got some great sample applications and documentation to help you get started. If you run into any troubles, make sure you connect with us on our support forums or Slack.

Why Experienced Programmers Should Contribute to Open Source


People who have taken programming as their career has to do coding for almost 30 years. Will they always get an opportunity to do complex tasks or to write project from scratch? The answer is NO. Sometimes they may get but not always. What should they do?

Mostly programmers get a chance to enhance the existing code, fix bugs reported by clients or some other maintenance work. Every programmer has a dream to do something big, when they were in schools or college. When they enter in to the corporate world, it is shattered. Very few get an opportunity to pursue challenging tasks.

Say in your project, If you want to add a new feature or change existing architecture using Hadoop, NodeJS, or using any latest technology then Will you get a chance? Your manager will certainly reply that product management will not accept or they have different priority. 

If a programmer landed up in a less challenging job then what should they do? If you ask your friends they may advice to quit the job and pursue the dream. But don’t do that. It may hurt your lifestyle or your family lifestyle. 

Corporate industry always tries to make money in the things they sell. They invest in a project which makes money. It is important for any industry or economy to make money. Continue to work in your company but pick some interesting open source projects and work on it. Join with your friends and start some thing interesting and creative.

If you continuously eat food outside in a restaurant or a hotel then in a few days you may get bored or your stomach will be upset. The solution is cook your own food. If you want something challenging then start something creative. 

Happy Programming!! 

Why you probably shouldn’t buy a Windows 8 ultrabook !


The clock is quickly winding down to the official launch of Windows 8. Along with a completely redesigned interface and Windows experience, hardware partners are lined up, ready to offer Windows 8 ultrabooks. The question businesses and consumers will need to answer, though, is whether or not a Windows 8 ultrabook makes sense.

The short answer is, “No”. If you’re in a hurry, you’re welcome. If you have a few minutes, though, read on. I’ll explain why I believe Windows 8 ultrabooks aren’t a wise purchase right now.

In a few short weeks the Windows 8 era will begin, but right now the anticipation of the next-generation flagship OS from Microsoft seems tepid at best. There’s a confluence of factors that could impact the initial success of Windows 8 — Windows 7 is very popular and still gaining market share, Windows 8 seems uniquely suited to touchscreen hardware, and ultrabooks don’t seem to be delivering the bang for the buck necessary to deliver what users are looking for.

Let’s look at each of those factors a little more closely:

Windows 7

It took a while for Windows 7 to knock Windows XP off the pedestal to assume its rightful place as the number one desktop operating system, but it finally did so a few months ago. Windows 7 is very popular, and both businesses and consumers are still making the switch from older versions of Windows to Windows 7 in droves.

Windows 7 is a solid, proven operating system. It seems like Windows 7 will be the new Windows XP — the OS that people love, and refuse to upgrade from without a very compelling reason.


The problem, then, for Microsoft is that Windows 8 doesn’t seem to present a very strong case for upgrading from Windows 7.

Windows 8 has a bit of a split personality. The main “Modern” (formerly “Metro”) interface is comprised of colorful tiles, designed to run mobile-style apps, and uniquely engineered to be used as on a touchscreen device. Behind that veil, is “desktop mode”, which is essentially Windows 7.

On a touchscreen device like the Microsoft Surface tablet, Windows 8 will probably shine. However, using Windows 8 on traditional desktop or laptop hardware with no touchscreen leaves a little to be desired. It basically feels like you’re still using Windows 7, but you have to jump through some extra hoops to get past the Modern UI to run the software you need to run.


So, that brings us to the ultrabooks. An ultrabook is basically just a thinner, lighter laptop — a’ la the Apple MacBook Air. Ultrabooks cost significantly more than comparable processing horsepower in a larger notebook, generally lack built-in peripherals like DVD drives in order to save space, and yet still don’t have touchscreen technology.

One lofty estimate for ultrabook sales was recently cut in half due to underwhelming results thus far. The launch of Windows 8, and the impending holiday season will probably create a spike in ultrabook sales, but overall the demand simply doesn’t seem to match expectations.

For Windows 8, it seems like a better alternative would be a tablet. The tablet is designed to be used as a touchscreen device, and is suited to take advantage of the unique features of Windows 8.

Many vendors are offering hybrid solutions — Windows 8 tablets with a physical keyboard docking station that turns it into a convertible tablet / ultrabook mashup. If the price is right, a tablet hybrid could be a better platform for Windows 8, a more versatile mobile device for users, and deliver better bang for the buck than a Windows 8 ultrabook.

So you think you want to write a Wikipedia article?


Lucky you! You’re about to join the more than 15 million  users who already call Wikipedia “home”. Or as they lovingly refer to themselves: “Wikipedians.”

But what some early-Wikipedians may not realize is that adding a page to the Wikipedia community takes a little more elbow-grease than just a quick write-up and copy-paste. Just like any game, there are a few rules you have to follow before you can let your creative juices flow.
Here are a few tips to help you get started on your voyage into writing a fabulous, and post-worthy, Wikipedia article.


Tip #1: Really Think About It

Usually when a new Wikipedia article is created, it is because the subject has accrued some apparent popularity or has a bit of history.

The best rule of thumb is this: If you were a random person searching for articles on Wikipedia, would you think your topic would be worth a read? If you said “Yes,” then marvelous, please do continue reading. If you aren’t sure or said “No,” then continue on with your daily life.

Tip #2: Don’t Reinvent the Wheel

Before you spend the time and effort on writing your Wikipedia article, make sure you spend a decent amount of time searching the site to assure that it hasn’t been written about before. Use alternate search terms just in case your article is labeled under a different heading. If you find an article, then go about the necessary means to create yourself a user profile and start editing/adding to it. If you didn’t find an article, then carry on to the next tip!

Tip #3: Gather Those Resources

I’m sure we’ve all written a research paper at one time or another, so this tip isn’t all that new- but it’s one of the most important aspects to writing a successful, post-worthy article. Just as you wouldn’t turn in a term paper without proper research and a reference page, the same goes with a Wikipedia article. Your article could be written with some of the most awe-inspiring, interesting information in the world- but is likely to be thrown out if it has nothing to back up the claims it makes. Don’t bother writing the article if you don’t have references.

Tip #4: Be Chronological

So you have a Wikipedia article idea that’s never been done and resources to back it up, it’s time to start writing! While Wikipedia doesn’t necessarily have set rules as to how to write an article, there are some tried-and-true techniques to follow if you want it to be the most effective. One of the most widely used techniques is creating a coherent article through writing in chronological order. If you search  Coca-Cola’s Wikipedia article, you’ll notice that after the brief intro paragraph in the beginning, there follows headings of history, description of the formula, production, etc. Normally, you’ll want to begin your article with this introductory paragraph and then start chronologically with your topic’s history. From there, you can move forward with sectioning appropriate to your article. Take a peek at Coca-Cola’s article and other articles to get a feel for the way they move chronologically.

Tip #5: Watch that Tone

When writing your article, imagine that you’re writing that term paper we talked about above in Tip #3. Never never never use anything other than a formal tone. Remain businesslike in your demeanor during the article and, even though you’re probably partial to your topic to begin with, keep the bias out! No advertising- remember that Wikipedia is merely for information. This also includes leaving out jargon and slang.
Also important: State the obvious. What is obvious to you may not be obvious to your reader- so remember to remain clear and concise!

Tip #6: Paragraphs & Headings, Oh My!

As with any type of writing made for viewing on the Internet, keep the paragraphs short. However, make sure they are long enough to develop ideas. One-sentence paragraphs are also frowned upon by Wikipedia. Cut up longer paragraphs to make them easier for the reader to follow.
Headings in Wikipedia articles normally follow a hierarchical scheme, with headings followed by subheadings when appropriate. While wording of headlines is typically up to the writer of the article, many articles use similar headings. For some ideas of headings that are widely used in articles, check out Wikipedia’s Manual of Style.

Tip #7: Illustrating the Piece- Images & Tags

If you feel that a picture would help illustrate the content in your article, by all means use it! Put don’t post pictures in your article willy-nilly just to give it some “flavor.” Articles with unrelated pictures also tend to be less post-worthy.
Don’t forget, while writing, to pay attention to places in which you can insert tags to other Wikipedia pages. For instance, if you refer to something in your article that already has an established page on Wikipedia remember to link to that page when your article is published.

Tip #8: Pay Attention to Length

Don’t overdo it. Keep in mind how much, you as a viewer, would actually want to read. In today’s fast-paced society many people lose interest in Internet articles which tend to go on longer than needed. This all comes back to being concise again. Say what needs saying, and move on.

Tip #9: Footnotes are Key

This is, by far, the most challenging part of writing a Wikipedia article. Normally the most common method for citing material in an article is by using footnotes. Wikipedia provides a nifty guide on how to go about writing up the footnotes and how to include them in your article. While writing your article, set up your references into footnotes so they are all set to go when you incorporate them during posting your article to the actual website later. Stay tuned for a blog exploring how to actually post your article on Wikipedia- for now, it is easier to write your draft up in Word.

Tip #10: Spellcheck it, Baby!

This should be a no-brainer. Obviously, making sure that spelling errors are corrected is vital. Even the tiniest spelling mistake can destroy an article’s reputation on Wikipedia.

Phew! Quite the list of tips, eh? Are you ready to go out there and take on the task of writing that Wikipedia article? I hope so!


Yahoo! Open Hack is Back!


The Yahoo Developer Network is very excited to announce the return of Open Hack India, to be held on the 30th and 31st of July in Bangalore, India. This event will mark the 4th Open Hack in India and Yahoo!’s 15th Global Open Hack event.
The last India Open Hack held in Bangalore in 2010 was a huge success with over 600 developers and designers hacking into the wee hours and producing an astounding 110 fantastic technology hacks. We are planning to make this event even bigger and better then before.
We hereby issue a call to action for developers and designers from all across India and Asia to come to Bangalore and participate in this most awesome of events!
Yahoo! will provide you with everything you need to have fun, be creative and productive, and impress your peers with what you can do with a computer and the wealth of technologies and data available on the Web.
If you’d like to be considered for participation then register here.
Follow @OpenHackDay for the latest Hack Day India news. If you have any questions, please email aaditya025@gmail.com with “Open Hack India Query” in the subject line.

Welcome to a Faster Web :- SPDY


SPDY, a protocol google revealed in late 2009, dramatically speeds up Web page loading by changing the way that browsers communicate with servers. Until now, Google has only tested the research project internally and deployed it on a few of its own sites. But today, the protocol launches as a commercial product.
Website optimization company Strangeloop has built SPDY into its flagship product Site Optimizer, software that sits in between a website and its users, and adjusts the site’s code to make pages load more quickly. Strangeloop’s customers will have the ability to turn the protocol on easily; in tests, the protocol has sped up websites by 10 to 20 percent.
At first, this will only make a difference for people who visit websites using Google’s Chrome browser (the only one that supports SDPY), but Strangeloop expects that it could end up having a big impact on mobile devices as well, since Google is likely to build SPDY into browsers designed for Android.
The speed with which a website responds to users is an increasingly important technical and economic issue. According to the content-delivery network Akamai, people only give a site three seconds, on average, to load before giving up and navigating away. Better performance often means more page views, and thus more interaction with users. For online shopping sites, this translates to higher sales.
It’s not just individual sites that have an interest in speeding up the Web. Google has been working to make the Web as a whole faster, reasoning that the entire experience needs to be lightning-quick and smooth to keep people happily using its many services. Google also hopes to entice people to use more Web services and less desktop software (see, for example, its Chrome OS), and the company knows this won’t be possible if they struggle with performance.
There are a lot of ways to speed up a website. Changing the protocols that determine how information gets sent over the Internet is potentially the most rewarding but also one of the trickiest. These protocols are fundamental to communication between websites and servers, so they can have far-reaching effects on website performance across all devices. However, to roll SPDY out to the entire world, all browser manufacturers would have to adopt it, and every server would have to support it, says Joshua Bixby, Strangeloop’s president. This is a tall order, and so SPDY has “real implementation challenges,” he says.
Strangeloop’s existing product is, however, well-positioned to help Google make a start. Strangeloop already helps businesses speed up their websites by handling optimization for them without requiring them to change their code or hardware. The Site Optimizer software sits between a company’s Web server and the user’s browser and adjusts the website’s code automatically to make it load faster; this already includes improvements customized for specific browsers. Site Optimizer customers can choose to turn SPDY on, making their servers behave as if the protocol were installed, for customers who visit their sites using Chrome.
Browsers today typically open up lots of connections to a server, in order to start downloading lots of information at once—images, ads, text, and so on. Tom Hughes-Croucher, chief evangelist for Joyent, a company that provides cloud software, explains that, while this does speed things up, the approach also has its problems. Those connections take time to “warm up” and start downloading at their full capacity. Also, they don’t prioritize well, so the user might end up waiting for images at the bottom of a page to load when what he’s really looking at is on top.
SPDY addresses this problem by opening one connection that is capable of loading many different parts of the page at once. It also allows programmers to manage how pages load, so they can deliver more important pieces first.
Strangeloop’s product is designed to handle using SPDY, so customers don’t have to worry about writing different code for users who do and don’t use SPDY. The company worked extensively with Google engineers to get SPDY deployed and running effectively.
Bundling SPDY with existing optimization products is a good starting strategy for Google, says Eric Hansen, founder and CEO of the website optimization company SiteSpect. He expects Google to eventually include SPDY in its own optimization product, called mod_pagespeed, which is similar to Site Optimizer. Google needs to do whatever it can to get websites to adopt SPDY, he says, because that’s the biggest part of its “uphill battle” to gain acceptance for the protocol.
Bixby believes that websites will become more willing to use SPDY when they see its potential benefits. “What’s really exciting to me is its capabilities on the mobile side,” Bixby says. Google hasn’t yet built SPDY into Android’s browser, but when it does, the protocol stands to make an even bigger difference. Since mobile Internet browsing is painfully slow and Android handsets have a large portion of smart phone market share, Bixby thinks SPDY could make a difference in that arena. He says, “I would be very surprised if we don’t see this in Android in the near future.”