当前位置: 首页 > news >正文

湖南省新邵县建设局网站php网站开发示例代码

湖南省新邵县建设局网站,php网站开发示例代码,一个网站两个数据库,工程建设的信息网站遥感图像地物分类流程 1. 制作标签 使用arcgis pro或者arcgis或者envi#xff0c;画标签#xff0c;保存为tiff格式 2. 处理标签数据 用python gdal库安装 osgdal库#xff0c;如果安装失败就需要下载 对应库得 .whl去安装#xff0c;网站具体搞忘了#xff0c;可以百…遥感图像地物分类流程 1. 制作标签 使用arcgis pro或者arcgis或者envi画标签保存为tiff格式 2. 处理标签数据 用python gdal库安装 osgdal库如果安装失败就需要下载 对应库得 .whl去安装网站具体搞忘了可以百度 或者rasterio库 2.1 读入tif数据 def readTif(fileName):dataset包含了tif文件得属性比如波段数高宽数据dataset rasterio.open(fileName)if dataset None:print(fileName 文件无法打开)return None# print(dataset.width)return dataset 2.2 处理数据 import csv # 提取栅格图像信息,制作数据 ori_dataset readTif(orgin_path) label_dataset readTif(sample_path)width ori_dataset.width # 宽 height ori_dataset.height # 高bands ori_dataset.count # 波段数 # ori_data for k in range(bands)label_matri label_dataset.read(1) #读出标签的矩阵 data_matri ori_dataset.read() #原始图像的矩阵count np.count_nonzero(label_matri) #非零就是标签 有多少非零的就代表样本像素是多少 print(count) train_data np.zeros((count, 8), dtypedata_matri.dtype) # 新建一个count*8的numpy数组第8维度是原始图像的某一像素点对应的标签0~6代表这一个像素点对应的7ge波段landsata影像 nonzero_indices np.nonzero(label_matri) #非零索引 返回的是(row:array([ 30, 31, 31, ..., 390, 390, 390], dtypeint64), col:array([166, 165, 166, ..., 186, 187, 188], dtypeint64))print(nonzero_indices) # 写入数据csv, 提取训练数据 # 将 train_data 写入 CSV 文件 csv_file open(csv_filename, modew, newline) csv_writer csv.writer(csv_file) # 写入 CSV 文件的标题行包括 Label 和 LabelName csv_writer.writerow(csv_head_name)for i in range(count):print(i)row, col nonzero_indices[0][i], nonzero_indices[1][i]train_data[i, :7] data_matri[:, row, col]train_data[i, 7] label_matri[row, col]label int(train_data[i, 7])row_data train_data[i]row_data np.append(row_data, labels_name[label]) # 在数据行中添加 LabelNamecsv_writer.writerow(row_data)print(f已将数据写入 CSV 文件: {csv_filename}) csv_file.close()2.3 数据格式 生成的数据格式如下 Band1,Band2,Band3,Band4,Band5,Band6,Band7,Label,LabelName 812,774,969,1111,1152,1146,1069,2,building 801,755,846,1016,1177,1411,1472,2,building 794,748,949,1179,1202,1399,1383,2,building 605,567,691,877,1537,1880,2070,2,building 602,556,768,994,1506,1625,1607,2,building 613,570,768,1045,1394,1483,1460,2,building 465,408,562,772,963,1035,990,2,building 549,484,648,828,969,1096,1028,2,building3. 训练 from sklearn.ensemble import RandomForestClassifier from sklearn import model_selection import pickleX train_data[:, :7] Y train_data[:, 7] # print(X.shape) # print(Y.shape) X_train, X_test, y_train, y_test model_selection.train_test_split(X, Y, test_size0.1, random_state42, stratifyY) print(y_train) # 3.用100个树来创建随机森林模型训练随机森林 classifier RandomForestClassifier(n_estimators100,bootstrap True,max_features sqrt) classifier.fit(X_train, y_train)# 4.计算随机森林的准确率 print(训练集,classifier.score(X_train,y_train)) print(测试集,classifier.score(X_test,y_test))pred_test_y classifier.predict(X_test) cfm CFM(5, labels_name) cfm.update(pred_test_y, y_test) acc, comment_numpy cfm.get_cfm() print(comment_numpy) cfm.plot()file open(model_path, wb) #将模型写入文件 pickle.dump(classifier, file) #最后关闭文件 file.close()4. 使用模型预测 pred_dataset readTif(pred_path) pred_width pred_dataset.width pred_height pred_dataset.height pred_bands pred_dataset.count pred_geotrans pred_dataset.transform pred_crs pred_dataset.crsprint(pred_geotrans) print(pred_crs)file open(model_path, rb) # 把模型从文件中读取出来 rf_model pickle.load(file) # 关闭文件 file.close()pred_martix pred_dataset.read() data np.zeros((pred_martix.shape[0], pred_martix.shape[1] * pred_martix.shape[2]))# print(pred_martix.shape) # print(pred_martix[0]) for i in range(pred_martix.shape[0]):# 第i个波段一维数组data[i] pred_martix[i].flatten() # 转换下维度 pred_x data.swapaxes(0, 1)pred_y rf_model.predict(pred_x) # print(pred_y, pred_y.shape)# 将标签还原为图像的二维矩阵 pred_image pred_y.reshape(pred_martix.shape[1], pred_martix.shape[2]) height_, width_ pred_image.shape tif_data np.zeros((height_, width_, 3), dtypenp.int64) for label, color in color_mapping.items():tif_data[pred_image label] colortif_data np.transpose(tif_data, (2, 0, 1))im_bands, im_height, im_width tif_data.shape driver gdal.GetDriverByName(GTiff) dataset driver.Create(pred_result_tif_path, im_width, im_height, im_bands, gdal.GDT_Byte) for i in range(im_bands):dataset.GetRasterBand(i 1).WriteArray(tif_data[i]) # if dataset ! None: # #将栅格数据和地理坐标系统关联起来 # dataset.SetProjection(pred_crs) # 写入投影 # dataset.SetGeoTransform(pred_geotrans) # 写入仿射变换参数dataset None5. other import numpy as np import matplotlib.pyplot as plt from prettytable import PrettyTableclass CFM:混淆矩阵类返回精度和混淆举证def __init__(self, num_classes: int, labels: list):self.matrix np.zeros((num_classes, num_classes))self.num_classes num_classesself.labels labelsdef plot(self):matrix self.matrixprint(matrix)plt.imshow(matrix, cmapplt.cm.Blues)# 设置x轴坐标labelplt.xticks(range(self.num_classes), self.labels, rotation45)# 设置y轴坐标labelplt.yticks(range(self.num_classes), self.labels)# 显示colorbarplt.colorbar()plt.xlabel(True Labels)plt.ylabel(Predicted Labels)plt.title(Confusion matrix)# 在图中标注数量/概率信息thresh matrix.max() / 2for x in range(self.num_classes):for y in range(self.num_classes):# 注意这里的matrix[y, x]不是matrix[x, y]info int(matrix[y, x])plt.text(x, y, info,verticalalignmentcenter,horizontalalignmentcenter,colorwhite if info thresh else black)plt.tight_layout()plt.show()def update(self, preds, labels):_summary_Args:preds (_type_): _description_labels (_type_): _description_preds:预测值labels:真实值confusion martixlabel0 label1 label2 label3pred0pred1pred2pred3for p, t in zip(preds, labels):self.matrix[p, t] 1print(confusion matrix, self.matrix)def get_cfm(self):Accuarcy: 正确样本占总样本数量的比例Percision: 精度PrecisionRecall: 召回率Specificaity: 特异性sum_true 0for i in range(self.num_classes):sum_true self.matrix[i, i]acc sum_true / np.sum(self.matrix)print(the model accuracy is , acc)comment_labels [categeory, Precision, Recall, Specificity]tabel PrettyTable()tabel.field_names comment_labelscomment_numpy np.zeros((self.num_classes, 3))for i in range(self.num_classes):# 第i个分类的精确率 召回率 特异度TP self.matrix[i, i]FP np.sum(self.matrix[i, :]) - TPFN np.sum(self.matrix[:, i]) - TPTN np.sum(self.matrix) - TP - FN - FP# 保留三位小数 如果 TP FN 不等于零就计算并将结果四舍五入到小数点后三位否则率设置为0。Precision round(TP / (TP FP), 3) if TP FP ! 0 else 0.Recall round(TP / (TP FN), 3) if TP FN ! 0 else 0.Specificity round(TN / (TN FP), 3) if TN FP ! 0 else 0.tabel.add_row([self.labels[i], Precision, Recall, Specificity])comment_numpy[i] [Precision, Recall, Specificity]print(tabel)return acc, comment_numpyif __name__ __main__:cfm CFM(2, [cat, dog])actual [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]predicted [1, 0, 1, 0, 0, 1, 1, 1, 1, 0]cfm.update(predicted, actual)acc, comment_numpy cfm.get_cfm()print(comment_numpy)cfm.plot()变量名代表得含义 sample_path ../sample/sample.tif #标签图 orgin_path ../datasets/landsat.tif #原始图 pred_path ../datasets/landsat.tif #需要预测的图 txt_Path ./result/label_data.txt #无 labels_name [, tudi, building, veg, water] # 样本名字分类的类别 csv_filename ../result/train_data.csv # 生成训练数据的存放路径 csv_head_name [Band1, Band2, Band3, Band4, Band5, Band6, Band7, Label, LabelName] # 存放格式 model_path ../model/myrnf.pickle # 最终保存的模型路径 pred_result_tif_path ../result/pred_landsat.tif # 用训练的模型保存的路径 color_mapping {1: (255, 255, 0),2: (255, 0, 0),3: (0, 255, 0),4: (0, 0, 255) } # 颜色映射从2D标签映射到3D
http://www.hkea.cn/news/14542523/

相关文章:

  • 网站建设reduWordPress星评插件
  • 免费软件下载网站app2018wordpress插件
  • 网站推广的四个阶段久久建筑网图集免费下载
  • 涿州网站建设涿州wordpress淘宝客主题模板
  • 网站免费源码下载深圳建设管理中心网站首页
  • 茶陵网站建设wordpress怎么做开发
  • wordpress修改元内容seo做关键词怎么收费的
  • 网站如何转移到新的空间服务器上做网站智能工具
  • 企业网站的内容营销网站服务器搭建XP
  • 必应网站首页的图片怎么做的整个网站与网站模板的区别
  • 常用网站logo东莞东城网站建设
  • 长沙零零七网站建设辽宁省建设工程信息网a类业绩
  • 微网站和手机网站怎么用自己电脑做网站服务器
  • 建设工程师交易网站平面设计师长逛的网站有哪些
  • 昌乐建设局网站wordpress网站导航
  • 帮人做钓鱼网站的人旅游网站网页设计
  • 宁波网站建设哪家比较好网站如何做关键词
  • dw中做网站的步骤买一个网页多少钱
  • 网站开发职能洛阳网站建设哪个好点
  • google广告联盟网站企业手机网站模板下载
  • 家具定制东莞网站建设关键词优化软件
  • 网站建设动图代码学历提升报名网
  • 建设银行官网学生交费网站商城源码购买
  • 网站建设策划书的撰写深圳app网站建设哪家好
  • 都匀住房和城乡建设部网站域名 和网站有什么区别
  • 做的比较炫的网站某公司网站建设策划书
  • python做网站性能太差折腾wordpress
  • 互动网站建设的主页百度广告联盟赚广告费
  • 网站建设及运营工作总结贵阳汽车网站建设
  • 机票网站手机版建设最近新闻小学生摘抄