日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

python 實現(xiàn)邏輯回歸

瀏覽:22日期:2022-06-30 18:15:37
邏輯回歸

適用類型:解決二分類問題

邏輯回歸的出現(xiàn):線性回歸可以預測連續(xù)值,但是不能解決分類問題,我們需要根據(jù)預測的結果判定其屬于正類還是負類。所以邏輯回歸就是將線性回歸的結果,通過Sigmoid函數(shù)映射到(0,1)之間

線性回歸的決策函數(shù):數(shù)據(jù)與θ的乘法,數(shù)據(jù)的矩陣格式(樣本數(shù)×列數(shù)),θ的矩陣格式(列數(shù)×1)

python 實現(xiàn)邏輯回歸

將其通過Sigmoid函數(shù),獲得邏輯回歸的決策函數(shù)

python 實現(xiàn)邏輯回歸

使用Sigmoid函數(shù)的原因:

可以對(-∞, +∞)的結果,映射到(0, 1)之間作為概率

可以將1/2作為決策邊界

python 實現(xiàn)邏輯回歸

數(shù)學特性好,求導容易

python 實現(xiàn)邏輯回歸

邏輯回歸的損失函數(shù)

線性回歸的損失函數(shù)維平方損失函數(shù),如果將其用于邏輯回歸的損失函數(shù),則其數(shù)學特性不好,有很多局部極小值,難以用梯度下降法求解最優(yōu)

這里使用對數(shù)損失函數(shù)

python 實現(xiàn)邏輯回歸

解釋:如果一個樣本為正樣本,那么我們希望將其預測為正樣本的概率p越大越好,也就是決策函數(shù)的值越大越好,則logp越大越好,邏輯回歸的決策函數(shù)值就是樣本為正的概率;如果一個樣本為負樣本,那么我們希望將其預測為負樣本的概率越大越好,也就是(1-p)越大越好,即log(1-p)越大越好

為什么使用對數(shù)函數(shù):樣本集中有很多樣本,要求其概率連乘,概率為0-1之間的數(shù),連乘越來越小,利用log變換將其變?yōu)檫B加,不會溢出,不會超出計算精度

損失函數(shù):: y(1->m)表示Sigmoid值(樣本數(shù)×1),hθx(1->m)表示決策函數(shù)值(樣本數(shù)×1),所以中括號的值(1×1)

python 實現(xiàn)邏輯回歸

二分類邏輯回歸直線編碼實現(xiàn)

import numpy as npfrom matplotlib import pyplot as plt​from scipy.optimize import minimizefrom sklearn.preprocessing import PolynomialFeatures​​class MyLogisticRegression: def __init__(self): plt.rcParams['font.sans-serif'] = ['SimHei'] # 包含數(shù)據(jù)和標簽的數(shù)據(jù)集 self.data = np.loadtxt('./data2.txt', delimiter=',') self.data_mat = self.data[:, 0:2] self.label_mat = self.data[:, 2] self.thetas = np.zeros((self.data_mat.shape[1]))​ # 生成多項式特征,最高6次項 self.poly = PolynomialFeatures(6) self.p_data_mat = self.poly.fit_transform(self.data_mat)​ def cost_func_reg(self, theta, reg): ''' 損失函數(shù)具體實現(xiàn) :param theta: 邏輯回歸系數(shù) :param data_mat: 帶有截距項的數(shù)據(jù)集 :param label_mat: 標簽數(shù)據(jù)集 :param reg: :return: ''' m = self.label_mat.size label_mat = self.label_mat.reshape(-1, 1) h = self.sigmoid(self.p_data_mat.dot(theta))​ J = -1 * (1/m)*(np.log(h).T.dot(label_mat) + np.log(1-h).T.dot(1-label_mat)) + (reg / (2*m)) * np.sum(np.square(theta[1:])) if np.isnan(J[0]): return np.inf return J[0]​ def gradient_reg(self, theta, reg): m = self.label_mat.size h = self.sigmoid(self.p_data_mat.dot(theta.reshape(-1, 1))) label_mat = self.label_mat.reshape(-1, 1)​ grad = (1 / m)*self.p_data_mat.T.dot(h-label_mat) + (reg/m)*np.r_[[[0]], theta[1:].reshape(-1, 1)] return grad​ def gradient_descent_reg(self, alpha=0.01, reg=0, iterations=200): ''' 邏輯回歸梯度下降收斂函數(shù) :param alpha: 學習率 :param reg: :param iterations: 最大迭代次數(shù) :return: 邏輯回歸系數(shù)組 ''' m, n = self.p_data_mat.shape theta = np.zeros((n, 1)) theta_set = []​ for i in range(iterations): grad = self.gradient_reg(theta, reg) theta = theta - alpha*grad.reshape(-1, 1) theta_set.append(theta) return theta, theta_set​ def plot_data_reg(self, x_label=None, y_label=None, neg_text='negative', pos_text='positive', thetas=None): neg = self.label_mat == 0 pos = self.label_mat == 1 fig1 = plt.figure(figsize=(12, 8)) ax1 = fig1.add_subplot(111) ax1.scatter(self.p_data_mat[neg][:, 1], self.p_data_mat[neg][:, 2], marker='o', s=100, label=neg_text) ax1.scatter(self.p_data_mat[pos][:, 1], self.p_data_mat[pos][:, 2], marker='+', s=100, label=pos_text) ax1.set_xlabel(x_label, fontsize=14)​ # 描繪邏輯回歸直線(曲線) if isinstance(thetas, type(np.array([]))): x1_min, x1_max = self.p_data_mat[:, 1].min(), self.p_data_mat[:, 1].max() x2_min, x2_max = self.p_data_mat[:, 2].min(), self.p_data_mat[:, 2].max() xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max), np.linspace(x2_min, x2_max)) h = self.sigmoid(self.poly.fit_transform(np.c_[xx1.ravel(), xx2.ravel()]).dot(thetas)) h = h.reshape(xx1.shape) ax1.contour(xx1, xx2, h, [0.5], linewidths=3) ax1.legend(fontsize=14) plt.show()​ @staticmethod def sigmoid(z): return 1.0 / (1 + np.exp(-z))​​if __name__ == ’__main__’: my_logistic_regression = MyLogisticRegression() # my_logistic_regression.plot_data(x_label='線性不可分數(shù)據(jù)集')​ thetas, theta_set = my_logistic_regression.gradient_descent_reg(alpha=0.5, reg=0, iterations=500) my_logistic_regression.plot_data_reg(thetas=thetas, x_label='$lambda$ = {}'.format(0))​ thetas = np.zeros((my_logistic_regression.p_data_mat.shape[1], 1)) # 未知錯誤,有大佬解決可留言 result = minimize(my_logistic_regression.cost_func_reg, thetas, args=(0, ), method=None, jac=my_logistic_regression.gradient_reg) my_logistic_regression.plot_data_reg(thetas=result.x, x_label='$lambda$ = {}'.format(0))二分類問題邏輯回歸曲線編碼實現(xiàn)

import numpy as npfrom matplotlib import pyplot as plt​from scipy.optimize import minimizefrom sklearn.preprocessing import PolynomialFeatures​​class MyLogisticRegression: def __init__(self): plt.rcParams['font.sans-serif'] = ['SimHei'] # 包含數(shù)據(jù)和標簽的數(shù)據(jù)集 self.data = np.loadtxt('./data2.txt', delimiter=',') self.data_mat = self.data[:, 0:2] self.label_mat = self.data[:, 2] self.thetas = np.zeros((self.data_mat.shape[1]))​ # 生成多項式特征,最高6次項 self.poly = PolynomialFeatures(6) self.p_data_mat = self.poly.fit_transform(self.data_mat)​ def cost_func_reg(self, theta, reg): ''' 損失函數(shù)具體實現(xiàn) :param theta: 邏輯回歸系數(shù) :param data_mat: 帶有截距項的數(shù)據(jù)集 :param label_mat: 標簽數(shù)據(jù)集 :param reg: :return: ''' m = self.label_mat.size label_mat = self.label_mat.reshape(-1, 1) h = self.sigmoid(self.p_data_mat.dot(theta))​ J = -1 * (1/m)*(np.log(h).T.dot(label_mat) + np.log(1-h).T.dot(1-label_mat)) + (reg / (2*m)) * np.sum(np.square(theta[1:])) if np.isnan(J[0]): return np.inf return J[0]​ def gradient_reg(self, theta, reg): m = self.label_mat.size h = self.sigmoid(self.p_data_mat.dot(theta.reshape(-1, 1))) label_mat = self.label_mat.reshape(-1, 1)​ grad = (1 / m)*self.p_data_mat.T.dot(h-label_mat) + (reg/m)*np.r_[[[0]], theta[1:].reshape(-1, 1)] return grad​ def gradient_descent_reg(self, alpha=0.01, reg=0, iterations=200): ''' 邏輯回歸梯度下降收斂函數(shù) :param alpha: 學習率 :param reg: :param iterations: 最大迭代次數(shù) :return: 邏輯回歸系數(shù)組 ''' m, n = self.p_data_mat.shape theta = np.zeros((n, 1)) theta_set = []​ for i in range(iterations): grad = self.gradient_reg(theta, reg) theta = theta - alpha*grad.reshape(-1, 1) theta_set.append(theta) return theta, theta_set​ def plot_data_reg(self, x_label=None, y_label=None, neg_text='negative', pos_text='positive', thetas=None): neg = self.label_mat == 0 pos = self.label_mat == 1 fig1 = plt.figure(figsize=(12, 8)) ax1 = fig1.add_subplot(111) ax1.scatter(self.p_data_mat[neg][:, 1], self.p_data_mat[neg][:, 2], marker='o', s=100, label=neg_text) ax1.scatter(self.p_data_mat[pos][:, 1], self.p_data_mat[pos][:, 2], marker='+', s=100, label=pos_text) ax1.set_xlabel(x_label, fontsize=14)​ # 描繪邏輯回歸直線(曲線) if isinstance(thetas, type(np.array([]))): x1_min, x1_max = self.p_data_mat[:, 1].min(), self.p_data_mat[:, 1].max() x2_min, x2_max = self.p_data_mat[:, 2].min(), self.p_data_mat[:, 2].max() xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max), np.linspace(x2_min, x2_max)) h = self.sigmoid(self.poly.fit_transform(np.c_[xx1.ravel(), xx2.ravel()]).dot(thetas)) h = h.reshape(xx1.shape) ax1.contour(xx1, xx2, h, [0.5], linewidths=3) ax1.legend(fontsize=14) plt.show()​ @staticmethod def sigmoid(z): return 1.0 / (1 + np.exp(-z))​​if __name__ == ’__main__’: my_logistic_regression = MyLogisticRegression() # my_logistic_regression.plot_data(x_label='線性不可分數(shù)據(jù)集')​ thetas, theta_set = my_logistic_regression.gradient_descent_reg(alpha=0.5, reg=0, iterations=500) my_logistic_regression.plot_data_reg(thetas=thetas, x_label='$lambda$ = {}'.format(0))​ thetas = np.zeros((my_logistic_regression.p_data_mat.shape[1], 1)) # 未知錯誤,有大佬解決可留言 result = minimize(my_logistic_regression.cost_func_reg, thetas, args=(0, ), method=None, jac=my_logistic_regression.gradient_reg) my_logistic_regression.plot_data_reg(thetas=result.x, x_label='$lambda$ = {}'.format(0))

以上就是python 實現(xiàn)邏輯回歸的詳細內(nèi)容,更多關于python 實現(xiàn)邏輯回歸的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂网在线观看国产精品| 日韩午夜精品| 国产三级一区| 麻豆国产一区| 精品视频久久| 亚洲二区视频| 亚洲伊人精品酒店| 国产日韩一区二区三区在线播放| 国产精品17p| 成人啊v在线| 香蕉久久国产| 久久国产三级| | av资源中文在线天堂| 日本免费久久| aa亚洲婷婷| 国产午夜精品一区在线观看| 天堂av在线| 婷婷综合五月| 青青伊人久久| 日韩久久精品| 日韩午夜视频在线| 国产一二在线播放| 亚洲乱码一区| 国产精品成久久久久| 亚洲少妇自拍| 久久福利在线| 美女精品在线| 国产一区二区三区久久| 好看的亚洲午夜视频在线| 国产日韩欧美一区| 欧美高清不卡| 久久99精品久久久野外观看| 999精品色在线播放| 欧美一区激情| 伊人成人在线视频| 欧美国产日本| 亚洲免费影院| 欧美aa在线观看| 国产精品调教视频| 久久xxxx精品视频| 中国字幕a在线看韩国电影| 亚洲精品系列| 婷婷激情久久| 久久精品国内一区二区三区| 丝袜亚洲精品中文字幕一区| 久久a爱视频| 亚洲v天堂v手机在线| 国产精品久久久久久久久妇女| 中文字幕乱码亚洲无线精品一区| 亚洲精品**中文毛片| 91国内精品| 日韩中文字幕1| 久久亚洲国产| 国产精品久久久久久久久久10秀| 欧美亚洲国产日韩| 免费在线成人网| 亚洲天堂1区| 国产一区二区三区四区| 欧美日韩18| 蜜臀国产一区二区三区在线播放| 特黄毛片在线观看| 精品深夜福利视频| 欧美日一区二区三区在线观看国产免| 中文在线一区| 影院欧美亚洲| 亚洲韩日在线| 亚洲成a人片| 伊人久久视频| 四虎成人av| 精品三区视频| 精品国产亚洲日本| 久久不卡国产精品一区二区| 欧美日韩一区二区三区不卡视频 | 99国产精品视频免费观看一公开| 国产成人77亚洲精品www| 日韩超碰人人爽人人做人人添| 国产日韩综合| 狠狠色狠狠色综合日日tαg| 久久亚洲国产| 欧美日韩在线观看视频小说| 日韩欧美精品| 成人日韩av| 美女视频黄免费的久久| 国产人成精品一区二区三| 日韩精品视频一区二区三区| 一区二区亚洲视频| 中文字幕一区二区av| 三级一区在线视频先锋| 国产午夜精品一区二区三区欧美 | 福利一区视频| 国产96在线亚洲| 国产精品一区二区三区av| 97久久中文字幕| 国产视频一区二| 欧美激情福利| 狠狠久久伊人| 一区二区三区四区日本视频| 日韩精品dvd| 欧美日韩一二三四| 亚洲激情中文| 蜜臀av性久久久久蜜臀aⅴ四虎| 鲁大师成人一区二区三区| 美国三级日本三级久久99 | jiujiure精品视频播放| 亚洲一级二级| 国产视频一区欧美| 亚洲毛片在线| 麻豆成人av在线| 亚洲日本网址| av不卡免费看| 青青草国产成人99久久| 久久国产生活片100| 精品72久久久久中文字幕| 日韩.com| 一区二区亚洲精品| 最近国产精品视频| 欧美国产精品| 秋霞影视一区二区三区| 久久午夜精品一区二区| 欧美午夜网站| 热三久草你在线| 亚洲欧美日韩精品一区二区| 日韩一区网站| 福利一区二区免费视频| 伊人影院久久| 国产精品一区三区在线观看| 日韩久久视频| 日本亚洲欧洲无免费码在线| 国产精品sss在线观看av| 色偷偷偷在线视频播放| 久久国产精品久久w女人spa| 国产精品亚洲欧美一级在线| 亚洲午夜久久久久久尤物| 中文字幕一区二区三区四区久久| 国产精品久久777777毛茸茸| 久久国产影院| 日韩 欧美一区二区三区| 国产成人免费视频网站视频社区| 久久久影院免费| 欧美日韩伊人| 性欧美69xoxoxoxo| 国产精品亚洲片在线播放| 激情综合自拍| 日本欧美一区| 久久国产日韩| 国产精品va视频| 亚洲永久字幕| 国产成人精品一区二区免费看京| 男女男精品视频网| 中文字幕成在线观看| 日韩精品免费观看视频| 日韩中文欧美| 青草av.久久免费一区| 91精品婷婷色在线观看| 国产精品视频一区二区三区四蜜臂 | 99国产精品一区二区| 亚洲+小说+欧美+激情+另类| 欧美三级网址| 国产伦精品一区二区三区视频| 免费久久精品| 久久一区精品| 日本亚洲欧美天堂免费| 欧美日韩精品一本二本三本| 久久在线91| 日韩激情网站| 亚洲神马久久| 99视频精品全国免费| 精品国产三区在线| 欧美一级二级三级视频| 免费日本视频一区| 99久精品视频在线观看视频| 免费在线观看一区| 青草久久视频| 亚洲久久一区| 亚洲欧美日韩精品一区二区| 精品欧美一区二区三区在线观看| 免费在线亚洲欧美| 国产亚洲精品美女久久| 日韩一二三区在线观看| 亚洲在线网站| 国产婷婷精品| 黑丝一区二区三区| 久久影视一区| 久久天堂成人| 日韩欧美网址| av免费不卡国产观看| 欧美日韩一区自拍| 91精品一区| 国产伦理一区| 国产福利一区二区精品秒拍| 国产伦理久久久久久妇女| 欧美日韩一视频区二区| 日韩一区二区三区精品视频第3页| 视频一区视频二区中文| 在线亚洲激情| 香蕉久久久久久久av网站| 国产午夜精品一区二区三区欧美| 一级欧洲+日本+国产| 久久在线视频免费观看|