Advertisement

Python机器学习入门1.1《良、恶性乳腺肿瘤预测》

阅读量:

本教程实用于0基础从事机器学习的人,OK,我们主要是用Python实现机器学习的,所以,你应该花三天时间去看看Python,然后我会有清晰的步骤与每个步骤错误提示,如果你还有什么问题,可以回复我。

这里提供一个Python简洁版安装教程:Python入门第一天

然后我们就开始我们的基础实践,希望一步一步的执行能到帮到你。

首先下载数据,方便我们以后处理。Datasets

在你正确安装完anconda后,然后我们cmd输入python:

代码你需要一行一行的慢慢啃:
先实现第一个小目标,将数据显示出来,结果是这样的:

红色的圆圈表示:良性恶性肿瘤样本点

黑色的圆圈表示:恶性恶性肿瘤样本点

下面我将一步一步的介绍每一句代码:

1.读取数据

复制代码
 # 1:导入pandas工具包,并且更名为 pd

    
 import pandas as pd
    
  
    
 # 2: 调用pandas工具包的read_csv函数,传入的是训练文件地址,获取返回的数据并存至变量df_train中
    
 df_train=pd.read_csv('E:/Project/Datasets/Breast-Cancer/breast-cancer-train.csv')
    
 #注意,这里你应该找到你的breast-cancer-train.csv文件的完整路径
    
  
    
 # 2: 调用pandas工具包的read_csv函数,传入的是测试文件地址,获取返回的数据并存至变量df_test中
    
 df_test=pd.read_csv('E:/Project/Datasets/Breast-Cancer/breast-cancer-test.csv')
    
 #注意,这里你应该找到你的breast-cancer-test.csv文件的完整路径
    
  
    
    
    
    

错误提示:这一个如果你出现了文件路径找不到错误,那么你应该检查你的文件路径以及拼写,并注意最好用/ 而不是\ ,因为可能出现转义,文件路径不要有中文。

2.图形设定

复制代码
 # 选取'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']]
    
    
    
    

Type 等这些参数对应的是文件里面的:

可以看出Type == 0 是negative类型

复制代码
 #导入matplotlib工具包的pyplot并简化命名为plt

    
 import matplotlib.pyplot as plt
    
  
    
 #绘制良性肿瘤样本点,标记为红色O
    
 plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'],marker='o',s=200,c='red')
    
  
    
 #绘制恶性肿瘤样本点,标记为黑色x
    
 plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'],marker='x',s=200,c='black')
    
  
    
    
    
    

参数说明:第一个和第二个分别是该坐标的数据,marker即是我们图中的标记,s是大小,c是颜色。

复制代码
 #绘制x,y轴的说明

    
 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,'yellow')
    
 plt.show()
    
    
    
    

直线方程:形如Ax+By+c=0

10条训练数据,精度:

复制代码
 from sklearn.linear_model import LogisticRegression

    
 lr=LogisticRegression()
    
  
    
 lr.fit(df_train[['Clump Thickness','Cell Size']][:10], df_train['Type'][:10])
    
 print ("Testing accurary (10 training sample):",lr.score(df_test[['Clump Thickness','Cell Size']],df_test['Type']))
    
    
    
    

使用所有数据训练样本学习直线的系数和截距:

复制代码
  
    
 from sklearn.linear_model import LogisticRegression
    
 lr=LogisticRegression()
    
  
    
 lr.fit(df_train[['Clump Thickness','Cell Size']][:10], df_train['Type'][:10])
    
 print ("Testing accurary (10 training sample):",lr.score(df_test[['Clump Thickness','Cell Size']],df_test['Type']))
    
  
    
 #intercept=lr.intercept_
    
 #coef=lr.coef_[0,:]
    
 #ly=(-intercept - lx*coef[0])/coef[1]
    
  
    
 #绘制图
    
 #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=200,c='black')
    
  
    
 #plt.ylabel('Clump Thickness')
    
 #plt.xlabel('Cell Size')
    
 #plt.show()
    
  
    
 lr=LogisticRegression()
    
 #使用所有训练样本学习直线的系数和截距
    
 lr.fit(df_train[['Clump Thickness','Cell Size']], df_train['Type'])
    
 print('Testing accuracy (all training samples):',lr.score(df_test[['Clump Thickness','Cell Size']],df_test['Type']))
    
  
    
 intercept=lr.intercept_
    
 coef=lr.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=200,c='black')
    
  
    
 plt.xlabel('Clump Thickness')
    
 plt.ylabel('Cell Size')
    
 plt.show()
    
    
    
    

结果:

精度:

全部评论 (0)

还没有任何评论哟~