静力触探数据智能预处理(4)

news2024/9/23 23:33:21

静力触探数据智能预处理(4)

前言

数据处理方式已由手工1.0、计算机辅助2.0向人工智能3.0的趋势发展。机器学习是人工智能的基础,本文尝试应用机器学习中K均值聚类算法对孔压静力触探数据进行土的分类,分类结果不理想,非专业编写,代码仅供参考。

1、分类结果

某规范给出的分类标准:
在这里插入图片描述
按照规范进行分类结果如下:
在这里插入图片描述
应用机器学习中K均值聚类算法分类如下:
在这里插入图片描述
在这里插入图片描述
分类结果不理想,机器学习参数调试不正确。

2、聚类算法原理简介

机器学习中有两个重要的任务,即分类和聚类。

分类算法有逻辑回归、支持向量机、决策树、随机森林等。

聚类算法有K均值聚类、层次聚类、密度聚类、谱聚类、EM聚类、模糊聚类等。

K均值聚类是一种常用的无监督学习算法,用于将数据点划分为不同的簇,使得同一簇内的数据点彼此相似度较高,不同簇之间的数据点相似度较低。这个算法的目标是将数据点分为K个簇,其中K是用户定义的参数。K均值聚类的原理相对简单,主要思想是通过迭代寻找K个簇的中心点,将每个数据点分配给距离其最近的中心点,然后更新中心点的位置,直到满足停止条件为止。
实现步骤如下:
1、选择要分成的簇的数量K;
2、随机初始化K个中线点,这些中心点可以是从数据集中随机选择的数据点;
3、重复以下过程,直到满足迭代停止条件:
a、将每个数据点分配到距离其最近的中心点所属的 簇;
b、对每个簇,计算所有数据点的平均值,并将其作为新的中心点。
停止条件通常可以是以下之一:
(1)中心点不再改变或者改变非常小;
(2)数据点不再改变其所属簇。

3、机器学习库安装

scikit-learn是机器学习领域重要的开源库,包含目前流行的聚类算法。需要安装最新的Python版本和scikit-learn存储库,将conda添加至环境变量后,直接可以用pip安装,如下所示:

pip install scikit-learn

安装完毕后检查电脑中库的版本

import sklearn
print(sklearn.--version--)

即安装完成。

4、代码分享

实现本博文所示结果,完整代码如下:

close all
clear
clc

[inFileName,PathName] = uigetfile('*.txt',...
    '选择静探数据文件','MultiSelect','on');

filename = strcat(PathName,inFileName);

% 将静探数据读取出来
data_jt = importdata(filename);

% 剔除重复值
[data_jt01,ia] = unique(data_jt(:,1),'rows','stable');
data_jt = data_jt(ia,:);

% 一共有五列数据,分别为深度、锥尖、侧壁、孔压、角度。
deepth = data_jt(:,1);% 单位为m
qc = data_jt(:,2);    % 单位为mPa
fs = 0.1*data_jt(:,3);    % 单位为0.01mPa
ut = 0.01*data_jt(:,4);    % 单位为0.1mPa

u0 = 0.01*(deepth+18.5)*1.05*9.79363; % 单位为0.1mPa
Qt = qc + (1 - 0.75)*ut*10; % 孔压修正锥尖阻力,单位mPa
P = 2*10^3*deepth*9.79363*10^-6; % 土的总自重压力,单位mPa
Bq = (10*ut - 10*u0)./(qc - P);  %孔隙压力参数比
% Bq(Bq<0) = 0.4; % 任意设的一个阈值
Bqpre1 = 0.2321*Qt + 0.06;
Bqpre2 = 0.0714*(Qt - 1);

name = cell(length(Qt),1);
y_name = zeros(length(Qt),1);
y_color = cell(length(Qt),1);
for i = 1:length(Qt)
    if Qt(i) <= 0.8
        name(i) = cellstr('软土');
%         y_name(i) = Bq(i);
        y_name(i) = Qt(i);
        y_color(i) = cellstr('r');
    elseif Bq(i) > Bqpre1(i)
        name(i) = cellstr('黏土');
%         y_name(i) = Bq(i);
        y_name(i) = Qt(i);
        y_color(i) = cellstr('b');
    elseif (Bq(i) <= Bqpre1(i) ) & (Bq(i) >= Bqpre2(i))
        name(i) = cellstr('粉质黏土');
%         y_name(i) = Bq(i);
        y_name(i) = Qt(i);
        y_color(i) = cellstr('g');
    elseif Bq(i) < Bqpre2(i) & Bq(i) > 0.02
        name(i) = cellstr('粉土');
%         y_name(i) = Bq(i);
        y_name(i) = Qt(i);
        y_color(i) = cellstr('y');
    else
        name(i) = cellstr('砂土');
%         y_name(i) = Bq(i);
        y_name(i) = Qt(i);
        y_color(i) =cellstr( 'k');
    end
end

X = [Qt/10,Bq/100];
[idx,C] = kmeans(X,6);
figure(1),plot(X(:,1),X(:,2),'k*');

x1 = min(X(:,1)):0.01:max(X(:,1));
x2 = min(X(:,2)):0.01:max(X(:,2));
[x1G,x2G] = meshgrid(x1,x2);
XGrid = [x1G(:),x2G(:)]; % Defines a fine grid on the plot

idx2Region = kmeans(XGrid,6,'MaxIter',100,'Start',C);

figure(2);
gscatter(XGrid(:,1),XGrid(:,2),idx2Region,...
    [0,0.5,0.5;0.5,0,0.5;0.5,0.5,0],'..');
hold on;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'CPTU Data';
xlabel 'Qt';
ylabel 'Bq'; 
% legend('Region 1','Region 2','Region 3','Data','Location','SouthEast');
hold off;

% opts = statset('Display','final');
% [idx,C] = kmeans(X,6,'Distance','cityblock',...
%     'Replicates',100,'Options',opts);
% 
% figure;
% plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
% hold on
% plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
% plot(X(idx==3,1),X(idx==3,2),'c.','MarkerSize',12)
% plot(X(idx==4,1),X(idx==4,2),'y.','MarkerSize',12)
% plot(X(idx==5,1),X(idx==5,2),'g.','MarkerSize',12)
% plot(X(idx==6,1),X(idx==6,2),'m.','MarkerSize',12)
% 
% plot(C(:,1),C(:,2),'kx',...
%      'MarkerSize',15,'LineWidth',3) 
% legend('1 软土','2 黏土','3 粉质黏土','4 粉质黏土','5 粉土','6 粉质黏土',...
%        'Location','best')
% title 'CPTU data'
% xlabel 'Qt';
% ylabel 'Bq'; 
% hold off

编程水平有限,本代码尚不成熟,不足之处指出改正,勿作他用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

buuctf_练[安洵杯 2019]easy_web

[安洵杯 2019]easy_web 文章目录 [安洵杯 2019]easy_web掌握知识解题思路代码分析正式解题 关键paylaod 掌握知识 url地址和源代码的信息捕捉&#xff1b;图片和base64之间转换&#xff1b;base64和十六进制编码的了解&#xff1b;代码审计&#xff0c;绕过正则匹配对关键字的…

简易但很实用的javaswing/gui音乐播放器

视频浏览地址 很实用的一个javaswing音乐播放器。可以展示歌名&#xff0c;上一曲下一曲。 源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制

Java八股文 ----Redis篇

问题大纲 缓存穿透 原因:入侵者大量查询不存在的数据 使得Redis不断去访问数据库 然而Redis也无法缓存,就导致每次都会查询数据库...数据库的并发度不高 就会宕机 解决办法 布隆过滤器:作用:拦截不存在的数据 布隆过滤器 原理:把数据的id通过多次哈希计算标记数组,新来个数…

Easex样式样式

eg1&#xff1a;线形样式和描边 #include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #define PI 3.14 // 1PI 180度 2PI 360度int main() {initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);/*void setl…

基于Ubuntu20.04安装ROS系统

文章目录 一、ROS简介二、ROS安装三、ROS安装测试四、安装问题解决1. sudo rosdepc init&#xff1a;找不到命令2. ERROR: cannot download default sources list from...3. Command roscore not found...4. Resource not found: roslaunch... 一、ROS简介 ROS是用于编写机器人…

行业追踪,2023-10-27

自动复盘 2023-10-27 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

前后端分离不可忽视的陷阱,深入剖析挑战,分享解决方案,助你顺利实施分离开发。

不管你设计的系统架构是怎么样&#xff0c;最后都是你的组织内的沟通结构胜出。这个观点一直在组织内不断地被证明&#xff0c;但也不断地被忽略。 前后端分离的利与弊 近几年&#xff0c;随着微服务架构风格的引入、前后端生态的快速发展、多端产品化的出现&#xff0c;前后…

DevChat:VSCode中的AI黑马

前言 编程对于很多人来说&#xff0c;可能是一件复杂且耗时的事情。在结合当下各类AI产品层出不穷的情况下&#xff0c;我是有在认真的去拥抱AI来结合我们的工作&#xff0c;帮助我们的工作提升效率&#xff0c;尝试过我们的官方G P T&#xff0c;以及各类国产AI产品&#xff…

【Java基础】集合容器

集合容器 文章目录 集合容器1. 集合框架体系2. Collection子接口1&#xff1a;List3. Collection子接口2&#xff1a;Set3.1 Set主要实现类&#xff1a;HashSet3.1.1 HashSet概述3.1.2 HashSet中添加元素的过程&#xff1a;3.1.3 重写 hashCode() 方法的基本原则3.1.4 重写equa…

【Unity数据交互】JsonUtility的“爱恨情仇“

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

C++模拟实现-----日期计算器(超详细解析,小白一看就会!)

目录 一、前言 二、日期类计算器 三、日期计算器的实现 &#x1f34e;日期计算器各个接口的实现 &#x1f350;日期计算器的需求 &#x1f349;打印当前日期&#xff08;并检查日期是否合理&#xff09; &#x1f4a6;检查日期是否合理 &#x1f4a6;日期类构造函数&#x…

操作系统 (1)

进程的概念 进程同步/进程互斥 进程互斥的软件实现 进程互斥的硬件实现 信号量机制 生产者消费者问题 以下wei8最终情况,不可调换位置,否则会发生死锁 预防死锁 避免死锁

剖析C语言中的自定义类型(结构体、枚举常量、联合)兼内存对齐与位段

目录 前言 一、结构体 1. 基本定义与使用 2. 内存对齐 3. 自定义对齐数 4. 函数传参 二、位段 三、枚举 四、联合&#xff08;共同体&#xff09; 总结​​​​​​​ 前言 本篇博客将介绍C语言中的结构体&#xff08;struct&#xff09;、枚举&#xff08;enum&…

YOLOv8改进之C2f模块融合CVPR2023 SCConv

目录 1. SCConv SCConv模块的设计 SCConv模块的性能 2. YOLOv8 C2f融合SCConv模块 1. SCConv 卷积在各种计算机视觉任务中表现出色&#xff0c;但是由于卷积层提取冗余特征&#xff0c;其计算资源需求巨大。虽然过去用于改善网络效率的各种模型压缩策略和网络设计&#xff0c…

C++前缀和算法的应用:使数组相等的最小开销

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你两个下标从 0 开始的数组 nums 和 cost &#xff0c;分别包含 n 个 正 整数。 你可以执行下面操作 任意 次&#xff1a; 将 nums 中 任意 元素增加或者减小…

PCL 半径滤波剔除噪点

目录 一、算法原理二、注意事项三、代码实现一、算法原理 PCL半径滤波是删除在输入的点云一定范围内没有达到足够多领域的所有数据点。通俗的讲:就是以一个点p给定一个范围r,领域点要求的个数为m,r若在这个点的r范围内部的个数大于m则保留,小于m则删除。因此,使用该算法时…

arduino抢答器

按键传感器 &#xff1a; 1&#xff0c;如果按键传感器没有按下 他返回的值是1 2&#xff0c;如果按下 返回的值为0逻辑运算符有两种状态 True False 如果返回的是数字 0代表Fales 非0代表True 了解 比较运算和逻辑运算 如果两个传感器同时按下两个小灯才会亮 只要其中一…

【Android知识笔记】热修复专题

Android类加载与双亲委派知识回顾 Android 中的 ClassLoader 继承关系: 双亲委派模型: 在 Android 系统中,应用程序中默认的 ClassLoader 是 PathClassLoader 对象,即通过Context.getClassLoader()获取到的是一个 PathClassLoader 对象,而 PathClassLoader 对象的parent是…

[AUTOSAR][诊断管理][ECU][$22] 读取相关的数据

文章目录 一、简介$22服务的实际用途是什么?$22服务的应用场景有哪些呢?$22服务的诊断格式如何?常见DID总结请求实例服务响应负响应NRCNRC优先级二、示例代码uds22_read_data_by_ld.c一、简介 22服务作为诊断服务种的基础服务,可以简单理解为就是一个用于读取ECU数据的外部…

Redis(05)| 数据结构-哈希表

哈希表是一种保存键值对&#xff08;key-value&#xff09;的数据结构。 哈希表中的每一个 key 都是独一无二的&#xff0c;程序可以根据 key 查找到与之关联的 value&#xff0c;或者通过 key 来更新 value&#xff0c;又或者根据 key 来删除整个 key-value等等。 在讲压缩列表…