Шестаков А.В. Майнор по анализу данных 31/05/2016
Метрические методы классификации и регрессии - одни из самых простых моделей. Они основаны на гипотезе о компактности (непрерывности) - близким объектам соответствуют близкие ответы.
Дело остаётся за малым:
Какие недостатки метода kNN вы помните из лекции?
from sklearn.datasets import make_moons
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
%matplotlib inline
X, y = make_moons(noise=0.3, random_state=123)
plt.scatter(X[:,0], X[:,1], c=y)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.cross_validation import train_test_split
knn = KNeighborsClassifier(n_neighbors=5, weights='uniform', metric='minkowski')
knn.fit(X, y)
x_range = np.linspace(X.min(), X.max(), 100)
xx1, xx2 = np.meshgrid(x_range, x_range)
Y = knn.predict_proba(np.c_[xx1.ravel(), xx2.ravel()])[:,1]
Y = Y.reshape(xx1.shape)
plt.contourf(xx1, xx2, Y, alpha=0.3)
plt.scatter(X[:,0], X[:,1],c=y)
data = np.loadtxt('kengo.csv', skiprows=1, delimiter=',')
X = data[:,0].reshape(-1,1)
y = data[:,1]
plt.scatter(X, y)
from sklearn.neighbors import KNeighborsRegressor
# Your code here
from sklearn.datasets import load_boston
data = load_boston()
print data['DESCR']
Загрузите датасет с новостными текстами. Выберите 2 категории, разбейте документы на слова (n-gramm'ы), "обучите" метод ближайшего соседа для задачи категоризации текстов по их содержанию.
Используйте косинусную мету близости
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
news_docs = fetch_20newsgroups(subset='all', categories=['alt.atheism', 'comp.graphics'])