Geología: dibujo de la curva de tasa de éxito

Fuente del artículo

"Modelos predictivos de aprendizaje automático para la prospectividad de minerales: una evaluación de redes neuronales, bosques aleatorios, árboles de regresión y máquinas de vectores de soporte".——"Modelos predictivos de aprendizaje automático para la prospectividad de minerales: una evaluación de redes neuronales, bosques aleatorios, árboles de regresión y soporte máquinas vectoriales."Evaluar"

La introducción a la curva de tasa de éxito en este artículo es la siguiente:

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

traducir:

La Figura 5a muestra la tasa de éxito en la estimación de depósitos de oro conocidos según diferentes porcentajes de áreas prospectivas. El área definida como altamente prospectiva en el mapa de RF es mucho más pequeña en comparación con otros modelos MLA. Por lo tanto, para lograr tasas de éxito similares a las de RF, otros métodos de MLA deben delinear áreas esperadas más grandes. Se puede observar como RF y SVM parten con tasas de éxito similares, aunque en el caso de RFLa pendiente de la curva de tasa de éxito es más pronunciada (Explicación: Diferentes pendientes representan diferentes potenciales de mineralización. Cuanto mayor es la pendiente, más depósitos minerales se pueden capturar en un área más pequeña). Para el umbral de porcentaje de área esperado superior al 10 %, la tasa de éxito de RF y SVM supera el 90 %, mientras que la de ANN es solo igual al 70 %. Sin embargo, cuando se considera prospectivo el 15% del área de estudio, la tasa de éxito de la RF converge a un valor de tasa de éxito del 98%. SVM necesita delinear el 35 % del área para lograr este valor de tasa de éxito. RT experimentó la peor tasa de éxito, alcanzando valores superiores al 95% sólo en áreas superiores al 75%.

Algoritmo de curva de tasa de éxito.

La tasa de éxito se calcula en función deDiferentes umbrales para porcentajes de área de zona potencialReclasificar el mapa de potencial de oro yCalcule la tasa de éxito (tasa de verdaderos positivos; TPR) de estas zonas potenciales en comparación con los depósitos de oro conocidos.(Agterberg y Bonham-Carter, 2005). La tasa de éxito es el porcentaje de depósitos de formación que están correctamente delineados en la zona de prospecto. En este estudio, fue crucial lograr una alta tasa de éxito en el área de prospecto más pequeña posible, dado que los costos de minería están directamente relacionados con la extensión del prospecto.

entre los anterioresTPR = (预测为正,真实为正) / (所有已知正例)

Código

# 将整个研究区划分为有矿/无矿二分类
data_sum =  	# 此处为神经网络模型对整个研究区域的矿区单元的成矿概率预测值,区间值为[0,1]
high = data_sum.shape[0]
width = data_sum.shape[1]
total_area = width * high	# 整个研究区域面积

total = []
TPR = []

# 用坐标表示每个矿区单元,比如 (0,0)就是左上角的小区域
for i in range(high):
    for j in range(width):
        total.append((i,j))

def calculate_TPR():
    start = time.time()
    for i in np.linspace(0, 1.0, 101):
        TP = 0
        end_index = round(total_area * i)
        temp = total[0:end_index+1]		# 对面积进行百分阈值划分
        new_list = [item for item in temp if item in positive_location]		# positive_location是已知正样本坐标
        for (n,p) in new_list:			# 计算出在该阈值下面积中被正确预测的正样本
            if data_sum[n][p] >= 0.5:
                TP += 1
        TPR.append(TP/TP_plus_FN)
    end = time.time()
    print('耗时{:.2f}秒'.format(end-start))
    np.save('./numpyData/SuccessRate/'+fileName+'.npy',TPR)		# 保存计算结果

calculate_TPR()
# TPR = np.load('./numpyData/SuccessRate/'+fileName+'.npy')

# 设置画布大小 8*8
fig, ax1 = plt.subplots(figsize=(8, 8), dpi=100)

# 设置网格线
ax1.grid(axis='both', linestyle='-.')

# 标记3个点的坐标
first_index = (0.27,0.259)
second_index = (0.62,0.659)
third_index = (0.90,0.907)

# 绘图
ax1.plot(np.linspace(0, 1.0, 101), TPR, color="red", alpha=0.5, linewidth= 2)

# 绘制3个折点
ax1.plot(first_index[0], first_index[1], 'ko')
plt.hlines(first_index[1], -0.04, first_index[0], color="skyblue", linestyle='--')       # 画出横线到坐标
plt.vlines(first_index[0], -0.04, first_index[1], color="skyblue", linestyle='--')        # 画出竖线到坐标

ax1.plot(second_index[0], second_index[1], 'ko')
plt.hlines(second_index[1], -0.04, second_index[0], color="skyblue", linestyle='--')       # 画出横线到坐标
plt.vlines(second_index[0], -0.04, second_index[1], color="skyblue", linestyle='--')        # 画出竖线到坐标

ax1.plot(third_index[0], third_index[1], 'ko')
plt.hlines(third_index[1], -0.04, third_index[0], color="skyblue", linestyle='--')       # 画出横线到坐标
plt.vlines(third_index[0], -0.04, third_index[1], color="skyblue", linestyle='--')        # 画出竖线到坐标

show_first = str(first_index)
show_second = str(second_index)
show_third = str(third_index)

# 3个点标注信息
plt.annotate(show_first,xy=(first_index[0], first_index[1]),xytext=(first_index[0]+0.02, first_index[1]-0.02))
plt.annotate(show_second,xy=(second_index[0], second_index[1]),xytext=(second_index[0]+0.02, second_index[1]-0.02))
plt.annotate(show_third,xy=(third_index[0], third_index[1]),xytext=(third_index[0]+0.02, third_index[1]-0.02))


# ax1.set_yticks(np.linspace(0, 100, 11), custom_y_left)     # 自定义 y轴刻度
ax1.set_yticks(np.linspace(0, 1.0, 11))     # 设置 y轴刻度
plt.ylim((-0.04,1.04))                      # 设置 y轴显示范围
ax1.set_xticks(np.linspace(0, 1.0, 11))     # 设置 x轴刻度
plt.xlim((-0.04,1.04))                      # 设置 x轴显示范围

# 设置 x、y轴坐标信息
ax1.set_xlabel('Percentage of prospective areas (%)', fontdict={
    
    'size': 16})
ax1.set_ylabel('Success rate (%)', fontdict={
    
    'size': 16})

plt.title(fileName)
plt.show(block=True)

representaciones

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_56039091/article/details/127169180
Recomendado
Clasificación