分类算法——基于heart数据集实现

1 heart数据集——描述性统计分析

import matplotlib.pyplot as plt
import pandas as pd# Load the dataset
heart = pd.read_csv(r"heart.csv", sep=',')# Check the columns in the DataFrame
print(heart.columns)a=heart.loc[:, 'y'].value_counts()
print(a)
heart.loc[:, 'y'].value_counts().plot(kind='bar')
#设置0和1的标签,0为无心脏病,1为有心脏病
plt.xticks([0, 1], ['No heart disease', 'Yes heart disease'])
#设置横坐标旋转45度
plt.xticks(rotation=0)
# 设置矩形数据标签
for x, y in enumerate(heart.loc[:, 'y'].value_counts()):plt.text(x, y, '%s' % y, ha='center', va='bottom')
#更改颜色
plt.bar([0, 1], heart.loc[:, 'y'].value_counts(), color=['#FF0000', '#00FF00'])#设置标题
plt.title('Heart disease distribution')
plt.show()
Index(['sbp', 'tobacco', 'ldl', 'adiposity', 'age', 'y'], dtype='object')
y
0    302
1    160
Name: count, dtype: int64

在这里插入图片描述

2 Cp交叉验证,选择最优的k值进行判别分析

#Cp交叉验证,选择最优的k值进行判别分析
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifierX = heart.iloc[:, 0:5]
y = heart.loc[:, 'y']
k_range = range(1, 31)
k_scores = []
for k in k_range:knn = KNeighborsClassifier(n_neighbors=k)scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')k_scores.append(scores.mean())plt.plot(k_range, k_scores)
plt.xlabel('Value of K for KNN')
plt.ylabel('Cross-Validated Accuracy')#选择最优的k值
k = k_scores.index(max(k_scores)) + 1
print('Optimal k: %d' % k)
#绘制最优k值在图中的位置
plt.plot(k_range, k_scores)
plt.xlabel('Value of K for KNN')
plt.ylabel('Cross-Validated Accuracy')
plt.scatter(k, max(k_scores), color='red')#显示最优k直在图中等于多少
plt.text(k, max(k_scores), '(%d, %.2f)' % (k, max(k_scores)), ha='center', va='bottom')
plt.show()
Optimal k: 22

在这里插入图片描述

KNN分类器

#使用最优k值建立KNN进行分类
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)# Initialize and fit the KNN classifier
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)# Predict and print accuracy
y_pred = knn.predict(X_test)
print('Accuracy: %.2f' % accuracy_score(y_test, y_pred))#绘制决策区域
from matplotlib.colors import ListedColormap
import numpy as np
from sklearn.decomposition import PCAdef plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):# Reduce dimensionality to 2D using PCApca = PCA(n_components=2)X_pca = pca.fit_transform(X)# setup marker generator and color mapmarkers = ('s', 'x', 'o', '^', 'v')colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')cmap = ListedColormap(colors[:len(np.unique(y))])# plot the decision surfacex1_min, x1_max = X_pca[:, 0].min() - 1, X_pca[:, 0].max() + 1x2_min, x2_max = X_pca[:, 1].min() - 1, X_pca[:, 1].max() + 1xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),np.arange(x2_min, x2_max, resolution))Z = classifier.predict(pca.inverse_transform(np.array([xx1.ravel(), xx2.ravel()]).T))Z = Z.reshape(xx1.shape)plt.contourf(xx1, xx2, Z, alpha=0.4, cmap=cmap)plt.xlim(xx1.min(), xx1.max())plt.ylim(xx2.min(), xx2.max())for idx, cl in enumerate(np.unique(y)):plt.scatter(x=X_pca[y == cl, 0], y=X_pca[y == cl, 1],alpha=0.8, c=[cmap(idx)],marker=markers[idx], label=cl)# highlight test samplesif test_idx:X_test, y_test = X_pca[test_idx, :2], y[test_idx]plt.scatter(X_test[:, 0], X_test[:, 1],alpha=1.0, linewidth=1, marker='o',s=55, label='test set')# Plot decision regions using PCA-transformed features
X_combined = np.vstack((X_train, X_test))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X=X_combined, y=y_combined, classifier=knn, test_idx=range(len(y_train), len(y_train) + len(y_test)))
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.legend(loc='upper left')
plt.show()
Accuracy: 0.69

在这里插入图片描述

朴素贝叶斯分类器

#朴素贝叶斯分类器
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.naive_bayes import GaussianNB
from matplotlib.colors import ListedColormap# Load the dataset
heart = pd.read_csv(r"heart.csv", sep=',')# Select features and target
X = heart.iloc[:, 0:5]
y = heart.loc[:, 'y']# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)# Initialize and fit the Gaussian Naive Bayes classifier
gnb = GaussianNB()
gnb.fit(X_train, y_train)# Predict and print accuracy
y_pred = gnb.predict(X_test)
print('Accuracy: %.2f' % accuracy_score(y_test, y_pred))# Define the function to plot decision regions
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn.decomposition import PCAdef plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):# Reduce dimensionality to 2D using PCApca = PCA(n_components=2)X_pca = pca.fit_transform(X)# setup marker generator and color mapmarkers = ('s', 'x', 'o', '^', 'v')colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')cmap = ListedColormap(colors[:len(np.unique(y))])# plot the decision surfacex1_min, x1_max = X_pca[:, 0].min() - 1, X_pca[:, 0].max() + 1x2_min, x2_max = X_pca[:, 1].min() - 1, X_pca[:, 1].max() + 1xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),np.arange(x2_min, x2_max, resolution))Z = classifier.predict(pca.inverse_transform(np.array([xx1.ravel(), xx2.ravel()]).T))Z = Z.reshape(xx1.shape)plt.contourf(xx1, xx2, Z, alpha=0.4, cmap=cmap)plt.xlim(xx1.min(), xx1.max())plt.ylim(xx2.min(), xx2.max())for idx, cl in enumerate(np.unique(y)):plt.scatter(x=X_pca[y == cl, 0], y=X_pca[y == cl, 1],alpha=0.8, c=[cmap(idx)],marker=markers[idx], label=cl)# # highlight test samples# if test_idx:#     X_test, y_test = X_pca[test_idx, :2], y[test_idx]#     plt.scatter(X_test[:, 0], X_test[:, 1],#                 alpha=1.0, linewidth=1, marker='o',#                 s=55, label='test set')# Plot decision regions using PCA-transformed features
X_combined = np.vstack((X_train, X_test))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X=X_combined, y=y_combined, classifier=gnb, test_idx=range(len(y_train), len(y_train) + len(y_test)))
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.legend(loc='upper left')
plt.show()
Accuracy: 0.70

在这里插入图片描述

SVM分类器

#使用SVM进行分类
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_scorefrom sklearn.svm import SVC# Load the dataset
heart = pd.read_csv(r"heart.csv", sep=',')
# Select features and target
X = heart.iloc[:, 0:5]
y = heart.loc[:, 'y']# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)# Initialize and fit the SVM classifier
svm = SVC(kernel='linear', C=1.0, random_state=0)
svm.fit(X_train, y_train)# Predict and print accuracy
y_pred = svm.predict(X_test)
print('Accuracy: %.2f' % accuracy_score(y_test, y_pred))
Accuracy: 0.66

# Plot decision regions using PCA-transformed features
X_combined = np.vstack((X_train, X_test))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X=X_combined, y=y_combined, classifier=svm, test_idx=range(len(y_train), len(y_train) + len(y_test)))
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.legend(loc='upper left')
plt.show()

在这里插入图片描述

随机森林分类

# Import necessary libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
import pydotplus
from IPython.display import Image# Load the dataset
heart = pd.read_csv(r"heart.csv", sep=',')# Select features and target
X = heart.iloc[:, 0:5]
y = heart.loc[:, 'y']# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)# Initialize and fit the Decision Tree classifier
tree = DecisionTreeClassifier(max_depth=3, random_state=0)
tree.fit(X_train, y_train)# Predict and print accuracy
y_pred = tree.predict(X_test)
print('Accuracy: %.2f' % accuracy_score(y_test, y_pred))# Export the decision tree to a file
export_graphviz(tree, out_file='tree.dot', feature_names=X.columns)# Convert the dot file to a png
graph = pydotplus.graph_from_dot_file('tree.dot')
Image(graph.create_png())# Plot decision regions using PCA-transformed features
X_combined = np.vstack((X_train, X_test))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X=X_combined, y=y_combined, classifier=tree, test_idx=range(len(y_train), len(y_train) + len(y_test)))
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.legend(loc='upper left')
plt.show()
Accuracy: 0.68

在这里插入图片描述

决策树分类


#绘制出决策树
from sklearn.tree import plot_tree
plt.figure(figsize=(20, 10))
plot_tree(tree, filled=True, feature_names=X.columns, class_names=['0', '1'])
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477142.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣面试经典 150(上)

文章目录 数组/字符串1. 合并两个有序数组2. 移除元素3. 删除有序数组中的重复项4. 删除有序数组的重复项II5. 多数元素6. 轮转数组7. 买卖股票的最佳时机8. 买卖股票的最佳时机II9. 跳跃游戏10. 跳跃游戏II11. H 指数12. O(1)时间插入、删除和获取随机元素13. 除自身以外数组的…

Vue3-后台管理系统

目录 一、完成项目历程 1、构建项目 2、项目的自定义选项 3、 封装组件 4、配置对应页面的路由 5、从后端调接口的方式 二、引入Element Plus、Echarts、国际化组件 1、Element Plus安装 2、Echarts安装 3、国际化 三、介绍项目以及展示 1、项目是基于Vue3、Element …

mq 消费慢处理方式,rocketmq消费慢如何处理,mq如何处理消费端消费速率慢。rocketmq优化

1. 问题:mq消费慢,如何加快处理速度 2. 分析: 没想到吧,官网上就有处理方式。! 3.链接: 基本最佳实践 | RocketMQ 4. 处理方式: 4.1 提高消费并行度 4.1.1 加机器,配置多个消费服…

内存级文件原理——Linux

目录 进程与文件 Linux下的文件系统 文件操作,及文件流 C语言函数 文件流 文件描述符 系统调用操作 系统调用参数 重定向与文件描述符 输出重定向 输入重定向 文件内容属性 Linux下一切皆文件 进程与文件 当我们对文件进行操作时,文件必…

MATLAB矩阵元素的修改及删除

利用等号赋值来进行修改 A ( m , n ) c A(m,n)c A(m,n)c将将矩阵第 m m m行第 n n n列的元素改为 c c c,如果 m m m或 n n n超出原来的行或列,则会自动补充行或列,目标元素改为要求的,其余为 0 0 0 A ( m ) c A(m)c A(m)c将索引…

并行IO接口8255

文章目录 8255A芯片组成外设接口三个端口两组端口关于C口(★) 内部逻辑CPU接口 8255A的控制字(★)位控字(D70)方式选择控制字(D71) 8255A的工作方式工作方式0(基本输入/输…

springboot3如何集成knife4j 4.x版本及如何进行API注解

1. 什么是Knife4j knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案, 取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!knife4j的前身是swagger-bootstrap-ui,swagger-bootstrap-ui自1.9.6版本后,正式更名为knife4j为了契合微服务的架构发展,由于原来…

js高级06-ajax封装和跨域

8.1、ajax简介及相关知识 8.1.1、原生ajax 8.1.1.1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。 按需请求,可…

自然色调人像自拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 自然色调人像自拍照后期通过 Lightroom 调色,旨在打造出清新、自然、真实的人像效果。这种风格强调还原人物的本来面貌,同时增强照片的色彩和光影表现力,让自拍照更加生动和吸引人。 预设信息 调色风格:清晰透明风格预…

RabbitMQ简单应用

概念 RabbitMQ 是一种流行的开源消息代理(Message Broker)软件,它实现了高级消息队列协议(AMQP - Advanced Message Queuing Protocol)。RabbitMQ 通过高效的消息传递机制,主要应用于分布式系统中解耦应用…

计算机网络(14)ip地址超详解

先看图: 注意看第三列蓝色标注的点不会改变,A类地址第一个比特只会是0,B类是10,C类是110,D类是1110,E类是1111. IPv4地址根据其用途和网络规模的不同,分为五个主要类别(A、B、C、D、…

挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析

随着挂壁式空气净化器市场的不断扩大,各类品牌与型号琳琅满目。但遗憾的是,一些跨界网红品牌过于追求短期效益,导致产品在净化效果与去除异味方面表现平平,使用体验不佳,甚至可能带来二次污染风险,影响人体…

分布式 Data Warebase - 构筑 AI 时代数据基石

导读:作者以人类世界一个信息层次模型 DIKW 为出发点,引出对计算机世界(系统)处理数据过程的介绍。接着以一个民宿平台数据架构随业务发展而不断演进的过程,展示了这场信息革命中,在具体应用场景下&#xf…

如何将Latex的文章内容快速用word+Endnote排版

1 第一步 Endnote文件是无法直接导入bib文件的。需要将reference.bib的参考文献内容,通过JabRef软件打开并另存为refefence.ris文件 下载JabRef软件:https://www.jabref.org/#download 导出为ris格式文件 2 第二步 通过Endnote导入ris文件&#xff0…

[论文阅读] 异常检测 Deep Learning for Anomaly Detection: A Review(三)总结梳理-疑点记录

《深度异常检测综述》总结梳理 目录 一、研究背景与挑战二、深度异常检测方法分类三、实验评估四、结论在这篇文章中,**异常检测的异构性**主要从以下几个方面来理解:如何理解多源数据融合的困难“学习正常性的特征表示”与“用于特征提取的深度学习”在…

网络爬虫——爬虫项目案例

本节将全面讲解如何通过实战爬虫项目解决复杂问题。结合最新技术和实际开发需求,案例将涵盖完整开发流程,包括需求分析、实现代码、优化方法和常见问题解决。力求实现高效、可扩展的爬虫项目架构,帮助开发者提升实战能力。 案例 1&#xff1a…

实时质检-静音检测分析流程(运维人员使用)

前言 用户在实时质检时,开启了主叫或被叫静音检测功能,但是听录音时,主叫或被叫明明没有任何声音,但是通话没有被挂断。 说明主叫或被叫的静音阈值太低,导致系统没有把很小的声音认定为静音;或者检测非静音…

MetaGPT实现多动作Agent

异步编程学习链接 智能体 LLM观察思考行动记忆 多智能体 智能体环境SOP评审路由订阅经济 教程地址 多动作的agent的本质是react,这包括了think(考虑接下来该采取啥动作)act(采取行动) 在MetaGPT的examples/write_…

【MySQL】MySQL数据库基础

【MySQL】MySQL数据库基础 🥕个人主页:开敲🍉 🔥所属专栏:MySQL🍋 🌼文章目录🌼 1. 数据库基础 1.1 什么是数据库 1.2 主流数据库 1.3 MySQL基本使用 1.3.1 服务器,数据…

进程控制(详解)

一.进程创建 1.fork函数 在linux中fork函数是⾮常重要的函数&#xff0c;它从已存在进程中创建⼀个新进程。新进程为⼦进程&#xff0c;⽽原进 程为⽗进程。 #include <unistd.h>pid_t fork(void);返回值&#xff1a;⾃进程中返回0&#xff0c;⽗进程返回⼦进程id&…