DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)

简介: DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)


目录

利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)

设计思路

输出结果

核心代码


 

 

 

相关文章

DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)

DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)实现

 

利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)

设计思路

后期更新……

 

 

 

输出结果

1.  [ 1.          0.06747879 -0.97085008]
2. data_x 
3.  (300, 3) [[ 1.          0.83749402  0.80142971]
4.  [ 1.         -0.93315714  0.91389867]
5.  [ 1.         -0.72558136 -0.43234329]
6.  [ 1.          0.21216637  0.88845027]
7.  [ 1.          0.70547108 -0.99548153]]
8. 因为Linear_function函数无意义,经过Linear_function函数处理后,data_x等价于data_z
9. data_y 
10.  (300,) [-1. -1. -1. -1.  1.]
11. data_x: (300, 3)
12. data_z: (300, 3)
13. data_y: (300,)
14. [228 106 146 250  91 214  47  49 178  90]
15. Number of iterations: 26
16. 
17. Plot took 0.10 seconds.
18. Plot took 0.04 seconds.
19. Target weights: [ -0.49786797   5.28778784 -11.997255  ]
20. Target in-sample error: 3.33%
21. Target out-of-sample error: 6.21%
22. Hypothesis (N=300) weights: [-0.45931854  3.20434478 -7.70825364]
23. Hypothesis (N=300) in-sample error: 4.33%
24. Hypothesis (N=300) out-of-sample error: 6.08%
25. Hypothesis (N=10) weights: [-1.35583449  3.90067866 -5.99553537]
26. Hypothesis (N=10) in-sample error: 10.00%
27. Hypothesis (N=10) out-of-sample error: 12.87%
28. Error history took 88.89 seconds.
29. Plot took 17.72 seconds.
30. Plot took 35.88 seconds.
31. GD_w_hs[-1] [-1.35583449  3.90067866 -5.99553537]
32. dimension_z 5
33. data_x 
34.  (30, 3) [[ 1.         -0.0609991  -0.15447425]
35.  [ 1.         -0.13429796 -0.89691689]
36.  [ 1.          0.12475253  0.36980185]
37.  [ 1.         -0.0182513   0.74771272]
38.  [ 1.          0.50585605 -0.04961719]]
39. 因为Linear_function函数无意义,经过Linear_function函数处理后,data_x等价于data_z
40. data_y 
41.  (30,) [-1.  1.  1.  1. -1.]
42. 
43. Plot took 1.02 seconds.
44. Number of iterations: 105
45. 
46. Plot took 1.03 seconds.
47. Target weights: [-3  2  3  6  9 10]
48. Hypothesis weights: [-1.23615696 -0.9469097   1.76449666  2.09453304  5.62678124  5.06054409]
49. Hypothesis in-sample error: 10.00%
50. Hypothesis out-of-sample error: 15.47%
51. Plot took 16.58 seconds.
52. GD_w_hs[-1] [-1.23615696 -0.9469097   1.76449666  2.09453304  5.62678124  5.06054409]

核心代码

1. def in_sample_error(z, y, logisticGD_function):
2.     y_h = (logisticGD_function(z) >= 0.5)*2-1
3. return np.sum(y != y_h) / float(len(y))
4. 
5. 
6. def estimate_out_of_sample_error(Product_x_function, NOrderPoly_Function,Pre_Logistic_function, logisticGD_function, N=10000, Linear_function_h=None):
7.     x = np.array([Product_x_function() for i in range(N)])
8.     z = np.apply_along_axis(NOrderPoly_Function, 1, x)
9. if not Linear_function_h is None:
10.         z_h = np.apply_along_axis(Linear_function_h, 1, x)
11. else:
12.         z_h = z
13.     y = Pre_Logistic_function(z)
14.     y_h = (logisticGD_function(z_h) >= 0.5)*2-1
15. return np.sum(y != y_h) / float(N)
16. 
17. 
18. def ErrorCurve_Plot(N,GD_w_hs, cross_entropy_error):
19.     start_time = time.time()
20.     fig = plt.figure()   #  figsize=(8, 6)
21.     ax = fig.add_subplot(1, 1, 1)
22.     ax.set_xlabel(r'Iteration', fontsize=12)
23.     ax.set_ylabel(r'In-Sample Error ($E_{in}$)', fontsize=12)
24.     ax.set_title(r'Gradient Descent Evolution, N={}'.format(N), fontsize=12)
25.     ax.set_xlim(0, GD_w_hs.shape[0]-1)
26.     ax.set_ylim(0, 1)
27.     ax.xaxis.grid(color='gray', linestyle='dashed')
28.     ax.yaxis.grid(color='gray', linestyle='dashed')
29.     ax.set_axisbelow(True)
30.     ax.plot(range(GD_w_hs.shape[0]), np.apply_along_axis(cross_entropy_error, 1, GD_w_hs), 'r-')
31.     plt.show()
32. print('Plot took {:.2f} seconds.'.format(time.time()-start_time))


相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
133 4
|
2月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
140 67
|
5月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
191 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
245 2
|
3月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
4月前
|
XML JavaScript 前端开发
学习react基础(1)_虚拟dom、diff算法、函数和class创建组件
本文介绍了React的核心概念,包括虚拟DOM、Diff算法以及如何通过函数和类创建React组件。
42 3
|
3月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
25 0
|
4月前
|
机器学习/深度学习 算法
深度学习中的优化算法:从梯度下降到Adam
本文深入探讨了深度学习中的核心——优化算法,重点分析了梯度下降及其多种变体。通过比较梯度下降、动量方法、AdaGrad、RMSProp以及Adam等算法,揭示了它们如何更高效地找到损失函数的最小值。此外,文章还讨论了不同优化算法在实际模型训练中的表现和选择依据,为深度学习实践提供了宝贵的指导。
121 7
|
3月前
|
机器学习/深度学习 算法
机器学习入门:梯度下降算法(上)
机器学习入门:梯度下降算法(上)
|
5月前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】

热门文章

最新文章