梯度上升法解决最优化问题

import numpy as np
import matplotlib.pyplot as plt
X = np.empty((100,2))
X[:,0] = np.random.uniform(0,100,size=100)#产生实数
X[:,1] = 0.5 * X[:,0] + 3. +np.random.normal(0,10,size=100)
plt.scatter(X[:,0],X[:,1])


axis = 0 ,列向量的均值

#demean
def demean(X):return X - np.mean(X,axis=0)#1*n向量
X_demean = demean(X)
plt.scatter(X_demean[:,0],X_demean[:,1])


此时均值为0

print(np.mean(X_demean[:,0]))
-1.7195134205394424e-14

#梯度上升法

def f(w,X):return np.sum((X.dot(w) ** 2)) / len(X)def df_math(w,X):return X.T.dot(X.dot(w)) * 2 / len(X)def df_debug(w,X,epsilon = 0.00001):res = np.empty(len(w))for i in range(len(w)):w_1 = w.copy()w_1[i] += epsilonw_2 = w.copy()w_2[i] -= epsilonres[i] = (f(w_1,X) - f(w_2,X)) / (2 * epsilon)return res
def direction(w):return w / np.linalg.norm(w)#求模
def gradient_descent(df,X,initial_w,eta,n_iters = 1e4,epsilon = 1e-8):w = direction(initial_w)cur_iter = 0while cur_iter < n_iters:gradient = df(w,X)last_w = ww = w + eta * gradientw = direction(w) #注意 每次w都要求成单位向量if (np.abs(f(w,X) - f(last_w,X)) < epsilon):breakcur_iter += 1return w
initial_w = np.random.random(X.shape[1]) #注意 2不能用0向量开始
print(initial_w)
eta = 0.001
[0.89193175 0.01610308]
#注意3 pca不能使用StandardScaler标准化数据。。标准化之后方差成1了然而pca要最大化方差
print(gradient_descent(df_math,X_demean,initial_w,eta))
print(gradient_descent(df_debug,X_demean,initial_w,eta))
[0.85951042 0.51111822]
[0.85951042 0.51111822]

可视化一下

#可视化一下
w = gradient_descent(df_debug,X_demean,initial_w,eta)
plt.scatter(X_demean[:,0],X_demean[:,1])
plt.plot([0,w[0] * 30],[0,w[1] * 30],color = 'r')

#考虑极端情况
X2 = np.empty((100,2))
X2[:,0] = np.random.uniform(0,100,size=100)#产生实数
X2[:,1] = 0.75 * X2[:,0] + 3.
X2_demean = demean(X2)
w2 = gradient_descent(df_math,X2_demean,initial_w,eta)
plt.scatter(X2[:,0],X2[:,1])
plt.plot([0,w2[0] * 30],[0,w2[1] * 30],color = 'r')

Python机器学习:PCA与梯度上升03求数据的主成分PCA相关推荐

  1. 主成分分析旋转矩阵MATLAB实现,R语言高维数据的主成分pca、t-SNE算法降维与可视化分析案例报告...

    维度降低有两个主要用例:数据探索和机器学习.它对于数据探索很有用,因为维数减少到几个维度(例如2或3维)允许可视化样本.然后可以使用这种可视化来从数据获得见解(例如,检测聚类并识别异常值).对于机器学 ...

  2. R语言辅导高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

    降低维度有两个主要用例:数据探索和机器学习.它对于数据探索很有用,因为维数减少到几个维度(例如2或3维)允许可视化样本.然后可以使用这种可视化来从数据获得见解(例如,检测聚类并识别异常值).对于机器学 ...

  3. R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标

    全文下载链接:http://tecdat.cn/?p=27515 建立重庆市经济指标发展体系,以重庆市一小时经济圈作为样本,运用因子分析方法进行实证分析,在借鉴了相关评价理论和评价方法的基础上,本文提 ...

  4. 数据分享|R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标...

    原文链接:http://tecdat.cn/?p=27515  建立重庆市经济指标发展体系,以重庆市一小时经济圈作为样本,运用因子分析方法进行实证分析,在借鉴了相关评价理论和评价方法的基础上,本文提取 ...

  5. 数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化...

    全文链接:http://tecdat.cn/?p=22262 在讨论分类时,我们经常分析二维数据(一个自变量,一个因变量)(点击文末"阅读原文"获取完整代码数据). 但在实际生活中 ...

  6. PCA计算原特征(指标)对主成分的贡献量/权重

    1. 用PCA反推原始特征对主成分的贡献量或权重 使用python的sklearn包中的pca函数 # -*- coding: utf-8 -*- import os import numpy as ...

  7. matlab 归一化_MATLAB主成分PCA人脸识别深度解析(一)

    前言:人脸识别是一个很经典的课题,围绕它可以做成很多实际应用,比如教室人脸考勤,人脸门禁系统,无人超市购物系统,刷脸支付系统等等.可是,为什么这一切是靠什么进行匹配人脸的呢,怎么那么神奇呢.人脸识别的 ...

  8. 经验正交函数 (EOF) / 主成分 (PCA) 分解及Python实现

    前言 EOF 经验正交函数 分解原理及用法: https://wenku.baidu.com/view/93bc8a9b680203d8ce2f2468.html 方法实现过程 EOF PCA Pyt ...

  9. Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)

    本次案例还是适合人文社科领域,金融或者新闻专业.本科生做线性回归和主成分回归就够了,研究生还可以加随机森林回归,其方法足够人文社科领域的硕士毕业论文了. 案例背景 有八个自变量,['微博平台可信度', ...

最新文章

  1. OpenMp使用例子
  2. 【VS Code】更改默认的单击打开文档模式
  3. java企业号回调模式,微信公众平台企业号开发—开启回调模式
  4. 根据地址形式分辨scala的一维数组和二维数组
  5. css 查看更多_在Scrapy中如何利用CSS选择器从网页中采集目标数据——详细教程(上篇)...
  6. 四川省盐业学校九五计算机,2020年四川省盐业学校招生录取分数线
  7. 【区块链】量子链命令行qtum-cli全命令详解
  8. 计算题合集-管理经济学
  9. 百度经纬度和google经纬度互转
  10. C语言进阶(一):宏函数内定义结构体
  11. 大型传统企业要不要提升自身的IT研发能力
  12. 团队作业——Alpha冲刺 8/12
  13. 用户获取pppd拨号状态_iPhone手机隐藏的拨号键代码,原来还能这么用,幸好钱没白花...
  14. 谈谈对儒家与道家的一些小小看法
  15. 使用python实现用微信远程控制电脑
  16. Python爬虫4.2 — ajax(动态网页数据抓取)用法教程
  17. 3GPP TS 23501-g51 中英文对照 | 4.3.3 Interworking between 5GC via non-3GPP access and E-UTRAN connected t
  18. 解决蓝牙鼠标和电脑连接出现卡顿的情况
  19. IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决办法
  20. HTML+CSS(精灵图)实现微信滑动门技术

热门文章

  1. 基于XML使用MyBatis
  2. java 魔数_Java 字节码结构解析
  3. 【英语学习】【Level 08】U01 Let's Read L3 The classics are always in
  4. app.vue里使用data_在电脑使用讯飞有声,通过python自动化朗读
  5. 数据图表与分析图_史上最全最实用的数据可视化分析图表制作工具汇总
  6. centos php mcrypt_面试经常问你什么是PHP垃圾回收机制?
  7. linux mpc8313启动流程,基于MPC8313E和FPGA的双口RAM驱动开发
  8. python xlutils和openpyxl哪个好_Python-Excel 模块哪家强?
  9. manjaro 搜狗输入法_Manjaro日常使用 之一:日常办公
  10. ps制作20种特效文字_如何使用AE制作文字破碎动画?制作ae破碎文字特效教程分享...