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

建筑公司网站新闻傻瓜网站建设

建筑公司网站新闻,傻瓜网站建设,深圳注册公司新政策,二次开发import numpy as np from os import listdir from sklearn.neighbors import KNeighborsClassifier as kNN# 此函数用于将一个32x32的文本文件转换为一个1x1024的一维向量 def img2vector(filename):"""将32x32的文本文件转换为1x1024的向量:param filename: 要…
import numpy as np
from os import listdir
from sklearn.neighbors import KNeighborsClassifier as kNN# 此函数用于将一个32x32的文本文件转换为一个1x1024的一维向量
def img2vector(filename):"""将32x32的文本文件转换为1x1024的向量:param filename: 要转换的文本文件的文件名:return: 转换后的1x1024向量,如果出现错误则返回None"""try:# 初始化一个1x1024的零向量,用于存储转换后的数据returnVect = np.zeros((1, 1024))# 以只读模式打开指定的文件with open(filename) as fr:# 遍历文件的前32行,因为图像是32x32的for i in range(32):# 读取当前行的内容lineStr = fr.readline()# 遍历当前行的前32个字符for j in range(32):# 将当前字符转换为整数,并存储到向量的相应位置returnVect[0, 32 * i + j] = int(lineStr[j])# 返回转换后的向量return returnVectexcept FileNotFoundError:# 若文件未找到,打印错误信息print(f"错误:文件 {filename} 未找到。")return Noneexcept Exception as e:# 若发生其他未知错误,打印错误信息print(f"错误:处理文件 {filename} 时发生未知错误:{e}")return None# 此函数用于加载训练数据,返回训练数据矩阵和对应的标签列表
def load_training_data():"""加载训练数据:return: 训练数据矩阵和对应的标签列表,如果出现错误则返回None, None"""# 用于存储训练数据的标签hwLabels = []try:# 获取训练数据文件夹下的所有文件名trainingFileList = listdir('trainingDigits')# 计算训练数据的数量m = len(trainingFileList)# 初始化一个m行1024列的零矩阵,用于存储训练数据trainingMat = np.zeros((m, 1024))# 遍历训练数据文件夹下的所有文件for i in range(m):# 获取当前文件名fileNameStr = trainingFileList[i]# 从文件名中提取出对应的数字标签classNumber = int(fileNameStr.split('_')[0])# 将标签添加到标签列表中hwLabels.append(classNumber)# 调用img2vector函数将当前文件转换为向量vector = img2vector(f'trainingDigits/{fileNameStr}')if vector is not None:# 将转换后的向量存储到训练数据矩阵的相应行trainingMat[i, :] = vector# 返回训练数据矩阵和标签列表return trainingMat, hwLabelsexcept FileNotFoundError:# 若训练数据文件夹未找到,打印错误信息print("错误:训练数据文件夹未找到。")return None, Noneexcept Exception as e:# 若发生其他未知错误,打印错误信息print(f"错误:加载训练数据时发生未知错误:{e}")return None, None# 此函数用于加载测试数据,返回测试数据矩阵和对应的标签列表
def load_test_data():"""加载测试数据:return: 测试数据矩阵和对应的标签列表,如果出现错误则返回None, None"""try:# 获取测试数据文件夹下的所有文件名testFileList = listdir('testDigits')# 计算测试数据的数量mTest = len(testFileList)# 初始化一个mTest行1024列的零矩阵,用于存储测试数据testMat = np.zeros((mTest, 1024))# 用于存储测试数据的标签testLabels = []# 遍历测试数据文件夹下的所有文件for i in range(mTest):# 获取当前文件名fileNameStr = testFileList[i]# 从文件名中提取出对应的数字标签classNumber = int(fileNameStr.split('_')[0])# 将标签添加到标签列表中testLabels.append(classNumber)# 调用img2vector函数将当前文件转换为向量vector = img2vector(f'testDigits/{fileNameStr}')if vector is not None:# 将转换后的向量存储到测试数据矩阵的相应行testMat[i, :] = vector# 返回测试数据矩阵和标签列表return testMat, testLabelsexcept FileNotFoundError:# 若测试数据文件夹未找到,打印错误信息print("错误:测试数据文件夹未找到。")return None, Noneexcept Exception as e:# 若发生其他未知错误,打印错误信息print(f"错误:加载测试数据时发生未知错误:{e}")return None, None# 此函数用于进行手写数字识别测试,打印分类结果和错误率
def handwritingClassTest():"""手写数字识别测试"""# 调用load_training_data函数加载训练数据trainingMat, hwLabels = load_training_data()if trainingMat is None or hwLabels is None:# 若加载训练数据失败,直接返回return# 创建一个K近邻分类器对象,设置邻居数量为3,算法为自动选择neigh = kNN(n_neighbors=3, algorithm='auto')# 使用训练数据和标签对分类器进行训练neigh.fit(trainingMat, hwLabels)# 调用load_test_data函数加载测试数据testMat, testLabels = load_test_data()if testMat is None or testLabels is None:# 若加载测试数据失败,直接返回return# 初始化错误计数为0errorCount = 0.0# 计算测试数据的数量mTest = len(testLabels)# 遍历测试数据for i in range(mTest):# 使用训练好的分类器对当前测试数据进行预测classifierResult = neigh.predict(testMat[i].reshape(1, -1))# 打印分类结果和真实标签print(f"分类返回结果为 {classifierResult[0]}\t真实结果为 {testLabels[i]}")if classifierResult[0] != testLabels[i]:# 若分类结果与真实标签不一致,错误计数加1errorCount += 1.0# 打印错误的数量和错误率print(f"总共错了 {int(errorCount)} 个数据\n错误率为 {errorCount / mTest * 100:.2f}%")# 程序入口,当脚本作为主程序运行时,调用handwritingClassTest函数进行测试
if __name__ == '__main__':handwritingClassTest()
# 首先导入鸢尾花数据载入工具
from sklearn.datasets import load_iris
#导入KNN分类模型
from sklearn.neighbors import KNeighborsClassifier
#为了方便可视化,我们再导入matplotlib和seaborn
import matplotlib.pyplot as plt
import seaborn as sns
#加载鸢尾花数据集,赋值给iris变量
iris = load_iris()
#查看数据集的键名
iris.keys()
#查看数据集的特征名称
iris.feature_names
# 查看数据集中的样本分类
iris.target 
#将样本的特征和标签分别赋值给X和y
x, y = iris.data, iris.target 
#查看是否成功
x.shape
#导入数据集拆分工具
from sklearn.model_selection import train_test_split
#将X和y拆分为训练集和验证集
x_train, x_test, y_train, y_test = train_test_split(x,y)
#查看拆分情况
x_train.shape
#创建KNN分类器,参数保持默认设置
knn_clf = KNeighborsClassifier(n_neighbors=6)
#使用训练集拟合模型
knn_clf.fit(x_train,y_train)
#查看模型在训练集和验证集中的准确率print('训练集准确率:%.2f'%knn_clf.score(x_train, y_train))
print('验证集准确率:%.2f'%knn_clf.score(x_test, y_test))# 导入网格搜索
from sklearn.model_selection import GridSearchCV
# 定义一个从1到10的n_neighbors
n_neighbors = tuple(range(1,11,1))
# 创建网格搜索示例,estimator 用knn分类器
# 把刚刚定义的n_neighbors 传入param_grid参数
# cv参数指交叉验证次数为5
cv = GridSearchCV(estimator=KNeighborsClassifier(),param_grid = {'n_neighbors':n_neighbors},cv = 5)
# 使用网络搜索你和数据集
cv.fit(x,y)
# 查看最优参数
cv.best_params_
训练集准确率:0.96
验证集准确率:0.95{'n_neighbors': 6}
http://www.dtcms.com/a/459939.html

相关文章:

  • 网页设计动画网站全屏网站 功能
  • 网站制作找网站建设杭州缘择低价
  • 西宁网站建设兼职asia 域名 知名网站
  • 招聘seo网站推广兰州网络推广关键词优化
  • 汕头建站培训网站建设需求表
  • 简单响应式网站wordpress生成tags页面
  • 在线推广企业网站的方法有哪些大家推荐永久免费的服务器
  • 买标准的网站建设公司网站建设属于什么职位
  • 上海数据开放网站建设室内平面设计软件
  • 中建西部建设广通讯网站能通过淘宝网站做淘宝客吗
  • 最好的网站建设公司网站程序如何制作
  • 网站文章页要不要做内链asp网站开发框架
  • 房山广州网站建设建设局建筑电工证查询网站
  • 花都个性设计商城网站建设免费简历模板制作网站
  • 想做网站多少钱创同盟做网站
  • cadisen卡迪森手表网站高端app开发
  • 网站前后台贵州seo培训
  • 快速搭建网站的工具有哪些电商网站建设存在哪些问题
  • 关于做网站的策划书建设网站什么语言
  • 手机网站设置方法如何做好口碑营销
  • 老鹰主机做的网站vi设计对企业的意义
  • 大连华南网站制作公司cms是什么意思体积
  • 北京做网站的开发公司wordpress主题偷
  • 大连网站排名推广企业管理研究生学校排名
  • 用jsp做网站的技术路线wordpress 博客不显示不出来
  • 旅游电子商务网站有哪些青岛seo霸屏
  • 做商业网站去哪里弄好温州网站建设制作公司
  • 手机qq钓鱼网站怎么做莱芜网站建设流程
  • 个人网站设计与实现结论网站开发地图导航页面
  • 高端网站设计新感觉建站江苏荣邦建设有限公司网站