Kaggle-Digit Recognizer-(多分类+卷积神经网络CNN)

打印 上一主题 下一主题

主题 1940|帖子 1940|积分 5820

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Digit Recognizer
题意:

给你每个图片的dataframe范例的数据,让你预测出每个图片可能是多少。
数据处理

1.首先把数据从dadaframe转换成numpy,数据范例改为float32,而且而且睁开为1维的28×28×1的外形,也就是28宽28高灰色通道。而且都要/255,因为灰度值是0-255,把灰度值压缩成0-1。
2.把train的image和label分开,然后split成训练聚集和验证聚集。
建立模型:

Sequential(),构建次序模型,选择按条理序堆叠。
添加卷积层,32个卷积核,内核为3×3,线性处理。
添加池化层,池化窗口2×2,步长为2。
添加卷积层,32个卷积核,内核为3×3,线性处理。
添加池化层,池化窗口2×2,步长为2。
Flatten(),将二维特征图展平为一维向量。
128个全神经元,relu激活函数。
输出层10个神经元对应10个答案,softmax激活函数举行分类。
代码:

  1. import sys
  2. import pandas as pd
  3. import torch
  4. from sklearn.model_selection import train_test_split
  5. from tensorflow.keras.models import Sequential
  6. from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
  7. if __name__ == "__main__":
  8.     data_train = pd.read_csv("train.csv")
  9.     data_test = pd.read_csv("test.csv")
  10.     X = data_train.drop(['label'],axis=1).values.reshape(-1, 28, 28, 1).astype('float32')
  11.     Y = data_train['label'].values
  12.     X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=2)
  13.     X_train /= 255.0
  14.     X_test /= 255.0
  15.     data_test = data_test.values.reshape(-1, 28, 28, 1).astype('float32')/255.0
  16.     model = Sequential()
  17.     model.add(Conv2D(32, kernel_size=(3, 3), padding='valid', activation='relu', input_shape=(28, 28, 1)))
  18.     model.add(MaxPooling2D(pool_size=(2, 2), strides=2, padding='valid'))
  19.     model.add(Conv2D(32, kernel_size=(3, 3), padding='valid', activation='relu'))
  20.     model.add(MaxPooling2D(pool_size=(2, 2), strides=2, padding='valid'))
  21.     model.add(Flatten())
  22.     model.add(Dense(128, activation='relu'))
  23.     model.add(Dense(10, activation='softmax'))
  24.     model.compile(
  25.         loss='sparse_categorical_crossentropy',
  26.         optimizer='adam',
  27.         metrics=['accuracy']
  28.     )
  29.     history = model.fit(X_train, Y_train, epochs=10, validation_split=0.2)
  30.     y_pred =model.predict(data_test).argmax(axis=1)
  31.     anw = pd.DataFrame({"ImageId": range(1,len(y_pred)+1), "Label": y_pred})
  32.     anw.to_csv("Submission.csv", index=False)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表