Вы программист на Python и ищете мощную библиотеку для машинного обучения? Если да, тогда вы должны принять во внимание scikit-learn. Scikit learn in python играет неотъемлемую роль в концепции машинного обучения и необходим для получения вашего Python для сертификации в области науки о данных. Эта шпаргалка по scikit-learn предназначена для тех, кто уже начал изучать пакет Python, но хочет иметь удобный справочный лист. Не волнуйтесь, если вы новичок и не знаете, как работает scikit-learn, эта шпаргалка по scikit-learn для машинного обучения даст вам краткую справку по основам, которые вы должны знать, чтобы начать работу.
Шпаргалка по Python для Scikit-learn
Scikit-learn - это библиотека Python с открытым исходным кодом, используемая для алгоритмов машинного обучения, предварительной обработки, перекрестной проверки и визуализации. Он предоставляет ряд контролируемых и неконтролируемых алгоритмов обучения на Python.
Базовый пример
Давайте создадим базовый пример с использованием библиотеки scikit-learn, которая будет использоваться для
- Загрузите данные
- Разделите данные на обучающие и тестовые,
- Обучите свои данные с помощью алгоритма KNN и,
- Предсказать результат
>>> from sklearn import neighbors, datasets, preprocessing >>> from sklearn.model_selection import train_test_split >>> from sklearn.metrics import accuracy_score >>> iris = datasets.load_iris() >>> X, y = iris.data[:, :2], iris.target >>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33) >>> scaler = preprocessing.StandardScaler().fit(X_train) >>> X_train = scaler.transform(X_train) >>> X_test = scaler.transform(X_test) >>> knn = neighbors.KNeighborsClassifier(n_neighbors=5) >>> knn.fit(X_train, y_train) >>> y_pred = knn.predict(X_test) >>> accuracy_score(y_test, y_pred)
Загрузка данных
Вам необходимо хранить числовые данные в массивах NumPy или разреженных матрицах SciPy. Вы также можете использовать другие числовые массивы, такие как Pandas DataFrame.
>>> import numpy as np >>> X = np.random.random((10,5)) >>> y = np.array(['M','M','F','F','M','F','M','M','F','F','F']) >>> X[X < 0.7] = 0
Тренируйся и тестируй
После загрузки данных вашей следующей задачей будет разделение набора данных на данные обучения и данные тестирования.
>>> from sklearn.model_selection import train_test_split >>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
Предварительная обработка данных
Стандартизация
Стандартизация данных - это один из этапов предварительной обработки данных, который используется для изменения масштаба одного или нескольких атрибутов так, чтобы атрибуты имели среднее значение 0 и стандартное отклонение 1. Стандартизация предполагает, что ваши данные имеют распределение Гаусса (кривая колокола).
>>> from sklearn.preprocessing import StandardScaler >>> scaler = StandardScaler().fit(X_train) >>> standardized_X = scaler.transform(X_train) >>> standardized_X_test = scaler.transform(X_test)
Нормализация
Нормализация - это метод, обычно используемый для подготовки данных для машинного обучения. Основная цель нормализации - изменить значения числовых столбцов в наборе данных, чтобы мы могли иметь общую шкалу без потери информации и искажения различий в диапазонах значений.
>>> from sklearn.preprocessing import Normalizer >>> scaler = Normalizer().fit(X_train) >>> normalized_X = scaler.transform(X_train) >>> normalized_X_test = scaler.transform(X_test)
Бинаризация
Бинаризация - это обычная операция, выполняемая с данными счетчика текста. Используя бинаризацию, аналитик может решить рассмотреть наличие или отсутствие функции, а не, например, иметь количественно определенное количество вхождений.
>>> from sklearn.preprocessing import Binarizer >>> binarizer = Binarizer(threshold=0.0).fit(X) >>> binary_X = binarizer.transform(X)
Кодирование категориальных функций
LabelEncoder - еще один класс, используемый в предварительной обработке данных для кодирования уровней классов. Его также можно использовать для преобразования нечисловых меток в числовые.
>>> from sklearn.preprocessing import LabelEncoder >>> enc = LabelEncoder() >>> y = enc.fit_transform(y)
Вменение пропущенных значений
Класс Imputer в Python предоставит вам основные стратегии для вменения / заполнения пропущенных значений. Для этого используются средние, медианные значения или наиболее частое значение строки или столбца, в которых находятся пропущенные значения. Этот класс также позволяет кодировать различные пропущенные значения.
>>> from sklearn.preprocessing import Imputer >>> imp = Imputer(missing_values=0, strategy='mean', axis=0) >>> imp.fit_transform(X_train)
Создание полиномиальных функций
Полиномиальный признак генерирует новую матрицу признаков, которая состоит из всех полиномиальных комбинаций признаков со степенью меньше или равной указанной степени. Например, если входной образец является двумерным и имеет форму [a, b], то полиномиальные признаки 2-й степени будут [1, a, b, a², ab, b²].
>>> from sklearn.preprocessing import PolynomialFeatures >>> poly = PolynomialFeatures(5) >>> poly.fit_transform(X)
Создайте свою модель
Оценщик контролируемого обучения
Контролируемое обучение - это тип машинного обучения, который позволяет модели предсказывать будущие результаты после обучения на помеченных данных.
# Linear Regression Algorithm >>> from sklearn.linear_model import LinearRegression >>> lr = LinearRegression(normalize=True) # Naive Bayes Algorithm >>> from sklearn.naive_bayes import GaussianNB >>> gnb = GaussianNB() # KNN Algorithm >>> from sklearn import neighbors >>> knn = neighbors.KNeighborsClassifier(n_neighbors=5) # Support Vector Machines (SVM) >>> from sklearn.svm import SVC >>> svc = SVC(kernel='linear’)
Оценщик неконтролируемого обучения
Обучение без учителя - это тип машинного обучения, который позволяет модели предсказывать будущие результаты, без обучения на данных с пометкой .
# Principal Component Analysis (PCA) >>> from sklearn.decomposition import PCA >>> pca = PCA(n_components=0.95) # K Means Clustering Algorithm >>> from sklearn.cluster import KMeans >>> k_means = KMeans(n_clusters=3, random_state=0)
Подгонка модели
Подгонка - это показатель того, насколько хорошо модель машинного обучения обобщается на данные, аналогичные тем, на которых она была обучена.
# For Supervised learning >>> lr.fit(X, y) #Fits data into the model >>> knn.fit(X_train, y_train) >>> svc.fit(X_train, y_train) # For Unsupervised Learning >>> k_means.fit(X_train)#Fits data into the model >>> pca_model = pca.fit_transform(X_train) #Fit to data, then transform it
Прогноз
Подгонка - это показатель того, насколько хорошо модель машинного обучения обобщается на данные, аналогичные тем, на которых она была обучена.
# For Supervised learning >>> y_pred=svc.predict(np.random((2,5))) #predict label >>> y_pred=lr.predict(x_test) #predict label >>> y_pred=knn.predict_proba(x_test)#estimate probablity of a label # For Unsupervised Learning >>> y_pred=k_means.predict(x_test) #predict labels in clustering algorithm
Оценка производительности модели
Метрики классификации
Модуль sklearn.metrics
реализует несколько функций потерь, оценки и полезности для измерения эффективности классификации.
# Mean Absolute Error >>> from sklearn.metrics import mean_absolute_error >>> y_true = [3, -0.5, 2] >>> mean_absolute_error(y_true, y_pred) # Mean Squared Error >>> from sklearn.metrics import mean_squared_error >>> mean_squared_error(y_test, y_pred) # R² Score >>> from sklearn.metrics import r2_score >>> r2_score(y_true, y_pred)
Метрики кластеризации
# Adjusted Rand Index >>> from sklearn.metrics import adjusted_rand_score >>> adjusted_rand_score(y_true, y_pred) # Homogeneity >>> from sklearn.metrics import homogeneity_score >>> homogeneity_score(y_true, y_pred) # V-measure >>> from sklearn.metrics import v_measure_score >>> metrics.v_measure_score(y_true, y_pred)
Метрики регрессии
Модуль sklearn.metrics
реализует несколько функций потерь, оценки и полезности для измерения эффективности регрессии.
# Accuracy Score >>> knn.score(X_test, y_test) >>> from sklearn.metrics import accuracy_score >>> accuracy_score(y_test, y_pred) # Classification Report >>> from sklearn.metrics import classification_report >>> print(classification_report(y_test, y_pred)) # Confusion Matrix >>> from sklearn.metrics import confusion_matrix >>> print(confusion_matrix(y_test, y_pred))
Перекрестная проверка
>>> from sklearn.cross_validation import cross_val_score >>> print(cross_val_score(knn, X_train, y_train, cv=4)) >>> print(cross_val_score(lr, X, y, cv=2))
Настройте свою модель
Поиск по сетке
GridSearchCV реализует методы «соответствия» и «оценки». Он также реализует «прогноз», «прогноз_проба», «функция решения», «преобразование» и «обратное преобразование», если они реализованы в используемом оценщике.
>>> from sklearn.grid_search import GridSearchCV >>> params = {"n_neighbors": np.arange(1,3), "metric": ["euclidean", "cityblock"]} >>> grid = GridSearchCV(estimator=knn, param_grid=params) >>> grid.fit(X_train, y_train) >>> print(grid.best_score_) >>> print(grid.best_estimator_.n_neighbors)
Оптимизация случайных параметров
RandomizedSearchCV выполняет случайный поиск по гиперпараметрам. В отличие от GridSearchCV, не все значения параметров проверяются, а скорее фиксированное количество настроек параметров выбирается из указанных распределений. Число пробных настроек параметров задается n_iter.
>>> from sklearn.grid_search import RandomizedSearchCV >>> params = {"n_neighbours": range(1,5), "weights":["uniform", "distance"]} >>>rserach = RandomizedSearchCV(estimator=knn,param_distribution=params, cv=4, n_iter=8, random_state=5) >>> rsearch.fit(X_train, Y_train) >>> print(rsearch.best_score)
Загрузить шпаргалку по Python для Scikit-learn
Если вы хотите ознакомиться с другими статьями о самых популярных технологиях на рынке, таких как искусственный интеллект, DevOps, этический взлом, посетите официальный сайт Edureka.
Обязательно обратите внимание на другие статьи в этой серии, которые объяснят различные другие аспекты Python и Data Science.
4. Библиотеки Python для науки о данных и машинного обучения
15. Python vs C ++
17. Python SciPy
20. Основы Python
23. Python Decorator
32. Python 3.8