资源简介
python实现逻辑回归,牛顿法,梯度上升法,对西瓜数据集和鸢鸟花数据集进行学习,正确率可达100%。
代码片段和文件信息
import numpy as np
from sklearn.model_selection import train_test_split
# sigmoid函数
def sigmoid(x):
return 1.0 / (1 + np.exp(-x))
# 关于beta的高阶可导连续凸函数(书上式3.27)
def beta_function(x y beta):
sum = 0
m = np.shape(x)[0]
for i in range(m):
sum = sum - y[i] * np.dot(beta x[i].T) + np.log(1 + np.exp(np.dot(beta x[i].T)))
return sum
# 关于beta的一阶导数
def first_derivative_beta(x y beta):
m n = np.shape(x)
sum = 0
for i in range(m):
temp = np.math.exp(np.dot(beta x[i].T))
p1 = temp/(1+temp)
sum = sum + x[i] * (y[i] - p1)
return -sum
# 关于beta的二阶导数
def second_derivative_beta(x y beta):
m n = np.shape(x)
sum = 0
for i in range(m):
temp = np.math.exp(np.dot(beta x[i].T))
p1 = temp / (1 + temp)
sum = sum + np.dot(x[i] x[i].T) * p1 * (1 - p1)
return sum
# 牛顿法迭代
def newton(x y beta0 accuracy iteration):
for i in range(iteration):
beta_before = beta0
# beta0 = beta0 - solve(second_derivative_beta(x y beta0) first_derivative_beta(x y beta0))
beta0 = beta0 - first_derivative_beta(x y beta0) / second_derivative_beta(x y beta0)
if np.dot((beta0 - beta_before) (beta0 - beta_before).T) < accuracy:
break
else:
continue
#print(beta0)
return beta0
# 梯度上升优化算法
def gradAscent(dataMatIn classLabels):
dataMatrix = np.mat(dataMatIn)
labelMat = np.mat(classLabels).transpose()
m n = np.shape(dataMatrix)
alpha = 0.001
maxCycles = 500
weights = np.ones((n 1))
for k in range(maxCycles):
h = sigmoid(dataMatrix * weights)
error = (labelMat - h)
weights = weights + alpha * dataMatrix.transpose() * error
return weights
def main():
data = np.array([[0.697 0.460 1]
[0.774 0.376 1]
[0.634 0.264 1]
[0.608 0.318 1]
[0.556 0.215 1]
[0.403 0.237 1]
[0.481 0.149 1]
[0.437 0.211 1]
[0.666 0.091 0]
[0.243 0.267 0]
[0.245 0.057 0]
[0.343 0.099 0]
[0.639 0.161 0]
[0.657 0.198 0]
[0.360 0.370 0]
[0.593 0.042 0]
[0.719 0.103 0]])
# 训练集的属性
xtrain0 = np.hstack((data[: 0:2] np.ones((17 1))))
# 训练集的样本标签
ytrain0 = data[: 2]
相关资源
- 拼音转汉字(python输入法)
- python 绘制三维直线图(plot 3d traject
- python爬取小说59868
- python编程:入门到实践 源代码
- python编程:入门到实践练习答案
- Python海龟法绘制花朵
- python 显示实时网速
- 微分方程数值解法
- python数据预处理.ipynb
- MicroPython中文教程
- Python列表常用知识总结
- python画爱心案例(基于Turtle)
- python数据类型学习思维导图
- python 飞机大战小游戏
- python打印玫瑰花
- 你也能看得懂的Python算法书 代码
- 自动截屏工具(python源码)
- python学生管理器源码
- Python-turtle玫瑰花绘制
- 猜拳小游戏python代码
- Python 爬虫小说.ipynb
- python 画一朵花(基于Turtle)
- 用Python学微积分.azw3
- Python-霍兰德人格分析图绘制
- kmeans聚类算法的python实现程序
- Python各种树木制作代码
- python 批量修改文件后缀
- 微信聊天机器人(基于wxpy)
- 北邮python爬虫学堂在线
- 使用python画词频出现条形统计图
评论
共有 条评论