1. Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数:

  • itertools.count():会创建一个无限的迭代器,只能按Ctrl+C退出
  • itertools.cycle():会把传入的序列无限重复下去,同样停不下来
  • itertools.repeat(‘A’, 10):负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数。
    无限序列只有在for迭代时才会无限地迭代下去,如果只是创建了一个迭代对象,它不会事先把无限个元素生成出来,事实上也不可能在内存中创建无限多个元素。无限序列虽然可以无限迭代下去,但是通常我们会通过takewhile()等函数根据条件判断来截取出一个有限的序列:ns = itertools.takewhile(lambda x: x <= 10, natuals)
  • itertools.chain():可以把一组迭代对象串联起来,形成一个更大的迭代器:
  • itertools.groupby():把迭代器中相邻的重复元素挑出来放在一起

详细参考:itertools

2. pandas中的loc用法

index = list(itertools.product(['Ada','Quinn','Violet'],['Comp','Math','Sci']))
headr = list(itertools.product(['Exams','Labs'],['I','II']))
indx = pd.MultiIndex.from_tuples(index,names=['Student','Course'])
cols = pd.MultiIndex.from_tuples(headr)
data = [[70+x+y+(x*y)%3 for x in range(4)] for y in range(9)]
df = pd.DataFrame(data,indx,cols)
print df,'\n','........................................'
All = slice(None)
print All,'\n','......................................'
print df.loc['Violet'],'\n','..............................'
print df.loc[(All,'Math'),All],'\n','..............................'
print df.loc[(slice('Ada','Quinn'),'Math'),All],'\n','..............................'
print  df.loc[(All,'Math'),('Exams')],'\n','..............................'
print df.loc[(All,'Math'),(All,'II')],'\n','..............................'

运行结果:

               Exams     Labs    I  II    I  II
Student Course
Ada     Comp      70  71   72  73Math      71  73   75  74Sci       72  75   75  75
Quinn   Comp      73  74   75  76Math      74  76   78  77Sci       75  78   78  78
Violet  Comp      76  77   78  79Math      77  79   81  80Sci       78  81   81  81
........................................
slice(None, None, None)
......................................Exams     Labs    I  II    I  II
Course
Comp      76  77   78  79
Math      77  79   81  80
Sci       78  81   81  81
..............................Exams     Labs    I  II    I  II
Student Course
Ada     Math      71  73   75  74
Quinn   Math      74  76   78  77
Violet  Math      77  79   81  80
..............................Exams     Labs    I  II    I  II
Student Course
Ada     Math      71  73   75  74
Quinn   Math      74  76   78  77
..............................I  II
Student Course
Ada     Math    71  73
Quinn   Math    74  76
Violet  Math    77  79
..............................Exams LabsII   II
Student Course
Ada     Math      73   74
Quinn   Math      76   77
Violet  Math      79   80
..............................

3. 完全代码:

import pandas as pd  # 导入pandas工具包,并且更名为pd# 绘制良/恶性乳腺癌肿瘤测试集数据分布# 注意这里的路径分隔符,windows和linux是不同的,统一用格式:r+'路径'
df_train = pd.read_csv(r'C:\Users\LiLong\Desktop\kaggle_lea\Breast-Cancer\breast_cancer_train.csv')
df_test = pd.read_csv(r'C:\Users\LiLong\Desktop\kaggle_lea\Breast-Cancer\breast_cancer_test.csv')
#print df_train# 选取'Clump Thickness', 'Cell Size'作为特征,构建测试集中的正负样例
df_test_negative = df_test.loc[df_test['Type'] == 0][['Clump Thickness', 'Cell Size']]
df_test_positive = df_test.loc[df_test['Type'] == 1][['Clump Thickness', 'Cell Size']]
#print df_test_negativeimport matplotlib.pyplot as plt
plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')
plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')
plt.xlabel('Clump Thickness')
plt.ylabel('Cell Size')
plt.show()

# 随机参数下的二类分类器
import numpy as np
# 随机采样直线的截距和系数
intercept = np.random.random([1])
coef = np.random.random([2])
lx = np.arange(0, 12)
ly = (-intercept - lx * coef[0]) / coef[1]
# 绘制一条随机直线
plt.plot(lx, ly, c='yellow')
# 绘制样例散点图
plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')
plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')
plt.xlabel('Clump Thickness')
plt.ylabel('Cell Size')
plt.show()
[ 0.2154933   0.95448152]

# 导入sklearn中的逻辑斯地回归分类器
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()#使用前10条数据训练样本学习直线的系数和截距
lr.fit(df_train[['Clump Thickness', 'Cell Size']][:10], df_train['Type'][:10])
print 'Testing accuracy (10 training samples):', lr.score(df_test[['Clump Thickness', 'Cell Size']], df_test['Type'])

Testing accuracy (10 training samples): 0.868571428571 # 准确率

# 使用10条训练样本得到的二分类器
lr2 = LogisticRegression()
# 截距和系数由sklearn.linear_model中的LogisticRegression确定
intercept = lr.intercept_ # 得到截距
print intercept
coef = lr.coef_[0, :]
print coef
ly = (-intercept - lx * coef[0]) / coef[1] # 由ax+by+c=0  =》 y=-(a/b)x-c/b
plt.plot(lx, ly, c='green')
plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')
plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')
plt.xlabel('Clump Thickness')
plt.ylabel('Cell Size')
plt.show()

[-1.51522787]
[-0.10721332 0.48314152]

#  使用所有的训练样本得到的二类分类器lr2 = LogisticRegression()
# 使用所有的训练样本学习直线的系数和截距
lr2.fit(df_train[['Clump Thickness', 'Cell Size']], df_train['Type'])
print 'Testing accuracy (all training samples):', lr2.score(df_test[['Clump Thickness', 'Cell Size']], df_test['Type'])

Testing accuracy (all training samples): 0.937142857143

intercept = lr2.intercept_
coef = lr2.coef_[0, :]
ly = (-intercept - lx * coef[0]) / coef[1]
plt.plot(lx, ly, c='blue')
plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')
plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')
plt.xlabel('Clump Thickness')
plt.ylabel('Cell Size')
plt.show()

这里用的是jupyter运行的代码。

源代码:《python机器学习及实践》

源代码下载

良/恶性乳腺癌肿瘤预测相关推荐

  1. 《Python机器学习及实践》----良/恶性乳腺癌肿瘤预测

    本片博客是根据<Python机器学习及实践>一书中的实例,所有代码均在本地编译通过.数据为从该书指定的百度网盘上下载的. 代码片段: import pandas as pd import ...

  2. 《Python machine learning and practice》—— 良\恶性乳腺癌肿瘤预测

    数据集 良\恶性乳腺癌肿瘤预测数据集 代码分析 第三方库文件 from sklearn.linear_model import LogisticRegression #导入sklearn中的逻辑斯蒂回 ...

  3. 《python机器学习及实战》学习笔记ch1之良/恶性乳腺癌肿瘤预测

    1.文章说明 本系列文章都是自己学习<python机器学习及实战>这本书时所做的一些笔记而已,仅为学习作参考. 2.数据集地址: 数据地址是书中给出的数据下载地址: https://pan ...

  4. 《Python机器学习及实践:从零开始通往Kaggle竞赛之路》第1章 简介篇 学习笔记(三)“良/恶性乳腺癌肿瘤预测”总结

    目录 "良/恶性乳腺癌肿瘤预测" 1.机器学习的三个关键术语 (1)任务 (2)经验 (3)性能 2.机器学习的学习过程 (1)观察测试集数据分布 (2)初始化二类分类器 (3)训 ...

  5. 一个经典机器学习案例——良/恶性乳腺癌肿瘤预测

    良/恶性乳腺癌肿瘤预测 良/恶性乳腺癌肿瘤预测问题是一个十分经典的机器学习问题,简单来说我们需要利用肿块厚度和细胞尺寸这两个特征来判断肿瘤的类型(良性或者是恶性).数据的下载网站如下:http://n ...

  6. sklearn逻辑回归案例分析 《良/恶性乳腺癌肿瘤预测》

    由于对逻辑回归等算法做到深刻理解有点难,目前还在学习中,尽管有现成的模型库,我们还是需要对模型的底层实现有一个了解.这里先记录一下如何利用sklearn的LogisticRegression来做一个简 ...

  7. 【机器学习】:sklearn逻辑回归案例分析 《良/恶性乳腺癌肿瘤预测》

    由于对逻辑回归等算法做到深刻理解有点难,目前还在学习中,尽管有现成的模型库,我们还是需要对模型的底层实现有一个了解.这里先记录一下如何利用sklearn的LogisticRegression来做一个简 ...

  8. One_良恶性乳腺癌肿瘤预测

    Author:龙箬 Data Science and Big Data Technology Change the world with data! CSDN@weixin_43975035 每朵云都 ...

  9. 机器学习实例(一)良/恶性乳腺癌肿瘤预测

    数据描述 Number of Instances: 699(as of 15 July 1922) Number of Attributes: 10 plus the class attribute ...

最新文章

  1. 软件开发过程中的回顾
  2. 初始angular框架(1)
  3. mysql索引commit卡死_mysql 5.6 read-committed隔离级别下并发插入唯一索引导致死锁一例...
  4. JAVA中string的赋值_Java中关于String赋值的两种形式
  5. 2010年复旦MBA预审说明
  6. Typescript 学习笔记一:介绍、安装、编译
  7. 最易难学习的编程语言榜单出炉,C++最难学?
  8. 【清澄】A1013. 进制转换4
  9. python身份证号码共18位_Python实现身份证号码解析
  10. vue ie8 兼容方案
  11. [转载]fft-matlab 补零对结果影响的讨论
  12. 计算两样本间的相关系数和P
  13. CentOS开机简要流程
  14. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛-B:Tomb Raider(模拟+二进制枚举子串)
  15. pushplus通过企业微信应用给微信发送消息教程
  16. 怎么在电脑上进行音频以及视频的素材合并
  17. dhl寄件邮编错了_如果从国外邮寄DHL往中国.邮编怎么写?
  18. Python—docx 批量生成 docx 文件
  19. 合工大宣城校区计算机老师,合肥工业大学计算机与信息学院导师教师师资介绍简介-△李春华...
  20. 蚂蚁金服分布式中间件开源第三弹: 下一代微服务SOFAMesh

热门文章

  1. VTK:Filtering之VertexGlyphFilter
  2. forward_list容器
  3. QT的QCameraFocus类的使用
  4. QT的QBluetoothTransferManager类的使用
  5. QT的Q3DBars类的使用
  6. php代码常见的变量缩写,PHP代码简洁之道——变量部分
  7. 04_面向初学者的快速入门、建立图像分类的一个神经网络、训练这个神经网络、评估模型的精确度
  8. lucene和elasticsearch的前世今生、elasticsearch的核心概念、elasticsearch核心概念 vs. 数据库核心概念(来自学习资料)
  9. 手动将jar添加到maven仓库中
  10. 20_Android中apk安装器,通过WebView来load进一个页面,Android通知,程序退出自动杀死进程,通过输入包名的方式杀死进程