2.传递把不可变对象
不可变对象有字符串,数字,元组,function
传递不可变对象时,发生的运行逻辑,由于原对象不可变,会产生一个新的对象
2.传递把不可变对象
不可变对象有字符串,数字,元组,function
传递不可变对象时,发生的运行逻辑,由于原对象不可变,会产生一个新的对象
### 参数的传递
1.对可变对象进行写操作
a=[10,20] print(id(a)) print(a) def test01(m): print(id(m)) m.append(300) print(id(m)) test01(a) print(a)
1.全局变量应尽量避免使用
2.局部比全局变量快
3.局部变量和全局变量一样是,系统自动使用局部变量
4.局部变量通过产生栈帧临时保存地址
5.在函数中用golbal声明,则局部变量变为全局变量
返回值
1.默认返回None
2.结束函数运行
printMax(a,b):
形参,在定义时使用
实参,在调用时会用
1.括号内是形参列表,有多个参数要用逗号隔开
2.形参不需要声明类型,也不需要指定函数返回值类型
3.无参数,也必须保留空的圆括号
4.实参列表必须与形参列表一一对应
import turtle t=turtle.Pen() t.circle(50) t.penup() t.goto(0,-50) t.pendown() t.circle(100) t.penup() t.goto(0,-100) t.pendown() t.circle(150) turtle.done()
### 推导式创建序列
#### 列表推导式
[表达式 for item in 可迭代对象]
或者:{表达式 for item in 可迭代对象 if 条件判断}
也可以两个循环
```python
例子1:
y=[x*2 for x in range(1,50) if x%5==0] print(y)
例子2:
cells=[(a,b) for a in range(1,10) for b in range(1,10)] print(cells)
```
#### 字典推导式
{key_expression : value_expression for 表达式 in 可迭代对象}
```python
my_text="i love you,i love sxt,i love gaoqi" char_count={c:my_text.count(c) for c in my_text}#count()表示字符出现的次数 print(char_count)
```
#### 集合推导式
```python
b={x for x in range(1,100) if x%9==0} print(b)
```
#### 生成器推导式
一个生成器只能运行一次,迭代第一次后,再迭代就没有数据了
```python
a=(x for x in range(4)) print(tuple(a))#tuple是生成元组的意思
```
用zip()并行迭代
### 循环代码的优化
原则:
1.尽量减少不必要的计算
2.尽可能把东西往循环外面放
3.尽量使用局部变量
```python
import time start=time.time() for i in range(3000): result=[] for m in range(10000): result.append(i*1000+m*100) end=time.time() print("耗时:{0}".format(end-start)) start2=time.time() for i in range(3000): result=[] c=i*1000 for m in range(10000): result.append(c+m*100) end2=time.time() print("耗时:{0}".format(end2-start2))
```
### 其他优化手段
1.连接多个字符,使用join()而不使用+
2.列表进行元素插入和删除,尽量在列表尾部操作
3.zip()
几何概率:与构成事件的长、面积、体积 成比例;
几何概率特点:基本事件 的无限性(抽象)、等可能性;
古典概型特点:基本事件 的有限性(具象)、等可能性;
del 删除变量
同时调整多个参数,模型运行非常慢。更换数据预处理的方式。
I4
调参可以画学习曲线,或者进行网格搜索。模型调参,第一步找目标。
泛化误差:当模型在未知数据表现很差时,表明模型泛化能力不够。模型太简单和太复杂泛化误差都会很大。
偏差-方差困境。n_estimator增加,不影响单个模型的复杂度。调参方向:降低模型复杂度。
max_deph有增无减,模型复杂度增加。
当复杂度无法再降低时,就可以不用再tiaozhnegle
[*矩阵]查看列的索引。需要Ytest所带的索引,
使用随机森林填补缺失值。n个数据,特征T有缺失值,把特征T当作标签,作为训练集。遍历所有特征,缺失值最少的特征进行填补,因为一开始需要的缺失值最少。当进行到最后一行时,那么在弥补缺失值最多的数据时,就有足够多的准确数据了。
随机森林填补获取数据集时的缺失值。
sklearn.impute.SimpleImputer轻松填补数据缺失值。
随机森林的回归。
分类树与回归树,MSE均方误差。
回归树衡量指标mse、firedman_mse与MAE
sklearn使用负值的均方误差作为衡量指标,因为表示的是损失。
load_boston是一个标签连续型数据集。
regressor是模型
boston.data完整的矩阵、boston.target是标签。来回验证十次,scoring选择指标进行打分。
一半以上的决策树判断错误,才会导致随机森林才会判断错误。
comb是求和。
相同的训练集与参数,随机森林中的树会有不同的判断结果,选择重要的特征进行提问。
estimators,查看森林中树的参数或属性。每棵树中的random_state不一样,导致每棵树都不一样。
random_state固定,随机森林中的树是固定的,但随机挑选的特征,导致树是不一样。随机性越大,效果越好。
bootstrap用于控制抽样技术的参数。
自主集:从原始训练集中进行n次有放回抽样,得到的数据集。自主集会包含63%的原始数据集元素。剩下37%数据可以作为测试模型的数据,称为袋外数据。
wine.target为wine的标签。
一个自助集里,样本A永远不被抽到的概率:(1-1/n)^n
oob_score训练分数。
apply返回所在叶子节点的索引
predict_proba返回每个样本对应类别的标签的概率。