当前位置: 首页 > news >正文

Python scikit-learn 机器学习算法实践

Scikit-learn 机器学习算法实践

继上一篇Python 快速入门:基础语法与数据处理实战, 我们接下来介绍人工智能常用的机器学习库。在数据分析和预测建模领域,Scikit-learn 是一个功能强大且易于使用的 Python 机器学习库。本文将通过几个示例,介绍如何使用 Scikit-learn 进行监督学习(分类和回归)以及无监督学习(聚类和降维)。

在这里插入图片描述

1. 监督学习 - 分类

1.1 K-近邻算法进行鸢尾花分类

代码
# 导入所需的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data  # 特征数据
y = iris.target  # 标签数据# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建 K-近邻分类器模型
knn = KNeighborsClassifier(n_neighbors=3)# 使用训练集训练模型
knn.fit(X_train, y_train)# 使用测试集进行预测
y_pred = knn.predict(X_test)# 计算预测的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率为:{accuracy * 100:.2f}%")
流程图
加载数据集
划分训练集和测试集
创建K-近邻模型
训练模型
进行预测
计算准确率

1.2 支持向量机进行乳腺癌分类

代码
# 导入所需的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载乳腺癌数据集
cancer = datasets.load_breast_cancer()
X = cancer.data  # 特征数据
y = cancer.target  # 标签数据# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建支持向量机分类器模型
svm = SVC(kernel='linear')# 使用训练集训练模型
svm.fit(X_train, y_train)# 使用测试集进行预测
y_pred = svm.predict(X_test)# 计算预测的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率为:{accuracy * 100:.2f}%")
流程图
加载数据集
划分训练集和测试集
创建支持向量机模型
训练模型
进行预测
计算准确率

2. 监督学习 - 回归

2.1 线性回归预测加州房价

代码
# 导入所需的库
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 加载加州房价数据集
housing = fetch_california_housing()
X = housing.data  # 特征数据
y = housing.target  # 标签数据# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型
lr = LinearRegression()# 使用训练集训练模型
lr.fit(X_train, y_train)# 使用测试集进行预测
y_pred = lr.predict(X_test)# 计算预测的均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"模型的均方误差为:{mse:.2f}")
流程图
加载数据集
划分训练集和测试集
创建线性回归模型
训练模型
进行预测
计算均方误差

3. 无监督学习 - 聚类

3.1 K-均值聚类分析鸢尾花数据

代码
# 导入所需的库
from sklearn import datasets
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data  # 特征数据# 创建 K-均值聚类模型
kmeans = KMeans(n_clusters=3)# 使用数据训练模型
kmeans.fit(X)# 获取聚类结果
labels = kmeans.labels_# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel('花萼长度')
plt.ylabel('花萼宽度')
plt.title('K-均值聚类结果')
plt.show()
流程图
加载数据集
创建K-均值聚类模型
训练模型
获取聚类结果
可视化聚类结果

4. 无监督学习 - 降维

4.1 主成分分析降维

代码
# 导入所需的库
from sklearn import datasets
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data  # 特征数据# 创建主成分分析模型
pca = PCA(n_components=2)# 使用数据训练模型并降维
X_pca = pca.fit_transform(X)# 可视化降维后的结果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=iris.target, cmap='viridis')
plt.xlabel('主成分 1')
plt.ylabel('主成分 2')
plt.title('主成分分析降维结果')
plt.show()
流程图
加载数据集
创建主成分分析模型
训练模型并降维
可视化降维结果

通过以上示例,我们可以看到 Scikit-learn 提供了简单而强大的工具,用于处理各种机器学习任务。无论是监督学习还是无监督学习,都可以通过几行代码快速实现。希望这些示例能够帮助你更好地理解和应用机器学习算法。

http://www.xdnf.cn/news/33841.html

相关文章:

  • 【每天一个知识点】模式识别
  • MySQL进阶-存储过程-变量语法结构
  • C++用于保留浮点数的两位小数,使用宏定义方法(可兼容低版本Visual Studio)
  • JZ8P1533 充电型数字可编程控制器
  • 200+短剧出海平台:谁能成为“海外红果”?
  • 电脑端移植至手机平板:攻克难题,仙盟架构显神通——仙盟创梦IDE
  • 2025.04.19-阿里淘天春招算法岗笔试-第二题
  • 在RK3588上使用SRS流媒体服务器
  • kafka集群认证
  • NumPy 核心指南:零基础入门与实践
  • 商标起名换了暗示词,通过初审!
  • 边生成边训练:构建合成数据驱动的在线训练系统设计实战
  • XMind 下载指南
  • 基于autoware.1.14与gazebo联合仿真进行全局规划高精地图版
  • 可穿戴经颅多通道直流电刺激产品测试总结
  • 16、堆基础知识点和priority_queue的模拟实现
  • 为什么 waitress 不支持 WebSocket?
  • PyTorch源码编译报错“fatal error: numpy/arrayobject.h: No such file or directory”
  • SEO长尾关键词优化实战
  • velocity模板引擎
  • 【一起学Rust】使用Thunk工具链实现Rust应用对Windows XP/7的兼容性适配实战
  • RoBoflow数据集的介绍
  • JVM笔记【一】java和Tomcat类加载机制
  • PHP怎样连接MySQL数据库?
  • 基于STM32中断讲解
  • 【JDBC-54.5】JDBC批处理插入数据:大幅提升数据库操作性能
  • YOLO拓展-NMS算法
  • GWAS_LD
  • TCP 总是禁用分片(IP_DF,Don‘t Fragment)吗?
  • 基于尚硅谷FreeRTOS视频笔记——9—上下文切换的时机与空闲任务