吴恩达人工智能

逻辑回归python代码实现

逐行注释

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt # 逻辑回归算法实现
# sigmoid函数和初始化数据 # 数组说第几列全是从0开始
def sigmoid(z):
return 1 / (1 + np.exp(-z)) # 初始化数据,载入新数据
def init_data():
data = np.loadtxt('data.csv') # 截取数据集第0列到第倒数第二列而且是正向的排序,0,1,2...-1
# 也就是排除分类结果的那些列
dataMatIn = data[:, 0:-1] # dataY是dataMatIn在第0列添加新的一列,全为1
dataY = np.insert(dataMatIn, 0, 1, axis=1) # 第一列平方,构造关于第一列的平方根函数,
dataMatIn[:, 1] = np.power(dataMatIn[:, 1], 2) # dataMatIn[:, 0] = np.power(dataMatIn[:, 0], 2)
dataMatIn = np.insert(dataMatIn, 0, 1, axis=1) # 特征数据集,添加1是构造常数项x0 # 进行特征缩放
# for i in range(1,3):
#
# dataMatIn[:,i]=(dataMatIn[:,i]-np.mean(dataMatIn[:,i],axis=0))/np.std(dataMatIn[:,i]) # classLabels是数据集的第1列,也是倒数第二列
classLabels = data[:, -1] return dataY, dataMatIn, classLabels # 梯度下降
def grad_descent(dataMatIn, classLabels):
# dataMatrix是矩阵化的dataMatIn
dataMatrix = np.mat(dataMatIn) # (m,n) # labelMat是矩阵化的classLabels,并转置
labelMat = np.mat(classLabels).transpose() # m是行,即有多少训练数据,n是列,
m, n = np.shape(dataMatrix) # weights即为参数,初始化全为1
weights = np.ones((n, 1)) # 初始化回归系数(n, 1) alpha = 0.01 # 步长 maxCycle = 5000 # 最大循环次数 # 进入梯度下降训练循环
for i in range(maxCycle):
# h是经过激活函数的 参数乘训练集(假设函数)
h = sigmoid(dataMatrix * weights) # sigmoid 函数 # 精髓的一步
# 用向量的方法实现梯度下降wj=wj-a/m*(sum(hi-yi)*xj)
# 此处是没有进行正则化的编码(正则化目的是消除过拟合)
weights = weights + alpha * dataMatrix.transpose() * (labelMat - h) / m # 梯度 # print(weights,'\n+')
# print(alpha,'\n*')
# print(dataMatrix.transpose(),'\n*')
# print(labelMat-h)
# print("=============================================================") # weights = weights - alpha * (1/m) * (h-labelMat) * ( dataMatrix.)
return weights # 正则化逻辑回归代码,非向量表示的
"""
def costReg(theta, X, y, learningRate):
theta = np.matrix(theta)
X = np.matrix(X)
y = np.matrix(y)
first = np.multiply(-y, np.log(sigmoid(X * theta.T)))
second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))
reg = (learningRate / (2 * len(X)) * np.sum(np.power(theta[:, 1:theta.shape[1]], 2))
return np.sum(first -second) / (len(X)) + reg """ # 绘图 def plotBestFIt(weights):
dataY, dataMatIn, classLabels = init_data() n = np.shape(dataMatIn)[0] xcord1 = []
ycord1 = []
xcord2 = []
ycord2 = []
for i in range(n):
if classLabels[i] == 1:
xcord1.append(dataY[i][1])
ycord1.append(dataY[i][2])
else:
xcord2.append(dataY[i][1])
ycord2.append(dataY[i][2]) fig = plt.figure() ax = fig.add_subplot(111)
ax.scatter(xcord1, ycord1, s=30, c='red', marker='s')
ax.scatter(xcord2, ycord2, s=30, c='green')
x = np.arange(-3, 3, 0.1)
y = np.sqrt(((-weights[0, 0] - weights[1, 0] * x) / weights[2, 0])) # matix
ax.plot(x, y)
plt.xlabel('X1')
plt.ylabel('X2')
plt.show() # 计算结果
if __name__ == '__main__':
dataY, dataMatIn, classLabels = init_data()
r = grad_descent(dataMatIn, classLabels)
print(r)
plotBestFIt(r)

吴恩达人工智能-python实现逻辑回归的更多相关文章

  1. 吴恩达机器学习笔记 —— 7 Logistic回归

    http://www.cnblogs.com/xing901022/p/9332529.html 本章主要讲解了逻辑回归相关的问题,比如什么是分类?逻辑回归如何定义损失函数?逻辑回归如何求最优解?如何 ...

  2. 吴恩达机器学习笔记14-逻辑回归(Logistic Regression)

    在分类问题中,你要预测的变量

  3. [C0] 人工智能大师访谈 by 吴恩达

    人工智能大师访谈 by 吴恩达 吴恩达采访 Geoffery Hinton Geoffery Hinton主要观点:要阅读文献,但不要读太多,绝对不要停止编程. Geoffrey Hinton:谢谢你 ...

  4. 吴恩达《机器学习》课程总结(5)_logistic回归

    Q1分类问题 回归问题的输出可能是很大的数,而在分类问题中,比如二分类,希望输出的值是0或1,如何将回归输出的值转换成分类的输出0,1成为关键.注意logistics回归又称 逻辑回归,但他是分类问题 ...

  5. 用纯Python实现循环神经网络RNN向前传播过程(吴恩达DeepLearning.ai作业)

    Google TensorFlow程序员点赞的文章!   前言 目录: - 向量表示以及它的维度 - rnn cell - rnn 向前传播 重点关注: - 如何把数据向量化的,它们的维度是怎么来的 ...

  6. 【吴恩达课程使用】anaconda (python 3.7) win10安装 tensorflow 1.8 cpu版

    [吴恩达课程使用]anaconda (python 3.7) win10安装 tensorflow 1.8 目前tensorflow是只支持到python3.6的,anaconda最新版本已经到pyt ...

  7. 【吴恩达课程使用】keras cpu版安装【接】- anaconda (python 3.7) win10安装 tensorflow 1.8 cpu版

    一.确认tensorflow的版本: 接上一条tensorflow的安装,注意版本不匹配会出现很多问题!:[吴恩达课程使用]anaconda (python 3.7) win10安装 tensorfl ...

  8. 吴恩达老师机器学习课程chapter01——序言+回归

    吴恩达老师机器学习课程01--序言+线性回归 本文是非计算机专业新手的自学笔记,欢迎指正与其他任何合理交流. 本文仅作速查备忘之用,对应吴恩达(AndrewNg)老师的机器学期课程第一章.第二章.第四 ...

  9. 【吴恩达课后编程作业】第二周作业 - Logistic回归-识别猫的图片

    1.问题描述 有209张图片作为训练集,50张图片作为测试集,图片中有的是猫的图片,有的不是.每张图片的像素大小为64*64 吴恩达并没有把原始的图片提供给我们 而是把这两个图片集转换成两个.h5文件 ...

  10. 吴恩达深度学习 反向传播(Back Propagation)公式推导技巧

    由于之前看的深度学习的知识都比较零散,补一下吴老师的课程希望能对这块有一个比较完整的认识.课程分为5个部分(粗体部分为已经看过的): 神经网络和深度学习 改善深层神经网络:超参数调试.正则化以及优化 ...

随机推荐

  1. 解决log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory). log4j:WARN Please initialize the log4j system properly.警告

    1. 问题分析 使用log4j时不起作用,因为找不到配置文件log4j.properties,存在的问题可能是没有配置log4j.properties文件,也可能是配置文件log4j.properti ...

  2. 使用CNI网络插件(calico)实现docker容器跨主机互联

    目录 一.系统环境 二.前言 三.CNI网络插件简介 四.常见的几种CNI网络插件对比 五.Calico网络之间是如何通信的 六.配置calico让物理机A上的docker容器c1可以访问物理机B上的 ...

  3. youtobe深度学习推荐系统-学习笔记

    简介 前言 本文是Deep Neural Networks for YouTube Recommendations 论文的学习笔记.淘宝的召回模型曾经使用过这篇论文里面的方案,后续淘宝召回模型升级到了 ...

  4. 【Linux内核】内核源码编译

    Linux内核源码编译过程 总体流程: 下载Linux内核源码文件 安装所需工具 解压源码文件并配置 make编译源码 下载busybox 配置busybox并编译 1. Linux源码编译 http ...

  5. 聊一聊 Rust 的 stack overflow

    早上看到了这篇文章 智能指针有可能会让你的应用崩溃, 下面分析一下 会导致 stack overflow 的代码 struct Node<T> { val: T, next: Option ...

  6. 5 大数据实战-hive实战分析

    1 内部表 Show databses; Use hive_data; 1.1 创建内部表 CREATE TABLE SOGOUQ2(DT STRING,WEBSESSION STRING,WORD ...

  7. springboot中自定义JavaBean返回的json对象属性名称大写变小写问题

    目录 一.继承类 二.手动添加Get方法 三.@JsonProperty 四.spring-boot json(jackson)属性命名策略 开发过程中发现查询返回的数据出现自定义的JavaBean的 ...

  8. 用postman模拟“授权代码授予”模式下获取Azure的用户信息(UserInfo)

    用postman模拟"授权代码授予"模式下获取Azure的用户信息(UserInfo) 1. 准备参数: 图1: 图2: 2. 调用: 点击按钮"Get New Acce ...

  9. Windows 环境下Docker 安装伪分布式 Hadoop

    1.环境 Windows 11 Docker 20.0.2 2.拉取镜像 我选择 ubuntu20.04: docker pull ubuntu:20.04 然后我们用命令看一下本地镜像: docke ...

  10. 了解O2OA(翱途)开发平台中的VIP应用

    使用O2OA(翱途)开发平台可以非常方便地进行项目的业务需求开发与实施,O2OA(翱途)开发平台并不限制实现的系统类型,所以能实现的系统很多,最终呈现的项目成果也是多样性的,可能是OA系统,可能是人力 ...