IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 用Python实现DT算法 -> 正文阅读

[人工智能]用Python实现DT算法

目录

一、前言

二、示例数据

三、DT法分级步骤

四、Python实现

五、结果


一、前言

DT法是由我国学者林韵梅于 1988 年提出的,首先应用于围岩稳定性动态分级的一种方法。该方法的核心思想来源于多元统计分析中的动态聚类法,是根据“物以类聚”的道理,对样本或指标进行分类。动态聚类的基本思路是,所有样本应被划分到与之最接近的类别当中。首先根据样本的基础特性给出多个凝聚点,即欲形成“类”的中心,计算各样本到凝聚点的距离,将样本划入最近的凝聚点,形成一个粗糙的初始分类,然后按照一定的原则,调整初始分类,直到分类合理时,输出分类结果。在调整分类的过程中就是样本间的距离误差被不断修正,当误差达到可接受的范围,即可得到相对准确的结果。在反复修改过程中,样本的级别允许动态调整,可以与初始分级有所变化,这和静态分级方法中,样本一旦划入某个类以后就不再改变的处理方法有明显的不同。

二、示例数据

矿岩名称抗压强度RcMPa容重ρg/cm3完整系数炸药单耗qkg/m3
阳起石英岩226.762.940.180.88
细粒斜长角闪岩153.63.030.20.76
花岗岩106.052.690.210.59
伟晶岩95.462.690.190.59
辉绿岩69.583.010.150.6
绿泥角闪岩78.172.970.380.77
赤铁磁铁石英岩144.263.370.370.74
磁铁石英岩129.863.420.360.82
第六层铁矿250.43.480.21.08
第五层铁矿193.563.420.230.96
第二层铁矿186.053.490.290.98
第三层铁矿168.783.410.150.89
赤铁石英岩205.53.380.890.7
石英岩200.42.690.950.6
绿泥岩392.930.940.3
混合岩68.62.580.910.5
赤铁石英岩192.713.480.380.63
底盘角闪岩260.42.880.390.75
矽石山石英岩160.682.630.340.74


三、DT法分级步骤

来源:基于DT法的石油化工码头储罐区危险源动态分级研究_崔益源[D]

?

四、Python实现

import pandas as pd
import numpy as np
from numpy import *
import sympy as sp

import matplotlib.pyplot as plt
import numpy as np
from sympy import *
import math

from pylab import *
plt.rcParams['axes.unicode_minus']=False  #用于解决不能显示负号的问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
data =  pd.read_excel("DT分析样本.xlsx",index_col="矿岩名称")  
S = np.sqrt(((data-data.mean())**2).sum()/(len(data.index)-1))
x2_2 = (data - data.mean())/S
S_i = x2_2.sum(axis=1)
AMAX = max(S_i)
AMIN = min(S_i)
K = 19
NC_i = np.floor(((K-1)*(AMAX-S_i)/(AMAX-AMIN))+0.5)+1
NC_i = pd.DataFrame(NC_i)
NC_i.columns = ["NC"]
data = data.add(NC_i,fill_value=0)
x = []
y = []
for K in range(2,20):
    data =  pd.read_excel("DT分析样本.xlsx",index_col="矿岩名称")  
    S = np.sqrt(((data-data.mean())**2).sum()/len(data.index))
    x2_2 = (data - data.mean())/S
    data = (data - data.mean())/S
    S_i = x2_2.sum(axis=1)
    AMAX = max(S_i)
    AMIN = min(S_i)

    NC_i = np.floor(((K-1)*(AMAX-S_i)/(AMAX-AMIN))+0.5)+1
    NC_i = pd.DataFrame(NC_i)
    NC_i.columns = ["NC"]
    data = data.add(NC_i,fill_value=0)

    for i in range(300):
#         print(K,i)
        temp = data["NC"].copy()

        value = pd.DataFrame(columns=["type","num","value"])
        for eachIndex in data.index:
            for each in set(data["NC"]):
                value = value.append({"type":eachIndex,"num":each,"value":np.sqrt(((data.loc[eachIndex] - data[data["NC"] ==each].mean())**2).sum())},ignore_index=True)
        value = value.set_index(["type"])
        for index in set(value.index):
            data.loc[index]["NC"] = value.loc[index].sort_values("value").iloc[0]["num"]


        if (temp-data["NC"]).abs().sum() < 0.001:
            sum = 0
            for index in data.index:
                sum += value.loc[index][value.loc[index]["num"]==data.loc[index]["NC"]]["value"].sum()
            x.append(K)
            y.append(sum)
            print(K,sum)
            break

??PS:在线多项式拟合网站?

plt.figure(figsize=(8,4))

x_1 = np.linspace(2,19,500)
y_1 = 33.1714313933564 - 2.6804554847376*x_1 + 0.0626813808370871*x_1**2 + 0.00359821535505567*x_1**3 - 0.00018026487545368*x_1**4

plt.scatter(x,y,label="理论值",linewidth=2,color="r")
plt.plot(x_1,y_1,linewidth=2,label="拟合曲线")
plt.xlabel("分类数目K",fontsize=20)
plt.ylabel("分类函数值DS",fontsize=20)
plt.yticks([5,10,15,20,25])
plt.xticks([2,4,6,8,10,12,14,16,18,20])

plt.legend(fontsize=15)
plt.tick_params(labelsize=20)
plt.savefig("DS",dpi=300,bbox_inches ="tight")

五、结果

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:41:49  更:2022-04-26 11:46:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:47:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码