目录
数据清洗和特征选择
- pandas:Fuzzywuzzy-Levenshtein distance 模糊查询与替换
#素数
#方法一
t=time()
p=[p for p in range(a,b) if 0 not in [p%d for d in range(2,int(math.sqrt(p)+1))]]
print time()-t #运算时间
print p
#方法二:利用filter
t=time()
p=flter(is_prime,range(a,b))
print time()-t #运算时间
print p
def is_prime(x):
return 0 not in [x%i for i in range(2,int(math.sqrt(x))+1)]
#方法三:利用filter()和lambda函数
t=time()
is_prime2=(lambda x:0 not in [x%i for i in range(2,int(math.sqrt(x))+1)])
p=filter(is_prime2,range(a,b))
print(time()-t)
print p
#方法四:定义
t=time()
p_list=[]
for i in range(2,b):
flag=True
for p in p_list:
if p>math.sqrt(i):
break
if i%p==0:
flag=False
break
if flag:
p_list.append(i)
print(time()-t)
print p_list
#方法五:定义和filter()
p_list2=[]
t=time()
filter(is_prime3,range(2,b))
print(time()-t)
print p_list2
def is_prime3():
flag=Ture
for p in p_list2:
if p>math.sqrt(x):
break
if x%p==0:
flag=False
break
if flag:
p_list2.append(x)
return flag
回归
线性回归
- 线性回归:y=ax+b
- 多变量的情形:
- 合理的假设是合理的模型的必要前提,假设具有三个性质:内涵性、简化性、发散性
1)内涵性:即假设根据常理应该是正确的,假设往往是正确的但不一定总是正确的
2)简化性:假设只是接近真实,往往需要若干简化
3)发散性:在某个简化的假设下推导得到的结论,不一定只有在假设成立时结论才能成立 - 使用极大似然估计解释最小二乘法
- 中心极限定理的意义:很多随机现象可以看作众多因素的独立影像的综合反映,往往近似正态分布。<注意:应用前提是多个随机变量之和,当一些问题是乘性误差,则需要鉴别或取对数后使用>
- sigma的解析式求解过程
- 最小二乘意义下的参数最优解
- Moore-Penrose广义逆矩阵
- 线性回归可以对样本非线性,只要对参数线性
局部加权线性回归
Logistic回归
多分类softmax回归
技术点
梯度下降算法
- 最大似然估计
- 特征选择
回归实践
AUC
决策树与随机森林
信息熵
- 条件熵
决策树的学习算法
- 决策树学习算法的特点:有监督学习,即从一类无序、无规则的事物中推理出决策树表示的分类规则
- 决策树学习的生成算法:关键是在当前状态下选择哪个属性作为分类依据,根据不同的目标函数,建立决策树主要有三种算法
1)ID3:iterative dichotomiser,信息增益
2)C4.5
3)CART:classification and regression tree
信息增益
gini
决策树的评价
Bagging与随机森林
- 决策树的过拟合:决策树对于训练数据具有较好的分类能力,但对于位置测试数据的分类能力较弱,即泛化能力较弱,可能发生过拟合的现象。
- 解决决策树的过拟合现象:剪枝、随机森林
剪枝
- 三种决策树的剪枝算法相同,区别在于当前树的评价标准不同
- 剪枝的总体思路:
-由完全树T0开始,剪枝部分结点得到T1,剪枝部分结点得到T2…直至仅剩树根的树Tk
-在验证数据集上对k个树分别评价,选择损失函数最小的树Ta
Bagging
随机森林
提升
adaboost 算法
其他
filter()函数
- filter()函数:从可迭代对象中筛选一些元素,并生成一个新的迭代器。可通过for循环进行使用
- 基本语法:filter(function, iterable)
- filter()不同的用法:
1)在filter()中使用特殊函数。
-filter()第一个参数即函数,用来决定第二个参数所引用的可迭代对象中每一项的去留。
-例如filter()与lambda函数结合使用,filter(lambda item: item[] expression, iterable)
2)在filter()中使用None:将None作为filter()第一个参数,让过滤器过滤掉布尔值为False的对象。
3)将filter()用于复杂场景
pipeline()函数
- sklearn.pipeline()模块中的函数:带有最终评估器的转移管道,运用一系列的转换操作和一个最终的评估器。
- 管道中转换器可以使用内存参数进行缓存
- 管道的目的是组装几个步骤,步骤可以设置不同的参数进行交叉验证
- 输入参数:
1)参数名:steps
2)类型:list
说明:元组(实现fit/transform)的列表,按照被连接的顺序排列,最后一个对象是估计器1)参数名:memory
2)类型:NONE,str or object with the job lib.Memory interface, optional
说明:用于缓存管道的被训练的转换器。默认情况下,不执行缓存,如果给定的是一个字符串,那么得到缓存目录的路径。启用缓存可以在拟合之前出发转换器的克隆。因此,管道的转换器实例不能直接转换,使用named_steps或者步骤来检查管道内的估计器
-name_steps:只读属性,可通过用户给定的名字访问任何步骤。键是步骤名称,值是步骤的参数