Раздел кода унарной линейной регрессии регрессии

машинное обучение
Раздел кода унарной линейной регрессии регрессии

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

1. Градиентный спуск — одномерная линейная регрессия

Для анализа алгоритма градиентного спуска вы можете обратиться к предыдущей статьеПолностью подключенная нейронная сеть

1. Импорт связанных модулей

numpy: обработка данных pyplot: визуализировать результаты корреляции

import numpy as np
import matplotlib.pyplot as plt

2, метод наименьших квадратов, чтобы найти значение потери

def compute_loss(b,k,x_data,y_data):
    totalLoss = 0
    for i in range(0,len(x_data)):
        totalLoss += (y_data[i] - (k*x_data[i] + b))**2
    return  totalLoss/float(len(x_data))/2.0

3. Метод градиентного спуска для решения коэффициентов

def gradient_descent(x_data,y_data,b,k,lr,epchos):
    #计算数据量长度
    m = float(len(x_data))
    # 循环批次:epochs次
    for i in range(epochs):
        b_grad = 0
        k_grad = 0
        # 计算梯度
        for j in range(len(x_data)):
            b_grad += (1/m)*(((k*x_data[j])+b)-y_data[j])
            k_grad += (1/m)*x_data[j]*(((k*x_data[j])+b)-y_data[j])
        # 更新k和b
        b = b - (lr*b_grad)
        k = k - (lr*k_grad)
    return b,k

4. Загрузите данные

Импорт данных из CSV-файла

data = np.genfromtxt("data.csv",delimiter=',')
x_data = data[:,0]
y_data = data[:,1]

Данные csv выглядят следующим образом:

image.png

5. Установите параметры тренировки

Параметры, которые необходимо установить: скорость обучения, максимальное количество итераций, а также инициализированный перехват и наклон.

# 学习率learning rate
lr = 0.0001
# 截距
b = 0
# 斜率
k = 0
# 最大迭代次数
epochs = 50

6. Параметры инициализации

print("Initialization Parameter b = {}, k = {}, Loss = {}".format(epochs,b,k,compute_loss(b,k,x_data,y_data)))

7. Используйте алгоритм градиентного спуска для обучения

b, k = gradient_descent(x_data, y_data, b, k, lr, epochs)

8. Распечатайте параметры после обучения

print("After {} interations b = {}, k = {}, Loss = {}".format(epochs,b,k,compute_loss(b,k,x_data,y_data)))

9. Результаты

k и b, полученные после обучения:

image.png

Визуализация результатов тренировки:

image.png

2. sklearn-монарная линейная регрессия

sklearnЯвляетсяPythonОчень мощная библиотека машинного обучения, предоставленная сторонними поставщиками, охватывает все аспекты от предварительной обработки данных до моделей обучения. используется в реальном боюscikit-learnЭто может значительно сэкономить нам время на написание кода и уменьшить объем нашего кода.

1. Импорт связанных модулей

from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt

2. Загрузите данные

data = np.genfromtxt("data.csv", delimiter=",")
x_data = data[:,0]
y_data = data[:,1]

3. Преобразуйте структуру данных

x_data = data[:,0,np.newaxis]
y_data = data[:,1,np.newaxis]

4. Создайте и подгоните модель

model = LinearRegression()
model.fit(x_data, y_data)

5. Визуализируйте результаты тренировки

plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, model.predict(x_data), 'r')
plt.show()

image.png