Одной из очень распространенных проблем в моделях машинного обучения является отсутствие данных. Текущий набор данных, который у нас есть, иногда бывает неполным, неточным или бесполезным, а это означает, что он негативно влияет на создаваемую модель. Отсутствующие данные обычно группируются в три категории:
Пропущенные полностью случайно (MCAR) – это тип отсутствующих данных, при котором отсутствующая точка данных является чисто случайной, а отсутствующие точки данных не связаны с другими точками данных или внешними факторами. к случайной потере данных или человеческой ошибке.
Случайное пропущение (MAR) – это тип пропущенных данных, который возникает, когда пропущенные точки данных могут быть связаны с другими переменными, пропущенные точки данных могут возникать в зависимости от значений других переменных, например, участников, которые не отвечают на конкретный вопрос в обзорном исследовании, могут иметь определенные демографические характеристики.
Неслучайное отсутствие (MNAR) – это когда отсутствующие точки данных определяются скрытым механизмом или причиной, связанной с отсутствием значений наблюдения, но не объясняемой другими переменными. Отсутствующие точки данных могут быть связаны со значениями других данных, но отсутствуют по ненаблюдаемой причине.
Важным моментом в проблеме недостающих данных является анализ проблемы недостающих данных. Очень важно понимать особенности распределения и структуры недостающих данных. Это один из наиболее важных шагов для определения того, какие переменные имеют недостатки, определения типов недостатков и выбора методов, используемых для правильного решения проблемы. Являются ли отсутствующие данные случайными или систематическими, это лишь один из эффективных вопросов для анализа проблемы отсутствующих данных. В случае случайного дефицита точки отсутствия данных не связаны с другими точками данных, и это обычно не влияет на общую точность набора данных, но в случае систематического дефицита точки отсутствия данных связаны с другими точками данных. что может существенно повлиять на точность модели. Кроме того, при решении проблемы отсутствия данных необходимо соблюдать принципы честности и прозрачности.
В литературе существует более одного метода решения проблемы отсутствия данных в значительной степени. Регрессионный анализ, который обеспечивает оценку отсутствующей точки данных путем связывания отсутствующей точки данных с независимыми переменными; взятие среднего значения набора данных и дополнение отсутствующих данных средним значением; получение медианного значения набора данных и дополнение отсутствующих данных медианным значением; Удаление по списку, анализ наблюдений с отсутствующими данными путем их полного удаления из набора данных — вот некоторые из методов анализа данных.
Python, один из самых мощных, популярных и полезных языков для науки о данных, разработал и продолжает разрабатывать множество полезных библиотек для науки о данных благодаря своим разработчикам и сообществам с открытым исходным кодом. Еще одной проблемой, которая мешала многим людям использовать Python для приложений анализа данных в прошлом, было отсутствие богатых структур данных с интегрированной обработкой метаданных[1]. С внедрением в нашу жизнь больших данных статистические модели и технологии развивались и становились быстрее, а анализировать данные стало проще. Некоторые из используемых библиотек:
Панды
Опубликованная в 2008 году и созданная Уэсом МакКинни, библиотека Python Pandas, которая широко используется в приложениях для обработки данных и машинного обучения и имеет открытый исходный код, обеспечивает очистку данных, заполнение данных, нормализацию данных, отображение данных, статистический анализ, загрузку данных и сохранение, он может выполнять множество операций, таких как максимальное значение, минимальное значение, среднее значение данных [2].
NumPy
NumPy, что означает Numerical Python, — это популярная программная библиотека Python с открытым исходным кодом, используемая в приложениях для обработки данных и машинного обучения, которая может быстро и эффективно выполнять научные и математические вычисления, которые помогают нам работать с многомерными массивами и матрицами. Создание массивов с помощью NumPy и разница между списками Python NumPy создает массивы как многомерные, а Python создает списки как одномерные. В массивах NumPy можно выполнять математические операции, а также добавлять, удалять и обновлять элементы в зависимости от желаемых ситуаций [3].
Scikit-Learn
Одна из самых полезных и популярных библиотек для машинного обучения в Python, Scikit-Learn — это служебная библиотека, используемая в приложениях для машинного обучения и статистического моделирования, таких как задачи классификации, регрессии и кластеризации. Он работает с упором на загрузку, обработку и моделирование данных. В библиотеку включены популярные алгоритмы обучения с учителем, такие как линейная регрессия, машины опорных векторов, деревья решений. Благодаря библиотеке scikit-learn он значительно помогает приложениям машинного обучения[4].
Matplotlib
Созданная Джоном Д. Хантером, Matplotlib представляет собой библиотеку графических чертежей с открытым исходным кодом, разработанную как инструмент визуализации. Благодаря множеству функций, таких как шрифт, стили линий, оси форматирования на диаграмме, диаграммы можно создавать очень легко и гибко. Хотя в Matplotlib можно использовать различные графики, такие как гистограммы, гистограммы, точечные диаграммы, диаграммы с областями, круговые диаграммы, графики используются при необходимости в созданном приложении. Благодаря библиотеке matplotlib она помогает нам легче анализировать и интерпретировать данные, визуализируя данные[5].
Мы объяснили, что такое отсутствующие типы данных в проблемах с отсутствующими данными, решения проблем с отсутствующими данными, какой язык программирования мы будем использовать в нашем приложении и какие библиотеки мы будем использовать для анализа данных. Используя базовые компоненты, наше приложение будет решать проблемы с отсутствующими данными и применять различные методы для заполнения или оценки отсутствующих значений.
Библиотеки, которые помогут анализировать данные, включаются в проект в первую очередь.
import pandas as pd import numpy as np import matplotlib.pyplot as plt
Образец набора данных должен быть создан для анализа данных.
data = {'Name': ['John', 'Emily', 'Michael', 'Jessica', 'David'], 'Age': [30, 25, 32, None, 28], 'Gender': ['Male', 'Female', None, 'Female', None], 'Salary': [None, 60000, 48000, 70000, 55000]} df = pd.DataFrame(data)
Результат, который мы называем переменной df, должен быть таким, как показано на рисунке.
Name Age Gender Salary 0 John 30.0 Male NaN 1 Emily 25.0 Female 60000.0 2 Michael 32.0 None 48000.0 3 Jessica NaN Female 70000.0 4 David 28.0 None 55000.0
По созданному нами набору данных увидеть недостающие данные достаточно просто, но когда вы начнете работать с большими данными, увидеть недостающие данные будет уже не так просто. Следовательно, чтобы проанализировать данные, необходимо выявить недостающие данные.
df.isnull().sum()
Эта сгенерированная строка кода показывает, в каком столбце и сколько всего пропущенных данных, и мы должны увидеть результат, как на рисунке.
Name 0 Age 1 Gender 2 Salary 1
Когда мы используем методы решения для обработки отсутствующих данных, мы можем дополнить отсутствующие значения или удалить строки с отсутствующими значениями. Если мы используем некоторые методы решения в созданном нами приложении:
df.fillna({ 'Age': df['Age'].mean(), 'Gender': df['Gender'].mode()[0], 'Salary': df['Salary'].median()}) df.dropna()
В этом блоке кода он заполняет пропущенные значения в столбце «Возраст» средним значением, пропущенные значения в столбце «Пол» — наиболее частым значением, а пропущенные значения в столбце «Зарплата» — медианным значением. . Функция fillna() заполняет пропущенные значения указанными значениями для указанных столбцов. Функция dropna() полностью удаляет из набора данных все строки с отсутствующими значениями.
Последним шагом является изучение проанализированных результатов недостающих данных.
df_filled['Salary'].describe()
Эта строка кода создана, соответствующие значения для столбца «Зарплата» могут быть достигнуты, и результат, с которым мы столкнемся, должен быть таким, как на рисунке.
count 5.000000 mean 58100.000000 std 8018.728079 min 48000.000000 25% 55000.000000 50% 57500.000000 75% 60000.000000 max 70000.000000 Name: Salary, dtype: float64
ЗАКЛЮЧЕНИЕ
Помимо рассмотрения основных концепций и методов решения проблем с отсутствующими данными, в этом исследовании было разработано приложение для анализа отсутствующих данных с использованием языка программирования Python. Правильная обработка отсутствующих данных повышает надежность анализа данных и помогает нам получать более точные результаты.
ССЫЛКИ
[1] В. Маккинни, Панды: фундаментальная библиотека Python для анализа данных и статистики, доступ: 25 ноября 2022 г. [Онлайн]. Доступно: http://pandas.sf.net
[2] Pandas — библиотека анализа данных Python. https://pandas.pydata.org/
[3] NumPy. https://numpy.org/
[4] «scikit-learn: машинное обучение в Python — документация scikit-learn 1.3.dev0».
[5] Matplotlib — визуализация с помощью Python. https://matplotlib.org/