【卷積神經網路學習】(4)機器學習
用jupyter notebook寫的第一個機器學習
模型:線性函式
演算法:梯度下降
import torch
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/Income1.csv') # 匯入資料
data
Unnamed: 0 | Education | Income | |
---|---|---|---|
0 | 1 | 10.000000 | 26.658839 |
1 | 2 | 10.401338 | 27.306435 |
2 | 3 | 10.842809 | 22.132410 |
3 | 4 | 11.244147 | 21.169841 |
4 | 5 | 11.645485 | 15.192634 |
5 | 6 | 12.086957 | 26.398951 |
6 | 7 | 12.488294 | 17.435307 |
7 | 8 | 12.889632 | 25.507885 |
8 | 9 | 13.290970 | 36.884595 |
9 | 10 | 13.732441 | 39.666109 |
10 | 11 | 14.133779 | 34.396281 |
11 | 12 | 14.535117 | 41.497994 |
12 | 13 | 14.976589 | 44.981575 |
13 | 14 | 15.377926 | 47.039595 |
14 | 15 | 15.779264 | 48.252578 |
15 | 16 | 16.220736 | 57.034251 |
16 | 17 | 16.622074 | 51.490919 |
17 | 18 | 17.023411 | 61.336621 |
18 | 19 | 17.464883 | 57.581988 |
19 | 20 | 17.866221 | 68.553714 |
20 | 21 | 18.267559 | 64.310925 |
21 | 22 | 18.709030 | 68.959009 |
22 | 23 | 19.110368 | 74.614639 |
23 | 24 | 19.511706 | 71.867195 |
24 | 25 | 19.913043 | 76.098135 |
25 | 26 | 20.354515 | 75.775218 |
26 | 27 | 20.755853 | 72.486055 |
27 | 28 | 21.157191 | 77.355021 |
28 | 29 | 21.598662 | 72.118790 |
29 | 30 | 22.000000 | 80.260571 |
data.info() # 檢視資料資訊
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30 entries, 0 to 29
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Unnamed: 0 30 non-null int64
1 Education 30 non-null float64
2 Income 30 non-null float64
dtypes: float64(2), int64(1)
memory usage: 848.0 bytes
畫散點圖
plt.scatter(data.Education, data.Income)
plt.xlabel('education')
plt.ylabel('income')
plt.show()
from torch import nn
X = torch.from_numpy(data.Education.values.reshape(-1, 1).astype(np.float32))
從data.Education中提取value,並重新把它變成只有1列的矩陣,同時把資料型別轉化為np.float32,然後把這個numpy型別轉換成torch型別
X
tensor([[10.0000],
[10.4013],
[10.8428],
[11.2441],
[11.6455],
[12.0870],
[12.4883],
[12.8896],
[13.2910],
[13.7324],
[14.1338],
[14.5351],
[14.9766],
[15.3779],
[15.7793],
[16.2207],
[16.6221],
[17.0234],
[17.4649],
[17.8662],
[18.2676],
[18.7090],
[19.1104],
[19.5117],
[19.9130],
[20.3545],
[20.7559],
[21.1572],
[21.5987],
[22.0000]])
X.shape
torch.Size([30, 1])
Y = torch.from_numpy(data.Income.values.reshape(-1, 1).astype(np.float32))
Y
tensor([[26.6588],
[27.3064],
[22.1324],
[21.1698],
[15.1926],
[26.3990],
[17.4353],
[25.5079],
[36.8846],
[39.6661],
[34.3963],
[41.4980],
[44.9816],
[47.0396],
[48.2526],
[57.0343],
[51.4909],
[61.3366],
[57.5820],
[68.5537],
[64.3109],
[68.9590],
[74.6146],
[71.8672],
[76.0981],
[75.7752],
[72.4861],
[77.3550],
[72.1188],
[80.2606]])
Y.shape
torch.Size([30, 1])
建立模型
model = nn.Linear(1, 1) # output = w @ input + b , output和input長度為1 @代表矩陣乘法
loss_fn = nn.MSELoss() # 建立損失函式
opt = torch.optim.SGD(model.parameters(), lr=0.0001) # 優化的設定
for epoch in range(5000): # 訓練全部資料
for x,y in zip(X,Y):
y_pred = model(x) # 使用模型預測
loss = loss_fn(y, y_pred) # 計算損失
opt.zero_grad() # 梯度清零
loss.backward() # 計算梯度
opt.step() # 優化模型引數w和b
model.weight # 檢視訓練完成的w
Parameter containing:
tensor([[3.4113]], requires_grad=True)
model.bias # 檢視訓練完成的b
Parameter containing:
tensor([0.4944], requires_grad=True)
結果視覺化
plt.scatter(data.Education, data.Income)
plt.plot(X.numpy(), model(X).data.numpy(), c='r') # .numpy()是把tensor轉化成numpy中的array型別
plt.show()
相關文章
- 深度學習三:卷積神經網路深度學習卷積神經網路
- 卷積神經網路學習資料卷積神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 深度學習筆記------卷積神經網路深度學習筆記卷積神經網路
- 卷積神經網路CNN-學習1卷積神經網路CNN
- 深度學習卷積神經網路筆記深度學習卷積神經網路筆記
- 卷積神經網路卷積神經網路
- 卷積神經網路學習筆記——SENet卷積神經網路筆記SENet
- 個人學習卷積神經網路的疑惑解答卷積神經網路
- 深度學習——LeNet卷積神經網路初探深度學習卷積神經網路
- 【深度學習原理第4篇】卷積神經網路詳解(CNN)深度學習卷積神經網路CNN
- 卷積神經網路學習筆記——Siamese networks(孿生神經網路)卷積神經網路筆記
- 深度學習經典卷積神經網路之AlexNet深度學習卷積神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路初探卷積神經網路
- 卷積神經網路-1卷積神經網路
- 卷積神經網路-2卷積神經網路
- 卷積神經網路-3卷積神經網路
- 【機器學習基礎】卷積神經網路(CNN)基礎機器學習卷積神經網路CNN
- 深度學習革命的開端:卷積神經網路深度學習卷積神經網路
- 學習OpenCL與卷積神經網路 Day1卷積神經網路
- 卷積神經網路四種卷積型別卷積神經網路型別
- 全卷積神經網路FCN卷積神經網路
- 深度剖析卷積神經網路卷積神經網路
- 看懂卷積神經網路(CNN)卷積神經網路CNN
- 卷積神經網路-AlexNet卷積神經網路
- 深度學習-卷積神經網路-演算法比較深度學習卷積神經網路演算法
- [譯] 淺析深度學習神經網路的卷積層深度學習神經網路卷積
- 卷積神經網路數學原理解析卷積神經網路
- 誰可以詳細講講機器學習,深度學習,神經網路,卷積神經網路的區別以及應用場景機器學習深度學習神經網路卷積
- 卷積神經網路:卷積層和池化層卷積神經網路
- 深度學習入門筆記(十八):卷積神經網路(一)深度學習筆記卷積神經網路
- [action]tensorflow深度學習實戰 (4) 實現簡單卷積神經網路深度學習卷積神經網路
- 卷積神經網路 part2卷積神經網路
- CNN神經網路之卷積操作CNN神經網路卷積