CSC207 - Lab 5
Edible Mushroom Detector

Overview

This lab we investigate some pieces of "intelligence," using our ability to divide objects into categories.

Materials

Description

While the formal system of Boolean logic was developed by George Boole, the study of logic has roots as far back as Ancient Greece and Aristotle and his foundational work on Syllogisms. Our ability to reason logically and rationally is often cited as a primary indicator of our intelligence, not only on an individual level as measured by SAT and IQ tests, but also on a species level to distinguish our actions and behaviors from other organisms. As we search for life in the universe, we ultimately hope to find intelligent life elsewhere capable of communication; today we will spend our first lab understanding the basics of intelligence.

Artificial Intelligence (AI) is a field within computer science with the goal of recreating, through the user of a computer, the intelligence we see in human behavior. The goal of AI has yet to be achieved on a broad sense, but much progress has been made in the fields of logic and categorization. We tackled deductive reasoning last lab with logic puzzles, deducing a conclusion of what must be true from the facts presented to us. Today we'll focus on inductive logic: our ability to make generalizations based on data and apply these general rules to new situations.

Step 1

Table of Mushroom Training Data
gill_spacing (in mm)cap_shapecolorbruisesring_numberedible?
10flatgrayYes2edible
17conicalgrayNo0edible
9sunkenbrownYes1edible
15knobbedredNo2edible
1conicalbrownYes0edible
5flatredYes0poisonous
8bellbrownNo1poisonous
24knobbedredNo0poisonous
16flatyellowNo1poisonous
4knobbedbrownNo1poisonous

Imagine you are tasked by the Audobon Society to develop an electronic field guide on mushrooms. They present you with the following ten example mushrooms above, listing a few of their attributes. The most important category is if a mushroom is edible or not, however, this is the only category you cannot directly observe from the mushroom without eating it. They would like a way to make decisions about newly found mushrooms which is based on the information above, and simple enough for someone to remember the edible rule even without the field guide.

Using what you know about if-elif-else statements, write a python program called mushroom_detector.py. First, ask the user to input all the data they observe on a single mushroom, using gill_spacing, cap_shape, color, bruises and ring_number. Using this data, construct three separate tests using if-elif-else statements that will correctly categorize all of the above training data mushrooms, using the following restrictions for each statement:

  1. Only use color and bruises
  2. Only use gill_spacing
  3. Only use cap_shape and ring_number
Output to the user the classification found by each statement, either "edible" or "poisonous", so that you will have three independent judgements made, saying "edible" or "poisonous" for each one.

Step 2

We now wish to evaluate how your field guide will work on unseen data. Test your mushroom_detector.py program with the following data. What is the predicted value for edible/poisonous for each mushroom on each statement? Which statement would you recommend using?

Table of Mushroom Test Data
gill_spacing (in mm)cap_shapecolorbruisesring_number
4sunkenredNo1
13bellredYes2

What To Hand In

Log in to cs.centenary.edu through either Secure FTP or WinSCP using your cs login and password, putting your code in the directory called called lab5. Write up your three if-elif-else statements from step 1 in a file called mushroom_detector.py. Write the results of each test example in step 2 with each if-elif-else statement above into a Google Doc and share it with me.

You must hand in:


© Mark Goadrich, Centenary College of Louisiana