数据挖掘--Python入门经典学习1--乳腺癌分类问题

基于肿瘤特征判定是恶性肿瘤还是良性肿瘤,通过研究699个患者的肿瘤属性,找到肿瘤预测模式,根据肿瘤属性来判定肿瘤性质,对没有见过见过面的患者,根据属性来判定是否为恶性肿瘤。

用到的数据:链接:http://pan.baidu.com/s/1c26Dbjy 密码:gllb

[html] view plain copy

  1. ###########################################
  2. #        分类器:肿瘤良性还是恶性
  3. ###########################################
  4. ###########################################
  5. #      读入数据集,并得到元祖列表
  6. ###########################################
  7. def ReadSet(FileName):
  8. TrainSet = []
  9. TrainFile = open(FileName)
  10. for line in TrainFile:
  11. line = line.strip()             #去掉‘\n‘
  12. if ‘?‘ in line:                 #注意:引号中间不要有空格,去掉含有问号的坏数据
  13. continue
  14. id,a1,a2,a3,a4,a5,a6,a7,a8,a9,diag = line.split(‘,‘)#以逗号分开
  15. if diag == ‘4‘:
  16. diagMorB = ‘m‘
  17. else:
  18. diagMorB = ‘b‘
  19. PatientTuple = (id,diagMorB,int(a1),int(a2),int(a3),int(a4),int(a5),\
  20. int(a6),int(a7),int(a8),int(a9))
  21. TrainSet.append(PatientTuple)
  22. return TrainSet
  23. ###########################################
  24. #           训练分类器
  25. ###########################################
  26. def sumLists(list1,list2):
  27. listofsums =[0.0] * 9
  28. for index in range(9):
  29. listofsums[index] = list1[index] + list2[index]
  30. return listofsums
  31. def makeAverages(listofsums,total):
  32. averageList =[0.0] * 9
  33. for index in range(9):
  34. averageList[index] = listofsums[index]  / float(total)
  35. return averageList
  36. def Classifier(TrainSet):
  37. benignSums = [0] * 9
  38. benignCount = 0
  39. malignantSums = [0] * 9
  40. malignantCount = 0
  41. for patientTup in TrainSet:
  42. if patientTup[1] == ‘b‘:
  43. benignSums = sumLists(benignSums,patientTup[2:])
  44. benignCount += 1
  45. else:
  46. malignantSums = sumLists(malignantSums,patientTup[2:])
  47. malignantCount += 1
  48. benignAvgs = makeAverages(benignSums,benignCount)
  49. malignantAvgs = makeAverages(malignantSums,malignantCount)
  50. classifier = makeAverages(sumLists(benignAvgs,malignantAvgs),2)
  51. return classifier
  52. ###########################################
  53. #           测试分类器
  54. ###########################################
  55. def Test(TestSet,classifier):
  56. results = []
  57. for patient in TestSet:
  58. benignCount = 0
  59. malignantCount = 0
  60. for index in range(9):
  61. if patient[index + 2] > classifier[index]:#注意索引值加2才是属性值
  62. malignantCount += 1
  63. else:
  64. benignCount += 1
  65. resultTuple = (patient[0],benignCount,malignantCount,patient[1])
  66. results.append(resultTuple)
  67. return results
  68. ###########################################
  69. #           格式化输出测试结果
  70. ###########################################
  71. def ShowResult(Result):
  72. totalCount = 0
  73. wrongcount = 0
  74. for r in Result:
  75. totalCount += 1
  76. if r[1] > r[2]:
  77. if r[3] == ‘m‘:
  78. wrongcount += 1
  79. elif r[3] == ‘b‘:
  80. wrongcount += 1
  81. print("%d patients,there were %d wrong" %(totalCount,wrongcount))
  82. ###########################################
  83. #           主函数
  84. ###########################################
  85. def main():
  86. print("Reading in train data ...")
  87. TrainFileName = "C:\\Python36\\code\\RuXian\\fullTrainData.txt"
  88. TrainSet = ReadSet(TrainFileName)
  89. #print(TrainSet)
  90. print("Read TrainSet Done!")
  91. print("Begin Training...")
  92. classifier = Classifier(TrainSet)
  93. print("Train Classifier Done!")
  94. print("Reading in test data ...")
  95. TestFileName = "C:\\Python36\\code\\RuXian\\fullTestData.txt"
  96. TestSet = ReadSet(TestFileName)
  97. print("Read TestSet Done!")
  98. print("Begin Testing...")
  99. Result = Test(TestSet,classifier)
  100. #print(Result)
  101. print("Test  Done!")
  102. ShowResult(Result)
  103. print ("program finished.\n")

参考:《Pthon入门经典学习书》

时间: 2024-10-06 00:29:24

数据挖掘--Python入门经典学习1--乳腺癌分类问题的相关文章

Python入门经典. 以解决计算问题为导向的Python编程实践(高清版)PDF

Python入门经典. 以解决计算问题为导向的Python编程实践(高清版)PDF百度网盘链接:https://pan.baidu.com/s/1juLsew8UiOErRheQPOuTaw 提取码:fssd 复制这段内容后打开百度网盘手机App,操作更方便哦内容简介 · · · · · · <Python入门经典:以解决计算问题为导向的Python编程实践>是一本系统而科学的Python入门教程,美国密歇根州立大学等多所美国知名高校采用其作为编程语言的入门教材,被奉为经典.它不仅从计算机教学

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

Python 入门基础学习

Python入门学习 我们使用python3.0版本 首选来入门  带你进入Hello World >>> print ("Hello World")Hello World 好了 我们会python了  呵呵了 我们来实现个简单的列子吧  文字游戏 print('------------我爱九月天---------------') temp = input("不妨猜一下九月天在你心里你会想的是哪个数字:") guess = int(temp) if

吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklearn.model_selection import train_test_split def load_data_classification(): ''' 加载用于分类问题的数据集 ''' # 使用 scikit-learn 自带的 digits 数据集 digits=datasets.load_d

python入门经典必备推荐基础教程

绝对是python初学者入门必备,比learning python写的好100倍,远超python基础教程n个数量级 下载地址 http://pan.baidu.com/s/1jGwzpeY 更多python学习资料 http://dou.bz/35ODPo

[转][RabbitMQ+Python入门经典] 兔子和兔子窝

http://blog.csdn.net/linvo/article/details/5750987 RabbitMQ作为一个工业级的消息队列服务器,在其客户端手册列表的Python段当中推荐了一篇blog,作为RabbitMQ+Python的入门手册再合适不过了.不过,正如其标题Rabbit and Warrens(兔 子和养兔场)一样,这篇英文写的相当俏皮,以至于对于我等非英文读者来说不像一般的技术文档那么好懂,所以,翻译一下吧.翻译过了,希望其他人可以少用一 些时间.翻译水平有限,不可能像

python入门教程学习笔记#2

2.1 python3.6 工具使用 运行python 自带的idle后,输入python命令,如print('hello world'),回车后输出 hello world 其中mac系统会出现一段warning :the version of tcl/tk in use may be ustable.提示当前不稳定,会出现无法输入中文,需下载安装更新tcltk. 2.2 pycharm 的工具使用 初次使用时,需勾选默认配置环境,新建立一个项目,取名为自定义1,并配置编译环境(interpr

2018年6月21号 Python入门课程学习心得

感谢alex老师精心准备的课程内容和精美的PPT,总结一下 第一课主要内容是: 1. 学Python来干嘛? 2. 学完之后想做什么? 3. Python主要应用在哪些领域,我感觉Python比较牛的就是在人工智能和数据处理方面,通过老师的分享Python语言是适用于很多领域的 4. 随着人工智能技术的发展很多重复性的工作都将会被取代,我们唯一能做的就是先人一步,使自己走在快速变革时代前列 5. 通过学习英语的事例和数据告诉我们,学习方法的重要性,一套好的学习方法应包含三个方面(输入-输出---

python入门教程学习笔记#3 基础部分

3.1 数据类型 Number(数字) int.float.bool.complex(复数)int,表示为长整型,没有 python2 中的 Long.在 Python2 中是没有布尔型的,它用数字 0 表示 flase String(字符串)Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠(\)转义特殊字符 3.2 数据结构 列表,用[]表示,列表可用于索引和截取等很多方法.list=[a,b,1,2,3,4] 元组,元组不可更改,用()表示,元素之间用逗号隔开.tup