Изменения

Перейти к: навигация, поиск
Нет описания правки
== Пример использования (через scikit-learn) ==
Пусть Рассмотрим использование алгоритма knn на примере [https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29 реального датасета].Предположим, что мы загрузили ''wdbc.data'' и сохранили как ''tr.csv'' с загаловком - описанием признаков. * Загружаем данные  '''import''' pandas '''as''' pd '''from''' sklearn.preprocessing '''import''' StandardScaler   '''def''' load_data(data_path): ds = pd.read_csv(data_path) y = ds['diagnosis'] X = ds.drop('diagnosis', axis=1) X = X.drop('id', axis=1) i = len(X.columns) X = X.drop(X.columns[i - 1], axis=1) y.replace(('M', 'B'), (1, 0), inplace=True) sc = StandardScaler() sc.fit(X) X_ans = sc.transform(X) return X_ans, y  X, y = load_data("tr.csv")  Теперь <tex>X</tex>, <tex>y</tex> - нормированные значения признаков и соответствуйющие им классы.
* Делим данные на тренировочное и тестовое множество
'''from''' sklearn.model_selection '''import''' train_test_split
X_train, X_validation, y_train, y_validation = train_test_split(X, y, '''train_size'''test_size=0.12, '''random_state'''=1234) '''print'''(X_train.shape, X_validation.shape)
* Создаем классификатор
'''from''' sklearn.model_selection '''import''' GridSearchCV
tuned_params model_params = best_model.get_params() tuned_params = {} for k, v in model_params.items(): tuned_params[k] = [v]
tuned_params['n_neighbors'] = range(1, 30)
clf = GridSearchCV(KNeighborsClassifier(), tuned_params, cv=10, n_jobs=-1)
best_model = KNeighborsClassifier(**best_params)
best_model.fit(X_train, y_train)
predicted = best_model.predict(X_validation)
print('Evaluation:\n', metrics.classification_report(y_validation, predicted))
> '''Used params''': {'metric_params': None, 'metric': 'euclidean', 'weights': 'distance', 'n_neighbors': 23}9, 'leaf_size': 30, 'n_jobs': 4, 'p': 2, 'algorithm': 'auto'}
'''Evaluation:'''
precision recall f1-score support
A 0 0.82 90 1.00 0.90 95 4069 B 1 01.40 00 0.44 82 0.42 43 C 0.83 0.23 0.36 90 22 D 0.61 0.98 0.75 47 E 0.33 0.67 0.44 42 F 0.50 0.11 0.19 70 G 0.59 0.44 0.50 68 45 micro avg 0.53 93 0.53 93 0.53 93 332114 macro avg 0.58 95 0.55 91 0.51 92 332114 weighted avg 0.56 94 0.53 93 0.49 93 332114
== См. также ==
# [https://en.wikipedia.org/wiki/Kernel_(statistics) Функции ядер] - примеры ядер с Википедии
# [https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html sklearn] - документация по scikit-learn
# [https://www.kaggle.com/jeffbrown/knn-classifier/data kaggle example] - пример по работе с датасетом с kaggle
17
правок

Навигация