Как я изучаю машинное обучение (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”