2 - Intro в Scikit-learn

Цели

  • Основные понятия:

    • Модели
    • Кластеризация, Классификация, Регрессия
    • Fit, Predict, Evaluate
    • Accuracy, confusion matrix
    • Overfitting, training/test data, and crossvalidation
  • API:

    • model.fit()
    • model.predict()
    • accuracy_score()
    • confusion_matrix()
    • train_test_split()
    • cross_val_score()

What is a model?


In [1]:
from IPython.display import Image

In [2]:
Image("images/ml-model.png", width=500)


Out[2]:

What kind of algorithms do we have?


In [3]:
Image("images/ml-1.png", width=800)


Out[3]:

3 шага моделирования: fit, predict and evaluate (metrics)

- Clustering

Data


In [4]:
from sklearn.datasets import make_blobs

In [5]:
X, y = make_blobs()

Algorithm

k-means (метод k-средних) — наиболее популярный метод кластеризации. Он стремится минимизировать суммарное квадратичное отклонение точек кластеров от центров этих кластеров


In [2]:
from sklearn.cluster import KMeans

In [3]:
kmeans = KMeans(n_clusters=3)

Fit


In [8]:
kmeans.fit(X)


Out[8]:
KMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=3, n_init=10,
    n_jobs=1, precompute_distances='auto', random_state=None, tol=0.0001,
    verbose=0)

Predict


In [9]:
kmeans.predict(X)


Out[9]:
array([2, 2, 1, 1, 1, 2, 0, 1, 0, 0, 2, 1, 0, 0, 2, 2, 2, 1, 2, 1, 0, 0, 2,
       0, 2, 0, 0, 1, 1, 2, 0, 2, 1, 0, 0, 0, 1, 1, 2, 0, 1, 1, 1, 0, 2, 1,
       2, 2, 0, 2, 2, 1, 2, 2, 0, 0, 2, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 2, 2,
       2, 1, 0, 1, 1, 1, 1, 1, 0, 1, 2, 1, 0, 1, 0, 1, 2, 2, 0, 0, 0, 1, 1,
       0, 2, 2, 2, 2, 1, 2, 2], dtype=int32)

In [10]:
cluster_labels = kmeans.predict(X)

Evaluate


In [11]:
from sklearn.metrics import accuracy_score

accuracy_score - показывает точное совпадение тренировочных и предсказаных значений

y_pred = [0, 2, 1, 3]

y_true = [0, 1, 2, 3]

accuracy_score(y_true, y_pred)

0.5

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html


In [12]:
accuracy_score(y, cluster_labels)


Out[12]:
0.33000000000000002

Accuracy


In [16]:
Image("images/accuracy.png", width=300)


Out[16]:

Упражнение: используя iris data set попытайтесь его класифицировать и попробуйте разные метрики

Data


In [18]:
from sklearn.datasets import load_iris

In [19]:
iris = load_iris()
X = iris.data
y = iris.target

Выберите алгоритм класификации


In [20]:
#from sklearn import svm

Тренировка модели


In [23]:
# Your code here

Predict


In [24]:
# Your code here

Оцените точность


In [25]:
# Your code here

Evaluating models


In [26]:
Image("images/training-data.png", width=500)


Out[26]:

In [28]:
from sklearn.cross_validation import train_test_split

In [30]:
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.4)

In [31]:
from sklearn.neighbors import KNeighborsClassifier

In [32]:
model = KNeighborsClassifier()

In [33]:
model.fit(X_train, y_train)


Out[33]:
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=5, p=2,
           weights='uniform')

In [35]:
model.score(X_train, y_train)


Out[35]:
0.9555555555555556

In [34]:
model.score(X_test, y_test)


Out[34]:
0.98333333333333328

Crossvalidation


In [29]:
Image("images/crossvalidation.png", width=500)


Out[29]:

In [36]:
from sklearn.cross_validation import cross_val_score

In [38]:
cross_val_score(model, X, y, cv=5)


Out[38]:
array([ 0.96666667,  1.        ,  0.93333333,  0.96666667,  1.        ])