资源简介
BP算法实现iris数据集分类
代码片段和文件信息
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
import numpy as np
import random
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
print(‘======= Data load & Data process =======‘)
# def load_data():
‘‘‘
Data Information:
1. sepal length in cm
2. sepal width in cm
3. petal length in cm
4. petal width in cm
5. Label:
-- Iris Setosa
-- Iris Versicolour
-- Iris Virginica
‘‘‘
raw_data = pd.read_csv(‘iris.data‘ header=None
names=[‘sepal_length‘ ‘sepal_width‘ ‘petal_length‘ ‘petal_width‘ ‘label‘])
data = raw_data[[‘sepal_length‘ ‘sepal_width‘ ‘petal_length‘ ‘petal_width‘]].values
class_mapping = {label: idx for idx label in enumerate(set(raw_data[‘label‘]))}
label = raw_data[‘label‘].map(class_mapping).values.reshape(-1 1)
print(“data num is: {} labels num is: {}“.format(len(data) len(label)))
X_train X_test Y_train Y_test = train_test_split(data label test_size=0.2 shuffle=True)
X_valid X_test Y_valid Y_test = train_test_split(X_test Y_test test_size=0.5 shuffle=True)
print(‘train data_num:{}\nvalid data_num:{}\ntest data_num:{}‘.format(len(X_train) len(X_valid) len(X_test)))
def set_random_seed(seed):
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed(seed)
class IrisDataset(Dataset):
def __init__(self x_data y_data):
super(IrisDataset self).__init__()
self.x_data = torch.Tensor(x_data)
self.y_data = torch.Tensor(y_data)
def __getitem__(self index):
return self.x_data[index] self.y_data[index]
def __len__(self):
return len(self.x_data)
def evaluate(XYw1w2w3):
out = F.softmax(F.sigmoid(F.sigmoid(torch.Tensor(X).to(device).mm(w1)).mm(w2)).mm(w3) dim=1)
pred_y = torch.max(out 1)[1].cpu().data.numpy()
target_y=Y.reshape(1-1)
accuracy = float((pred_y==target_y).astype(int).sum())/ float(target_y.size)
return accuracy
# init parameters
set_random_seed(1)
device = torch.device(“cuda“ if torch.cuda.is_available() else “cpu“)
D_in H_1 H_2 D_out = 4 20 20 3
LEARNING_RATE = 0.1
MAX_EPOCH = 100
BATCH_SIZE = 40
w1 = torch.randn(D_in H_1 requires_grad=True device=device)
w2 = torch.randn(H_1 H_2 requires_grad=True device=device)
w3 = torch.randn(H_2 D_out requires_grad=True device=device)
# data_loader
train_dataset = IrisDataset(X_train Y_train)
train_loader = DataLoader(train_dataset batch_size=BATCH_SIZE shuffle=True)
train_losses val_losses = [] []
for epoch in range(MAX_EPOCH + 1):
batch_losses = []
for step (x y) in enumerate(train_loader):
x y = x.to(device) y.to(device)
# x: batch_size*4 y: b
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5822 2021-01-04 07:20 main.py
文件 670 2021-01-04 07:20 __MACOSX\._main.py
文件 4551 2021-01-04 07:23 iris.data
文件 654 2021-01-04 07:23 __MACOSX\._iris.data
相关资源
- 计算机科学导论-python.pdf
- MNIST手写体数字训练/测试数据集(图
- Python3.5.2的IDLE汉化版计算机等级考试
- 计算24点python
- python基于人脸检测和人脸识别
- 计算机语言学n-gram算法的python实现
- 通过python使用opencv计算图像的中心
- 基于Python完成张军版计算智能相关算
- Introduction to Python for Science
- OCR:一个有趣的网页版手写数字识别
- 计算科学与工程Python简介Introduction
- Python3实现KNN的三个包含数据集,水果
- Programming Computer Vision with Python.pdf
- usps手写数据集+使用代码.zip
- SIFT提取特征进行全景图拼接
- Python经典原版pdf英文 Modern Python Cook
- OpenCV Python 计算机视觉 官方教程中文
- 《机器学习-使用OpenCV和Python进行智能
- 基于Python自相关法时间序列的时间延
- python计算机二级教程1-11章
- Julia 编程手册
- 手写汉字识别软件设计
- Python语言程序设计国家计算机等级考
- python写的一个小型计算器
- python不使用框架实现卷积神经网络识
- mnist手写数字识别数据集npz文件.zip
- 用Python做科学计算(scipy).pdf
- 基于Python的手写字体识别系统
- 用Python做科学计算,高清版,带目录
- 计算机二级学习资料python
评论
共有 条评论