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. Unity 游戏框架搭建 (十八) 静态扩展 + 泛型实现transform的链式编程

    本篇文章介绍如何实现如下代码的链式编程: C# this.Position(Vector3.one) .LocalScale(1.0f) .Rotation(Quaternion.identity); ...

  2. IF()判断变量是否为空

    一 变量是字符串,判断为空 第一种:strs == null string strs = "test"; if (strs == null) { //这里是为空的字符串,返回你指定 ...

  3. Vue和element-ui结合的简单使用

    前提 vue在前端技术中使用越来越多,也成为了主流框架,花点时间稍微了解下vue-cli.vue-router结合element-ui的使用.本人使用的是windows系统,后续介绍以windows7 ...

  4. Tomcat问题之 启动 Cannot find /usr/local/tomcat/bin/setclasspath.sh

    在linux启动startup命令报Cannot find /usr/local/tomcat/bin/setclasspath.sh  使用: unset CATALINA_HOME命令得以解决   ...

  5. LogViewer超大文本浏览工具

    官方下载 LogViewer 是一款简单好用的log日志文件查看工具.您想要查看log日志吗?那么不妨来看看这款LogViewer .该款工具可以在短短数秒内打开上G的LOG文件,支持高亮某行文字(例 ...

  6. foreach传值

  7. python 基于Anaconda import numpy 报错 Importing the multiarray numpy extension module failed.

    在windows中安装了 Anaconda 运行时报错 原因是系统环境变量起初并没有引入 E:\Tools\Anaconda\Library\bin 解决办法: 在系统环境变量中加入    E:\To ...

  8. PHPExcel 导入Excel数据 (导出下一篇我们继续讲解)

    一:使用composer下载 phpoffice/phpexcel 或者直接下载安装包 composer require phpoffice/phpexcel 二 1:导入数据 原理:读取文件,获取文 ...

  9. Linux GPIO键盘驱动开发记录_OMAPL138

    Linux GPIO键盘驱动开发记录_OMAPL138 Linux基本配置完毕了,这几天开始着手Linux驱动的开发,从一个最简单的键盘驱动开始,逐步的了解开发驱动的过程有哪些.看了一下Linux3. ...

  10. 从零开始一个http服务器(四)-动态返回

    从零开始一个http服务器(四) 代码地址 : https://github.com/flamedancer/cserver git checkout step4 运行: make clean &am ...