LogisticRegression Algorithm——机器学习(西瓜书)读书笔记
import numpy as np
from sklearn.datasets import load_breast_cancer
import sklearn.linear_model
from numpy.linalg import inv
# numpy.linalg 是处理线性代数的包,inv为矩阵求逆 #sigmoid函数
def sigmoid(x):
# Sigmoid function
return 1.0/(1 + np.exp(-x)) # 梯度函数
def gradient(t, y, phi):
grad = phi.T * (y - t)
return grad # 计算海森矩阵
def Hessian(t, y, phi):
H = phi.T * (np.diag(np.diag(y * (1 - y).T))) * phi
return H def Newton_Raphson(t, w, phi):
#Newton_Raphson algorithm 牛顿法迭代
for i in range(0,100):
y = sigmoid(phi * w)
grad = gradient(t, y, phi)
H = Hessian(t, y, phi)
w = w - inv(H+0.0001*np.eye(H.shape[0])) * grad
return w # 测试算法(一个例子:sklearn中预测癌症数据包) # 导入数据
cancer = load_breast_cancer() # 查看关键字
print (cancer.keys()) #标准化处理数据
phi = np.mat(cancer.data)
t = np.mat(cancer.target)
phi = (phi - np.mean(phi, axis = 0))/(np.std(phi, axis = 0)) # 切分数据集为训练集与测试集
phi_train = np.mat(phi[0:200])
t_train =np.mat(cancer.target[0:200].reshape((len(phi_train),1)))
phi_test = np.mat(phi[200:-1])
t_test = np.mat(cancer.target[200:-1].reshape((len(phi_test),1))) # 添加偏置项
b1 = np.ones(len(phi_train))
b2 = np.ones(len(phi_test))
phi_train_b = np.c_[phi_train, b1]
phi_test_b = np.c_[phi_test, b2] # 初始化权重
np.random.seed(666) #使随机数产生后就固定下来
w = np.mat(np.random.normal(0, 0.01, phi_train_b.shape[-1])).T
W = Newton_Raphson(t_train, w, phi_train_b) # 计算预测正确的训练样本比例
y_pred = sigmoid(phi_train_b * W)
t_pred = np.where(y_pred > 0.5, 1 ,0)
accuracy_train = np.mean(t_train == t_pred)
print('The accuracy of train set is:',accuracy_train) # 计算预测正确测试样本比例
y_pred = sigmoid(phi_test_b * W)
t_pred = np.where(y_pred > 0.5, 1 ,0)
accuracy_test = np.mean(t_test == t_pred)
print('The accuracy of test set is:',accuracy_test) # 计算最后预测的准确率
model = sklearn.linear_model.LogisticRegression(solver='newton-cg')
model.fit(phi_train_b, t_train)
y_pred = model.predict(phi_test_b)
acc = np.mean(t_test== y_pred.reshape([-1,1]))
print (acc)




LogisticRegression Algorithm——机器学习(西瓜书)读书笔记的更多相关文章
- 周志华-机器学习西瓜书-第三章习题3.5 LDA
本文为周志华机器学习西瓜书第三章课后习题3.5答案,编程实现线性判别分析LDA,数据集为书本第89页的数据 首先介绍LDA算法流程: LDA的一个手工计算数学实例: 课后习题的代码: # coding ...
- 第一本Docker书读书笔记
日常使用命令 1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: ...
- 《机器学习实战》读书笔记—k近邻算法c语言实现(win下)
#include <stdio.h> #include <io.h> #include <math.h> #include <stdlib.h> #de ...
- promise迷你书-读书笔记
Promise三种类型 Constructor 使用Promise构造器来实例化一个promise对象 var promise = new Promise(function(resolve,rejec ...
- 【Todo】【读书笔记】机器学习-周志华
书籍位置: /Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/<机器学习_周志华.pdf> 一共442页.能不能这个周末先囫囵吞枣看完呢.哈哈 ...
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
- 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...
- 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...
随机推荐
- Kubernetes资料收集
官方文档 https://kubernetes.io/docs/home/?path=users&persona=app-developer&level=foundational 视频 ...
- QLViewController在iOS7下的自定义
原文来自:QLViewController在iOS7下的自定义 原先的项目使用了quicklook framework,用于在iPhone上浏览各类文件,除了txt文本会有乱码的问题,其他文件的显示都 ...
- SQL 存储过程生成
use workflow; GO /****** 对象: StoredProcedure [dbo].[pro_GenerateProGet] 脚本日期: 08/03/2012 11:26:43 ** ...
- 复习宝典之Maven项目管理
查看更多宝典,请点击<金三银四,你的专属面试宝典> 第二章:Maven项目管理 Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配 ...
- Sass变量及嵌套
1. 变量:SASS允许使用变量,所有变量以$开头. 变量声明:$highlight-color: #000; 注意:变量可以在css规则块定义之外存在.如下例子: $nav-color: #F90; ...
- 关于windows下安装mysql数据库出现中文乱码的问题
首先需要在自己安装的mysql路径下新建一个my.ini文件,如下: 然后在my.ini文件中输入一下内容,主要控制编码问题的为红框部分,如下: 为了方便大家使用,可以复制以下代码: [WinMySQ ...
- PHP读取excel
$file = '';//文件名称 $file_ext = explode('.',$file);$file_ext = $file_ext[1];$data['file_ext'] = $file_ ...
- 网站漏洞检测之WordPress 5.0.0 系统修复方案
2019年正月刚开始,WordPress最新版本存在远程代码注入获取SHELL漏洞,该网站漏洞影响的版本是wordpress5.0.0,漏洞的产生是因为image模块导致的,因为代码里可以进行获取目录 ...
- 《JQuery常用插件教程》系列分享专栏
<JQuery常用插件教程>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201719.html 文章 使用jquery插件实现图 ...
- Shell--cut用法
cut是以每一行为一个处理对象的,这种机制和sed一样. cut接受三个定位方法: 1)byte: -b 2)characters: -c 3)fields: -d eg:提取第3,4,5,9的字节: ...