使用sklearn中的决策树对乳腺癌的分类诊断(下)

前面我们做的关于决策树的代码实现是对一个数据集进行划分为训练集和测试集,这篇使用的训练集和测试集是已经帮你划分好的存放在二个文件里的。

这里我们使用的训练集和测试集都是关于乳腺癌的数据集,但是和前面我们使用的乳腺癌数据集有点不一样,前面的是二分类的问题:良性和恶性,我们这是四分类问题,类别是乳腺癌的四个类型(训练集train/feats.csv的最后一列)。

下面是我们的测试集和训练集:其中images文件里包含了好多个子文件夹,每个子文件夹里又分别有好多张病人的乳腺癌超声波诊断图像,feats.csv里存放的是病人的乳腺癌临床诊断数据。

训练集train/feats.csv中的部分临床诊断数据:

测试集test/feat.csv 中的部分临床诊断数据:

我们现在使用决策树进行分类预测,这里的id是病人的id,预测病人得的是那种类型的乳腺癌,最后输出病人id和对应的乳腺癌种类的csv文件。

#决策树分类 https://blog.csdn.net/bjjoy2009/article/details/80841657
from sklearn import tree
#import graphviz
import os
import pandas as pd
import csv
import numpy
cancer_train = pd.read_csv('./train/feats.csv')
#print(cancer_train)
#训练集数据
x_cancer_train = pd.read_csv('./train/feats.csv',usecols = [1,2,3])
#训练集标签,即最后一列的数据
y_cancer_train = pd.read_csv('./train/feats.csv',usecols = [4])
#测试集
cancer_test = pd.read_csv('./test/feats.csv')
#print(cancer_test)
x_cancer_test = pd.read_csv('./test/feats.csv',usecols=[1,2,3])
dtc = tree.DecisionTreeClassifier(criterion="entropy")
#训练
clf = dtc.fit(x_cancer_train,y_cancer_train)
#测试
clf_y_predict = clf.predict(x_cancer_test)
print(clf_y_predict)

 下面是将输出的乳腺癌预测类别和病人的id好对应输出成csv文件,文件名为submission.csv:

list3 = numpy.array(clf_y_predict).reshape(87,1)
#print(numpy.shape(list3)) #(87, 1)

filename = './test/feats.csv'
#读取数据集中的第一列数据:
list1 = []
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)
   # result = list(reader)
    column1 = [row[0] for row in reader]
    list1.append(column1)
print(list1)
#print(numpy.shape(list1))
list2 = numpy.array(list1).reshape(87,1)
print(list2)
print(numpy.shape(list2))
#两个放在一起(id \ 标签)
list4 = numpy.hstack((list2, list3))    #np.hstack((a,b))在行上合并
print(list4)                           
print(numpy.shape(list4))
#转成新的csv表,存放最终的结果:
name = ["id","molecular_subtype"]
csv_list = pd.DataFrame(columns=name, data=list4)
#转存为新的csv表
csv_list.to_csv('submission.csv')

其实这个预测病人乳腺癌的类型还需要结合对应图像的特征,由于能力有限,所以这里只实现了使用文本的特征进行分类预测,但在一定程度也起到了作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章