Python机器学习框架介绍和入门案例:Scikit-learn、TensorFlow与Keras、PyTorch

devtools/2024/12/21 22:21:17/

Python机器学习框架介绍和入门案例

目录

  1. 🌟 机器学习框架概述
  2. 📊 Scikit-learn
    • 2.1 模型选择与评估
    • 2.2 常用API(fit、predict、score)
    • 2.3 实现示例(线性回归、K近邻)
  3. 🚀 TensorFlow与Keras
    • 3.1 安装与环境配置
    • 3.2 Keras模型构建流程(Sequential与Functional API)
    • 3.3 常用层(Dense、Conv2D、LSTM)
  4. 🔥 PyTorch
    • 4.1 张量操作与计算图
    • 4.2 模型训练与优化(损失函数、优化器)

1. 🌟 机器学习框架概述

在现代机器学习领域,框架的选择对模型的构建、训练和部署至关重要。Python作为主要的机器学习编程语言,其生态中有多个强大的机器学习框架。每个框架都有独特的功能和适用场景,提供了不同的工具和API以适应多种需求。通过对这些框架的深入了解,可以更加高效地应用机器学习技术于实际问题解决。

本指南将详细探讨三个流行的机器学习框架:Scikit-learn、TensorFlow与Keras、以及PyTorch。每个部分将介绍关键功能、API使用和具体实现示例,帮助用户掌握各框架的基本操作与应用。


2. 📊 Scikit-learn

2.1 模型选择与评估

Scikit-learn是Python中最广泛使用的机器学习库之一,以其易用性和丰富的功能而闻名。其模型选择与评估功能可以帮助开发者选择最合适的模型并评估模型性能。Scikit-learn提供了一系列的评估指标,如准确率、精确率、召回率等,能够帮助判断模型在不同数据集上的表现。

python">from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, accuracy_score# 加载数据集
data = load_iris()
X, y = data.data, data.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 初始化模型
model = RandomForestClassifier(n_estimators=100)# 训练模型
model.fit(X_train, y_train)# 进行预测
y_pred = model.predict(X_test)# 评估模型性能
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))

在上述代码中,使用train_test_split将数据集划分为训练集和测试集,接着利用RandomForestClassifier构建随机森林模型。最后,通过accuracy_scoreclassification_report评估模型的表现,输出准确率及详细分类信息。

2.2 常用API(fit、predict、score)

Scikit-learn的API设计简洁且统一,主要包括fitpredictscore三个核心方法。fit用于训练模型,predict用于进行预测,score则用于评估模型性能。

python"># 继续使用之前训练的模型进行评估
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)print("Training Score:", train_score)
print("Test Score:", test_score)

在这段代码中,通过调用score方法,分别获取了模型在训练集和测试集上的得分,这样可以有效判断模型的拟合情况,避免过拟合或欠拟合的风险。

2.3 实现示例(线性回归、K近邻)

线性回归和K近邻是Scikit-learn中非常常用的模型。以下是如何使用这两种模型的具体实现。

线性回归示例

python">from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
import numpy as np# 生成线性回归数据集
X, y = make_regression(n_samples=100, n_features=1, noise=10)# 初始化线性回归模型
linear_model = LinearRegression()# 训练模型
linear_model.fit(X, y)# 进行预测
y_pred = linear_model.predict(X)# 输出回归系数
print("Coefficient:", linear_model.coef_)
print("Intercept:", linear_model.intercept_)

K近邻示例

python">from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris# 加载数据集
data = load_iris()
X, y = data.data, data.target# 初始化K近邻模型
knn_model = KNeighborsClassifier(n_neighbors=3)# 训练模型
knn_model.fit(X, y)# 进行预测
sample_data = [[5.0, 3.5, 1.5, 0.2]]
predicted_class = knn_model.predict(sample_data)print("Predicted Class:", predicted_class)

通过以上代码,展示了如何在Scikit-learn中实现线性回归和K近邻模型,方便用户快速上手。


3. 🚀 TensorFlow与Keras

3.1 安装与环境配置

TensorFlow是一个广泛应用于深度学习的框架,而Keras是其高层API,提供了简单易用的接口。通过简单的安装指令,用户可以在本地环境中轻松配置TensorFlow与Keras。

pip install tensorflow

安装完成后,Keras默认集成在TensorFlow中,可以直接使用。

3.2 Keras模型构建流程(Sequential与Functional API)

Keras支持两种模型构建方式:Sequential API和Functional API。Sequential API适合于简单的线性堆叠模型,而Functional API则提供了更多灵活性,适合复杂模型。

使用Sequential API构建简单模型

python">from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense# 构建Sequential模型
model = Sequential()# 添加层
model.add(Dense(64, activation='relu', input_shape=(32,)))
model.add(Dense(10, activation='softmax'))# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])# 打印模型概况
model.summary()

使用Functional API构建复杂模型

python">from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model# 定义输入
inputs = Input(shape=(32,))# 添加层
x = Dense(64, activation='relu')(inputs)
outputs = Dense(10, activation='softmax')(x)# 构建模型
model = Model(inputs=inputs, outputs=outputs)# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])# 打印模型概况
model.summary()

以上代码展示了如何使用Sequential和Functional API构建Keras模型,通过简单的几行代码便可以完成复杂网络的搭建。

3.3 常用层(Dense、Conv2D、LSTM)

Keras支持多种层的使用,其中包括全连接层(Dense)、卷积层(Conv2D)和长短期记忆层(LSTM)。这些层可以组合形成多种神经网络结构,适用于不同的任务。

Dense层示例

python"># 在构建模型时添加Dense层
model.add(Dense(128, activation='relu'))

Conv2D层示例

python">from tensorflow.keras.layers import Conv2D# 在构建卷积神经网络时添加Conv2D层
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(64, 64, 3)))

LSTM层示例

python">from tensorflow.keras.layers import LSTM# 在构建递归神经网络时添加LSTM层
model.add(LSTM(50, input_shape=(timesteps, features)))

通过这些示例,展示了Keras如何灵活地支持不同类型的层以构建多样化的深度学习模型。


4. 🔥 PyTorch

4.1 张量操作与计算图

PyTorch是一款动态计算图的深度学习框架,允许用户灵活地创建和修改网络结构。其核心数据结构是张量,支持GPU加速,使得深度学习训练更加高效。

python">import torch# 创建张量
x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)# 张量的基本操作
y = x + 2
print("Result of addition:\n", y)# 使用GPU
if torch.cuda.is_available():x = x.to('cuda')print("Tensor on GPU:\n", x)

在上述代码中,展示了如何创建PyTorch张量及其基本操作,同时说明了如何将张量转移到GPU上进行计算。

4.2 模型训练与优化(损失函数、优化器)

在PyTorch中,模型训练通常涉及定义损失函数和优化器,随后通过反向传播算法更新权重。以下是一个简单的线性回归训练示例。

python">from torch import nn, optim# 定义线性回归模型
class LinearRegressionModel(nn.Module):def __init__(self):super(LinearRegressionModel, self).__init__()self.linear = nn.Linear(1, 1)def forward(self, x):return self.linear(x)# 实例化模型、损失函数与优化器
model = LinearRegressionModel()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 训练模型
for epoch in range(100):# 准备输入数据inputs = torch.tensor([[1.0], [2.0], [3.0]])labels = torch.tensor([[2.0], [3.0], [4.0]])# 清零梯度optimizer.zero_grad()# 前向传播outputs = model(inputs)# 计算损失loss = criterion(outputs, labels)# 反向传播与优化loss.backward()optimizer.step()if (epoch + 1) % 10 == 0:print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')

在上述代码中,定义了一个简单的线性回归模型,并通过循环进行训练,每10个epoch输出一次损失值。这展示了PyTorch模型训练的基本流程,用户可以根据自己的需求扩展更复杂的网络结构。


http://www.ppmy.cn/devtools/123327.html

相关文章

LC538 - 把二叉搜索树转换为累加树

文章目录 1 题目2 思路3 ACM模式参考 1 题目 https://leetcode.cn/problems/convert-bst-to-greater-tree/description/ 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree) 累加树&#…

KiCad 综合笔记

开窗 选中顶层或者底层 Mask 层,然后进行覆铜: 四层板 KiCad Tutorial - How to make a 4 layer PCB https://bbs.elecfans.com/jishu_2365544_1_1.html 虽然在“电路板设置”中,可以选择铜层的类型,但如果选择了“电源层”&am…

攻防世界----->Replace

前言:做题笔记。 下载 查壳。 upx32脱壳。 32ida打开。 先运行看看: 没有任何反应? 猜测又是 地址随机化(ASLR)---遇见过。 操作参考: 攻防世界---->Windows_Reverse1_dsvduyierqxvyjrthdfrtfregreg-CSDN博客 然后…

中国通信技术革命史

文章目录 引言I 中国通信技术革命史电报中国卫星通信的历史固定电话寻呼机(BP机)大哥大(手机)制定自己的移动通信网络技术体系5G未来科技发展的总趋势:用更少的能量,传输、处理和存储更多的信息II 知识扩展通信史(单位能量的信息传输率越来越高,网络地不断融合。)超级智能…

LeetCode hot100---哈希表专题(C++语言)

常用的哈希数据结构 (1)unordered_set 只关心value,不关心key,set中的数据会自动升序(2)unordered_map 既关心value,又关心key,map中的数据会自动升序1、两数之和 (1)题目描述以…

【CSS】SCSS混合的使用

基本使用 Scss中的混合允许定义一组 CSS 规则,然后在不同部分重用这些规则 mixin flex {display: flex;justify-content: center;align-items: center; }.box1 {include flex; }.box2 {include flex; }与变量不同,混合不仅可以包含样式规则&#xff0c…

使用keras搭建GRU神经网络创作莎士比亚小说

目录 复现环境 完整代码 程序输出 复现环境 完整代码 import tensorflow as tf import keras import datetime# 将输入文本tokenize为token形成词典vocabulary,使用词典中token的索引id对文本每个token进行编码. data = I love you and me ? # 数据 text_layer = keras.…

php对接中通SDK问题

记一次对接中通接口遇到的问题。 中通SDK是4年前的了,就这他们技术人员说能拉取的都是最新的,囧。 1.修改ZopHttpUtil.php中的请求方式 public function post($url, $headers, $querystring)//$timeout{$ch curl_init();curl_setopt($ch, CURLOPT_UR…