日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习分类算法_机器学习分类算法

發布時間:2023/12/2 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习分类算法_机器学习分类算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

人們曾在自身的神經元得到啟發,將機器學習中給出的特征輸入與權重之積作為輸出與閾值作比較,得到0或者1的輸出。

這就是我們感知器的實現原理

感知器在實現過程中的步驟如下:

①將權值初始化稱為一個很小的向量

②迭代訓練所有樣本:

計算輸出值output

更新權重

更新權重的公式如下:

w = eta*(output-answer)*feature

這里的eta為學習效率

output為我們的預測值(對于感知器來說只有-1 或者 1)

answer正確輸出

feature對應樣本的向量

我們可以簡單推導

如果輸出為1,答案為1,權重不變

如果輸出為1,答案為-1,權重降低,下次輸出偏向-1

如果輸出為-1,答案為-1,權重不變

如果輸出為-1,答案為1,權重增加,下次輸出偏向1

具體實現可以由如下代碼生成:

import numpy as np class Predicter(object):"""Parameters:eta:學習效率 floatn_iter:迭代次數 intw_:權值 向量errors_:每次迭代的錯誤數量 向量"""def __init__(self, eta=0.1, n_iter=10):self.eta = etaself.n_iter = n_iterdef get_calculate(self, X):""""得到預測結果"""return np.dot(self.w_[1:], X)+self.w_[0]def predict(self, X):"""輸出為對應值"""return np.where(self.get_calculate(X) >= 0.0 ,1 , -1)def fit(self, X, y):""":param X: 二維向量,大小【樣例數,特征數】-代表訓練集信息:param y: 一維向量,大小【樣例數】-代表標準結果:return: self"""self.w_ = np.zeros(1+X.shape[1])self.errors_ = []for _ in range(self.n_iter):error = 0for xi,target in zip(X, y):update = self.eta*(target-self.predict(xi))self.w_[1:] += update*xiself.w_[0] += updateerror += int(update != 0)self.errors_.append(error)return self

運行環境為Python3 加載numpy庫

這可以理解為簡單的單層神經網絡。

但是我們可以看出我們更新權重的過程中其實由輸出和答案決定的參數只有-2 0 2這三種,對于權重的更新不夠平滑,我們還有沒有其他的分類器算法呢?

自適應神經元:

具體的實現就是我們原來一篇文章中講過的梯度下降的方法:

再見灬不見:監督學習-回歸?zhuanlan.zhihu.com再見灬不見:多變量回歸以及技巧?zhuanlan.zhihu.com

我們的Python代碼:

import numpy as np class Adaline(object):"""eta = 學習效率n_iter = 迭代次數get_calculate(X) 參數 :X[samples][features] 返回值:prediction[samples]fit(X,y) 參數:X[samples][features] y[sample] 返回值 selfpredict(X) 返回get_calculate(X)"""def __init__(self,eta = 0.01,n_iter = 100):self.eta = etaself.n_iter = n_iterdef get_calculate(self,X):return np.dot(X,self.w_[1:])+self.w_[0]def predict(self,X):return self.get_calculate(X)def fit(self,X,y):self.w_ = np.zeros(X.shape[1]+1)self.cost_ = []for _ in range(self.n_iter):ans = self.get_calculate(X)nabs_cost = y-ansself.w_[1:] +=self.eta*X.T.dot(nabs_cost)self.w_[0] += self.eta*nabs_cost.sum()abs_cost = (nabs_cost**2).sum()self.cost_.append(abs_cost)return self

但是我們思考一個問題,如果我們的樣本數量非常的大,每次更新權值都要遍歷所有的樣本,我們采取一種新的策略:在每一個樣本之后更新一次權值,這楊可以更快的更新權值。

總結

以上是生活随笔為你收集整理的机器学习分类算法_机器学习分类算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。