精华内容
下载资源
问答
  • 针对SAR平台的斜视模型,当进行距离脉压后,在距离方向上引入了快速傅里叶变换,对变换结果进行Keystone变换与慢时间反变换,最后使用方位上的快速傅里叶变换得到聚焦的成像结果。通过各种时间、频率变换方法的...
  • 引入两个未知参数对滑动面上的应力进行修正,把修正后的滑动面应力带入极限平衡方程组中,经简单迭代计算,求出未知参数和边坡的安全系数。通过对工程实例的稳定性计算,对比分析该方法和其他常用方法的计算结果,...
  • 为提高厚松散层开采下概率积分的预计地表沉陷精度,表明下沉盆地边缘收敛缓慢的问题,基于概率积分理论提出了新的开采沉陷预计模型,该模型考虑了松散层厚度的影响,引入了松散层影响系数这一新参数。结合淮南潘北矿...
  • 对Satty的1~9标度方法进行改进,引入3标度建立判断矩阵。从互反矩阵充分必要条件出发,提出判断矩阵不一致时的调整方法,以提高判断矩阵的一致性和减少计算量。该方法应用于Web集群系统负载均衡中,确定影响...
  • 线性模型,使用最小二乘参数估计使模型...)为广义线性模型,有加权最小二乘法或极大似然进行参数估计。 对于二元分类问题,y的取值为0或1,假设不同类别训练样本数目相同,当预测的y值大于0.5认证为,反之为负,y

    线性模型,使用最小二乘参数估计使模型预测结果与实际结果y之间的均方误差最小,得到参数w和b(其中b可以算作w的最后一列,对应属性值恒置为1)。

    线性模型形式简单,易于建模,引入层级结构或高维映射后可得到更为抢到的非线性结构。为广义线性模型,有加权最小二乘法或极大似然法进行参数估计。

    对于二元分类问题,y的取值为0或1,假设不同类别训练样本数目相同,当预测的y值大于0.5认证为正,反之为负,y实际表达了正例的可能性,即,则为正例。若假设不成立,即类别不平衡问题,有三种解决方法:

    (1)  对数目少的一类欠采样,去除一部分后训练,时间开销小,但训练样本少

    (2)  对数目多的一类过采样,增加一部分后训练,时间开销大,训练样本多,不可简单得重复采样,会过拟合,可采用插值产生额外样本。

    (3)  用原始数据训练,使用进行决策(m表示样本个数)

    代码实践:使用逻辑回归和随机梯度预测疾病

    import pandas as pd
    import numpy as np
    # 创建特征列表。
    column_names = ['Sample code number', 'Clump Thickness', 'Uniformity ofCell Size', 'Uniformity of Cell Shape', 'Marginal Adhesion', 'Single EpithelialCell Size', 'Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses','Class']
    # 使用pandas.read_csv函数从互联网读取指定数据
    data =pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',names = column_names )
    # 将?替换为标准缺失值表示。
    data = data.replace(to_replace='?', value=np.nan)
    # 丢弃带有缺失值的数据(只要有一个维度有缺失)
    data = data.dropna(how='any')
    # 输出data的数据量和维度。
    data.shape
    # 使用sklearn.model_selection里的train_test_split模块用于分割数据。
    from sklearn.model_selection import train_test_split
    # 随机采样25%的数据用于测试,剩下的75%用于构建训练集合。
    X_train, X_test, y_train, y_test =train_test_split(data[column_names[1:10]], data[column_names[10]],test_size=0.25, random_state=33)
    # 查验训练样本的数量和类别分布。
    y_train.value_counts()
    # 查验测试样本的数量和类别分布。
    y_test.value_counts()
    # 从sklearn.preprocessing里导入StandardScaler。
    from sklearn.preprocessing import StandardScaler
    # 从sklearn.linear_model里导入LogisticRegression与SGDClassifier。
    from sklearn.linear_model import LogisticRegression
    from sklearn.linear_model import stochastic_gradient
    # 标准化数据,保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度过大的特征值而主导。
    ss = StandardScaler()
    X_train = ss.fit_transform(X_train)
    X_test = ss.transform(X_test)
    # 初始化LogisticRegression与SGDClassifier。
    lr = LogisticRegression()
    sgdc = stochastic_gradient.SGDClassifier(max_iter=5)
    # 调用LogisticRegression中的fit函数/模块用来训练模型参数。
    lr.fit(X_train, y_train)
    # 使用训练好的模型lr对X_test进行预测,结果储存在变量lr_y_predict中。
    lr_y_predict = lr.predict(X_test)
    # 调用SGDClassifier中的fit函数/模块用来训练模型参数。
    sgdc.fit(X_train, y_train)
    # 使用训练好的模型sgdc对X_test进行预测,结果储存在变量sgdc_y_predict中。
    sgdc_y_predict = sgdc.predict(X_test)
    # 从sklearn.metrics里导入classification_report模块。
    from sklearn.metrics import classification_report
    # 使用逻辑斯蒂回归模型自带的评分函数score获得模型在测试集上的准确性结果。
    print ('Accuracy of LR Classifier:', lr.score(X_test, y_test))
    # 利用classification_report模块获得LogisticRegression其他三个指标的结果。
    print (classification_report(y_test, lr_y_predict, target_names=['Benign','Malignant']))
    # 使用随机梯度下降模型自带的评分函数score获得模型在测试集上的准确性结果。
    print ('Accuarcy of SGD Classifier:', sgdc.score(X_test, y_test))
    # 利用classification_report模块获得SGDClassifier其他三个指标的结果。
    print (classification_report(y_test, sgdc_y_predict,target_names=['Benign', 'Malignant']))

    --来自《Python机器学习及实践 —— 从零开始通往Kaggle竞赛之路》

    展开全文
  • Multilayer perceptron:多层感知器 本节实现两层网络(一个隐层)作为分类器实现手写数字分类。...本节没有使用反向传播来更新参数,用的依旧是损失函数对参数求导(梯度下降)。网络隐层的激活函...

          Multilayer perceptron:多层感知器

         本节实现两层网络(一个隐层)作为分类器实现手写数字分类。引入的内容:激活函数(双曲正切、L1和L2正则化)、Theano的共享变量、grad、floatX等。损失函数和错误率沿用了上一节的LogisticRegression类。本节没有使用反向传播来更新参数,用的依旧是损失函数对参数求导(梯度下降法)。网络隐层的激活函数为tanh,输出层即采用LogisticRegression。更新参数的机制:损失函数为LogisticRegression中的损失函数+两层网络的正则化的和,参数为两层分别的W和b。

    要点如下:

       1.初始化权重,众所周知在使用sigmoid激活函数时权重初始为零可能导致学习缓慢、隐层神经元的饱和。有许多方法初始化权重,文中给出:

             当激活函数为双曲正切时 :W取值为  之间。

             当激活函数为sigmoid时:W取值为:之间。

       2.网络中的超参数一般来说不能用梯度下降法优化,严格地讲,找到这些参数的最优解不可行。首先,我们不能简单地独立的优化它们中的每一个参数,其次不能应用之前的梯度下降法,最后优化问题非凸很难找到局部最小值。一个好的解决办法是反向传播,由Yann LeCun提出的。

       3.学习速率:简单的解决办法是设为定值,随着时间减小学习速率有时也很好,一个简单的法则是μ0/(1+d*t),μ0为初始设置的速率,d称为衰减常数控制衰减速率(10e-3或更小),t为迭代周期数。

    总体代码如下:

    # coding=UTF-8
    # 两层网络、sgd优化(非bp)、early-stopping策略
    import os
    import sys
    import timeit
    import numpy
    import theano
    import theano.tensor as T
    from Logistic_sgd import LogisticRegression, load_data    #导入上一节的代码作为输出层
     
    
    class HiddenLayer(object):                 #隐层类
        def __init__(self, rng, input, n_in, n_out, W=None, b=None, activation=T.tanh):
            self.input = input
            if W is None:
                W_values = numpy.asarray(     #W非初始化为零
                    rng.uniform(
                        low=-numpy.sqrt(6. / (n_in + n_out)),
                        high=numpy.sqrt(6. / (n_in + n_out)),      
                        size=(n_in, n_out)), dtype=theano.config.floatX)
                if activation == theano.tensor.nnet.sigmoid:
                    W_values *= 4
                W = theano.shared(value=W_values, name='W', borrow=True)
            if b is None:                     #b初始化为零
                b_values = numpy.zeros((n_out), dtype=theano.config.floatX)
                b = theano.shared(value=b_values, name='b',borrow=True)
            self.W = W
            self.b = b
            lin_output = T.dot(input, self.W) + self.b
            self.output = (lin_output if activation is None else activation(lin_output))
            self.params = [self.W, self.b]
    
    
    class MLP(object):     #输出层
        def __init__(self, rng, input, n_in, n_hidden, n_out):
            self.hiddenLayer = HiddenLayer(rng=rng, input=input, n_in=n_in, n_out=n_hidden, activation=T.tanh)
            self.logRegressionLayer = LogisticRegression(input=self.hiddenLayer.output, n_in=n_hidden, n_out=n_out)  #引入输出层
            self.L1 = (abs(self.hiddenLayer.W).sum()+ abs(self.logRegressionLayer.W).sum())
            self.L2_sqr = ((self.hiddenLayer.W ** 2).sum() + (self.logRegressionLayer.W ** 2).sum())  #L1,L2正则化
            self.negative_log_likelihood = (self.logRegressionLayer.negative_log_likelihood) 
            self.errors = self.logRegressionLayer.errors
            self.params = self.hiddenLayer.params + self.logRegressionLayer.params     #参数包括隐层和输出层
            self.input = input
    
    
    def test_mlp(learning_rate=0.01, L1_reg=0.00, L2_reg=0.0001, n_epochs=1000,
                 dataset='data/mnist.pkl.gz', batch_size=20, n_hidden=500):
        datasets = load_data(dataset)
        train_set_x, train_set_y = datasets[0]
        valid_set_x, valid_set_y = datasets[1]
        test_set_x, test_set_y = datasets[2]
        n_train_batches = train_set_x.get_value(borrow=True).shape[0] / batch_size
        n_valid_batches = valid_set_x.get_value(borrow=True).shape[0] / batch_size
        n_test_batches = test_set_x.get_value(borrow=True).shape[0] / batch_size
        print '...building the model'
        index = T.lscalar()
        x = T.matrix('x')
        y = T.ivector('y')
        rng = numpy.random.RandomState(1234)       #随机数
        classifier = MLP(rng=rng, input=x, n_in=28 * 28, n_hidden=n_hidden, n_out=10)    #分类器
        cost = (classifier.negative_log_likelihood(y) + L1_reg * classifier.L1 + L2_reg * classifier.L2_sqr)  #损失函数
        test_model = theano.function(inputs=[index], outputs=classifier.errors(y), #测试模型
                                     givens={x: test_set_x[index * batch_size:(index + 1) * batch_size], 
                                             y: test_set_y[index * batch_size:(index + 1) * batch_size]})
        validate_model = theano.function(inputs=[index], outputs=classifier.errors(y),  #验证模型
                                         givens={x: valid_set_x[index * batch_size:(index + 1) * batch_size],
                                                 y: valid_set_y[index * batch_size:(index + 1) * batch_size]})
        gparams = [T.grad(cost, param) for param in classifier.params]
        updates = [(param, param - learning_rate * gparam) for param, gparam in zip(classifier.params, gparams)]
        train_model = theano.function(inputs=[index], outputs=cost, updates=updates,    #训练模型
                                      givens={x: train_set_x[index * batch_size: (index + 1) * batch_size],
                                              y: train_set_y[index * batch_size: (index + 1) * batch_size]})
        print '...training'
        patience = 10000    #early stopping策略
        patience_increase = 2
        improvement_threshold = 0.995
        validation_frequency = min(n_train_batches, patience / 2)
        best_validation_loss = numpy.inf
        best_iter = 0
        test_score = 0.
        start_time = timeit.default_timer()
        epoch = 0
        done_looping = False
        while (epoch < n_epochs) and (not done_looping):        #迭代优化过程(以下注释和上一节相同)
            epoch = epoch + 1
            for minibatch_index in xrange(n_train_batches):
                minibatch_avg_cost = train_model(minibatch_index)
                iter = (epoch - 1) * n_train_batches + minibatch_index
                if (iter + 1) % validation_frequency == 0:
                    validation_losses = [validate_model(i) for i in xrange(n_valid_batches)]
                    this_validation_loss = numpy.mean(validation_losses)
                    print('epoch %i, minibatch %i / %i, validation error %f %%' % (
                    epoch, minibatch_index + 1, n_train_batches, this_validation_loss * 100.))
                    if this_validation_loss < best_validation_loss:
                        if (this_validation_loss < best_validation_loss * improvement_threshold):
                            patience = max(patience, iter * patience_increase)
                        best_validation_loss = this_validation_loss  #最优解对应的验证损失值
                        best_iter = iter                      #最优解对应的迭代次数
                        test_losses = [test_model(i) for i in xrange(n_test_batches)]
                        test_score = numpy.mean(test_losses)
                        print(('epoch %i, minibatch %i / %i, test error of''best model %f %%') % (
                        epoch, minibatch_index + 1, n_train_batches, test_score * 100.))
            if patience <= iter:
                done_looping = True
                break
        end_time = timeit.default_timer()
        print(
        ('Optimization compelete.Best validation scores of % %%''obtained at iteration %i,with test performance %f %%')
        % (best_validation_loss * 100., best_iter + 1, test_score * 100.))
    
    if __name__ == '__main__':
        test_mlp()

     

    转载于:https://www.cnblogs.com/king-lps/p/6269438.html

    展开全文
  • 为矿用摄像机选择窄带滤光片,通过Hough变换并提出了极角极径约束提升轨道检测的有效性,并将获取的轨道参数信息与实际的轨道间距相结合动态的标定矩形感兴趣区,引入卷积神经网络并与SVM和Adaboost进行对比,在训练...
  • 采用非参数方向距离函数,构建基于非期望产出的机场运营效率评价模型. 针对我国长江三角洲多机场区域10个主要机场,对引入非期望产出前后运营效率进行对比分析,验证基于非期望产出的机场运营效率评价模型的有效...
  • 在保持六角晶格不变的条件下,通过改变纤芯附近多个圆形微孔的直径大小,在多孔光纤截面中引入三种非对称结构, 利用正负双折射相互补偿来调控并扩大双折射率随波长变化的线性区间。采用全矢量波束传播并考虑熔融...
  • 利用双曲切中间变迹光栅中的NLCME, 引入非相对论-绝热-准量子近似, 将光栅孤子作为一个低速运动且能量守恒的整体进行分析, 得到了孤子的轨迹方程。对反射孤子、低速孤子和静态孤子三种情况下的速度、位移分别...
  • 在ip-iq基础上,引入2个标准选择器,使光伏有功电流与谐波、无功电流任意组合形成并网指令电流,实现有功注入与谐波抑制、无功补偿的任意组合性功能。MATLAB/Simulink仿真和RT-LAB实验结果验证了理论分析的正确性...
  • 这一讲中我们来解决第二个问题:HMM的解码问题,即即给定观测序列 O=O1O2O3…Ot和模型参数λ=(A,B,π),怎样寻找满足这种观察序列意义上最优的隐含状态序列S,这一步中最常用的算法就是Viterbi算 了。  同样的,...

    我们已经从一个例子中学会了HMM的前向算法,解决了HMM算法的第一个问题,即模型评估问题。这一讲中我们来解决第二个问题:HMM的解码问题,即即给定观测序列 O=O1O2O3…Ot和模型参数λ=(A,B,π),怎样寻找满足这种观察序列意义上最优的隐含状态序列S,这一步中最常用的算法就是Viterbi算 法了。

        同样的,我们先引入3个符合:

      :表示在观察时刻t正处在状态j,且沿一条路径q1q2q3..qt,产生出的o1o2o3…ot最大概率。

      :表示的是一个状态值,该状态值产生了上面的 ,也就是说计算时是由上一次那个状态产生的。

       :表示在观察时刻t中所有的内最大的那个状态,所以它也是一个状态值。

        由上面的解释可以得出这3个符合的数学表达式如下:

          所有说当已知观察序列,要用viterbi算法求解最优状态序列时与前面一讲中的求最大观察值概率的算法非常相似。只是在求 时不再是将其来源相加,而是取其中最大的那个。

    废话少说,还是看刚开始的那个题目:

         HMM模型如下,试通过前向算法计算产生观察符号序列O={ABAB}时用Viterbi算法求出最大可能的状态序列。

         当然初始概率矩阵π=(1,0,0),即开始处于状态1。按照上面的公式理论,我们的递推依次解出以及。解法如下:

         第一次观察时:

      

         第二次观察时:

     

        第三次观察时:

       

        第四次观察时:

          其递推结果为:

         所以最后的结果状态序列为s1、s2、s2、s2.

         其计算结果示意图如下所示:

      

       

     

        浅绿色的箭头表示最有可能的状态序列。写得比较乱,大家随便凑合着看。

     

     

    展开全文
  • 使用X射线衍射(XRD),傅立叶变换红外光谱(FTIR),差示扫描量热(DSC)和密度测定来表征合成玻璃。 XRD图谱证实了样品的无定形性质,红外光谱显示了结构基团并突出了随着铁氧化物的引入磷酸盐网络的解聚。 ...
  • 8. 只要引入正反馈,电路就会产生正弦波振荡。 ( ) 9. 在振荡频率特别高时,应考虑正弦波振荡电路中的放大电路采用共基接。 ( ) 10.负反馈越深,电路的性能一定越稳定。 ( ) 三、计算题(共8分) 在图T3...
  • 语言选择,暂支持 zh-CN: 简体中文, zh-TW: 体中文 , en: 英文 , fr: 法语, pt-BR: 葡萄牙语, ru: 俄语, de: 德语, ja: 日语 fontSize String 14px 编辑区域文字大小 scrollStyle Boolean true 开启滚动...
  • 1.3.8 db_name参数和instance_name参数 24 1.3.9 sql.bsq文件与数据库创建 28 1.3.10 数据文件及字典的创建 29 1.4 使用模板创建数据库 30 1.4.1 启动创建 31 1.4.2 数据库创建模板 31 1.4.3 rman的...
  • php高级开发教程说明

    2008-11-27 11:39:22
    后,你将拥有一个工具参数的库,可以安全地重新使用和依赖这个库,从而可以极大地减省开 发时间。 2部分第一部分分高级PHP 下载 当然,有了一个日益增大的免费工具函数库,依然不能满足全部需要,也不能优化这个库 ...
  • javascript入门笔记

    2018-05-15 15:01:07
    5、可以采用"驼峰命名",小驼峰命名使用居多 6、最好见名知意 var a; var uname; 4、变量的使用 1、为变量赋值 - SET操作 只要变量出现在 赋值符号(=)的左边一律是赋值操作 var uname="张三丰"; uname=...
  • windows 程序设计

    2011-07-24 21:16:30
    该项研究的成果后来被Apple Computer和Microsoft引入主流并流行起来。虽然有一些争议,但现在已非常清楚,GUI是(Microsoft的Charles Simonyi的说法)一个在个人计算机工业史上集各方面技术大成于一体的最重要产物。...
  • args是其余测参数,以元组的形式传入,最后会将最小化costFunction的theta返回 result = optimize.fmin_bfgs(costFunction, initial_theta, fprime=gradient, args=(X,y,initial_lambda)) 7、运行结果 data1...
  • 3.3.7 实现一个函数,对一个整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。 3.3.8 找到满足条件的数组 3.3.9 一个大的含有50M个URL的记录...
  • LINGO软件的学习

    2009-08-08 22:36:50
    学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似...
  • 主要有先来先服务(FCFS)、时间片轮转、多级反馈轮转、优先数。 (3)进程控制块(PCB)是进程存在的唯一标志,它描述了进程的动态性。 4、进程通信 (1)进程的同步与互斥 一般来说同步...
  • 起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电 路的可靠性。 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定 后,撤销复位信号。为可靠起见,电源稳定后还要经一定的...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 12.2 属 性 .143 12.3 小 结 .146 第十三...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    54 <br>0075 用回溯找出n个自然数中取r个数的全排列 55 <br>0076 约瑟夫环问题 56 <br>0077 猴子选大王 57 <br>0078 如何判断IP是否正确 57 <br>0079 如何将小写金额转换为大写金额 57...
  • C#微软培训资料

    2014-01-22 14:10:17
    11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 12.2 属 性 .143 12.3 小 结 .146 第十三...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    构造型:基于已有的建模元素引入新的建模元素 标记值:允许为模型元素添加新的特性,是带有相关值得关键字 JAVA开发平台体系结构 构架是一个系统的组织结构包括: 1. 系统分解成的各个部分 2. 它们的连接性 3. ...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
热门标签
关键字:

引入正参数法