机器学习简单介绍(二)

1.机器如何学习
    1)数据预处理     数据清洗、数据集成、数据采样

    2)特征工程     特征编码、特征选择、特征降维、规范化

    3)数据建模     回归问题、分类问题、聚类问题、其他问题

    4)结果评估     拟合度量、查准率、查全率、F1值、PR曲线、ROC曲线


2.机器学习中将数据划分为3份:
    1)训练数据集:用来构建机器学习模型

    2)验证数据集:辅助构建模型,用于在构建过程中评估模型,提供无偏估计,进而调整模型参数

    3)测试数据集:用来评估训练好的最终模型的性能

    常用的拆分方法:

    留出法:直接将数据集划分为互斥的集合,如通常选择70%数据作为训练集,30%作为测试集。需要
    注意的是保持划分后集合数据分布的一致性,避免划分过程中引入额外的偏差而对最终结果产生影响

    k-折交验证法:将数据集划分为k个大小相似的互斥子集,并且尽量保持每个子集数据分布的一致性。
    这样,就可以获取k组训练-测试集,从而进行k次训练和测试,k通常取值为10。


3.特征编码
    数据集中经常会出现字符串信息,如男女、高中低等,这类信息不能直接用于算法计算,需要将这些
    数据转化为数值形式进行编码,便于后期进行建模。

    one-hot编码:采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并在任意
    时候只有一位有效。

    语义编码:one-hot编码无法体现数据间的语义关系,对于一些有关联的文本信息来说,无法真正体现
    出数据关联。基于google的word2vec方法。


4.特征选择
    过滤法: 按照发散性或相关性对各特征进行评分,设定阈值完成特征选择。

    包裹法:选定特定算法,然后通过不断的启发式方法来搜索特征。

    嵌入法:利用正则化的思想,将特征属性的权重调整到0,则这个特性相当于被舍弃了。


5.特征降维
    特征选择完成后,可能由于特征矩阵过大,导致计算量大,训练时间长,,因此降低特征维度。

    主成分分析(PCA);将原始特征空间映射到彼此正交的特征向量空间,在非满秩情况下使用SVD分解来构建特征向量。

    线性判别分析(LDA):给出一个标注了类别的数据集,投射到了一条直线后,能够使得点尽量按类别区分开。


6.规范化
    1)标准化:通过减去均值然后除以方差(标准差),将数据按比例缩放,使之落入一个小的特定区间。适用于数据分布服从正态分布。

    2)区间缩放:将属性缩放到一个指定的最大和最小(1~0)之间。 x = (x-min) / (max-min)

    3)归一化:将某一属性特征的模长转化成1。


7.机器学习方法分类

    1)分类问题:决策树、贝叶斯、SVM、逻辑回归、集成学习

    2)回归问题:线性回归、岭回归、Lasso回归

    3)聚类问题:K-means、高斯混合聚类、密度聚类、层次聚类、谱聚类

    4)其他问题:隐马尔可夫模型、LDA主题模型、条件随机场、神经网络、深度学习
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Python编写的机器学习OCR中文识别代码讲义。本文以基于深度学习的OCR中文识别为例,介绍如何使用Python实现OCR中文识别。 1. 环境搭建 首先,需要安装Python和几个必要的Python库,如TensorFlow、Keras和OpenCV等。可以使用pip安装这些库,例如: ``` pip install tensorflow pip install keras pip install opencv-python ``` 2. 数据准备 OCR中文识别需要训练数据测试数据训练数据是用于训练模型的数据集测试数据是用于测试模型准确率的数据集。可以从开源数据集中获取数据,例如CASIA中文手写字符数据集。需要将数据集分成训练集和测试集,并生成标签文件。 3. 数据预处理 数据预处理包括图像处理、字符分割等处理。这里以CASIA数据集为例,介绍如何进行数据预处理。 (1)图像处理 使用OpenCV库读取图片并进行灰度化处理,例如: ``` import cv2 # 读取图片 img = cv2.imread('img.png') # 灰度化处理 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ``` (2)字符分割 使用OpenCV库进行字符分割,例如: ``` import cv2 # 读取图片并进行灰度化处理 img = cv2.imread('img.png') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 值化处理 ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 字符分割 contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for i, cont in enumerate(contours): x, y, w, h = cv2.boundingRect(cont) cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imwrite('img_{}.png'.format(i), thresh[y:y + h, x:x + w]) ``` 4. 模型训练 使用Keras库建立深度学习模型,并进行训练。这里以卷积神经网络(CNN)为例,介绍如何建立模型和进行训练。需要将训练集和测试集分别读取,并进行数据预处理。 (1)建立模型 使用Keras库建立CNN模型,例如: ``` from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D, Dense, Flatten # 建立模型 model = Sequential() model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(Flatten()) model.add(Dense(64, activation='relu')) model.add(Dense(10, activation='softmax')) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) ``` (2)进行训练 使用Keras库进行模型训练,例如: ``` from keras.utils import to_categorical # 读取训练集和测试集 X_train, y_train = read_data('train') X_test, y_test = read_data('test') # 进行数据预处理 X_train = preprocess(X_train) X_test = preprocess(X_test) y_train = to_categorical(y_train) y_test = to_categorical(y_test) # 进行模型训练 model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test)) ``` 5. 模型测试 使用测试集进行模型测试,并计算模型准确率。例如: ``` from sklearn.metrics import accuracy_score # 进行模型测试 y_pred = model.predict(X_test) # 计算模型准确率 accuracy = accuracy_score(y_test.argmax(axis=1), y_pred.argmax(axis=1)) print('Accuracy:', accuracy) ``` 6. 模型应用 使用训练好的模型对新的图片进行OCR中文识别。例如: ``` # 读取新的图片 img = cv2.imread('new_img.png') # 进行数据预处理 img = preprocess(img) # 进行OCR中文识别 result = model.predict(img) ``` 以上是使用Python编写的机器学习OCR中文识别代码讲义。需要注意的是,这只是一个简单的示例,实际应用中还需要进行更多的优化和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值