Введение в обработку данных
Обработка данных обычно имеет следующие этапы
Первые три являются этапом подготовки, а последние два — этапом анализа.
задачи анализа данных
% потраченного времени Сборка обучающих наборов обучающих данных 3%
Уборка/организация 60%
Сбор Сбор данных 19%
Данные майнинга для паттерна 9%
others 9%
подготовка данных
Исследование данных
Исследование данных — это процесс создания начального понимания атрибутов (например, распространение или характеристики). Например, размер данных, тип, формат, целостность, взаимосвязь и т. д.
Существует множество инструментов, которые помогут установить ваш личный подход к данным. : MIT DIVE / Python: Matplotlib/Pandas/Numpy
Очистка данных
трудность
- Обработка пропущенных значений
- Удалить выбросы
- устранять несоответствия
- Обработка зашумленных данных, шумоподавление
данные зашумлены, это влияет на наше понимание и анализ данных. Поэтому нам нужно удалить его перед анализом. Шум данных может быть вызван:
1. Неправильное положение датчика 2. Различные источники данных 3. Сбор данных не стандартизирован 4. Человеческая ошибка, ошибка программирования
данные потеряныОтносится к точке данных, которой нет в исходных данных. Общий метод лечения
Данные содержат выбросы, общий способ найти его
- Визуальное исследование.
- статистический тест.
- Моделирование (линейные модели, ковариации, одноклассовые SVM, локальные выбросы)
Несогласованность данных относится к значениям данных, которые не соответствуют атрибутам данных или изменяются на полпути.
Преобразование данныхПреобразование данных
метод:
- Нормализация
- Агрегация
- Дискретность
НормализацияИзменяет значение на общий диапазон, но не изменяет разницу между значениями. Нормализация уменьшает влияние домино на способность алгоритма к обучению (в зависимости от алгоритма). Обязательно стандартизируйте функции, неявно взвешивая представление всех функций одинаково.
АгрегацияЭто процесс объединения как минимум двух атрибутов в один (например, двух столбцов данных в один). Это может быть сделано либо автоматически (например, обнаружение корреляции), либо вручную. Агрегация данных снижает изменчивость данных. Он работает со свойствами, а не со значениями.
Подготовка данных с помощью Python
Канал передачи данных:disk.baidu.com/yes/1 бывает 7BQ XT…Код извлечения: 4zh5
Просмотр данных
import matplotlib.pyplot as plt
# readinf the data
df = pd.read_csv("CombinedCyclePowerPlantDirty.csv")
# two samples
print("data samples")
print(df.head(3).T)
# columns and types
print("columns types")
print(df.dtypes)
print("Full Info")
print(df.info())
Просмотрите состав данных через df.info(), вы можете обнаружить, что тип и количество данных разные.
очистка данных
df.V.hist()
plt.show()
print("min ", df.V.min())
print("max ", df.V.max())
print("mean ", df.V.mean())
Выводите максимальное и минимальное значения столбца, наблюдайте за распределением данных и облегчайте последующую очистку
df = df[df.AP > 0]
df = df[df.AP < 100000]
df = df[df.RH > 0]
df = df[df.RH <= 100]
plt.hist(df.RH)
plt.title("RH")
plt.show()
print(df.info())
def test(value):
try:
float(value)
return True
except:
return False
df = df[df.PE.apply(test)]
df.PE = df.PE.apply(float)
print(df.info())#去除了PE中无法被float的数据,并且将数据变成了9502组。
Для очистки данных удалите слишком большие и слишком маленькие значения, чтобы получить следующее изображение
Распределение данных более равномерное и интуитивно понятное
Можно видеть, что первая информация () была выровнена, за исключением столбца PE, всего 10432 набора данных. После этого данные, которые не могут быть размещены в PE, удаляются тестовой функцией, а данные превращаются в группы 9502.
df.AT = df.AT.apply(lambda x: x.replace("o","0"))#数据中0和o混淆,将o替换为0
df.AT = df.AT.apply(float) #将数据转换为float类型
print(df.info())
Затем очистить неправильные данные в АТ.В это время все данные очищаются, всего 9497 групп
Просмотр взаимосвязи между данными
#在清理数据之后看数据之间的关系
# PE AT
plt.scatter(df.AT,df.PE)
plt.title("PE, vs AT")
plt.show()
datasets = {}
for name in df.TCN.unique():
datasets[name] = df[df.TCN == name]
plt.scatter(datasets[name].AT, datasets[name].PE, label=name)
plt.legend()
plt.show()
TCN содержит централизованные имена, каждый набор данных создается с каждым именем TCN, а затем на графике мы можем видеть распределение разных имен.
def corrector(row):
if row["TCN"] == "Daniel Smithson":
return (row["AT"]-32)*5/9
else:
return row["AT"]
df.AT = df.apply(corrector, axis=1)
datasets = {}
for name in df.TCN.unique():
datasets[name] = df[df.TCN == name]
plt.scatter(datasets[name].AT, datasets[name].PE, label=name)
plt.legend()
plt.show()