当前位置: 首页 > article >正文

机器学习——简单线性回归、逻辑回归

简单线性回归

        线性回归用于预测一个连续的数值输出(因变量),其模型假设输入特征(自变量)和输出之间存在线性关系。基本的线性回归模型如下:

损失函数

        线性回归通常通过最小二乘法来估计回归系数。最小二乘法的目标是最小化预测值和真实值之间的差异,即最小化损失函数。对于线性回归,损失函数通常是均方误差:

参数优化

        通过梯度下降算法更新回归系数和偏置项,逐步减少损失函数的值。

优点

  • 简单易懂,计算效率高

  • 可解释性强,系数的符号和大小能直接反映特征对输出的影响

缺点

  • 对异常值敏感,容易受到影响

  • 无法处理数据的多重共线性问题

代码示例

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

# 示例数据
X = np.array([[650], [800], [1200], [1500], [1800], [2000], [2300], [2500]])
y = np.array([150, 180, 240, 290, 330, 350, 390, 410])

# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 模型并训练
model = LinearRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 输出模型的系数和截距
print("模型系数:", model.coef_)
print("截距:", model.intercept_)

# 预测结果
print("实际价格:", y_test)
print("预测价格:", y_pred)

# 可视化结果
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体字体
plt.scatter(X, y, color="blue", label="实际数据") 
plt.plot(X, model.predict(X), color="red", label="预测直线")  # 预测直线
plt.legend()
plt.show()

逻辑回归

        逻辑回归用于分类问题,尤其是二分类问题。尽管名字中有“回归”,它实际上是一个分类算法。逻辑回归通过对线性回归的输出进行sigmoid函数转换,将其映射到0到1之间,从而得到一个概率值,用于判断输入样本属于某个类别的概率。

线性模型

激活函数(sigmoid函数)

正类概率(类别1)

损失函数(对数似然函数)

        逻辑回归的目标是找到最优的参数 www,使得模型对训练数据的预测概率最大。

参数优化

        逻辑回归使用梯度下降或类似的方法(如随机梯度下降)来优化损失函数。通过计算损失函数相对于参数w的梯度并不断调整w的值,可以找到最优的参数。

分类决策

        当 P(Y=1∣X)≥0.5时,预测为正类,否则预测为负类。

示例代码

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 示例数据
data = pd.DataFrame({
    '年龄': [22, 25, 28, 32, 35, 40, 45, 50, 60],
    '年收入': [2.5, 5.0, 6.5, 7.5, 8.5, 10.0, 12.5, 15.0, 20.0],
    '购买': [0, 0, 0, 1, 1, 1, 1, 0, 1]
})

# 划分特征和标签
X = data[['年龄', '年收入']]
y = data['购买']

# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)

print("预测结果:", y_pred)
print("准确率:", accuracy)


http://www.kler.cn/a/392041.html

相关文章:

  • Springboot 日志处理(非常详细)
  • 2024年11月13日
  • 使用 start-local 脚本在本地运行 Elasticsearch
  • NoSQL数据库与关系型数据库的主要区别
  • 【学习】【HTML】HTML、XML、XHTML
  • 如何提高自动驾驶中惯性和卫星组合导航pbox的精度?
  • ethercat电机六自由度机械臂的ros2control+moveit2方案启动流程
  • 用Tokio掌握Rust异步编程
  • 【go从零单排】panic、recover、defer
  • 51c自动驾驶~合集10
  • python 京东api怎么写
  • 深入理解Java构造方法和接口:如何调用父类构造方法,接口能否包含方法实现?
  • MySQL缓存使用率超过80%的解决方法
  • 6.10 Queue接口/Deque接口 模拟栈与队列分析
  • 为什么谷歌SEO需要周期性维护?
  • 【excel】easy excel如何导出动态列
  • 离线安装GDAL与MapServer:在银河麒麟V10上的快速指南
  • [基础] 001 move的介绍
  • 机器学习:随机森林——基于决策树的模型
  • (蓝桥杯C/C++)——搜索
  • 036 RabbitMQ消息确认 死信队列 延时队列
  • 脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾
  • 接口测试框架+数据驱动
  • Fish Agent V0.13B:Fish Audio的语音处理新突破,AI语音助手的未来已来!
  • 集合类源码浅析のJDK1.8ConcurrentHashMap(上篇)
  • Go语言的并发安全与互斥锁