首页 > 其他分享 >混凝土代码

混凝土代码

时间:2024-12-26 15:10:41浏览次数:3  
标签:Category Strength Compressive df 代码 test 混凝土 print

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score, precision_score, recall_score, f1_score
import matplotlib.pyplot as plt
import seaborn as sns

# 1. 加载数据集
df = pd.read_excel('F:\\高璇的仓库哈哈哈哈\\Data.xlsx')

# 打印列名以检查
print("列名:")
print(df.columns)

# 2. 数据集统计信息
print("\n统计信息:")
print(df.describe())

# 3. 数据可视化处理
print("\n前6行数据:")
print(df.head(6))

# 绘制各特征之间关系的矩阵图
sns.pairplot(df)
plt.show()

# 4. 数据预处理 - 离散化处理
strength_column = 'a' # 假设'承重强度'列为 'a',请根据实际列名调整

# 离散化方案1:使用qcut方法将承重强度分为3个等级
df['Compressive_Strength_Category_qcut'] = pd.qcut(df[strength_column], q=3, labels=['Low', 'Medium', 'High'])

# 编码标签
le = LabelEncoder()
df['Compressive_Strength_Category_qcut'] = le.fit_transform(df['Compressive_Strength_Category_qcut'])

# 选择离散化后的标签作为目标
y = df['Compressive_Strength_Category_qcut']

# 特征选择
X = df.drop([strength_column, 'Compressive_Strength_Category_qcut'], axis=1)

# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 6. 机器学习模型拟合
rf = RandomForestClassifier(random_state=42)
rf.fit(X_train, y_train)

# 7. 交叉验证和超参数估计
scores = cross_val_score(rf, X_train, y_train, cv=5)
print(f'交叉验证分数:{scores.mean()}')

param_grid = {
'n_estimators': [100, 200],
'max_depth': [None, 10, 20],
'min_samples_split': [2, 5]
}
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5)
grid_search.fit(X_train, y_train)
print(f'最佳超参数:{grid_search.best_params_}')

# 8. 预测结果和结果展示
y_pred = rf.predict(X_test)

# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

# 输出分类报告(包括精度、查准率、查全率、F1值)
print("分类报告:")
# 使用 LabelEncoder 的 classes_ 获取类别标签
report = classification_report(y_test, y_pred, target_names=le.classes_.astype(str)) # 确保类别为字符串类型
print(report)

# 精度、查准率、查全率、F1值的计算
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='weighted')
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')

print(f"精度: {accuracy:.4f}")
print(f"查准率: {precision:.4f}")
print(f"查全率: {recall:.4f}")
print(f"F1值: {f1:.4f}")

# 9. 结果分析
# 超参数影响分析:在此部分你可以展示不同超参数的影响以及如何调整模型参数来改善性能。
# 如交叉验证和网格搜索可以帮助找到最佳的参数集。

# 可能存在的问题:
# - 数据离散化方法的选择对模型性能有较大影响,需要根据任务需求选择最合适的离散化方法。
# - 不同模型可能对不同离散化方式的表现有所差异,因此建议进行多次实验对比。
# - 数据特征之间可能存在较强的相关性,建议对特征进行相关性分析和降维。

# 可提升的改进思路:
# - 可以尝试更多的离散化方法,如基于机器学习的聚类方法等。
# - 可以使用不同的分类算法进行对比,如XGBoost、SVM等。
对比:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score, precision_score, recall_score, f1_score
import matplotlib.pyplot as plt
import seaborn as sns

# 1. 加载数据集
df = pd.read_excel('F:\\高璇的仓库哈哈哈哈\\Data.xlsx')

# 打印列名以检查
print("列名:")
print(df.columns)

# 2. 数据集统计信息
print("\n统计信息:")
print(df.describe())

# 3. 数据可视化处理
print("\n前6行数据:")
print(df.head(6))

# 绘制各特征之间关系的矩阵图
sns.pairplot(df)
plt.show()

# 4. 数据预处理 - 离散化处理
strength_column = 'a' # 假设'承重强度'列为 'a',请根据实际列名调整

# 离散化方案1:使用qcut方法将承重强度分为3个等级
df['Compressive_Strength_Category_qcut'] = pd.qcut(df[strength_column], q=3, labels=['Low', 'Medium', 'High'])

# 离散化方案2:使用等距法将承重强度分为3个等级
min_strength = df[strength_column].min()
max_strength = df[strength_column].max()
df['Compressive_Strength_Category_equal'] = pd.cut(df[strength_column], bins=[min_strength, (max_strength - min_strength) / 3, (2 * max_strength - min_strength) / 3, max_strength], labels=['Low', 'Medium', 'High'])

# 离散化方案3:基于自定义阈值
thresholds = [15, 30] # 假设自定义阈值
df['Compressive_Strength_Category_threshold'] = pd.cut(df[strength_column], bins=[-np.inf, thresholds[0], thresholds[1], np.inf], labels=['Low', 'Medium', 'High'])

# 编码标签
le = LabelEncoder()
df['Compressive_Strength_Category_qcut'] = le.fit_transform(df['Compressive_Strength_Category_qcut'])
df['Compressive_Strength_Category_equal'] = le.fit_transform(df['Compressive_Strength_Category_equal'])
df['Compressive_Strength_Category_threshold'] = le.fit_transform(df['Compressive_Strength_Category_threshold'])

# 5. 数据划分和标准化处理
# 选择一个离散化方案进行模型训练
df_selected = df[['Compressive_Strength_Category_qcut', 'Compressive_Strength_Category_equal', 'Compressive_Strength_Category_threshold']]
y = df['Compressive_Strength_Category_qcut'] # 可以选择其他方案,比如 `Compressive_Strength_Category_equal` 或 `Compressive_Strength_Category_threshold`

# 特征选择
X = df.drop([strength_column, 'Compressive_Strength_Category_qcut', 'Compressive_Strength_Category_equal', 'Compressive_Strength_Category_threshold'], axis=1)

# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 6. 机器学习模型拟合
rf = RandomForestClassifier(random_state=42)
rf.fit(X_train, y_train)

# 7. 交叉验证和超参数估计
scores = cross_val_score(rf, X_train, y_train, cv=5)
print(f'交叉验证分数:{scores.mean()}')

param_grid = {
'n_estimators': [100, 200],
'max_depth': [None, 10, 20],
'min_samples_split': [2, 5]
}
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5)
grid_search.fit(X_train, y_train)
print(f'最佳超参数:{grid_search.best_params_}')

# 8. 预测结果和结果展示
y_pred = rf.predict(X_test)

# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

# 输出分类报告(包括精度、查准率、查全率、F1值)
print("分类报告:")
report = classification_report(y_test, y_pred, target_names=le.classes_)
print(report)

# 精度、查准率、查全率、F1值的计算
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='weighted')
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')

print(f"精度: {accuracy:.4f}")
print(f"查准率: {precision:.4f}")
print(f"查全率: {recall:.4f}")
print(f"F1值: {f1:.4f}")

# 9. 结果分析
# 超参数影响分析:在此部分你可以展示不同超参数的影响以及如何调整模型参数来改善性能。
# 如交叉验证和网格搜索可以帮助找到最佳的参数集。

# 可能存在的问题:
# - 数据离散化方法的选择对模型性能有较大影响,需要根据任务需求选择最合适的离散化方法。
# - 不同模型可能对不同离散化方式的表现有所差异,因此建议进行多次实验对比。
# - 数据特征之间可能存在较强的相关性,建议对特征进行相关性分析和降维。

# 可提升的改进思路:
# - 可以尝试更多的离散化方法,如基于机器学习的聚类方法等。
# - 可以使用不同的分类算法进行对比,如XGBoost、SVM等。

标签:Category,Strength,Compressive,df,代码,test,混凝土,print
From: https://www.cnblogs.com/aixin52129211/p/18632876

相关文章

  • python整人代码5
    这次我带给大家的是python整人代码大全,具体如下:温馨提示:     朋友使用可能会破坏朋友之间的友谊,请谨慎使用无限打开网站importwebbrowserwhileTrue:webbrowser.open('www.luogu.com.cn')危险性:低解决方法:一直按Alt+F4回答我!whileTrue: input("请......
  • bat整人代码4
    这次我带给大家的是bat整人代码大全,具体如下:温馨提示:     朋友使用可能会破坏朋友之间的友谊,请谨慎使用增加磁盘for%%iin(abcdefghijklmnopqrstuvwxyz12345678910)do(subst%%i:C:\)危险性:低解决方法:把C改成D再运行......
  • 深入浅出AI落地应用之AI+「低代码平台」!
    低代码(LowCode)是一种可视化的应用开发方法,用较少的代码、以较快的速度来交付应用程序(来源于百度百科)。从百度百科对低代码平台的定义可以了解到低代码平台是利用可视化开发与较少的代码相结合的方式来实现快速高效地开发应用。一、构成一般的低代码平台由以下几部分组成......
  • 学习前端时做的一个博客的模板psd2html代码
    链接:https://files.cnblogs.com/files/blogs/779648/%E5%8D%9A%E5%AE%A2.zip?t=1735182491&download=true总结:1、制作过程中会使用ps切片切出有些需要的图或者图标。2、需要纯手写css,html代码,某些css代码可以参考ps图层的css复制。3、可先按页面布局写好网页中容器【div,cs......
  • 代码随想录——贪心23监控二叉树
    思路这道题目首先要想,如何放置,才能让摄像头最小的呢?从题目中示例,其实可以得到启发,我们发现题目示例中的摄像头都没有放在叶子节点上!这是很重要的一个线索,摄像头可以覆盖上中下三层,如果把摄像头放在叶子节点上,就浪费的一层的覆盖。所以把摄像头放在叶子节点的父节点位置,才......
  • 系统攻防-Windows&Linux&远程探针&本地自检&任意代码执行&权限提升&入口点
    知识点:1、远程漏扫-Nessus&Nexpose&Goby2、本地漏扫(提权)-Wesng&Tiquan&Suggester3、利用场景-远程利用&本地利用&利用条件一、演示案例-操作系统-远程漏扫-Nessus&Nexpose&GobyNessusNessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提......
  • 三模代码相关(杂项)
    1.dongle地址设置的是MacAddr[0]=0x33;鼠标mac地址设置的是MacAddr[0]=0x11;有什么作用?-->原厂测试代码可以删掉2.BLE_SNV_ADDR是什么地址有什么作用-->蓝牙配对地址保存位置,dongle不需要也用不到3、BLE_TX_NUM_EVENT这个宏定义配置的是什么功能?   BLE模式单......
  • 仅用30多行代码实现一个微信AI聊天机器人
    前言https://blog.csdn.net/weixin_60159567/article/details/143699663本文章将介绍如何使用Python和wxauto、langchain、一个免费的api-key实现一个微信AI聊天机器人,自动回复消息准备本文章使用Python3.13编辑器使用的是PyCharm使用wxauto实现微信消息的自动发送以及langcha......
  • 写的代码在计算机的哪个设备存储?
    当你编写前端代码(如HTML、CSS、JavaScript等)时,这些代码文件通常首先存储在你的计算机上的某个存储设备中。这个存储设备可以是以下几种之一:硬盘驱动器(HDD):传统的硬盘驱动器使用磁碟存储数据,它们通常提供较大的存储容量,但读写速度可能较慢。固态硬盘(SSD):固态硬盘使用闪存来存储......
  • 编写好的代码在CPU中是如何运行的?
    编写好的代码在CPU中的运行过程是一个复杂但精细的流程,涉及多个步骤和组件。以下是从前端开发的角度,对代码在CPU中如何运行的一个概述:一、编写代码前端开发者使用高级编程语言(如JavaScript)编写代码,这些代码描述了程序希望计算机执行的具体任务。编写过程中,开发者需要遵循特定的......