分别利用KNN与Random Forest 算法完成手绘Fashion-MNIST 10类简笔画的识别

1.Random Forest

1.1 数据准备

将下载好的Fashion-MNIST数据集中的trian集合转化为jpg格式并生成label的train.txt

import torchvision.datasets.mnist as mnist

root="fashion_mnist/"
train_set = (
    mnist.read_image_file(os.path.join(root, 'train-images-idx3-ubyte')),
    mnist.read_label_file(os.path.join(root, 'train-labels-idx1-ubyte'))
        )

根据训练集的label种类手绘test集的jpg文件
分别利用KNN与Random Forest 算法完成手绘Fashion-MNIST 10类简笔画的识别_第1张图片

1.2 定义Random Forest:

import data_load as mnist_load
def random_forest(train_x, train_y):
 
 model=RandomForestClassifier(n_estimators=100,max_depth=50,criterion='entropy',n_jobs=10)
 #n_estimators决策树的数目,max)  max_depth:树的最大深度 
 # criterion基尼系数  'entropy'信息熵 
    model.fit(train_x, train_y)
    return model

1.3 加载数据集和返回准确率:

 train_x, train_y, test_x, test_y = mnist_load.get_data()
    model=random_forest(train_x, train_y)
    #将输出值test_X.test_y与预测值Predict 比较,并且通过marco 宏平均方法计算
     predict = model.predict(test_x)
     #差准率(precision)和查全率(recall)
     precision = metrics.precision_score(test_y, predict,average='macro')
      recall = metrics.recall_score(test_y, predict,average='macro')
    print('precision: %.2f%%, recall: %.2f%%' % (100 * precision, 100 * recall))
    accuracy = metrics.accuracy_score(test_y, predict)
    print('accuracy: %.2f%%' % (100 * accuracy))

1.4 不同取值的结果对比

Fashion-MNIST 自带的test集结果
分别利用KNN与Random Forest 算法完成手绘Fashion-MNIST 10类简笔画的识别_第2张图片
手绘test集合的结果
分别利用KNN与Random Forest 算法完成手绘Fashion-MNIST 10类简笔画的识别_第3张图片(居然比上一个高…)

2.KNN算法

1.定义KNN算法函数:

def knn(train_x, train_y):
    #  K值 distance=不均等权重,处理次数
    model = KNeighborsClassifier(n_neighbors=4,weights='distance',n_jobs=10)
    model.fit(train_x, train_y)
    return model

官方数据集结果
分别利用KNN与Random Forest 算法完成手绘Fashion-MNIST 10类简笔画的识别_第4张图片

手绘test集合的结果
分别利用KNN与Random Forest 算法完成手绘Fashion-MNIST 10类简笔画的识别_第5张图片

你可能感兴趣的:(深度学习,pytorch)