python-機器學習程式碼總結
1、實現二維正態分佈(高斯分佈)
- 給定引數生成二維正態分佈,並求給定值下的概率密度
def getGauss(X,mean,cov):
covv = np.array(cov)
c1 = math.pow(np.linalg.det(covv),0.5)#求行列式
c2 = np.linalg.inv(covv)#求逆
XX = np.array(X)
meann = np.array(mean)
de = np.array(XX-meann)
de1 = de.T
p1 = np.dot(de1,c2)
p2 = (-1)* np.dot(p1,de)/2
p = math.pow(math.e,p2)/(2*math.pi*c1)
return p
- 生成符合二維正態分佈的隨機數
import numpy as np
mean1 = [0, 0]
cov1 = [[1, 1], [1, 6]]
data = np.random.multivariate_normal(mean1, cov1, 100)
- 協方差矩陣
#得到協方差矩陣S
def getS(mean,data):
sum = 0
for i in range(len(data)):
xx = np.array(data[i]) - np.array(mean)
xxT = reshapelist(np.array(xx))
sum = sum + np.dot(xxT,np.array([xx]))
return (sum/len(data))
2、矩陣簡單運算
import numpy as np
lis = np.mat([[1,2,3],[3,4,5],[4,5,6]])
print(np.linalg.inv(lis)) # 求矩陣的逆矩陣
print(lis.transpose()) # 求矩陣的轉置矩陣
print(np.linalg.det(lis)) # 求矩陣的行列式
print(np.linalg.eig(lis)) # 求矩陣的特徵值與特徵向量,求得的元組中第一個為特徵值元組,第二個為相對應的特徵向量
eigenvalues, feature_vectors = np.linalg.eig(cov) # 特徵值分解.得到特徵值和特徵向量
shape:
>>> c = array([[1,1],[1,2],[1,3],[1,4]])
>>> c.shape
(4, 2)
>>> c.shape[0]
4
>>> c.shape[1]
2
3、隨機數
import random
# 產生 1 到 10 的一個整數型隨機數
print( random.randint(1,10) )
# 產生 0 到 1 之間的隨機浮點數
print( random.random() )
# 產生 1.1 到 5.4 之間的隨機浮點數,區間可以不是整數
print( random.uniform(1.1,5.4) )
# 從序列中隨機選取一個元素
print( random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) )
# 生成從1到100的間隔為2的隨機整數
print( random.randrange(1,100,2) )
# 將序列a中的元素順序打亂
a=[1,3,5,6,7]
random.shuffle([1,3,5,6,7])
print(a)
3、排序
x = np.array([1,4,3,-1,6,9])
x.argsort()
# array([3, 0, 1, 2, 4, 5], dtype=int64)
#取陣列最小值
x[x.argsort()[0]]
#最大值
x[x.argsort()[-1]]
4、 畫圖
import matplotlib.pyplot as plt
colors1 = '#00CED1' # 點的顏色
colors2 = '#DC143C'
colors3 = '#808080'
colors4 = '#000080'
for i in range(len(x)):
if(abs(C[i]-0)<1e-10):
plt.scatter(x[i], y[i],c=colors1)
elif(abs(C[i]-1)<1e-10):
plt.scatter(x[i], y[i], c=colors2)
elif (abs(C[i]-2)<1e-10):
plt.scatter(x[i], y[i], c=colors3)
elif(abs(C[i]-3)<1e-10):
plt.scatter(x[i], y[i], c=colors1)
for i in range(len(mean)):
plt.scatter(mean[i][0],mean[i][1],c=colors4)
#plt.plot(xf, yf,label="M="+str(m-1)) #線圖
plt.figure(figsize=(6, 4))
plt.legend() # 顯示圖例
plt.show() # 顯示畫圖
5、資料集來源
- UCI資料集:http://archive.ics.uci.edu/ml/datasets.php
- 人臉資料集:https://www.bioid.com/facedb/ (BioD人臉資料庫)
BioD人臉資料庫pgm檔案讀取,顯示操作:
# 載入臉部資料.得到m*n的陣列。m*n為pgm檔案的畫素
def load_face_data(filepath):
for dir_path, dir_names, file_names in os.walk(filepath):
# walk() 函式記憶體放的是資料的絕對路徑,同時注意斜槓的方向。
for fn in file_names:
if fn[-3:] == 'pgm':
image_filename = os.path.join(dir_path, fn)
x = mh.imread(image_filename, as_grey=True)
print(x.shape[0])
#畫出影像
plt.imshow(x)
plt.axis('off') # 不顯示座標軸
plt.show()
return x
用記事本開啟
P5為pgm檔案版本。
384 為生成陣列的列數。286 為生成陣列的行數。384*286為畫素
255為最大灰度
6、二維陣列的一些運算
#得到轉置後的陣列
def reserve(data):
n = data.shape[0] #行數
m = data.shape[1] #列數
dataT = np.zeros((m,n))
for i in range(n):
for j in range(m):
dataT[j][i] = data[i][j]
return dataT
#行向量轉化為列向量
def reshapelist(list):
#print(list)
rl = np.zeros((len(list),1))
for i in range(len(list)):
rl[i][0] = list[i]
return rl
相關文章
- 機器學習基礎總結機器學習
- 機器學習-步驟總結機器學習
- 機器學習、深度學習資源總結機器學習深度學習
- 機器學習基本概念總結機器學習
- 機器學習問題方法總結機器學習
- 機器學習實驗出錯總結機器學習
- 總結機器學習優質學習文章Top50!機器學習
- 機器學習數學知識積累總結機器學習
- [機器學習] 低程式碼機器學習工具PyCaret庫使用指北機器學習
- 【機器學習】帶你3分鐘看完《機器學習實戰》總結篇機器學習
- 小程式學習總結
- 經典機器學習演算法總結機器學習演算法
- LC-3 虛擬機器學習總結虛擬機機器學習
- 《美團機器學習實踐》—— 讀後總結機器學習
- AutoML:機器學習的下一波浪潮(附程式碼&連結)TOML機器學習
- 機器學習工具總覽機器學習
- CSAPP第三章——程式的機器級表示:學習筆記總結APP筆記
- 用Python進行機器學習(附程式碼、學習資源)Python機器學習
- 基於Sklearn機器學習程式碼實戰機器學習
- 機器學習去除馬賽克案例(程式碼)機器學習
- 機器學習 — AdaBoost演算法(手稿+程式碼)機器學習演算法
- 機器學習及深度學習的知識點及面試題總結機器學習深度學習面試題
- 【機器學習基礎】常見損失函式總結機器學習函式
- 資料探勘,人工智慧,機器學習會議總結人工智慧機器學習
- 機器學習總結(2)—分類中的代數模型機器學習模型
- mediakit 原始碼 輕微微 學習總結原始碼
- 機器學習&惡意程式碼靜態檢測機器學習
- 機器學習_K近鄰Python程式碼詳解機器學習Python
- 學習總結
- 【機器學習】機器學習建立演算法第1篇:機器學習演算法課程定位、目標【附程式碼文件】機器學習演算法
- 百面機器學習總結--第一章特徵工程機器學習特徵工程
- 機器學習和神經網路的簡要框架總結機器學習神經網路框架
- 【演算法工程師】機器學習面試問題總結演算法工程師機器學習面試
- Python-學習計劃Python
- 利用深度學習和機器學習預測股票市場(附程式碼)深度學習機器學習
- 機器人建模與控制複習總結機器人
- C#程式設計學習(04):基本操作學習總結C#程式設計
- (資料結構程式碼,總結,自我思考)=> { return 個人學習筆記; } 【To be continued~】資料結構筆記