python科学计算库matplotlib(ix[ ] 函数的学习问题)

007.python科学计算库matplotlib

import matplotib.pyplot as plt
import pands as pd
from numpy import arange
reviews = pd.read_csv('fandango_score_comparison.csv')
cols = ['FILM','RT_user_norm','Metacritic_user_nom','IMDB_norm','Fandango_Ratingvalue','Fandango_Stars']
norm_reviews = reviews[cols]
num_cols = ['RT_user_norm','Metacritic_user_nom','IMDB_norm','Fandango_Ratingvalue','Fandango_Stars']

#部分资料会使用norm_reviews.ix[ ], ix[ ]表示获取第i行的num_cols中的数据, i从索引0开始
#但会出现python提示ix[ ] 函数已过期, 提示建议使用loc[ ] , 所以这里作者使用loc[ ]
#获取的数据既相对于条形图的高度

bar_heights = norm_reviews.loc[0, num_cols].values
print(bar_heights)   # [4.3 3.55 3.9 4.5 5.0]

#条形图的位置, 既在x轴上距离y轴的距离

bar_positions = arange(5) + 0.75
print(bar_positions)     # [0.75 1.75 2.75 3.75 4.75]
fig, ax = plt.subplots()

#条形图的宽度为0.3

ax.bar(bar_positions, bar_heights, 0.3)
plt.show()

在这里插入图片描述

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你回答这个问题。首先,我们需要使用 PyTorch 框架来实现神经网络模型,并且需要生成螺旋状的数据集。接着,我们可以使用 matplotlib 来画出损失函数的变化值的变化图。以下是一个简单的 Python 程序,可以实现你的需求: ```python import torch import numpy as np import matplotlib.pyplot as plt # 生成螺旋状数据集 def generate_data(n_samples): np.random.seed(0) X = np.zeros((n_samples * 2, 2)) y = np.zeros(n_samples * 2, dtype='uint8') for i in range(2): ix = range(n_samples * i, n_samples * (i + 1)) r = np.linspace(0.0, 1, n_samples) t = np.linspace(i * 3, (i + 1) * 3, n_samples) + np.random.randn(n_samples) * 0.2 X[ix] = np.c_[r * np.sin(t), r * np.cos(t)] y[ix] = i return X, y # 定义神经网络模型 class Net(torch.nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = torch.nn.Linear(2, 10) self.fc2 = torch.nn.Linear(10, 2) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x # 定义训练函数 def train(model, optimizer, criterion, X, y, n_epochs, batch_size): losses = [] for epoch in range(n_epochs): permutation = torch.randperm(X.shape[0]) for i in range(0, X.shape[0], batch_size): indices = permutation[i:i+batch_size] batch_X, batch_y = X[indices], y[indices] optimizer.zero_grad() outputs = model(torch.Tensor(batch_X)) loss = criterion(outputs, torch.LongTensor(batch_y)) loss.backward() optimizer.step() losses.append(loss.item()) print(f'Epoch: {epoch+1}/{n_epochs}, Loss: {loss.item():.4f}') return losses # 生成数据集 X, y = generate_data(n_samples=1000) # 定义神经网络模型、损失函数和优化器 model = Net() criterion = torch.nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters()) # 训练神经网络模型 losses = train(model, optimizer, criterion, X, y, n_epochs=50, batch_size=32) # 画出损失函数的变化值的变化图 plt.plot(losses) plt.xlabel('Iterations') plt.ylabel('Loss') plt.show() ``` 这个程序会生成一个螺旋状的数据集,然后使用一个包含两个隐藏层的神经网络模型来识别这个数据集。训练函数会在每个 epoch 中迭代数据集,更新模型参数,并且将损失值加入到列表中。最后,我们可以使用 matplotlib 来画出损失函数的变化值的变化图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值