Standard机器学习-机器学习的应用实例

本文介绍了机器学习在图像文字识别领域的应用流程,包括文字侦测、字符切分和分类,以及如何通过活动窗口技术和模型训练提高识别精度。讨论了数据获取策略和模型改进方向,以提升整体识别效果。

在学习了有关机器学习的算法和相关的知识后,了解一下机器学习的几个应用场景。最常见的一个应用就是图像文字的识别,通过在给定的图片中运行算法,来给出图片中存在的文字。
在这里插入图片描述
主要的步骤如下所示:
• 文字的侦测:识别出图片中文字的范围,利用矩形框等将其与其他的环境对象分隔开
• 字符的切分:在侦测到文字的范围后,需要将其切割成一个个单一的字符
• 字符的分类:确定上一部分割的字符是什么
在实际使用中,常采用流水线的方式,每一个部分安排相关的人员完成,有利于提高效率。

在这里插入图片描述
那么如何在第一步侦测到文字的范围,或是在行人检测中侦测到行人在图片中的位置呢?一种常用的技术就是活动窗口。假设在行人检测中,首先用许多固定尺寸的图片训练一个能够准确识别行人位置的模型,然后使用模型在我们要进行识别的图片上进行裁剪,将结果交给模型判别是否为行人,然后移动滑动窗口重新裁剪,再将新的切片交给模型判断,直到循环将图片检测完毕。
在这里插入图片描述
在文字识别中,首先训练模型分别字符和非字符,接着使用滑动窗口切割属于字符的部分,将结果交由模型识别。一旦完成了字符的识别,我们将识别的得出的区域进行一些扩展,然后将重叠的区域进行合并。接着以宽高比作为过滤条件来过滤掉高度比宽度更大的区域。比如下面的图片经过识别,认为红线圈住的的区域是文字的部分,而其他的区域应该被忽略
在这里插入图片描述
接下来模型需要识别切割的部分是不是一个完整的字符,那怎么做呢?给模型一些完整的字符的例子和一些不完整的例子,训练模型。完成之后使用滑动窗口技术来进行字符的识别
在这里插入图片描述
最后使用其他的分类模型进行字符的识别

在这里插入图片描述
如果我们的数据足够的低方差,那么用来训练模型就可以得到比较好的效果。但是如何来获得更多的数据,有时直接过去并不容易,这时我们就可以人工的来创造数据。比如我们可以利用电脑中不同的字体,利用这些字体配上不同的背景图来创造,只要时间够,就可以创造足够多的数据
在这里插入图片描述
或者利用现有的数据进行一些平移、拉伸等操作,只要我们认为实际数据有可能和经过这样处理过后的数据类似,我们就可以使用这样的数据
在这里插入图片描述
总结一下获取更多数据的方式:人工合成数据、手动收集标记数据、众包
在这里插入图片描述
在机器学习的复杂的应用中,我们通常需要经过多个步骤才能完成模型的学习,那么如何知道哪一部分值得我们花时间和精力去改进,从而提升整体模型的效果呢?比如之前的文字识别例子,图中每一部分的输出都是下一部分的输入,手工提供100%正确的输出结果,然后看整体上是否有提升。

假设现有的例子总体效果的准确率为72%,如果令文字侦测部分的输出为100%,发现整体准确率调高了17%,这表示它值得去花时间改进;接着同理让字符切割的部分输出为100%,发现整体准确率只提高了1%,那就不值得;最后让字符分类的输出为100%,发现整体的准确率提高了10%,表示值得去花时间。

总之我们需要根据不断地实验和往常的经验来判断哪一部分改进后对于整体的效果有比较大的提升
在这里插入图片描述
最后老师对于本门课的知识做了一个总结,终于赶在开学前对这门课做了一个总结,有强迫症的人难受啊~~~
在这里插入图片描述

### 如何在机器学习中使用鸢尾花数据集 鸢尾花数据集是一个经典的分类问题数据集,被广泛用于教学和研究目的。以下是关于如何利用该数据集进行机器学习的具体方法。 #### 数据加载与探索 首先需要导入必要的库并加载数据集。Scikit-learn 提供了一个内置函数 `load_iris` 来方便获取此数据集[^1]: ```python from sklearn.datasets import load_iris import pandas as pd # 加载数据集 data = load_iris() df = pd.DataFrame(data.data, columns=data.feature_names) # 添加目标变量列 df['target'] = data.target print(df.head()) ``` 上述代码展示了如何将鸢尾花数据转换成 Pandas DataFrame 的形式以便于后续操作。 #### 数据预处理 对于鸢尾花数据集来说,通常不需要复杂的清洗工作,因为它是经过良好整理的标准数据集合[^2]。然而,在某些情况下可能仍需执行标准化或归一化处理以提高模型性能: ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaled_features = scaler.fit_transform(df.drop('target', axis=1)) scaled_df = pd.DataFrame(scaled_features, columns=df.columns[:-1]) ``` 这里采用了标准缩放器 (Standard Scaler),使得每种特征都具有零均值单位方差特性[^3]。 #### 划分训练测试集 为了验证构建好的模型效果好坏程度,应该把原始样本划分为两部分:一部分用来训练;另一部分则留作检验之用。 ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( scaled_df, df['target'], test_size=0.3, random_state=42 ) ``` 这段脚本实现了按照7:3比例分割数据的功能,并设置了固定的随机种子数保证实验可重复性。 #### 构建与比较多个模型 可以尝试多种不同的算法来寻找最适合当前任务的那个。比如逻辑回归(Logistic Regression) 和随机森林(Random Forest): ```python from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score logreg = LogisticRegression(max_iter=200).fit(X_train, y_train) rfc = RandomForestClassifier().fit(X_train, y_train) y_pred_logreg = logreg.predict(X_test) y_pred_rfc = rfc.predict(X_test) acc_logreg = accuracy_score(y_test, y_pred_logreg) acc_rfc = accuracy_score(y_test, y_pred_rfc) print(f'Logistic Regression Accuracy: {acc_logreg}') print(f'Random Forest Classifier Accuracy: {acc_rfc}') ``` 以上程序片段分别创建了两个分类器实例并对它们进行了拟合运算之后再做预测最后计算准确率得分。 #### 结果解释 最终会得到两种模型各自的精确度数值,从而能够直观看出哪个表现更优一些。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值