Рубрики
Без рубрики

Как я изучаю машину обучения – неделю 8: базовые модели в Scikit – учиться

На прошлой неделе мы увидели, как убирать наши данные, поэтому теперь мы должны быть готовы увидеть модель машинного обучения …. Теги с Python, машинным обучением, AI, программированием.

Как я изучаю машинное обучение (11 часть серии)

На прошлой неделе мы увидели, как убирать наши данные, поэтому теперь мы должны быть готовы увидеть модель машинного обучения. Наиболее основы являются регрессия предсказать номер и Классификация предсказать категорию.

Оглавление:

  • Импорт Scikit Toil Toy Dataset
  • Использование регрессии
  • Классификационные модели
  • Обзор случайной лесной логики

Импорт Scikit Toil Toy Dataset

Алгоритм машинного обучения обычно называется модель или Оценщик И Scikit-Sulect предлагает нам чит-лист со всем, что мы можем использовать :

В нашем случае мы уже знаем, что мы хотим попробовать регрессию, но этот чит-лист придет очень часто.

Давайте начнем с Импорт Один из наборов данных, которые предлагает Scikit:

Из быстрой вида мы можем понять, что это словарь с четырьмя важными ключами:

  • Данные: Numpy Array с многомерной формой, которая содержит все наши данные
  • Цель: серия, содержащая значения, которые мы предсказуем
  • Feature_Names: имена каждого столбца, соответствующей форме данных.
  • Образование: описание нашего набора данных.

Обратите внимание, что это игрушечный набор данных, как правило, наши данные не будут приходить со всей этой информацией в удобной

Чтобы импортировать его и использовать наш код будет похож на:

# importing the sample dataset
from sklearn.datasets import load_diabetes
# assigning it to a variable
diabetes = load_diabetes()
# reading the dataset description
print(diabetes.DESCR)

И результат будет:

Теперь, чтобы преобразовать словарь в DataFrame, мы должны сначала преобразовать его в PandaS DataFrame, и мы можем сделать это легко с функциями, которые мы уже знаем:

diabetes_df = pd.DataFrame(diabetes['data'], 
                           columns = diabetes['feature_names'])
diabetes_df['target'] = pd.Series(diabetes['target'])
diabetes_df.head()

Использование регрессии

Теперь, когда у нас все готово, мы должны просто импортировать модель регрессии, которая нам нужна. Таким образом, на основе чит-листа, давайте попробуем модель Ridge:

# importing the model
from sklearn.linear_model import Ridge

# setting up the seed 
np.random.seed(10)

# creating the data
x = diabetes_df.drop('target', axis = 1)
y = diabetes_df['target']

# splitting the data
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.15)

# instantiating the model
model = Ridge()
model.fit(x_train, y_train)

# checking up the score of the model
model.score(x_test, y_test)

В этом случае вывод будет:

0.5011092582547553

Теперь давайте подробно посмотрим, что мы сделали: мы впервые импортируем модель и настроив семян с Numpy, мы разделяем наши данные в поезд и тестируйте, как тогда прибыли на приятную часть, подходит и Оценка Функции. Мы создаем модель Переменная и назначить ему Хребт () Модель, на модели мы применяем сначала метод FIT. В машинном обучении фитинга равен тренировке. Процесс обучения находит коэффициенты модели модели, в данном случае регрессию. Оценка Метод оценивает оценку точности модели для затем печати его на экране. В ноутбуке все это будет:

В этом случае у нас очень низкая точность, но, как ни странно, используя лучшую модель, случайным лесным регрессором, у нас еще будет низкие результаты:

Оптимизация наших моделей – это то, что мы увидим позже. Это работает И это уже отличная отправная точка.

классификационные модели

Давайте импортируем еще один набор игрушек от того, кто Scikit учится, чтобы увидеть некоторые модели классификации:

После просмотра словаря мы видим, что нет массива с именем наших столбцов, но только массив с соответствующей строкой какой целей должен быть. Мы должны сделать немного ручного труда:

column_names = ['sepal length', 'sepal width', 'petal length', 'petal width']
iris_df = pd.DataFrame(iris.data, columns = column_names)
iris_df['target'] = iris['target']
iris_df.head()

И результат будет выглядеть так:

Но цифры в целевой колонке сбивают с толку, и не эффективно идти вперед и назад, чтобы увидеть, какая категория ряд указывает, это было мое решение:

# changing target values with strings
iris_df['target'] = iris_df['target'].astype(str)

for i in range(len(iris_df['target'])):
    if iris_df['target'][i] == '0':
        iris_df['target'][i] = iris.target_names[0]
    elif iris_df['target'][i] == '1':
        iris_df['target'][i] = iris.target_names[1]
    elif  iris_df['target'][i] == '2':
        iris_df['target'][i] = iris.target_names[2]

Это момент, когда мы должны преобразовать наше dataframe с односторонним кодировкой, но с последними версиями Scikit мы можем даже не делать этого. Ранее он бросил бы ошибку, сейчас работает без проблем.

Все готово, мы должны просто тренировать нашу модель на данные, поэтому давайте попробуем Случайное лесное классификатор :

# importing the random forest classifier estimator
from sklearn.ensemble import RandomForestClassifier

# set up random seed
np.random.seed(10)

# make the data
x = iris_df.drop('target', axis = 1)
y = iris_df['target']

# split the data
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.15)

# instantiate random forest
clf = RandomForestClassifier() # clf is short for classifier
clf.fit(x_train, y_train)

# evaluate random forest
clf.score(x_test, y_test)

Обзор случайной лесной логики

Теперь мы успешно использовали нашу модель для прогнозирования категорий цветов. Мы использовали случайный лес классификатор и регрессор , два алгоритма, которые имеют простую логику позади них, что делает их очень эффективными: они строят и тренируют различные деревья решений, чтобы затем выдвигать средние решения их решений.

Мы можем использовать предсказывать и predict_proba Функции, чтобы увидеть, что мы делаем немного дальше. Функция прогнозирования выводит голосование деревьев. Если используется для первых 5 образцов X_TEST, он вернет решение о том, что должна быть каждая цель: Но каждый прогноз не на 100% точный, и каждый образец имеет вероятность быть классом или другим. Функция Predict_Proba показывает нам эту вероятность детально: Возвращает массив со всеми данными в нем. Для классификации каждый элемент массива – это вложенный массив с вероятностями в нем. Наши возможные случаи в порядке: Setosa, Versicolour и Виргинца. Если мы посмотрим на верхнюю часть вывода, мы можем увидеть три числа, где каждый соответствует вероятности растения, являющегося конкретным типом: в первом случае существует вероятность 0%, что растение является Setosa, 95% его Versicolor и 5% его виргингики, прогноз тогда будет Versicolor, и если мы увидим прецедентную цифру, мы видим, что целью теста является Versicolor.

Последние мысли

На этой неделе мы увидели основы классификаций и регрессионных моделей для того, чтобы иметь обзор того, как они достигают результата, на следующей неделе мы поговорим о оценке.

Как я изучаю машинное обучение (11 часть серии)

Оригинал: “https://dev.to/gabrieleboccarusso/how-i-am-learning-machine-learning-week-8-basics-models-19nk”