Использование в качестве входных данных только веса и роста

По словам Джона Фунге,

Искусственный интеллект - это сделать компьютер способным выполнять мыслительные задачи, на которые способны люди и животные. [Funge John; Миллингтон 2009]

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

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

В целом машинное обучение можно разделить на три категории:

  • Контролируемое обучение
  • Неконтролируемое обучение
  • Обучение с подкреплением

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

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

Язык программирования

Python - это интерпретируемый язык программирования высокого уровня для программирования общего назначения. Созданный Гвидо ван Россумом и впервые выпущенный в 1991 году, Python имеет философию проектирования, которая подчеркивает удобочитаемость кода, особенно с использованием значительных пробелов. Он предоставляет конструкции, обеспечивающие четкое программирование как в малых, так и в больших масштабах. [Kuhlman 2012]

Он был выбран по следующим причинам:

  • Готовые библиотеки (Numpy, Pandas и т. Д.)
  • Поддержка (это открытый исходный код с широким сообществом)
  • Просто и легко
  • Интерпретировано (легче отлаживать)

Для данных использовались выборки простых людей (родственников и друзей) и данные известных актеров и актрис.

Имена людей, использованных в этом исследовании, были удалены в соответствии с статьей 89–1 GDPR (Общие правила защиты данных).

Данные о людях

Алгоритм

Алгоритм следует следующим шагам:

Читает данные (в формате CSV)

df = pd.read_csv('data.csv')

Заменяет слова "Мужской" и "Женский" на "0" и "1" соответственно.

# Male -> 0
df['sex'] = df['sex'].replace('Male', 0) 
# Female -> 1
df['sex'] = df['sex'].replace('Female', 1)

Устанавливает значения X и Y фрейма данных (X = [вес, рост], Y = [пол])

X = df[['weight', 'height']]
Y = df[['sex']]

Обучает А.

X_train, X_test, y_train, y_test = train_test_split(X, Y)

Соответствует данным модели линейной регрессии Scikit-Learn

model = LinearRegression()
model.fit(X_train, y_train)

Тестирует модель

predictions = model.predict(X_test)

Строит графики тестов и прогнозов

sb.distplot(y_test - predictions, axlabel="Test - Prediction")
py.show()

Прогнозирует результаты, используя обученные данные

# 94 -> 94 Kg (Weight)
# 182 -> 182 cm (Height) 
myvals = np.array([94, 182]).reshape(1, -1)
print(model.predict(myvals)) 
# The more close to 0, the more is a Male
# The more close to 1, the more is a Female

Прогноз

Оценка

Используя функцию Scikit-Learn среднеквадратическая ошибка, средний результат составил 0,200208890819, что является хорошим результатом.

Тест против прогноза

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

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

Заключительные комментарии

Если вам понравилось, оставьте, пожалуйста, аплодисменты.

Код размещен на GitHub, здесь.

Понравился мой контент? Считай купи мне кофе! 🙂