天天看点

机器学习初探——认识numpy

numpy

  • 1、今天早上对numpy进行了一系列的探索,下面总结一下numpy的一些特性:

    numpy数组

    批量处理

    通用函数

    广播机制

  • 2、今天晚上使用numpy进行了一个简单的机器学习预测

    代码如下:

#!/usr/bin/env python
# coding: utf-8

# In[1]:


# -*- coding: utf-8 -*-
import numpy as np
# get_ipython().run_line_magic('matplotlib', 'inline')
from matplotlib import pyplot as plt


# In[2]:


np.random.seed(100)
x = np.linspace(-1, 1, 100).reshape(100, 1)
y = 3 * np.power(x, 2) + 2 + 0.2 * np.random.rand(x.size).reshape(100, 1)


# In[3]:


plt.scatter(x, y)
plt.show()


# In[4]:


# 随机初始化参数
w1 = np.random.rand(1, 1)
b1 = np.random.rand(1, 1)


# In[5]:


lr = 0.001 # 学习率
for i in range(800):
    # 前向传播
    y_pred = np.power(x, 2) * w1 + b1
    # 定义损失函数
    loss = 0.5 * (y_pred - y) ** 2
    loss = loss.sum()
    # 计算梯度
    grad_w = np.sum((y_pred - y) * np.power(x, 2))
    grad_b = np.sum((y_pred - y))
    # 使用梯度下降法,最小化loss
    w1 -= lr * grad_w
    b1 -= lr * grad_b


# In[6]:


plt.plot(x, y_pred, 'r-', label = 'predict')
plt.scatter(x, y, color = 'blue', marker = 'o', label = 'true') # true data
plt.xlim(-1, 1)
plt.ylim(2, 6)
plt.legend()
plt.show()
print(w1, b1)


# In[ ]: