本课程专注于机器学习的算法学习,关注于监督学习。
kNN 线性回归 多项式回归 逻辑回归 模型正则化 PCA SVM 决策树
随机森林 集成学习 模型选择 模型调试
scikit—learn机器学习库
numpy、matplotlib
数据的预处理。
数据:
多分类:1.一些算法只支持完成二分类的任务。
- 多分类的任务可以转换为二分类的任务。
多标签分类
回归任务:结果是一个连续数字的值,并非一个类别(如房屋价格、市场分析)
流程:
输入大量学习资料->机器学习算法->模型f(x)(输入样例)->输出结果。
多分类:
数字识别、图像识别、判断发给客户信用卡的风险评级。
多标签分类
监督学习:主要处理的是分类、回归问题,给机器的训练数据拥有“标记”或者“答案”
非监督学习
半监督学习:一部分数据有“标记”或者“答案”,另一部分数据没有。
更常见:各种原因产生的标记缺失
增强学习:根据周围环境的情况,采取行动,根据采取行动的结果,学习行动方式。
批量学习:
优点:简单
问题:如何适应环境变化
解决方案:定时重新批量学习
缺点:每次重新批量学习,运算量巨大;在某些环境变化非常快的情况下,甚至是不可能的(如股市)
在线学习:
优点:及时反映新的环境变化
问题:新的数据可能带来不好的变化
解决方案:需要加强对数据的监控
也适用于数据量巨大,完全无法批量学习的环境。
参数学习:一旦学到了参数,就不再需要原有的数据集。
非参数学习:不对模型进行过多假设,也可能有参数,不代表没参数。
数据确实非常重要,数据驱动
收集更多的数据,提高数据质量,提高数据的代表性,研究更重要的特征。
奥卡姆的剃刀:简单的就是好的。
没有免费的午餐定理:可以严格地数学推导出:任意两个算法,它们的期望性能(平均性能)是相同的。
Jupyter notebook高级—魔法命令
初始化方式:
i for i in range(10)
np.arange(0,1,0.2)
linspace(0,20,10):表示在0到20的区间里,等长的截出10个点,包含了起始点和终止点。
np.random.randint(4,8,size = 10)
np.random.seed(666):设置随机的种子。
np.random.random()
np.random.normal(10,100):生成均值为10,方差为100的浮点数。
%%time:可以用来计算运行的时间
- dot(B):表示矩阵之间的除法
np.linalg.inv(A):求A的逆矩阵
pinvX = np.linalg.pinv(X):求伪逆矩阵
伪逆矩阵乘原矩阵得到方阵。
聚合操作:
把一组值变为一个值。
np.sum(X,axis = 0):表示每一列的和
np.mean(X):求平均值
np.var(big_array):求方差
索引:
np.argmin(x):最小值所在的索引
ind = [3,5,8]
x[ind]