机器学习基石 作业3 Logistic回归/线性回归/特征转换

机器学习3——logistic(逻辑斯谛)回归 logistic回归,最大熵模型 阅读详情

Logistic的训练数据和测试数据

https://d396qusza40orc.cloudfront.net/ntumlone%2Fhw3%2Fhw3_train.dat 
https://d396qusza40orc.cloudfront.net/ntumlone%2Fhw3%2Fhw3_test.dat


# -*- coding: utf-8 -*-

"""
__title__ = 'Linear.py'
__author__ = 'w1d2s'
__mtime__ = '2015/10/22'
"""

from numpy import *
from scipy import linalg
import random

def Data_Generator(size):
    X = zeros([size, 2])
    Y = zeros(size)
    for i in range(0, size):
        X[i, :] = [random.uniform(-1, 1), random.uniform(-1, 1)]
        tmp = random.uniform(0, 1)
        if tmp <= 0.1:
            Y[i] = -1 * int(sign(X[i, 0] * X[i, 0] + X[i, 1] * X[i, 1] - 0.6))
        else:
            Y[i] = int(sign(X[i, 0] * X[i, 0] + X[i, 1] * X[i, 1] - 0.6))
    (dataSize, dataDim) = X.shape
    X_ = ones([dataSize, dataDim + 1])
    X_[:, 1: dataDim + 1] = X
    return (X_, X, Y)

def Err_Counter(X, Y, W):
    dataSize = len(Y)
    ErrCnt = 0
    for i in range(0, dataSize):
        if Y[i] * dot(X[i, :], W) <= 0:
            ErrCnt = ErrCnt + 1
    return ErrCnt

def Feature_Transform(X):
    dataSize = len(X)
    Z = ones([dataSize, 6])
    Z[:, 1: 3] = X[:, 0: 2]
    Z[:, 3] = X[:, 0] * X[:, 1]
    Z[:, 4] = X[:, 0] * X[:, 0]
    Z[:, 5] = X[:, 1] * X[:, 1]
    return Z

def Linear_Regression(X, Y):
    X_pinv = linalg.pinv(X)
    W_lin = dot(X_pinv, Y)
    return W_lin

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = 'Logistic.py'
__author__ = 'w1d2s'
__mtime__ = '2015/10/22'
"""

from numpy import *
import random

def theta(s):
    return 1/(1 + exp(-s))

def Logistic_Regression(X, Y, eta, T, isRandom):

    (dataSize, dataDim) = X.shape
    W = zeros(dataDim)
    i = -1
    for t in range(0, T):
        if isRandom:
            i = random.randint(0, dataSize - 1)
        else:
            i = (i + 1) % dataSize
        W = W + eta * theta(-Y[i] * dot(W, X[i, :])) * Y[i] * X[i, :]
    return W

def Logistic_Err_Counter(X, Y, W):
    Err = 0
    dataSize = len(X)
    for i in range(0, dataSize):
        if dot(X[i, :], W) * Y[i] < 0:
            Err += 1
    return Err



#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = 'HW 03 main.py'
__author__ = 'w1d2s'
__mtime__ = '2015/10/22'
"""
from numpy import *
from Linear import *
from Logistic import *
import sys
import string

def Data_Pretreatment(path):
    rawData = open(path).readlines()
    #print rawData
    dataNum = len(rawData)
    dataDim = len(rawData[0].strip().split(' ')) - 1
    dataIdx = 0
    X = zeros([dataNum, dataDim])
    Y = zeros(dataNum)
    print(dataNum, dataDim)
    for line in rawData:
        tempList = line.strip().split(' ')
        Y[dataIdx] = string.atoi(tempList[dataDim])
        X[dataIdx, :] = tempList[0: dataDim]
        dataIdx += 1
    return (X, Y)

if __name__ == '__main__':
    '''
    AveErr = 0
    for i in range(0, 1000):
        (X_, X, Y) = Data_Generator(1000)
        W_lin = Linear_Regression(X_, Y)
        ErrCnt = Err_Counter(X_, Y, W_lin)
        AveErr += ErrCnt
        print ErrCnt
    print AveErr/1000
        '''
    '''
    AveErr = 0
    W = [ -9.93766830e-01,  3.95748989e-04 ,  1.60224660e-03,  -4.92090403e-04, 1.55908941e+00,   1.56285848e+00]
    for i in range(0, 1000):
        (X_, X, Y) = Data_Generator(1000)
        Z = Feature_Transform(X)
        ErrCnt = Err_Counter(Z, Y, W)
        AveErr += ErrCnt
        print ErrCnt
    print AveErr/1000
    '''
    X, Y = Data_Pretreatment('train.dat')
    X_t, Y_t = Data_Pretreatment('test.dat')
    W_ave = zeros(20)
    for i in range(0, 50):
        W = Logistic_Regression(X, Y, 0.001, 2000, False)
        W_ave = W + W_ave
    W_ave = W_ave/50
    Err = Logistic_Err_Counter(X_t, Y_t, W_ave)
    print W_ave
    print Err



机器学习——Logistic回归:分类问题 逻辑回归通过将自变量的线性组合映射到一个概率值,然后根据这个概率值进行分类。它使用一个称为逻辑函数(Logistic Function)或Sigmoid函数的特殊函数来实现这种映射。输入特征和输出:在回归任务中,我们有一组输入特征(通常表示为X)和对应的输出(通常表示为y)。输入特征可以是一个或多个特征变量,例如房屋面积、气温等。输出是一个连续的数值,如房价、销售额等。回归模型:回归模型通过学习输入特征和输出之间的关系,建立一个数学函数来进行预测。不同的回归算法使用不同的模型形式和参数。 阅读详情

相关推荐

机器学习实战笔记5(logistic回归)

1:简单概念描述 假设现在有一些数据点,我们用一条直线对这些点进行拟合(改线称为最佳拟合直线),这个拟合过程就称为回归。训练分类器就是为了寻找最佳拟合参数,使用的是最优化算法。 基于sigmoid函数分类:logistic回归想要的函数能够接受所有的输入然后预测出类别。这个函数就是sigmoid函数,它也像一个阶跃函数。其公式如下: 其中: z = w0x0+w1x1+….+wnxn,w

小村长技术blog 2万+

HW_3_李宏毅2020机器学习作业_李宏毅作业3_李宏毅hw3_李宏毅作业三_saledzj_

Python实现李宏毅2020机器学习作业3,含数据集和代码

机器学习logistic回归模型

Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程可以由最优化算法来完成。在最优化算法中,最常用的就是梯度上升算法,而梯度上升算法又可以简化为随机梯度上升算法。随机梯度上升算法与梯度上升算法的效果相当,但占用更少的计算资源。此外,随机梯度上升是一个在线算法,它可以在新数据到来时就完成参数更新,而不需要重新读取整个数据集来进行批处理运算。

m0_63919802的博客 1338

台大林轩田《机器学习基石》:作业python实现

台大林轩田《机器学习基石》:作业python实现 台大林轩田《机器学习基石》:作业python实现 台大林轩田《机器学习基石》:作业python实现 13 给定target function,我们的工作是在X=[-1,1]x[-1,1]上随机产生1000个点,利用f(x1,x2)计算它的值,然后在基础上添加10%的噪声(二元分类的噪声就是把10%的样本的y值取相反数)。如果不做f...

devil_bye的博客 1343

机器学习基石-作业三-第2题分析以及通过H证明EIN的讨论

题目:     这是机器学习基石作业三种的第二小题,额,在网上看了很多解答(解答也不多)感觉都没有说清楚为什么,所以励志清楚滴解决一下这个问题,经过努力,自认为得到了详细的解答,内容如下: (一)解决选项(e): 当t=1时: 当t&gt;=2时,假设,则有  所以,,即H为幂等矩阵,那么最终就必然成立了。 所以选项(e)是正确的。   (二)解决选项(c)(d): ...

萝卜地里的兔子的博客 985

关于李宏毅ML2021、2022HW3双Boss baseline的一步一步尝试实验记录与总结(四)

接近Strong baseline

喜欢阿冯的博客 1105

李宏毅机器学习课程HW03代码解释

李宏毅机器学习HW03学习笔记

weixin_49171910的博客 2250

林轩田-机器学习基石-作业3-python源码

林轩田-机器学习基石-作业3-python源码

rikichou的专栏 3020

机器学习——Logistic回归

机器学习回归(Regression)和分类(Classification)是两种常见的预测任务,它们在目标和方法上有一些关键区别:回归和分类是机器学习中的两种主要任务,它们的主要区别在于预测的目标不同。回归(Regression)通常处理的是数值预测问题,目标是最小化预测值和实际观测值之间的平方差。例如,房价预测就是一个回归问题,目标是通过考虑多种影响房价的因素(如房屋面积、位置、装修等),预测房价。回归的目标是找到一个模型,使得这个模型能够最好地预测数值变量(如房价)的变化。

Nil0_的博客 2053

线性回归logistic回归详解

机器学习线性回归logistic回归 线性回归 线性回归机器学习中比较基本的一个算法。其基本思想大致可以理解为给定一个数据集,通过线性回归得到一条曲线,尽可能地去拟合这个数据集。如下图所示: 那么,如何得到这样一条拟合曲线呢?一个自然而然的想法是建立一个输入xxx到输出y^\hat{y}y^​的拟合函数,使得这个函数的输出y^\hat{y}y^​能够尽可能地接近真实值yyy。 通常,这个拟合函数可以被定义为: hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn=θTx h_{\theta}\left(x\

qq_43280087的博客 4580

logistic回归——PYTHON实现

logistic回归——PYTHON实现 概述: ​ logistic回归又称logistic回归分析,是一种线性回归模型。logistic回归应用最广泛的是处理二分类问题。比如,探讨引发疾病的危险因素,判断该病人是否患有该病;探讨房价的涨跌,进而给出在何时购买房子的最优决策。在logistic回归中,自变量可以是连续的,也可以是分立的。 ​ 以预测房价涨跌为例,选择两种不同类型的房子,一种是涨价组,另一组是非涨价组,两组房子必定具有不同的占地面积、房屋位置、建筑年限等特征,因此因变量为是否涨价,自变量可以

jingansi的博客 1万+

机器学习中的Logistic回归算法:从原理到实现

Logistic回归也称对数几率回归,是一种用于分类的线性模型,属于机器学习中的监督学习,主要用于解决分类问题。其核心思想是通过一个逻辑函数(Sigmoid函数)将线性回归的输出映射到(0,1) 区间,从而实现分类功能。Logistic回归在处理二分类问题时表现出色,例如判断一封邮件是否为垃圾邮件、一个患者是否患有某种疾病等。

2301_81685298的博客 1913

工业基石与算法常青树:线性回归Logistic回归全解析

线性回归Logistic回归凭借模型简单、可解释性强及计算高效的优势,在金融风控、医疗诊断等对可靠性要求高的场景中仍是工业基石线性回归通过最小二乘法进行预测,并发展出岭回归、Lasso等正则化技术以应对过拟合;Logistic回归则通过Sigmoid函数输出概率,并可扩展至多分类与在线学习。其局限性在于对非线性关系捕捉不足、对异常值敏感及依赖特征工程,可通过多项式特征、Huber损失及SHAP等可解释性工具进行优化。在国内实践中,Scikit-learn为常用工具,而PaddlePaddle、MindS

936

[机器学习]Logistic回归

什么是逻辑斯蒂(Logistic)回归? 由于逻辑斯蒂回归的原理是用逻辑函数把线性回归的结果(-∞,∞)映射到(0,1),故先介绍线性回归函数和逻辑函数。 1.线性回归函数 线性回归函数的数学表达式: 其中xi是自变量,y是因变量,y的值域为(-∞,∞),θ0是常数项,θi(i=1,2,...,n)是待求系数,不同的权重θi反映了自变量对因变量不同的贡献程度。我们初中学过...

qq_49192977的博客 3748

机器学习】深入理解二元Logistic回归:原理、实现与应用

机器学习的世界中,分类问题是核心挑战之一。二元Logistic回归作为最基础且强大的分类算法之一,广泛应用于医疗诊断、信用评分、市场营销等众多领域。本文将带你全面了解二元Logistic回归的原理、数学背景,并通过Python实现展示其实际应用。线性回归适用于预测连续值,但当面对分类问题时(尤其是二元分类),我们需要一种能够输出概率估计的方法。这就是Logistic回归的由来——它虽然名为"回归",但实际上是一种分类算法。Logistic回归:输出概率值(0,1)其中θ是参数向量,x是特征向量。

summer6c的博客 2644

李宏毅2020机器学习笔记3——logistic回归

logistic回归

babychrislee3的博客 5145

机器学习Logistic回归

Logistic回归是一种常用的分类模型,主要用于处理二分类问题,它通过将线性回归的结果通过sigmoid函数进行转换,将特征的线性组合映射到[0,1]的区间,从而得到样本属于某个类别的概率预测值。在Logistic回归中,我们可以采用极大似然估计的方法来估计模型参数,即最大化给定数据集下的似然函数,求得最优参数使得观测到的数据出现的概率最大。我们可以通过梯度上升法来求解最大似然估计的参数,通过不断迭代更新参数,使得损失函数逐渐收敛到最小值。

m0_72946768的博客 1049
上一篇: 机器学习基石 作业2 实现1维和多维Decision Stump
下一篇: 机器学习基石 作业4 带Regularizer和Cross Validation的线性回归分类器
w1d2s
博客等级 码龄13年 10粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值