python遥感影像分类代码_python,sklearn,svm,遥感数据分类,代码实例

python遥感影像分类代码_python,sklearn,svm,遥感数据分类,代码实例

2023年7月9日发(作者:)

python遥感影像分类代码_python,sklearn,svm,遥感数据分类,代码实例python,sklearn,svm,遥感数据分类,代码实例,数据,函数,精度,遥感,路径python,sklearn,svm,遥感数据分类,代码实例易采站长站,站长之家为您整理了python,sklearn,svm,遥感数据分类,代码实例的相关内容。@python,sklearn,svm,遥感数据分类,代码实例python_sklearn_svm遥感数据分类代码实例(1)svm原理简述⽀持向量机(Support Vector Machine,即SVM)是包括分类(Classification)、回归(Regression)和异常检测(Outlier Detection)等⼀系列监督学习算法的总称。对于分类,SVM最初⽤于解决⼆分类问题,多分类问题可通过构建多个SVM分类器解决。SVM具有两⼤特点:1.寻求最优分类边界,即求解出能够正确划分训练数据集并且⼏何间隔最⼤的分离超平⾯,这是SVM的基本思想;2.基于核函数的扩维变换,即通过核函数的特征变换对线性不可分的原始数据集进⾏升维变换,使其线性可分。因此SVM最核⼼的过程是核函数和参数选择。(2)svm实现环境解析设置中⽂输出代码兼容格式及引⽤的库函数,⽤于精度评估的库函数,以及svm参数寻优等。下⾯展⽰⼀些内联代码⽚。-*- coding: utf-8 -*-#⽤于精度评价from s import cohen_kappa_scorefrom s import accuracy_scorefrom s import confusion_matrix#numpy引⽤import numpy as np#记录运⾏时间import datetime#⽂件路径操作import os#svm and best parameter select using grid search methodfrom sklearn import svmfrom _selection import GridSearchCV#scale the data to 0-1 ⽤于数据归⼀化from sklearn import preprocessing(3)svm函数参数寻优SVM参数寻优的实现,有两种常⽤⽅法,⼀种是⽹格搜索法(本⽂中的),另⼀种是使⽤libsvm⼯具通过交叉验证实现(后⾯再写,有兴趣的可以留⾔)。def grid_find(train_data_x,train_data_y):# 10 is often helpful. Using a basis of 2, a can be achieved but at a much higher cost.# logspace(a,b,N),base默认=10,把10的a次⽅到10的b次⽅区间分成N份。C_range = ce(-5, 9, 8, base=2)# 如:C_range = 1/64,1/8,1/2,2,8,32,128,512gamma_range = ce(-15, 3, 10, base=2)# 选择linear线性核函数和rbf核函数parameters = {'kernel': ('linear', 'rbf'), 'C': C_range, 'gamma': gamma_range}svr = ()# n_jobs表⽰并⾏运算量,可加快程序运⾏结果。# 此处选择5折交叉验证,10折交叉验证也是常⽤的。clf = GridSearchCV(svr, parameters, cv=5, n_jobs=4)# 进⾏模型训练(train_data_x, train_data_y)print('最优c,g参数为:{0}'.format(_params_))# 返回最优模型结果svm_model = _estimator_return svm_model更多关于⽹格搜索法:(4)数据读取函数编写(读取txt格式的训练与测试⽂件)⾸先是读取txt格式的训练数据和测试数据的函数。数据截图如下,其中,前6列数据代表通过遥感影像感兴趣区(roi)提取出的6个波段的灰度值,最后⼀列代表数据类别的标签。代码如下,仅需输⼊⽂件路径即可:def open_txt_film(filepath):# open the filmif (filepath):with open(filepath, mode='r') as f:train_data_str = t(f, delimiter=' ')print('训练(以及测试)数据的⾏列数为{}'.format(train_data_))return train_data_strelse:print('输⼊txt⽂件路径错误,请重新输⼊⽂件路径')(5)svm模型预测函数编写输⼊模型与测试数据,输出精度评估(包括混淆矩阵,制图精度等等)。def model_process(svm_model, test_data_x, test_data_y):p_lable = svm_t(test_data_x)# 精确度为 ⽣产者精度 召回率为 ⽤户精度print('总体精度为 : {}'.format(accuracy_score(test_data_y, p_lable)))print('混淆矩阵为 :n {}'.format(confusion_matrix(test_data_y, p_lable)))print('kappa系数为 :n {}'.format(cohen_kappa_score(test_data_y, p_lable)))matric = confusion_matrix(test_data_y, p_lable)# output the accuracy of each category。由于类别标签是从1开始的,因此明确数据中最⼤值,即可知道有多少类for category in range((test_data_y)):# add 0.0 to keep the float type of outputprecise = (matric[category, category] + 0.0) / (matric[category, :])recall = (matric[category, category] + 0.0) / (matric[:, category])f1_score = 2 * (precise * recall) / (recall + precise)print('类别{}的⽣产者、制图(recall)精度为{:.4} ⽤户(precision)精度为{:.4} F1 score 为{:.4} '.format(category + 1, precise, recall,f1_score))(6)主函数编写主函数主要负责:读取数据,预处理数据,以及参数寻优、模型训练和模型预测。针对不同的数据集,每次使⽤,仅仅需要修改训练与测试数据的路径即可。def main():# read the train data from txt filmtrain_file_path = r'E:'train_data = open_txt_film(train_file_path)# read the predict data from txt filmtest_file_path = r'E:'test_data = open_txt_film(test_file_path)# data normalization for svm training and testing datasetscaler = Scaler().fit(train_data[:, :-1])train_data[:, :-1] = orm(train_data[:, :-1])# keep the same scale of the train datatest_data[:, :-1] = orm(test_data[:, :-1])# conversion the type of data,and the label's dimension to 1-dtrain_data_y = train_data[:, -1:].astype('int')train_data_y = train_data_e(len(train_data_y))train_data_x = train_data[:, :-1] # 取出测试数据灰度值和标签值,并将2维标签转为1维test_data_x = test_data[:, :-1] test_data_y = test_data[:, -1:].astype('int')test_data_y = test_data_e(len(test_data_y))model = grid_find(train_data_x,train_data_y)# 模型预测model_process(model, test_data_x, test_data_y)(7)调⽤主函数这⾥新增了⼏⾏代码⽤于记录程序运⾏时间。if __name__ == "__main__":# remember the beginning time of the programstart_time = ()print("%s" % start_time)main()# record the running time of program with the unit of minutesend_time = ()last_time = (end_time - start_time).seconds / 60print("The program is last %s" % last_time + " minutes")# print("The program is last {} seconds".format(last_time))(8)训练数据与测试数据实例下载地址数据在作者的github仓库下,共两个⽂件( 和 ) 。仓库下点击下载即可,如图:==本⽂优点:仅有两个输⼊,⼀个是训练数据的路径,⼀个是测试数据的路径,轻松上⼿;并且以遥感图像数据为例。另外github将会整体上传源码哦~作者:huhu_xq以上就是关于对python,sklearn,svm,遥感数据分类,代码实例的详细介绍。欢迎⼤家对python,sklearn,svm,遥感数据分类,代码实例内容提出宝贵意见

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688891243a181676.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信