使用Python编程实现对数几率回归模型(不调用现成的对数几率回归函数),并对Iris数据集进行分类以验证模型的效能

使用Python编程实现对数几率回归模型(不调用现成的对数几率回归函数),并对Iris数据集进行分类以验证模型的效能

导入数据集

利用sklern.datasets已有的load_iris()导入鸢尾花数据集。
这个数据集一共有150个样本,包含三种类型的花,各50个样本。
每个样本有四个属性值,一个标签值,三种类型的标签分别用0、1、2表示。因为本次实验我们只讨论二分类问题,所以只需要保留两类花的样本。为了方便,我直接截取前100个样本,也就是选取前两类花。
from sklearn.datasets import load_iris;
iris=load_iris();
attributes=iris.data[0:100];#导入数据集的属性列表,前100项,两类花
#print(attributes);
target=iris.target[0:100];#导入数据集的标签列表,前100项,两类花
#print(target);

数据划分

1、利用sklearn.model_selection的train_test_split()可以进行数据集的划分。
2、train_test_split()需要四个参数,通过该函数可以返回划分好的训练集和测试集的属性数组和标签数组。
train_test_split(attributes,target,test_size=0.5,random_state=1)
attributes:数据集的属性数组
target:数据集的标签数组
test_size:测试集的规模。0.5表示测试集在数据集里占50%
random_state:取1表示在其他参数赋值相同的情况下,调用该函数划分数据集的得到的是相同的训练集和测试集,如果取的是0或者不填,则表示即使其他参数赋值相同,调用该函数划分出来的训练集和测试集是不同的。

训练模型

对数几率回归模型的关键点在于要尽可能地求出最优的向量w和数值b。
这个尽可能最优指的是训练出来的模型可以让样本属于其真实标记的概率尽可能地最大。
教材上式子3.25是利用“极大似然法”估计这个尽可能最优的向量w,和数值b。
所以,最大化式子3.25即是我们的目标。

教材指的是周志华的西瓜书。具体公式大家可以自行翻阅。

教材上通过推导得到,最大化式子3.25即是最小化3.27。
于是通过梯度下降算法,可以迭代求得较优的向量w:
W=W-α*(式子3.27的一阶导)

其中α是精度,指的是真实权重和计算得到的w的偏差,一般人为指定,在本次实现过程中,我将α指定为0.0001。

def iterater(data,label):#梯度下降法求出最优的w向量
    losslist=[];
    dataMatrix_tmp=numpy.matrix(data);
    #print(dataMatrix_tmp);
    n=dataMatrix_tmp.shape[0];
    a = numpy.ones(n).transpose();
    dataMatrix=numpy.c_[a,dataMatrix_tmp];#给数据集属性矩阵添加一列全1,为了直接得出b值
    labelMatrix=numpy.matrix(label).transpose();
    alpha=0.00001;#精度,自己凭经验选择
    maxCycles=2000;#迭代次数
    w = numpy.ones((5,1));#初始化w向量,第一个元素为b值
    p1 = sigmoid(numpy.matmul(dataMatrix, w));
    for k in range(maxCycles):
        error=(labelMatrix-p1);
        w=w+numpy.dot(alpha,numpy.matmul(dataMatrix.transpose(),error));#迭代计算w向量
        p1 = sigmoid(numpy.matmul(dataMatrix, w));
        losslist.append(loss(label, p1));
    #print(losslist);
    #损失函数曲线图
    my_x_ticks=numpy.arange
  • 13
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对数几率回归(Logistic Regression)也叫逻辑回归(Logistic Regression),是一种分类算法,可以用于二分类和多分类问题。下面是用Python实现对数几率回归模型的步骤。 1. 数据预处理 首先需要对数据进行预处理,包括数据清洗、特征提取、标签编码等。数据预处理的目的是将原始数据转化为适合模型使用的数据。 2. 划分训练集和测试集 将数据集分为训练集和测试集,一般采用的比例是7:3或8:2。 3. 导入模型 使用sklearn库中的逻辑回归模型,导入方法如下: ```python from sklearn.linear_model import LogisticRegression ``` 4. 训练模型 使用训练集对模型进行训练,代码如下: ```python logistic = LogisticRegression() logistic.fit(train_X, train_Y) ``` 其中,train_X是训练集的特征数据,train_Y是训练集的标签数据。 5. 预测结果 使用测试集对模型进行预测,代码如下: ```python y_pred = logistic.predict(test_X) ``` 其中,test_X是测试集的特征数据。 6. 模型评估 使用混淆矩阵、准确率、精确率、召回率等指标对模型进行评估,代码如下: ```python from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score cm = confusion_matrix(test_Y, y_pred) accuracy = accuracy_score(test_Y, y_pred) precision = precision_score(test_Y, y_pred) recall = recall_score(test_Y, y_pred) ``` 其中,test_Y是测试集的真实标签数据。 以上就是用Python实现对数几率回归模型的步骤,你可以根据实际需求进行修改和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值