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

news/2024/11/14 1:45:04/

简单线性回归

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

损失函数

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

参数优化

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

优点

  • 简单易懂,计算效率高

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

缺点

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

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

代码示例

python">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时,预测为正类,否则预测为负类。

示例代码

python">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.ppmy.cn/news/1546803.html

相关文章

Anaconda 和 Miniconda

Anaconda 和 Miniconda:讲解与使用指南 目录 什么是 Anaconda 和 Miniconda?Anaconda 和 Miniconda 的区别Anaconda 和 Miniconda 的安装步骤 安装 Anaconda安装 Miniconda 基本使用指南 创建和管理虚拟环境安装和管理包更新和管理 Conda 数据科学工具…

2024.6月GESP一级真题讲解(含视频讲解)

1、2024.6月GESP一级真题代码 //休息时间 #include<bits/stdc.h> using namespace std; int main(){int h,m,s,k;//59cin>>h>>m>>s>>k;//1h60m 1m60s 1h3600 k3600 123/100int mhk/3600h;int mmk/60%60m;int msk%60s;if(ms>60){ms-60;mm1…

服务器硬件介绍

计算机介绍 现在的人们几乎无时无刻都在使用电脑&#xff01;而且已经离不开电脑了。像桌上的台式电脑(桌机)、笔记本电脑(笔电)、平板电脑、智能手机等等&#xff0c;这些东西都算是电脑。 台式机电脑介绍 计算机又被称为电脑。台式机电脑主要分为主机和显示器两个部分&…

软件工程的基础和核心理论概念

软件工程的基础和核心理论概念 引言 软件工程是一门集成了计算机科学、数学、管理科学等多学科理论与方法的综合性学科&#xff0c;旨在研究如何有效地构建和维护高质量的软件系统。本文将详细介绍软件工程的基础和核心理论概念&#xff0c;帮助读者更好地理解和应用这些知识…

package.json中“type“: “module“是什么含义,es6和commonjs的区别以及require和import使用场景

"type": "module" 是 Node.js 中 package.json 文件的一个字段&#xff0c;用于指示该项目的模块系统类型。它决定了项目中的 .js 文件应被视为 ECMAScript 模块 (ESM) 还是 CommonJS 模块 (CJS)。 含义和作用&#xff1a; "type": "modu…

带隙基准学习笔记一

1.带隙基准原理&#xff1a; 带隙基准电压源采用BJT&#xff0c;利用其基极-发射极电压的负温度系数和两个不同的BJT基极-发射极电压之差的正温度系数用于获得温度系数为零的基准电压源&#xff0c;因为最终计算的输出电压接近硅晶体的一个带隙电压&#xff0c;所以被称为带隙…

改进系列(3):基于ResNet网络与CBAM模块融合实现的生活垃圾分类

目录 1. ResNet介绍 2. CBAM 模块 3. resnet cbam 3.1 添加在每个layer层后 3.2 关于训练的建议 4. 垃圾分类实战 4.1 数据集 4.2 训练 4.3 最好的权重 4.4 推理 5. 其它 1. ResNet介绍 ResNet&#xff08;残差网络&#xff09;是一种深度卷积神经网络模型&#xf…

【Qt 蓝牙服务器实现】

在 Qt 中实现一个蓝牙服务器可以使用 Qt Bluetooth 模块。下面是一个基本的蓝牙服务器示例,它能够接受来自客户端的连接。 首先,请确保你已经安装了 Qt Bluetooth 模块并在项目文件中包含了相关库。 1. 项目文件 (.pro) 配置 在项目文件中添加以下行,以确保包含 Qt Bluet…