机器学习-线性模型

回归模型

线性回归

线性回归是一种常用的机器学习算法,用于建立一个输入变量和一个连续输出变量之间的线性关系。该算法基于已知的数据,可以预测未知数据的输出。

线性回归通过寻找最佳拟合直线来建立输入变量与输出变量之间的关系。这条直线的斜率和截距表示输入变量与输出变量之间的线性关系。当有多个输入变量时,线性回归可以扩展为多元线性回归

线性回归的目标是最小化预测值和实际值之间的平方误差和,这个误差又被称为“残差”。该算法通常使用最小二乘法来计算最佳拟合直线的斜率和截距。

线性回归有许多实际应用,例如预测房价、销售量、股票价格等。它也常常被用作其他机器学习算法的基础,例如神经网络和支持向量机。
举例
前置知识:

Scikit-learn(简称sklearn)是一个用于机器学习的 Python 库,提供了
许多常见的机器学习算法和工具,如分类、回归、聚类、降维、模型
选择、预处理等。

Scikit-learn 建立在 NumPy、SciPy 和 matplotlib 库之上,并且与
 Python 语言紧密集成。它提供了简单易用的 API,可以轻松地使用
 各种机器学习算法来处理数据,训练模型并进行预测。

Scikit-learn 也是一个开源库,可以在 BSD 授权下免费使用,可以在
 Windows、Mac OS X 和 Linux 等操作系统上运行。它也被广泛地
 应用于各种领域,如自然语言处理、图像处理、信号处理、金融和
 生物信息学等。

代码

# 导入所需的库
import numpy as np
from sklearn.linear_model import LinearRegression

# 准备数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3

# 训练模型
reg = LinearRegression().fit(X, y)

# 打印模型参数
print(reg.coef_)      # 斜率
print(reg.intercept_) # 截距

# 预测新数据
print(reg.predict(np.array([[3, 5]]))) # 预测输出

这段代码中,首先导入了 NumPy 库和 LinearRegression 类(线性回归模型)所在的模块 sklearn.linear_model。接着,定义了一个二维数组 X,它包含了四个样本,每个样本有两个特征;另外,定义了一个一维数组 y,它是将矩阵 X 与一维数组 [1, 2] 的点积结果加上 3 得到的。这样生成的数据集可以用来训练一个简单的线性回归模型,该模型可以用来预测任意两个特征的值与对应的标签之间的关系。

接着,使用 LinearRegression 类创建一个线性回归模型对象 reg,并调用 fit() 方法来拟合数据。在这个例子中,fit() 方法会使用 X 和 y 中的数据来训练模型,寻找一组最优的权重系数,使得模型可以最好地拟合数据。训练完成后,reg 对象将保存这些权重系数,以便可以用来进行预测。

分类问题

逻辑回归(与线性回归的区别)

与线性回归的区别在于
逻辑回归是找一条线将类别分开,线性回归是找一条线,能使所有点到这条线的距离最近
比较正式的说法:

任务类型

线性回归用于解决回归问题,即预测连续型数值的输出;而逻辑回归用于解决分类问题,即预测离散型类别的输出。

输出形式

线性回归的输出是连续型数值,而逻辑回归的输出是概率值,表示属于某一类别的概率。

假设函数

线性回归使用线性函数进行建模,假设特征与输出之间存在线性关系;而逻辑回归使用sigmoid函数进行建模,假设特征与输出之间存在非线性关系。

损失函数

线性回归使用最小二乘损失函数进行优化,即使预测值与真实值之间的平方误差最小化;而逻辑回归使用交叉熵损失函数进行优化,即使预测值与真实值之间的差异最小化。

参数估计方法

线性回归使用最小二乘法进行参数估计,即通过最小化损失函数对参数进行求导和求解;而逻辑回归使用极大似然估计法进行参数估计。

逻辑回归

模型

逻辑回归模型是一个基于概率的线性分类模型。假设函数为 Sigmoid 函数,它将自变量的线性组合映射到一个概率值上,即 P ( y = 1 ∣ x ) = 1 1 + e − z P(y=1|x)=\frac{1}{1+e^{-z}} P(y=1∣x)=1+ez1,其中 z = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n z=\theta_0 + \theta_1x_1+\theta_2x_2+...+\theta_nx_n z=θ0+θ1x1+θ2x2+...+θnxn 是模型的线性组合。

策略

逻辑回归的策略是最大化似然函数。对于给定的样本集合和参数估计,似然函数表示在该参数下,观测到当前样本的概率,最大化似然函数即可得到最优的模型参数估计。

算法

逻辑回归的常用算法包括梯度下降法、牛顿法和拟牛顿法等。其中,梯度下降法是最常用的优化算法之一,它通过迭代更新模型参数,使得似然函数逐渐达到最大值。牛顿法和拟牛顿法是二阶优化算法,相比于梯度下降法具有更快的收敛速度和更好的稳定性
例子
下面是一个使用sklearn库进行逻辑回归的例子,该例子使用了Iris(鸢尾花)数据集,对花的种类进行分类。

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 构建模型并训练
clf = LogisticRegression(random_state=0).fit(X_train, y_train)

# 预测
y_pred = clf.predict(X_test)

# 输出结果
print("Test set score: {:.2f}".format(clf.score(X_test, y_test)))

该例子首先加载Iris数据集,然后将数据集划分为训练集和测试集。接着使用sklearn库的LogisticRegression函数构建逻辑回归模型,并对训练集进行训练。最后使用训练好的模型对测试集进行预测,并输出模型的准确率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ㄨㄛˇㄞˋㄋㄧˇ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值