В машинном обучении мы обучаем наши данные прогнозировать или классифицировать вещи таким образом, чтобы это не было жестко закодировано в машине. Итак, во-первых, у нас есть набор данных или входные данные, которые нужно предварительно обработать и обработать для получения желаемых результатов. Любая модель ML, которая должна быть построена, следует следующей процедуре:
- Собирать данные
- Выполнение обработки/очистки данных (масштабирование функций)
- Данные предварительной обработки
- Применить визуализации
Масштабирование функций — это метод стандартизации функций, присутствующих в данных, в фиксированном диапазоне. Это должно выполняться во время предварительной обработки данных. У него есть два основных пути: стандартизация и нормализация.
Стандартизация
Шаги, которые необходимо выполнить:
Сбор данных
Наши данные могут быть в различных форматах, например числа (целые числа) и слова (строки), на данный момент мы будем рассматривать только числа в нашем наборе данных.
Предположим, что наш набор данных имеет случайные числовые значения в диапазоне от 1 до 95 000 (в случайном порядке). Просто для нашего понимания рассмотрим небольшой набор данных, состоящий всего из 10 значений с числами в заданном диапазоне и рандомизированном порядке.
1) 99 2) 789 3) 1 4) 541 5) 5 6) 6589 7) 94142 8) 7 9) 50826 10) 35464
Если мы просто посмотрим на эти значения, их диапазон настолько велик, что обучение модели с 10 000 таких значений займет много времени. Вот где возникает проблема.
Понимание стандартизации
У нас есть решение для решения возникшей проблемы т.е. Стандартизация. Это помогает нам решить эту проблему:
- Уменьшение масштаба значений до общей для всех шкалы, обычно в диапазоне от −1 до +1.
- И сохраняя диапазон между значениями без изменений.
Итак, как мы это делаем? у нас есть математическая формула для того же, т. е. Z-Score = (Current_value — Mean) / Standard Deviation.
Формула стандартизации
Используя эту формулу, мы заменяем все входные значения Z-оценкой для каждого значения. Следовательно, мы получаем значения в диапазоне от −1 до +1, сохраняя диапазон нетронутым.
Стандартизация выполняет следующие функции:
- Преобразует среднее значение (μ) в 0
- Преобразовывает в SD (σ) к 1
Это совершенно очевидно для среднего значения = 0 и SD = 1, так как все значения будут иметь такую меньшую разницу, и каждое значение будет почти равно 0, следовательно, среднее значение = 0 и SD = 1.
ПРИМЕЧАНИЕ. (Просто для лучшего понимания)
Для среднего
Когда мы вычитаем значение меньше среднего, мы получаем (-ve)
результат Когда мы вычитаем значение больше среднего, мы получаем (+ve) результатСледовательно, когда мы получаем (-ve) и (+ve) значения для вычитания значения со средним значением при суммировании всех этих значений,
мы получаем окончательное среднее значение как 0.И когда мы получаем среднее как 0, это означает, что большинство или почти все значения равны или очень близки к 0 и имеют очень низкую дисперсию между ними.
Следовательно, SD также становится равным 1 (равно как и без разницы).
Реализация Кодекса
Здесь мы делаем следующее:
- Расчет Z-показателя
- Сравнение исходных значений и стандартизированных значений
- Сравнение диапазона обоих с использованием точечных диаграмм
Python3
# Importing Libraries
import
matplotlib
import
matplotlib.pyplot as plt
# We are just using 10 values
# for our Dataset
# Here, dataset_0 will be constant
# as it's range is just 1 - 10
# But, dataset_1 will be scaled down
# as it's range is 1 - 95,000
global
dataset_0, dataset_1
dataset_0
=
[
10
,
5
,
6
,
1
,
3
,
7
,
9
,
4
,
8
,
2
]
dataset_1
=
[
1
,
99
,
789
,
5
,
6859
,
541
,
94142
,
7
,
50826
,
35464
]
n
=
len
(dataset_1)
mean_ans
=
0
ans
=
0
j
=
0
Теперь, чтобы вычислить сумму, запустите следующий код:
Python3
# Calculating summation
for
i
in
dataset_1:
j
=
j
+
i
k
=
i
*
i
ans
=
ans
+
k
(
'n : '
, n)
(
"Summation (X) : "
, j)
(
"Summation (X^2) : "
, ans)
Выход :
n : 10 Summation (X) : 188733 Summation (X^2) : 12751664695
Затем рассчитайте стандартное отклонение
Python3
# Calculating Standard Deviation
part_1
=
ans
/
n
part_2
=
mean_ans
*
mean_ans
standard_deviation
=
part_1
-
part_2
(
"Standard Deviation : "
, standard_deviation)
Выход :
1275166469.5
Затем вычислите среднее значение, используя этот код
Python3
# Calculating Mean
mean
=
j
/
n
mean
Выход :
18873.3
Чтобы рассчитать Z-оценку для каждого значения набора данных_1
Python3
# Calculating the Z-Score for each
# Value of dataset_1
final_z_score
=
[]
(
"Calculating Z-Score of Each Value in dataset_1"
)
for
i
in
dataset_1:
z_score
=
(i
-
mean)
/
standard_deviation
final_z_score.append(
"{:.20f}"
.
format
(z_score))
Сравнение значений исходного набора данных и уменьшенного набора данных
Python3
# Comparing the Values of Original Dataset and Saled Down Dataset
(
"\nOriginal DataSet | Z-Score "
)
()
for
i
in
range
(
len
(dataset_1)):
(
" "
, dataset_1[i],
" | "
, final_z_score[i])
Выход :
Original DataSet | Z-Score 1 | -0.00001479987158649171 99 | -0.00001472301887561513 789 | -0.00001418191305413712 5 | -0.00001479673474114981 6859 | -0.00000942175024780167 541 | -0.00001437639746533501 94142 | 0.00005902656774649453 7 | -0.00001479516631847886 50826 | 0.00002505766953904366 35464 | 0.00001301061500347112
Теперь мы сравним и увидим график исходных значений и стандартизированных значений.
Python3
# Here We are checking the Graph
# of the Original Values
plt.scatter(dataset_0, dataset_1, label
=
"stars"
,
color
=
"blue"
, marker
=
"*"
, s
=
40
)
plt.xlabel(
'x - axis'
)
plt.ylabel(
'y - axis'
)
plt.legend()
plt.show()
# Here we are checking the Graph of
# the Standardized Values
plt.scatter(dataset_0, final_z_score, label
=
"stars"
,
color
=
"blue"
, marker
=
"*"
, s
=
30
)
plt.xlabel(
'x - axis'
)
plt.ylabel(
'y - axis'
)
plt.legend()
plt.show()
Выход :
График исходных значений
График стандартизированных значений
Python3
final_z_score
=
[]
for
i
in
dataset_1:
z_score
=
(i
-
mean)
/
standard_deviation
final_z_score.append(
"{:.20f}"
.
format
(z_score))
Сравнение значений исходного набора данных и уменьшенного набора данных.
Python3
(
" Original DataSet | Z-Score "
)
()
for
i
in
range
(
len
(dataset_1)):
(
" "
, dataset_1[i],
" | "
, final_z_score[i])
Выход :
Original DataSet | Z-Score 1 | -0.00001479987158649171 99 | -0.00001472301887561513 789 | -0.00001418191305413712 5 | -0.00001479673474114981 6859 | -0.00000942175024780167 541 | -0.00001437639746533501 94142 | 0.00005902656774649453 7 | -0.00001479516631847886 50826 | 0.00002505766953904366 35464 | 0.00001301061500347112
Сравнение диапазона значений с помощью графиков
1) График исходных значений
Python3
# Now we will compare and see the graph
# of the Original Values and the
# Standardized Values
import
matplotlib
import
matplotlib.pyplot as plt
# Here We are checking the Graph of the
# Original Values
plt.scatter(dataset_0, dataset_1, label
=
"stars"
,
color
=
"blue"
, marker
=
"*"
, s
=
40
)
plt.xlabel(
'x - axis'
)
plt.ylabel(
'y - axis'
)
plt.title(
'Original Values'
)
plt.legend()
plt.show()
Выход :
График исходных значений
2) График стандартизированных значений
Python3
import
matplotlib
import
matplotlib.pyplot as plt
plt.scatter(dataset_0, final_z_score, label
=
"stars"
,
color
=
"blue"
, marker
=
"*"
, s
=
30
)
plt.xlabel(
'x - axis'
)
plt.ylabel(
'y - axis'
)
plt.title(
'Original Values'
)
plt.legend()
plt.show()
Выход :
График стандартизированных значений
Поэтому мы рассмотрели, поняли концепцию, а также внедрили концепцию стандартизации в машинном обучении.