机器学习--算法基础

机器学习–算法基础

1 机器学习基础
1.1 算法是核心,数据和计算是基础
1.2 找准定位
    * 大部分复杂模型的算法设计都是算法工程师在做,而我们:
        * 分析很多数据
        * 分析具体业务
        * 应用常见的算法
        * 特征方程,调参数,优化
    * 我们应该怎么做?
        * 学会分析问题,使用机器学习算法的目的,想要算法完成什么或者何种任务
        * 掌握算法的基本思想,学会对问题用相应的算法解决
        * 学会利用库或者框架解决问题
2 机器学习算法的分类
2.1 监督学习:有特征值和目标值
    2.1.1 分类
        (1) k-近邻算法
        (2) 贝叶斯算法
        (3) 决策树与随机森林
        (4) 逻辑回归
        (5) 神经网络
    2.1.2 回归:线性回归,岭回归
2.2 无监督学习:只有特征值
    2.2.1 聚类
2.3
    2.3.1 分类:目标值是离散的(离散型:数据不可再分)
    2.3.2 回归:目标值是连续的(连续性:数据可再分)
2.4 练习:说一说他们属于什么类别的问题
    (1) 预测明天的气温是多少?
        连续性问题:回归
    (2) 预测明天是晴天还是阴天?
        分类
    (3) 人脸的年龄预测?

    (4) 人脸识别?
        分类
3 机器学习算法应用
3.1获取数据
    3.1.1 公司本身的数据
    3.1.2 合作过来的数据
    3.1.3 购买的数据
    3.1.4 学习阶段(机器学习)可以使用的数据有
        (1) 鸢尾花数据集:https://scikit-learn.org/stable/datasets
        (2) UCI数据集:http://archive.ics.uci.edu/ml/index.php
        (3) kaggle数据集:https://www.kaggle.com/datasets
3.2 数据基本处理
    pandas/sk-learn
3.3 特征工程
    3.3.1 特征工程用法
    3.3.2 sklearn数据集
        sklearn.datasets
        * load_*():加载,获取小规模数据集
        * fetch_*():加载大规模数据集
    3.3.3 sk-learn小数据集
        sklearn.datasets.load_iris():加载并返回鸢尾花数据集
        鸢尾花数据集:
            类别:3
            特征值:4
            样本容量:150
            每个类别的数量:50
            加载波士顿房价数据集:sklearn.datasets.load_boston()
    3.3.4 数据集返回值
    datasets.base.Bunch(继承自字典的)
    对字典进行取值:
        (1) dict1['key'] = value
        (2) bunch.key = value
3.4 数据集划分
    * 训练集:用于训练
    * 测试集:用于测试
    问:在sk-learn中如何实现数据集的划分?
    答:调用sklearn.model_selection.train_test_split(....)这个API
    X:一般为数据集的特征值
    Y:一般为数据集的目标值
    * test_size:划分数据的比例,默认是0.25
    * random_state:随机数种子,不同的随机数种子会造成不同的随机采样结果
    * 返回值:
        return:训练集特征值,测试集特征值,训练集目标值,测试集目标值
               x_train    x_text      y_train   y_test
4 分类算法-K近邻算法(KNN)
    4.1 定义:如果一个样本在特征空间中的K个最相似(即特征空间中最近邻)的样本中大多数属于这个类别
        则该样本也属于这个类别
    4.2 距离公式:欧式距离
    4.3 API
        sklearn.KNeighborsClassifier(n_neighbors=数值)
# 获取数据
from sklearn.datasets import load_iris
# 划分数据集
from sklearn.model_selection import train_test_split
# 数据集标准化
from sklearn.preprocessing import StandardScaler
# 导入KNN  API
from sklearn.neighbors import KNeighborsClassifier


def knn_iris():
    """
    用KNN算法对鸢尾花进行分类
    :return: None
    """
    # 获取数据
    iris = load_iris()
    # 划分数据集
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.25,random_state=22)
    # 特征工程
    transfer = StandardScaler()
    # 训练集标准化
    x_train = transfer.fit_transform(x_train)  # 对每一个值进行了平均值与标准差处理
    x_test = transfer.transform(x_test)

    # KNN算法预估器
    # 实例化一个预估器类
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train,y_train)
    # 模型评估
    # 直接比对真实值和测试值
    y_predict = estimator.predict(x_test)
    print('y_predict\n',y_predict)
    print('直接比对真实值与预测值:\n',y_test == y_predict)
    # 计算精确率
    score = estimator.score(x_test,y_test)
    print('精确率:\n',score)


    return None


if __name__ == "__main__":
    knn_iris()

猜你喜欢

转载自blog.csdn.net/weixin_49432344/article/details/116022273