# Machine Learning 课程学习代码
这是上个暑假学习 Andrew Ng 的 [Machine Learning 课程](https://www.coursera.org/learn/machine-learning)的代码,课程偏理论,所以在学习的同时用python将课程中的算法实现了一下。算法实现只使用numpy库,可视化使用matplotlib,一些数据集使用sklearn.datasets。
> - `code`文件夹中带`01`-`14`编号的是普通课程代码,剩余两个`neuralnetwork.py`和`k_means.py`是两个模块。
> - 代码用于学习交流。
## `neuralnetwork.py` 模块
由于课程需要多次写神经网络,所以写了该模块,用于快速生成、训练神经网络。
### 1. 建立一个神经网络
该模块含有`NeuralNetwork`类,可以轻松生成一个神经网络。建立一个`NeuralNetwork`实例需要4个参数:
- `num_inputs`:输入层结点数
- `num_hidden_layers`:隐藏层层数
- `num_nodes_per_hidden`:每个隐藏层的节点数(只支持所有的隐藏层有相同的节点数)
- `num_outputs`:输出层节点数
示例:建立输入层3个结点,2个隐藏层,每个隐藏层含有4个结点,输出层1个结点的神经网络,如下图所示。
<img src="./images/neural-network.png" width="350px" alt="neural network">
图片来源于google.
```python
from neuralnetwork import NeuralNetwork
# 建立输入层3个结点,2个隐藏层,每个隐藏层含有4个结点,输出层1个结点的神经网络
nn = NeuralNetwork(3, 2, 4, 1)
```
### 2. 训练一个神经网络
`NeuralNetwork` 目前仅支持梯度下降法,有`gradient_descent`method。
```python
# 训练神经网络nn
Theta, steps, Js = nn.gradient_descent(X, # input数据
Y, # label数据
ini_Theta, # 初始化的神经网络参数矩阵(建立NeuralNetwork示例的时候已经初始化好了,直接使用nn.ini_Theta即可)
alpha=0.01, # 学习率
lamda=1, # 正则化项
exponential_decay=False, # 是否用指数下降的学习率
threshold=1e-7) # 结束训练的损失函数阈值
```
训练完成后会返回:训练后的神经网络参数矩阵(`Theta`),训练过程中的训练步数(`steps`)以及训练过程中的损失函数值列表(`Js`)
### 3. 测试训练后的神经网络
神经网络训练后,只需要将测试数据、训练后的神经网络参数传入`forward_propagation`method中,进行一次前向传播即可得到训练后的结果。
```python
# 测试神经网络nn
h, A = nn.forward_propagation(X_test, # 测试数据
Theta) # 训练后的神经网络参数
```
返回的`h`即为输出层的结果,`A`为前向传播过程中隐藏层各个节点的激活值。
### 4. 示例
具体代码见 [09.0_test_for_Neural_Network_module.py](./code/09.0_test_for_Neural_Network_module.py)
<img src="./images/neuralnetwork_demo.png" width="700px" alt="demo">
## `k_means.py`模块
### 1. 实现K_means算法
主要提供 `K_means` 函数,可以方便的实现K_means算法。
```python
from k_means import K_means
# 对未标记的input数据进行K-means算法
labels, mus, J = K_means(X, # 未标记的input数据
K, # 需要标记的种类数
times) # 进行多少步算法迭代
```
该函数返回三个参数:`labels`是对于input数据的标记结果,`mus`是对于K个种类的质心坐标,`J`是标记结果对应的损失函数值。
### 2. 示例
具体代码见 [k_means.py](./code/k_means.py) 中的 `test`函数。
```
Already get dataset
the 1 times, J = 4.911510
the 2 times, J = 4.911510
the 3 times, J = 4.910132
the 4 times, J = 4.911510
the 5 times, J = 4.911510
Optimized J = 4.910132, costs 0.090155 s
Clusters' coordinates:
[[3.08627186 2.98693656]
[0.97862753 1.11267062]]
```
<img src="./images/k_means_demo.png" width="700px" alt="K-means demo">
## 参考文献
[1]. 吴恩达机器学习课程 [https://www.coursera.org/learn/machine-learning](https://www.coursera.org/learn/machine-learning)
## License
Copyright (c) 2019 tishacy.
Licensed under the [MIT License](./LICENSE).
没有合适的资源?快使用搜索试试~ 我知道了~
机器学习的课程代码以及两个模块.zip
共34个文件
py:20个
gz:4个
png:3个
需积分: 5 0 下载量 96 浏览量
2023-12-28
19:54:13
上传
评论
收藏 11.44MB ZIP 举报
温馨提示
机器学习的课程代码以及两个模块,neuralnetwork模块用于建立神经网络,k_means模块用于实现K-means算法
资源推荐
资源详情
资源评论
收起资源包目录
机器学习的课程代码以及两个模块,neuralnetwork模块用于建立神经网络,k_means模块用于实现K-means算法.zip (34个子文件)
newname
LICENSE 1KB
requirements.txt 87B
images
neuralnetwork_demo.png 170KB
neural-network.png 67KB
k_means_demo.png 64KB
README.md 4KB
code
04_logistic_regression_using_gradient_descent.py 4KB
09.1_test_for_Neural_Network_module_of_regularization.py 2KB
06_regularization.py 1KB
07.0_neural_network_forward_propagation.py 918B
k_means.py 5KB
01_linear_regression_using_gradient_descent.py 5KB
14_stochastic_gradient_descent_algorithm.py 903B
02.0_multivariate_linear_regression_using_gradient_descent.py 4KB
03_linear_regression_using_norm_equation.py 1KB
07.2_neural_network_forward_propagation_with_bias.py 2KB
07.1_confirming_7.0_using_tensorflow.py 1KB
MNIST.ipynb 57KB
13_collaborative_filter_algorithm_for_recommender_system.py 5KB
08_back_propagation.py 9KB
11_Principal_Component_Analysis.py 3KB
12_Recall.py 2KB
movie_ratings
data.csv 97B
10_K_means_cluster.py 5KB
MNIST_data
t10k-images-idx3-ubyte.gz 1.57MB
train-labels-idx1-ubyte.gz 28KB
train-images-idx3-ubyte.gz 9.45MB
t10k-labels-idx1-ubyte.gz 4KB
05_multiple_classification_using_gradient_descent.py 6KB
__pycache__
neuralnetwork.cpython-36.pyc 10KB
.ipynb_checkpoints
MNIST-checkpoint.ipynb 54KB
09.0_test_for_Neural_Network_module.py 3KB
neuralnetwork.py 13KB
02.1_another_version.py 4KB
共 34 条
- 1
资源评论
Lei宝啊
- 粉丝: 1992
- 资源: 1330
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功