网站建设找好景科技快速优化seo
第1关:逻辑回归核心思想
任务描述
本关任务:根据本节课所学知识完成本关所设置的编程题
#encoding=utf8
import numpy as npdef sigmoid(t):'''完成sigmoid函数计算:param t: 负无穷到正无穷的实数:return: 转换后的概率值:可以考虑使用np.exp()函数'''#********** Begin **********#return 1.0/(1+np.exp(-t))#********** End **********#
第2关:逻辑回归的损失函数
任务描述
本关任务:根据本节课所学知识完成本关所设置的选择题。
第3关:梯度下降
任务描述
本关任务:用 Python 构建梯度下降算法,并求取目标函数最小值。
# -*- coding: utf-8 -*-import numpy as np
import warnings
warnings.filterwarnings("ignore")def gradient_descent(initial_theta,eta=0.05,n_iters=1000,epslion=1e-8):'''梯度下降:param initial_theta: 参数初始值,类型为float:param eta: 学习率,类型为float:param n_iters: 训练轮数,类型为int:param epslion: 容忍误差范围,类型为float:return: 训练后得到的参数'''# 请在此添加实现代码 ##********** Begin *********#theta = initial_thetai_iter = 0while i_iter < n_iters:gradient = 2*(theta-3)last_theta = thetatheta = theta - eta*gradientif(abs(theta-last_theta)<epslion):breaki_iter +=1return theta#********** End **********#
第4关:动手实现逻辑回归 - 癌细胞精准识别
任务描述
本关任务:使用逻辑回归算法建立一个模型,并通过梯度下降算法进行训练,得到一个能够准确对癌细胞进行识别的模型。
# -*- coding: utf-8 -*-import numpy as np
import warnings
warnings.filterwarnings("ignore")def sigmoid(x):'''sigmoid函数:param x: 转换前的输入:return: 转换后的概率'''return 1/(1+np.exp(-x))def fit(x,y,eta=1e-3,n_iters=10000):'''训练逻辑回归模型:param x: 训练集特征数据,类型为ndarray:param y: 训练集标签,类型为ndarray:param eta: 学习率,类型为float:param n_iters: 训练轮数,类型为int:return: 模型参数,类型为ndarray'''# 请在此添加实现代码 ##********** Begin *********#theta = np.zeros(x.shape[1])i_iter = 0while i_iter < n_iters:gradient = (sigmoid(x.dot(theta))-y).dot(x)theta = theta -eta*gradienti_iter += 1return theta#********** End **********#
第5关:手写数字识别
任务描述
本关任务:使用sklearn中的LogisticRegression类完成手写数字识别任务。
from sklearn.linear_model import LogisticRegressiondef digit_predict(train_image, train_label, test_image):'''实现功能:训练模型并输出预测结果:param train_sample: 包含多条训练样本的样本集,类型为ndarray,shape为[-1, 8, 8]:param train_label: 包含多条训练样本标签的标签集,类型为ndarray:param test_sample: 包含多条测试样本的测试集,类型为ndarry:return: test_sample对应的预测标签'''#************* Begin ************#flat_train_image = train_image.reshape((-1, 64))# 训练集标准化train_min = flat_train_image.min()train_max = flat_train_image.max()flat_train_image = (flat_train_image-train_min)/(train_max-train_min)# 测试集变形flat_test_image = test_image.reshape((-1, 64))# 测试集标准化test_min = flat_test_image.min()test_max = flat_test_image.max()flat_test_image = (flat_test_image - test_min) / (test_max - test_min)# 训练--预测rf = LogisticRegression(C=4.0)rf.fit(flat_train_image, train_label)return rf.predict(flat_test_image)#************* End **************#