资源简介
逻辑回归一般只能解决二分问题,但是进行扩展之后可以解决多线性分类问题。这是一个完整的Softmax regression解决多线性分类的源代码,python3编码,可直接运行,有输入数据和预测数据的可视化编程。还训练部分和测试部分的源代码进行了封装,可直接运行。

代码片段和文件信息
import numpy as np
import matplotlib.pyplot as plt
import random as rd
# 模型训练函数
def gradientAscent(feature_data label_data k maxCycle alpha):
“““
利用梯度下降法训练Softmax模型
:param feature_data:(mat)特征
:param label_data:(mat)标签
:param k:(int)类别的个数
:param maxCycle:(int)最大迭代个数
:param alpha: (float)学习速率
:return:weights(mat)权重
“““
m n = np.shape(feature_data)
weights = np.mat(np.ones((n k)))
i = 0
while i <= maxCycle:
err = np.exp(feature_data * weights)
if i % 1000 == 0:
print(“\t-----iter:“ i “cost:“ cost(err label_data))
row_sum = -err.sum(axis=1)
row_sum = row_sum.repeat(k axis=1)
err = err / row_sum
for x in range(m):
err[x label_data[x 0]] += 1
weights = weights + (alpha / m) * feature_data.T * err
i += 1
return weights
def cost(err label_data):
“““
计算损失函数值
:param err:(mat)exp值
:param label_data:()mat标签的值
:return:sum_cost/m (float):损失函数的值
“““
m = np.shape(err)[0]
sum_cost = 0.0
for i in range(m):
if err[i label_data[i 0]] / np.sum(err[i :]) > 0:
sum_cost -= np.log(err[i label_data[i 0]] / np.sum(err[i :]))
else:
sum_cost -= 0
return sum_cost / m
def load_data(inputfile):
“““
:param inputfile:训练样本的文件名
:return:feature_data(mat)特征
label_data(mat)标签
k(int)类别的个数
“““
f = open(inputfile)
feature_data = []
label_data = []
for line in f.readlines():
feature_temp = []
feature_temp.append(1)
lines = line.strip().split(“\t“)
for i in range(len(lines) - 1):
feature_temp.append(float(lines[i]))
label_data.append(int(lines[-1]))
feature_data.append(feature_temp)
f.close()
# print(feature_data)
# feature_data = np.mat(feature_data)
# print(feature_data)
return np.mat(feature_data) np.mat(label_data).T len(set(label_data))
def save_model(filename weights):
“““
保存最终的模型
:param filename:(string)文件名
:param w: (mat)SR 模型的权重
:return:
“““
f_w = open(filename “w“)
m n = np.shape(weights)
for i in range(m):
w_tmp = []
for j in range(n):
w_tmp.append(str(weights[i j]))
f_w.write(“\t“.join(w_tmp) + “\n“)
f_w.close()
def figurePlot(feature label):
“““
根据标签画出各个类别的点图
:param feature:(mat)特征
:param label:(mat)标签
:return:
“““
point_red = []
point_blue = []
point_yellow = []
point_green = []
r = np.shape(feature)[0]
for index in range(r):
temp = -2 # 从右到左第二个数
if label[index] == 0:
point_red.append(feature[index temp])
point_red.append(feature[index temp + 1]) # 如果一次放两个元素feature[index 1:3],会被当做一个整体存放在list中
elif la
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-03 12:54 Softmax Regression(逻辑回归多线性分类)\
目录 0 2018-11-03 12:57 Softmax Regression(逻辑回归多线性分类)\.idea\
文件 408 2018-11-01 20:38 Softmax Regression(逻辑回归多线性分类)\.idea\Softmax Regression.iml
目录 0 2018-11-03 12:58 Softmax Regression(逻辑回归多线性分类)\.idea\inspectionProfiles\
文件 294 2018-11-01 20:38 Softmax Regression(逻辑回归多线性分类)\.idea\misc.xm
文件 295 2018-11-01 20:38 Softmax Regression(逻辑回归多线性分类)\.idea\modules.xm
文件 23028 2018-11-03 12:57 Softmax Regression(逻辑回归多线性分类)\.idea\workspace.xm
文件 6363 2018-11-03 12:52 Softmax Regression(逻辑回归多线性分类)\SR_functions.py
文件 488 2018-11-03 12:54 Softmax Regression(逻辑回归多线性分类)\SR_main.py
文件 576 2018-11-03 11:40 Softmax Regression(逻辑回归多线性分类)\SR_test.py
文件 3129 2018-10-31 18:21 Softmax Regression(逻辑回归多线性分类)\SoftInput
目录 0 2018-11-03 12:54 Softmax Regression(逻辑回归多线性分类)\__pycache__\
文件 5508 2018-11-03 12:54 Softmax Regression(逻辑回归多线性分类)\__pycache__\SR_functions.cpython-36.pyc
文件 12000 2018-11-03 12:54 Softmax Regression(逻辑回归多线性分类)\test_result
文件 228 2018-11-03 12:54 Softmax Regression(逻辑回归多线性分类)\weights
相关资源
- Python-BDD100K大规模多样化驾驶视频数据
- 机器学习(周志华)配套代码
- 机器学习-岭回归实现
- 012345手势识别神经网络代码
- 猫-非猫图二分类识别
- 机器学习k means算法实现图像分割
- python实现逻辑回归
- kmeans聚类算法的python实现程序
- Python100经典练习题
- 南瓜书(PumpkinBook)
- 机器学习numpy和pandas基础
- python机器学习Sebastian Raschka中文最新完
- Python-DeepMoji模型的pyTorch实现
- 《机器学习实战》源代码Python3
- Python-使用DeepFakes实现YouTube视频自动换
- Introduction to machine learning with python (
- python新浪微博爬虫,爬取微博和用户
- Python-一系列高品质的动漫人脸数据集
- Python-Insightface人脸检测识别的最小化
- 非线性回归Python代码
- 093 2018北风网人工智能视频(完结)转
- python的色情图片识别
- 贝叶斯网络程序
- 《机器学习实战》Python3代码
- Python-自然场景文本检测PSENet的一个
- Python-在特征金字塔网络FPN的Pytorch实现
- Python-PyTorch实时多人姿态估计项目的实
- Python-用PyTorch10实现FasterRCNN和MaskRCNN比
- Python-心脏核磁共振MRI图像分割
- Python-基于YOLOv3的行人检测
评论
共有 条评论