精华内容
下载资源
问答
  • 数据标准化与归一化

    2020-04-03 21:20:02
    首先理解方差、标准差和均方根误差的区别 方差(variance) 衡量随机变量或一组数据的离散(偏离)程度 概率论中,方差是用来度量随机变量和其数学期望的(均值)之间的偏离程度。 统计学中,各数据分别...

    特征归一化、标准化的理解

    数据集如果标准化处理,对机器学习中的很多算法(包括梯度下降),会有很好的优化效果。如果数据未标准化(例如,数据集特征之间相差的数量级较大时),很多算法的表现性能不佳。

    首先理解方差、标准差和均方根误差的区别

    方差(variance)

    衡量随机变量或一组数据的离散(偏离)程度

    概率论中,方差是用来度量随机变量和其数学期望的(均值)之间的偏离程度。

    统计学中,各数据分别与其平均数之差的平方和

    假设一组随机变量或统计数据的期望(均值)用E(x)E(x)表示,则其方差表示为各数据与E(x)E(x)差的平方和[xE(x)]2\sum[x-E(x)]^2,然后再求其期望(均值)得D(x)=[xE(x)]2D(x)=\sum[x-E(x)]^2

    为什么要使用标准差

    根据上文我们知道方差是用来衡量随机变量或一组数据的离散(偏离)程度,标准差(也叫均方差)的公式为σ=D(x)\sigma = \sqrt {D(x)},方差和标准差有一个共有的性质:值越大分布曲线越扁也就是越分散。
    由于数据是随机的,假设其同分布根据中心极限定理,该数据服从高斯(正太)分布(典型的例子就是误差),我们看下分布面积情况。
    在这里插入图片描述
    在使用标准差的时候我们可以清楚的看到数据属于某个值的概率。(我们处理特征的时候可以以此为依据筛选掉outlier)

    横轴区间μσ,μ+σ(\mu -\sigma,\mu +\sigma)内的面积为68.268949%

    横轴区间μ2σ,μ+2σ(\mu -2\sigma,\mu +2\sigma)内的面积为95.449974%

    横轴区间μ3σ,μ+3σ(\mu -3\sigma,\mu +3\sigma)内的面积为99.730020%

    根据切比雪夫不等式,xx偏离nn个标准差距离的概率小于1n2\frac{1}{n^2}

    标准差(均方差)、均方误差的区别

    标准差也叫均方差,而MSE(Mean Squared Error),平均平方误差,为所有样本误差(真实值与预测值之差)的平方和,然后取均值。MSE是回归分析中度量模型好坏的标准,此还有RMSE(误差的σ\sigma)、MAE和R2R^2。均方差是数据序列与均值的关系,而均方误差是数据序列与真实值之间的关系。

    MSE=1mi=1m(y(i)y^(i))2MSE = \frac{1}{m}\sum_{i=1}^{m}(y ^ {(i)} - \hat{y} ^ {(i)}) ^ {2}

    数据标准化和归一化

    数据标准化是将数据按比例进行缩放去除数据之间的限制,将其转化为无量纲的数据便于各指标数据进行加权和比较,归一化可以说作为标准化的一种(数据标准化和归一化一般用于连续值,离散值一般使用labelencoding 和onehot对数据进行转换)。
    目前数据标准化的方法主要分为以下三种:

    直线型方法(阈值法:极值法等、标准化、比重法)
    折线形
    曲线型

    不同的标准化方法,对系统的评价结果会产生不同的影响,在机器学习训练时可以多次进行尝试。

    归一化的目的

    • 提升模型的收敛速度
    • 提升模型的精度
    • 防止模型梯度爆炸

    模型收敛速度的提升

    在实际应用中,通过梯度下降法求解的模型一般都是需要归一化的,比如线性回归、logistic回归、KNN、SVM、神经网络等模型。
    如果特征之间量纲差距较大的时候,模型的等高线呈现椭圆形,而在进行梯度下降时,梯度的方向为垂直等高线的方向,所以模型会走“之”字形路线,且此时学习率过大或过小将会导致梯度发散或不收敛的情况。
    如果特征之间量纲差距较大的时候,模型的等高线呈现圆形,迭代速度会加快,此时只需调整学习率速度即可。如下图:
    在这里插入图片描述

    提升模型的精度

    在涉及到距离计算的模型时,如果某一特征数值差别特别大,在计算的过程中会占据主导地位,对于值较小的特征则可能会导致信息的缺失(数值变化对最后计算结果几乎没有影响)。所以为使模型能够充分学习到各个特征的信息,我们在进行模型分析时应对数据进行标准化处理。数值标准化主要包括数据同趋化处理和数据量纲话处理。

    数据同趋化主要是解决不同性质的问题,由于不同性质的指标不能直接加总进行处理,因而将其转化为同一种分布状态(标准正太分布),使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。

    数据无量纲化主要是解决数据可比性的问题,及时数据处于同一种分布状态,如果不同特征之间没有进行数据归一化操作,较大特征会始终占据主导地位。

    因此归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
    在这里插入图片描述

    深度学习中数据归一化可以防止梯度爆炸

    常用的数据归一化方法及特点

    (1) 最大最小标准化(min-max Normalization)

    1. 又称为离差标准化,将结果映射到[0,1]之间 x=xmin(x)max(x)min(x)x^* = \frac{x-min(x)}{max(x)-min(x)}
    2. 使用情况:本归一化方法适用于数据值比较集中的情况,在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法(不包括Z-score方法)。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围
    3. 缺陷: 该方法极易收到最大值和最小值的影响,使的归一化结果不稳定使得后续使用效果也不稳定。实际使用中可以用经验常量来替代max和min。

    (2) Z-score标准化方法(zero-mean normalization)

    1. 通过Z-score标准化方法处理后的数据会服从标准正态分布,处理后的值区间不为[0,1],因此不能叫做归一化,其转换函数x=xμσx^* = \frac{x-\mu}{\sigma}
    2. Z-score标准化方法适用于属性的最大值和最小值未知的情况,此外Z-score方法可用于筛除outlier。在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score标准化表现更好。
    3. 缺陷:要求原始数据的分布近似为高斯分布,否则效果会很差。

    (3) loglog函数转换

    1. 通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:
      x=log10(x)log10(max(x))x^* = \frac{log_10(x)}{log_10(max(x))}

    sklearn 标准化与归一化的方法

    我们可以使用sklearn中提供的相关类对数据集进行标准化处理,可以将特征转换成相同的数量级,进而消除数量级不同对算法造成的影响。常用的两种方式:

    • StandardScaler
    • MinMaxScaler。

    StandardScaler 将特征转换为标准正态分布的形式。(均值为0,标准差为1。)
    MinMaxScaler 将特征转换(缩放)为指定区间的分布。默认(也是通常情况下),我们将特征缩放到[0, 1],我们也把这种缩放方式成为归一化。

    # 进行尝试
    from sklearn.datasets import load_boston
    from sklearn.linear_model import LinearRegression, SGDRegressor
    from sklearn.model_selection import train_test_split
    
    X, y = load_boston(return_X_y=True)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
    lr = LinearRegression()
    lr.fit(X_train, y_train)
    # 数据集未标准化对线性回归类影响不大。
    print(lr.score(X_train, y_train))
    print(lr.score(X_test, y_test))
    
    # 数据集未标准化对梯度下降算法影响极大。
    sgd = SGDRegressor(eta0=0.01, max_iter=100)
    sgd.fit(X_train, y_train)
    print(sgd.score(X_train, y_train))
    print(sgd.score(X_test, y_test))
    
    
    
    
    
    展开全文
  • gFitMeasure:表示字符串值的字符串或元胞数组不同形式的拟合优度度量如下: 'all' - 计算下面的所有度量'1' - 均方误差 (mse) '2' - 归一化均方误差 (nmse) '3' - 均方根误差 (rmse) '4' - 归一化均方根误差 ...
  • 图像融合质量评价方法SSIM、PSNR、EN、MSE与NRMSE(一)1 介绍2 融合指标介绍2.1 结构相似性 SSIM2.2 峰值信噪比 PSNR2.3 信息熵 Entropy2.4 均方误差 MSE2.4 归一化均方根误差 NRMSE3 代码实现3.1 使用skimage库3.2...

    1 前言

    最近开始学习和研究医疗图像融合这一方向,在做实验时因为缺少评估融合图像的指标以及代码非常苦恼。在经过一段时间的收集之后,得到了不少指标,所以希望可以记录一下。本文主要记录怎么使用这些指标,对于这些指标的公式和原理并不会过多介绍。后续更新图像融合质量评价方法AG、SF、STD、MI与NMI(二)图像融合质量评价方法MSSIM、MS-SSIM、FS、Qmi、Qabf与VIFF(三)图像融合质量评价方法FMI(四)

    2 融合评价指标介绍

    2.1 结构相似性 SSIM

    SSIM是Structural Similarity的缩写,表示结构相似性,取值范围为[-1,1],越接近1,代表相似度越高,融合质量越好。
    关于详细的公式和原理解释可以看Image Quality Assessment: From Error Visibility to Structural Similarity

    2.2 峰值信噪比 PSNR

    Peak signal to noise ration缩写PSNR,峰值信噪比,用于衡量图像有效信息与噪声之间的比率,能够反映图像是否失真。
    PSNR=10logz2MSEPSNR=10\log\frac{z^2}{MSE}Z表示理想参考图像灰度最大值与最小值之差,通常为255。PSNR的值越大,表示融合图像的质量越好。

    2.3 信息熵 Entropy

    信息熵主要是度量图像包含信息量多少的一个客观评价指标,a表示灰度值,P(a)表示灰度概率分布:
    H(A)  =  aPA(a)logpA(a)H(A)\;=\;-\sum_aP_A(a)l\mathrm{og}p_A(a)信息熵越高表示融合图像的信息量越丰富,质量越好

    2.4 均方误差 MSE

    均方误差(Mean Square Error)反映的是变量间的差异程度,是一种基于像素误差的图像质量客观评价指标,用于衡量融合图像和理想参考图像之间的差异,MSE越小,表示融合图像质量越好。
    均方根误差(Root Mean Square Error)是一个翻译空间细节信息的评价指标,公式如下:RMSE(IF,IW)  =  MSE(IF,IW)  RMSE(I_F,I_W)\;=\;\sqrt{MSE(I_F,I_W)\;}

    2.5 归一化均方根误差 NRMSE

    归一化均方根误差(normalized root mean square error)就是将RMSE的值变成(0,1)之间。

    3 代码实现

    3.1 使用skimage库

    为什么要一次性介绍这5个指标?因为这5个指标都只需要调用skimage库就可以使用了。skimage库是用于图像处理的 Python 包,使用原生的 NumPy 数组作为图像对象。
    其中skimage.measure中包括以上所以指标的函数,详见Scikit image 中文开发手册。废话不多说,下面之间给出使用这些函数的例子:

    import cv2
    import numpy as np
    import math
    
    import skimage.measure 
    
    # 参数0表示读入即为灰度图
    img = cv2.imread('1.png',0)
    img_fu = cv2.imread('2.png',0)
    
    # 结构相似性
    ssim = skimage.measure.compare_ssim(img, img_fu, data_range=255)
    
    # 峰值信噪比
    psnr = skimage.measure.compare_psnr(img, img_fu, data_range=255)
    
    # 均方误差
    mse = skimage.measure.compare_mse(img, img_fu)
    
    # 均方根误差
    rmse = math.sqrt(mse)
    
    # 归一化均方根误差
    nrmse = skimage.measure.compare_nrmse(img, img_fu, norm_type='Euclidean')
    
    # 信息熵
    entropy = skimage.measure.shannon_entropy(img_fu, base=2)
    

    3.2 信息熵Entropy python实现

    其实信息熵的实现并不难,根据上面的公式就可以写出(代码参考图像信息熵):

    import cv2
    import numpy as np
    import math
    
    import skimage.measure 
    
    
    def imageEn(image):
        tmp = []
        for i in range(256):
            tmp.append(0)
        val = 0
        k = 0
        res = 0
        img = np.array(image)
        for i in range(len(img)):
            for j in range(len(img[i])):
                val = img[i][j]
                tmp[val] = float(tmp[val] + 1)
                k = float(k + 1)
        for i in range(len(tmp)):
            tmp[i] = float(tmp[i] / k)
        for i in range(len(tmp)):
            if(tmp[i] == 0):
                res = res
            else:
                res = float(res - tmp[i] * (math.log(tmp[i]) / math.log(2.0)))
    
        return res
    
    if __name__ == '__main__':
        image = cv2.imread('1.png',0)
        print(imageEn(image))
        print(skimage.measure.shannon_entropy(image, base=2))
    

    可以看到对同一图片,上面所示代码和skimage库中的shannon_entropy()函数计算结果相差不大
    在这里插入图片描述

    3.3 峰值信噪比PSNR python实现

    代码来源PSNR实现

    import cv2
    import numpy as np
    import math
    
    import skimage.measure 
    
     
    def psnr1(img1, img2):
       mse = np.mean((img1/1.0 - img2/1.0) ** 2 )
       if mse < 1.0e-10:
          return 100
       return 10 * math.log10(255.0**2/mse)
     
    def psnr2(img1, img2):
       mse = np.mean( (img1/255. - img2/255.) ** 2 )
       if mse < 1.0e-10:
          return 100
       PIXEL_MAX = 1
       return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))
    
    if __name__ == '__main__':
        image = cv2.imread('1.png',0)
        img_fu = cv2.imread('2.png',0)
        print(psnr1(image,img_fu))
        print(psnr2(image,img_fu))
        print(skimage.measure.compare_psnr(image, img_fu, data_range=255))
    

    对同一图片进行测试,得到结果如下:
    在这里插入图片描述

    3.4 结构相似性SSIM python实现

    在研究使用python实现MS-SSIM(多层级结构相似性)时,考虑从SSIM代码上面进行改进,发现【超分辨率】基于结构相似性的图像质量评价SSIM及其python实现这篇文章的代码误差相对而言较小:

    import numpy as np
    from PIL import Image 
    from scipy.signal import convolve2d
    import cv2
    
    import skimage.measure 
    
    def matlab_style_gauss2D(shape=(3,3),sigma=0.5):
        """
        2D gaussian mask - should give the same result as MATLAB's
        fspecial('gaussian',[shape],[sigma])
        """
        m,n = [(ss-1.)/2. for ss in shape]
        y,x = np.ogrid[-m:m+1,-n:n+1]
        h = np.exp( -(x*x + y*y) / (2.*sigma*sigma) )
        h[ h < np.finfo(h.dtype).eps*h.max() ] = 0
        sumh = h.sum()
        if sumh != 0:
            h /= sumh
        return h
    
    def filter2(x, kernel, mode='same'):
        return convolve2d(x, np.rot90(kernel, 2), mode=mode)
    
    def compute_ssim(im1, im2, k1=0.01, k2=0.03, win_size=11, L=255):
    
        if not im1.shape == im2.shape:
            raise ValueError("Input Imagees must have the same dimensions")
        if len(im1.shape) > 2:
            raise ValueError("Please input the images with 1 channel")
    
        M, N = im1.shape
        C1 = (k1*L)**2
        C2 = (k2*L)**2
        window = matlab_style_gauss2D(shape=(win_size,win_size), sigma=1.5)
        window = window/np.sum(np.sum(window))
    
        if im1.dtype == np.uint8:
            im1 = np.double(im1)
        if im2.dtype == np.uint8:
            im2 = np.double(im2)
    
        mu1 = filter2(im1, window, 'valid')
        mu2 = filter2(im2, window, 'valid')
        mu1_sq = mu1 * mu1
        mu2_sq = mu2 * mu2
        mu1_mu2 = mu1 * mu2
        sigma1_sq = filter2(im1*im1, window, 'valid') - mu1_sq
        sigma2_sq = filter2(im2*im2, window, 'valid') - mu2_sq
        sigmal2 = filter2(im1*im2, window, 'valid') - mu1_mu2
    
        ssim_map = ((2*mu1_mu2+C1) * (2*sigmal2+C2)) / ((mu1_sq+mu2_sq+C1) * (sigma1_sq+sigma2_sq+C2))
    
        return np.mean(np.mean(ssim_map))
    
    
    if __name__ == "__main__":
        im1 = cv2.imread('1.png',0)
        im2 = cv2.imread('2.png',0)
    
        print(compute_ssim(np.array(im1),np.array(im2)))
        ssim = skimage.measure.compare_ssim(im1, im2, data_range=255)
        print(ssim)
    

    可以看到使用上面的代码与skimage库计算SSIM误差存在但是相对而言较小
    在这里插入图片描述

    4 总结

    这5个指标的实现比较容易,但是融合图像评价方法还有很多,继续慢慢总结…

    展开全文
  • 精确监测陕北黄土高原退耕前后的植被变化,选取GIMMS、SPOT-VGT和MODIS 3种常用的遥感数据,运用相关分析和均方根误差分析方法,比较3种遥感数据在陕北黄土高原植被空间分布、归一化差异植被指数(NDVI)季节变化和...
  • 在非协作通信系统中,信号解调需要对载波频率进行估计。提出了一种结合信噪比估计的希尔伯特-...仿真结果表明,在信噪比低于-5 dB时,文中提出的相位调制信号(phase shift keying,PSK)载频估计方法,归一化均方根误差小于10
  • 实验结果表明:归一化均方根误差小于0.001,光谱角误差小于0.02,较Price、Elbakary法有较大提升。本文提出的方法对高光谱图像重建具有良好的效果,可为分类、目标检测和识别提供更合适的数据源。
  • 然后,使用归一化均方根误差的自适应算法分别对声压及加速度信号中与参考信号高相关的噪声部分进行抵消。湖试数据的分析结果表明,该方案能够有效降低系统本底噪声,其中对电磁干扰带来的50 Hz倍频信号的抑制能力...
  • 迭代方法的结果表明,测量数据和建模数据之间存在显着一致性,相关性为 98%,平均偏差误差和归一化均方根误差分别为 -1.0% 和 7.6%。 另一方面,EnergyPlus 方法与 Xing 方法相结合,在模拟模型与测量数据之间显示...
  • % 输入% 参考 M x N % 测试 M x N % 输出% 结果结构% 1.MSE(均方误差) % 2.PSNR(峰值信噪比) % 3.R 值% 4.RMSE(均方根偏差) % 5.NRMSE(归一化均方根偏差) %6.MAPE(平均绝对百分比误差
  • 结合相空间重构理论和统计学习理论.实现混沌时间序列的多步预测.采用微熵率法求得最优嵌入维数和时延参数,重构...前者的归一化均方根预测误差远小于径向基函数网络预测模型的预测误差,泛化能力较强,其预测效果较好.</p>
  • 针对单目标跟踪滤波性能评价标准,分析研究均方根误差、误差适配百分比、和方根误差、带有理论边界的状态误差、带有理论边界的新息序列、归一化估计误差平方和具有理论边界的归一化信息平方.针对多目标跟踪滤波性能...
  • 泰勒图(Taylor diagram)

    千次阅读 2020-08-02 22:14:19
    泰勒图:泰勒图(Taylor,2001)常用于评价模型的精度,常用的精度指标有相关系数,标准差以及均方根误差(RMSE)。一般而言,泰勒图中的散点代表模型,辐射线代表相关系数,横纵轴代表标准差,而虚线代表均方根误差。...

    在这里插入图片描述
    泰勒图:泰勒图(Taylor,2001)常用于评价模型的精度,常用的精度指标有相关系数,标准差以及均方根误差(RMSE)。一般而言,泰勒图中的散点代表模型,辐射线代表相关系数,横纵轴代表标准差,而虚线代表均方根误差。泰勒图一改以往用散点图这种只能呈现两个指标来表示模型精度的情况。从更广义地来讲,泰勒图可以延展到需要用二维平面呈现三维数据的应用场景。这一点与三元图有异曲同工之妙。

    功能:相关/分布描述

    案例1
    在这里插入图片描述
    案例2
    在这里插入图片描述
    这里只描述了两种指标,归一化标准差和相关系数
    A Taylor diagram provides a statistical summary of how well patterns match and is widely used to compare the outputs from models with observations1. Supplementary Figure 1 shows a comparison of the globally averaged seasonal time series (climatology for 1980 2005) from models and the GRACE observations (climatology for 2003 2012). First, the correlation coefficients for the radial line denote the relationship between GRACE and the models, indicating similarities on seasonal time scales. Second, the normalized standard deviations (standard deviation of the model divided by that of the observations) on the x- and y-axes indicate if the variance of the model is larger or smaller than those in the observations. The points inside the dashed curved line mean that the model simulations have lower variability than the GRACE observations. By contrast, the models with normalized standard deviation are higher than one has higher variability than the GRACE observations. For example, GISS observations have more than two times the standard deviation of the GRACE observations because of a larger seasonal cycle. The reasons for the biases in the model could be from simulated atmospheric forcing from the configurations, such as soil type, layers, and depths, or parameterizations in different land surface models. On combining the correlation and standard deviation, the points closer to the reference point on the x-axis show a better agreement, making the ensemble mean of the CESM-LE one of the realistic models representing terrestrial water storage. Supplementary Figure 1 shows that the CESM agrees with observations for the simulated seasonal cycle of total water storage.

    展开全文
  • 采用平滑、多元散射校正、基线校正和归一化等方法对原始光谱进行校正处理,并建立相应的偏最小二乘(PLS)模型以选择最优预处理方法,发现归一化后建立的PLS模型较优,预测集的相关系数(rp)为0.9790,预测集的均方根误差...
  • 基于Frost结构的Laguerre宽带波束形成器可以获得...该算法首先建立基于GSC结构的Laguerre宽带波束形成器模型,然后利用最小二乘方法给出一种低复杂度的极点求解方法,最后利用归一化最小均方根误差方法实现宽带波束形成。
  • 试验结果表明,利用联合区间偏最小二乘法所建的预测模型最佳,其校正集相关系数(Rc)和交互验证均方根误差(fRV)分别为0.8332和3.75,预测集的相关系数(Rp)和预测均方根误差(fRP)分别为0.8238和4.17。研究结果表明利用近...
  • 对于典型的FORBILD头部幻影切片,在实验中使用40个投影,我们的算法在均方根误差(RMSE),归一化均方根距离( NRMSD)和归一化平均绝对距离(NMAD)度量,并且在峰值信噪比(PSNR)度量方面具有超过10%的增益。...
  • 炭疽病是油茶最常见的病害之一,因此对油茶...实验结果表明,平分为24个子区间时,第6个子区间的建模效果最佳,建模相关系数为0.9076,建模均方根误差为0.2090 μg/mg,预测相关系数为0.8947,预测均方根误差为0.2100 μg/mg。
  • K近邻算法概述1.1读取数据1.2 K nearest Neighbor 算法1.3(欧式)距离的定义1.4 模型评估1.4.1 首先制定好训练集和测试集1.4.2 基于单变量预测价格1.4.3 Root Mean Squared Error 均方根误差1.4.4 不同的变量效果会...

    K 近邻算法

    1. K近邻算法概述

    1.1读取数据

    import pandas as pd
    #选择部分列
    features = ['accommodates','bedrooms','bathrooms','beds','price','minimum_nights','maximum_nights','number_of_reviews']
    
    dc_listings = pd.read_csv('listings.csv')
    
    dc_listings = dc_listings[features]
    
    print(dc_listings.shape)
    
    dc_listings.head()
    

    数据特征:

    accommodates: 可以容纳的旅客
    bedrooms: 卧室的数量
    bathrooms: 厕所的数量
    beds: 床的数量
    price: 每晚的费用
    minimum_nights: 客人最少租了几天
    maximum_nights: 客人最多租了几天
    number_of_reviews: 评论的数量

    1.2 K nearest Neighbor 算法

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    Alt

    1.3(欧式)距离的定义

    Alt
    其中Q1到Qn是一条数据的所有特征信息,P1到Pn是另一条数据的所有特征信息

    import numpy as np
    #假设我们的房子有3个房间
    our_acc_value = 3
    
    dc_listings['distance'] = np.abs(dc_listings.accommodates - our_acc_value)
    dc_listings.distance.value_counts().sort_index()
    
    #sample操作可以得到洗牌后的数据
    c_listings = dc_listings.sample(frac=1,random_state=0)
    dc_listings = dc_listings.sort_values(by='distance')
    dc_listings.price.head()
    
    dc_listings['price'] = dc_listings.price.str.replace("\$|,",'').astype(float)
    
    mean_price = dc_listings.price.iloc[:5].mean()
    mean_price
    

    1.4 模型评估

    Alt

    1.4.1 首先制定好训练集和测试集

    [外链图片转

    dc_listings.drop('distance',axis=1)
    
    train_df = dc_listings.copy().iloc[:2792]
    test_df = dc_listings.copy().iloc[2792:]
    

    1.4.2 基于单变量预测价格

    def predict_price(new_listing_value,feature_column):
        temp_df = train_df
        temp_df['distance'] = np.abs(dc_listings[feature_column] - new_listing_value)
        temp_df = temp_df.sort_values('distance')
        knn_5 = temp_df.price.iloc[:5]
        predicted_price = knn_5.mean()
        return(predicted_price)
    
    test_df['predicted_price'] = test_df.accommodates.apply(predict_price,feature_column='accommodates')
    

    1.4.3 Root Mean Squared Error 均方根误差

    在这里插入图片描述

    test_df['squared_error'] = (test_df['predicted_price'] - test_df['price'])**(2)
    mse = test_df['squared_error'].mean()
    rmse = mse ** (1/2)
    rmse
    

    1.4.4 不同的变量效果会不会不同呢

    for feature in ['accommodates','bedrooms','bathrooms','number_of_reviews']:
        #test_df['predicted_price'] = test_df.accommodates.apply(predict_price,feature_column=feature)
        test_df['predicted_price'] = test_df[feature].apply(predict_price,feature_column=feature)
        test_df['squared_error'] = (test_df['predicted_price'] - test_df['price'])**(2)
        mse = test_df['squared_error'].mean()
        rmse = mse ** (1/2)
        print("RMSE for the {} column: {}".format(feature,rmse))
    

    1.4.5 数据标准化,归一化

    import pandas as pd
    from sklearn.preprocessing import StandardScaler
    features = ['accommodates','bedrooms','bathrooms','beds','price','minimum_nights','maximum_nights','number_of_reviews']
    
    dc_listings = pd.read_csv('listings.csv')
    
    dc_listings = dc_listings[features]
    
    dc_listings['price'] = dc_listings.price.str.replace("\$|,",'').astype(float)
    
    dc_listings = dc_listings.dropna()
    
    dc_listings[features] = StandardScaler().fit_transform(dc_listings[features])
    
    normalized_listings = dc_listings
    
    print(dc_listings.shape)
    
    normalized_listings.head()
    

    参见

    1. [机器学习] 数据特征 标准化和归一化你了解多少?

    1.4.6 多变量距离的计算

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200225203807785.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMzNDE4MzA2,size_16,color_FFFFFF,t_70 #pic_center)

    from scipy.spatial import distance
    
    first_listing = normalized_listings.iloc[0][['accommodates', 'bathrooms']]
    fifth_listing = normalized_listings.iloc[20][['accommodates', 'bathrooms']]
    first_fifth_distance = distance.euclidean(first_listing, fifth_listing)
    first_fifth_distance
    

    1.4.7 多变量KNN模型

    def predict_price_multivariate(new_listing_value,feature_columns):
        temp_df = norm_train_df
        temp_df['distance'] = distance.cdist(temp_df[feature_columns],[new_listing_value[feature_columns]])
        temp_df = temp_df.sort_values('distance')
        knn_5 = temp_df.price.iloc[:5]
        predicted_price = knn_5.mean()
        return(predicted_price)
    
    cols = ['accommodates', 'bathrooms']
    norm_test_df['predicted_price'] = norm_test_df[cols].apply(predict_price_multivariate,feature_columns=cols,axis=1)    
    norm_test_df['squared_error'] = (norm_test_df['predicted_price'] - norm_test_df['price'])**(2)
    mse = norm_test_df['squared_error'].mean()
    rmse = mse ** (1/2)
    print(rmse)
    

    2. sklearn库与功能

    2.1 使用Sklearn来完成KNN

    from sklearn.neighbors import KNeighborsRegressor#导入包
    cols = ['accommodates','bedrooms']
    knn = KNeighborsRegressor()#实例化模型
    knn.fit(norm_train_df[cols], norm_train_df['price'])#fit数据
    two_features_predictions = knn.predict(norm_test_df[cols])# 预测
    
    from sklearn.metrics import mean_squared_error
    
    two_features_mse = mean_squared_error(norm_test_df['price'], two_features_predictions)
    two_features_rmse = two_features_mse ** (1/2)
    print(two_features_rmse)
    

    加入更多的特征

    knn = KNeighborsRegressor()
    
    cols = ['accommodates','bedrooms','bathrooms','beds','minimum_nights','maximum_nights','number_of_reviews']
    
    knn.fit(norm_train_df[cols], norm_train_df['price'])
    four_features_predictions = knn.predict(norm_test_df[cols])
    four_features_mse = mean_squared_error(norm_test_df['price'], four_features_predictions)
    four_features_rmse = four_features_mse ** (1/2)
    four_features_rmse
    
    展开全文
  • 实验结果表明, 所提算法配准的ROI准确度达到95.6%, 归一化互信息值为1.8432, 均方根误差为1.12%, 相关系数提高了18.33%。相比其他配准方法, 所提方案的配准精度及准确度明显提升, 对临床辅助诊断有重要意义。
  • 针对移动机器人同步定位与地图构建(SLAM)过程中系统测程法误差累积问题,采用测程法误差模型和车轮速度误差模型的映像关系,结合增广扩展...基于均方根误差归一化估计方差进行了仿真实验分析,研究结果表明:与EKF-SLA
  • 实验结果表明:经多元散射校正结合归一化校正处理后的GRNN模型效果最佳,得到的预测相关系数为0.9967,预测均方根误差为0.0050。本实验验证了THz光谱检测技术对奶粉中违禁添加剂三聚氰胺检测的可行性,并建立了较优的...
  • Machine Learning Note

    2019-03-27 10:58:56
    算法 K近邻算法 欧氏距离(定义距离:特征值之间的距离) ...RMSE均方根误差. 数据标准化(z = x−μσ\frac{x-μ}{σ}σx−μ​;均值μ=0;标准差σ=1)&归一化 List item ...
  • 采用多种预处理方法(S-G平滑、归一化、基线校正、MSC等)建立了两类石榴的单一模型,结果表明:基线校正的效果明显优于其他方法,所建立的四川石榴模型的预测集相关系数Rp为0.82,预测集均方根误差(RMSEP)为0.37,建模集...
  • SMC的最佳预测模型是采用A2200、D2200建立的多元逐步回归模型,其建模集决定系数为0.88,建模集均方根误差为2.08,测试集决定系数为0.89,预测均方根误差为2.21,相对分析误差为2.80。随机森林分类能得到对
  • 为了提高风电功率的预测精度, 研究了一种基于粒子滤波( P F) 与径向基函数( RBF) 神经网络相结合的风电功率预测方法。使用 P F算法对历史风速数据...百分误差达到8.04%, 均方根误差达到10.67%
  • 通过与传统隐含因子模型等方法在多个不同隐含因子个数上的实验比较分析,实验结果表明,改进模型不仅能够解决新用户和项目的冷启动问题,还能有效降低预测评分的均方根误差,并提高预测推荐的准确度。
  • 3)所建立的13种反演模型中,基于红边与蓝边面积归一化比值和红谷位置波长变量的逐步回归反演模型精度最高,预测R2为0.830,均方根误差为2.798,相对误差为7.78%.研究结果为高光谱技术大面积监测稀土复垦矿区植被生长状况...
  • 菜用大豆厚度是划分菜用大豆等级的重要衡量指标之一。采用高光谱图像技术对菜用大豆的厚度进行预测。实验中选取200个菜用大豆...校正模型和预测模型的相关系数分别为0.956和0.933,均方根误差分别为0.59 mm和0.70
  • 将实验数据进行主成分降维后,对钢液中Mn 元素的浓度进行定量分析,得到均方根误差(MSE)为0.599%,相对标准偏差(RSD)为8.26%,相关系数为0.997。结果显示,粒子群优化支持向量机回归定量分析方法可以用于LIBS 钢液...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

归一化均方根误差