Fork me on GitHub
  1. python学习--itertools模块

    python学习:itertools

    itertools模块包含一系列迭代数据集的函数,如下三个表格:

    iterators

    下面挑常用的举例学习一下:

    itertools.count(start=0,step=1)和itertools.izip(*iterables)

    count()函数生成从start(default=0)开始的以step(default=1)为步长的连续整数, izip()函数将多个迭代器中的元素合并为一个元组并作为一个迭代器返回,类似于zip()函数 使用:

    In [1]: from itertools import *
    
    In [2]: for i in izip(count(7,2),['a','b','c']):
       ...:     print i 
       ...:     
    (7, 'a')
    (9, 'b ...
    read more
  2. 机器学习笔记--主成分分析(PCA)与奇异值分解

    特征值分解与奇异值分解

    svd-1

    svd-2

    PCA

    PCA的作用主要是分析数据主成分,降低数据维度,方便计算。数据降到1、2、3维之后还可以可视化。在对数据执行PCA处理之前要对数据进行预处理,使每个特征维度上的数据具有相同均值并归一化到同一范围内。

    #feature scaling
    scaler = StandardScaler()
    train_norm = scaler.fit_transform(train_data[0::,1::])
    test_norm = scaler.fit_transform(test_data)
    

    主成分个数的选择

    一般来说,我们根据方差百分比来选择要保留的主成分个数。如我们要保留99%的方差(以下示例为matlab代码):

    [u,s,v] = svd(x);
    k = 0; % Set k accordingly
    eigenvalues = diag(s);
    current_var = 0;
    total_var = sum(eigenvalues);
    while ...
    read more
  3. 机器学习笔记--线性回归

    线性回归模型是机器学习中最简单的一个有监督学习模型,所谓有监督学习,就是在给出的训练数据样本中已经标定了样本的目标信息(如类别,预测值),算法模型通过学习这些数据样本,得到能较好的应用于未标定类别数据样本的模型参数。 线性回归模型根据一个样本的输入特征给出这个样本的目标值/预测值, 举个例子

    我们要根据房子的面积和房间数预测房子的房价,如下表

    房子

    首先,给出一个初始的线性函数:

    初始线性函数

    其中‘theta下标i’是该线性函数从X映射到Y的参数(或者说是权重)。我们可以将X0看作1,所以:

    函数2

    在等式的右边,theta和x均为向量。 定义价值函数(cost function):

    公式3

    其中'X上标i'表示第i组输入数据,我们用J(theta)来衡量:对于每一组theta的值,它得出的预测值和实际上的y的值的接近程度。

    最小二乘法(LMS)

    我们要得到一组theta值使得J(theta)能最小化,可以使用梯度下降法(gradient descent):从某个初始theta值开始,然后重复改变theta使J(theta)更小,直到收敛:

    公式4

    :=表示赋值,alpha是学习因子,在实际中调整。 我们先考虑只有一个训练实例时 ...

    read more
  4. 机器学习笔记--逻辑斯蒂回归(logistic regression)

    logistic

    logistic regression实际上不是一个回归器,而是一个二分类器,即:给定的训练样本中一部分被标记为1(positive),剩下的被标记为0(negative),我们从这些样本中训练出一个分类器,给定输入特征(x),此分类器能够输出它预测的x的类别y,此时输出y只有两种情况:0和1. 先看一下logistic函数:

    logistic函数

    下面是它的曲线图:

    logistic曲线图

    下面给出我们的logistic regression函数模型:

    逻辑回归函数模型

    这个模型是这样工作的: 当h(x)输出值大于等于0.5时,预测x的类别为1; 当h(x)输出值小于0.5时,预测x的类别为0。 在这个函数模型中,x是输入,theta是我们要通过训练样本求的参数,求出theta之后我们就可以用这个模型去分类了。 那我们如何从训练样本中求出theta呢? 我们需要一个cost function,下面给出sklearn库中logisticRegression的实现使用的cost function:

    logisticRegressionCostFunction

    上下两个式子分别采用L2和L1方法进行regularization,防止模型过拟合。 式子左边是regularization term;右边是分类错误惩罚项;参数C权衡两者,实验中经验值,后面会讲到在实际中如何选取C。 得到cost function之后我们的目标就是选出一组参数theta使costFunction最小 ...

    read more
  5. opencv下HaarClassifierCascade的简单人脸检测

    opencv下HaarClassifierCascade的简单人脸检测

    接触Opencv一段时间了,最近导师一直让我看人脸识别相关的东西,看了这么多大牛写的人脸识别、追踪,一直没有自己动手写过,花了点时间写了一个简单的,单目标下能识别到人脸没问题,多目标下目前没测试,理论上应该可以(多目标识别已测试,识别成功)。

    haar classifier cascade是opencv下自带的人脸检测的级联分类器,支持haar特征,新版本的CascadeClassifier好像支持LBP特征,没试过。

    PS:要配置好opencv

    HaarDect.h

    #ifndef HAARDETECT_H
    #define HAARDETECT_H
    #include <opencv2\highgui\highgui.hpp>
    #include <opencv2\imgproc\imgproc.hpp>
    #include <opencv2\objdetect\objdetect.hpp>
    using namespace std;
    using namespace cv;
    
    CvHaarClassifierCascade* Load_Haar_Cascade();
    
    void ...
    read more
  6. 初学Python----urllib2模块与正则表达式组合而成的小爬虫

    最近开始学Python,在http://www.the5fire.com/python-sohuspider-software-people.html这个博客上看到作者写的简单的从搜狐上爬小说的爬虫,正好学习学习练练手,发现代码是几年前的,而搜狐网早已经更新了网页,原代码已经不能用了,正好我来改改。下面是改过之后的代码,亲测有效:

    #!/usr/bin/python
    
    import re
    import urllib2
    import sys
    
    def getPage(url,offset = '3399'):
        realurl = "%s%s%s" % (url,offset,".html")
        print realurl
        content = urllib2.urlopen(realurl).read()
    
        content_re = re.compile(r'<div class="chapter"></div ...
    read more
  7. pythonChallenge攻略

    http://www.pythonchallenge.com/是一个非常棒的练习python的网站,以过关解密的形式来帮助你学习python,现将我的解密过程记录如下。

    第0关:warming up

    这关就一张图片,显示2的38次方,下方提示:try to change the URL address OK,那我们就计算一下2的38次方,在python中输入:

    2**38
    

    在python中两个*号表示次方运算,得出答案:

    >>> 2**38
    274877906944L
    

    根据提示修改url,将0替换成上面这串数字,然后网页提示L不需要,我们去掉L再替换, 过关!

    第1关:what about making trans

    图中显示将字母k换成m,o换成q,e换成g,即每个字母往后推移两位,看来得将下面那一 大段字符转换一下,这里使用两个函数chr(),和ord().

    string = "g ...
    read more

« Page 3 / 3

blogroll

social