Как использовать Data Science, чтобы понять, что делает вино вкусным

1656681881 kak ispolzovat data science chtoby ponyat chto delaet vino vkusnym

Data Science. Ее рекламировали как самую сексуальную работу 21 века. Все от компаний до частных лиц пытаются это понять и принять. И если вы программист, то точно ощущаете FoMo (страх пропустить)! Только посмотрите, насколько популярен стал этот термин со временем:

1*KN6Iiv_hFZstM5CgjqD7Vw
Уровень популярности Data Science за последние 5 лет

По данным Indeed, средняя зарплата специалиста по обработке данных в США превышает 120 000 долларов. В настоящее время у них также самые высокооплачиваемые вакансии, средняя стоимость которых составляет 60 тыс. долларов США. Glassdoor также назвал эту работу «Лучшей вакансией 2016 года», а также занимает первое место в рейтинге Glassdoor.

Но что это за наука, о которой они говорят? Продолжайте читать!

Содержание

Зачем нужна Data Science?

Проще говоря, Data Science помогает вам быть на основе данных. Решения на основе данных помогают компаниям лучше понимать своих клиентов и строить отличный бизнес.

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

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

Цель Data Science – рассказать вам историю и помочь вам ее визуализировать.

Используя его, вы можете:

  • Получите много информации из данных, которые могли бы иначе остаться незамеченными
  • Принимайте скорее решение, ведь компьютеры все-таки быстрее людей!
  • Устраните много предубеждений, стоящих за принятием решений. На протяжении истории люди всегда были достаточно склонны разрешать своим чувствам и предубеждениям омрачать их суждения.
1*hGNOhIlImfphJf5E6VIB0g

Но, в отличие от людей, компьютерам не нужно сидеть на деловой встрече и участвовать в соревновании по поводу того, почему определенное решение лучше других.

Теперь, когда мы поняли, о чем идет речь, пора это узнать!

Кто получит больше всего из этого учебника:

  • Люди с некоторыми базовыми знаниями в программировании, желающие понять науку о данных и ее применении.
  • Люди, которые сначала считают математику и статистику несколько непосильными.
  • Если вы хоть отдаленно интересуетесь винами, то прочтите это — просто так!

Давайте начнем!

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

  • Поймите, как можно использовать Data Science для анализа данных и получения понимания.
  • Ознакомьтесь с вином. 😉
1*OjVreh3NGN_FgBEQs4AMdg

Даже если вы не пьете, это нормально – вы все равно станете начинающим сомелье или энофилом (да, это настоящий срок!).

В следующей публикации блога вы увидите прикладную науку о данных в форме машинного обучения:

  • Что такое ML и какие проблемы можно устранить с его помощью?
  • Как научить классификатору с помощью ML идентифицировать хорошие вина от плохих.
  • Различные показатели эффективности

Знай, прежде чем читать:

Я предполагаю, что у вас уже есть определенные знания по программированию. Некоторые знания программирования Python необходимо, поэтому, если вы это знаете, этот учебник будет относительно простым. Если вы не, я настоятельно рекомендую вам просмотреть этот бесплатный курс «Введение в Python».

Почему Python? Поскольку он быстро становится лучшим выбором языка для науки о данных. Его достаточно легко подобрать и освоить, а у экосистемы Python есть много инструментов и библиотек для виртуального создания чего угодно — от веб-серверов, пакетов для машинного обучения, статистики, глубокого обучения к Интернету вещей. Python также имеет одно из самых активных сообществ в Интернете, таких как переполнение стека.

Некоторые базовые знания о таких библиотеках как numpy и pandas также будут полезны, хотя и не обязательны.

Что вам понадобится для этого учебника:

  • Желательно дистрибутив на основе Linux (Ubuntu или Linux Mint) с установленным Python.
  • Набор Anaconda. Это система управления пакетами с открытым кодом и система управления средой, главным образом для программ на Python. Для обучения и тестирования наших моделей машинного обучения вы будете использовать очень популярную библиотеку с открытым кодом под названием scikit-learn.
  • Загрузите файлы проекта из этого хранилища на машину. Затем откройте терминал, cd в папку вашего проекта и запустите pip install -r requirements.txt чтобы установить зависимости.
  • В качестве альтернативыВы можете также загрузить файлы проекта на FloydHub и запустить свои коды без проблем с настройкой. Я рекомендую его, если у вас нет системы на базе Linux.

Для запуска кода вы будете использовать файл блокнота IPython (Interactive Python). После загрузки файлов проекта откройте терминал, cd в папку вашего проекта и запустите jupyter-notebook. Это откроет новое окно в вашем браузере по умолчанию на порту 8888. Если вы используете FloydHub, то же файл блокнота также можно запустить оттуда.

Вы найдете два файла блокнота IPython. Выберите название game-of-wines.ipynb из списка. Другой файл блокнота содержит полный исходный код этого учебника.

Как пользоваться этой тетрадью

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

Чтобы выполнить код в ячейке, щелкните мышью и выберите run в строке заголовка книги.

1*q6Ckg8iquD7ALn2tEbjG6g

Ладно, здоровье! Давайте потянем… ой, изучите наши данные о вине.

На днях я искал в Интернете некоторые интересные данные из открытых источников. Kaggle имеет очень активное сообщество, где вы можете легко искать разные типы наборов данных и решать проблемы. Еще одно отличное место для поиска наборов данных – репозиторий машинного обучения Калифорнийского университета в Ирвайне.

Репозиторий UCI Machine Learning содержит два набора данных о вине. Один набор данных содержит информацию о красных винах, а другой – о белых винах. Ваша папка проекта содержит их оба. Эти вина были произведены в Vinho Verde, регионе на севере Португалии.

Во-первых, вы импортируете некоторые библиотеки, необходимые для анализа данных. Нажмите на блок ячейки и выберите run команда, чтобы скачать их все.

1*nQ_4BCh8KEKq32OMbMhdEQ

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

# Load the Red Wines dataset
data = pd.read_csv("data/winequality-red.csv", sep=';')

# Display the first five records
display(data.head(n=5))

Он напечатает этот результат:

1*MEevsKTQqXaIHg1eKeRP6g

Как видите, для каждого вина в наборе данных имеется около 12 разных характеристик. Последняя колонка, качество, это показатель того, как хорошим было оценено конкретное вино, от 1 до 10.

Давайте проверим, нет ли в каком-либо из этих столбцов информации. Введите это в блоке ячеек:

data.isnull().any()

Результат показывает нам, что ни один столбец не пуст.

1*XMlmIxFum_MZkl5A4CBiCw

Мы можем получить дополнительную информацию о нашем наборе данных, выполнив:

data.info()
1*d-TRr6Kn1nkBwDiH5q5uLw

Давайте попробуем произвести предварительный анализ наших вин. Для наших целей давайте будем считать все вина с рейтингом 7 и выше очень хорошего качества, вина из 5 и 6 – среднего качества, а вина меньше 5 – безвкусного качества:

n_wines = data.shape[0]

# Number of wines with quality rating above 6
quality_above_6 = data.loc[(data['quality'] > 6)]
n_above_6 = quality_above_6.shape[0]

# Number of wines with quality rating below 5
quality_below_5 = data.loc[(data['quality'] < 5)]
n_below_5 = quality_below_5.shape[0]

# Number of wines with quality rating between 5 to 6
quality_between_5 = data.loc[(data['quality'] >= 5) & (data['quality'] <= 6)]
n_between_5 = quality_between_5.shape[0]

# Percentage of wines with quality rating above 6
greater_percent = n_above_6*100/n_wines

# Print the results
print("Total number of wine data: {}".format(n_wines))
print("Wines with rating 7 and above: {}".format(n_above_6))
print("Wines with rating less than 5: {}".format(n_below_5))
print("Wines with rating 5 and 6: {}".format(n_between_5))
print("Percentage of wines with quality 7 and above: {:.2f}%".format(greater_percent))

# Some more additional data analysis
display(np.round(data.describe()))
1*Sk_9x0mFcbqusrDeUoGzZA

Вы также можете просмотреть распределение по качеству на графике:

# Visualize skewed continuous features of original data
vs.distribution(data, "quality")
1*KFw6DmaqzElnPJPrAwkDhQ

Как видим, большинство вин попадает под среднее качество. Есть меньше вин очень высокого качества и превосходного вкуса, и очень мало вин, которые не так хороши.

Мы также можем использовать панд describe метод получения полезных статистических данных, таких как среднее значение, медиана и стандартное отклонение функций в наших данных:

1*mGzXh2XgumRjinbgd2a_rg

Некоторые полезные статистические данные, о которых следует знать:

  • Среднее (среднее): Пожалуй, самый известный из всех. Просто добавьте все значения выборки для определенной функции, затем разделите это на количество выборок.
  • Медиана: Сначала вы упорядочиваете все образцы значений в порядке чисел в списке. Среднее число в этом списке будет медианом.
  • режим: Значение, которое наиболее часто встречается в списке образцов.
  • диапазон: Разница между самыми высокими и низкими значениями в списке.
  • Стандартное отклонение: Он используется для измерения дисперсии значений в наборе. Сначала вычислите среднее, затем вычтите каждое число из списка вместе со средним и сведите результат в квадрат. Затем вычислите среднее значение этих квадратов разниц и, наконец, вычислите из него квадратный корень.

Теперь следующим шагом будет более подробное изучение особенностей нашего набора данных.

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

В Data Science знание предметной области может быть ключевым фактором, различающим посредственные и великие идеи.

Пора стать мудрее с нашим виновным словом!

Вина содержат различные пропорции сахаров, спирта, органических кислот, солей минеральных и органических кислот, фенольных соединений, пигментов, азотистых веществ, пектинов, смол, слизи, летучих ароматических соединений (сложных эфиров, альдегидов и кетонов), витаминов, солей и диоксида серы. .

В дегустации вин термин кислотность относится к свежим, терпким и кислым свойствам вина. В винном винограде содержатся три основных кислоты – винная, яблочная и лимонная. Они оцениваются в зависимости от того, как хорошо кислотность уравновешивает сладость и горькие компоненты вина, такие как танины.

  • Фиксированная кислотность

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

  • Летучая кислотность

    Летучая кислотность в большинстве своем вызвана бактериями в вине, которые образуют уксусную кислоту — кислоту, которая придает уксусу характерный вкус и аромат — и ее побочный продукт — этилацетат. Летучая кислотность может быть показателем порчи или ошибок в производственных процессах, вызванных такими вещами, как повреждение винограда, вино, которое подвергается воздействию воздуха и тому подобное. Это приводит к тому, что бактерии уксусной кислоты проникают и развиваются, что приводит к появлению неприятных вкусов и запахов. Эксперты по вину часто могут определить это, просто понюхав его!

  • Лимонная кислота

    Лимонная кислота обычно содержится в очень малых количествах в винном винограде. Он действует как консервант и добавляется к винам, чтобы повысить кислотность, дополнить специфический вкус или предотвратить помутнение железа. Его можно добавлять в готовые вина для повышения кислотности и придания «свежему» вкусу. Однако чрезмерное сложение может испортить вкус.

1*hD1dVJgzCqeJQvMaBX0m-w
  • Остаточный сахар

    Остаточный сахарили сокращенно RS, относится к любому натуральному винограду сахара которые остаются после прекращения брожения (преднамеренно или нет). Сок из вино Виноград сначала получается интенсивно сладким, и брожение это использует сахар как дрожжи лакомятся им.

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

    Чтобы сделать вино, обладающее приятным вкусом, ключевым моментом является идеальный баланс между сладостью и кислинкой в ​​напитке.

  • Хлорид

    Количество хлоридов в вине обычно является показателем его «солености». Обычно это влияет территория, где выращивался винный виноград, методы выращивания, а также сорт винограда. Слишком большое количество солености считается нежелательным. Правильная пропорция может сделать вино более пикантным.

  • Уровень диоксида серы

    Диоксид серы существует в вине в свободной и связанной формах, и такие комбинации называются общий SO2. Это самый распространенный консервант, который обычно добавляют виноделы для защиты вина от негативного воздействия воздуха и кислорода. Вина с добавлением диоксида серы обычно имеют на этикетке «Содержит сульфиты».

    Он действует как дезинфицирующее средство – его добавление обычно убивает нежелательные бактерии или дрожжи, которые могут попасть в вино и испортить его вкус и аромат. Впервые его использовали в виноделии римляне, когда обнаружили, что горящие серные свечи внутри пустых сосудов для вина хранят их свежими и не имеют запаха уксуса. Хватит аккуратно, а?

  • Плотность

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

  • pH

    pH означает мощность водорода, являющуюся измерением концентрации ионов водорода в растворе. Как правило, растворы со значением pH менее 7 считаются кислыми, при этом некоторые из сильнейших кислот имеют значение, близкое к 0. Растворы выше 7 считаются щелочными или основными. Значение рН воды равно 7, поскольку она не является ни кислотой, ни основанием.

  • Сульфаты

    Сульфаты – соли сульфатной кислоты. Они не занимаются производством вина, но некоторые производители пива используют сульфат кальция — также известный как пивоваренный гипс для исправления дефицита минералов в воде во время процесса пивоварения. Это также придает немного «острого» вкуса.

  • Алкоголь

    Ах да, алкоголь – залог удачной вечеринки! Алкогольные напитки существовали по крайней мере из эпохи неолита (10 000 лет до н. э.). Употребление его в небольших количествах создает теплые нечеткие ощущения внутри и делает вас общительнее. Конечно, большие дозы могут привести к потере сознания.

Выпивай тщательно, мой друг ученый из данных!

Изучение связей между функциями и визуализациями

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

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

Например, влияет ли уровень pH на фиксированные уровни кислотности? Имеет ли уровень летучей кислотности нечто общее с качеством? Считают ли люди вина с большим содержанием алкоголя вкуснее или качественнее?

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

pd.plotting.scatter_matrix(data, alpha = 0.3, figsize = (40,40), diagonal="kde");
1*HbazuSH9ifkXt3YdLe970w

Из вышеприведенной диаграммы рассеяния мы можем получить некоторые интересные детали. Для некоторых функций распределение выглядит достаточно линейным. Для некоторых других распределение кажется отрицательным. Это подтверждает наши первоначальные подозрения — между некоторыми функциями действительно есть интересные созависимости.

Мы можем построить тепловую карту соотношения между функциями, что поможет нам получить больше информации.

correlation = data.corr()
# display(correlation)
plt.figure(figsize=(14, 12))
heatmap = sns.heatmap(correlation, annot=True, linewidths=0, vmin=-1, cmap="RdBu_r")
1*xtYwk9WXIzZYSP71pBMHPA

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

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

Наконец, квадраты, близкие к нулю, указывают на отсутствие созависимости между этими наборами признаков.

Весьма интересно, правда? Давайте рассмотрим эти соотношения более подробно.

#Visualize the co-relation between pH and fixed Acidity

#Create a new dataframe containing only pH and fixed acidity columns to visualize their co-relations
fixedAcidity_pH = data[['pH', 'fixed acidity']]

#Initialize a joint-grid with the dataframe, using seaborn library
gridA = sns.JointGrid(x="fixed acidity", y="pH", data=fixedAcidity_pH, size=6)

#Draws a regression plot in the grid 
gridA = gridA.plot_joint(sns.regplot, scatter_kws={"s": 10})

#Draws a distribution plot in the same grid
gridA = gridA.plot_marginals(sns.distplot)
1*aYaw4DZCIuYPopEzAm2bSw

Эта диаграмма рассеяния показывает, как значения pH изменяются с изменением фиксированных уровней кислотности. Мы видим, что при увеличении фиксированных уровней кислотности уровень pH падает. Имеет смысл, не правда ли? Наконец низкий уровень pH является показателем высокой кислотности.

  • Фиксированная кислотность против лимонной кислоты
fixedAcidity_citricAcid = data[['citric acid', 'fixed acidity']]
g = sns.JointGrid(x="fixed acidity", y="citric acid", data=fixedAcidity_citricAcid, size=6)
g = g.plot_joint(sns.regplot, scatter_kws={"s": 10})
g = g.plot_marginals(sns.distplot)
1*D2KxLMLEuYAH-mXc5aXyxA

С увеличением количества лимонной кислоты возрастают и фиксированные уровни кислотности.

  • Летучая кислотность против качества
fig, axs = plt.subplots(ncols=1,figsize=(10,6))
sns.barplot(x='quality', y='volatile acidity', data=volatileAcidity_quality, ax=axs)
plt.title('quality VS volatile acidity')

plt.tight_layout()
plt.show()
plt.gcf().clear()
1*XMNAItj-Vhx5MLWDE4OIGg

Высшее качество обычно связано с низким уровнем летучей кислотности. Это имеет смысл, поскольку летучая кислотность является индикатором порчи и может повлечь за собой неприятные ароматы — в соответствии с нашими знаниями в отрасли.

fig, axs = plt.subplots(ncols=1,figsize=(10,6))
sns.barplot(x='quality', y='alcohol', data=quality_alcohol, ax=axs)
plt.title('quality VS alcohol')

plt.tight_layout()
plt.show()
plt.gcf().clear()
1*GO-8WU9vd5F0NI1W3KgZgA

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

Попробуйте самостоятельно поэкспериментировать с другими функциями блокнота и посмотрите, что они раскроют. Если они как-то связаны, как вы думаете, в чем может быть причина? Исследование откроет больше скрытых идей.

Это помогает помнить об этом соотношение не всегда предполагает причинно-следственную связь. Иногда, когда вы строите графики для двух функций, это может показать вам закономерность, которая может быть просто совпадением. Вот пример —

1*RIUFJsPh2cSekqrrklscDg
Больше примеров можно посмотреть здесь.

Почему же тогда мы это делаем? Это полезное основание для проверки целостности нашего набора данных!

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

Выявление выбросов

Скажем, в королевстве Ланнистеров около 10 тысяч взрослых людей. Большинство из них среднего роста (выше 5 футов), но есть около 100 человек, которые являются карликами. Их также называют выбросами, поскольку это экстремальные значения, выходящие за пределы ожидаемого диапазона высот. Другими словами, выброс – это точка данных, которая значительно удалена от большинства других точек данных.

Почему они важны? Потому что они могут иногда вызывать много проблем при анализе данных. Скажем, вы пытаетесь вычислить среднюю температуру 10 наугад выбранных объектов в вашей комнате, и девять из них имеют температуру от 20 до 25 градусов Цельсия. Но вы оставили духовку включенной и нагрета до 175 °C. Средняя температура колеблется от 20 до 25 °C, средняя – от 35,5 до 40 °C. В этом случае медиана лучше отображает температуру случайно отобранного объекта, поскольку она не соответствует ожиданиям вашей комнаты.

Следовательно, выявление выбросов критически важно, поскольку очень малые или очень большие значения могут негативно повлиять на наш анализ данных и, как следствие, на наши прогнозы. Поэтому иногда возникает необходимость удалить их.

1*agLdxu5nfP-2H-0xgFnUQg

Метод Тьюки для обнаружения выбросов

Я прочитал очень хороший пост об этом методе, который вы можете прочитать позже. Но коротко, вот как работает эта техника:

  • Сначала вы начинаете с разделения отсортированных данных на четыре интервалы, таким образом, чтобы каждый из полученных разделов содержал примерно 25% от общего количества точек данных. Значения, на которые разбиваются эти интервалы, называются квартиры.
  • Затем вы отнимаете 3-й квартиль от 1-го квартиля, чтобы получить Интерквартальный диапазон (IQR). Это средние 50% и содержат основную часть данных.
  • Любая точка данных, лежащая за пределами 1.5 раз IQR будет считаться выбросом.

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

# For each feature find the data points with extreme high or low values
for feature in data.keys():
    # TODO: Calculate Q1 (25th percentile of the data) for the given feature
    Q1 = np.percentile(data[feature], q=25)
    
    # TODO: Calculate Q3 (75th percentile of the data) for the given feature
    Q3 = np.percentile(data[feature], q=75)
    
    # TODO: Use the interquartile range to calculate an outlier step (1.5 times the interquartile range)
    interquartile_range = Q3 - Q1
    step = 1.5 * interquartile_range
    
    # Display the outliers
    print("Data points considered outliers for the feature '{}':".format(feature))
    display(data[~((data[feature] >= Q1 - step) & (data[feature] <= Q3 + step))])
    
    # OPTIONAL: Select the indices for data points you wish to remove
    outliers = []
    # Remove the outliers, if any were specified
    good_data = data.drop(data.index[outliers]).reset_index(drop = True)

И… мы кончили!

Надеюсь, вы получили удовольствие от этого урока. Теперь вы знаете о науке о данных больше, чем раньше!

1*HXZPFY1XtYmySMtUmOZf8w
Единственный раз, когда вы действительно почувствуете себя Тирионом Ланнистером

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

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

Использование машинного обучения для прогнозирования качества вин

Также опубликовано в моем техническом блоге. Понравилось прочитанное? Зайдите туда и подпишитесь! Я не буду тратить ваше время.

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

Добавить комментарий

Ваш адрес email не будет опубликован.