逻辑回归(头歌)

第1关:逻辑回归算法大体思想

#encoding=utf8
 
import numpy as np
 
#sigmoid函数
def sigmoid(t):
    #输入:负无穷到正无穷的实数
    #输出:转换后的概率值
    #********** Begin **********#
    result = 1.0 / (1 + np.exp(-t))
    #********** End **********#
    return round(result,12)
if __name__ == '__main__':
    pass

第2关:逻辑回归的损失函数 

第3关:梯度下降

# -*- coding: utf-8 -*-
 
import numpy as np
import warnings
warnings.filterwarnings("ignore")
 
#梯度下降,inital_theta为参数初始值,eta为学习率,n_iters为训练轮数,epslion为误差范围
def gradient_descent(initial_theta,eta=0.05,n_iters=1e3,epslion=1e-8):
    #   请在此添加实现代码   #
    #********** 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
    #********** End **********#
    return theta

第4关:逻辑回归算法流程

# -*- coding: utf-8 -*-
 
import numpy as np
import warnings
warnings.filterwarnings("ignore")
#定义sigmoid函数
def sigmoid(x):
    return 1/(1+np.exp(-x))
 
#梯度下降,x为输入数据,y为数据label,eta为学习率,n_iters为训练轮数
def fit(x,y,eta=1e-3,n_iters=1e4):
    #   请在此添加实现代码   #
    #********** 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
    #********** End **********#
    return theta

 第5关:sklearn中的逻辑回归

#encoding=utf8
import warnings
warnings.filterwarnings("ignore")
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
from sklearn.model_selection import train_test_split
def cancer_predict(train_sample, train_label, test_sample):
    '''
    实现功能:1.训练模型 2.预测
    :param train_sample: 包含多条训练样本的样本集,类型为ndarray
    :param train_label: 包含多条训练样本标签的标签集,类型为ndarray
    :param test_sample: 包含多条测试样本的测试集,类型为ndarry
    :return: test_sample对应的预测标签
    '''
    
    #********* Begin *********#
    cancer = datasets.load_breast_cancer()
    #X表示特征,y表示标签
    X = cancer.data
    y = cancer.target
    ##划分训练集和测试集
 
    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.20)
    logreg = LogisticRegression(solver='lbfgs',max_iter =200,C=10)
    logreg.fit(X_train, y_train)
    result = logreg.predict(test_sample)
    # print(result)
    return result
    #********* End *********#
逻辑回归是一种常用的机器学习算法,用于解决二分类问题。其目标是根据输入特征预测样本属于两个类别中的哪一个。该算法的基本思想是通过构建一个逻辑回归模型,将输入特征与相应的概率联系起来,并通过逻辑函数将概率映射到[0, 1]的范围内。逻辑回归模型输出的概率可以被解释为样本属于某一类别的置信度。 对于实现逻辑回归算法的问题,可以按照以下步骤进行操作: 1. 导入所需的库和数据。使用np.load()方法从"data.npz"文件中读取数据,并将训练集和测试集分别赋值给变量x_train, y_train, x_test, y_test。 2. 数据预处理。对训练集和测试集进行必要的数据预处理操作,比如特征缩放、标准化或者处理缺失值等。 3. 定义逻辑回归模型。选择适当的模型,可以使用sklearn库中的LogisticRegression类来创建一个逻辑回归模型对象。 4. 模型训练。使用模型对象的fit()方法来训练逻辑回归模型,将训练集的特征矩阵和标签作为输入。 5. 模型预测。使用训练好的模型对象的predict()方法来预测测试集的标签。 6. 模型评估。使用评估指标如准确率、精确率、召回率等来评估模型的性能。可以使用sklearn库中的相关函数来计算这些指标。 7. 可选步骤:模型参数优化。可以使用交叉验证、网格搜索等方法来调整模型的超参数,以提高模型的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FindYou.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值