【人工智能项目实践】Day1基于逻辑回归的芯片质量检测任务(分类问题) 以及手写数字识别

预备知识

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

芯片质量检测任务代码详解

核心过程:定、数、模、训、测、上
(问题定义、数据准备、模型构建、模型训练和测试、模型预测、模型部署上线)

1 问题定义

芯片检测数据集(三列:x1,x2,y)是一个分类数据集,适用于逻辑回归模型。
标签y是0或1,代表芯片是否通过检测,x1和x2是芯片的两个评价指标数据。
数据集下载链接:https://download.csdn.net/download/adreammaker/86245857

2 数据准备

将数据进行划分

# 加载深度学习三件套 和 绘图工具
import numpy as np
import pandas as pd
import keras #这里深度学习工具包使用基于tensorflow的keras
from matplotlib import pyplot as plt

data = pd.read_csv('data.csv')
X = data.drop(['y'], axis=1) # 列方向删除
y = data.loc[:, 'y'] # 所有行都要, y列

# 绘图查看图像
#plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 用于mac jupyter
plt.rcParams['font.sans-serif'] = ['simhei'] # 用于linux jupyter
plt.figure(figsize=(5, 5))# 设置画布大小  英寸
passed = plt.scatter(X.loc[:, 'x1'][y==1],X.loc[:, 'x2'][y==1], color='green')
failed = plt.scatter(X.loc[:, 'x1'][y==0],X.loc[:, 'x2'][y==0], color='blue')
plt.legend((passed, failed), ('通过', '不通过'))
plt.show()

在这里插入图片描述
可以看出这个数据线性不可分,需要使用激活函数,逻辑回归就是在线性回归模型的基础上加了一个sigmoid激活函数,可以解决非线性分类问题。

# 数据集划分 3:1. 75%:25%
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test  = train_test_split(X, y, random_state=0)

3模型构建

模型准备(小口诀:模型、损失、优化器;)

from keras.models import Sequential
from keras.layers import Dense, Activation # dense就是全链接层
## 网络
mlp = Sequential()
mlp.add(Dense(units = 20, input_dim = 2, activation = 'sigmoid'))
mlp.add(Dense(units=1, activation = 'sigmoid') )
mlp.summary()
## 优化器 损失函数
mlp.compile(optimizer='adam', loss = 'binary_crossentropy')

在这里插入图片描述

4模型训练 + 5模型测试

mlp.fit(X_train, y_train, epochs=2000)
pred2 = mlp.predict(X_test)

result = []
for i in range(len(pred2)):
    if pred2[i][0] > 0.5:
        result.append(1)
    else:
        result.append(0)
y_pred = np.array(result)

accuray = sum(y_pred==y_test)/len(y_pred)
accuray

手写数字识别项目

数据可自行下载,也可通过代码自动下载:Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz

from keras.datasets import mnist
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']

(X_train, y_train),  (X_test, y_test) = mnist.load_data()
X_train.shape, y_train.shape, X_test.shape, y_test.shape
plt.imshow(X_train[0], cmap='gray')
plt.show()
print(y_train[0])

5

from keras.models import Sequential
from keras.layers import Dense, Activation
mlp = Sequential()
mlp.add(Dense(units = 392, input_dim = 784, activation = 'relu'))
mlp.add(Dense(units= 392, activation = 'relu') )
mlp.add(Dense(units= 10, activation = 'softmax') )# fc 层
mlp.summary()

mlp.compile(optimizer='adam', loss = 'categorical_crossentropy', metrics=['categorical_accuracy'])
X_train = X_train.reshape(X_train.shape[0], 784)
X_test = X_test.reshape(X_test.shape[0], 784)
# (x - xmin ) / (xmax - xmin ) 把数据 放到一个尺度下 [0, 1]
# 80/100 90/150
X_train = X_train/255
X_test = X_test/255

import tensorflow as tf
y_train = tf.one_hot(indices=y_train, depth=10,on_value=1, off_value=0, axis=1)
y_test = tf.one_hot(indices=y_test, depth=10,on_value=1, off_value=0, axis=1)
mlp.fit(X_train, y_train, epochs=10)

y_pred = mlp.predict(X_test)
y_pred = np.argmax(y_pred, axis=1)
y_pred = tf.convert_to_tensor(y_pred)
mlp.evaluate(X_test, y_test)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值