Python | Создавайте тестовые наборы данных для машинного обучения

Опубликовано: 24 Июля, 2021

Когда мы думаем о машинном обучении, первое, что приходит в голову, - это набор данных. Хотя существует множество наборов данных, которые вы можете найти на таких веб-сайтах, как Kaggle, иногда бывает полезно извлечь данные самостоятельно и создать свой собственный набор данных. Создание собственного набора данных дает вам больший контроль над данными и позволяет обучать вашу модель машинного обучения.

В этой статье мы сгенерируем случайные наборы данных с помощью библиотеки Numpy в Python.

Необходимые библиотеки:

 -> Numpy: pip3 установить numpy
-> Панды: pip3 установить панды
-> Matplotlib: pip3 установить matplotlib

Нормальное распределение:

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

График нормального распределения:

Пример:

PYTHON3




# importing libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# initialize the parameters for the normal
# distribution, namely mean and std.
# deviation
# defining the mean
mu = 0.5
# defining the standard deviation
sigma = 0.1
# The random module uses the seed value as a base
# to generate a random number. If seed value is not
# present, it takes the system's current time.
np.random.seed( 0 )
# define the x co-ordinates
X = np.random.normal(mu, sigma, ( 395 , 1 ))
# define the y co-ordinates
Y = np.random.normal(mu * 2 , sigma * 3 , ( 395 , 1 ))
# plot a graph
plt.scatter(X, Y, color = 'g' )
plt.show()

Выход :

Давайте посмотрим на лучший пример.
Мы сгенерируем набор данных с 4 столбцами. Каждый столбец в наборе данных представляет функцию. Пятый столбец набора данных - это метка вывода. Он варьируется от 0 до 3. Этот набор данных можно использовать для обучения классификатора, такого как классификатор логистической регрессии, классификатор нейронной сети, опорные векторные машины и т. Д.

PYTHON3




# importing libraries
import numpy as np
import pandas as pd
import math
random import
import matplotlib.pyplot as plt
# defining the columns using normal distribution
# column 1
point1 = abs (np.random.normal( 1 , 12 , 100 ))
# column 2
point2 = abs (np.random.normal( 2 , 8 , 100 ))
# column 3
point3 = abs (np.random.normal( 3 , 2 , 100 ))
# column 4
point4 = abs (np.random.normal( 10 , 15 , 100 ))
# x contains the features of our dataset
# the points are concatenated horizontally
# using numpy to form a feature vector.
x = np.c_[point1, point2, point3, point4]
# the output labels vary from 0-3
y = [ int (np.random.randint( 0 , 4 )) for i in range ( 100 )]
# defining a pandas data frame to save
# the data for later use
data = pd.DataFrame()
# defining the columns of the dataset
data[ 'col1' ] = point1
data[ 'col2' ] = point2
data[ 'col3' ] = point3
data[ 'col4' ] = point4
# plotting the various features (x)
# against the labels (y).
plt.subplot( 2 , 2 , 1 )
plt.title( 'col1' )
plt.scatter(y, point1, color = 'r' , label = 'col1' )
plt.subplot( 2 , 2 , 2 )
plt.title( 'Col2' )
plt.scatter(y, point2, color = 'g' , label = 'col2' )
plt.subplot( 2 , 2 , 3 )
plt.title( 'Col3' )
plt.scatter(y, point3, color = 'b' , label = 'col3' )
plt.subplot( 2 , 2 , 4 )
plt.title( 'Col4' )
plt.scatter(y, point4, color = 'y' , label = 'col4' )
# saving the graph
plt.savefig( 'data_visualization.jpg' )
# displaying the graph
plt.show()

Выход :