1.全局变量应尽量避免使用
2.局部比全局变量快
3.局部变量和全局变量一样是,系统自动使用局部变量
4.局部变量通过产生栈帧临时保存地址
5.在函数中用golbal声明,则局部变量变为全局变量
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()
degree:默认为2,输入的整数越大,升入的维度越高
ordinal:会返回一列特征
什么是正则化路径?
不同a对应的特征向量的参数的取值所对应的矩阵
eps, n_alphas作用?帮助生成很小的a的取值
岭回归和LASSO的评估指标?岭回归是R2,LASSO是MSE
参数alpha_和alphas_?最佳a、自动生成的a
岭回归和LASSO计算交叉验证结果的区别?
ridge.cv_values_.mean(axis=0)#跨行求均值
lasso.mse_path_.mean(axis=1)#跨列求均值
为什么要用LASSO特征选择?LASSO对alpha敏感
如何画一条水平的虚线?
sklearn.linear_model.Ridge(岭回归:线性回归的基础上加上正则项,以处理多重共线性)
1)核心参数alpha:正则项系数,默认1,增大以消除多重共线性带来的影响,但过大会削弱模型本来已有的信息
2)通过调节alpha,模型的泛化能力可能上升。但现实生活中,很少有带有多重共线性的数据,使用岭回归和lasso模型表现一般会降低,
3)泛化能力没有直接衡量指标,只能通过R²和方差来大致判断(var()查看方差,方差反映真实值和预测值的差距)
岭回归解决多重共线性
矩阵的逆存在的条件:行列式不为0
MSE和MSA
2、衡量是否拟合了足够的信息:R²,越接近1越好
1) from sklearn.metrics import r2_score
r2_score(ytest,yhat)
2) reg.score(xtest,ytest)
3) cross_val_score(reg,x,y,cv=10,scoring="r2").mean()
R²为负说明模型拟合十分糟糕
如何用sklearn.metrics中的roc_curve函数计算
y_true:真实标签
y_score:decision_function返回的距离or置信度分数or正类样本的概率
pos_label:填上1,表示1为正样本
返回FPR,recall和阈值
如何计算auc?
from sklearn.metrics import roc_auc_score
roc_auc_score(y,clf.decision_function(x))
ROC曲线上如何画x=y的直线?
plt.plot([0,1],[0,1],linestyle="--",c="black")
SVM实现概率预测:重要参数probabiity,接口decision_function
重要参数probabiity:布尔值,默认为False,是否启用概率估计,启用后可以调用predict_prob和predict_log_proba接口。该功能会减慢SVM运算速度
接口decision_function返回SVM的置信度(衡量样本有多大可能属于某一类)
对二维数据decision_function生成距离,是一维,表示每个点到决策边界的距离,predict_proba生成两列的概率,是二维
SVM实现概率预测