Использование в качестве входных данных только веса и роста
По словам Джона Фунге,
Искусственный интеллект - это сделать компьютер способным выполнять мыслительные задачи, на которые способны люди и животные. [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, здесь.
Понравился мой контент? Считай купи мне кофе! 🙂