【机器学习】单变量线性回归

第一个机器学习算法——单变量线性回归

  • m:表示训练集数据的总量
  • x:表示输入变量
  • y:表示输出变量
  • (x,y):表示一个训练样本
  • (x(i),y(i)):表示第i个训练样本

对于一元线性回归(单变量线性回归)来说,学习算法为 y = ax + b。我们换一种写法: hθ(x) = θ0 + θ1x1

使用sklearn实现线性回归

# -*- coding:utf-8 -*-
# @Time:4/18/19 7:50 PM
# @Author:CIGA
# @Filename:01.py
# @Software:PyCharm
"""

"""
import numpy as np
from sklearn.linear_model import LinearRegression

# 生成数据
# np.random.rand(100,1)生成一个大矩阵,共100行1列
# 每一行都是一个1乘1的小矩阵
# 小矩阵中的数值为[0,1)
a = np.random.rand(100,1)
# X、y即为关于a矩阵进行运算得到的新矩阵
X = 2*a
y = 4+3*X+a
# print(a)
# print(X)
# print(y)

# 生成线性回归的对象
lin_reg = LinearRegression()

# fit方法训练模型
lin_reg.fit(X,y)

# y=kx+b
# intercept_是截距,coef_是系数
# intercept_=b,coef_=k
print(lin_reg.intercept_,lin_reg.coef_)

# 进行预测
# 必须是二维矩阵
X_new1 = np.array([[0]])
X_new2 = np.array([[2]])
# 生成一个大矩阵
# 大矩阵中2乘1
X_new3 = np.array([[1],[2]])
# print(X_new1)
# print(X_new2)
# print(X_new3)

print(lin_reg.predict(X_new1))
print(lin_reg.predict(X_new2))
print(lin_reg.predict(X_new3))

线性回归实际上要做的事情就是: 选择合适的参数(θ0, θ1),使得hθ(x)方程,很好的拟合训练集。

MSE(mean square error)

损失(代价)函数——均方误差
使用真实值减去预测值在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
变量线性回归是一种用于预测数值型输出的机器学习算法。在Python,可以使用NumPy库来实现变量线性回归。 以下是实现变量线性回归的步骤: 1. 导入NumPy库和matplotlib库(用于可视化)。 2. 读取数据集并将其存储在NumPy数组。 3. 可以使用散点图来可视化数据集,以便更好地理解数据。 4. 初始化参数theta。 5. 定义代价函数computeCost,用于计算当前参数theta下的代价。 6. 定义梯度下降函数gradientDescent,用于更新参数theta。 7. 调用gradientDescent函数来更新参数theta,并计算代价。 8. 可以使用直线图来可视化拟合的线性模型。 以下是一个简变量线性回归的Python代码示例: ``` import numpy as np import matplotlib.pyplot as plt # 读取数据集 data = np.loadtxt('data.txt', delimiter=',') # 可视化数据集 plt.scatter(data[:, 0], data[:, 1], marker='x') plt.xlabel('Population of City in 10,000s') plt.ylabel('Profit in $10,000s') plt.show() # 初始化参数theta theta = np.zeros([2, 1]) # 定义代价函数 def computeCost(X, y, theta): m = len(y) J = 0 h = X.dot(theta) J = 1/(2*m)*np.sum(np.square(h-y)) return J # 定义梯度下降函数 def gradientDescent(X, y, theta, alpha, num_iters): m = len(y) J_history = np.zeros([num_iters, 1]) for i in range(num_iters): h = X.dot(theta) theta = theta - alpha*(1/m)*(X.T.dot(h-y)) J_history[i] = computeCost(X, y, theta) return theta, J_history # 添加一列全为1的特征 X = np.hstack((np.ones([len(data), 1]), data[:, 0].reshape(-1, 1))) y = data[:, 1].reshape(-1, 1) # 运行梯度下降算法 theta, J_history = gradientDescent(X, y, theta, 0.01, 1500) # 可视化拟合的线性模型 plt.scatter(data[:, 0], data[:, 1], marker='x') plt.plot(data[:, 0], X.dot(theta), color='r') plt.xlabel('Population of City in 10,000s') plt.ylabel('Profit in $10,000s') plt.show() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值