使用Python3.6实现机器学习算法(赵志勇),并将训练结果可视化

import numpy as np
import matplotlib.pyplot as pltdef 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)))# print(weights)i = 0while i <= maxCycle:err = np.exp(feature_data * weights)# print(err, np.shape(err))if i % 1000 == 0:print('\t----iter:%d,---cost:%f-----' % (i, cost(err, label_data)))# 去掉axis所在轴的维度,将这个轴上的数据相加到剩下的维度上rowsum = -err.sum(axis=1)# print(rowsum)# repeat沿着纵轴重复增加k列rowsum = rowsum.repeat(k, axis=1)# 求取每个维度上的err值的占比,分别进行更新err = err / rowsumfor x in range(m):# 加强分类,例如:实际值是1,那么对应位置的权重就+1,以此增加权重的比例err[x, label_data[x, 0]] += 1weights = weights + (alpha / m) * feature_data.T * erri += 1return weightsdef cost(err, label_data):'''计算损失函数:param err:(mat)exp的值:param label_data: (mat)标签的值:return: 损失函数的值'''m = np.shape(err)[0]sum_cost = 0for 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 -= 0return sum_cost / mdef load_data(inputfile):f = open(inputfile, 'r')feature_data = []label_data = []for line in f.readlines():feature_tmp = []feature_tmp.append(1)lines = line.strip().split()for i in range(len(lines) - 1):feature_tmp.append(float(lines[i]))label_data.append(int(lines[-1]))feature_data.append(feature_tmp)f.close()return np.mat(feature_data), np.mat(label_data).T, len(set(label_data))def save_model(file_name, weights):f_w = open(file_name, '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))f_w.write('\n')f_w.close()def draw(weight, file_name):x0List = []y0List = []x1List = []y1List = []x2List = []y2List = []x3List = []y3List = []f = open(file_name, 'r')for line in f.readlines():lines = line.strip().split()if lines[2] == '0':x0List.append(float(lines[0]))y0List.append(float(lines[1]))elif lines[2] == '1':x1List.append(float(lines[0]))y1List.append(float(lines[1]))elif lines[2] == '2':x2List.append(float(lines[0]))y2List.append(float(lines[1]))else:x3List.append(float(lines[0]))y3List.append(float(lines[1]))fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(x0List, y0List, s=10, c='red')ax.scatter(x1List, y1List, s=10, c='green')ax.scatter(x2List, y2List, s=10, c='blue')ax.scatter(x3List, y3List, s=10, c='yellow')plt.show()if __name__ == '__main__':# 1.导入训练数据print('------1. load data-----')# feature是基础数据,label是特征,k是特征值数量feature, label, k = load_data('softInput.txt')# print(feature)# 2. 训练LR模型print('-----2. training-----')w = gradientAscent(feature, label, k, 10000, 0.4)# 3.保存最终的模型print('----3.save model----')save_model('weights', w)# 4,绘制图像draw(w, 'softInput.txt')

python3.6实现Softmax Regression测试训练模型(可视化)机器学习算法(赵志勇)学习笔记相关推荐

  1. python机器学习算法(赵志勇)学习笔记( Logistic Regression,LR模型)

    Logistic Regression(逻辑回归) 分类算法是典型的监督学习,分类算法通过对训练样本的学习,得到从样本特征到样本的标签之间的映射关系,也被称为假设函数,之后可利用该假设函数对新数据进行 ...

  2. python3.6实现随机森林算法(可视化)机器学习算法(赵志勇)学习笔记

    # coding=utf-8 import numpy as np import random as rd from math import log import matplotlib.pyplot ...

  3. 02_clickhouse安装,卸载,启动/关闭服务,交互式命令(数据库创建,数据导入,查询),批模式数据导入,MySQL接口操作ClickHouse,DBeaver可视化工具安装与使用(学习笔记)

    1 ClickHouse安装 安装文件清单 clickhouse-client-${version}.noarch.rpm clickhouse-common-static-dbg-${version ...

  4. 浪晋的测试小讲堂萌芽计划第二期视频学习笔记

    学习测试ing 按照知乎: https://zhuanlan.zhihu.com/p/32505591 上面提供的B站课程整理笔记 视频链接如下: https://www.bilibili.com/v ...

  5. 模板测试+一个好玩的顶点动画效果——UnityShader学习笔记

    文章目录 一.自言自语 效果 模板测试效果(图传错了就懒得继续换了) 模板测试代码 顶点动画面板 顶点动画效果 顶点动画shader代码 总结 一.自言自语 嗯,又是很久没写笔记了.学习的进度和效率没 ...

  6. 【数据可视化】Matplotlib 入门到精通学习笔记(超详细)

    数据可视化是什么 如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做数据可视化. 当使用图表 ...

  7. 机器学习算法(1)——Logistic Regression

    1.二项逻辑回归模型 二项回归模型是一种二分类模型,由条件概率分布 P(Y|X) 表示,形式为参数化的逻辑分布.这里的随机变量 X 取值为实数,随机变量 Y 取值为 1或0 ,通过监督学习的方法来估计 ...

  8. 《python 机器学习算法-logistics regression》

    训练data以及源文件(python2.x)见作者(赵志勇)的github: https://github.com/zhaozhiyong19890102/Python-Machine-Learnin ...

  9. TensorFlow实战之Softmax Regression识别手写数字

       本文根据最近学习TensorFlow书籍网络文章的情况,特将一些学习心得做了总结,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. 一.相关概念 1.MNIST MNIST(Mixed N ...

最新文章

  1. linux里的日志文件干啥用的,linux分析日志经常用的命令
  2. 无需精通编程:走进人工智能比你想象中容易
  3. [蓝桥杯][算法提高VIP]数组替换-模拟
  4. libreoffice_利用Excel或LibreOffice的业务输入进行单元测试约束
  5. linux查看发起ddos攻击的ip,在Linux上使用netstat命令查证DDOS攻击的方法
  6. (15)FPGA面试题存储器资源区别
  7. Hybrid App基础知识
  8. 给MDK5/KEIL5安装51/ARM编译坏境
  9. asp.net饭店点菜管理
  10. django-查询语句(一)
  11. 【Android Test】糟心的“Empty test suite ”异常
  12. IOS APP 推荐
  13. Linux使用zip打包文件
  14. Java标识符的命名规则有哪些
  15. 自定义SSLSocketFactory
  16. linux下使用PulseAudio获取扬声器的音量和是否静音(C++)
  17. oracle监听程序的配置
  18. 基于c语言矩阵数组透视变换,一种图像透视变换方法与流程
  19. 你自学过哪些软件测试技术?转行做测试纠结自学还是报班培训?
  20. 网上邻居看不到任何电脑的解法

热门文章

  1. 有N个人围成一圈,从第一个人开始报数,数到3的人出列,直到最后一个人,问他的编号
  2. 5G网络正式商用对4G物联网卡造成何种影响?
  3. 记录yarn安装全局包,无法使用的问题:‘yo‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
  4. 计算机考试ppt,计算机考试PPT.ppt
  5. Python每日笔记打卡_day3
  6. 封神台-尤里的复仇II 回归sql-注入绕过防护getshell
  7. CSDN~BLOG目录
  8. ORB:FAST关键点和rBRIEF描述子
  9. 日常刷题_cf_6.26
  10. RFID基本理论与操作实验