首页 > 编程知识 正文

机器学习 逻辑回归,机器学习逻辑回归

时间:2023-05-04 19:08:28 阅读:219366 作者:572

简介
逻辑回归是属于机器学习里面的监督学习,它是以回归的思想来解决分类问题的一种非常经典的二分类分类器。由于其训练后的参数有较强的可解释性,在诸多领域中,逻辑回归通常用作 baseline 模型,以方便后期更好的挖掘业务相关信息或提升模型性能。

本实训项目的主要内容是基于 Python 语言搭建出一个能够识别恶性肿瘤的逻辑回归模型,并使用 sklearn 中的 LogisticRegression 实现手写数字识别。
第一关

#encoding=utf8import numpy as npdef sigmoid(t): ''' 完成sigmoid函数计算 :param t: 负无穷到正无穷的实数 :return: 转换后的概率值 :可以考虑使用np.exp()函数 ''' #********** Begin **********# return 1.0/(1+np.exp(-t)) #********** End **********#

第三关

# -*- coding: utf-8 -*-import numpy as npimport warningswarnings.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_theta i_iter = 0 while i_iter < n_iters: gradient = 2*(theta-3) last_theta = theta theta = theta - eta*gradient if(abs(theta-last_theta)<epslion): break i_iter +=1 return theta #********** End **********#

第四关

# -*- coding: utf-8 -*-import numpy as npimport warningswarnings.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 = 0 while i_iter < n_iters: gradient = (sigmoid(x.dot(theta))-y).dot(x) theta = theta -eta*gradient i_iter += 1 return theta #********** End **********#

第五关

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 **************#

感谢大家的支持!记得点赞,记得关注

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。