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——机器学习(西瓜书)读书笔记的更多相关文章

  1. 周志华-机器学习西瓜书-第三章习题3.5 LDA

    本文为周志华机器学习西瓜书第三章课后习题3.5答案,编程实现线性判别分析LDA,数据集为书本第89页的数据 首先介绍LDA算法流程: LDA的一个手工计算数学实例: 课后习题的代码: # coding ...

  2. 第一本Docker书读书笔记

    日常使用命令 1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: ...

  3. 《机器学习实战》读书笔记—k近邻算法c语言实现(win下)

    #include <stdio.h> #include <io.h> #include <math.h> #include <stdlib.h> #de ...

  4. promise迷你书-读书笔记

    Promise三种类型 Constructor 使用Promise构造器来实例化一个promise对象 var promise = new Promise(function(resolve,rejec ...

  5. 【Todo】【读书笔记】机器学习-周志华

    书籍位置: /Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/<机器学习_周志华.pdf> 一共442页.能不能这个周末先囫囵吞枣看完呢.哈哈 ...

  6. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

  7. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...

  8. 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...

  9. 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...

随机推荐

  1. ubuntu上建立本地git 和 网络 github的上传与下载

    github工具是一个很好用的工具,可以在本地建立一个git仓库,存储当前写的程序或者数据,然后通过ssh与github建立联系.具体怎么实现,下面进行介绍. 1.首先要安装git 软件 在Linux ...

  2. python基础 列表和字符串

    1.列表和字符串最大区别就是 列表可以改变,字符串不可以改变 列表: welldone = [ "hutu","python","java" ...

  3. android软件开发基础

    1.android特性:开放性:开源的一个基础, 方便性: 平等性: 2.Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,Broadc ...

  4. C++笔记006:关于类的补充

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 关于类的补充: 类是一个数据类型(固定大小内存块的别名),定义一个类,是一个抽象的概念,不会给你分配内存,用数据类型定义变量的时候,才会分 ...

  5. wps for linux 安装后系统缺失字体安装配置

    错误提示: 解决方法: 从http://bbs.wps.cn/thread-22355435-1-1.html下载字体库,离线版本:(链接: https://pan.baidu.com/s/1i5dz ...

  6. Django中间件执行顺序

    中间件 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django ...

  7. JavaSE环境下的shiro(源自腾讯课堂)

    Shiro作用: 认证(登录).授权(鉴权).加密(用户名/密码加密).会话管理(session).Web集成.缓存 apache官网可以下载 图一 图二 图三 图一 .二是配置文件内容,对于图三的: ...

  8. React组件的使用

     一.index.js 文件[基本配置] //react语法塘 import React from 'react'; //reactDom用来操作虚拟DOM import ReactDom from ...

  9. 分布式缓存 Redis(二)

    代码实例 namespace RedisTest { class Program { static void Main(string[] args) { Student stu = RedisOper ...

  10. wdcp v3 pureftpd 无法登录问题解决

    wdcp v3 新建站点和ftp账号 单位无法登录ftp 在端口中也确实可以看到有进行在登录状态 错误原因: 防火墙端口没有开启该端口范围  20000-30000 这时候发现 改端口为20078  ...