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

2023-10-28 13:45

本文主要是介绍静力触探数据智能预处理(4),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

静力触探数据智能预处理(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.1mPau0 = 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.8name(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.02name(i) = cellstr('粉土');
%         y_name(i) = Bq(i);y_name(i) = Qt(i);y_color(i) = cellstr('y');elsename(i) = cellstr('砂土');
%         y_name(i) = Bq(i);y_name(i) = Qt(i);y_color(i) =cellstr( 'k');end
endX = [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 plotidx2Region = 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

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

这篇关于静力触探数据智能预处理(4)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293613

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据