机器学习算法Python实现
=========
[![MIT license](https://img.shields.io/dub/l/vibe-d.svg)](https://github.com/lawlite19/MachineLearning_Python/blob/master/LICENSE)
## 目录
* [机器学习算法Python实现](#机器学习算法python实现)
* [一、线性回归](#一线性回归)
* [1、代价函数](#1代价函数)
* [2、梯度下降算法](#2梯度下降算法)
* [3、均值归一化](#3均值归一化)
* [4、最终运行结果](#4最终运行结果)
* [5、使用scikit-learn库中的线性模型实现](#5使用scikit-learn库中的线性模型实现)
* [二、逻辑回归](#二逻辑回归)
* [1、代价函数](#1代价函数)
* [2、梯度](#2梯度)
* [3、正则化](#3正则化)
* [4、S型函数(即)](#4s型函数即)
* [5、映射为多项式](#5映射为多项式)
* [6、使用的优化方法](#6使用scipy的优化方法)
* [7、运行结果](#7运行结果)
* [8、使用scikit-learn库中的逻辑回归模型实现](#8使用scikit-learn库中的逻辑回归模型实现)
* [逻辑回归_手写数字识别_OneVsAll](#逻辑回归_手写数字识别_onevsall)
* [1、随机显示100个数字](#1随机显示100个数字)
* [2、OneVsAll](#2onevsall)
* [3、手写数字识别](#3手写数字识别)
* [4、预测](#4预测)
* [5、运行结果](#5运行结果)
* [6、使用scikit-learn库中的逻辑回归模型实现](#6使用scikit-learn库中的逻辑回归模型实现)
* [三、BP神经网络](#三bp神经网络)
* [1、神经网络model](#1神经网络model)
* [2、代价函数](#2代价函数)
* [3、正则化](#3正则化)
* [4、反向传播BP](#4反向传播bp)
* [5、BP可以求梯度的原因](#5bp可以求梯度的原因)
* [6、梯度检查](#6梯度检查)
* [7、权重的随机初始化](#7权重的随机初始化)
* [8、预测](#8预测)
* [9、输出结果](#9输出结果)
* [四、SVM支持向量机](#四svm支持向量机)
* [1、代价函数](#1代价函数)
* [2、Large Margin](#2large-margin)
* [3、SVM Kernel(核函数)](#3svm-kernel核函数)
* [4、使用中的模型代码](#4使用scikit-learn中的svm模型代码)
* [5、运行结果](#5运行结果)
* [五、K-Means聚类算法](#五k-means聚类算法)
* [1、聚类过程](#1聚类过程)
* [2、目标函数](#2目标函数)
* [3、聚类中心的选择](#3聚类中心的选择)
* [4、聚类个数K的选择](#4聚类个数k的选择)
* [5、应用——图片压缩](#5应用图片压缩)
* [6、使用scikit-learn库中的线性模型实现聚类](#6使用scikit-learn库中的线性模型实现聚类)
* [7、运行结果](#7运行结果)
* [六、PCA主成分分析(降维)](#六pca主成分分析降维)
* [1、用处](#1用处)
* [2、2D-->1D,nD-->kD](#22d--1dnd--kd)
* [3、主成分分析PCA与线性回归的区别](#3主成分分析pca与线性回归的区别)
* [4、PCA降维过程](#4pca降维过程)
* [5、数据恢复](#5数据恢复)
* [6、主成分个数的选择(即要降的维度)](#6主成分个数的选择即要降的维度)
* [7、使用建议](#7使用建议)
* [8、运行结果](#8运行结果)
* [9、使用scikit-learn库中的PCA实现降维](#9使用scikit-learn库中的pca实现降维)
* [七、异常检测 Anomaly Detection](#七异常检测-anomaly-detection)
* [1、高斯分布(正态分布)](#1高斯分布正态分布gaussian-distribution)
* [2、异常检测算法](#2异常检测算法)
* [3、评价的好坏,以及的选取](#3评价px的好坏以及ε的选取)
* [4、选择使用什么样的feature(单元高斯分布)](#4选择使用什么样的feature单元高斯分布)
* [5、多元高斯分布](#5多元高斯分布)
* [6、单元和多元高斯分布特点](#6单元和多元高斯分布特点)
* [7、程序运行结果](#7程序运行结果)
## 一、[线性回归](/LinearRegression)
- [全部代码](/LinearRegression/LinearRegression.py)
### 1、代价函数
- ![J(\theta ) = \frac{1}{{2{\text{m}}}}\sum\limits_{i = 1}^m {{{({h_\theta }({x^{(i)}}) - {y^{(i)}})}^2}} ](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=J%28%5Ctheta%20%29%20%3D%20%5Cfrac%7B1%7D%7B%7B2%7B%5Ctext%7Bm%7D%7D%7D%7D%5Csum%5Climits_%7Bi%20%3D%201%7D%5Em%20%7B%7B%7B%28%7Bh_%5Ctheta%20%7D%28%7Bx%5E%7B%28i%29%7D%7D%29%20-%20%7By%5E%7B%28i%29%7D%7D%29%7D%5E2%7D%7D%20)
- 其中:
![{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + ...](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7Bh_%5Ctheta%20%7D%28x%29%20%3D%20%7B%5Ctheta%20_0%7D%20%2B%20%7B%5Ctheta%20_1%7D%7Bx_1%7D%20%2B%20%7B%5Ctheta%20_2%7D%7Bx_2%7D%20%2B%20...)
- 下面就是要求出theta,使代价最小,即代表我们拟合出来的方程距离真实值最近
- 共有m条数据,其中![{{{({h_\theta }({x^{(i)}}) - {y^{(i)}})}^2}}](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7B%7B%7B%28%7Bh_%5Ctheta%20%7D%28%7Bx%5E%7B%28i%29%7D%7D%29%20-%20%7By%5E%7B%28i%29%7D%7D%29%7D%5E2%7D%7D)代表我们要拟合出来的方程到真实值距离的平方,平方的原因是因为可能有负值,正负可能会抵消
- 前面有系数`2`的原因是下面求梯度是对每个变量求偏导,`2`可以消去
- 实现代码:
```
# 计算代价函数
def computerCost(X,y,theta):
m = len(y)
J = 0
J = (np.transpose(X*theta-y))*(X*theta-y)/(2*m) #计算代价J
return J
```
- 注意这里的X是真实数据前加了一列1,因为有theta(0)
### 2、梯度下降算法
- 代价函数对![{{\theta _j}}](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7B%7B%5Ctheta%20_j%7D%7D)求偏导得到:
![\frac{{\partial J(\theta )}}{{\partial {\theta _j}}} = \frac{1}{m}\sum\limits_{i = 1}^m {[({h_\theta }({x^{(i)}}) - {y^{(i)}})x_j^{(i)}]} ](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%5Cfrac%7B%7B%5Cpartial%20J%28%5Ctheta%20%29%7D%7D%7B%7B%5Cpartial%20%7B%5Ctheta%20_j%7D%7D%7D%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%5Csum%5Climits_%7Bi%20%3D%201%7D%5Em%20%7B%5B%28%7Bh_%5Ctheta%20%7D%28%7Bx%5E%7B%28i%29%7D%7D%29%20-%20%7By%5E%7B%28i%29%7D%7D%29x_j%5E%7B%28i%29%7D%5D%7D%20)
- 所以对theta的更新可以写为:
![{\theta _j} = {\theta _j} - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {[({h_\theta }({x^{(i)}}) - {y^{(i)}})x_j^{(i)}]} ](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7B%5Ctheta%20_j%7D%20%3D%20%7B%5Ctheta%20_j%7D%20-%20%5Calpha%20%5Cfrac%7B1%7D%7Bm%7D%5Csum%5Climits_%7Bi%20%3D%201%7D%5Em%20%7B%5B%28%7Bh_%5Ctheta%20%7D%28%7Bx%5E%7B%28i%29%7D%7D%29%20-%20%7By%5E%7B%28i%29%7D%7D%29x_j%5E%7B%28i%29%7D%5D%7D%20)
- 其中![\alpha ](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%5Calpha%20)为学习速率,控制梯度下降的速度,一般取**0.01,0.03,0.1,0.3.....**
- 为什么梯度下降可以逐步减小代价函数
- 假设函数`f(x)`
- 泰勒展开:`f(x+△x)=f(x)+f'(x)*△x+o(△x)`
- 令:`△x=-α*f'(x)` ,即负梯度方向乘以一个很小的步长`α`
- 将`△x`代入泰勒展开式中:`f(x+△x)=f(x)-α*[f'(x)]²+o(△x)`
- 可以看出,`α`是取得很小的正数,`[f'(x)]²`也是正数,所以可以得出:`f(x+△x)<=f(x)`
- 所以沿着**负梯度**放下,函数在减小,多维情况一样。
- 实现代码
```
# 梯度下降算法
def gradientDescent(X,y,theta,alpha,num_iters):
m = len(y)
n = len(theta)
temp = np.matrix(np.zeros((n,num_iters))) # 暂存每次迭代计算的theta,转化为矩阵形式
J_history = np.zeros((num_iters,1)) #记录每次迭代计算的代价值
for i in range(num_iters): # 遍历迭代次数
h = np.dot(X,theta) # 计算内积,matrix可以直接乘
temp[:,i] = theta - ((alpha/m)*(np.dot(np.transpose(X),h-y)))
没有合适的资源?快使用搜索试试~ 我知道了~
机器学习算法 python 实现.zip
共106个文件
png:57个
py:13个
mat:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 33 浏览量
2024-11-23
14:17:38
上传
评论
收藏 34.1MB ZIP 举报
温馨提示
机器学习算法 python 实现机器学习算法Python实现目錄机器学习算法Python实现一、线性回归1、代价函数2、梯度下降算法3、均值归一化4、最终运行结果5、使用scikit-learn库中的线性模型实现二、逻辑回归1、代价函数2、梯度3、正常化4、S型函数(即)5、映射为多项式6、使用的优化方法7、运行结果8、使用scikit-learn库中的逻辑回归模型实现逻辑回归_手写数字识别_OneVsAll1、随机显示100个数字2、一对多3、手写数字识别4、预测5、运行结果6、使用scikit-learn库中的逻辑回归模型实现三、BP机场1、神经网络模型2、注意事项3、正常化4、反向传播BP5、BP可以求出梯度的原因6、梯度检查7、工资的随机初始化8、预测9、输出结果四、SVM支持向量1、代价函数2、大幅度3、SVM Kernel(核函数)4、使用中的模型代码5、运行结果五、K-Means聚类算法1、聚合过程2、目标函数3、聚类中心的选择4、聚类个数K选择5、应用——图像压缩6、使用s
资源推荐
资源详情
资源评论
收起资源包目录
机器学习算法 python 实现.zip (106个子文件)
predict.csv 244KB
predict.csv 244KB
class_y.csv 146KB
data.csv 657B
.gitignore 13B
NeuralNetwork_03.jpg 4.59MB
LogisticRegression_03.jpg 2.61MB
LICENSE 1KB
data_faces.mat 10.52MB
data_digits.mat 7.16MB
data_digits.mat 7.16MB
data2.mat 91KB
bird.mat 45KB
data1.mat 9KB
data2.mat 7KB
data3.mat 6KB
data.mat 5KB
data.mat 995B
data1.mat 981B
readme.md 84KB
data1.npy 2KB
data.npy 644B
PCA_08.png 266KB
PCA_06.png 164KB
K-Means_06.png 157KB
LogisticRegression_08.png 153KB
PCA_07.png 121KB
NeuralNetwork_07.png 110KB
SVM_10.png 101KB
LogisticRegression_09.png 85KB
NeuralNetwork_06.png 83KB
AnomalyDetection_09.png 60KB
LogisticRegression_06.png 45KB
NeuralNetwork_05.png 43KB
LogisticRegression_04.png 39KB
NeuralNetwork_04.png 36KB
LogisticRegression_12.png 32KB
bird.png 32KB
K-Means_05.png 30KB
PCA_05.png 30KB
SVM_09.png 28KB
K-Means_03.png 27KB
NeuralNetwork_01.png 24KB
AnomalyDetection_08.png 23KB
K-Means_02.png 23KB
AnomalyDetection_10.png 23KB
K-Means_01.png 21KB
PCA_01.png 21KB
LinearRegression_01.png 21KB
SVM_08.png 21KB
SVM_07.png 19KB
AnomalyDetection_03.png 18KB
AnomalyDetection_02.png 18KB
LogisticRegression_01.png 18KB
LogisticRegression_10.png 18KB
PCA_04.png 16KB
K-Means_04.png 16KB
PCA_03.png 16KB
LogisticRegression_02.png 16KB
SVM_05.png 15KB
NeuralNetwork_08.png 15KB
SVM_03.png 14KB
SVM_02.png 12KB
SVM_01.png 11KB
LogisticRegression_07.png 11KB
LogisticRegression_11.png 10KB
AnomalyDetection_04.png 9KB
AnomalyDetection_01.png 7KB
SVM_06.png 7KB
LogisticRegression_05.png 7KB
PCA_02.png 7KB
NeuralNetwork_09.png 7KB
AnomalyDetection_07.png 6KB
SVM_04.png 6KB
NeuralNetwork_02.png 6KB
LogisticRegression_13.png 5KB
AnomalyDetection_06.png 4KB
AnomalyDetection_05.png 4KB
K-Means_07.png 2KB
NeuralNetwork.py 11KB
LogisticRegression.py 5KB
K-Menas.py 5KB
LogisticRegression_OneVsAll.py 5KB
PCA.py 4KB
AnomalyDetection.py 4KB
LinearRegression.py 4KB
PCA_scikit-learn.py 3KB
SVM_scikit-learn.py 2KB
LogisticRegression_scikit-learn.py 1KB
LinearRegression_scikit-learn.py 1KB
LogisticRegression_OneVsAll_scikit-learn.py 806B
K-Means_scikit-learn.py 549B
data1.txt 4KB
data.txt 2KB
data2.txt 2KB
资源内容.txt 1KB
data.txt 657B
标签.txt 6B
SVM.wmf 42KB
NeuralNetwork.wmf 34KB
共 106 条
- 1
- 2
资源评论
徐浪老师
- 粉丝: 8563
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 饼图-数据图表-简约清新 3.pptx
- 饼图-数据图表-简约清新-3.pptx
- 饼图-数据图表-简约圆环-3.pptx
- 简约圆形比例图PPT模板素材-1.pptx
- 饼图-数据图表-简约折线-3.pptx
- 饼图-数据图表-简约线条-3.pptx
- 环形数据对比分析PPT模板-1.pptx
- 饼图-数据图表-简约总分-4.pptx
- 两项比较百分比饼图PPT模板-1.pptx
- 三部分百分比PPT饼图素材-4.pptx
- 三项对比环形饼图PPT模板-4.pptx
- 圆环图-数据图表-三圆并列-4.pptx
- 红灰色调PPT表格模板素材-1.pptx
- 实用的PPT数据表格模板-4.pptx
- 大气商务蓝灰色调PPT表格-1.ppt
- 简单简洁PPT表格模板素材-2.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功