机器学习类型
根据机器学习系统学习进行预测或生成内容的方式,机器学习系统可分为以下一个或多个类别:
- 监督式学习
- 非监督式学习
- 强化学习
- 生成式 AI
- 实现机器学习的一般步骤:
- 数据收集
- 数据准备
- 数据分析
- 训练算法
- 测试算法
- 应用算法
数据
训练集、验证集、测试集
在 Linux 中配置 Python 项目的运行虚拟环境通常使用 venv
(虚拟环境)模块。以下是一般的步骤:
安装 venv 模块(如果尚未安装):
检查你的 Python 版本并确保安装了 venv
模块。
创建虚拟环境:
在项目目录中,运行以下命令创建一个名为 myenv
的虚拟环境:
1 | python3 -m venv myenv |
这将在当前目录创建一个名为 myenv
的虚拟环境文件夹。
激活虚拟环境:
激活虚拟环境可通过以下命令:
1 | source myenv/bin/activate |
这将激活名为 myenv
的虚拟环境。激活后,你的终端提示符可能会显示虚拟环境的名称。
安装项目依赖:
在激活的虚拟环境中,使用 pip
安装项目所需的依赖:
1 | pip install -r requirements.txt |
其中 requirements.txt
是包含项目依赖项的文件。
退出虚拟环境:
当你完成项目工作后,可以通过以下方式退出虚拟环境:
1 | deactivate |
这将使虚拟环境退出,并恢复到系统默认环境。
使用虚拟环境有助于隔离项目的依赖,避免与系统其他项目的依赖冲突,并提供更干净的开发环境。
正常情况下虚拟环境 /path/to/venv/bin/ 下面是有 uvicorn 的启动命令的,即 /xxx/venv/bin/uvicorn
uvicorn
,可通过1 | python -m uvicorn xxx:app --reload |
1 | pip install --force-reinstall uvicorn |
1 | # 查看当前版本 |
.python-version
文件中体现reference
功能 | macos | linux |
---|---|---|
新建session | tmux new -s |
一样 |
功能 | macos | linux |
---|---|---|
功能 | macos | linux |
---|---|---|
调整窗格大小 | Ctrl + b, Esc + 方向键 | Ctrl + b, Ctrl + 方向键 |
窗格内容翻页 | Ctrl + b, Fn + 上下键 | Ctrl + b, Ctrl + 上下键 |
功能 | macos | linux |
---|---|---|
内嵌tmux操作 | 按着 ctrl,点击两次 b 键 | 一样 |
ctrl + b
然后按下:
创建会话
new-session -s <session name>
切换会话
switch-client -t <session name or id>
交换窗口位置
1 | # 交换编号3与编号1窗口的位置 |
新建窗口
new-window -n <window name>
切换窗口
select-window -t <window id>
select-window -n <window name>
分割窗格
split-window -h
水平
split-window -v
垂直
配置文件地址~/.tmux.conf
修改配置生效 tmux source-file ~/.tmux.conf
1 | # prefix表示是Tmux的快捷键前缀 |
1 | ~/.tmux/plugins/tpm/bin/install_plugins # 安装件列表中的插件 |
默认会话数据路径 /.local/share/tmux/resurrect
1 | 保存Tmux会话:前缀键 + Ctrl-s |
S (单一职责原则 Single responsibility principle)
O (开放-关闭原则 Open–closed principle)
L (里氏替换原则 Liskov Substitution Principle)
I (接口隔离原则 Interface Segregation Principles)
D (依赖倒置原则 Dependency Inversion Principle)
1 | # 毫秒值 |
__call__函数
__call__
方法是 Python 中的一个特殊方法(也称为魔术方法),用于将一个对象作为函数调用。当一个对象被作为函数调用时,Python 解释器会自动调用该对象的 __call__
方法。
在类中定义 __call__
方法可以使对象具有可调用的行为,就像调用函数一样。这样的对象被称为可调用对象。通过实现 __call__
方法,我们可以在对象被调用时执行特定的逻辑。
以下是一个示例,展示了如何定义和使用 __call__
方法:
1 | class CallableClass: |
在上面的示例中,我们定义了一个名为 CallableClass
的类,并在其中实现了 __call__
方法。当创建 CallableClass
的实例 obj
并将其作为函数调用时,__call__
方法会被自动调用,并打印出 “Object is being called”。
需要注意的是,__call__
方法可以带有参数,就像普通的函数一样。我们可以在 __call__
方法中定义任意的逻辑,可以访问实例的属性、调用其他方法等。
使用 __call__
方法可以使对象具有类似函数的行为,这在某些情况下非常有用,例如实现可调用的类或实现函数式编程的概念。
**
使用**
运算符用于解包字典或关键字参数。当应用于字典时,**
运算符可以将字典中的键值对解包为一系列关键字参数传递给函数或方法。
1 | def print_person_info(name, age, city): |
虽然所有用户类实例的布尔值都是真。但是 Python 提供了改变这个行为的办法:自定义类的 __bool__
魔法方法 (在 Python 2.X 版本中为 __nonzero__
)。当类定义了 __bool__
方法后,它的返回值将会被当作类实例的布尔值。
另外,__bool__
不是影响实例布尔真假的唯一方法。如果类没有定义 __bool__
方法,Python 还会尝试调用 __len__
方法(也就是对任何序列对象调用 len
函数),通过结果是否为 0
判断实例真假。
all()
和 any()
两个函数非常适合在条件判断中使用。这两个函数接受一个可迭代对象,返回一个布尔值,其中:
all(seq)
:仅当 seq
中所有对象都为布尔真时返回 True
,否则返回 False
any(seq)
:只要 seq
中任何一个对象为布尔真就返回 True
,否则返回 False
1 | def multiply(x, y): |
可写成
1 | import functools |
Mixin 是面向对象编程中的一个术语,它表示一种设计模式,用于将一组功能或行为以模块化的方式添加到类中,而不需要使用继承的方式。
1 | class SendMailMixin: |
Mixin和abc.ABC的区别:
1 | for i, name in enumerate(names): |
cls
1 | @classmethod |
总结一下,dataclass主要提供了以下几方面的功能:
自动生成构造函数和基本方法
__init__
构造函数__repr__
、__eq__
等基本方法数据字段管理
数据类行为定制
__post_init__
方法做数据校验__repr__
方法__hash__
方法用于哈希性能优化
__slots__
优化内存使用与静态类型检查工具结合
继承和嵌套
通过这些功能,dataclass可以极大简化数据类的定义和使用,减少样板代码。它使得创建数据类变得高效和优雅,同时还提供了足够的定制空间。无论是简单的数据持有对象还是复杂的数据结构,dataclass都能发挥它的优势,提高代码的可读性和可维护性。
*args
接收并处理所有传递进来的位置参数,**kwargs
接收并处理所有传递进来的关键字参数。