期末作业,使用三种模型进行分类任务预测

题目

本次实验为分类任务,实验数据在附件中,共有2个文件,data_train.txt、data_test.txt,分别用于训练和测试,在训练文件中数据有55列,前54列是样本的特征(输入数据),最后一列是样本的类别(label),类别共有7种,对应为1~7。测试数据中没有类别(label),需要根据模型预测相应的类别(label),这些预测结果需要上传,并根据预测结果给出相应的分数。

作业要求:

  1. 使用三种模型进行预测。
  2. 提交预测结果,每个模型一个文件,命名为model_1.txt、model_2.txt、model_3.txt,文件中每行一个数字(1~7)表示预测结果,行数与data_test.txt的行数相同。
  3. 撰写实验报告,包含模型介绍,数据处理,结果展示与分析。
  4. 提交预测结果、实验报告、代码。
    数据源:下载地址

共用代码

共用代码读取文件抽取出来,实际使用时需要将这段代码插入各模型中

# fileName: 文件名字
# isTest: =True为测试数据 label直接设0
def readDataSet(fileName, isTest):
    fr = open(fileName,encoding='utf-8')
    lines = fr.readlines()

    numLabels = len(lines) 
    labels = np.zeros(numLabels)
    dateSet = np.zeros([numLabels,54],int)

    # 逐行读取数据到dataSet,labels
    # 总共55列,前54列是样本特征,最后一列是样本类别(label)
    for i in range(numLabels):
        line = lines[i]
        label = 0
        if isTest:
            label = 0
        else:
            label = line.split(' ')[54]
        labels[i] = label

        dates = np.zeros(54)
        for j in range(53):
            dates[j] = line.split(' ')[j]
        dateSet[i] = dates

    fr.close()
    return dateSet,labels

使用MLPClassifier的实现代码

import numpy as np
from sklearn.neural_network import MLPClassifier 

# 在此插入公用代码

# read dataSet
train_dataSet,train_labels = readDataSet('data_train.txt', False)

clf = MLPClassifier(hidden_layer_sizes=(100,),
                    activation='logistic', solver='adam',
                    learning_rate_init = 0.0001, max_iter=2000)
print(clf)
clf.fit(train_dataSet,train_labels)

# read test_dataSet
test_dataSet,test_labels = readDataSet('data_test.txt', True)
res = clf.predict(test_dataSet)

# 输出预测结果,保存到model_1.txt
mf = open('model_1.txt','w')

for i in range(len(res)):
    mf.write(str(res[i]) + '\n')
mf.close()

使用KNeighborsClassifier的实现代码

import numpy as np
from sklearn import neighbors

# 在此插入公用代码

# read dataSet
train_dataSet,train_labels = readDataSet('data_train.txt', False)

knn = neighbors.KNeighborsClassifier(algorithm='kd_tree', n_neighbors=3)
print(knn)
knn.fit(train_dataSet,train_labels)

# read test_dataSet
test_dataSet,test_labels = readDataSet('data_test.txt', True)
res = knn.predict(test_dataSet)

# 输出预测结果,保存到model_2.txt
mf = open('model_2.txt','w')

for i in range(len(res)):
    mf.write(str(res[i]) + '\n')
mf.close()

使用GaussianNB的实现代码

import numpy as np
from sklearn.naive_bayes import GaussianNB

# 在此插入公用代码

# read dataSet
train_dataSet,train_labels = readDataSet('data_train.txt', False)


gnb = GaussianNB(priors=None)
gnb.fit(train_dataSet,train_labels)

# read test_dataSet
test_dataSet,test_labels = readDataSet('data_test.txt', True)
res = gnb.predict(test_dataSet)

# 输出预测结果,保存到model_3.txt
mf = open('model_3.txt','w')

for i in range(len(res)):
    mf.write(str(res[i]) + '\n')
mf.close()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容