Нейронные сети/Машинное обучение Python

substandard rank
Забаненный
Статус
Оффлайн
Регистрация
21 Янв 2019
Сообщения
424
Реакции[?]
113
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начнем с объяснений.

Что такое нейронные сети или машинное обучение?

Это ввод информации, обработка внутри сети и вывод пользователю.

2 нейрона получают какую-либо информацию от пользователя, например картинку футболки, далее нейросеть обрабатывает изображение по алгоритму (ниже картинка как это происходит),и после выводит эту информацию в одном выражении, будь-то текст, картинка, смайлик, сообщение, голосовая команда и тд.

По факту нейросеть нужна нам для упрощения алгоритмизации нашего кода, к примеру вместо прописи кучи условий if для обработки значения.

Например нам нужно обработать числа полученные от пользователя, а после определить и вывести отрицательно ли оно, положительно или равно 0.


Python:
if a == 0:
    print(str(a) + " = нулю")
else if a > 0:
    print(str(a) + " положительно")
else if a < 0:
    print(str(a) + " отрицательно")
Вместо всех этих условий можно сделать нейросеть.


Python:
from sklearn.neural_network import MLPClassifier #импорт модели для нейросети

model = MPClassifer() #удобная переменная

train_x = [[1], [2], [3], [-2], [-1], [-8], [0]]
train_y = ["положительно", "положительно", "положительно", 'отрицательно', 'отрицательн', 'отрицательно', '= нулю']

#данные для тренировки нейросети опять таки, я тренирую ее на готовых значениях, вы можете получать значения от пользователя

model.fit(train_x, train_y) #сама тренировка

while True:
    print(*model.predict([[int(input())]])) #бесконечный цикл с выводом значения предсказания модели опираясь на данные выше.

В биологии работу нашего мозга или всех остальных сущностей у которых он имеется в наличии, можно объяснить так:

2 нейрона, как 2 глаза получают информацию на вход, передают ее в мозг, в мозгу они передаются в конечную точку и мы осознаем что перед нами стоит наш приятель, а не дерево.



Как вы уже поняли, нейросеть умеет обрабатывать данные.

Многие datasince программисты используют эти технологии для вывода графиков, создания кластеризации, отрисовки таблиц исходя из данных.

В данной теме мы попробуем обойти все сразу ^_^

Сейчас вы увидите код в который я разделю на графики/кластеризацию/таблицы/изображения.
P.S.: Все данные будут использоваться из 1 файла.

Для начала покажу таблицы и вывод всей информации, а так же само подключение даты.
Python:
#Импорт библиотек которые нам понадобятся.

from sklearn.cluster import KMeans #Библиотека кластеризации.
from pandas import DataFrame #Библиотека для работы с нашим датасетом
import pandas as pd #Библиотека нужная для подключения файла
import matplotlib.pyplot as plt #Библиотека для работы с отрисовкой различных геометрических функций.

dataset = pd.read_excel('dataset1.xlsx') #Через библиотеку pandas подключаем датасет.
#это может быть любой файл, не обязательно эксель.

dataset.info() #Мы можем вывести всю информацию о датасете, от количества колонн в группах, до веса датасета.
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 51 entries, 0 to 50
Data columns (total 5 columns):
Объект          51 non-null object
Координата_X    51 non-null float64
Координата_Y    51 non-null float64
Тип             51 non-null int64
Владелец        51 non-null object
dtypes: float64(2), int64(1), object(2)
memory usage: 2.1+ KB
'''

#С помощью простого вызова переменной, мы можем увидеть сам датасет.

dataset #скриншот №1

#Через команду describe(), мы можем вывести всю описательную хар-ку даты.

dataset.describe()
'''
    Координата_X    Координата_Y    Тип
    count 51.000000    51.000000    51.000000
    mean 34.003922    14.594118    0.509804
    std    15.721272    7.477069    0.504878
    min    4.000000    3.000000    0.000000
    25%    23.800000    10.000000    0.000000
    50%    39.000000    12.500000    1.000000
    75%    46.000000    18.000000    1.000000
    max    59.000000    41.000000    1.000000
'''
Скрин №1, на самом деле там больше объектов.


Продолжим. Далее у нас кластеризация.
Python:
#Для дальнейшей работы с датасетами создадим 2 словаря для координат.

Data = {
    'x': [],
    'y': []
    }

Data2 = {
    'x': [],
    'y': []
    }

for i in range(28, 51): #Заполняем первый словарь
    x = dataset.loc[i].Координата_X #Добавляем переменную x, которая равна координате X в таблице.
    y = dataset.loc[i].Координата_Y  #Добавляем переменную y, которая равна координате Y в таблице.
    Data['x'].append(x) #Заполняем словарь x.
    Data['y'].append(y) #Заполняем словарь y.

for i in range(0, 28): #Заполняем второй словарь
    x = dataset.loc[i].Координата_X  #Добавляем переменную x, которая равна координате X в таблице.
    y = dataset.loc[i].Координата_Y  #Добавляем переменную y, которая равна координате Y в таблице.
    Data2['x'].append(x) #Заполняем словарь x.
    Data2['y'].append(y) #Заполняем словарь y.

#Создаем 2 переменные для dataframe
df = DataFrame(Data, columns=['x', 'y']) # 1 dataframe
df2 = DataFrame(Data2, columns=['x', 'y']) # 2 dataframe
kmeans = KMeans(n_clusters=17).fit(df) # Параметры цетройдов
kmeans2 = KMeans(n_clusters=20).fit(df2) # Параметры самих кластеров
#команда fit обучает кластеры и центройды по dataframe
centroids = kmeans.cluster_centers_ #Добавляем переменную centroids и берем из библиотеки центры кластеров

#отрисовка кластеров (точек)
plt.scatter(df2['x'], df2['y'], c=kmeans2.labels_.astype(float), s=50, alpha=0.5) #Добавляем точки кластеров
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=50, linewidths=0.5) #Добавляем центройды
plt.show() #Отображаем Скрин №2
Скрин №2



Все кластеры притягиваются к ближайшим центройдам, а после им задается определенный цвет.

Графики

Python:
#Я уже сказал что буду использовать только одни данные, как я пожелел.
#Чтобы создать график, нам нужны данные x и y точек и комманда plot(x, y)
#Но я подумал что будет скучно делать график и замутил гистограмму, все делается очень легко.
plt.hist(df['x']) #Добавляем на дистограмму значения x
plt.show() #Отображаем гистограмму. Скрин №3
Скрин №3


На работе с датасетами в данной теме хватит. Перейдем к настоящей нейросети способной разбирать буквы. Тема - https://yougame.biz/threads/118776/

Надеюсь вы что-то поняли.
Спасибо за внимание! Всем удачи!
 
Сверху Снизу