成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

機器學習入門筆記

miguel.jiang / 1551人閱讀

摘要:摘要本文是作者看慕課網(wǎng)學習記錄筆記,內(nèi)容技術(shù)水準是入門,大佬看到請輕言指點,手下留情介紹人工智能的基本概念和邏輯體系研究兩種麵分類算法通過運用分類算法,實現(xiàn)只有一層的神經(jīng)網(wǎng)絡(luò)介紹分類算法的理論基礎(chǔ)機器學習的本質(zhì)模擬人的神經(jīng)元神經(jīng)元人工神經(jīng)元

摘要
本文是作者看慕課網(wǎng)學習記錄筆記,內(nèi)容技術(shù)水準是入門,大佬看到請輕言指點,手下留情

介紹人工智能的基本概念和邏輯體系

研究兩種麵分類算法

通過python ,運用分類算法,實現(xiàn)只有一層的神經(jīng)網(wǎng)絡(luò)

介紹分類算法的理論基礎(chǔ)
機器學習的本質(zhì):模擬人的神經(jīng)元
神經(jīng)元

人工神經(jīng)元原理:

電信號從神經(jīng)元的交差部分(左側(cè))輸入

進入到細胞核(左側(cè)綠色)進行結(jié)合到一起,進行統(tǒng)一計算得出一個電信號

通過軸突(中間黃色部分)傳遞到后面的神經(jīng)末尾部分(右側(cè))

再把電信號分解成若干個部分,傳遞給外面的神經(jīng)元

神經(jīng)元的數(shù)學模擬

x表示傳進來的電信號,每個x表示每個電信號;對電信號進行弱化,弱化系數(shù)w;

弱化后的電信號傳入細胞核,綜合處理后得出唯一的電信號z;細胞核還會對電信號繼續(xù)處理(激活函數(shù),示例單元步調(diào)函數(shù)),即數(shù)據(jù)分類行為。

常見的數(shù)學運算概念

向量點積

矩陣轉(zhuǎn)置

感知器數(shù)據(jù)分類算法步驟 步驟

權(quán)重向量W,訓練樣本Ⅹ

把權(quán)重向量初始化為0,或把每個分量初始化為[0,1]間任意小數(shù)

把訓練樣本輸入感知器,得到分類結(jié)果(-1或1)

根據(jù)分類結(jié)果更新權(quán)重向量

步調(diào)函數(shù)與閥值

權(quán)重更新算法

閥值的更新

感知器算法試用范圍
預測數(shù)據(jù)特點可線性分割,要求可以把感知的值有一條線明確分割出來,目標就是找到中間的分割線

感知器算法總結(jié)

初始化感知器權(quán)重向量w

訓練樣本的電信號x輸入到感知器∑(求和),輸出求和的最終結(jié)果

求和結(jié)果輸入到步調(diào)函數(shù)(激活函數(shù)),得到結(jié)果1或-1

如果結(jié)果正確就直接輸出,錯誤就返回回去對權(quán)重向量w進行更新,更新之后等到新的權(quán)重向量w后

再把原有的訓練樣本或者新的訓練樣本結(jié)合新的權(quán)重向量w進行結(jié)合,繼續(xù)步驟2后續(xù)操作

通過上述步驟直到所有訓練樣本都正確輸出,達到最準確的權(quán)重向量w

使用 Pandas, NumPy和 matplotlib等 python開發(fā)庫去讀取,加工和可視化數(shù)據(jù)集,并實現(xiàn)感知器分類算法
源碼地址:klinson/machine-learning-python
Python 環(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
感知器類實現(xiàn)

文件名Perceptron.py

# -*- coding: utf-8 -*-
import numpy as np

class Perceptron(object):
    """
    Perceptron
    感知器算法
    eta: 學習率
    n_iter: 權(quán)重向量的訓練次數(shù)
    w_: 神經(jīng)分叉權(quán)重向量
    errors_: 用來記錄神經(jīng)元判斷出錯次數(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īng)元培訓,x是輸入樣本向量,y對應樣本分類

        X:shape[n_samples, n_features]
        X:[[1, 2, 3], [4, 5, 6]]
        n_samples: 2
        n_features: 3
        """

        # 初始化權(quán)重為0
        # 加一是因為前面算法提到的w0,是步調(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表示預測正確
                target: y,預定結(jié)果
                self.predict(xi): y", 對xi進行預測結(jié)果
                """
                update = self.eta * (target - self.predict(xi));
                

                """
                xi 是一個向量
                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):
        """
        實現(xiàn)向量點積
        z = W0*x0+W1*x1+...+Wn*xn;
        """

        return np.dot(X, self.w_[1:] + self.w_[0])
        pass

    def predict(self, X):
        # 計算xn所屬于的分類,先進行點積,再進行判斷
        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();
"""

# 訓練
ppn = Perceptron(eta=0.1, n_iter=10);
ppn.fit(X, y)

"""
# 訓練輸出
plt.plot(range(1, len(ppn.errors_) + 1), ppn.errors_, marker="o");
plt.xlabel("Epochs");
plt.ylabel("錯誤分類次數(shù)");
plt.show();
"""

# 繪制分割圖
plot_decision_regions(X, y, ppn, resolution=0.02)
訓練數(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 

適應性線性神經(jīng)元
未完待續(xù),敬請期待

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43819.html

相關(guān)文章

  • 深度學習

    摘要:深度學習在過去的幾年里取得了許多驚人的成果,均與息息相關(guān)。機器學習進階筆記之一安裝與入門是基于進行研發(fā)的第二代人工智能學習系統(tǒng),被廣泛用于語音識別或圖像識別等多項機器深度學習領(lǐng)域。零基礎(chǔ)入門深度學習長短時記憶網(wǎng)絡(luò)。 多圖|入門必看:萬字長文帶你輕松了解LSTM全貌 作者 | Edwin Chen編譯 | AI100第一次接觸長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)時,我驚呆了。原來,LSTM是神...

    Vultr 評論0 收藏0
  • 分享AI有道干貨 | 126 篇 AI 原創(chuàng)文章精選(ML、DL、資源、教程)

    摘要:值得一提的是每篇文章都是我用心整理的,編者一貫堅持使用通俗形象的語言給我的讀者朋友們講解機器學習深度學習的各個知識點。今天,紅色石頭特此將以前所有的原創(chuàng)文章整理出來,組成一個比較合理完整的機器學習深度學習的學習路線圖,希望能夠幫助到大家。 一年多來,公眾號【AI有道】已經(jīng)發(fā)布了 140+ 的原創(chuàng)文章了。內(nèi)容涉及林軒田機器學習課程筆記、吳恩達 deeplearning.ai 課程筆記、機...

    jimhs 評論0 收藏0
  • 重磅 | 完備的 AI 學習路線,最詳細的資源整理!

    摘要:是你學習從入門到專家必備的學習路線和優(yōu)質(zhì)學習資源。的數(shù)學基礎(chǔ)最主要是高等數(shù)學線性代數(shù)概率論與數(shù)理統(tǒng)計三門課程,這三門課程是本科必修的。其作為機器學習的入門和進階資料非常適合。書籍介紹深度學習通常又被稱為花書,深度學習領(lǐng)域最經(jīng)典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導讀】本文由知名開源平...

    荊兆峰 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<