补缴作业:
2.机器学习相关数学基础
https://www.cnblogs.com/SZZZ/p/13126836.html
4.K均值算法--应用
https://www.cnblogs.com/SZZZ/p/13126782.html
5.线性回归算法
https://www.cnblogs.com/SZZZ/p/13126734.html
8、特征选择
https://www.cnblogs.com/SZZZ/p/13126701.html
12.朴素贝叶斯-垃圾邮件分类
https://www.cnblogs.com/SZZZ/p/13126609.html
13-垃圾邮件分类2
https://www.cnblogs.com/SZZZ/p/13126689.html
原因:因为我奶奶在网课开始的那个星期中风了,需要有人没日没夜照顾,我负责守夜。追究到底,还是我时间没有运用好,导致拖欠老师的作业,实属不对,望老师原谅,酌情给分。
1.手写数字数据集
- from sklearn.datasets import load_digits
- digits = load_digits()
from sklearn.datasets import load_digits import numpy as np digits = load_digits() x_data = digits.data.astype(np.float32) y_data = digits.target.astype(np.float32).reshape(-1, 1)
2.图片数据预处理
- x:归一化MinMaxScaler()
- y:独热编码OneHotEncoder()或to_categorical
- 训练集测试集划分
- 张量结构
from sklearn.preprocessing import MinMaxScaler
import numpy as np
X_data = digits.data.astype(np.float32) # 转换为32位浮点数
scaler = MinMaxScaler()
X_data = scaler.fit_transform(X_data) # 归一化处理
X = X_data.reshape(-1,8,8,1) # 转为图片的格式
X.shape # 查看归一化后的数据大小
Y_data = digits.target.astype(np.float32).reshape(-1,1) # 将Y_data变为一列 from sklearn.preprocessing import OneHotEncoder Y = OneHotEncoder().fit_transform(Y_data).todense() # 对数据进行独热编码 print(Y) #查看独热编码后的数据
3.设计卷积神经网络结构
- 绘制模型结构图,并说明设计依据。
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense,Dropout,Flatten,Conv2D,MaxPool2D import matplotlib.pyplot as plt # 3.设计卷积神经网络结构 # 建立模型 model = Sequential() ks = [3, 3] # 卷积核 # 一层卷积 model.add(Conv2D(filters=16, kernel_size=ks, padding='same', input_shape=x_train.shape[1:], activation='relu')) # 池化层 model.add(MaxPool2D(pool_size=(2, 2))) model.add(Dropout(0.25)) # 二层卷积 model.add(Conv2D(filters=32, kernel_size=ks, padding='same', activation='relu')) # 池化层 model.add(MaxPool2D(pool_size=(2, 2))) model.add(Dropout(0.25)) # 三层卷积 model.add(Conv2D(filters=64, kernel_size=ks, padding='same', activation='relu')) # 四层卷积 model.add(Conv2D(filters=128, kernel_size=ks, padding='same', activation='relu')) # 池化层 model.add(MaxPool2D(pool_size=(2, 2))) model.add(Dropout(0.25)) # 平坦层 model.add(Flatten()) # 全连接层 model.add(Dense(128, activation='relu')) model.add(Dropout(0.25)) # 激活函数 model.add(Dense(10, activation='softmax')) model.summary()
4.模型训练
- model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
- train_history = model.fit(x=X_train,y=y_train,validation_split=0.2, batch_size=300,epochs=10,verbose=2)
5.模型评价
- model.evaluate()
- 交叉表与交叉矩阵
- pandas.crosstab
- seaborn.heatmap