网站大全2021,江门移动网站建设公司,建设工程询价网站有哪些,陕西建设分行网站KNN-手写数字数据集#xff1a; 使用sklearn中的KNN算法工具包#xff08; KNeighborsClassifier)替换实现分类器的构建#xff0c;注意使用的是汉明距离#xff1b; 运行结果#xff1a;#xff08;大概要运行4分钟左右#xff09; 代码#xff1a;
import pandas as…KNN-手写数字数据集 使用sklearn中的KNN算法工具包 KNeighborsClassifier)替换实现分类器的构建注意使用的是汉明距离 运行结果大概要运行4分钟左右 代码
import pandas as pd
import osdef hamming(str1, str2):if len(str1) ! len(str2):raise ValueError(两个字符串长度不相等)return sum(c1 ! c2 for c1, c2 in zip(str1, str2))def get_train():path digits/trainingDigitstrainingFileList0 os.listdir(path)trainingFileList [file[2:] if file.startswith(._) else file for file in trainingFileList0]train pd.DataFrame()img []labels []for i in range(len(trainingFileList)):filename trainingFileList[i]with open(fdigits/trainingDigits/{filename}, r) as f:txt f.read().replace(\n, )img.append(txt)filelabel filename.split(_)[0]labels.append(filelabel)train[img] imgtrain[labels] labelsreturn traindef get_test():path digits/testDigitstestFileList0 os.listdir(path)testFileList [file[2:] if file.startswith(._) else file for file in testFileList0]test pd.DataFrame()img []labels []for filename in testFileList:with open(fdigits/testDigits/{filename}, r) as f:txt f.read().replace(\n, )img.append(txt)filelabel filename.split(_)[0]labels.append(filelabel)test[img] imgtest[labels] labelsreturn testdef handwritingClass(train, test, k):n train.shape[0]m test.shape[0]result []for i in range(m):dist []for j in range(n):d str(hamming(train.iloc[j, 0], test.iloc[i, 0]))dist.append(d)dist_l pd.DataFrame({dist: dist, labels: train.iloc[:, 1]})dr dist_l.sort_values(bydist)[:k]re dr.loc[:, labels].value_counts()result.append(re.index[0])result pd.Series(result)test[predict] resultacc (test.iloc[:, -1] test.iloc[:, -2]).mean()print(f模型预测准确率为{acc:.5f})return test# 获取训练集和测试集
train get_train()
test get_test()# 调用函数
handwritingClass(train, test, 3)