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

0304考试通过-逻辑回归实战-机器学习-人工智能

开始通过预测

  • 基于examdata.csv数据,建立逻辑回归模型,评估模型表现
  • 预测Exam1=75,Exam2=60时,该同学能否通过Exam3
  • 建立二阶边界模型,重复1、2

Examdata.csv示例数据如下:

Exam1,Exam2,Pass
34.62365962,78.02469282,0
30.28671077,43.89499752,0
35.84740877,72.90219803,0
60.18259939,86.3085521,1

以下是结合数据可视化的完整代码,包含数据点、决策边界及新样本的标记:

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipelinematplotlib.use('TkAgg')
# 设置 Matplotlib 使用支持中文的字体
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK SC']  # 根据字体名称调整
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# 读取数据
data = pd.read_csv('examdata.csv')
X = data[['Exam1', 'Exam2']].values  # 关键修改:转为 numpy 数组
# print(X)
y = data['Pass'].values
# print(y)# 创建模型流水线
model = make_pipeline(PolynomialFeatures(degree=2, include_bias=False),StandardScaler(),LogisticRegression(penalty='l2', solver='lbfgs')
)
model.fit(X, y)# 生成网格点
x_min, x_max = data['Exam1'].min() - 5, data['Exam1'].max() + 5
y_min, y_max = data['Exam2'].min() - 5, data['Exam2'].max() + 5
xx, yy = np.meshgrid(np.linspace(x_min, x_max, 500),np.linspace(y_min, y_max, 500))# 预测网格点的分类结果
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)# 可视化
plt.figure(figsize=(10, 6))
# 绘制决策边界
plt.contourf(xx, yy, Z, alpha=0.3, cmap='coolwarm')
# 绘制原始数据点(通过 numpy 布尔索引)
plt.scatter(X[y == 0, 0], X[y == 0, 1],c='red', label='Failed', edgecolors='k')
plt.scatter(X[y == 1, 0], X[y == 1, 1],c='blue', label='Passed', edgecolors='k')
# 标记新样本
plt.scatter(75, 60, c='green', s=200, marker='*',label='New Sample (75, 60)')plt.xlabel('Exam1 Score')
plt.ylabel('Exam2 Score')
plt.title('Logistic Regression with 2nd-Order Boundary')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()

可视化说明

  1. 颜色区域:红色区域表示预测为未通过(Failed),蓝色区域表示通过(Passed)
  2. 数据点:原始数据点按真实标签着色(红色=0,蓝色=1)
  3. 星号标记:绿色五角星表示待预测样本(Exam1=75, Exam2=60)
  4. 决策边界:二阶多项式生成的曲线边界能更灵活地划分数据

输出效果

  • 通过样本集中在右上角高分段区域
  • 新样本位于蓝色通过区域,与代码预测结果一致
  • 二阶边界呈现出明显的非线性形状,比一阶逻辑回归的直线边界更贴合数据分布

如下图所示:

在这里插入图片描述

可视化结果直观展示了模型如何通过非线性决策边界对复杂数据进行分类。

结语

❓QQ:806797785

⭐️仓库地址:https://gitee.com/gaogzhen

⭐️仓库地址:https://github.com/gaogzhen

[1]AI人工智能从入门到精通全套教程[CP/OL].

http://www.xdnf.cn/news/621523.html

相关文章:

  • Symbol、Set 与 Map:新数据结构探秘
  • uniapp-商城-66-shop(2-品牌信息显示,数据库读取的异步操作 放到vuex actions)
  • Perl单元测试实战指南:从Test::Class入门到精通的完整方案
  • Linux系统管理与编程23:巧用git资源一键部署LAMP
  • ShenNiusModularity项目源码学习(29:ShenNius.Admin.Mvc项目分析-14)
  • React整合【ECharts】教程001:柱状图的构建和基本设置
  • 【Python 中 lambda、map、filter 和 reduce】详细功能介绍及用法总结
  • Java三十而立:Java 的30岁与Spring AI 1.0正式发布
  • STC89C52RC/LE52RC
  • 嵌入式Openharmony系统应用开发与实现方法
  • (已开源-CVPR2024) RadarDistill---NuScenes数据集Radar检测第一名
  • TypeScript 和 JavaScript核心关系及区别
  • 最大似然估计(Maximum Likelihood Estimation, MLE)详解
  • 机器学习课程设计报告 —— 基于二分类的岩石与金属识别模型
  • PHP SPL 自动加载机制详解与实战应用:spl_autoload_register 使用指南
  • BLIP论文笔记
  • 使用 CodeBuddy 实现视频合并工具:解决本地视频处理痛点
  • 【RabbitMQ运维】集群搭建
  • 【强化学习】#7 基于表格型方法的规划和学习
  • 力扣 283.移动零 (双指针)
  • SQL语句的执行流程
  • C++搜索二叉树
  • Java语言快速排序和堆排序(优先队列)介绍,附demo代码
  • C# 深入理解类(析构函数和this关键字)
  • 【RK3588新品】嵌入式人工智能实验箱EDU-AIoT ELF 2发布
  • 【萤火工场GD32VW553-IOT开发板】ADC电压的LabVIEW采集
  • 【漫话机器学习系列】275.GrabCut 算法——用于去除图片背景(Grabcut For Removing Image Backgrounds)
  • SpringBoot项目配置文件、yml配置文件
  • 大厂缓存架构方案-Caffeine+Redis双层缓存架构
  • 织梦dedecms登录后台出现Safe Alert Request Error step 2