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
相關文章
- Python-爬蟲工程師-面試總結Python爬蟲工程師面試
- 機器學習總結 (機器學習實踐筆記)機器學習筆記
- 機器學習-步驟總結機器學習
- 機器學習基礎總結機器學習
- 程式碼走查總結
- 機器學習問題方法總結機器學習
- 機器學習基本概念總結機器學習
- 機器學習演算法總結機器學習演算法
- 機器學習模型的特性總結機器學習模型
- C 語言程式碼總結
- IOS常用程式碼總結(一)iOS
- iOS程式碼實踐總結iOS
- Python-程式Python
- Java程式碼編寫、程式碼優化技巧總結Java優化
- 程式碼審計入門總結
- 總結常用的掛馬程式碼
- PHP 程式碼優化技巧總結PHP優化
- c++程式碼優化總結C++優化
- JavaScript 程式碼效能優化總結JavaScript優化
- 《美團機器學習實踐》—— 讀後總結機器學習
- 經典機器學習演算法總結機器學習演算法
- LC-3 虛擬機器學習總結虛擬機機器學習
- 機器學習、深度學習資源總結機器學習深度學習
- 機器學習之開源庫大總結機器學習
- 【機器學習】帶你3分鐘看完《機器學習實戰》總結篇機器學習
- 閱讀《程式碼整潔之道》總結
- 知乎專案程式碼閱後總結
- c#程式碼優化總結1C#優化
- PHP程式碼審計學習總結PHP
- 機器學習數學知識積累總結機器學習
- 微信小程式開發總結(附原始碼)微信小程式原始碼
- 《程式碼整潔之道》總結和筆記筆記
- 控制程式碼表篇——總結與提升
- 《軟技能:程式碼之外的生存指南》總結
- 一文總結ACE程式碼框架框架
- [程式碼審計]php上傳漏洞總結PHP
- 高效的jQuery程式碼編寫技巧總結jQuery
- Android程式碼優化小技巧總結Android優化