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 ...
随机推荐
- 【每天一条Linux指令-Day1】kill掉多个mysql的进程
我被问到过一个shell的问题,问的是如何kill掉多个mysql的进程? 怎么把这个的pid传递下去 ps -ef|grep mysql | xargs kill -9 ps -ef|grep my ...
- 使用NPOI将数据导出Excel
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.IS ...
- Final,finally,finalize区别
final— 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为f ...
- STM32 硬件UART接收超时检测设置
STM32 硬件UART接收超时检测设置 -----------------本文作者"智御电子",期待与电子爱好者交流学习.---------------- 应用场景 在uart应 ...
- 清华大学《C++语言程序设计进阶》线上课程笔记06---继承、派生、多态性
类的继承 保持已有类的特性而构造新类的过程称为继承; 实现设计与代码的重用. 在已有类的基础上新增自己的特性而产生新类的过程称为派生 当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程 ...
- Go 问题集
删除文件后缀名,出现问题 import "strings" func changePath(file_path string) string { ) } 转换路径 /转换为\\ i ...
- HyperLedger Fabric 1.4 kafka生产环境部署(11.1)
11.1 Kafka模式简介 上一章介绍的Solo模式只存在一个排序(orderer)服务,是一种中心化结构,一旦排序(orderer)服务出现了问题,整个区块链网络将会崩溃,为了能在正式 ...
- 踩坑留印,启动进程遇到报错:/proc/self/fd/9: 2: ulimit: bad number
启动进程,遇到报错: /proc/self/fd/9: 2: ulimit: bad number 分析配置文件内容没有错误. 怀疑可能是文件格式问题,在IDE里面查看,果然是windows格式.ID ...
- VIM 键
输入 vimtutor命令,可以打开Linux使用手册(基本使用). ***. 插入键: A: 行尾插入 a: 字符后面插入 i: 字符前面插入 I: 行首插入 r:只替换一次字符 R:一直替换,直 ...
- SAP Odata実行命令(1)
$count $Orderby:desc/asc ※$Orderby=ソートする項目 desc降順/asc昇順 を指定すること $Filter: $Skip,Top and Inline count: ...