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

Пропущенные полностью случайно (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/