0
点赞
收藏
分享

微信扫一扫

用Python构建一个简单的神经网络

陬者 2024-08-07 阅读 29

一、机器学习基础概念

 1、什么是机器学习

        机器学习是一种人工智能技术,通过对数据的学习和分析,让计算机系统自动提高其性能。简而言之,机器学习是一种从数据中学习规律和模式的方法,通过数据来预测、分类或者决策

        机器学习的本质就是找到一个能无限接近需求的一个函数。

 2、怎样找到这个函数

        最基本的步骤如下:

3、机器学习三要素

        ①首先设计模型model

        ②通过各种方式判断模型的好坏

        ③根据需求,选择最好的函数,并不断优化模型

                  修改模型,增加数据维度

                  增加正则因子,使函数更加平滑,让参数w取值更小。(x变化较小时,整个函数结果             不会变化太大,结果更准)

4、机器学习的分类

二、处理一个机器学习问题的基本步骤 

  • 数据收集:首先需要收集数据并将其转化为可以计算的形式,例如数值、文本或图像等。
  • 数据预处理:数据收集后,需要对数据进行清洗、去除异常值、缺失值处理、特征选择等预处理步骤。
  • 特征工程: 是指在机器学习中对原始数据进行转换、组合和选择等处理,以提取更有用的特征或属性,以帮助机器学习算法更好地理解和处理数据。简而言之,特征工程就是对原始数据进行预处理,以提取有用信息来辅助机器学习。
  • 模型选择:根据问题的特点和数据的特征选择适合的机器学习算法和模型。
  • 模型训练(机器学习):利用已有数据对所选的机器学习模型进行训练,从而使模型能够学习数据中的规律和模式。
  • 模型评估:训练完成后,需要对模型进行评估和调整,以检查其性能和精度,并进行优化。
  • 模型应用:经过训练和优化后,机器学习模型可以用于新数据的预测、分类、聚类等任务。

 三、机器学习算法总结

1、监督学习(SupervisedLearning)

        有类别标签的学习,基于训练样本的输入、输出训练得到最优模型,再使用该模型预测新输入的输出;

        代表算法:决策树、朴素贝叶斯、逻辑回归、KNN、SVM、神经网络、随机森林、AdaBoost、遗传算法;

2、半监督学习(Semi-supervisedLearning)

        同时使用大量的未标记数据和标记数据,进行模式识别工作;

        代表算法:self-training(自训练算法)、generative models生成模型、SVMs半监督支持向量机、graph-basedmethods图论方法、 multiviewlearing多视角算法等;

3、无监督学习(UnsupervisedLearning)

        无类别标签的学习,只给定样本的输入,自动从中寻找潜在的类别规则;

        代表算法:主成分分析方法PCA等,等距映射方法、局部线性嵌入方法、拉普拉斯特征映射方法、黑塞局部线性嵌入方法、局部切空间排列方法等;

4、判别模型(discriminative model)

        已知输入变量x,通过求解条件概率分布P(y|x)或者直接计算y的值来预测y。

        例如:

5、生成模型(generative model)

        已知输入变量x,通过对观测值和标注数据计算联合概率分布P(x,y)来达到判定估算y的目的。

        例如:

四、算法详解

1、KNN(K近邻算法)

(1)定义

        如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

(2)算法流程
 (3)注意点

        ① K值选择

​ 注:实际应用中,K值一般取一个比较小的数值,例如采用交叉验证来选择最优的K值。

        ② 误差估计

(4)K紧邻实现 
  • 线性扫描(穷举搜索)
  • KD树
  • 距离计算

        ①欧式距离(Euclidean Distance)

        ②曼哈顿距离(Manhattan Distance)

        ③切比雪夫距离 (Chebyshev Distance)

 

(5)实例
# -*- coding: UTF-8 -*-
import numpy as np
import operator
import collections

"""
函数说明:创建数据集

Parameters:
	无
Returns:
	group - 数据集
	labels - 分类标签
Modify:
	2017-07-13
"""


def createDataSet():
    # 四组二维特征
    group = np.array([[1, 101], [5, 89], [108, 5], [115, 8]])
    # 四组特征的标签
    labels = ['爱情片', '爱情片', '动作片', '动作片']
    return group, labels


"""
函数说明:kNN算法,分类器

Parameters:
	inX - 用于分类的数据(测试集)
	dataSet - 用于训练的数据(训练集)
	labes - 分类标签
	k - kNN算法参数,选择距离最小的k个点
Returns:
	sortedClassCount[0][0] - 分类结果

"""


def classify0(inx, dataset, labels, k):
    # 计算距离
    dist = np.sum((inx - dataset) ** 2, axis=1) ** 0.5
    # k个最近的标签
    k_labels = [labels[index] for index in dist.argsort()[0: k]]
    # 出现次数最多的标签即为最终类别
    label = collections.Counter(k_labels).most_common(1)[0][0]
    return label


if __name__ == '__main__':
    # 创建数据集
    group, labels = createDataSet()
    # 测试集
    test = [101, 20]
    # kNN分类
    test_class = classify0(test, group, labels, 3)
    # 打印分类结果
    print(test_class)

2、线性回归

(1)定义

        利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。

举报

相关推荐

0 条评论