1. 程式人生 > >概率論中均值、方差、標準差介紹及C++/OpenCV/Eigen的三種實現

概率論中均值、方差、標準差介紹及C++/OpenCV/Eigen的三種實現

概率論是用於表示不確定性宣告(statement)的數學框架。它不僅提供了量化不確定性的方法,也提供了用於匯出新的不確定性宣告的公理。在人工智慧領域,概率論主要有兩種用途。首先,概率法則告訴我們AI系統如何推理,據此我們設計一些演算法來計算或者估算由概率論匯出的表示式。其次,我們可以用概率和統計從理論上分析我們提出的AI系統的行為。

概率論使我們能夠作出不確定的宣告以及在不確定性存在的情況下進行推理,而資訊理論使我們能夠量化概率分佈中的不確定性總量。

1.      為什麼要使用概率

機器學習通常必須處理不確定量,有時也可能需要處理隨機(非確定性的)量。不確定性和隨機性可能來自多個方面。

不確定性有三種可能的來源:(1)、被建模系統內在的隨機性。(2)、不完全觀測。即使是確定的系統,當我們不能觀測到所有驅動系統行為的變數時,該系統也會呈現隨機性。(3)、不完全建模。當我們使用一些必須捨棄某些觀測資訊的模型時,捨棄的資訊會導致模型的觀測出現不確定性。

在很多情況下,使用一些簡單而不確定的規則要比複雜而確定的規則更為實用,即使真正的規則是確定的並且我們建模的系統可以足夠精確地容納複雜的規則。

概率可以被看作是用於處理不確定性的邏輯擴充套件。邏輯提供了一套形式化的規則,可以在給定某些命題是真或假的假設下,判斷另外一些命題是真的還是假的。概率論提供了一套形式化的規則,可以在給定一些命題的似然後,計算其它命題為真的似然。

2.      隨機變數

隨機變數(random variable)是可以隨機地取不同值的變數。就其本身而言,一個隨機變數只是對可能的狀態的描述;它必須伴隨著一個概率分佈來指定每個狀態的可能性。

隨機變數可以是離散的或者連續的。離散隨機變數擁有有限或者可數無限多的狀態。注意這些狀態不一定非要是整數;它們也可能只是一些被命名的狀態而沒有數值。連續隨機變數伴隨著實數值。

隨機變數:給定樣本空間(S、F),如果其上的實值函式X: S→R是F(實值)可測函式,則稱X為(實值)隨機變數。初等概率論中通常不涉及到可測性的概念,而直接把任何X:S→R的函式稱為隨機變數。

如果X指定給概率空間S中每一個事件e有一個實數X(e),同時針對每一個實數r都有一個事件集合Ar與其相對應,其中Ar={e:X(e)≤r},那麼X被稱作隨機變數。隨機變數實質上是函式。如果隨機變數X的取值是有限的或者是可數無窮盡的值,X={x1,x2,x3,…,} 則稱X為離散隨機變數。如果X由全部實數或者由一部分割槽間組成,X={x|a≤x≤b}, -∞<a<b<∞,則稱X為連續隨機變數,連續隨機變數的取值是不可數及無窮盡的。

隨機變數在不同的條件下由於偶然因素影響,其可能取各種隨機變數不同的值,具有不確定性和隨機性,但這些取值落在某個範圍的概率是一定的,此種變數稱為隨機變數。隨機變數可以是離散型的,也可以是連續型的。簡單地說,隨機變數是指隨機事件的數量表現。

隨機試驗結果的量的表示。一個隨機試驗的可能結果(稱為基本事件)的全體組成一個基本空間Ω。隨機變數x是定義於Ω上的函式,即對每一基本事件ω∈Ω,有一數值x(ω)與之對應。

3.      概率分佈

概率分佈(probability distribution)用來描述隨機變數或一簇隨機變數在每一個可能取到的狀態的可能性大小。我們描述概率分佈的方式取決於隨機變數是離散的還是連續的。

(1)、離散型變數和概率質量函式:

離散型變數的概率分佈可以用概率質量函式(probability mass function, PMF)來描述。我們通常用大寫字母P來表示概率質量函式。通常每一個隨機變數都會有一個不同的概率質量函式,並且讀者必須根據隨機變數來推斷所使用的PMF,而不是根據函式的名字來推斷。

概率質量函式將隨機變數能夠取得的每個狀態對映到隨機變數取得該狀態的概率。概率質量函式可以同時作用於多個隨機變數。這種多個變數的概率分佈被稱為聯合概率分佈(joint probability distribution)。P(X=x,Y=y)表示X=x和Y=y同時發生的概率。我們也可以簡寫為P(x,y)。

如果一個函式P是隨機變數x的PMF,必須滿足下面這幾個條件:

1)、P的定義域必須是x所有可能狀態的集合。

2)、x∈X, 0≤P(x)≤1.不可能發生的事件概率為0,並且不存在比這概率更低的狀態。類似的,能夠確保一定發生的事件概率為1,而且不存在比這概率更高的狀態。

3)、∑xXP(x)=1.我們把這條性質稱之為歸一化的(normalized)。如果沒有這條性質,當我們計算很多事件其中之一發生的概率時可能會得到大於1的概率。

(2)、連續型變數和概率密度函式:

當我們研究的物件是連續型隨機變數時,我們用概率密度函式(probability density function, PDF)而不是概率質量函式來描述它的概率分佈。如果一個函式p是概率密度函式,必須滿足下面這幾個條件:

1)、p的定義域必須是x所有可能狀態的集合。

2)、x∈X,p(x)≥0.注意,我們並不要求p(x)≤1。

3)、∫p(x)dx=1.

概率密度函式p(x)並沒有直接對特定的狀態給出概率,相對的,它給出了落在面積為δx的無限小的區域內的概率為p(x) δx。我們可以對概率密度函式求積分來獲得點集的真實概率質量。特別地,x落在集合S中的概率可以通過p(x)對這個集合求積分來得到。在單變數的例子中,x落在區間[a, b]的概率是∫[a,b]p(x)dx

概率分佈(probability distribution):或簡稱分佈,是概率論的一個概念。使用時可以有以下兩種含義:

(1)、廣義地,它指稱隨機變數的概率性質,當我們說概率空間(Ω、F、P)中的兩個隨機變數X和Y具有同樣的分佈(或同分布)時,我們是無法用概率P來區別它們的。換言之,稱X和Y為同分布的隨機變數,當且僅當對任意事件A∈F,有P(X∈A)=P(Y∈A)成立。但是,不能認為同分布的隨機變數是相同的隨機變數。事實上即使X與Y同分布,也可以沒有任何點ω使得X(ω)=Y(ω)。在這個意義上,可以把隨機變數分類,每一類稱作一個分佈,其中的所有隨機變數都同分布。用更簡要的語言來說,同分布是一種等價關係,每一個等價類就是一個分佈。需注意的是,通常談到的離散分佈、均勻分佈、伯努利分佈、正態分佈、泊松分佈等,都是指各種型別的分佈,而不能視作一個分佈。

(2)、狹義地,它是指隨機變數的概率分佈函式。設X是樣本空間(Ω、F)上的隨機變數,P為概率測度,則稱如下定義的函式是X的分佈函式(distribution function),或稱累積分佈函式(cumulative distribution function,簡稱CDF):FX(a)=P(X≤a),對任意實數a定義。具有相同分佈函式的隨機變數一定是同分布的,因此可以用分佈函式來描述一個分佈,但更常用的描述手段是概率密度函式(probability density function, pdf)。

4.      邊緣概率

有時候,我們知道了一組變數的聯合概率分佈,但想要了解其中一個子集的概率分佈。這種定義在子集上的概率分佈被稱為邊緣概率分佈(marginal probability distribution)。

例如,假設有離散型隨機變數x和y,並且我們知道P(x,y)。我們可以根據下面的求和法則(sum rule)來計算P(x):

對於連續型變數,我們需要用積分替代求和:p(x)=∫p(x,y)dy.

邊緣分佈(Marginal Distribution)指在概率論和統計學的多維隨機變數中,只包含其中部分變數的概率分佈。在實際應用中,例如人工神經網路的神經元互相關聯,在計算它們各自的引數的時候,就會使用邊緣分佈計算得到某一特定神經元(變數)的值。

5.      條件概率

在很多情況下,我們感興趣的是某個事件,在給定其它事件發生時出現的概率。這種概率叫做條件概率。我們將給定X=x,Y=y發生的條件概率記為P(Y=y |X=x)。這個條件概率可以通過下面的公式計算:

條件概率只在P(X=x)>0時有定義。我們不能計算給定在永遠不會發生的事件上的條件概率。

條件概率(conditional probability):就是事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示為P(A|B),讀作”在B條件下A的概率”。

聯合概率:表示兩個事件共同發生的概率。A與B的聯合概率表示為P(A∩B)或者P(A,B)或者P(AB)。

邊緣概率:是某個事件發生的概率。邊緣概率是這樣得到的:在聯合概率中,把最終結果中不需要的那些事件合併成其事件的全概率而消失(對離散隨機變數用求和得全概率,對連續隨機變數用積分得全概率)。這稱為邊緣化(marginalization)。A的邊緣概率表示為P(A),B的邊緣概率表示為P(B)。需要注意的是,在這些定義中A與B之間不一定有因果或者時間順序關係。A可能會先於B發生,也可能相反,也可能二者同時發生。A可能會導致B的發生,也可能相反,也可能二者之間根本就沒有因果關係。

條件概率定義:設A與B為樣本空間Ω的兩個事件,其中P(B)>0。那麼在事件B發生的條件下,事件A發生的條件概率為:P(A|B)=P(A∩B)/P(B),條件概率有時候也稱為後驗概率。

6.      條件概率的鏈式法則

任何多維隨機變數的聯合概率分佈,都可以分解成只有一個變數的條件概率相乘的形式:

這個規則被稱為概率的鏈式法則(chain rule)或者乘法法則(product rule)。

7.      獨立性和條件獨立性

兩個隨機變數x和y,如果它們的概率分佈可以表示成兩個因子的乘積形式,並且一個因子只包含x另一個因子只包含y,我們就稱這兩個隨機變數是相互獨立的(independent):

如果關於x和y的條件概率分佈對於z的每一個值都可以寫成乘積的形式,那麼這兩個隨機變數x和y在給定隨機變數z時是條件獨立的(conditionally independent):

我們可以採用一種簡化形式來表示獨立性和條件獨立性:x⊥y表示x和y相互獨立,x⊥y|z表示x和y在給定z時條件獨立。

在概率論和統計學中,兩事件R和B在給定的另一事件Y發生時條件獨立,類似於統計獨立性,就是指當事件Y發生時,R發生與否和B發生與否就條件概率分佈而言是獨立的。換句話講,R和B在給定Y發生時條件獨立,當且僅當已知Y發生時,知道R發生與否無助於知道B發生與否,同樣知道B發生與否也無助於知道R發生與否。

R和B在給定Y發生時條件獨立,用概率論的標準記號表示為:Pr(R∩B|Y)=Pr(R|Y)Pr(B|Y),也可以等價地表示為Pr(R|B∩Y)=Pr(R|Y)。

兩個隨機變數X和Y在給定第三個隨機變數Z的情況下條件獨立當且僅當它們在給定Z時的條件概率分佈互相獨立,也就是說,給定Z的任一值,X的概率分佈和Y的值無關,Y的概率分佈也和X的值無關。

8.      期望、方差

函式f(x)關於某分佈P(x)的期望(expectation)或者期望值(expected value)是指,當x由P產生,f作用於x時,f(x)的平均值。對於離散型隨機變數,這可以通過求和得到:

對於連續型隨機變數可以通過求積分得到:

當概率分佈在上下文中指明時,我們可以只寫出期望作用的隨機變數的名稱來進行簡化,例如Ex[f(x)]。如果期望作用的隨機變數也很明確,我們可以完全不寫腳標,就像E[f(x)]。預設地,我們假設E[·]表示對方括號內的所有隨機變數的值求平均。期望是線性的。

方差(variance)衡量的是當我們對x依據它的概率分佈進行取樣時,隨機變數x的函式值會呈現多大的差異:

Var(f(x))=E[(f(x)-E[f(x)])2]

當方差很小時,f(x)的值形成的簇比較接近它們的期望值。方差的平方根被稱為標準差(standard deviation)。

期望值:在概率論和統計學中,一個離散性隨機變數的期望值(或數學期望、或均值,亦簡稱期望)是試驗中每次可能的結果乘以其結果概率的總和。換句話說,期望值像是隨機試驗在同樣的機會下重複多次,所有那些可能狀態平均的結果,便基本上等同”期望值”所期望的數。需要注意的是,期望值並不一定等同於常識中的”期望”------“期望值”也許與每一個結果都不相等。(換句話說,期望值是該變數輸出值的平均數。期望值並不一定包含於變數的輸出值集合裡。)

期望值數學定義:如果X是在概率區間(Ω,P)中的隨機變數,那麼它的期望值E[X]的定義是:E[X]=∫ΩXdP,並不是每一個隨機變數都有期望值的,因為有的時候這個積分不存在。如果兩個隨機變數的分佈相同,那它們的期望值也相同。

如果X是離散的隨機變數,輸出值為x1,x2,…,和輸出值相應的概率為p1,p2,…(概率和為1)。若級數∑ipixi絕對收斂,那麼期望值E[X]是一個無限數列的和:E[X]=∑pixi

期望值性質:

(1)、期望值E是線性函式:E[aX+bY]=aE[X]+bE[Y],X和Y為在同一概率空間的兩個隨機變數(可以獨立或者非獨立),a和b為任意實數。

(2)、一般的說,一個隨機變數的函式的期望值並不等於這個隨機變數的期望值的函式。

(3)、在一般情況下,兩個隨機變數的積的期望值不等於兩個隨機變數的期望值的積。特殊情況是當這兩個隨機變數是相互獨立的時候E[XY]=E[X]E[Y](也就是說一個隨機變數的輸出不會影響另一個隨機變數的輸出)。

在統計學中,當估算變數的期望值時,經常用到的方法是重複測量此變數的值,然後用所得資料的平均值來作為此變數的期望值的估計。在概率分佈中,期望值和方差或標準差是一種分佈的重要特徵。

期望值也可以通過方差計算公式來計算方差:Var(X)=E[X2]-(E[X])2

方差(Variance):在概率論和統計學中,一個隨機變數的方差描述的是它的離散程度,也就是該變數離其期望值的距離。一個實隨機變數的方差也稱為它的二階炬或二階中心動差,恰巧也是它的二階累積量。這裡把複雜說白了,就是將各個誤差將之平方(而非取絕對值),使之肯定為正數,相加之後再除以總數,透過這樣的方式來算出各個資料分佈、零散(相對中心點)的程度。繼續延伸的話,方差的算術平方根稱為該隨機變數的標準差(此為相對各個資料點間)。

方差定義:設X為服從分佈F的隨機變數,如果E[X]是隨機變數X的期望值(平均數μ=E[X]),隨機變數X或者分佈F的方差為: Var(X)=E[(X-μ)2] ,這個定義涵蓋了連續、離散、或兩者都有的隨機變數。方差亦可當作是隨機變數與自己本身的協方差:Var(X)=Cov(X,X)。

方差表示式展開成為:Var(X)=E[X2-2XE[X]+(E[X])2]=E[X2]-2E[X]E[X]+(E[X])2=E[X2]-(E[X])2,上述的表示式可記為”平方的平均減掉平均的平方”。

方差不會是負的。

標準差(Standard Deviation, SD),數學符號σ(sigma),在概率統計中最常使用作為測量一組數值的離散程度之用。標準差定義:為方差開算術平方根,反映組內個體間的離散程度。標準差與期望值之比為標準離差率。

簡單來說,標準差是一組數值自平均值分散開來的程度的一種測量觀念。一個較大的標準差,代表大部分的數值和其平均值之間差異較大;一個較小的標準差,代表這些數值較接近平均值。

總體的標準差:基本定義:


以下是分別採用C++和OpenCV實現的求矩陣的均值、方差、標準差code:

#include "funset.hpp"
#include <math.h>
#include <iostream>
#include <string>
#include <vector>
#include <opencv2/opencv.hpp>
#include "common.hpp"

// =============================== 計算均值、方差、標準差 =====================
template<typename _Tp>
int meanStdDev(const std::vector<std::vector<_Tp>>& mat, double* mean, double* variance, double* stddev)
{
	int h = mat.size(), w = mat[0].size();
	double sum{ 0. }, sqsum{ 0. };

	for (int y = 0; y < h; ++y) {
		for (int x = 0; x < w; ++x) {
			double v = static_cast<double>(mat[y][x]);
			sum += v;
			sqsum += v * v;
		}
	}

	double scale = 1. / (h * w);
	*mean = sum * scale;
	*variance = std::max(sqsum*scale - (*mean)*(*mean), 0.);
	*stddev = std::sqrt(*variance);

	return 0;
}

int test_meanStdDev()
{
	std::vector<std::vector<float>> vec{ { 1.2f, 2.5f, 5.6f, -2.5f },
						{ -3.6f, 9.2f, 0.5f, 7.2f },
						{ 4.3f, 1.3f, 9.4f, -3.4f } };
	const int rows{ 3 }, cols{ 4 };

	fprintf(stderr, "source matrix:\n");
	fbc::print_matrix(vec);

	double mean1 = 0., variance1 = 0., stddev1 = 0.;
	if (fbc::meanStdDev(vec, &mean1, &variance1, &stddev1) != 0) {
		fprintf(stderr, "C++ implement meanStdDev fail\n");
		return -1;
	}
	fprintf(stderr, "\nc++ implement meanStdDev: mean: %f, variance: %f, standard deviation: %f\n",
		mean1, variance1, stddev1);

	cv::Mat mat(rows, cols, CV_32FC1);
	for (int y = 0; y < rows; ++y) {
		for (int x = 0; x < cols; ++x) {
			mat.at<float>(y, x) = vec.at(y).at(x);
		}
	}

	cv::Scalar mean2_, stddev2_;
	cv::meanStdDev(mat, mean2_, stddev2_);
	auto mean2 = mean2_.val[0];
	auto stddev2 = stddev2_.val[0];
	auto variance2 = stddev2 * stddev2;
	fprintf(stderr, "\nopencv implement meanStdDev: mean: %f, variance: %f, standard deviation: %f\n",
		mean2, variance2, stddev2);

	return 0;
}
執行結果如下: 以下是採用Eigen實現的求矩陣的均值、方差、標準差code:
#include "funset.hpp"
#include <math.h>
#include <iostream>
#include <vector>
#include <string>
#include <opencv2/opencv.hpp>
#include <Eigen/Dense>
#include "common.hpp"

int test_meanStdDev()
{
	std::vector<std::vector<float>> vec{ { 1.2f, 2.5f, 5.6f, -2.5f },
						{ -3.6f, 9.2f, 0.5f, 7.2f },
						{ 4.3f, 1.3f, 9.4f, -3.4f } };
	const int rows{ 3 }, cols{ 4 };

	std::vector<float> vec_;
	for (int i = 0; i < rows; ++i) {
		vec_.insert(vec_.begin() + i * cols, vec[i].begin(), vec[i].end());
	}
	Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>> m(vec_.data(), 1, rows * cols);

	fprintf(stderr, "source matrix:\n");
	std::cout << m << std::endl;

	Eigen::MatrixXf mean = m.rowwise().mean(); //<==> m.rowwise().sum() / m.cols();
	float mean_ = mean(0, 0);
	Eigen::MatrixXf sqsum = (m * m.transpose()).rowwise().sum();
	float sqsum_ = sqsum(0, 0);
	float scale = 1. / (rows*cols);
	float variance_ = sqsum_ * scale - mean_ * mean_;
	float stddev_ = std::sqrt(variance_);
	fprintf(stdout, "\nEigen implement:\n");
	fprintf(stdout, "mean: %f, variance: %f, standard deviation: %f\n", mean_, variance_, stddev_);

	return 0;
}
執行結果如下:
由以上結果可見:C++、OpenCV、Eigen實現結果是一致的。GitHub

相關推薦

概率論均值標準介紹C++/OpenCV/Eigen實現

概率論是用於表示不確定性宣告(statement)的數學框架。它不僅提供了量化不確定性的方法,也提供了用於匯出新的不確定性宣告的公理。在人工智慧領域,概率論主要有兩種用途。首先,概率法則告訴我們AI系統如何推理,據此我們設計一些演算法來計算或者估算由概率論匯出的表示式。其次,

高斯分佈均值,協的計算matlab實現

今天看論文的時候又看到了協方差矩陣這個破東西,以前看模式分類的時候就特困擾,沒想到現在還是搞不清楚,索性開始查協方差矩陣的資料,惡補之後決定馬上記錄下來,嘿嘿~本文我將用自認為循序漸進的方式談談協方差矩陣。 統計學的基本概念 學過概率統計的孩子都知道,統計裡最

,協標準均值標準等各種

從直觀上來看,協方差表示的是兩個變數總體誤差的期望。方差是兩個變數為同一個變數時的特殊的協方差。兩個不同引數之間的方差就是協方差,若兩個隨機變數X和Y相互獨立,則E[(X-E(X))(Y-E(Y))]=0,因而若上述數學期望不為零,則X和Y必不是相互獨立的,亦即它們之間存在著一定的關係。

期望,,協標準,協矩陣

一些公式 會用到的函式 期望:mean 方差: var 協方差:cov 標準差 :std 相關係數:暫時沒找到 具體的各個函式用法見連結 補充的說明: 協方差矩陣計算的是不同維度之間的

演算法--偏差,標準,協,相關係數相關理解

1 偏差與方差 偏差(bias):描述的是預測值(估計值)的期望與真實值之間的差距。偏差越大,越偏離真實資料,如下圖第二行所示。 方差(variance):描述的是預測值的變化範圍,離散程度,也就是

機器學習知識點()標準Java實現

1、方差:方差是各個資料與平均數之差的平方的平均數。 2、標準差: 標準差(Standard Deviation)  各資料偏離平均數的距離(離均差)的平均數,它是離差平方和平均後的方根。用σ表示。因

作業系統(8)程序--同步互斥介紹;同步問題的解決方案:禁用硬體中斷基於軟體更高階抽象

文章目錄 1. 背景 2. 同步問題的一個例子 3. 同步問題的初步解決方案 1. 方法一 禁用硬體中斷 2. 方法二 基於軟體的同步辦法 3. 方法三 更高階的抽象方法

併發伺服器實現方式之程序執行緒和select

  前言:剛開始學網路程式設計,都會先寫一個客戶端和服務端,不知道你們有沒有試一下:再開啟一下客戶端,是連不上服務端的。還有一個問題不知道你們發現沒:有時啟伺服器,會提示“Address already in use”,過一會就好了,想過為啥麼?在這篇部落格會解釋這個問題。   但現實的伺服器都會連很多客戶

多執行緒學習(4):實現Java多執行緒的方法:ThreadCallable和Runable 的比較與區別

2018年10月03日 目錄 前言 前言 JVM允許應用程式併發執行多執行緒:最常用的是兩個方法:(1)基礎Thread類,重寫run()方法;(2)或實現Runnable 介面,實現介面的run()方法;(3)另外一種方法是:實現callable 介面

C# 委託的呼叫示例(同步呼叫非同步呼叫非同步回撥)

首先,通過程式碼定義一個委託和下面三個示例將要呼叫的方法: 程式碼如下: public delegate int AddHandler(int a,int b); public class 加法類 { public static int A

斐波那契數列的實現方式(遞迴迴圈矩陣)

《劍指offer》裡講到了一種斐波那契數列的 O(logN) 時間複雜度的實現,覺得挺有意思的,三種方法都記錄一下。 一、遞迴     一般來說遞迴實現的程式碼都要比迴圈要簡潔,但是效率不高,比如遞迴計算斐波那契數列第n個元素。 long long Fibonacci

實現動態代理方式(jdkcglibjavaassist)

在編寫程式與實現某些功能時,我們經常會使用到動態代理。動態代理是個很簡單但是很有效的東西。在我們平時使用的框架中,像servlet的filter、包括spring提供的aop以及struts2的攔截器都使用了動態代理功能。我們日常看到的mybatis分頁外掛,以及日誌攔截、

概率論中高斯分佈(正態分佈)介紹C++11std::normal_distribution的使用

高斯分佈:最常用的分佈是正態分佈(normal distribution),也稱為高斯分佈(Gaussian distribution):正態分佈N(x;μ,σ2)呈現經典的”鐘形曲線”的形狀,其中中心峰的x座標由μ給出,峰的寬度受σ控制。正態分佈由兩個引數控制,μ∈R和σ∈

C++類的資料成員:常量(const)靜態(static)普通 的賦值方式

C++類有三種資料成員,由宣告資料成員時修飾資料成員的關鍵字決定:static就是靜態資料成員,const就是常量資料成員,既沒有static也沒有const那就是普通資料成員啦!←_← 相信很多

決策樹(CART)隨機森林GBDT(GBRT)新手導讀資料推薦,附加python實現程式碼

前言 關於決策樹、隨機森林、GBDT(GBRT),這裡記錄我的一些理解,詳細的資料已經非常多了,也有很多好的部落格,再寫沒必要。推薦幾個有代表性的部落格,網際網路資源太多,良莠不齊。看了推薦的文章,你應該會有一個清晰的思路的。 決策樹 在理解決策樹時,在腦海裡面有個二叉樹的

概率論伯努利分佈(bernoulli distribution)介紹C++11std::bernoulli_distribution的使用

Bernoulli分佈(Bernoulli distribution):是單個二值隨機變數的分佈。它由單個引數ø∈[0,1],ø給出了隨機變數等於1的概率。它具有如下的一些性質:P(x=1)= øP(x=0)=1-øP(x=x)= øx(1-ø)1-xEx[x]= øVarx

概率論指數分佈介紹C++11std::exponential_distribution的使用

指數分佈:在深度學習中,我們經常會需要一個在x=0點處取得邊界點(sharp point)的分佈。為了實現這一目的,我們可以使用指數分佈(exponential distribution):p(x;λ)= λlx≥0exp(-λx)指數分佈使用指示函式(indicator f

Android 圖片模糊高斯模糊毛玻璃的實現方法

轉載自:http://blog.csdn.net/fan7983377/article/details/51568059 效果圖: 原文連結:點選訪問 這使用也很簡單,匯入依賴,使用模糊方法就行,就這兩步搞定 依賴: <code class="hljs

資料結構圖文解析之:陣列單鏈表雙鏈表介紹C++模板實現

0. 資料結構圖文解析系列 1. 線性表簡介 線性表是一種線性結構,它是由零個或多個數據元素構成的有限序列。線性表的特徵是在一個序列中,除了頭尾元素,每個元素都有且只有一個直接前驅,有且只有一個直接後繼,而序列頭元素沒有直接前驅,序列尾元素沒有直接後繼。 資料結構中常見的線性結構有陣列、單鏈表、雙鏈表、迴圈

C語言的整型資料型別:intshort int和long int

int資料型別的位數為16位,short int資料型別的位數也是16位。而long int的位數為32位,可用來儲存比較大的整數。  short int 和 long int可以縮寫為short 和 long。               C語言中的整型資料型別int、