\续行符
\n换行符
\'单引号
\"双引号
\b退格一次
str*3,复制字符串3次
end=" "
\续行符
\n换行符
\'单引号
\"双引号
\b退格一次
str*3,复制字符串3次
end=" "
ord("str")字符换unicode
chr("数字")数字换字符
''' '''创建多行字符串
同一运算
is,is not 判断两个对象的内存地址是否一样
==判断两个对象值是否一样
两个对象可以值一样,地址不一样
由于整数缓存问题,赋值一样并在为-5到任意大整数的两个对象地址一样
true, false本质为1,0可以进行数字运算
==判断相等
!=不相等
true or anything, 短路返回true
flase or anything 返回anything
false and anything,短路返回false
true and anything, 返回anything
import math
math.sqrt
unix时间点1970.1.1,0点0分0秒,以毫秒计算
时间本质是数字
二进制0b
8进制0o
16进制0x
python整数没有大小限制
/浮点数除法
//取整数除法
%取余数
**幂
解包复制
a,b=10,20
a,b=b,a实现互换
python不支持常量
变量和赋值语句:
a = 3
删除变量:
del a
变量被删了,但是堆里的对象仍然在,只不过没有用了,进而被拉进回收站回收,可以释放空间。
标识符:用于表示变量/函数/类/模块等名称
1.区分大小写
2.第一个字符必须是字母,下划线,其后的字符只能是字母/数字和下划线,其他的不行
3.不能使用关键字(这个太重要了,以前就犯过这样的错)
4.以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法
用del删除变量
对象无变量引用时会被清出内存
变量即对象的引用
变量在栈内,对象在堆内
python变量不需声明,调用对象即可
对象即内存块
对象3要素:内存地址即ID/数据类型即type/数据值即value
赋值即时对象地址传递给变量
nonlocal
声明外层的局部变量
global
### 对于LightGBM:又轻又快
在不降低准确率的前提下,速度提升了10倍左右,占用内存下降了3倍左右。因为它是基于决策树算法的,它采用最优的==叶明智==策略分裂叶子节点,然而它的提升算法分裂树一般采用的是深度方向或者水平明智。因此,当增长到相同的叶子节点,叶明智算法比水平-wise算法减少更多得损失。因此导致更高的精度。
J_\theta=-l(\theta)
### logistic函数:通过回归进行分类
### logistic回归的过程
- 1) 找到一个合适的预测函数,一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程是非常关键的,需要对数据有一定的了解和分析,知道或者猜测预测函数的大概形式,比如是线性函数还是非线性函数。
- 2)构造一个loss损失函数,该函数表示预测的输出与训练数据类别之间的偏差。可以是二者之间的差或者是其他的形式。综合考虑所有训练数据的损失,将loss求和或者求平均,记为J(theta)函数,表示所有训练数据预测值与实际类别的偏差。
- 3)显然,J函数的值越小表示预测函数越准确。所以这一步需要做的是找到J函数的最小值。找到最小值有不同的方法。如梯度下降法。
# 线性回归
## 方程y=Ax
## 最小二乘法(平方)Least Squares Method
\sum_(n=1)^N(y-y_i)^2
w\hat=(\pmb{X^T}\pmb{X})^-1\pmb{X^T}y
> 让平方误差最小
集成算法
- bagging:套袋法
- boosting:提升算法:增大错误样本的权重同时减小正确样本的权重。与bagging对比boosting可以同时降低偏差和方差,而bagging只能降低模型的方差。但boosting更加容易过拟合。
- 随机森林:应用bagging和多颗决策树
- 梯度提升树
- adaboost:
> adaboost算法与boost算法不同,它是使用整个训练集来训练弱学习器,其中训练样本在每次迭代的过程中都会重新被赋予一个权重,在上一个弱学习器错误的基础熵进行学习来构建一个更加强大的分类器。