赞
踩
数据集点被分为了两边,根据课程学会归一化函数以及梯度下降即可。
使用线性模型。
import copy import numpy as np import pandas as pd from matplotlib import pyplot as plt #归一化函数 def sigmoid(x): return 1 / (1 + np.exp(-x)) # 计算损失 def compute_cost_logistic(X, y, w, b): m = X.shape[0] cost = 0.0 for i in range(m): z_i = np.dot(X[i], w) + b f_wb_i = sigmoid(z_i) cost += -y[i] * np.log(f_wb_i) - (1 - y[i]) * np.log(1 - f_wb_i) cost = cost / m return cost # 计算梯度逻辑 def compute_gradient_logistic(X, y, w, b): m, n = X.shape db_w = np.zeros(n) db_b = 0. for i in range(m): z_i = sigmoid(np.dot(X[i], w) + b) err_i = z_i - y[i] for j in range(n): db_w[j] += err_i * X[i][j] db_b += err_i return db_w / m, db_b / m # 梯度下降 def gradient_descent(X, y, w, b, eta, num_iter): m = X.shape[0] for i in range(num_iter): w_temp = copy.deepcopy(w) b_temp = b db_w, db_b = compute_gradient_logistic(X, y, w_temp, b_temp) w = w_temp - eta * db_w b = b_temp - eta * db_b """ if i == 0: print(compute_cost_logistic(X, y, w, b)) """ return w, b if __name__ == '__main__': data = pd.read_csv(r'D:\BaiduNetdiskDownload\data_sets\ex2data1.txt') xx = data.iloc[:, 0:-1].to_numpy() data = (data - data.min()) / (data.max() - data.min()) # 获取X,y训练集 X_train = data.iloc[:, 0:-1] y_train = data.iloc[:, -1] X_train = X_train.to_numpy() y_train = y_train.to_numpy() w_tmp = np.zeros_like(X_train[0]) b_tmp = 0. alph = 0.1 iters = 10000 w_out, b_out = gradient_descent(X_train, y_train, w_tmp, b_tmp, alph, iters) print(w_out, b_out) # 根据 w,b画出关于x的图表 x = np.linspace(0, 1, 100) k = (-b_out - w_out[0] * x ) / w_out[1] X_air = xx[:, 0] Y_air = np.zeros(X_air.shape[0]) plt.plot(x, k, color='blue') plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train) plt.show() # 计算准确率 count = 0 for i in range(X_train.shape[0]): ans = sigmoid(np.dot(X_train[i], w_out) + b_out) prediction = 1 if ans >= 0.5 else 0 if(prediction == y_train[i]): count += 1 print('Accuracy:{}'.format(count)) print(f"\nupdated parameters: w:{w_out}, b:{b_out}")
回归方程和数据集:
预期结果:
w: [9.24150506 8.78629869] b: -8.125896329768265
Accuracy:88%
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。