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

python manimgl数学动画演示_微积分_线性代数原理_ubuntu安装问题[已解决]

1.背景

最近调研python opencv, cuda加速矩阵/向量运算, 对于矩阵的线性变换, 秩, 转秩, 行列式变化等概概念模糊不清.
大概课本依旧是天书, 于是上B站搜索线性代数, 看到 3Blue1Brown 线性变换本质 视频, 点击观看.
惊为天人 --> 豁然开朗 --> 突然顿悟 --> 开心不已
感觉大学的线性代数课本, 是真的差.
3Blue1Brown 线性变换本质 视频动画可视化
二维向量,
三维向量,
二维向量: 缩放,位移
–>引出矩阵乘法的几何意义
–> 引出矩阵乘法 为什么是 行x列, 行 = 列, 代数计算的规定
—> 引出线性变化, 行列式变化
----> 引出逆矩阵
-----> 引出基座标变化
点积 可视化映射, 计算 --> 引出 点积作用, 求两个向量夹角

通过视频, 动画演示 二维, 三维向量变化 引出代数公式.
而大学课本, 只定义和说明矩阵和线性代数公式的计算, 没有介绍原有, 用途;
故学完就忘, 根本记不住
向量变化的几何意义.jpg
[ 3 0 0 2 ] X [ 1 1 ] 矩阵乘法几何意义 , 缩放 \begin{bmatrix} 3 & 0 \\ 0 & 2 \end{bmatrix} X \begin{bmatrix} 1 \\ 1 \end{bmatrix} 矩阵乘法几何意义, 缩放 [3002]X[11]矩阵乘法几何意义,缩放

manimgl_线性变化.jpg

[ 1 1 0 1 ] X [ 1 1 ] 矩阵乘法几何意义 , 位移 \begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix} X \begin{bmatrix} 1 \\ 1 \end{bmatrix} 矩阵乘法几何意义, 位移 [1011]X[11]矩阵乘法几何意义,位移

自己也有一些 微积分,线性变化计算的想法, 也想动画可视化这些计算过程.
于是尝试安装运行python manimgl

版本说明: manim数学动画制作有3个版本

  • manim: 原作者版本
  • manimgl : 通过opengl即时绘制动画, 可以通过ipython交互, 输入命令, 即时显示效果 --> 现场教学推荐
  • manimCE: 社区维护版, 原作者主要做数学视频, 没时间管理github pr请求, 由社区维护 --> 推荐版本

2.问题

测试环境1:

  • 系统: wsl ubuntu24.04
  • python 版本: 3.12

测试环境2:

  • 系统: wsl ubuntu22.04
  • python 版本: 3.10

安装依赖

# 依赖库
sudo apt install -y libcairo2-dev libpango1.0-dev libpangocairo-1.0-0 libgdk-pixbuf2.0-dev libffi-dev libssl-dev
sudo apt install -y libxml2-dev libxslt1-dev libjpeg-dev libfreetype6-dev libsdl2-dev libopenjp2-7-dev zlib1g-dev tesseract-ocr
sudo apt install -y libtesseract-dev libwebp-dev ffmpeg texlivesudo apt install -y texlive-full
# Note: texlive-full 安装需要极长时间, 请耐心等待

venv创建独立环境, 安装manimgl

# 更新pip
pip install --upgrade pip# 1.创建虚拟环境
python3 -m venv manimgl# 2.加载环境
source manimgl/bin/activate# 3.安装manimgl
pip3 install manimgl

运行manimgl错误: manimgl

Traceback (most recent call last):File "/home/liuj/venv/manimgl/bin/manimgl", line 5, in <module>from manimlib.__main__ import mainFile "/home/liuj/venv/manimgl/lib/python3.12/site-packages/manimlib/__main__.py", line 4, in <module>from manimlib import __version__
ImportError: cannot import name '__version__' from 'manimlib' (/home/liuj/venv/manimgl/lib/python3.12/site-packages/manimlib/__init__.py)

提示说明, python3.12 与 manimgl版本不一致

3.解决过程

方法1: 尝试安装低版本manimgl --> Fail

查询manimgl版本
pip index versions manimgl

manimgl (1.7.2)
Available versions: 1.7.2, 1.7.1, 1.7.0, 1.6.1, 1.6.0, 1.5.0, 1.4.1, 1.4.0, 1.3.0, 1.2.0, 1.1.0, 1.0.0

安装低版本 1.6.1

mkdir ~/venv; cd ~/venv# 1.创建虚拟环境
python3 -m venv manimgl_v1.6# 2.加载环境
source manimgl_v1.6/bin/activate# 3.安装低版本 manimgl
pip3 install manimgl==1.6.1
运行错误1: ModuleNotFoundError
manimgl
Traceback (most recent call last):File "/home/liuj/venv/manimgl_v1.6/bin/manimgl", line 5, in <module>from manimlib.__main__ import mainFile "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__init__.py", line 1, in <module>import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'

解决方法:
pip install --upgrade setuptools
再次运行 manimgl 成功

运行错误2:

gitee在线代码: 2_square_to_circle_方形变圆形.py

运行实例: manimgl 2_square_to_circle_方形变圆形.py SquareToCircle


ManimGL v1.6.1
[16:29:44] INFO     Using the default configuration file, which you can modify in                                                                            config.py:265`/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/default_config.yml`                                                               INFO     If you want to create a local configuration file, you can create a file named `custom_config.yml`, or run `manimgl --config`             config.py:266
Traceback (most recent call last):File "/home/liuj/venv/manimgl_v1.6/bin/manimgl", line 8, in <module>sys.exit(main())^^^^^^File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__main__.py", line 25, in mainscene.run()File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/scene/scene.py", line 91, in runself.construct()File "/home/liuj/3_work/4_python-example/7_数学_科学_计算/2_manim_manimgl数学动画/manimgl/2_square_to_circle_方形变圆形.py", line 4, in constructcircle = Circle()^^^^^^^^File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 324, in __init__Arc.__init__(self, 0, TAU, **kwargs)File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 218, in __init__VMobject.__init__(self, **kwargs)File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/types/vectorized_mobject.py", line 85, in __init__super().__init__(**kwargs)File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/mobject.py", line 89, in __init__self.init_points()File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 221, in init_pointsself.set_points(Arc.create_quadratic_bezier_points(File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/types/vectorized_mobject.py", line 968, in wrapperif not np.all(self.get_points() == old_points):^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: operands could not be broadcast together with shapes (24,3) (0,3) 

错误原因:
numpy 的版本不匹配, 即numpy的版本太高, API不兼容

尝试降低numpy版本, 引入其它问题 --> 寻找其它解决方法
尝试安装manimgl 1.5.0 版本, 遇到相同问题–> 寻找其它解决方法

方法2: 尝试官网Anaconda安装方法 --> Fail

1.安装Anaconda3

中文博客安装教程: https://blog.csdn.net/qq_29225913/article/details/105347317
清华源下载: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
下载: Anaconda3-5.3.1-Linux-x86_64.sh
安装:

bash Anaconda3-5.3.1-Linux-x86_64.sh
# 按提示输入 yes, Enter
# Note: vsocde 插件不要安装, 下载速度很慢

安装确认:
新开终端: conda -V

conda 4.5.11 --> 安装conda成功

2.conda安装manimgl教程

官网教程: https://3b1b.github.io/manim/getting_started/installation.html

git clone https://github.com/3b1b/manim.git
cd manim
conda create -n manim python=3.8
conda activate manim
pip install -e .

pip install -e . 安装时提示错误

Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple/
Obtaining file:///home/liuj/venv/manimInstalling build dependencies ... doneChecking if build backend supports build_editable ... doneGetting requirements to build editable ... donePreparing editable metadata (pyproject.toml) ... done
Collecting addict (from manimgl==1.7.2)Using cached https://mirrors.ustc.edu.cn/pypi/packages/6a/00/b08f23b7d7e1e14ce01419a467b583edbb93c6cdb8654e54a9cc579cd61f/addict-2.4.0-py3-none-any.whl (3.8 kB)
Collecting appdirs (from manimgl==1.7.2)Using cached https://mirrors.ustc.edu.cn/pypi/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
INFO: pip is looking at multiple versions of manimgl to determine which version is compatible with other requirements. This could take a while.
ERROR: Ignored the following versions that require a different python version: 0.1.0 Requires-Python >=3.13; 0.2.0 Requires-Python >=3.13; 0.2.1 Requires-Python >=3.13
ERROR: Could not find a version that satisfies the requirement audioop-lts (from manimgl) (from versions: none)
ERROR: No matching distribution found for audioop-lts

错误原因:
audioop-lts; python_version>=‘3.13’ --> audioop-lts 依赖python版本3.13
与conda python=3.8冲突, 估计是原作者, 没有指定audioop-lts版本 --> 放弃conda方法

方法3: 降低python版本, 兼容manimgl --> OK

通过错误提示

  1. conda安装可知, manimgl 应该是在python=3.8版本验证通过
  2. python3.12 版本安装失败可知, 需要降低python版本
    故尝试降低python版本, 这里使用pyenv降低版本.
1.安装pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer  | bash

按安装提示添加环境配置: ~/.bashrc

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init -)"
2.pyenv安装python=3.8版本环境

查看pyenv支持版本: pyenv install list

3.8.1
3.8.2
3.8.3
3.8.19
3.8.20
3.9.0
3.9.2

安装 3.8.20: pyenv install 3.8.20

Downloading Python-3.8.20.tar.xz…
-> https://www.python.org/ftp/python/3.8.20/Python-3.8.20.tar.xz

如果下载速度慢, 可以使用迅雷, 或开启VPN下载 Python-3.8.20.tar.xz, 拷贝到~/.pyenv/cache

mkdir -p ~/.pyenv/cache
cp -r Python-3.8.20.tar.xz  ~/.pyenv/cache
pyenv install 3.8.20
# 等待安装成功

查看python3.8版本是否安装成功
pyenv versions

  • system (set by /home/liuj/.pyenv/version)
    3.8.20
3.pyenv切换版本, 再次安装manimgl

切换: pyenv shell 3.8.20
确认: pyenv versions

system
* 3.8.20 (set by PYENV_VERSION environment variable)

python3 -V

Python 3.8.20

创建虚拟环境, 并安装manimgl

mkdir ~/venv; cd ~/venv# 1.创建虚拟环境
python3 -m venv manimgl_3.8# 2.加载环境
source manimgl_3.8/bin/activate# 3.安装manimgl
pip3 install manimgl

运行: manimgl
ubuntu22.04成功
ubuntu24.04失败

汇总

使用两台电脑验证, 测试验证

  1. 降低manimgl版本
  2. conda安装

都遇到相同的问题.

最后只能在wsl ubuntu22.04 + python3.8 成功运行

4.总结

  1. 熟悉了python 版本管理: pyenv, conda
  2. 熟悉了python 环境管理: venv, virtualen
  3. manimgl版本是原作者更新, 测试不齐全, 建议使用manimCE 社区维护版制作动画视频
  4. windows未测试
  5. 动手能力强的, 强烈推荐使用manimgl即时演绎 + 交互, 可以用于实时演示

相关文章:

python manimgl数学动画演示_微积分_线性代数原理_ubuntu安装问题[已解决]

1.背景 最近调研python opencv, cuda加速矩阵/向量运算, 对于矩阵的线性变换, 秩, 转秩, 行列式变化等概概念模糊不清. 大概课本依旧是天书, 于是上B站搜索线性代数, 看到 3Blue1Brown 线性变换本质 视频, 点击观看. 惊为天人 --> 豁然开朗 --> 突然顿悟 --> 开心不已…...

【vue3】@click函数传动态变量参数

根据java的学习&#xff0c;摸索了一下vue3 函数传参的方式。以此作为记录。有更好的其它方式&#xff0c;可以评论区补充。 <script> const tmpref(); </script><button click"tmpFunction(传递参数:tmp)">按钮</button> // 直接【字符串…...

用matplotlib生成一个炫酷的爱心

下面是结合数学方程和可视化技巧&#xff0c;生成一个炫酷的爱心效果&#xff1a; import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # 创建画布 fig plt.figure(figsize(8, 8)) ax plt.axes(xlim(-2.5, 2.5), ylim(-3,…...

【leetcode hot 100 300】最长递增子序列

错误解法&#xff1a;在每次更新db[i]时&#xff0c;如果当前nums[i]>nums[i-1]就db[i-1]1&#xff0c;否则db[i-1] class Solution {public int lengthOfLIS(int[] nums) {int n nums.length;int[] db new int[n]; // db[i]表示到i的最长严格递增子序列的长度db[0] 1;f…...

oracle 12c密码长度,复杂度查看与设置

一 密码长度和复杂度 Oracle 数据库通过 PASSWORD_VERIFY_FUNCTION 来控制密码复杂度。 1.1 查看当前的密码复杂度设置 SELECT * FROM dba_profiles WHERE resource_name PASSWORD_VERIFY_FUNCTION; LIMIT表示分配给该 PROFILE 的密码验证函数名称。如果为 NULL&#xff0c;…...

数据结构——哈希技术及链地址法

目录 一、哈希的定义 二、哈希冲突定义 三、构造哈希函数的方法 四、四种解决哈希冲突的方法 4.1 开放地址法 4.2 链地址法 4.3 再散列函数法 4.4 公共区溢出法 五、链地址法结构体设计 六、基本操作的实现 6.1 哈希函数 6.2 初始化 6.3 插入值 6.4 删除值 6.5 查…...

开源CMS的模块化设计和API接口如何具体影响其扩展性?

优秀的CMS系统都有自己主打的特点&#xff0c;开源CMS凭借其灵活性和低成本优势占据了市场主流地位&#xff0c;而模块化设计与API接口正是其扩展性的两大基石。本文将深入探讨这两大技术特性是如何影响cms的扩展性的。 一、模块化设计&#xff1a;功能解耦与生态繁荣的引擎 …...

【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书

【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书 引言 Certbot 是一个免费的开源工具&#xff0c;用于自动化管理和获取 SSL/TLS 证书&#xff0c;主要用于与 Let’s Encrypt 证书颁发机构交互。 步骤 Nginx 挂载 certbot 文件夹。 docker run -d \--name…...

Redis下载稳定版本5.0.4

https://www.redis.net.cn/download/ Redis下载 Redis 版本号采用标准惯例:主版本号.副版本号.补丁级别,一个副版本号就标记为一个标准发行版本,例如 1.2,2.0,2.2,2.4,2.6,2.8,奇数的副版本号用来表示非标准版本,例如2.9.x发行版本是Redis 3.0标准版本的非标准发行版本…...

Google Chrome下载受限制的解决方案【方法指南】

在国内使用网络时&#xff0c;部分用户在尝试访问Google Chrome官网下载谷歌浏览器时&#xff0c;常常遇到网页无法打开或文件下载失败的情况。这种下载受限制的问题多由网络访问政策或DNS解析异常导致。为了正常获取Google Chrome的最新版安装程序&#xff0c;用户需要通过一些…...

Linux关于git上传大文件的解决方案:使用Git LFS

最近想要上传sdk到gitlab仓库上&#xff0c;但是使用git push的时候发现限制文件上传的大小限制到了100MB。 保持当前仓库的干净&#xff0c;要么重新拉取&#xff0c;要么git reset HEAD^ --hard这个命令来重新进行commit&#xff0c;直到撤回到代码上显示没有commit的地方为止…...

JAVA后端八股面试经验总结-前言篇

1️⃣个人暑期实习面试情况 暑期实习面试告一段段落了 陆陆续续大小厂有20&#xff0b;Java后端开发的面经 2️⃣为什么要写这个呢&#xff1f; ①首先&#xff0c;了解最重点的面试最爱问的题型有哪些&#xff1f; 我会整理出我面到过至少2次的题目和回答方式&#xff0…...

《计算机名人堂》专栏介绍:先驱之路

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 &#x1f31f;引言&#xff1a;先驱之路一、出发点&#xff1a;讲述数字世界的缔…...

参照Spring Boot后端框架实现序列化工具类

本文参照Jackson实现序列化工具类&#xff0c;旨在于简化开发 JacksonUtil.class public class JacksonUtil {private JacksonUtil() {}/*** 单例*/private final static ObjectMapper OBJECT_MAPPER;static {OBJECT_MAPPER new ObjectMapper();}private static ObjectMappe…...

mysql 删除表等待

今天有个表加字段&#xff0c;语句是先删除&#xff0c;后重新建&#xff0c;表没有数据 &#xff0c;但是删除一个表的时候&#xff0c;语句drop table 提示超时 show processlist 后&#xff0c;等待类型是 Waiting for table metadata lock 取消重试几次后仍然是如此…...

MCP工具的配置文件格式是怎么样的?MCP教程平台推荐

MCP&#xff08;Model Context Protocol&#xff09;配置文件是AI开发中连接MCP服务器的核心文件&#xff0c;采用JSON格式定义服务参数。它广泛应用于Cursor、ChatWise等AI开发工具&#xff0c;帮助开发者快速配置本地或远程MCP服务。本文将深入解析MCP配置文件的结构、获取方…...

网络安全法规与入门指南

在当今数字化时代&#xff0c;网络安全已成为保障个人隐私、企业利益和国家安全的关键领域。随着网络攻击的日益复杂和频繁&#xff0c;了解和遵守网络安全法规变得尤为重要。本文将深入探讨网络安全相关法规&#xff0c;并为想要进入这一领域的读者提供实用的入门指南。 一、…...

医院访客登记如何做才能更高效?

在医院工作过的朋友&#xff0c;大概都有过这样的体验&#xff1a;一到探视时间&#xff0c;门诊大厅、病房入口就开始拥堵&#xff0c;尤其是一些管控较严的科室&#xff0c;如ICU、手术区、儿科病房&#xff0c;来访人员必须逐一登记信息。人一多&#xff0c;就容易出错、漏登…...

学习笔记五——Rust 控制流全解析

&#x1f4da; 目录 什么是控制流&#xff1f;Rust 有什么特别&#xff1f;if 表达式完整语法loop / while / for 三种循环写法match 表达式 _ 通配符深入解释if let 表达式用法与场景Option、Some、None 全面通俗讲解 "Tom" 和 "Tom".to_string() 有啥本…...

我的Hexo自动Webhook部署方案

前言 最近我也是重新开始管理我的博客网站了&#xff0c;之前大概有了半年的时间没有写文章了。也是经过这半年的学习&#xff0c;我了解的知识更多&#xff0c;更广了。 当我开始写 Hexo 博客的时候&#xff0c;首先我得把 Markdown 文件内容拷贝到服务器上&#xff0c;然后写…...

智慧医院室内导航系统架构拆解:技术选型与性能攻坚指南

本文面向医院信息化团队技术负责人及医疗IoT解决方案开发者&#xff0c;聚焦解决大规模院区导航系统的扩展性、多源数据融合及实时路径规划等技术难点&#xff0c;提供从架构到落地的完整技术路线图。 如需获取智慧医院导航导诊系统解决方案请前往文章最下方获取&#xff0c;如…...

Docker:安装与部署 Nacos 的技术指南

1、简述 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个动态服务发现、配置管理和服务治理的综合解决方案,适用于微服务架构。 Nacos 主要功能: 服务发现与注册:支持 Dubbo、Spring Cloud 等主流微服务框架的服务发现与注册。动态配置管理:支持…...

【大模型理论篇】关于生成式模型中联合分布概率学习必要性以及GPT是生成式模型的讨论

1. 背景 之前我们在《生成式模型与判别式模型对比(涉及VAE、CRF的数学原理详述)》以及《生成式模型算法原理深入浅出&#xff08;涉及Stable Diffusion、生成对抗网络、高斯混合模型、隐马尔可夫模型、朴素贝叶斯等算法原理分析及生成式模型解释&#xff09;》中&#xff0c;我…...

tailwindcss 4 使用的一些注意点

目录 一、tailwindcss 4 官网地址变更了 二、自定义颜色的使用方式 三、安装的时候可能的报错 一、tailwindcss 4 官网地址变更了 之前的官网地址是&#xff1a;Tailwind CSS 中文网 现在的官网地址是&#xff1a;Tailwind CSS - Rapidly build modern websites without e…...

案例分析:东华新径,拉动式生产的智造之路

目录 文章目录 目录南京东华智能转向系统有限公司是一家什么公司&#xff1f;背景知识&#xff1a;新能源汽车生产制造流程简介东华遇见了什么问题&#xff1f;东华希望如何解决&#xff1f;解决思路&#xff1a;从 “推动式生产” 到 “拉动式生产”&#xff0c;从 “冗余式思…...

stm32工程,拷贝到另一台电脑编译,错误提示头文件找不到cannot open source input file “core_cm4.h”

提示 cannot open source input file “core_cm4.h” ,找不到 [ core_cm4.h ] 这个头文件 . 于是我在原电脑工程文件里找也没有找到这个头文件 接下来查看原电脑keil的头文件引入配置,发现只引入了工程文件下的头文件, 那么core_cm4.h到底哪里来的? (到现在我也不清楚怎…...

无锡东亭无人机培训机构电话

无锡东亭无人机培训机构电话&#xff0c;随着科技的迅猛发展&#xff0c;无人机逐渐走入我们的生活和工作领域&#xff0c;成为多种行业中不可或缺的工具。而在其广泛的应用中&#xff0c;如何正确、熟练地操控无人机成为了关键。因此&#xff0c;找到一家专业的无人机培训机构…...

Linux操作系统的计算机体系结构与网络安全的深度关联

在当今数字化时代&#xff0c;Linux操作系统因其开源、稳定和安全性而被广泛应用于服务器、嵌入式系统和云计算等领域。本文将深入探讨Linux的计算机体系结构&#xff0c;并分析其在网络安全中的关键作用。 一、Linux的计算机体系结构 &#xff08;一&#xff09;基于冯诺依曼…...

大厂文章阅读

1.异步任务处理系统&#xff0c;如何解决业务长耗时、高并发难题&#xff1f; 1)任务失败如何处理(CAS失败也可用)&#xff1a;1.指数退避,匹配下游任务执行系统的处理能力。比如收到下游任务执行系统的流控错误&#xff0c;或者感知到任务执行成为瓶颈&#xff0c;需要指数退…...

卷积神经网络 CNN 系列总结(二)---数据预处理、激活函数、梯度、损失函数、优化方法等

数据预处理 零中心化、归一化 关于数据预处理我们有3个常用的符号,数据矩阵X,假设其尺寸是[N x D](N是数据样本的数量,D是数据的维度)。 均值减法(Mean subtraction)是预处理最常用的形式。它对数据中每个独立特征减去平均值,从几何上可以理解为在每个维度上都将数据…...