for i in range(6): fpr[i], tpr[i], _ = roc_curve(y == i, X[:, i]) roc_auc[i] = auc(fpr[i], tpr[i])

时间: 2024-05-28 15:10:09 浏览: 5
这段代码是用来计算多分类问题中各个类别的ROC曲线和AUC值。其中,for循环的范围是6,表示共有6个类别。在循环体中,通过roc_curve函数计算出当前类别的ROC曲线上的假正率(fpr)、真正率(tpr)和阈值(_),并通过auc函数计算出当前类别的AUC值,最终将fpr、tpr和roc_auc分别保存在对应的列表中。
相关问题

n_classes = y_bin.shape[1] for i in range(n_classes): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) roc_auc[i] = auc(fpr[i], tpr[i])怎么改

在这段代码中,`y_test` 和 `y_score` 数组的使用方式是在多分类问题中计算 ROC 曲线和 AUC 值的常见方式。如果你在这段代码中遇到了之前提到的错误,请尝试修改为以下代码: ``` n_classes = y_bin.shape[1] fpr = {} tpr = {} roc_auc = {} for i in range(n_classes): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) roc_auc[i] = auc(fpr[i], tpr[i]) ``` 在这里,我们使用了字典来存储每个类别的 FPR、TPR 和 ROC AUC 值。这样,就可以避免出现之前提到的错误。

y_score = np.array(y_score).T # 计算并绘制 AUC 曲线 fpr = dict() tpr = dict() roc_auc = dict() for i in range(y_test.shape[1]): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[0, :, i])怎么修正

根据你提供的代码,我看到 y_score 是一个三维数组,它的第一维是样本数,第二维是类别数,第三维是阈值。而在计算 ROC 曲线时,只需要使用 y_score 的第二维和第三维,即每个类别在不同阈值下的得分。因此,你需要修改代码如下: ```python y_score = np.array(y_score) # 去掉转置操作 fpr = dict() tpr = dict() roc_auc = dict() for i in range(y_test.shape[1]): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i, :].ravel()) # 传入每个类别的得分 roc_auc[i] = auc(fpr[i], tpr[i]) # 计算 AUC ``` 这里,我们将 y_score 的第二维作为循环变量 i,即每次计算一个类别的 ROC 曲线和 AUC 值。在计算 ROC 曲线时,我们需要将 y_score 的第一维和第三维展开成一维数组,即使用 ravel() 方法。最后,我们将每个类别的 AUC 值存储在字典 roc_auc 中。

相关推荐

for each class class_names = np.unique(y_train) y_scores = tree.predict_proba(X_test) y_pred = tree.predict(X_test) macro_auc = roc_auc_score(y_test, y_scores, multi_class='ovo', average='macro') y_test = label_binarize(y_test, classes=range(3)) y_pred = label_binarize(y_pred, classes=range(3)) micro_auc = roc_auc_score(y_test, y_scores, average='micro') #micro_auc = roc_auc_score(y_test, y_scores, multi_class='ovr', average='micro') # calculate ROC curve fpr = dict() tpr = dict() roc_auc = dict() for i in range(3): # 遍历三个类别 fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_pred[:, i]) roc_auc[i] = auc(fpr[i], tpr[i]) return reports, matrices, micro_auc, macro_auc, fpr, tpr, roc_auc根据上述代码怎么调整下列代码fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_pred.ravel()) roc_auc["micro"] = auc(fpr["micro"], tpr["micro"]) # Compute macro-average ROC curve and ROC area(方法一) # First aggregate all false positive rates all_fpr = np.unique(np.concatenate([fpr_avg[i] for i in range(3)])) # Then interpolate all ROC curves at this points mean_tpr = np.zeros_like(all_fpr) for i in range(3): mean_tpr += interp(all_fpr, fpr_avg[i], tpr_avg[i]) # Finally average it and compute AUC mean_tpr /= 3 fpr_avg["macro"] = all_fpr tpr_avg["macro"] = mean_tpr macro_auc_avg["macro"] = macro_auc_avg # Plot all ROC curves lw = 2 plt.figure() plt.plot(fpr_avg["micro"], tpr_avg["micro"], label='micro-average ROC curve (area = {0:0.2f})' ''.format(micro_auc_avg["micro"]), color='deeppink', linestyle=':', linewidth=4) plt.plot(fpr_avg["macro"], tpr_avg["macro"], label='macro-average ROC curve (area = {0:0.2f})' ''.format(macro_auc_avg["macro"]), color='navy', linestyle=':', linewidth=4) colors = cycle(['aqua', 'darkorange', 'cornflowerblue']) for i, color in zip(range(3), colors): plt.plot(fpr_avg[i], tpr_avg[i], color=color, lw=lw, label='ROC curve of class {0} (area = {1:0.2f})' ''.format(i, roc_auc_avg[i])) plt.plot([0, 1], [0, 1], 'k--', lw=lw) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('DF') plt.legend(loc="lower right") plt.show()

修正下列代码y_test=np.array(y_test) y_score=np.array(y_score) fpr = dict() tpr = dict() roc_auc = dict() for i in range(n_classes): # 遍历三个类别 fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) roc_auc[i] = auc(fpr[i], tpr[i]) # Compute micro-average ROC curve and ROC area(方法二) fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel()) roc_auc["micro"] = auc(fpr["micro"], tpr["micro"]) # Compute macro-average ROC curve and ROC area(方法一) # First aggregate all false positive rates all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)])) # Then interpolate all ROC curves at this points mean_tpr = np.zeros_like(all_fpr) for i in range(n_classes): mean_tpr += interp(all_fpr, fpr[i], tpr[i]) # Finally average it and compute AUC mean_tpr /= n_classes fpr["macro"] = all_fpr tpr["macro"] = mean_tpr roc_auc["macro"] = auc(fpr["macro"], tpr["macro"]) # Plot all ROC curves lw=2 plt.figure() plt.plot(fpr["micro"], tpr["micro"], label='micro-average ROC curve (area = {0:0.2f})' ''.format(roc_auc["micro"]), color='deeppink', linestyle=':', linewidth=4) plt.plot(fpr["macro"], tpr["macro"], label='macro-average ROC curve (area = {0:0.2f})' ''.format(roc_auc["macro"]), color='navy', linestyle=':', linewidth=4) colors = cycle(['aqua', 'darkorange', 'cornflowerblue']) for i, color in zip(range(n_classes), colors): plt.plot(fpr[i], tpr[i], color=color, lw=lw, label='ROC curve of class {0} (area = {1:0.2f})' ''.format(i, roc_auc[i])) plt.plot([0, 1], [0, 1], 'k--', lw=lw) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Some extension of Receiver operating characteristic to multi-class') plt.legend(loc="lower right") plt.show()

import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score, roc_curve, roc_auc_score # 1. 数据读取与处理 data = pd.read_csv('data.csv') X = data.drop('target', axis=1) y = data['target'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 2. 模型训练 model = LogisticRegression() model.fit(X_train, y_train) # 3. 模型预测 y_pred = model.predict(X_test) y_prob = model.predict_proba(X_test)[:, 1] # 4. 绘制二分类混淆矩阵 confusion_mat = confusion_matrix(y_test, y_pred) plt.imshow(confusion_mat, cmap=plt.cm.Blues) plt.title('Confusion Matrix') plt.colorbar() tick_marks = np.arange(2) plt.xticks(tick_marks, ['0', '1']) plt.yticks(tick_marks, ['0', '1']) plt.xlabel('Predicted Label') plt.ylabel('True Label') for i in range(2): for j in range(2): plt.text(j, i, confusion_mat[i, j], ha='center', va='center', color='white' if confusion_mat[i, j] > confusion_mat.max() / 2 else 'black') plt.show() # 5. 计算精确率、召回率和F1-score precision = precision_score(y_test, y_pred) recall = recall_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) # 6. 计算AUC指标和绘制ROC曲线 auc = roc_auc_score(y_test, y_prob) fpr, tpr, thresholds = roc_curve(y_test, y_prob) plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % auc) plt.plot([0, 1], [0, 1], 'k--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('ROC Curve') plt.legend(loc="lower right") plt.show() # 7. 输出结果 print('Precision:', precision) print('Recall:', recall) print('F1-score:', f1) print('AUC:', auc)对每行代码进行注释

# 将数据集拆分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 构造随机森林模型 model = RandomForestClassifier(n_estimators=5, max_depth=5, random_state=42) for i in range(model.n_estimators): model.fit(X_train, y_train) # 训练模型 fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(8, 8), dpi=300) plot_tree(model.estimators_[i], filled=True) # plt.savefig(r'D:\pythonProject1\picture/picture_{}.png'.format(i), format='png') #保存图片 plt.show() # 在测试集上评估模型的性能 y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) # 生成混淆矩阵 cm = confusion_matrix(y_test, y_pred) # y_test为真实值,y_pred为预测值 print(cm) # 可视化混淆矩阵 plt.imshow(cm, cmap=plt.cm.Blues) plt.colorbar() plt.title('Confusion Matrix') plt.xlabel('Predicted Label') plt.ylabel('True Label') plt.xticks([0, 1], ['Negative', 'Positive']) plt.yticks([0, 1], ['Negative', 'Positive']) for i in range(2): for j in range(2): plt.text(j, i, cm[i, j], ha='center', va='center', color='white') plt.show() # 计算模型的准确率、召回率、精确率等指标 tp = cm[1, 1] tn = cm[0, 0] fp = cm[0, 1] fn = cm[1, 0] acc = (tp + tn) / (tp + tn + fp + fn) precision = tp / (tp + fp) recall = tp / (tp + fn) f1_score = 2 * precision * recall / (precision + recall) print('Accuracy:', acc) print('Precision:', precision) print('Recall:', recall) print('F1 Score:', f1_score) # 多分类问题绘制ROC曲线 y_true = label_binarize(y_test, classes=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 将标签转换为二进制形式 y_score = y_pred # 计算FPR、TPR和阈值 fpr = dict() tpr = dict() roc_auc = dict() num_classes = 10 for i in range(num_classes): fpr[i], tpr[i], _ = roc_curve(y_true[:, ], y_score[:, ]) roc_auc[i] = auc(fpr[i], tpr[i])

# 导入模块 import prettytable as pt from sklearn.metrics import accuracy_score from sklearn.metrics import precision_score from sklearn.metrics import recall_score, f1_score from sklearn.metrics import roc_curve, auc # 创建表格对象 table = pt.PrettyTable() # 设置表格的列名 table.field_names = ["acc", "precision", "recall", "f1", "roc_auc"] # 循环添加数据 # 20个随机状态 for i in range(1): # # GBDT GBDT = GradientBoostingClassifier(learning_rate=0.1, min_samples_leaf=14, min_samples_split=6, max_depth=10, random_state=i, n_estimators=267 ) # GBDT = GradientBoostingClassifier(learning_rate=0.1, n_estimators=142,min_samples_leaf=80,min_samples_split=296,max_depth=7 , max_features='sqrt', random_state=66 # ) GBDT.fit(train_x, train_y) y_pred = GBDT.predict(test_x) # y_predprob = GBDT.predict_proba(test_x) print(y_pred) print('AUC Score:%.4g' % metrics.roc_auc_score(test_y.values, y_pred)) # print('AUC Score (test): %f' %metrics.roc_auc_score(test_y.values,y_predprob[:,1])) accuracy = GBDT.score(val_x, val_y) accuracy1 = GBDT.score(test_x, test_y) print("GBDT最终精确度:{},{}".format(accuracy, accuracy1)) y_predict3 = GBDT.predict(test_x) get_score(test_y, y_predict3, model_name='GBDT') acc = accuracy_score(test_y, y_predict3) # 准确率 prec = precision_score(test_y, y_predict3) # 精确率 recall = recall_score(test_y, y_predict3) # 召回率 f1 = f1_score(test_y, y_predict3) # F1 fpr, tpr, thersholds = roc_curve(test_y, y_predict3) roc_auc = auc(fpr, tpr) data1 = acc data2 = prec data3 = recall data4 = f1 data5 = roc_auc # 将数据添加到表格中 table.add_row([data1, data2, data3, data4, data5]) print(table) import pandas as pd # 将数据转换为DataFrame格式 df = pd.DataFrame(list(table), columns=["acc","prec","recall","f1","roc_auc"]) # 将DataFrame写入Excel文件 writer = pd.ExcelWriter('output.xlsx') df.to_excel(writer, index=False) writer.save(),出现上面的错误怎样更正

随机森林导入数据用kfold分层抽样后用下列画roc_curve曲线三分类python代码mse = mean_squared_error(y_test, y_pred1) rmse = math.sqrt(mse) print('FNN深度森林RMSE:', rmse) print('FNN深度森林Accuracy:', accuracy_score(y_test, y_pred1)) mse = mean_squared_error(y_test_fuzzy, y_pred) rmse = math.sqrt(mse) print('深度森林RMSE:', rmse) print('深度森林Accuracy:', accuracy_score(y_test_fuzzy, y_pred)) fpr = dict() tpr = dict() roc_auc = dict() for i in range(3): # 遍历三个类别 fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_pred1[:, i]) roc_auc[i] = auc(fpr[i], tpr[i]) # Compute micro-average ROC curve and ROC area(方法二) fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_pred1.ravel()) roc_auc["micro"] = auc(fpr["micro"], tpr["micro"]) # Compute macro-average ROC curve and ROC area(方法一) # First aggregate all false positive rates all_fpr = np.unique(np.concatenate([fpr[i] for i in range(3)])) # Then interpolate all ROC curves at this points mean_tpr = np.zeros_like(all_fpr) for i in range(3): mean_tpr += interp(all_fpr, fpr[i], tpr[i]) # Finally average it and compute AUC mean_tpr /= 3 fpr["macro"] = all_fpr tpr["macro"] = mean_tpr roc_auc["macro"] = auc(fpr["macro"], tpr["macro"]) # Plot all ROC curves lw = 2 plt.figure() plt.plot(fpr["micro"], tpr["micro"], label='micro-average ROC curve (area = {0:0.2f})' ''.format(roc_auc["micro"]), color='deeppink', linestyle=':', linewidth=4) plt.plot(fpr["macro"], tpr["macro"], label='macro-average ROC curve (area = {0:0.2f})' ''.format(roc_auc["macro"]), color='navy', linestyle=':', linewidth=4) colors = cycle(['aqua', 'darkorange', 'cornflowerblue']) for i, color in zip(range(3), colors): plt.plot(fpr[i], tpr[i], color=color, lw=lw, label='ROC curve of class {0} (area = {1:0.2f})' ''.format(i, roc_auc[i])) plt.plot([0, 1], [0, 1], 'k--', lw=lw) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('DF-F') plt.legend(loc="lower right")

最新推荐

recommend-type

解决keras,val_categorical_accuracy:,0.0000e+00问题

index = [i for i in range(len(x_train))] np.random.shuffle(index) x_train = x_train[index] y_train = y_train[index] # 继续进行模型训练 model.fit(x_train, y_train, batch_size=32, epochs=10, validation...
recommend-type

校园网Web平台二手商品交易系统的设计与实现研究论文

python有趣的库本系统是一款基于JSP/J2EE技术的校园网二手交易平台,采用Java语言开发。它采用流行的B/S架构,以互联网为基础运行,服务端安装简便,客户端则只需联网即可通过浏览器轻松访问。无需复杂的C/S模式安装、配置和维护流程。系统利用Java的面向对象、跨平台、高安全、高稳定、多线程等特性,结合其对网络编程技术的支持,使得本平台具有极高的实用价值。 系统结构清晰,分为三大核心部分:JavaBeans负责业务逻辑处理,JSP结合HTML和JavaScript负责界面展示,Servlet则作为中间件,并通过JDBC-ODBC桥接器与SQL Server 2000数据库进行交互,确保数据访问的高效和稳定。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
recommend-type

京瓷TASKalfa系列维修手册:安全与操作指南

"该资源是一份针对京瓷TASKalfa系列多款型号打印机的维修手册,包括TASKalfa 2020/2021/2057,TASKalfa 2220/2221,TASKalfa 2320/2321/2358,以及DP-480,DU-480,PF-480等设备。手册标注为机密,仅供授权的京瓷工程师使用,强调不得泄露内容。手册内包含了重要的安全注意事项,提醒维修人员在处理电池时要防止爆炸风险,并且应按照当地法规处理废旧电池。此外,手册还详细区分了不同型号产品的打印速度,如TASKalfa 2020/2021/2057的打印速度为20张/分钟,其他型号则分别对应不同的打印速度。手册还包括修订记录,以确保信息的最新和准确性。" 本文档详尽阐述了京瓷TASKalfa系列多功能一体机的维修指南,适用于多种型号,包括速度各异的打印设备。手册中的安全警告部分尤为重要,旨在保护维修人员、用户以及设备的安全。维修人员在操作前必须熟知这些警告,以避免潜在的危险,如不当更换电池可能导致的爆炸风险。同时,手册还强调了废旧电池的合法和安全处理方法,提醒维修人员遵守地方固体废弃物法规。 手册的结构清晰,有专门的修订记录,这表明手册会随着设备的更新和技术的改进不断得到完善。维修人员可以依靠这份手册获取最新的维修信息和操作指南,确保设备的正常运行和维护。 此外,手册中对不同型号的打印速度进行了明确的区分,这对于诊断问题和优化设备性能至关重要。例如,TASKalfa 2020/2021/2057系列的打印速度为20张/分钟,而TASKalfa 2220/2221和2320/2321/2358系列则分别具有稍快的打印速率。这些信息对于识别设备性能差异和优化工作流程非常有用。 总体而言,这份维修手册是京瓷TASKalfa系列设备维修保养的重要参考资料,不仅提供了详细的操作指导,还强调了安全性和合规性,对于授权的维修工程师来说是不可或缺的工具。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【进阶】入侵检测系统简介

![【进阶】入侵检测系统简介](http://www.csreviews.cn/wp-content/uploads/2020/04/ce5d97858653b8f239734eb28ae43f8.png) # 1. 入侵检测系统概述** 入侵检测系统(IDS)是一种网络安全工具,用于检测和预防未经授权的访问、滥用、异常或违反安全策略的行为。IDS通过监控网络流量、系统日志和系统活动来识别潜在的威胁,并向管理员发出警报。 IDS可以分为两大类:基于网络的IDS(NIDS)和基于主机的IDS(HIDS)。NIDS监控网络流量,而HIDS监控单个主机的活动。IDS通常使用签名检测、异常检测和行
recommend-type

轨道障碍物智能识别系统开发

轨道障碍物智能识别系统是一种结合了计算机视觉、人工智能和机器学习技术的系统,主要用于监控和管理铁路、航空或航天器的运行安全。它的主要任务是实时检测和分析轨道上的潜在障碍物,如行人、车辆、物体碎片等,以防止这些障碍物对飞行或行驶路径造成威胁。 开发这样的系统主要包括以下几个步骤: 1. **数据收集**:使用高分辨率摄像头、雷达或激光雷达等设备获取轨道周围的实时视频或数据。 2. **图像处理**:对收集到的图像进行预处理,包括去噪、增强和分割,以便更好地提取有用信息。 3. **特征提取**:利用深度学习模型(如卷积神经网络)提取障碍物的特征,如形状、颜色和运动模式。 4. **目标
recommend-type

小波变换在视频压缩中的应用

"多媒体通信技术视频信息压缩与处理(共17张PPT).pptx" 多媒体通信技术涉及的关键领域之一是视频信息压缩与处理,这在现代数字化社会中至关重要,尤其是在传输和存储大量视频数据时。本资料通过17张PPT详细介绍了这一主题,特别是聚焦于小波变换编码和分形编码两种新型的图像压缩技术。 4.5.1 小波变换编码是针对宽带图像数据压缩的一种高效方法。与离散余弦变换(DCT)相比,小波变换能够更好地适应具有复杂结构和高频细节的图像。DCT对于窄带图像信号效果良好,其变换系数主要集中在低频部分,但对于宽带图像,DCT的系数矩阵中的非零系数分布较广,压缩效率相对较低。小波变换则允许在频率上自由伸缩,能够更精确地捕捉图像的局部特征,因此在压缩宽带图像时表现出更高的效率。 小波变换与傅里叶变换有本质的区别。傅里叶变换依赖于一组固定频率的正弦波来表示信号,而小波分析则是通过母小波的不同移位和缩放来表示信号,这种方法对非平稳和局部特征的信号描述更为精确。小波变换的优势在于同时提供了时间和频率域的局部信息,而傅里叶变换只提供频率域信息,却丢失了时间信息的局部化。 在实际应用中,小波变换常常采用八带分解等子带编码方法,将低频部分细化,高频部分则根据需要进行不同程度的分解,以此达到理想的压缩效果。通过改变小波的平移和缩放,可以获取不同分辨率的图像,从而实现按需的图像质量与压缩率的平衡。 4.5.2 分形编码是另一种有效的图像压缩技术,特别适用于处理不规则和自相似的图像特征。分形理论源自自然界的复杂形态,如山脉、云彩和生物组织,它们在不同尺度上表现出相似的结构。通过分形编码,可以将这些复杂的形状和纹理用较少的数据来表示,从而实现高压缩比。分形编码利用了图像中的分形特性,将其转化为分形块,然后进行编码,这在处理具有丰富细节和不规则边缘的图像时尤其有效。 小波变换和分形编码都是多媒体通信技术中视频信息压缩的重要手段,它们分别以不同的方式处理图像数据,旨在减少存储和传输的需求,同时保持图像的质量。这两种技术在现代图像处理、视频编码标准(如JPEG2000)中都有广泛应用。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

【进阶】Python高级加密库cryptography

![【进阶】Python高级加密库cryptography](https://img-blog.csdnimg.cn/20191105183454149.jpg) # 2.1 AES加密算法 ### 2.1.1 AES加密原理 AES(高级加密标准)是一种对称块密码,由美国国家标准与技术研究院(NIST)于2001年发布。它是一种分组密码,这意味着它一次处理固定大小的数据块(通常为128位)。AES使用密钥长度为128、192或256位的迭代密码,称为Rijndael密码。 Rijndael密码基于以下基本操作: - 字节替换:将每个字节替换为S盒中的另一个字节。 - 行移位:将每一行
recommend-type

linuxjar包启动脚本

Linux中的jar包通常指的是Java Archive(Java归档文件),它是一个包含Java类、资源和其他相关文件的压缩文件。启动一个Java应用的jar包通常涉及到使用Java的Runtime或JVM(Java虚拟机)。 一个简单的Linux启动jar包的脚本(例如用bash编写)可能会类似于这样: ```bash #!/bin/bash # Java启动脚本 # 设置JAVA_HOME环境变量,指向Java安装路径 export JAVA_HOME=/path/to/your/java/jdk # jar包的路径 JAR_FILE=/path/to/your/applicat