机器学习——一元线性回归

Posted ke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习——一元线性回归相关的知识,希望对你有一定的参考价值。

import numpy as np
import matplotlib.pyplot as plt

#加载数据集
data = np.genfromtxt("../data_linear.csv",delimiter=",")
x_data = data[:,0]
y_data = data[:,1]

# #展示数据集
# plt.scatter(x_data,y_data)
# plt.show()

#设置基本参数
lr = 0.001
k = 0
b = 0
epochs = 50#最大迭代次数

#最小二乘法
def compute_error(b,k,x_data,y_data):
    totalError = 0
    for i in range(0,len(x_data)):
        totalError += (y_data[i]-(k*x_data[i]+b))**2
    return totalError / float(len(x_data))/2

def gradient_descent_runner(x_data,y_data,b,k,lr,epochs):
    m = float(len(x_data))#计算总数据量
    for i in range(epochs):#循环50次
        b_grad = 0
        k_grad = 0
        for j in range(0,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]))
        b = b-(lr*b_grad)
        k = k-(lr*k_grad)
    return b,k


print(f"Starting b = b, k = k, error = compute_error(b,k,x_data,y_data)")
print("Running...")
b, k = gradient_descent_runner(x_data, y_data, b, k, lr, epochs)
print(f"After epochs iterations b = b, k = k, error = compute_error(b,k,x_data,y_data)")

# 画图
plt.plot(x_data, y_data, 'b.')  # "b是蓝色 .表示用点表示"
plt.plot(x_data, k * x_data + b, 'r')
plt.show()

利用sklearn

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

data = np.genfromtxt("../data_linear.csv",delimiter=",")

x_data = data[:,0,np.newaxis]# 构建特征x:第0列   一维变为二维-->np.newaxis
y_data = data[:,1,np.newaxis]
# plt.scatter(x_data, y_data)
# plt.show()
#创建拟合模型
model = LinearRegression()
#训练模型
model.fit(x_data,y_data)
#画图
plt.plot(x_data,y_data,'b .')
plt.plot(x_data,model.predict(x_data),'r')
plt.show()

以上是关于机器学习——一元线性回归的主要内容,如果未能解决你的问题,请参考以下文章

从统计看机器学习 一元线性回归

线性回归模型|机器学习

sklearn实现一元线性回归 Python机器学习系列

机器学习笔记一元线性回归原理公式及代码实现

机器学习——一元线性回归

机器学习--线性回归模型原理