国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python 牛頓法實現邏輯回歸(Logistic Regression)

瀏覽:6日期:2022-07-08 11:01:21

本文采用的訓練方法是牛頓法(Newton Method)。

代碼

import numpy as npclass LogisticRegression(object): ''' Logistic Regression Classifier training by Newton Method ''' def __init__(self, error: float = 0.7, max_epoch: int = 100): ''' :param error: float, if the distance between new weight and old weight is less than error, the process of traing will break. :param max_epoch: if training epoch >= max_epoch the processof traing will break. ''' self.error = error self.max_epoch = max_epoch self.weight = None self.sign = np.vectorize(lambda x: 1 if x >= 0.5 else 0) def p_func(self, X_): '''Get P(y=1 | x) :param X_: shape = (n_samples + 1, n_features) :return: shape = (n_samples) ''' tmp = np.exp(self.weight @ X_.T) return tmp / (1 + tmp) def diff(self, X_, y, p): '''Get derivative :param X_: shape = (n_samples, n_features + 1) :param y: shape = (n_samples) :param p: shape = (n_samples) P(y=1 | x) :return: shape = (n_features + 1) first derivative ''' return -(y - p) @ X_ def hess_mat(self, X_, p): '''Get Hessian Matrix :param p: shape = (n_samples) P(y=1 | x) :return: shape = (n_features + 1, n_features + 1) second derivative ''' hess = np.zeros((X_.shape[1], X_.shape[1])) for i in range(X_.shape[0]): hess += self.X_XT[i] * p[i] * (1 - p[i]) return hess def newton_method(self, X_, y): '''Newton Method to calculate weight :param X_: shape = (n_samples + 1, n_features) :param y: shape = (n_samples) :return: None ''' self.weight = np.ones(X_.shape[1]) self.X_XT = [] for i in range(X_.shape[0]): t = X_[i, :].reshape((-1, 1)) self.X_XT.append(t @ t.T) for _ in range(self.max_epoch): p = self.p_func(X_) diff = self.diff(X_, y, p) hess = self.hess_mat(X_, p) new_weight = self.weight - (np.linalg.inv(hess) @ diff.reshape((-1, 1))).flatten() if np.linalg.norm(new_weight - self.weight) <= self.error: break self.weight = new_weight def fit(self, X, y): ''' :param X_: shape = (n_samples, n_features) :param y: shape = (n_samples) :return: self ''' X_ = np.c_[np.ones(X.shape[0]), X] self.newton_method(X_, y) return self def predict(self, X) -> np.array: ''' :param X: shape = (n_samples, n_features] :return: shape = (n_samples] ''' X_ = np.c_[np.ones(X.shape[0]), X] return self.sign(self.p_func(X_))

測試代碼

import matplotlib.pyplot as pltimport sklearn.datasetsdef plot_decision_boundary(pred_func, X, y, title=None): '''分類器畫圖函數,可畫出樣本點和決策邊界 :param pred_func: predict函數 :param X: 訓練集X :param y: 訓練集Y :return: None ''' # Set min and max values and give it some padding x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 h = 0.01 # Generate a grid of points with distance h between them xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) # Predict the function value for the whole gid Z = pred_func(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) # Plot the contour and training examples plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral) plt.scatter(X[:, 0], X[:, 1], s=40, c=y, cmap=plt.cm.Spectral) if title: plt.title(title) plt.show()

效果

python 牛頓法實現邏輯回歸(Logistic Regression)

更多機器學習代碼,請訪問 https://github.com/WiseDoge/plume

以上就是python 牛頓法實現邏輯回歸(Logistic Regression)的詳細內容,更多關于python 邏輯回歸的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日韩欧美国产亚洲 | 91亚洲精品在看在线观看高清 | 国产精品hd在线播放 | 国产精品一区在线播放 | 欧美高清在线精品一区二区不卡 | 欧美成年黄网站色高清视频 | 一级视频在线播放 | 欧美日韩 在线播放 | 91精品综合| 日日碰日日操 | 亚洲欧美日韩国产vr在线观 | 成年人www| 午夜性刺激免费视频 | 日本一区二区三区在线 视频观看免费 | 日本一区二区三区在线 视频 | 国产精品夜色视频一区二区 | 免费精品国产日韩热久久 | 中文字幕亚洲国产 | 男人躁女人躁的好爽免费视频 | 成人a视频片在线观看免费 成人a视频在线观看 | 麻豆国产96在线 | 中国 | 久久久久久久99久久久毒国产 | dvd8090cnm欧美大片 | chinese情侣真实自拍 | 成人亚洲国产综合精品91 | 69凹凸国产成人精品视频 | 国产精品久久久久久久免费 | 91寡妇天天综合久久影院 | 国产免费久久精品99re丫y | 亚洲黄色三级网站 | 美女福利视频国产 | 性欧美另类老妇高清 | 亚洲一区二区三区高清网 | 91精品国产91热久久p | 欧美精品一区二区三区免费 | 手机看片国产免费 | 一级毛片成人午夜 | 国产欧美日韩视频免费61794 | a级网站在线观看 | 精品72久久久久久久中文字幕 | 狼人总合狼人综合 |