整体项目流程

  • 数据获取与查看数据字段
  • 数据探索
  • 数据清洗
  • 特征选择
  • 模型训练
    • 数据集和训练集的划分
    • 数据标准化操作
    • 模型训练与评估

数据获取与查看数据字段


 mean 代表平均值,se 代表标准差,worst 代表最大值(3 个最大值的平均值)。每张图像都计算了相应的特征,得出了这 30 个特征值(不包括 ID 字段和分类标识结果字段 diagnosis),实际上是 10 个特征值(radius、texture、perimeter、area、smoothness、compactness、concavity、concave points、symmetry 和 fractal_dimension_mean)的 3 个维度,平均、标准差和最大值。这些特征值都保留了 4 位数字。字段中没有缺失的值。在 569 个患者中,一共有 357 个是良性,212 个是恶性。

数据探索

# 加载数据集,你需要把数据放到目录中
data = pd.read_csv("./data.csv")
# 数据探索
# 因为数据集中列比较多,我们需要把dataframe中的列全部显示出来
pd.set_option('display.max_columns', None)
print(data.columns)
print(data.head(5))
print(data.describe())

数据清洗

运行结果中,能看到 32 个字段里,id 是没有实际含义的,可以去掉。diagnosis 字段的取值为 B 或者 M,我们可以用 0 和 1 来替代。另外其余的 30 个字段,其实可以分成三组字段,下划线后面的 mean、se 和 worst 代表了每组字段不同的度量方式,分别是平均值、标准差和最大值


# 将特征字段分成3组
features_mean= list(data.columns[2:12])#平均值
features_se= list(data.columns[12:22])#标准差
features_worst=list(data.columns[22:32])#最大值
# 数据清洗
# ID列没有用,删除该列
data.drop("id",axis=1,inplace=True)
# 将B良性替换为0,M恶性替换为1
data['diagnosis']=data['diagnosis'].map({'M':1,'B':0})

特征选择

 将肿瘤诊断结果可视化,用热力图呈现features_mean字段之间的相关性

# 将肿瘤诊断结果可视化
sns.countplot(data['diagnosis'],label="Count")
plt.show()
# 用热力图呈现features_mean字段之间的相关性
corr = data[features_mean].corr()
plt.figure(figsize=(14,14))
# annot=True显示每个方格的数据
sns.heatmap(corr, annot=True)
plt.show()


 热力图中对角线上的为单变量自身的相关系数是 1。颜色越浅代表相关性越大。所以你能看出来 radius_mean、perimeter_mean 和 area_mean 相关性非常大,compactness_mean、concavity_mean、concave_points_mean 这三个字段也是相关的,因此我们可以取其中的一个作为代表。
 那么如何进行特征选择呢?特征选择的目的是降维,用少量的特征代表数据的特性,这样也可以增强分类器的泛化能力。我们能看到 mean、se 和 worst 这三组特征是对同一组内容的不同度量方式,我们可以保留 mean 这组特征,在特征选择中忽略掉 se 和 worst。同时我们能看到 mean 这组特征中,radius_mean、perimeter_mean、area_mean 这三个属性相关性大,compactness_mean、daconcavity_mean、concave points_mean 这三个属性相关性大。我们分别从这 2 类中选择 1 个属性作为代表,比如 radius_mean 和 compactness_mean

# 特征选择
features_remain = ['radius_mean','texture_mean',  'smoothness_mean','compactness_mean','symmetry_mean', 'fractal_dimension_mean']

模型训练

数据集和训练集的划分

# 抽取30%的数据作为测试集,其余作为训练集
train, test = train_test_split(data, test_size = 0.3)
# 抽取特征选择的数值作为训练和测试数据
train_X = train[features_remain]
train_y=train['diagnosis']
test_X= test[features_remain]
test_y =test['diagnosis']

数据标准化操作

对数据进行规范化,这样让数据同在同一个量级上,避免因为维度问题造成数据误差:

# 采用Z-Score规范化数据,保证每个特征维度的数据均值为0,方差为1
ss = StandardScaler()
train_X = ss.fit_transform(train_X)
test_X = ss.transform(test_X)

模型训练与评估

1.创建SVM分类器


# 创建SVM分类器
model = svm.SVC()
# 用训练集做训练
model.fit(train_X,train_y)
# 用测试集做预测
prediction=model.predict(test_X)
print('准确率: ', metrics.accuracy_score(prediction,test_y))

2.创建SVM分类器LinearSVC

准确率:  0.8888888888888888
# 创建SVM分类器
model = svm.LinearSVC()
# 用训练集做训练
model.fit(train_X,train_y)
# 用测试集做预测
prediction=model.predict(test_X)
print('准确率: ', metrics.accuracy_score(prediction,test_y))
准确率:  0.9181286549707602

SVM 美国威斯康星州乳腺癌检测相关推荐

  1. SVM实战:如何进行乳腺癌检测

    如何在 sklearn 中使用 SVM SVM 既可以做回归,也可以做分类器. 当用 SVM 做回归的时候,我们可以使用 SVR 或 LinearSVR,即support vector regress ...

  2. 威斯康星大学计算机案例,美国威斯康星大学麦迪逊分校CS硕士录取

    [基本情况] Y同学,香港某大学,信息技术管理 GPA 3.6,免TOEFL University of Wisconsin-Madison,Professional Master's program ...

  3. 威斯康星大学计算机科学教授,美国威斯康星大学周家振访问沈阳自动化所

    周家振作报告 8月22日,应中国科学院沈阳自动化研究所曾鹏研究员与刘金德研究员的邀请,美国威斯康星大学白水分校助理教授周家振访问了该所. 周家振作了题为Scaling of On-Demand Bro ...

  4. 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例

    传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 文章目录 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 1导入基本库 2读取数据并且变换类型 3输出数据 4可视化数据 ...

  5. 威斯康星大学乳腺癌肿瘤数据预测分类代码讲解

  6. [DA45] 使用SVM进行乳腺癌检测

    数据集来自美国威斯康星州的乳腺癌诊断数据集. 由于数据特征较多, 本例使用相关性分析与主成分分析两种方法进行降维了处理, 再通过SVM支持向量机模型对数据进行了分类. 一. 数据预处理 加载数据后对数 ...

  7. 威斯康星大学硕士计算机科学,威斯康星大学麦迪逊分校计算机科学

    威斯康星大学麦迪逊分校(University of Wisconsin-Madison)简称UW-Madison,创建于1848年,位于美国威斯康星州的首府麦迪逊,是一所世界顶尖的著名公立研究型大学, ...

  8. 威斯康星麦迪逊计算机专业排名,威斯康星大学麦迪逊分校计算机专业详解

    威斯康星大学麦迪逊分校始建于1848年,位于美国威斯康星州首府麦迪逊,是美国顶尖的公立研究型大学,也是世界上最负盛名的公立大学.该校是威斯康星大学系统的旗舰学府,是北美顶尖大学学术联盟美国大学协会的创 ...

  9. 威斯康星大学麦迪逊分校计算机专业排名,威斯康星大学麦迪逊分校的计算机专业如何?...

    威斯康辛大学麦迪逊分校(University of Wisconsin, Madison,有时缩写为UWM)是一所大型公立综合性全国大学,成立于1848年,位于美国威斯康辛州首府麦迪逊市,是威斯康辛大 ...

最新文章

  1. 使用DWR实现自己主动补全 相似百度搜索框的自己主动显示效果
  2. ORA-14452的出现原因解析及解决方法
  3. html css常用样式
  4. 软件测试技术与项目实训pdf,软件测试技术任务驱动式教程pdf
  5. a标签的四种链接状态
  6. IDEA使用自带数据库连接工具连接Mysql,及报错解决
  7. python legend位置_关于matplotlib-legend 位置属性 loc 使用说明
  8. 【CodeForces - 988C 】Equal Sums (思维,STLmap,STLset,tricks)
  9. 回发或回调参数无效。在配置中使用 enableEventValidation=true或在页面中启用了事件验证...(转)...
  10. Hi3798M V200 SDK文档介绍
  11. C#中不同窗口之间传递值的两种方法
  12. 中jsp加载不出来layui_加载页面信息,刷不出来心态都崩了
  13. mysql_safe不存在_mysql5.7.9安装后找不到mysqld_safe和mysqld_multi程序
  14. Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知(转)...
  15. 【0x50「动态规划」例题】LCIS【最长公共上升子序列】
  16. 大学英语综合教程三 Unit 1至Unit 8 课文内容英译中 中英翻译
  17. STC89C52RC烧录程序
  18. 有才的人全败给“傲”,平庸的人皆输在“懒”!
  19. 考研杂谈一:计算机专业有必要考研吗?
  20. linkinfo.dll病毒 盗取 用户登陆 网页帐号,和密码

热门文章

  1. 【分库分表】ShardingSphere分库分表实战
  2. 音质好的无线蓝牙耳机品牌?盘点音质超好的蓝牙耳机推荐
  3. Github的远程项目如何下载到本地
  4. MSF外网渗透+shellcode免杀
  5. java主程序怎样调用子程序_主程序调用子程序使用( )指令。
  6. 六字诀教你辨肾脏是否健康
  7. 未明学院:量化金融训练营开始报名,成为兼具数据分析技能+项目实战经验的复合型人才!
  8. 最简单的加载器免杀思路
  9. 复制粘贴-实现动态爱心 网页版
  10. 均值、方差、标准差的理解