data = np.array([k_choice, f1_scores, acc_scores]).T# 将一维数组转化为二维数组,每个一维数组为其中一列 plt.plot(data[:,0], data[:,1], label="F1") # 第一列为x轴数据,第二列为y轴数据 plt.plot(data[:,0], data[:,2], label="ACC") # 第一列仍为x轴数据,第三列为y轴数据
时间: 2023-05-21 18:07:01 浏览: 70
这段代码的含义是将k_choice、f1_scores和acc_scores三个数组竖向排列,然后使用NumPy中的array函数将它们合并成一个二维数组,并把数组转置,使得每个数据集的三个指标在每一行中依次出现。
相关问题
np.random.seed(8) scores = np.random.randint(50, 100, size=(10, 5)) print(scores) result2 = scores[5, 2] print(f'学号为 105 的学生的英语成绩{result2}') result3 = scores[[0, 2, 5, 9], 0:3] print(result3) idx = np.where(scores >= 90) rows = idx[0] cols = idx[1] for rc in zip(rows, cols): data = scores[rc] print(f'rc = {rc}, data = {data}') number = set([100 + row for row in rows]) print(number) scores_1 = scores.copy() result5 = np.sort(scores_1, axis=0) print(f'按各门课程的成绩排序:\n{result5}') scores_2 = scores.copy() result6 = np.sort(scores_2, axis=1) print(f'按每名学生的成绩排序:\n{result6}') result7_mean = np.mean(scores, axis=0) result7_max = np.max(scores, axis=0) result7_min = np.min(scores, axis=0) print(f'每门课程的平均分:{result7_mean},最高分:{result7_max},最低分:{result7_min}') result8_max = np.max(scores, axis=1) result8_min = np.min(scores, axis=1) print(f'每名学生的最高分:{result8_max},最低分:{result8_min}') result_min = np.min(scores) idx = np.where(scores == result_min) rows = idx[0] cols = idx[1] for rc in zip(rows, cols): data = scores[rc] print(f'学生学号为 10{str(rc[0])},课程{course[rc[1]]}, 最低分为 {data}') result_max = np.max(scores) idx = np.where(scores == result_max) rows = idx[0] cols = idx[1] for rc in zip(rows, cols): data = scores[rc] print(f'学生学号为 10{str(rc[0])},课程{course[rc[1]]}, 最高分为 {data}') weight_list = [0.25, 0.25, 0.20, 0.15, 0.15] weight = np.array(weight_list) total_score = np.matmul(scores, weight) total_score = np.round(total_score, 2) print(f'每名学生的总成绩:\n{total_score}') print(type(total_score)) total_score1 = total_score.copy() result = sorted(total_score1, reverse=True) print(f'最高的 3 个总分:\n{result[:3]}')
这段代码是关于 numpy 的操作,主要包括对二维数组的切片、筛选、排序和计算总成绩等操作。其中:
1. np.random.seed(8) 是为了固定随机数生成器的种子,以便每次生成的随机数相同,使得结果可重复。
2. scores = np.random.randint(50, 100, size=(10, 5)) 生成一个 10 行 5 列的二维数组,表示 10 个学生的 5 种科目的分数。
3. scores[5, 2] 表示取出第 6 个学生的第 3 门科目的成绩。
4. scores[[0, 2, 5, 9], 0:3] 表示取出第 1、3、6、10 个学生的前 3 门科目的成绩。
5. np.where(scores >= 90) 找出所有成绩大于等于 90 的元素的下标。
6. np.mean(scores, axis=0) 计算每门课程的平均分,np.max(scores, axis=0) 计算每门课程的最高分,np.min(scores, axis=0) 计算每门课程的最低分。同理,np.max(scores, axis=1) 计算每名学生的最高分,np.min(scores, axis=1) 计算每名学生的最低分。
7. np.matmul(scores, weight) 计算每名学生的总成绩,其中 weight_list 是每门课程的权重,总和为 1。
8. sorted(total_score1, reverse=True) 取出总成绩最高的 3 名学生的总分。
def check_accuracy(self, X, y, num_samples=None, batch_size=2): # Maybe subsample the data N = X.shape[0] if num_samples is not None and N > num_samples: # 随机选取num_samples张图片,返回选取图片索引 mask = np.random.choice(N, num_samples) N = num_samples X = X[mask] y = y[mask] num_batches = N // batch_size if N % batch_size != 0: num_batches += 1 y_pred = [] for i in range(num_batches): start = i * batch_size end = (i + 1) * batch_size scores = self.model.loss(X[start:end]) y_pred.append(np.argmax(scores, axis=1)) y_pred = np.hstack(y_pred) acc = np.mean(y_pred == y) return acc
这段代码是用于检查模型准确率的,其中参数X代表输入数据,y代表对应的标签数据。如果num_samples不为None,则从输入数据中随机选取num_samples张图片进行检查。batch_size是指每个batch的大小。函数中首先计算需要划分的batch数,然后对每个batch计算模型的输出并将预测结果存储在y_pred列表中。最后将所有的预测结果连接起来,计算准确率并返回。
阅读全文