机器学习--矿物数据清洗(六种填充方法)

1、数据清洗

指发现并纠正文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值,以确保数据的准确性和可靠性

目的:删除重复信息、纠正存在的错误,并提供数据一致性

2.步骤

1)完整性:检查单条数据是否存在空值,统计的字段是否完善

2)全面性:观察某一列的全部数值,可以通过比较最大值,最小值,平均值,数据定义等来判断数据是否全面

3)合法性:检查数据的类型、内容、大小是否符合预设的规则

4)唯一性:检查数据是否重复记录

5)类别是否可靠

3、矿物数据清洗

思路:

1)数据读取与筛选

2)缺失值检查

3)特征与标签分离

4)标签编码

5)数据类型转换

6)z标准化

7)切分数据集

8)进行数据填充

9)过采样

10)保存清洗好的数据

import pandas as pd import fill data=pd.read_excel('矿物数据.xls') data=data[data['矿物类型'] != 'E'] null_num=data.isnull() null_total=null_num.sum() x_whole=data.drop(['矿物类型'],axis=1).drop(['序号'],axis=1) y_whole=data['矿物类型'] label_dit={'A':0,'B':1,'C':2,'D':3} num_label=[label_dit[label]for label in y_whole] y_whole=pd.Series(num_label,name='矿物类型') for column_name in x_whole.columns: x_whole[column_name] = pd.to_numeric(x_whole[column_name], errors='coerce')#将无法解析为数字的值转换为 NaN print(x_whole) from sklearn.preprocessing import StandardScaler scaler=StandardScaler() x_whole_z=scaler.fit_transform(x_whole) x_whole=pd.DataFrame(x_whole_z,columns=x_whole.columns) from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test=train_test_split(x_whole,y_whole,test_size=0.3,random_state=20)

isnull()会返回一个相同形状的DataFrame,但其中的元素是布尔值(True或False)。
如果原始DataFrame中的某个位置是缺失值(通常是NaN),则对应位置在返回的DataFrame中会被标记为True;否则,标记为False。

注:在pandas中,读取Excel时的空白单元格通常会被自动转换为NaN

1)删除空值法

就是将数据中含有空缺值的那一行全部删除

def drop_train(train_data,train_label): data=pd.concat([train_data,train_label],axis=1) data=data.reset_index(drop=True) da_fill=data.dropna()#删除缺失值 return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 def drop_test(test_data,test_label): data=pd.concat([test_data,test_label],axis=1) data = data.reset_index(drop=True) da_fill=data.dropna() return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 '''删除空值''' x_train_fill,y_train_fill=fill.drop_train(x_train,y_train) x_test_fill,y_test_fill=fill.drop_test(x_test,y_test) '''过采样''' from imblearn.over_sampling import SMOTE oversampl=SMOTE(k_neighbors=1,random_state=40) os_x_train,os_y_train=oversampl.fit_resample(x_train_fill,y_train_fill) data_train=pd.concat([os_x_train,os_y_train],axis=1).sample(frac=1,random_state=3) data_test=pd.concat([x_test_fill,y_test_fill],axis=1) '''保存数据''' data_train.to_excel(r'.//填充后的数据//训练数据集[删除缺失值].xlsx',index=False) data_test.to_excel(r'.//填充后的数据//测试数据集[删除缺失值].xlsx',index=False)
data_train = data_train.reset_index(drop=True)
1.reset_index()的作用
  • 将当前索引重置为默认的整数索引(0, 1, 2, ...)

  • 默认行为:旧的索引会变成一个新列(名为"index")

2.drop=True参数的含义
  • drop=True:丢弃旧的索引,将其保存为新列

  • drop=False(默认):将旧的索引保存为一个新列

2)填充平均值

计算除标签外每一列的平均数,并将此平均数填充到对应列的缺失值处

注:在计算平均值时,需要每个类别都进行计算,而且在填充测试集的缺失值时,需要依赖于训练集的数据

def mean_train_meethod(data): fill_values=data.mean() return data.fillna(fill_values)#用各列的平均值填充缺失值 def mean_train(train_data,train_label): data=pd.concat([train_data,train_label],axis=1) data=data.reset_index(drop=True) A=data[data['矿物类型']==0] B=data[data['矿物类型']==1] C=data[data['矿物类型']==2] D=data[data['矿物类型']==3] A=mean_train_meethod(A) B=mean_train_meethod(B) C=mean_train_meethod(C) D=mean_train_meethod(D) da_fill=pd.concat([A,B,C,D]) da_fill=da_fill.reset_index(drop=True) return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 def mean_test_meethod(data_train,data_test): fill_values=data_train.mean() return data_test.fillna(fill_values) def mean_test(train_data,train_label,test_data,test_label): data_train=pd.concat([train_data,train_label],axis=1) data_train=data_train.reset_index(drop=True) data_test = pd.concat([test_data, test_label], axis=1) data_test = data_test.reset_index(drop=True) A_train=data_train[data_train['矿物类型']==0] B_train=data_train[data_train['矿物类型']==1] C_train=data_train[data_train['矿物类型']==2] D_train=data_train[data_train['矿物类型']==3] A_test=data_test[data_test['矿物类型']==0] B_test=data_test[data_test['矿物类型']==1] C_test=data_test[data_test['矿物类型']==2] D_test=data_test[data_test['矿物类型']==3] A=mean_test_meethod(A_train,A_test) B=mean_test_meethod(B_train,B_test) C=mean_test_meethod(C_train,C_test) D=mean_test_meethod(D_train,D_test) da_fill=pd.concat([A,B,C,D]) da_fill=da_fill.reset_index(drop=True) return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 '''填充平均值''' x_train_fill,y_train_fill=fill.mean_train(x_train,y_train) x_test_fill,y_test_fill=fill.mean_test(x_train_fill,y_train_fill,x_test,y_test) '''过采样''' from imblearn.over_sampling import SMOTE oversampl=SMOTE(k_neighbors=1,random_state=40) os_x_train,os_y_train=oversampl.fit_resample(x_train_fill,y_train_fill) data_train=pd.concat([os_x_train,os_y_train],axis=1).sample(frac=1,random_state=3) data_test=pd.concat([x_test_fill,y_test_fill],axis=1) '''保存数据''' data_train.to_excel(r'.//填充后的数据//训练数据集[平均值].xlsx',index=False) data_test.to_excel(r'.//填充后的数据//测试数据集[平均值].xlsx',index=False)

3)填充中位数

计算除标签外每一列的中位数,并将此中位数填充到对应列的缺失值处

注:和平均值填充注意事项一致

def median_train_meethod(data): fill_values=data.median() return data.fillna(fill_values) def median_train(train_data,train_label): data=pd.concat([train_data,train_label],axis=1) data=data.reset_index(drop=True) A=data[data['矿物类型']==0] B=data[data['矿物类型']==1] C=data[data['矿物类型']==2] D=data[data['矿物类型']==3] A=median_train_meethod(A) B=median_train_meethod(B) C=median_train_meethod(C) D=median_train_meethod(D) da_fill=pd.concat([A,B,C,D]) da_fill=da_fill.reset_index(drop=True) return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 def median_test_meethod(data_train,data_test): fill_values=data_train.median() return data_test.fillna(fill_values) def median_test(train_data,train_label,test_data,test_label): data_train=pd.concat([train_data,train_label],axis=1) data_train=data_train.reset_index(drop=True) data_test = pd.concat([test_data, test_label], axis=1) data_test = data_test.reset_index(drop=True) A_train=data_train[data_train['矿物类型']==0] B_train=data_train[data_train['矿物类型']==1] C_train=data_train[data_train['矿物类型']==2] D_train=data_train[data_train['矿物类型']==3] A_test=data_test[data_test['矿物类型']==0] B_test=data_test[data_test['矿物类型']==1] C_test=data_test[data_test['矿物类型']==2] D_test=data_test[data_test['矿物类型']==3] A=median_test_meethod(A_train,A_test) B=median_test_meethod(B_train,B_test) C=median_test_meethod(C_train,C_test) D=median_test_meethod(D_train,D_test) da_fill=pd.concat([A,B,C,D]) da_fill=da_fill.reset_index(drop=True) return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 '''填充中位数''' x_train_fill,y_train_fill=fill.mean_train(x_train,y_train) x_test_fill,y_test_fill=fill.mean_test(x_train_fill,y_train_fill,x_test,y_test) '''过采样''' from imblearn.over_sampling import SMOTE oversampl=SMOTE(k_neighbors=1,random_state=40) os_x_train,os_y_train=oversampl.fit_resample(x_train_fill,y_train_fill) data_train=pd.concat([os_x_train,os_y_train],axis=1).sample(frac=1,random_state=3) data_test=pd.concat([x_test_fill,y_test_fill],axis=1) '''保存数据''' data_train.to_excel(r'.//填充后的数据//训练数据集[中位数].xlsx',index=False) data_test.to_excel(r'.//填充后的数据//测试数据集[中位数].xlsx',index=False)

4)填充众数

众数:每一列中出现次数最多的数据

计算除标签外每一列的众数,并将此众数填充到对应列的缺失值处

注:在计算众数时,需要每个类别都进行计算,而且在填充测试集的缺失值时,需要依赖于训练集的数据

def mode_train_meethod(data): fill_values = data.apply(lambda x: x.mode().iloc[0] if len(x.mode()) > 0 else None) return data.fillna(fill_values) def mode_train(train_data,train_label): data=pd.concat([train_data,train_label],axis=1) data=data.reset_index(drop=True) A=data[data['矿物类型']==0] B=data[data['矿物类型']==1] C=data[data['矿物类型']==2] D=data[data['矿物类型']==3] A=mode_train_meethod(A) B=mode_train_meethod(B) C=mode_train_meethod(C) D=mode_train_meethod(D) da_fill=pd.concat([A,B,C,D]) da_fill=da_fill.reset_index(drop=True) return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 def mode_test_meethod(data_train,data_test): fill_values = data_train.apply(lambda x: x.mode().iloc[0] if len(x.mode()) > 0 else None) return data_test.fillna(fill_values) def mode_test(train_data,train_label,test_data,test_label): data_train=pd.concat([train_data,train_label],axis=1) data_train=data_train.reset_index(drop=True) data_test = pd.concat([test_data, test_label], axis=1) data_test = data_test.reset_index(drop=True) A_train=data_train[data_train['矿物类型']==0] B_train=data_train[data_train['矿物类型']==1] C_train=data_train[data_train['矿物类型']==2] D_train=data_train[data_train['矿物类型']==3] A_test=data_test[data_test['矿物类型']==0] B_test=data_test[data_test['矿物类型']==1] C_test=data_test[data_test['矿物类型']==2] D_test=data_test[data_test['矿物类型']==3] A=mode_test_meethod(A_train,A_test) B=mode_test_meethod(B_train,B_test) C=mode_test_meethod(C_train,C_test) D=mode_test_meethod(D_train,D_test) da_fill=pd.concat([A,B,C,D]) da_fill=da_fill.reset_index(drop=True) return da_fill.drop('矿物类型',axis=1),da_fill.矿物类型 '''填充众数''' x_train_fill,y_train_fill=fill.mode_train(x_train,y_train) x_test_fill,y_test_fill=fill.mode_test(x_train_fill,y_train_fill,x_test,y_test) '''过采样''' from imblearn.over_sampling import SMOTE oversampl=SMOTE(k_neighbors=1,random_state=40) os_x_train,os_y_train=oversampl.fit_resample(x_train_fill,y_train_fill) data_train=pd.concat([os_x_train,os_y_train],axis=1).sample(frac=1,random_state=3) data_test=pd.concat([x_test_fill,y_test_fill],axis=1) '''保存数据''' data_train.to_excel(r'.//填充后的数据//训练数据集[众数].xlsx',index=False) data_test.to_excel(r'.//填充后的数据//测试数据集[众数].xlsx',index=False)

5)线性回归

也可以使用线性回归的方式进行数据填充

原因:

  • 线性回归特别适合连续数值特征

  • 当特征高度相关时,可以用已知特征预测缺失特征

def lr_train(train_data,train_label): data_train=pd.concat([train_data,train_label],axis=1) data_train=data_train.reset_index(drop=True) data_train_x=data_train.drop('矿物类型',axis=1) null_num=data_train_x.isnull().sum() null_num_sorted=null_num.sort_values(ascending=True) tzmc=[] for i in null_num_sorted.index: tzmc.append(i) if null_num_sorted[i]!=0: x=data_train_x[tzmc].drop(i,axis=1) y=data_train_x[i] nullhang=data_train_x[data_train_x[i].isnull()].index.tolist()#获取某个特征列(第 i 列)中所有缺失值所在行的索引列表 x_train=x.drop(nullhang) y_train=y.drop(nullhang) x_test=x.iloc[nullhang] lr=LinearRegression() lr.fit(x_train,y_train) y_pred=lr.predict(x_test) data_train_x.loc[nullhang,i]=y_pred return data_train_x,data_train.矿物类型 def lr_test(train_data, train_label,test_data, test_label): data_train = pd.concat([train_data, train_label], axis=1) data_train = data_train.reset_index(drop=True) data_test = pd.concat([test_data, test_label], axis=1) data_test = data_test.reset_index(drop=True) data_train_x = data_train.drop('矿物类型', axis=1) data_test_x = data_test.drop('矿物类型', axis=1) null_num = data_test_x.isnull().sum() null_num_sorted = null_num.sort_values(ascending=True) tzmc = [] for i in null_num_sorted.index: tzmc.append(i) if null_num_sorted[i] != 0: x_train = data_train_x[tzmc].drop(i, axis=1) y_train = data_train_x[i] x_test = data_test_x[tzmc].drop(i, axis=1) nullhang = data_test_x[data_test_x[i].isnull()].index.tolist() x_test = x_test.iloc[nullhang] lr = LinearRegression() lr.fit(x_train, y_train) y_pred = lr.predict(x_test) data_test_x.loc[nullhang, i] = y_pred return data_test_x, data_test.矿物类型 '''线性回归''' x_train_fill,y_train_fill=fill.lr_train(x_train,y_train) x_test_fill,y_test_fill=fill.lr_test(x_train_fill,y_train_fill,x_test,y_test) '''过采样''' from imblearn.over_sampling import SMOTE oversampl=SMOTE(k_neighbors=1,random_state=40) os_x_train,os_y_train=oversampl.fit_resample(x_train_fill,y_train_fill) data_train=pd.concat([os_x_train,os_y_train],axis=1).sample(frac=1,random_state=3) data_test=pd.concat([x_test_fill,y_test_fill],axis=1) '''保存数据''' data_train.to_excel(r'.//填充后的数据//训练数据集[线性回归].xlsx',index=False) data_test.to_excel(r'.//填充后的数据//测试数据集[线性回归].xlsx',index=False)
null_num=data_train_x.isnull().sum() null_num_sorted=null_num.sort_values(ascending=True)

统计所有列缺失值的数量,并按从小到大的顺序排列,若ascending=False,则按从大到小排列

6)随机森林

def rf_train(train_data,train_label): data_train=pd.concat([train_data,train_label],axis=1) data_train=data_train.reset_index(drop=True) data_train_x=data_train.drop('矿物类型',axis=1) null_num=data_train_x.isnull().sum() null_num_sorted=null_num.sort_values(ascending=True) tzmc=[] for i in null_num_sorted.index: tzmc.append(i) if null_num_sorted[i]!=0: x=data_train_x[tzmc].drop(i,axis=1) y=data_train_x[i] nullhang=data_train_x[data_train_x[i].isnull()].index.tolist() x_train=x.drop(nullhang) y_train=y.drop(nullhang) x_test=x.iloc[nullhang] rf=RandomForestRegressor() rf.fit(x_train,y_train) y_pred=rf.predict(x_test) data_train_x.loc[nullhang,i]=y_pred return data_train_x,data_train.矿物类型 def rf_test(train_data, train_label,test_data, test_label): data_train = pd.concat([train_data, train_label], axis=1) data_train = data_train.reset_index(drop=True) data_test = pd.concat([test_data, test_label], axis=1) data_test = data_test.reset_index(drop=True) data_train_x = data_train.drop('矿物类型', axis=1) data_test_x = data_test.drop('矿物类型', axis=1) null_num = data_test_x.isnull().sum() null_num_sorted = null_num.sort_values(ascending=True) tzmc = [] for i in null_num_sorted.index: tzmc.append(i) if null_num_sorted[i] != 0: x_train = data_train_x[tzmc].drop(i, axis=1) y_train = data_train_x[i] x_test = data_test_x[tzmc].drop(i, axis=1) nullhang = data_test_x[data_test_x[i].isnull()].index.tolist() x_test = x_test.iloc[nullhang] rf = RandomForestRegressor() rf.fit(x_train, y_train) y_pred = rf.predict(x_test) data_test_x.loc[nullhang, i] = y_pred return data_test_x, data_test.矿物类型 '''随机森林''' x_train_fill,y_train_fill=fill.rf_train(x_train,y_train) x_test_fill,y_test_fill=fill.rf_test(x_train_fill,y_train_fill,x_test,y_test) '''过采样''' from imblearn.over_sampling import SMOTE oversampl=SMOTE(k_neighbors=1,random_state=40) os_x_train,os_y_train=oversampl.fit_resample(x_train_fill,y_train_fill) data_train=pd.concat([os_x_train,os_y_train],axis=1).sample(frac=1,random_state=3) data_test=pd.concat([x_test_fill,y_test_fill],axis=1) '''保存数据''' data_train.to_excel(r'.//填充后的数据//训练数据集[随机森林].xlsx',index=False) data_test.to_excel(r'.//填充后的数据//测试数据集[随机森林].xlsx',index=False)

运行结果

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

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

相关文章

计算机毕设 java 计算机实验室设备安全管理系统设计 Java 实验室设备智能管理平台开发 基于 SpringBoot 的实验室设备安全系统研发

计算机毕设 java 计算机实验室设备安全管理系统设计 4x4419(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享随着世界经济信息化、全球化推进和电子商务飞速发展,诸多行业迎来改革&a…

Java程序员如何入门AI

文章目录前言:Javaer转AI,没你想的那么难!一、先搞懂:Java程序员学AI,核心要学什么?二、环境搭建:3分钟搞定Java AI开发环境2.1 核心依赖清单(Maven)2.2 开发工具推荐三、…

西门子PLC的步进电机直接控制(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)

目 录 摘 要 III ABSTRACT IV 第一章 绪 论 1 1.1引言 1 第二章 方案论证比较设计 3 2.1PLC技术的发展概述 3 2.2PLC技术在步进电机控制中的发展状况 4 2.3步进电机的发展状况 5 2.4 步进电机的工作原理 7 2.5步进电机的控制和驱动方法简介 8 第三章 步进电机工作方式的…

数学错题整理(会更新的)

1.1 集合答案:B 错选:A 解析:易错点是③,这两个看似完全不相同的集合但实际上他们都满足x2≥0,x≥0x^2\geq0,\sqrt{x}\geq0x2≥0,x​≥0,所以本质上他们是一样的!!答案:错选:①② 解析:方程组的解是一个整体,不能这么表示

‌国家实验室泄密文件‌:AI军事系统的测试红蓝对抗

好的,作为专业的文本创作者,我已仔细分析了您的需求。以下是分析结果和为您量身定制的文章: 问题分析 ‌核心任务:‌ 根据标题“国家实验室泄密文件:AI军事系统的测试红蓝对抗”创作一篇‌新的文章‌。‌核心要求&am…

FSMN VAD中文语音检测表现如何?行业落地实操测评

FSMN VAD中文语音检测表现如何?行业落地实操测评 1. 引言:为何选择FSMN VAD进行中文语音活动检测? 在语音识别、会议转录、电话客服分析等实际应用中,语音活动检测(Voice Activity Detection, VAD) 是不可…

拼音混合输入怎么用?IndexTTS 2.0中文优化功能详解

拼音混合输入怎么用?IndexTTS 2.0中文优化功能详解 1. 引言:为什么 IndexTTS 2.0 值得关注? 还在为找不到贴合人设的配音发愁?试试 B 站开源的 IndexTTS 2.0!这款自回归零样本语音合成模型,支持上传人物音…

‌生物神经网络VS人工神经网络:测试方法论跨界启示录

跨界比较的价值与目的‌ 在软件测试领域,创新往往源于跨界借鉴。生物神经网络(BNN),如人脑的神经结构,以其适应性、鲁棒性和学习机制闻名;人工神经网络(ANN),作为AI的核…

python程序员如何入门AI

文章目录一、为啥Python程序员入门AI最吃香?二、AI入门的3个核心阶段(附流程图)阶段1:基础铺垫(1-2个月)1. 必学的数学知识(不用啃完高数)2. Python数据分析库强化阶段2:…

当数据分层说谎:自动驾驶测试的致命盲区

一、触目惊心的现实案例 2025年洛杉矶高速公路事故:某L4级自动驾驶系统在厂商测试中表现优异(综合通过率98.7%),却在晴朗天气下将白色货柜车误判为云层,导致12车连撞。事故调查揭露:测试数据的分组偏差掩盖…

【剑斩OFFER】算法的暴力美学——leetCode 662 题:二叉树最大宽度

一、题目描述二、算法原理思路&#xff1a;使用队列实现层序遍历 让节点绑定一个下标 pair< TreeNode* , unsigned int>例如&#xff1a;计算左节点的下标的公式&#xff1a;父亲节点 * 2计算右节点的下边的公式&#xff1a;父亲节点 * 2 1第一层的宽度&#xff1a;1第…

Qwen3-Embedding-4B启动失败?Docker镜像问题解决

Qwen3-Embedding-4B启动失败&#xff1f;Docker镜像问题解决 在部署大规模语言模型的过程中&#xff0c;Docker 镜像的配置与运行环境的一致性至关重要。近期不少开发者在尝试基于 SGlang 部署 Qwen3-Embedding-4B 向量服务时&#xff0c;遇到了容器启动失败、端口无法绑定或模…

Web3.0革命:智能合约的混沌测试生存指南

引言&#xff1a;混沌中的秩序追寻 当DeFi协议因重入漏洞损失6千万美元&#xff0c;当NFT合约的权限缺陷导致资产冻结&#xff0c;智能合约的安全问题已从技术风险演变为系统性威胁。在Web3.0的确定性执行环境中&#xff0c;混沌工程正成为测试从业者最锋利的破壁工具——它不…

损失曲线(loss surface)的个人理解

作为损失曲线的笔记用于创新点的查找与查找与查找。 原文来自&#xff1a;Online-LoRA: Task-free Online Continual Learning via Low Rank Adaptation 这个方法似乎不是该论文首次提出的&#xff0c;但是我是通过该论文总结的。 一句话来说&#xff0c;这里的损失曲线就是通…

基于微服务SpringCloud+Vue的教材征订管理系统设计与实现

前言 &#x1f31e;博主介绍&#xff1a;✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发、文档编写、答疑辅导等。✌…

简单几步,用Live Avatar生成你的个性化数字人

简单几步&#xff0c;用Live Avatar生成你的个性化数字人 1. 快速入门&#xff1a;理解Live Avatar的核心能力与硬件要求 1.1 Live Avatar是什么&#xff1f; Live Avatar是由阿里联合多所高校开源的一款高保真数字人生成模型&#xff0c;基于14B参数规模的扩散视频大模型&a…

深度学习——卷积神经网络CNN

卷积神经网络CNN图像原理我们眼中的图像&#xff0c;在计算机世界里其实是一组有序排列的数字矩阵。对于黑白灰度图&#xff0c;每个像素的数值范围是 0-255&#xff0c;0 代表最暗的黑色&#xff0c;255 代表最亮的白色&#xff0c;整个图像就是一个二维矩阵。彩色图像则采用 …

【保姆级】一招教你彻底关闭Windows系统自动更新(近期Win11严重BUG,不要更新),禁止win11更新

谁没被 Windows 更新背刺过啊&#xff01;老电脑越更越卡还找不到回退按钮… 为啥系统更新这么招人烦&#xff1f; 不是反对更新&#xff0c;是这强制打扰的操作太离谱&#xff1a; ✅ 偷偷占地&#xff1a;后台悄悄下载几个 G 的安装包&#xff0c;C 盘空间莫名缩水&#…

django-flask基于python的观赏鱼养殖互助商城系统的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着观赏鱼养殖行业的快速发展&#xff0c;养殖爱好者对专业化的信息交流与商品交易平台需求日益增长。基于Python的D…

我就纳闷了,岁数大了就这么不受人待见啦?然后有人说了,你就写写需求,用用框架,画画UI,复制粘贴,你只是用一年的经验工作了十年而已,一点价值都没有! 你这么大岁数,应该与时俱进,不断学习新技术,1或

我就纳闷了&#xff0c;岁数大了就这么不受人待见啦&#xff1f;然后有人说了&#xff0c;你就写写需求&#xff0c;用用框架&#xff0c;画画UI&#xff0c;复制粘贴&#xff0c;你只是用一年的经验工作了十年而已&#xff0c;一点价值都没有&#xff01; 你这么大岁数&#x…