摘要:摘要本文是作者看慕課網(wǎng)學(xué)習(xí)記錄筆記,內(nèi)容技術(shù)水準(zhǔn)是入門,大佬看到請輕言指點(diǎn),手下留情介紹人工智能的基本概念和邏輯體系研究兩種麵分類算法通過運(yùn)用分類算法,實(shí)現(xiàn)只有一層的神經(jīng)網(wǎng)絡(luò)介紹分類算法的理論基礎(chǔ)機(jī)器學(xué)習(xí)的本質(zhì)模擬人的神經(jīng)元神經(jīng)元人工神經(jīng)元
摘要
本文是作者看慕課網(wǎng)學(xué)習(xí)記錄筆記,內(nèi)容技術(shù)水準(zhǔn)是入門,大佬看到請輕言指點(diǎn),手下留情
介紹人工智能的基本概念和邏輯體系
研究兩種麵分類算法
通過python ,運(yùn)用分類算法,實(shí)現(xiàn)只有一層的神經(jīng)網(wǎng)絡(luò)
介紹分類算法的理論基礎(chǔ)機(jī)器學(xué)習(xí)的本質(zhì):模擬人的神經(jīng)元神經(jīng)元
人工神經(jīng)元原理:
電信號(hào)從神經(jīng)元的交差部分(左側(cè))輸入
進(jìn)入到細(xì)胞核(左側(cè)綠色)進(jìn)行結(jié)合到一起,進(jìn)行統(tǒng)一計(jì)算得出一個(gè)電信號(hào)
通過軸突(中間黃色部分)傳遞到后面的神經(jīng)末尾部分(右側(cè))
再把電信號(hào)分解成若干個(gè)部分,傳遞給外面的神經(jīng)元
神經(jīng)元的數(shù)學(xué)模擬x表示傳進(jìn)來的電信號(hào),每個(gè)x表示每個(gè)電信號(hào);對電信號(hào)進(jìn)行弱化,弱化系數(shù)w;
弱化后的電信號(hào)傳入細(xì)胞核,綜合處理后得出唯一的電信號(hào)z;細(xì)胞核還會(huì)對電信號(hào)繼續(xù)處理(激活函數(shù),示例單元步調(diào)函數(shù)),即數(shù)據(jù)分類行為。
常見的數(shù)學(xué)運(yùn)算概念向量點(diǎn)積
矩陣轉(zhuǎn)置
權(quán)重向量W,訓(xùn)練樣本Ⅹ
把權(quán)重向量初始化為0,或把每個(gè)分量初始化為[0,1]間任意小數(shù)
把訓(xùn)練樣本輸入感知器,得到分類結(jié)果(-1或1)
根據(jù)分類結(jié)果更新權(quán)重向量
步調(diào)函數(shù)與閥值 權(quán)重更新算法 閥值的更新 感知器算法試用范圍預(yù)測數(shù)據(jù)特點(diǎn)可線性分割,要求可以把感知的值有一條線明確分割出來,目標(biāo)就是找到中間的分割線感知器算法總結(jié)
初始化感知器權(quán)重向量w
訓(xùn)練樣本的電信號(hào)x輸入到感知器∑(求和),輸出求和的最終結(jié)果
求和結(jié)果輸入到步調(diào)函數(shù)(激活函數(shù)),得到結(jié)果1或-1
如果結(jié)果正確就直接輸出,錯(cuò)誤就返回回去對權(quán)重向量w進(jìn)行更新,更新之后等到新的權(quán)重向量w后
再把原有的訓(xùn)練樣本或者新的訓(xùn)練樣本結(jié)合新的權(quán)重向量w進(jìn)行結(jié)合,繼續(xù)步驟2后續(xù)操作
通過上述步驟直到所有訓(xùn)練樣本都正確輸出,達(dá)到最準(zhǔn)確的權(quán)重向量w
使用 Pandas, NumPy和 matplotlib等 python開發(fā)庫去讀取,加工和可視化數(shù)據(jù)集,并實(shí)現(xiàn)感知器分類算法源碼地址:klinson/machine-learning-pythonPython 環(huán)境
Python3.7.3
安裝自行下載Python環(huán)境包
需要安裝tkinter
// centos sudo yum install tkinter // ubuntu sudo apt-get install tkinter // cd python-path sudo ./configure --with-tcltk-includes="-I/usr/include" --with-tcltk-libs="-L/usr/lib64 -ltcl8.5 -L/usr/lib64 -ltk8.5" --enable-optimizations sudo make && sudo make install感知器類實(shí)現(xiàn)
文件名Perceptron.py
# -*- coding: utf-8 -*- import numpy as np class Perceptron(object): """ Perceptron 感知器算法 eta: 學(xué)習(xí)率 n_iter: 權(quán)重向量的訓(xùn)練次數(shù) w_: 神經(jīng)分叉權(quán)重向量 errors_: 用來記錄神經(jīng)元判斷出錯(cuò)次數(shù) """ def __init__(self, eta = 0.01, n_iter = 0): self.eta = eta; self.n_iter = n_iter; pass def fit(self, X, y): """ 權(quán)重更新算法 根據(jù)輸入樣本,進(jìn)行神經(jīng)元培訓(xùn),x是輸入樣本向量,y對應(yīng)樣本分類 X:shape[n_samples, n_features] X:[[1, 2, 3], [4, 5, 6]] n_samples: 2 n_features: 3 """ # 初始化權(quán)重為0 # 加一是因?yàn)榍懊嫠惴ㄌ岬降膚0,是步調(diào)函數(shù)閾值 self.w_ = np.zeros(1 + X.shape[1]); self.errors_ = []; for _ in range(self.n_iter): errors = 0; """ X:[[1, 2, 3], [4, 5, 6]] y:[1, -1] zip(X, y) = [[1, 2, 3, 1], [4, 5, 6, -1]] target = 1 / -1 """ for xi, target in zip(X, y): """ update = n(成功率) * (y - y"),結(jié)果為0表示預(yù)測正確 target: y,預(yù)定結(jié)果 self.predict(xi): y", 對xi進(jìn)行預(yù)測結(jié)果 """ update = self.eta * (target - self.predict(xi)); """ xi 是一個(gè)向量 update * xi 等級: [▽w(1) = x[1] * update, ▽w(2) = x[2] * update, ▽w(n) = x[n] * update] """ self.w_[1:] += update * xi; # 更新閾值 self.w_[0] += update; errors += int(update != 0.0) self.errors_.append(errors); pass pass pass def net_input(self, X): """ 實(shí)現(xiàn)向量點(diǎn)積 z = W0*x0+W1*x1+...+Wn*xn; """ return np.dot(X, self.w_[1:] + self.w_[0]) pass def predict(self, X): # 計(jì)算xn所屬于的分類,先進(jìn)行點(diǎn)積,再進(jìn)行判斷 return np.where(self.net_input(X) >= 0.0, 1, -1); pass執(zhí)行文件
文件名main.py
# -*- coding: utf-8 -*- import pandas as pd import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap import numpy as np from Perceptron import Perceptron def plot_decision_regions(X, y, classifier, resolution=0.02): #畫圖劃線分割 markers = ["s", "x", "o", "v"]; colors= ["red", "blue", "lightred", "gray", "cyan"] cmap = ListedColormap(colors[:len(np.unique(y))]); x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max(); x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max(); #print(x1_min, x1_max, x2_min, x2_max); # 根據(jù)數(shù)據(jù)最大最小值構(gòu)建向量,差值resolution xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution), np.arange(x2_min, x2_max, resolution)) #print(np.arange(x1_min, x1_max, resolution).shape, np.arange(x1_min, x1_max, resolution), xx1.shape, xx1) z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T); z = z.reshape(xx1.shape); plt.contourf(xx1, xx2, z, alpha=0.4, cmap=cmap) plt.xlim(xx1.min(), xx1.max()) plt.ylim(xx2.min(), xx2.max()) for idx,cl in enumerate(np.unique(y)): plt.scatter(x=X[y==cl, 0], y=X[y==cl, 1], alpha=0.8, c=cmap(idx), marker=markers[idx], label=cl) pass plt.xlabel("花瓣長度"); plt.ylabel("花徑長度"); plt.legend(loc="upper left"); plt.show(); pass # 讀取文件 file = "./examples.csv"; df = pd.read_csv(file, header=None); # print(df.head(10)) # 處理第4列表 y = df.loc[0: 100, 4].values; y = np.where(y == "Tris-setosa", -1, 1); # print(y) # 講第0和2列取出來分析 X = df.iloc[0: 100, [0, 2]].values; # print(X) # 對數(shù)據(jù)可視化 """ plt.scatter(X[:5, 0], X[:5, 1], color="red", marker="o", label="setosa"),; plt.scatter(X[5:10, 0], X[5:10, 1], color="blue", marker="x", label="versicolor"); plt.xlabel("花瓣長度"); plt.ylabel("花徑長度"); plt.legend(loc="upper left"); plt.show(); """ # 訓(xùn)練 ppn = Perceptron(eta=0.1, n_iter=10); ppn.fit(X, y) """ # 訓(xùn)練輸出 plt.plot(range(1, len(ppn.errors_) + 1), ppn.errors_, marker="o"); plt.xlabel("Epochs"); plt.ylabel("錯(cuò)誤分類次數(shù)"); plt.show(); """ # 繪制分割圖 plot_decision_regions(X, y, ppn, resolution=0.02)訓(xùn)練數(shù)據(jù)
文件名examples.csv
2.1,3.5,2.7,0.2,Tris-setosa 3.1,2.6,2.6,0.2,Tris-setosa 2.1,5.5,3.4,0.5,Tris-setosa 3.1,5.2,2.9,0.2,Tris-setosa 3.1,3.4,2.3,0.3,Tris-setosa 3.1,2.3,2.1,0.2,Tris-setosa 4.7,3.5,1.4,0.2,Tris-versicolor 4.3,7.3,1.1,0.1,Tris-versicolor 4.1,4.5,1.4,0.2,Tris-versicolor 4.4,4.2,1.3,0.3,Tris-versicolor執(zhí)行和結(jié)果
$ python main.py適應(yīng)性線性神經(jīng)元
未完待續(xù),敬請期待
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/43819.html
摘要:深度學(xué)習(xí)在過去的幾年里取得了許多驚人的成果,均與息息相關(guān)。機(jī)器學(xué)習(xí)進(jìn)階筆記之一安裝與入門是基于進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),被廣泛用于語音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域。零基礎(chǔ)入門深度學(xué)習(xí)長短時(shí)記憶網(wǎng)絡(luò)。 多圖|入門必看:萬字長文帶你輕松了解LSTM全貌 作者 | Edwin Chen編譯 | AI100第一次接觸長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)時(shí),我驚呆了。原來,LSTM是神...
摘要:值得一提的是每篇文章都是我用心整理的,編者一貫堅(jiān)持使用通俗形象的語言給我的讀者朋友們講解機(jī)器學(xué)習(xí)深度學(xué)習(xí)的各個(gè)知識(shí)點(diǎn)。今天,紅色石頭特此將以前所有的原創(chuàng)文章整理出來,組成一個(gè)比較合理完整的機(jī)器學(xué)習(xí)深度學(xué)習(xí)的學(xué)習(xí)路線圖,希望能夠幫助到大家。 一年多來,公眾號(hào)【AI有道】已經(jīng)發(fā)布了 140+ 的原創(chuàng)文章了。內(nèi)容涉及林軒田機(jī)器學(xué)習(xí)課程筆記、吳恩達(dá) deeplearning.ai 課程筆記、機(jī)...
摘要:是你學(xué)習(xí)從入門到專家必備的學(xué)習(xí)路線和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線性代數(shù)概率論與數(shù)理統(tǒng)計(jì)三門課程,這三門課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門和進(jìn)階資料非常適合。書籍介紹深度學(xué)習(xí)通常又被稱為花書,深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開源平...
閱讀 736·2025-02-07 13:40
閱讀 1049·2025-02-07 13:37
閱讀 1104·2024-11-06 13:38
閱讀 1194·2024-09-10 13:19
閱讀 1312·2024-08-22 19:45
閱讀 1491·2021-11-19 09:40
閱讀 2845·2021-11-18 13:14
閱讀 4422·2021-10-09 10:02