plot_document_classification_20newsgroups
分类特征稀疏的文本 翻译者:@Loopy校验者:@barrycg 这个示例展示了如何使用scikit-learn中的单词包方法,根据主题对文档进行分类。本例使用scipy.sparse中的矩阵来存储特征,并演示各种能够有效处理稀疏矩阵的分类器。 本例中使用的数据集是20条新闻组数据集。通过scikit-learn可以自动下载该数据集,并进行缓存。 下述条形图展示了各个不同分类器,其信息包括精度、训练时间(已归一化)和测试时间(已归一化)。 123456789101112131415161718192021222324import loggingimport numpy as npfrom optparse import OptionParserimport sysfrom time import timeimport matplotlib.pyplot as pltfrom sklearn.datasets import fetch_20newsgroupsfrom sklearn.feature_extraction.text import TfidfVectorizerfr...
plot_lasso_and_elasticnet
Lasso和Elastic Net(弹性网络)在稀疏信号上的表现 翻译者:@Loopy校验者:@barrycg 评估了Lasso回归模型和弹性网络回归模型在手动生成的,并附加噪声的稀疏信号上的表现,并将回归系数与真实值进行了比较。 12345678910import numpy as npimport matplotlib.pyplot as pltfrom sklearn.metrics import r2_score# 产生一些稀疏值np.random.seed(42)n_samples, n_features = 50, 100X = np.random.randn(n_samples, n_features) 12345# 减少交替出现的符号以使其便于可视化idx = np.arange(n_features)coef = (-1) ** idx * np.exp(-idx / 10)coef[10:] = 0 # sparsify coefy = np.dot(X, coef) 12# 添加噪音y += 0.01 * np.random.normal(siz...
plot_lasso_coordinate_descent_path
Lasso和Elastic Net(弹性网络) 翻译者:@Loopy校验者:@barrycg 使用坐标下降实现Lasso和Elastic Net(弹性网络)(L1和L2罚项)。 回归系数可以被强制设定为正。 123456from itertools import cycleimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import lasso_path, enet_pathfrom sklearn import datasets 12345diabetes = datasets.load_diabetes()X = diabetes.datay = diabetes.targetX /= X.std(axis=0) # 标准化数据(使得l1_ratio参数更容易被设置) 123456789101112131415161718# 计算路径eps = 5e-3 # 它越小,路径就越长print("使用lasso计算正则化路径...")alphas_...
plot_lasso_model_selection
Lasso模型选择:交叉验证 / AIC / BIC 翻译者:@Loopy校验者:@barrycg 本示例利用Akaike信息判据(AIC)、Bayes信息判据(BIC)和交叉验证,来筛选Lasso回归的正则化项参数alpha的最优值。 通过LassoLarsIC得到的结果,是基于AIC/BIC判据的。 这种基于信息判据(AIC/BIC)的模型选择非常快,但它依赖于对自由度的正确估计。该方式的假设模型必需是正确, 而且是对大样本(渐近结果)进行推导,即,数据实际上是由该模型生成的。当问题的背景条件很差时(特征数大于样本数),该模型选择方式会崩溃。 对于交叉验证,我们使用20-fold的2种算法来计算Lasso路径:LassoCV类实现的坐标下降和LassoLarsCV类实现的最小角度回归(Lars)。这两种算法给出的结果大致相同,但它们在执行速度和数值误差来源方面有所不同。 Lars仅为路径中的每个拐点计算路径解决方案。因此,当只有很少的弯折时,也就是很少的特征或样本时,它是非常有效的。此外,它能够计算完整的路径,而不需要设置任何元参数...
plot_multi_task_lasso_support
多任务Lasso实现联合特征选择 翻译者:@Loopy校验者:@barrycg 多任务lasso允许多元回归问题上进行合并训练,并在多个任务间强制选择相同的特征。这个示例模拟了部分序列测量,每个任务都是即时的,并且相关的特征幅值趋向相同时,又会随时间变化而震动。多任务lasso强制要求在一个时间点选择的特征必需适用于所有时间点。这使得多任务LASSO的特征选择更加稳定。 1234import matplotlib.pyplot as pltimport numpy as npfrom sklearn.linear_model import MultiTaskLasso, Lasso 123456789101112131415rng = np.random.RandomState(42)# 使用具有随机频率和相位的正弦波生成二维系数n_samples, n_features, n_tasks = 100, 30, 40n_relevant_features = 5coef = np.zeros((n_tasks, n_features))times = np.linspace...
plot_ols
线性回归 翻译者:@Loopy校验者:@barrycg 本例仅使用糖尿病数据集的第一个特征,来展示线性回归在二维空间上的表现。下图中的直线, 即是线性回归所确定的一个界限,其目标是使得数据集中的实际值与线性回归所得的预测值之间的残差平方和最小。 同时也计算了回归系数、残差平方和以及解释方差得分,来判断该线性回归模型的质量。 原文解释和代码不符合: 实际上计算了回归系数, 均方误差(MSE),判定系数(r2_score) 判定系数和解释方差得分并不绝对相等,当实际值和预测值之间的误差均值为0时,两者相同,否则数值上有着略微误差。均方误差和残差平方和虽然都是定义预测值和实际值的偏离关系,但是数值大小的差距较大。 解释方差得分函数: explained_variance_score()。 1234import matplotlib.pyplot as pltimport numpy as npfrom sklearn import datasets, linear_modelfrom sklearn.metrics import mean_squared_error,...
plot_ridge_path
岭系数对回归系数的影响 翻译者:@Loopy校验者:@barrycg 本实例展示了回归模型系数间的共线性。 岭回归 是本例中使用的预测模型。每种颜色都分别表示不同特征下的回归系数向量,岭系数alpha是正则化项的参数。下图表示了岭系数作为变量参数,回归系数在岭回归模型中的变化。 这个示例还显示了将岭回归应用于高病态矩阵的有效性。在高病态矩阵中,一些变量的微小变化会导致计算权重(回归系数)的巨大差异。在这种情况下,设置一个确定的正则化项(alpha)可以减少这种不良差异(噪声)。 当alpha很大时,正则化项是平方损失函数的主要影响因子,回归系数的影响趋于零。在路径的末端,当alpha趋近零时,损失函数会慢慢变成普通最小二乘,回归系数表现出较大的波动。在实践中,有必要对alpha进行调优,以便在两者之间保持平衡。 123import numpy as npimport matplotlib.pyplot as pltfrom sklearn import linear_model 123# X 是10x10的希尔伯特矩阵X = 1. / (np.arange(1, 11) +...
plot_tomography_l1_reconstruction
压缩感知_断层重建 翻译者:@Loopy校验者:@barrycg 这个示例展示了从一组沿不同角度获得的平行投影来重建图像的过程。这样的数据集是在CT(计算机断层扫描)中获得的。 在没有任何样本得先验信息的情况下,重建图像所需的投影数与图像的线性大小l(以像素为单位)相同。为了简单起见,我们在这里考虑稀疏图像,其中只有对象边界上的像素具有非零值(例如:这些数据可以对应于细胞材料)。但是请注意,大多数图像在不同的基(basis)上是稀疏的,比如Haar小波 。只获得了l/7的投影,因此有必要利用关于样品的现有信息(稀疏性):这是压缩感知的一个示例。 层析投影操作是一种线性变换。除了线性回归对应的数据保真项外,我们还对图像的L1范数进行了惩罚,以解释其稀疏性。由此产生的优化问题称为Lasso。我们使用类sklearn.linear_model.Lasso,它是使用坐标下降算法实现的。重要的是,这种在稀疏阵上算法的计算效率比这里投影算子更高。 即使在投影中添加了噪声,L1罚项重建得到的结果也会是零误差(所有像素都被成功地标记为0或1)。相比之下,L2罚项(sklearn.li...
1 基础知识
程序设计的基础知识 程序的定义:为了完成某项任务解决某个问题,计算机及执行的一定的指令 计算机:实现程序的机器,Enia(宾夕法尼亚大学)-电子管-晶体管-集成电路 cup构成,冯诺依曼的计算机结构:输入设备-存储器-输出设备-控制器-计算器 人与机器的沟通 程序设计语言:汇编语言-低级语言-高级语言(python-Java) 分类:编译型语言source code -compiler- objectCODe。解释性语言sourcecode-interpreter-output 创始人:吉多·范·罗苏姆蟒蛇 python:解释性语言,可移植性强,执行效率低;设计哲学:优雅明确简单 第一个程序hello world ‘print python’ 命令行(Linux系统下)优点:无需创建文件,立即看到裕运行的结果 脚本IDE编辑器:适合编写大型程序更容易纠错,更容易修改和执行
2.1 深搜与广搜
树的遍历1 树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构).B是A的子结构, 即 A中有出现和B相同的结构和节点值。 链接 2 树的镜像 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 链接 3 对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 链接 4 二叉搜索树的第k大节点 给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 12345678输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2: 链接 5 二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 12345678给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 链接 6 平衡二叉树 输入一棵二叉树的根节...






