OvR逻辑回归多分类算法

OvR方法基于二分类逻辑回归扩展为多分类,通过One vs Rest策略确定类别。实验显示,单独对versicolor和virginica分类效果不佳,但OvR策略提升了整体准确率,达到约95%的正确率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OvR

在二分类逻辑回归的基础上,采用One vs Rest的方法进行多分类。最终分类由概率最高的OvR决定。在二分类实验中,会发现对versicolor的分类准确性和覆盖率很差,对virginica的分类也不是很理想,只有对setosa的分类很准。采用OvR综合决策后,分类准确率极大提升,正确率达到95%左右。

# Author: Daniel Geng
# In this code, let's change the method to Gradient descent. We start from single feature.
import csv
import numpy as np
import matplotlib.pyplot as pl
import random
import scipy.special


# Import Iris raw data
def ImportData(filePath):
    X = []  # 2D arrays [[1, x11, x12, ...], [], ...[]], each item is a [] which contains columns of each row
    Y = []  # 1D vector Stands for class
    f = open(filePath)
    r = csv.reader(f, delimiter=',')
    r.__next__()  # Skip header row
    for row in r:
        rowX = [1.0]
        for i in row[1:5]:
            rowX.append(float(i))
        X.append(rowX)
        Y.append(row[5])
    return (X, Y)


# Random the order of the raw data
def RandomShuffle(X, Y, flag):
    # random the order of raw data
    if flag == True:
        for i, j in zip(X, Y):
            i.append(j)
        random.shuffle(X)
        Y = []     # clear Y, get Y item from X
        for i in X:
            Y.append(i[-1])
            i.pop(-1)
    else:
        pass
    return (X, Y)


# Format to Numpy
def FormatNumpy(X):
    Xformat = np.array(X[:])  # change to numpy format
    return Xformat


# Refill classification, change string to 1 or 0
def RefillClass(Y, char_positive):
    tempY = []
    for i, e in enumerate(Y):
        if Y[i] == char_positive:
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值