0305芯片检测-逻辑回归实战-机器学习-人工智能

逻辑回归之芯片通过预测

  • 首先基于chip_test.csv数据建立回归模型(二阶边界),评估模型表现。
  • 以函数的方式求解边界曲线。
  • 描绘出完整的边界曲线。

chip_test.csv示例数据如下:

csv 复制代码
test1,test2,pass
0.051267,0.69956,1
-0.092742,0.68494,1
-0.21371,0.69225,1
-0.375,0.50219,1

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

python 复制代码
import matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import accuracy_score, confusion_matrix

matplotlib.use('TkAgg')
# 设置 Matplotlib 使用支持中文的字体
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK SC']  # 根据字体名称调整
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 加载数据
data = pd.read_csv('chip_test.csv')
X = data[['test1', 'test2']].values
y = data['pass'].values

# 生成二阶多项式特征 (包含常数项、线性项和二次项)
poly = PolynomialFeatures(degree=2, include_bias=True)
X_poly = poly.fit_transform(X)

# 训练逻辑回归模型(无正则化)- 使用 penalty=None
model = LogisticRegression(penalty=None, max_iter=1000, solver='lbfgs')
model.fit(X_poly, y)

# 模型评估
y_pred = model.predict(X_poly)
accuracy = accuracy_score(y, y_pred)
conf_matrix = confusion_matrix(y, y_pred)

print(f"模型准确率: {accuracy:.4f}")
print("混淆矩阵:")
print(conf_matrix)


# 边界曲线函数
def decision_boundary(x1, x2):
    # 创建测试点并转换为多项式特征
    point = np.array([[x1, x2]])
    point_poly = poly.transform(point)

    # 计算预测概率并返回决策值
    proba = model.predict_proba(point_poly)[0][1]
    return proba - 0.5


# 可视化完整边界曲线
# 创建网格点
x1_min, x1_max = X[:, 0].min() - 0.1, X[:, 0].max() + 0.1
x2_min, x2_max = X[:, 1].min() - 0.1, X[:, 1].max() + 0.1

xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max, 300),
                       np.linspace(x2_min, x2_max, 300))

# 计算每个网格点的决策值 - 向量化计算提高效率
points = np.c_[xx1.ravel(), xx2.ravel()]
points_poly = poly.transform(points)
Z = model.predict_proba(points_poly)[:, 1] - 0.5
Z = Z.reshape(xx1.shape)

# 设置图形
plt.figure(figsize=(10, 8))

# 绘制原始数据点
plt.scatter(X[y == 1, 0], X[y == 1, 1],
            c='royalblue', marker='o', s=60,
            label='通过 (1)', edgecolor='k')
plt.scatter(X[y == 0, 0], X[y == 0, 1],
            c='crimson', marker='x', s=60,
            label='失败 (0)')

# 绘制决策边界 (Z=0的等高线)
contour = plt.contour(xx1, xx2, Z, levels=[0],
                      colors='darkgreen', linewidths=2.5)
plt.clabel(contour, inline=True, fontsize=12)

# 填充决策区域
plt.contourf(xx1, xx2, Z, levels=[-10, 0, 10],
             colors=['crimson', 'royalblue'], alpha=0.15)

# 添加标签和标题
plt.xlabel('测试1', fontsize=12)
plt.ylabel('测试2', fontsize=12)
plt.title('芯片测试结果与决策边界 (二阶多项式)', fontsize=14)
plt.legend(loc='upper right', fontsize=11)
plt.grid(alpha=0.3)

# 添加准确率信息
plt.text(0.75, -0.9, f'准确率: {accuracy:.2%}',
         fontsize=12, bbox=dict(facecolor='white', alpha=0.8))

plt.tight_layout()
plt.show()

运行修正后的代码效果:

  1. 打印模型准确率(约84.75%)
  2. 显示混淆矩阵
  3. 绘制决策边界图,其中:
    • 蓝色点:实际通过的芯片
    • 红色叉:实际失败的芯片
    • 绿色曲线:决策边界(P=0.5)
    • 蓝色区域:预测"通过"区域(P>0.5)
    • 红色区域:预测"失败"区域(P<0.5)

如下图所示:

结语

❓QQ:806797785

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

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

1\][AI人工智能从入门到精通全套教程](https://www.bilibili.com/video/BV1ug4y1t7Ty)\[CP/OL\].

相关推荐
爱分享的飘哥几秒前
第三十九章:AI导演的“魔法时间轴”:文生视频与Video Latent扩散结构
人工智能·文生视频·ai视频生成·ai架构·videodiffusion·videolatent
张较瘦_37 分钟前
[论文阅读] 人工智能 + 软件工程 | Trae Agent:让AI智能体高效解决仓库级软件问题,登顶SWE-bench排行榜
论文阅读·人工智能·软件工程
nuoxin1141 小时前
CY7C68013A-56LTXC -USB2.0控制器芯片-富利威,国产CBM9002A-56ILG可替代
网络·人工智能·单片机·嵌入式硬件·硬件工程
落叶阳光1 小时前
2025.8-12月 AI相关国内会议
人工智能·会议
FL16238631291 小时前
红花识别分割数据集labelme格式144张1类别
人工智能·深度学习
程序员JerrySUN2 小时前
OpenCV 全解读:核心、源码结构与图像/视频渲染能力深度对比
linux·人工智能·驱动开发·opencv·计算机视觉·缓存·音视频
张较瘦_2 小时前
[论文阅读] 人工智能 + 软件工程 | GitHub Marketplace中CI Actions的功能冗余与演化规律研究
论文阅读·人工智能·软件工程
martian6652 小时前
深度学习核心:神经网络-激活函数 - 原理、实现及在医学影像领域的应用
人工智能·深度学习·神经网络·机器学习·医学影像·影像大模型
Apache Flink3 小时前
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
人工智能·flink·apache