资源简介
逻辑回归一般只能解决二分问题,但是进行扩展之后可以解决多线性分类问题。这是一个完整的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项目案例开发从入门到实战源代
- Xie-Beni评价m=2
- kNN分类器和两个-Python
- Logistics回归
- Multiboost的Python实现
- 纯python3.5代码实现逻辑回归的二分类
- 决策树回归算法
- Python机器学习与量化投资视频教程
- python实现微信聊天机器人
- 逻辑回归python实现
- Python_TreeMap_可视化方案数据源实现代
- machine learning Logistic regression
- openCV+PYTHON实现的knn算法手写数字识别
- 算法的python实现代码、测试数据集及
- python深度学习电子版+源码
- machine learning adaboost
- python 候选消除算法实现
- python入门到精通某智付费课程超级完
- L2正则化python实现案例()
- treePlotter
- 超限学习机—逻辑回归Python代码
- Python-TensorFlow语义分割组件
- 机器学习实战python2SVM 训练数据
- logistic regression源代码(含数据集)
- tensorflow_random_forest_demo.py
- keras_inception_v4_finetune.py
- densenet121.py
- mnist_acgan.py
- 逻辑回归 python代码+训练数据
- 集成k-最近邻(k-NN)、朴素贝叶斯、
评论
共有 条评论