【Numpy學習記錄】np.cov詳解
寫在篇前
在概率論和統計學中,協方差用於衡量兩個變數的總體誤差。而方差是協方差的一種特殊情況,即當兩個變數是相同的情況。其定義的數學形式是:
協方差數學形式
-
公式
-
結果形式
協方差程式碼形式
函式原型:def cov
(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)
- m:一維或則二維的陣列,預設情況下每一行代表一個變數(屬性),每一列代表一個觀測
- y:與m具有一樣的形式的一組資料
- rowvar:預設為True,此時每一行代表一個變數(屬性),每一列代表一個觀測;為False時,則反之
- bias:預設為False,此時標準化時除以n-1;反之為n。其中n為觀測數
- ddof:型別是int,當其值非None時,bias引數作用將失效。當ddof=1時,將會返回無偏估計(除以n-1),即使指定了fweights和aweights引數;當ddof=0時,則返回簡單平均值。
- frequency weights:一維陣列,代表每個觀測要重複的次數(相當於給觀測賦予權重)
- analytic weights:一維陣列,代表觀測向量權重。對於被認為“重要”的觀察,這些相對權重通常很大,而對於被認為不太重要的觀察,這些相對權重較小。如果ddof = 0,則可以使用權重陣列將概率分配給觀測向量。
程式碼示例
基本使用
import numpy as np
# 計算協方差的時候,一行代表一個特徵
# 下面計算cov(T, S, M)
T = np.array([9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])
S = np.array([39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])
M = np.asarray([38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])
X = np.vstack((T, S, M))
# X每行代表一個屬性
# 每列代表一個示例,或者說觀測
print(np.cov(X))
# [[ 47.71969697 122.9469697 129.59090909]
# [122.9469697 370.08333333 374.59090909]
# [129.59090909 374.59090909 399. ]]
重點:協方差矩陣計算的是不同維度之間的協方差,而不是不同樣本之間。拿到一個樣本矩陣,首先要明確的就是行代表什麼,列代表什麼。
fweights
frequency weights:一維陣列,代表每個觀測要重複的次數(相當於給觀測賦予權重)
T = np.array([9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])
S = np.array([39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])
M = np.asarray([38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])
X = np.vstack((T, S, M))
print(np.cov(X, None, True, False, fweights=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
# 和上面例子結果一樣
# [[ 47.71969697 122.9469697 129.59090909]
# [122.9469697 370.08333333 374.59090909]
# [129.59090909 374.59090909 399. ]]
T = np.array([9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])
S = np.array([39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])
M = np.asarray([38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])
X = np.vstack((T, S, M))
print(np.cov(X, None, True, False, fweights=[2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
# 結果變了,就是因為相當於在X中增加了一列[9,39,38].T
# [[ 45.6025641 121.55769231 128.43589744]
# [121.55769231 381.42307692 389.30769231]
# [128.43589744 389.30769231 415.76923077]]
T = np.array([9, 9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])
S = np.array([39, 39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])
M = np.asarray([38, 38
相關推薦
【Numpy學習記錄】np.cov詳解
寫在篇前
在概率論和統計學中,協方差用於衡量兩個變數的總體誤差。而方差是協方差的一種特殊情況,即當兩個變數是相同的情況。其定義的數學形式是:
C
o
【深度學習&分散式】Parameter Server 詳解
Parameter Server 詳解
MXNet 是李沐和陳天奇等各路英雄豪傑打造的開源深度學習框架(最近不能更火了),其中最吸引我的是它的分散式訓練的特性;而提供支援其分散式訓練特性的正是當年李少帥和 Alex Smola 等人開發的 parame
【Python 學習記錄】 3.安裝第三方庫,numpy和matplotlib與簡單製圖
造輪子是不可能造的,就只有等別人造好了,偷個懶拿過來用這樣子才過的下去
1.Windows下使用pip安裝官方源中的第三方庫
Python的開源氛圍很好,官方提供了PyPI這樣的第三方庫索引網站,幾乎所有主流的第三方庫都會在此註冊.並且python提供了官方下
【PyQt5 學習記錄】004:簡單多線程筆記
elf false fix sign widgets qtextedit odin 文本 spa 在文本編輯框中每隔幾秒添加一行文本。
1 #!/usr/bin/python3
2 # -*- coding:utf-8 -*-
3
4 import sys
5
【PyQt5 學習記錄】005:QMainWindow 及狀態欄、菜單欄和工具欄
qt5 open file statusbar ati etc con bubuko import
1 #!/usr/bin/env python
2
3 import sys
4 from PyQt5.QtWidgets import (QApplic
【PyQt5 學習記錄】010:QSplitter
core spl none idt window lap cto psi eth
1 import sys
2 from PyQt5.QtWidgets import (QApplication,
3 QWi
【PyQt5 學習記錄】011:使用 QListWidet 建立列表
使用 QListWidet 建立列表
作者: 八月未見 部落格: https://www.cnblogs.com/jmtm/
建立列表:
list_widget = QListWidget()
插入專案:
直接新增文字:
# 在末尾新增:
list_widget.addItem("Item")
【程式設計學習記錄】遞迴轉非遞迴
想要知道怎麼遞迴轉非遞迴,就得先弄明白遞迴函式呼叫和返回的步驟(來源於網課):
呼叫
儲存呼叫資訊(引數,返回地址)
分配資料區(區域性變數)
控制轉移給被調函式的入口
返回
儲存返回資訊
釋放資料區
控制轉移到上級函式
因為遞迴滿足L
【Python 學習記錄】 2.試試python編輯器,匯入py檔案
這節中,我突然發現Python其實是自帶編輯器的,所以為什麼我還去下了notepad++啊……
1.Python編輯器
由於不滿足於每次開啟Python都要重新寫一遍所有程式碼,我決定將所有程式碼儲存下來,把一些可以重複利用的部分寫成函式的形式,儲存成.py檔
【D3D學習記錄】DrawIndexedPrimitive函式的詳細解釋
為了便於說明,首先假設存在下列的頂點緩衝和索引緩衝
vb=
{
{-1.0, 1.0, 0.0}, index 0
{ 1.0, 1.0, 0.0}, index 1
{ 1.0,-1.0, 0.0}, index 2
{-1.0,
【每日安全資訊】谷歌詳解Google Play APK安全防護服務採用的機器學習技術
與生態較為封閉的蘋果 iOS 相比,谷歌為 Android 使用者提供了直接通過 APK 包來安
【java學習記錄】5.輸入年月日,計算其為當年的第幾天
public class Compute_Year_Month_Day {public static void main(String args[]){Scanner sc = new Scanner(System.in);//輸入年份System.out.print("請輸
【ios學習記錄】- 通過nib檔案實現自定義表檢視單元
新增自定義表檢視單元有兩種方法:一種方法是建立單元時在程式中新增子檢視,第二種方法是從分鏡或者nib檔案中載入它們,在這裡我們簡單採用第二種方法
一般來說,ios資料列表包含了兩部分:表檢視(分組表和無格式表)和表檢視單元。每個表檢視都是UITable
【ios學習記錄】-如何定製UITableView的圓角單元格
自從ios7更新以來,UITableView控制元件的邊角style由預設圓角變成了直角,更加適應UI扁平化設計的效果了。但對於某種情況來說,如果tableview寬度不是拉伸到與父檢視等寬,那麼使用直角的tableview則會顯得不好看。如下圖分組列
【Android 學習記錄】JsonObject解析JSON資料
public class JsonObject {
private static final String TAG = "JsonObject";
private void send
【學習筆記】Log4j.properties詳解
一、Log4j簡介
Log4j有三個主要的元件:Loggers(記錄器),Appenders (輸出源)和Layouts(佈局)。這裡可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個元件可以輕鬆地記錄資訊的型別和級別,並可以在執行時控制日誌輸出
【java學習記錄】13.實現簡單的瀏覽器功能:獲取原始碼、儲存原始碼、獲取圖片
仿照IE瀏覽器,設計一簡單的網站訪問程式,實現如下功能:
(1)具有類似IE的簡單介面,使用者能輸入URL地址,獲得輸入URL的HTML原始碼;
(2)將獲得的HTML原始碼儲存到指定檔案中。D:\index.html
(3)從獲得的HTML原始碼中,選擇
【Python 學習記錄】0.Python3的安裝及準備
0.0 寫在前面
因為 別人的緣故+某部日劇的影響+備考計算機二級 打算系統自學一遍Python3,以前對這門語言只是有初步的認識,本人一直是MATLAB黨,所謂文無第一,計算機語言其實也沒有好壞之分(?),多學一點總是沒錯的.
網上其實有
【UE4學習記錄】UE4網路方面的探索0-2
在上一章中,我粗略的表達了在最開始的UI介面設定上的操作,沒有用到一絲程式碼,直接藍圖敲定去實現基本的東西。
接下來回到正題,我們需要實現UI所對應的具體功能了。
第一步:整理思路
首先確定UI 的按
【java學習記錄】7.定義一個介面ArearInterface,其中包含一個方法,計算面積三角形、矩形、圓形的面積
* 定義一個介面ArearInterface,其中包含一個方法,計算面積 * 定義三個類:三角形、矩形、圓形,分別實現ArearInterface中的方法 * 定義一個主類,將三角形和圓形的面積顯示在螢幕上ArearInterface 介面public interface A