{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## CS 200: Machine Learning\n", "\n", "\n", "

\n", "\n", " \n", "Notes from CS 458 Automated Decision Systems, which also covered rule-based expert systems and case-based systems." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why? \n", "\n", "Both practical and scientific reasons. First, when discussing rule-based expert systems, we mentioned the knowledge engineering bottleneck. It was difficult to get the rules out of the head of the domain expert and into the computer. Case-based systems offered a way to simplify that task by transferring experience instead of rules. The human domain expert had access to her own cases or stories or experience, and could recapitulate that information.\n", "\n", "Machine learning suggests that we move one more step in that direction. Take the human out of the loop and let the machine learn from its own experiences.\n", "\n", "Second, as we study the process of learning, we can develop better scientific theories of human learning. How do people learn? How can we improve the process of learning? How can we improve education and training?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Categories.\n", "Supervised learning: The computer is presented with example inputs and their desired outputs, given by a \"teacher\", and the goal is to learn a general rule that maps inputs to outputs.\n", "\n", "Unsupervised learning: No labels are given to the learning algorithm, leaving it on its own to find structure in its input. Unsupervised learning can be a goal in itself (discovering hidden patterns in data) or a means towards an end (feature learning).\n", "\n", "Reinforcement learning: A computer program interacts with a dynamic environment in which it must perform a certain goal (such as driving a vehicle), without a teacher explicitly telling it whether it has come close to its goal. Another example is learning to play a game by playing against an opponent." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tasks.\n", "Classification: Inputs are divided into two or more classes, and the learner must produce a model that assigns unseen inputs to one or more (multi-label classification) of these classes. This is typically tackled in a supervised way. Spam filtering is an example of classification, where the inputs are email (or other) messages and the classes are \"spam\" and \"not spam\".\n", "\n", "Regression (also a supervised problem), the outputs are continuous rather than discrete. For example, a firm might use linear regression to develop a model \n", "to predict sales as a function of advertising expenditures.\n", "\n", "Clustering A set of inputs is to be divided into groups. Unlike in classification, the groups are not known beforehand, making this typically an unsupervised task." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Algorithms. \n", "\n", "Below is a list of learning algorithms we will discuss. (There are many more.)\n", "\n", "Supervised:\n", "- Naive Bayes\n", "- Support Vector Machines (SVM)\n", "- Decision Tree\n", "- K nearest neighbors\n", "- Random Forest\n", "- Adaboost\n", "- Regression - (Ordinary Least Squares - OLS)\n", "\n", "Unsupervised:\n", "- Clustering\n", "- Principle Component Analysis (PCA)\n", "\n", "Other notable learning algorithms:\n", "- Hidden Markov Models (used by Alexa)\n", "- TensorFlow (used by Google)\n", "\n", "Also, it is often necessary to scrub the data before applying the learning algorithm This process is also known as data pre-processing. You may need to filter missing data or outliers. Though sometimes outliers are more interesting, such as in credit card fraud detection." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tools. \n", "There are many software tools for machine learning Some are free and others are proprietary. We will focus on one of the free ones: the \n", " sci-kit package for Python, aka, sklearn. It is available on the zoo." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Examples. \n", "We will be using examples from the Udacity introduction to machine learning course developed by Sebastian Thrun, of self-driving car fame. The course exercises are available online at the zoo at /c/cs458/www/lectures/sklearn/ud/ud120-projects-master\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Applications. \n", "Machine learning has been applied to a boatload of domains. Here are some examples.\n", "\n", "- Adaptive websites\n", "- Affective computing\n", "- Brain-machine interfaces\n", "- Classifying DNA sequences\n", "- Computer vision, including object recognition\n", "- Detecting credit card fraud\n", "- Game playing\n", "- Marketing\n", "- Medical diagnosis\n", "- Natural language processing\n", "- Natural language understanding\n", "- Online advertising\n", "- Recommender systems\n", "- Robot locomotion\n", "- Search engines\n", "- Self-driving cars (Google)\n", "- Sentiment analysis (or opinion mining)\n", "- Speech and handwriting recognition (Amazon's Alexa)\n", "- Stock market analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Supervised Learning\n", "\n", "Here's how it works. In a classification task, you are given the following.\n", "\n", "

    \n", "
  1. A data set of samples, each of which has a vector of features as well as a label, indicating to which class it belongs. Here is an example from the Udacity course based on self-driving cars.\n", "\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The training data are sets of points in the 2-d space, indicating the bumpiness and grade of the terrain. Associated with each point is a label indicating if the car should drive slow (red) or fast (blue).\n", "

    \n", "2. A classifier algorithm. This algorithm will process the features and the labels, and construct a formula for mapping features to labels. In sklearn, there are lots of possibilities. Here is the code for the Naive Bayes classifier." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Naive Bayes\n", "\n", "See prep_terrain_data.py for code that creates the random terrain dataset." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import sys\n", "from time import time\n", "from prep_terrain_data import makeTerrainData\n", "import numpy as np\n", "import pylab as pl" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "### features_train and features_test are the features for the training\n", "### and testing datasets, respectively\n", "### labels_train and labels_test are the corresponding item labels\n", "features_train, labels_train, features_test, labels_test = makeTerrainData()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "### the training data (features_train, labels_train) have both \"fast\" and \"slow\" points mixed\n", "### in together--separate them so we can give them different colors in the scatterplot,\n", "### and visually identify them\n", "grade_fast = [features_train[ii][0] for ii in range(0, len(features_train)) if labels_train[ii]==0]\n", "bumpy_fast = [features_train[ii][1] for ii in range(0, len(features_train)) if labels_train[ii]==0]\n", "grade_slow = [features_train[ii][0] for ii in range(0, len(features_train)) if labels_train[ii]==1]\n", "bumpy_slow = [features_train[ii][1] for ii in range(0, len(features_train)) if labels_train[ii]==1]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "from sklearn.naive_bayes import GaussianNB\n", "clf = GaussianNB()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create an object clf which is an instance of the Naive Bayes classifier. Each sklearn classifier has a fit() method which has parameters for the training features and labels." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "GaussianNB(priors=None, var_smoothing=1e-09)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.fit(features_train, labels_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The classifier creates a decision boundary which segregates the data into the different classes or categories. In the image above the area with the blue background indicates the conditions the program has learned under which the car can drive fast and the red background indicates the conditions where the car should slow down.\n", "

    \n", "\n", "3. A prediction function. The prediction function simply applies the classifier function created by fit to a new data element, and predicts the label for the new element. In sklearn, classifiers have a predict() method." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 1., 1., 0., 1., 1., 1., 0., 1., 1., 1., 1., 1., 0., 0., 1., 0.,\n", " 1., 0., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", " 0., 1., 1., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 0.,\n", " 1., 0., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0.,\n", " 1., 1., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 0., 0., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 0.,\n", " 0., 1., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 0., 0., 0.,\n", " 0., 1., 1., 0., 1., 1., 1., 1., 1., 0., 0., 0., 0., 1., 1., 1., 1.,\n", " 1., 0., 1., 1., 1., 0., 1., 1., 0., 1., 1., 0., 1., 0., 1., 1., 1.,\n", " 0., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1., 0., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 0., 1., 1., 1., 0., 0., 1., 0., 1., 0.,\n", " 1., 1., 1., 1., 0., 1., 1., 0., 0., 0., 1., 0., 1., 0., 1., 1., 0.,\n", " 1., 1., 0., 0., 0., 1., 1., 0., 1., 1., 1., 1.])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.predict(features_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "4. A scoring function. Once you have used the classifier to fit the data, you can run it on some test data, for which you know the correct answer, and determine how well your classifier performs. Each sklearn classifier has a score() method which allows you to test the classifier with data different from the training data. This process tests the accuracy of your derived model." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.884" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.score(features_test, labels_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "88.4% correct.\n", "\n", "You can also create a separate set of predictions for the test data and independently assess the accuracy." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.884" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred = clf.predict(features_test)\n", "from sklearn.metrics import accuracy_score\n", "accuracy_score(labels_test, pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We added some timing code to see how fast the classification and training goes." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Naive bayes classifier: \n", "\n", "training time: 0.001 s\n", "0.884\n", "scoring time: 0.001 s\n" ] } ], "source": [ "from time import time\n", "print (\"\\nNaive bayes classifier: \\n\")\n", "from sklearn.naive_bayes import GaussianNB\n", "clf = GaussianNB()\n", "\n", "t0 = time()\n", "clf.fit(features_train, labels_train)\n", "print (\"training time:\", round(time()-t0, 3), \"s\")\n", "\n", "t1 = time()\n", "print (clf.score(features_test, labels_test))\n", "print (\"scoring time:\", round(time()-t1, 3), \"s\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The accuracy is 88.4%. You probably want your self-driving car to do better than that.\n", "\n", "The graphics code is in class_vis.py " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "

    " ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "### draw the decision boundary with the text points overlaid\n", "from class_vis import prettyPicture\n", "prettyPicture(clf, features_test, labels_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Support Vector Machine (SVM)\n", "\n", "See https://ksatola.github.io/ml-introduction/04_SVM2.html" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "from sklearn import svm" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training time: 0.042 seconds.\n" ] } ], "source": [ "# Measure time\n", "t0 = time()\n", "\n", "# Fit the model\n", "clf = svm.SVC(kernel='rbf', gamma='scale', C=10000)#(kernel='linear')\n", "clf.fit(features_train, labels_train)\n", "\n", "print(\"Training time: {} seconds.\".format(round(time()-t0, 3)))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
    " ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prettyPicture(clf, features_test, labels_test)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.944" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.score(features_test, labels_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "94.4% correct. Better than naive Bayes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Decision Tree" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n", " max_depth=None, max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, presort='deprecated',\n", " random_state=None, splitter='best')" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn import tree\n", "clf = tree.DecisionTreeClassifier()\n", "clf.fit(features_train, labels_train)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0., 1., 0.,\n", " 1., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", " 0., 1., 1., 0., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1.,\n", " 1., 0., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0.,\n", " 1., 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 0., 0., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 0.,\n", " 0., 1., 1., 1., 1., 0., 1., 1., 1., 1., 0., 1., 0., 1., 0., 0., 0.,\n", " 0., 1., 1., 0., 0., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 0.,\n", " 1., 1., 1., 0., 0., 1., 1., 1., 0., 1., 1., 0., 1., 0., 1., 1., 1.,\n", " 0., 0., 1., 0., 1., 0., 1., 1., 1., 0., 1., 1., 0., 0., 1., 0., 1.,\n", " 1., 1., 1., 1., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 0., 1., 1., 0., 0., 0., 1., 0., 1., 0.,\n", " 1., 1., 1., 1., 1., 0., 1., 0., 0., 0., 1., 0., 1., 0., 1., 1., 0.,\n", " 1., 1., 0., 0., 0., 1., 1., 0., 1., 1., 1., 1.])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.predict(features_test)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.908" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.score(features_test, labels_test)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
    " ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prettyPicture(clf, features_test, labels_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## K nearest neighbors" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NearestCentroid(metric='euclidean', shrink_threshold=None)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.neighbors import NearestCentroid\n", "clf = NearestCentroid()\n", "clf.fit(features_train, labels_train)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 1., 1., 0., 1., 1., 0., 0., 1., 1., 1., 1., 1., 0., 0., 1., 0.,\n", " 1., 0., 1., 0., 1., 0., 0., 1., 0., 1., 1., 1., 0., 1., 1., 1., 1.,\n", " 0., 1., 1., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 0.,\n", " 1., 0., 1., 1., 0., 1., 0., 1., 1., 0., 1., 1., 1., 0., 1., 1., 0.,\n", " 1., 0., 1., 1., 1., 1., 1., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 0., 0., 0., 1., 0., 1., 1., 1., 1., 1., 0., 0., 0., 1., 1., 0.,\n", " 0., 1., 1., 1., 1., 0., 1., 1., 1., 1., 0., 1., 0., 1., 0., 0., 0.,\n", " 0., 1., 1., 0., 0., 0., 1., 1., 1., 0., 0., 0., 0., 0., 1., 1., 0.,\n", " 1., 0., 1., 0., 0., 0., 1., 1., 0., 1., 1., 0., 1., 0., 1., 1., 1.,\n", " 0., 0., 1., 0., 1., 0., 1., 1., 1., 0., 1., 1., 0., 0., 1., 0., 1.,\n", " 1., 1., 1., 1., 0., 0., 1., 1., 1., 0., 1., 1., 0., 0., 0., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 0., 0., 0., 1., 0., 0., 0., 1., 0., 1., 0.,\n", " 1., 1., 1., 1., 0., 0., 1., 0., 0., 0., 1., 0., 1., 0., 1., 1., 0.,\n", " 1., 1., 0., 0., 0., 1., 1., 0., 1., 1., 1., 1.])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.predict(features_test)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.908" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.score(features_test, labels_test)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
    " ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prettyPicture(clf, features_test, labels_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Random Forest" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "clf = RandomForestClassifier(n_estimators=10)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,\n", " criterion='gini', max_depth=None, max_features='auto',\n", " max_leaf_nodes=None, max_samples=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, n_estimators=10,\n", " n_jobs=None, oob_score=False, random_state=None,\n", " verbose=0, warm_start=False)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.fit(features_train, labels_train)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 1., 1., 0., 1., 1., 1., 1., 0., 1., 1., 1., 1., 0., 0., 1., 0.,\n", " 1., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", " 0., 1., 1., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1.,\n", " 1., 0., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0.,\n", " 1., 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 0., 0., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 0.,\n", " 0., 1., 1., 1., 1., 0., 1., 1., 1., 1., 0., 1., 0., 1., 0., 0., 0.,\n", " 0., 1., 1., 0., 0., 1., 1., 1., 1., 0., 1., 0., 0., 1., 1., 1., 0.,\n", " 1., 1., 1., 0., 0., 0., 1., 1., 0., 1., 1., 0., 1., 0., 1., 1., 1.,\n", " 0., 0., 1., 0., 1., 0., 1., 1., 1., 0., 1., 1., 0., 0., 1., 0., 1.,\n", " 1., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 0., 0., 1., 1., 0., 0., 0., 1., 0., 1., 0.,\n", " 1., 1., 1., 1., 1., 0., 1., 0., 0., 0., 1., 0., 1., 0., 1., 1., 0.,\n", " 1., 1., 0., 0., 0., 1., 1., 0., 1., 1., 1., 1.])" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.predict(features_test)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.924" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.score(features_test, labels_test)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
    " ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prettyPicture(clf, features_test, labels_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adaboost" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import AdaBoostClassifier\n", "clf = AdaBoostClassifier(n_estimators=100)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AdaBoostClassifier(algorithm='SAMME.R', base_estimator=None, learning_rate=1.0,\n", " n_estimators=100, random_state=None)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.fit(features_train, labels_train)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 1., 1., 0., 1., 1., 1., 1., 0., 1., 1., 1., 1., 0., 0., 1., 0.,\n", " 1., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", " 0., 1., 1., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1.,\n", " 1., 0., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0.,\n", " 1., 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 0., 0., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 0.,\n", " 0., 1., 1., 1., 1., 0., 1., 1., 1., 1., 0., 1., 0., 1., 0., 0., 0.,\n", " 0., 1., 1., 0., 0., 1., 1., 1., 1., 0., 0., 0., 1., 1., 1., 1., 0.,\n", " 1., 0., 1., 0., 0., 0., 1., 1., 0., 1., 1., 0., 1., 0., 1., 1., 1.,\n", " 0., 0., 1., 0., 1., 0., 1., 1., 1., 0., 1., 1., 0., 0., 1., 0., 1.,\n", " 1., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 0., 1., 1., 0., 0., 0., 1., 0., 1., 0.,\n", " 1., 1., 1., 1., 1., 0., 1., 0., 0., 0., 1., 0., 1., 0., 1., 1., 0.,\n", " 1., 1., 0., 0., 0., 1., 1., 0., 1., 1., 1., 1.])" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.predict(features_test)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.924" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.score(features_test, labels_test)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
    " ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prettyPicture(clf, features_test, labels_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }