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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40883132/article/details/83010903

本教程实用于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()

直线方程:形如A*x+B*y+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()

 结果:

精度:

 

猜你喜欢

转载自blog.csdn.net/qq_40883132/article/details/83010903
今日推荐