【python机器学习笔记】day3

【python机器学习笔记】day3

    • 理论阶段
    • 代码阶段
      • load_iris() 类
      • train_test_split() 类
      • load_boston() 类
      • fit_transform()与fit()+transform()的区别

理论阶段

  • sklearn数据集与估计器

    • 数据集划分

      • 机器学习一班的数据集会划分为两个部分:
        • 训练数据:用于训练,构建模型
        • 测试数据:在模型检验时使用,用于评估模型是否有效
      • 训练模型与测试模型的比例通常为3:1
    • sklearn数据集接口介绍

      • sklearn数据划分API:sklearn.model_selection.train_test_split
    • sklearn分类数据集

      • sklearn.datasets.load_iris() 加载并返回鸢尾花数据集
        名称 数量
        类别 3
        特征 4
        样本数量 150
        每个类别数量 50
      • sklearn.datasets.load_digits() 加载并返回数字数据集
        名称 数量
        类别 10
        特征 64
        样本数量 1797
    • sklearn回归数据集

      • sklearn.datasets.load_boston() 加载并返回波士顿房价数据集
        名称 数量
        目标类别 5~50
        特征 13
        样本数量 506
      • sklearn.datasets.load_diabetes() 加载和返回糖尿并数据集
        名称 数量
        目标范围 25~346
        特征 10
        样本数量 442
  • 机器学习基础

    • 机器学习开发流程

      • 获得原始数据
        • 公司本身就有
        • 合作过来的数据
        • 购买数据
      • 建立模型:根据数据类型划分应用种类
        • 要明确要做什么事情【确定方向】
        • 数据的基本处理:pd去处理数据(缺失值、合并表。。。)
        • 特征工程 【重要步骤】 (特征进行处理)
          • 分类
          • 回归
          • 模型: 算法 + 数据
        • 找到合适算法进行预测
        • 模型的评估,判定效果
          • 合格:线上使用,以API形式提供
          • 不合格:换算法 参数
    • 机器学习算法分类

      • 监督学习(预测)
        • 分类(目标值离散型) k-近邻算法、 贝叶斯分类、 决策树与随机森林、 逻辑回归、 神经网络
        • 回归(目标值连续性) 线性回归、 岭回归
        • 标注 隐马尔科夫夫模型 (不做要求)
      • 无监督学习
        • 聚类 k-means
      • 监督学习与无监督学习的区别
        • 监督学习:有目标值和特征值,即有标准答案
        • 无监督学习:有特征值而无目标值,即无标准答案
    • 机器学习模型是什么

需要明确几点问题:

  • 算法是核心,数据和计算是基础

  • 找准定位
    大部分复杂模型的算法设计都是工程是在做,而我们要做的是:

    • 分析很多的数据
    • 分析具体的业务
    • 应用常见的算法
    • 特征工程、调参数、优化
  • 我们应该怎么做

    • 学会分析问题,使用机器学习算法的目标,想要算法完成何种任务
    • 掌握算法基本思想,学会对问题用相应的算法解决
    • 学会利用库或者框架解决问题

数据类型

  • 离散型数据 :犹豫记录不同类别个体的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再分细,也不能进一步提高他们的精确度
  • 连续型数据:变量可以在某个范围内取任一数,即变量的取值可以是连续的。如:长度、时间、质量等等,这类整数通常是非整数,含有小数部分。
    注意:只要记住一点,离散型是区间内不可分,连续型是区间内可分

fit_transform():输入数据直接转换==>fit()+transform()
fit():输入数据,计算平均值,方差等等,但不输出数据
transform():进行数据的转换

sklearn机器学习算法的实现-估计器
在sklearn中,估计器(estimator)是一个重要的角色,是一类实现了算法的API

  • 用于分类的估计器:
    • sklearn.neighbors k-近邻算法
    • sklearn.naive_bays 贝叶斯
    • sklearn.linear_model.LogisticRegression 逻辑回归
    • sklearn.tree 决策树与随机森林
  • 用于回归的估计器
    • sklearn.linear_model.LinearRegression 线性回归
    • sklearn.linear_model.Ridge 岭回归

代码阶段

load_iris() 类

from sklearn.datasets import load_iris
"""
load* 和 fetch* 返回的数据类型datasets.base.Bunch(字典格式)
data:特征数据数组,是[n_samples* n_features]的二维numpy.ndarray 数组
target: 标签数组,是n_samples 的一维numpy.ndarray数组
DESCR: 数据描述
feature_names: 特征名:新闻数据,手写数字,回归数据集没有特征名
terget_names: 标签名

"""`在这里插入代码片`

li = load_iris()

print("获取特征值")
print(li.data)
print("目标值")
print(li.target)
print(li.feature_names)
print(li.DESCR)

train_test_split() 类

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

"""
sklearn.model_selection.train_test_split(*arrays, **options)
x  数据集的特征值
y  数据集的标签值
test_size  测试集的大小,一般为float
random_state  随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同
reutrn  训练集特征值,测试集特征值,训练标签,测试标签
"""

li = load_iris()

#注意返回值,训练集 train     x_train, y_train   测试集 test    x_test, y_test
x_train, x_test,y_train,y_test = train_test_split(li.data, li.target, test_size=0.25)

print("训练集特征值:\n", x_train)
print("训练集目标值:\n", y_train)
print("测试集特征值:\n", x_test)
print("测试集目标值:\n", y_test)

load_boston() 类

from sklearn.datasets import load_boston

"""
load* 和 fetch* 返回的数据类型datasets.base.Bunch(字典格式)
data:特征数据数组,是[n_samples* n_features]的二维numpy.ndarray 数组
target: 标签数组,是n_samples 的一维numpy.ndarray数组
DESCR: 数据描述
feature_names: 特征名:新闻数据,手写数字,回归数据集没有特征名
terget_names: 标签名

"""

lb = load_boston()

print("获取特征值")
print(lb.data)
print("目标值")
print(lb.target)
print(lb.feature_names)
print(lb.DESCR)

fit_transform()与fit()+transform()的区别

from sklearn.preprocessing import StandardScaler

# 直接用fit_transform()
s1 = StandardScaler()

data1 = s1.fit_transform([[1, 2, 3], [4, 5, 6]])

print(data1)
"""
原始数据:
    [[1, 2, 3], 
    [4, 5, 6]]
直接输出:
    [[-1. -1. -1.]
     [ 1.  1.  1.]]
"""
# 将fit_transform() 分成fit() 和 transform()
s2 = StandardScaler()

mid = s2.fit([[1, 2, 3], [4, 5, 6]])
print(mid)
# 输出结果为:StandardScaler(copy=True, with_mean=True, with_std=True),并不是数值
# fit()函数是一个中间过程,算出来的平均值、方差等等在mid里,无法直接查看

data2 = mid.transform([[1, 2, 3], [4, 5, 6]])
print(data2)
# 结果与data1相同

# 但是如果将mid = s2.fit([[1, 2, 3], [4, 5, 6]])改成mid = s2.fit([[2, 3, 4], [4, 5, 7]])

mid = s2.fit([[2, 3, 4], [4, 5, 7]])

data3 = mid.transform([[1, 2, 3], [4, 5, 6]])

print(data3)
"""
data3的结果与data2不同
原因是data3的mid 和 data2的mid 不相同
平均值和方差都可能发生了改变
"""

你可能感兴趣的:(【python机器学习】)